内容路由器转发平面结构的制作方法

文档序号:7885414阅读:158来源:国知局
专利名称:内容路由器转发平面结构的制作方法
技术领域
本发明涉及通信技术,且确切地说,涉及一种内容路由器转发平面结构。
背景技术
当前的互联网协议(IP)网络包括多个节点,其中包含网络核心处的多个路由器以及网络边缘处的多个主机。路由器共同连接主机之间的通信信道。节点分配有网络范围内唯一的IP地址,以便将适当且有效的业务转发到目标节点。路由器根据包中携带的IP地址在IP网络中路由所述包。所述包由路由器转发到适当的目标,依据的是可在每个包中指出的〈源地址,目标地址〉对。IP第4版(IPv4)是诸如局域网(LAN)和互联网等许多网络中通常使用的IP协议。IPv4地址包括约32位,其中包含达到约24位的IP地址前缀。因此,路由器可处理高达约1600万(即224)个目标地址。IP地址也可根据不同的地理区域分配在块中,从而让IP地址依据地理区域聚合,且因此减少路由器处的目标搜索空间。某些当前网络包括向用户提供诸如按需输出的内容等内容或服务的内容网络。在内容网络中,内容路由器负责将用户请求和内容路由到正确的接收者。在内容网络中,作为内容传送框架的一部分的每个实体都分配有域范围内唯一的名称。这些实体可包括诸如视频剪辑或网页等数据内容,和/或诸如路由器、转换器或服务器等基础设施元件。内容路由器使用通用名称前缀(可为完整的内容名称或内容名称的正确前缀),以在内容网络中对内容包进行路由。因此,与有限的IP前缀空间相比,路由确定空间扩展了大体上更大的名称空间,从而呈现出基于IP地址转发的当前路由器结构或方案中的一些问题。

发明内容
在一项实施例中,本发明包含一种路由器转发平面,其包括:布隆过滤器,其存储于第一层存储介质上;以及转发信息日志,其与所述布隆过滤器相关联且存储于第二层存储介质上。在另一实施例中,本发明包含一种网络部件,其包括:接收器,其用于接收包括通用名称前缀的内容;第一层存储介质,其用于存储与多个通用名称前缀和多个对应端口相关联的多个布隆过滤器;逻辑电路,其用于根据所接收内容的通用前缀名称来计算多个签名;以及发射器,其用于在所述通用名称前缀是所述布隆过滤器中至少一个布隆过滤器的成员的情况下,在与所述布隆过滤器中至少一个布隆过滤器相关联的端口中的至少一个端口上转发所接收内容。在第三方面中,本发明包含一种计算机实施方法,所述方法包括:接收内容项;从所述内容中获取通用内容前缀;查询多个布隆过滤器,以找到所述通用内容前缀的至少一个匹配项;以及在与匹配所述通用内容前缀的至少一个布隆过滤器相关联的至少一个端口上转发所述内容。在第四方面中,本发明包含一种路由器转发平面,其包括:计数布隆过滤器,其存储于第一层存储介质上;以及转发信息日志,其与所述计数布隆过滤器相关联且存储于第二层存储介质上。结合附图和所附权利要求书所进行的以下详细描述将有助于更清楚地了解本发明的这些和其它特征。


为了更完整地理解本发明,现参考以下结合附图和具体实施方式
而进行的简要描述,其中相同参考标号表不相同部分。图1为路由器转发平面结构的一项实施例的示意图。图2为布隆过滤器的一项实施例的示意图。图3为布隆过滤器与计数布隆过滤器组合的一项实施例的示意图。图4为缩放布隆过滤器的另一实施例的示意图。图5为路由器转发方法的一项实施例的流程图。图6为发射器/接收器单元的一项实施例的示意图。图7为通用计算机系统的一项实施例的示意图。
具体实施例方式首先应理解,尽管下文提供一项或多项实施例的说明性实施方案,但所揭示的系统和/或方法可使用任何数目的技术来实施,无论该技术是当前未知还是现有的。本发明决不应限于下文所说明的说明性实施方案、附图和技术,包含本文所说明并描述的示例性设计和实施方案,而是可在所附权利要求书的范围以及其等效物的完整范围内修改。随着互联网的发展,例如,由于对视频内容、移动主机及内容安全的需求逐渐增力口,内容网络越来越受欢迎。在内容网络中,数据或网络实体可与网络范围内唯一的名称相关联,以指示该实体并让网络用户达到该实体。网络实体可从多个分布式服务器中提供相同内容。内容网络在内容水平操作,其中通用内容名称前缀,例如,而不是包中的IP地址用来路由信息。因此,内容用户可使用同一名称请求内容,但网络可,例如,根据用户的位置将用户的请求路由到提供请求内容的不同服务器。然而,由于内容网络中需要相当大的内容名称空间,因此,建立内容路由器转发平面来以不错的效率处理相当大量的名称前缀可能较为困难。由于内容实体的数目实质上大于IP网络节点的数目,因此,内容名称的搜索空间实质上可能大于IP地址的搜索空间。此夕卜,由于存在内容命名要求,因此,内容名称空间可能较为稀少。例如,在名称长度达到约64字节的内容网络中,潜在名称的总数可小于或等于约2512。如果只允许供人识别字符,例如当前的统一资源定位器(URL)格式,那么名称的数目可等于约236°,这也是个天文数字。此夕卜,当前还没有可用的有效名称聚合方法。与IP地址不同,内容名称或名称前缀可能不会按照地理区域分组,且因此可能不会根据地理区域聚合,以减少路由器的名称空间。本文中揭示一种用于路由器转发平面结构的系统和方法,所述系统和方法可用于进行内容路由。例如,与IP地址转发方案相比,路由器转发平面结构可提高内容名称转发在内容网络中的缩放性和性能。路由器转发平面结构可包括三层存储器和/或存储系统,其可使用商用或商品服务器和软件来建立,从而可降低成本。所述三层存储器和/或存储系统可包括:布隆过滤器;计数布隆过滤器;以及转发信息日志,这些可能是固定在三个相应存储器/存储硬件部件层的包括软件、硬件、固件或其组合的部件。路由器转发平面结构可提供相对较快的内容转发和较大的存储,以支持相当大的内容名称空间要求。此外,例如,在硬件出现故障的情况下,路由器转发平面结构可提供相对较快的错误恢复。图1图示路由器转发平面结构100的一项实施例,其可用于在网络中进行内容路由。例如,所述网络可为向终端用户提供服务的任何通信网络,包括基于以太网的网络、互联网协议(IP)网络、无源光网络(Ρ0Ν)、数字用户线用户(DSL)网络、无线网络、其他通信网络或其组合。或者,所述网络可为实施诸如以太网、IP或传输控制协议(TCP)等核心网络协议的核心网络。内容可包括数据、语音、视频、电视(TV)、互联网和/或诸如游戏内容等任何专用内容。终端用户可为网络和/或耦接到所述网络的任何用户设备的任何内容提供者/用户。例如,终端用户可与用户驻地处的用户设备相关联,例如,光纤网络终端(ONU)或住宅区域处的位速率非常高的DSL (VDSL)收发单元(VTU-R)。或者,终端用户可对应于家庭通信设备,例如,机顶盒、诸如台式计算机等固定个人设备,或诸如手机、笔记本电脑或便携平板电脑等移动个人设备。路由器转发平面结构100可包括三层存储器/存储系统,其可使用诸如商品服务器等可用的硬件及所安装的软件建于节点或路由器中。具体而言,所述三层存储器/存储系统可包括:布隆过滤器Iio ;计数布隆过滤器120 ;以及转发信息日志130,这些可为安装和固定在三个相应存储器/存储硬件部件层的软件或数据结构部件。路由器转发平面结构100还可包括位于第一存储器/存储层的其他软件部件,例如端口偏好表(未图示)。布隆过滤器110可为软件部件或数据结构,用于针对路由器的每个端口查询成员,例如,传入的通用名称前缀。布隆过滤器110可包括二进制位的阵列,用来为与布隆过滤器110和相关端口相关联的多个成员存储或记录签名的集合。对于每个成员而言,可使用一个或多个对应的散列函数生成一个或多个签名,其中同一散列函数可用来生成多个成员的签名。例如,散列函数的集合可用于多个通用名称前缀,这些通用名称前缀可为布隆过滤器110的成员,从而为每个名称前缀生成签名集合。所述签名集合中的每个签名可对应于所述散列函数集合中的一个散列函数。可通过设置布隆过滤器110中的一个位来指示或表示所述签名集合中的每个成员签名。对于节点中的每个端口而言,可将新成员添加到相关布隆过滤器,方法是:设置布隆过滤器110中的位,以指示使用散列函数所获取的签名。为了路由内容,可使用散列函数计算传入名称前缀的签名,且可针对各端口将所得的位值与布隆过滤器110的位进行比较。如果名称前缀是所述端口的布隆过滤器Iio的成员,例如,如果名称前缀的签名匹配布隆过滤器110中对应的位值,则随后可经由端口中的一个端口转发所述内容。计数布隆过滤器120可为用于支持布隆过滤器110的删除成员的软件部件或数据结构。计数布隆过滤器120可包括对应于一个签名的布隆过滤器110中的每个位的二进制位集合。每个签名的位集合可指示当前或最近更新的共享布隆过滤器110中同一签名的成员数量。每个签名的位集合中的位数量可确定共享布隆过滤器110中同一签名的成员最大数目。当从与布隆过滤器110相关联的端口的成员集合中移除或删除一个成员时,计数布隆过滤器120中对应的位集合中所指示的成员数量可减少一。或者,当将具有对应于位集合的签名的一个新成员添加到端口的成员集合时,计数布隆过滤器120中的位集合中所指示的成员数量可增加一。当从端口的成员集合中删除具有对应于计数布隆过滤器120中位集合的签名的最后剩下的成员时,位集合所指示的成员数量可减少到约为零,而且,例如,布隆过滤器110中的对应位可重置成约为零。转发信息日志130可为包括特定数据的软件部件或数据结构,所述特定数据用于在网络中适当路由内容,例如,名称前缀、不同的内容到达时间以及任何其他相关路由信息。路由信息可在所述信息达到路由器时添加到转发信息日志130。因此,转发信息日志130可保存路由器当前或最近更新的路由信息。转发信息日志130中的信息不可直接用于,例如,实时路由内容和/或处理名称前缀,但万一布隆过滤器110和/或计数布隆过滤器120中的信息,例如,因存储介质故障、硬件故障或软件故障而丢失,所述转发信息日志中的信息可用来重建布隆过滤器110和/或计数布隆过滤器120。例如,转发信息日志130可用来重建计数布隆过滤器120的至少一部分,从而可用来重建布隆过滤器110的至少一部分。如果第二路由器出现故障,则一个或多个第一路由器中的转发信息日志130也可用来恢复一个或多个第二路由器中的类似路由信息。例如,基于IP路由和转发方案的当前路由器结构无法让路由器,例如,在未超出可接受的网络成本的情况下,以尚好的网速处理相当大量的通用内容名称前缀。例如,根据IPv4规范,当前IP路由器可用于处理至多约1600万IP地址前缀。此类路由器可能需要较大存储空间、集群技术和/或特定硬件,用以扩展名称查找空间,且因此处理内容路由,从而会增加系统成本。或者,路由器可使用高级或复杂的查找算法,或者低性能大容量的存储设备,但这会降低系统性能。路由器转发平面结构100的三层存储器/存储系统可克服当前路由器转发平面结构的缺点。在三层存储器/存储系统中,与其他两个部件相比,可更频繁地访问布隆过滤器110,且所述布隆过滤器需要更快的响应时间,且因此,更快的存储器存储介质。与其他两个部件相比,布隆过滤器110也可包括较少的数据,且因此,需要较小的存储空间。类似地,与转发信息日志130相比,可更频繁地访问计数布隆过滤器120,且所述计数布隆过滤器需要更快的响应时间,且因此,更快的存储介质。与转发信息日志130相比,计数布隆过滤器120也可包括较少的数据,且因此,需要较小的存储空间。由于路由器转发平面结构100的三个部件可具有不同的存储空间、存储器访问速度和延迟要求,因此,这三个部件可根据需要置于具有不同存储大小和存储器访问速度的不同存储介质上,以降低系统成本而实质上不降低性能。因此,例如,就存储器访问速度或延迟而言,第一存储器/存储层的第一存储器/存储介质(例如,用于布隆过滤器110)可具有比其他两层更高的性能。与剩下各层相比,第一存储器/存储介质也会因较高的性能特征而具有较高的单位成本。然而,由于布隆过滤器110可具有比其他两个部件低的存储空间要求,因此,通过根据需要将第一存储器/存储介质的存储容量限制成支持布隆过滤器110,可限制第一存储器/存储介质的成本。类似地,与第三层相比,第二存储器/存储层的第二存储器/存储介质(例如,计数布隆过滤器120)可具有更高的存储器访问速度(和/或更低的存储器访问延迟),及更高的单位成本。通过根据需要将第二存储器/存储介质的存储容量限制成支持计数布隆过滤器120,也可限制第二存储器/存储介质的成本。与第一层和第二层中各层相比,第二存储器/存储层的第三存储器/存储介质(例如,转发信息日志130)可具有更低的存储器访问速度、更低的单位成本及更高的容量。在一个实例中,布隆过滤器110可保存在动态随机存取存储器(DRAM)中,计数布隆过滤器120可保存在固态驱动器(SSD)中,且转发信息日志130可保存在硬盘驱动器(HDD)中。在其他实例中,其他存储器/存储介质可用来保存这三个部件。例如,布隆过滤器110、计数布隆过滤器120及转发信息日志130可分别保存在DRAM、相变存储器(PCM)及SSD 中。图2图示布隆过滤器200的一项实施例,其可对应于路由器转发平面结构100中的布隆过滤器110。布隆过滤器200可与网络节点(例如,内容路由器)中的端口相关联,且可包括位阵列210。位阵列210可存储在第一存储器/存储层(例如,DRAM)中,且可包括多个位,例如,如图2所示的约8位。在其他实施例中,位阵列210可包括任何数量的位,例如,约大于一。位阵列210可用于指示与所述端口相关联的一个或多个成员(例如,通用名称前缀)的一个或多个签名。每个成员可具有唯一的签名集合,由位阵列210中不同的位集合表不。例如,对应于所述端口的成员签名的各位可设置成约为一。未对应于成员签名的剩余位可设置成约为零。端口所有成员的签名集合可包括约相等数量的签名或位。例如,最初,在将任何成员分配给端口之前,所有的位可设置成约为零。在将成员(例如,通用内容名称前缀)添加到端口之后,可计算成员签名,且对应的位可设置在位阵列210中。因此,每次添加成员时便可更新位阵列210的位。为了确定名称前缀是否为成员,且因此是否在端口上转发对应的传入内容,可计算传入名称或前缀的签名,并将其与位阵列210中的位匹配。例如,路由器可接收与第一前缀(Kl)220相关联的第一内容以及与第二前缀(K2)230相关联的第二内容。因此,可为Kl获取第一签名集合,且可使用同一散列函数集合为Κ2获取第二签名集合。例如,可使用约三个相同的散列函数为Kl获取约三个第一签名,且为Κ2获取约三个第二签名,从而可将Kl和Κ2映射成两个不同的值集合。
例如,第一前缀(Kl) 220的三个签名可约等于零、二和四,且分别对应于位阵列210中的第一位、第三位和第五位。第二前缀(K2) 230的三个签名可约等于二、四和七,且分别可对应于位阵列210中的第三位、第五位和第八位。例如,由于第一签名中对应于第一位(左起)的那个签名并未设置在位阵列210中(例如,具有对应的零位),因此,Kl可能不为布隆过滤器200的成员,且因此,无法在与布隆过滤器200相关联的端口上转发对应内容。由于所有的第二签名都设置在位阵列210中(例如,具有对应的一位),因此,K2可为布隆过滤器200的成员,且因此,可在与布隆过滤器200相关联的端口上转发对应内容。类似于布隆过滤器200的布隆过滤器可用于节点或路由器中的每个端口。使用布隆过滤器在路由器的端口上转发内容可代替诸如典型IP地址转发方案中所使用的端口的转发表功能。内容路由器中接收到包之后,可使用包中的目标名称计算签名,然后使用所述签名针对多个端口查询多个布隆过滤器。如果未在一个或多个布隆过滤器中找到匹配项,那么可在与布隆过滤器相关联的一个或多个端口上转发所述包。如果没有布隆过滤器与包中的名称或前缀的签名匹配,那么所述包可扩散(flood)(例如,在所有端口转发)或可丢弃。如果保存介质(host medium)是存储器,则可按照存储器访问速度并行,例如,约同时查询端口的布隆过滤器。可使用中央处理器(CPU)存储器存取缓存机制并行查询布隆过滤器,其中布隆过滤器可排列在CPU存储器的缓存线上。例如,英特尔现代CPU中缓存线的大小等于约64字节。因此,如果布隆过滤器在存储器中适当排列,则可约同时查询高达约512个布隆过滤器。此外,同一名称或前缀的签名可约同时进行检查或与布隆过滤器匹配。由于用来计算签名(针对各名称或前缀)的散列函数彼此独立,因此,各CPU核心可针对一个名称前缀实施散列函数中的一个散列函数,且所有的CPU核心可并行工作,以计算所有签名。在当前的硬件中,服务器可包括约八个以上的CPU核心,从而可让内容路由器针对所有签名(例如,每前缀约八个签名),每访问一次存储器便查询约512个布隆过滤器。布隆过滤器可存储于三层存储器/存储系统中访问延迟最低的第一层存储器/存储介质中。诸如第三代双倍速率(DDR3)同步DRAM (DDR3SDRAM)等当前DRAM可具有约10毫微秒的低访问延迟,这可能适合于布隆过滤器的操作。但与其他存储装置相比,DRAM的容量可能相对较低,且单价可能相对较高。单机或单服务器上的DDR3SDRAM的最大容量可等于约96千兆字节(GB),且单价可等于约30美元每GB。因此,DRAM可用在第一存储器/存储层,以保存布隆过滤器。查询布隆过滤器可取决于所使用的散列函数量,但可有效缩放成相当大的内容名称空间,例如,而实质上不会造成性能下降。例如,每成员约20位的位阵列可用来建立误报率(FPR)为约0.01%的布隆过滤器。例如,包括约50GB的存储器的内容路由器可约同时处理约200亿通用名称前缀。此类相对较快的查询速度可为内容路由器提供较高的吞吐量。例如,单服务器处理和存储系统可针对诸如网页等大小约为4千字节(KB)的相对较小的内容包,处理约3.2兆位每秒(Tbps)的位速率,且针对诸如视频剪辑等约10兆字节(MB)的相对较大的内容,处理约8千兆位每秒(Pbps)的位速率。FPR是指在布隆过滤器中查询名称前缀时获取真值(或积极结果)的概率,例如,鉴于成员资格信息的有损压缩表示,所述名称前缀可能并非该布隆过滤器的成员。路由器转发平面结构的设计可根据需要进行调整,以将布隆过滤器的FPR维持在可接受的水平。通过调整所用的散列函数量及布隆过滤器中每成员的位大小,可控制FPR。例如,为了达到约1%的FPR,布隆过滤器的位大小可设置成预期成员数目的约10倍,且用于生成签名的散列函数量可约等于七。此外,FPR实质上不会影响或降低网络中内容的可达性或成功传递,但可能会添加一些额外业务量。通常,在内容网络中,可使用多路径路由,例如,而不是端到端模型来转发内容,且中间节点可具有存储和/或缓存能力。因此,网络中的路由器可建立多条路径,以改进或优化网络业务状况并确保内容传递,这可能是内容网络的其中一个设计目标。使用布隆过滤器的一个问题是缺少删除操作,例如,以移除删除成员的签名。例如,从端口移除成员之后,布隆过滤器中的对应位可重置成约为零,这是由于某些位可与其他成员共享,例如,可对应于其他成员的签名。重置此类共享的位可使布隆滤波器产生漏报率(false negative rate),例如,针对查询布隆过滤器中的真实成员,可返回假值。这种情况会使布隆过滤器的操作变复杂,且降低内容路由器的性能。事实上,计数布隆过滤器可与布隆过滤器相关联,且用来为布隆过滤器提供有效的删除操作。图3图示布隆过滤器和计数布隆过滤器组合300的一项实施例,所述组合可包括布隆过滤器310和计数布隆过滤器320。例如,布隆过滤器310和计数布隆过滤器320可对应于布隆过滤器110和计数布隆过滤器120。布隆过滤器310可与内容路由器中的端口相关联,包括约四位的位阵列且存储在第一存储器/存储层(例如,DRAM)。布隆过滤器310的操作方式实质上类似于布隆过滤器200。计数布隆过滤器320可与布隆过滤器310和所述端口相关联,且可包括约等位的多个子集或子阵列,其各对应于布隆过滤器310位中的一位。例如,计数布隆过滤器320可包括共约16位,其中约四位的每个子集可与布隆过滤器310中的对应位相关联。计数布隆过滤器320中每个子集中位的数量可根据泊松近似来确定,从而表明布隆过滤器310中每一位或每签名约四位可足以涵盖每签名的最大预期成员数量。但在其他实施例中,计数布隆过滤器320的子集中可使用任何数量的位,例如,每签名超过一位。计数布隆过滤器320可存储于第二存储器/存储层(例如,SSD)中。计数布隆过滤器320可支持布隆过滤器310的添加和删除操作。计数布隆过滤器320中位的各子集可扩展布隆过滤器310中对应位的双模式状态(例如,设置或未设置)。尽管布隆过滤器310中的位可指示对应签名(针对名称前缀)是设置还是未设置,但计数布隆过滤器320中对应位的子集可作为编码计数器操作,以指示与签名相关联的当前成员数量。所述计数器可用来更新每签名的成员当前数量。移除签名的成员时,计数器会减少一,且添加成员时,计数器会增加一。例如,在未针对任何成员设置签名时,布隆过滤器310中的对应位可约等于零,且计数布隆过滤器320中相关联的位子集也可指示约为零。或者,在针对一个或多个成员设置签名时,布隆过滤器310中的对应位可约等于一,且计数布隆过滤器320中相关联的位子集可指示成员数量,例如,可约大于一。因此,布隆过滤器320可用以维持分配给每个端口的成员数量的更新记录,这可有助于跟踪链接利用,且提高所有网络的整体性能。计数布隆过滤器320可存储于第二层存储器/存储介质中,所述第二层存储器/存储介质可进行性能与成本之间的平衡、具有比第三层低的访问延迟,以及比存储器/存储系统的第一层低的单价。例如,当前的SSD可适合于将计数布隆过滤器320存储在存储器/存储系统的第二层。SSD可将闪存用作存储介质,闪存是非易失性媒介的一种形式。SSD的平均访问延迟可约等于100微秒,且单价可约等于3美元每GB。第二存储器/存储层中的计数布隆过滤器也可缩放第一存储器/存储层中的布隆过滤器,例如,以根据需要增大和缩小布隆过滤器大小。图4图示从布隆过滤器420缩放成布隆过滤器410的布隆过滤器缩放400的一项实施例,所述缩放在布隆过滤器410中将布隆过滤器420的大小减小到其大小的约一半,从而在权衡较高FPR时使第一存储器/存储层中存在更多自由空间。所述布隆过滤器可从对应于布隆过滤器310且包括约四位的第二布隆过滤器420缩放成包括约两位的第一布隆过滤器410。因此,第二布隆过滤器420中的每两位可映射成第一布隆过滤器410中的单个位。因此,成员的总数量可能不变,但成员资格可由更少的位表示。通常,第二布隆过滤器420可绕多折,以获得较小的布隆过滤器410或甚至更小的布隆过滤器。可缩放第一布隆过滤器410的大小,以在其成员计数变化时维持几乎不变的密度率(density rate)或固定的FPR。例如,当第一布隆过滤器410的FPR例如,因布隆过滤器成员增加而快要超过预定值或阈值时,可从计数布隆过滤器320构建诸如第二布隆过滤器420等较大的布隆过滤器,以表示比第一布隆过滤器410更准确的成员资格信息。因此,存在计数布隆过滤器可让存储于第一存储器/存储层中的布隆过滤器在成员计数增加时动态增长该布隆过滤器的大小。如图4所示,第二布隆过滤器420中的第一位和第三位(左起)可映射成第一布隆过滤器410中的第一位(左起)。类似地,第二布隆过滤器420中的第二位和第四位可映射成第一布隆过滤器410中的第二位。如果两个对应签名中的一个或两个签名与成员相关联,则可设置第一布隆过滤器410中的第一位(例如,设置成约为一);且如果两个对应签名均不与成员相关联,则可不设置所述第一位(例如,可约等于零)。类似地,如果两个对应签名中的一个或两个签名与成员相关联,则可设置第一布隆过滤器410中的第二位;且如果两个对应签名均不与成员相关联,则可不设置所述第二位。如果设置了第一布隆过滤器410中的第一位,则可通过检查对应的计数布隆过滤器,例如,计数布隆过滤器320来解决设置两个对应签名的模糊问题。例如,计数布隆过滤器320中的第一子集(左起)可针对所述两个对应签名中的第一个签名向第二布隆过滤器420中的第一位指示约一个以上成员,且计数布隆过滤器320中的第二子集可针对所述两个对应签名中的第二个签名指示零成员。类似地,如果设置了第一布隆过滤器410中的第二位,则可通过检查对应的计数布隆过滤器320来解决设置两个对应签名的模糊问题。例如,计数布隆过滤器320中的第三子集可针对所述两个对应签名中的第一个签名向第二布隆过滤器420中的第二位指示零成员,且计数布隆过滤器320中的第四子集可针对所述两个对应签名中的第二个签名指示约一个成员。转发信息日志,例如,转发信息日志130可存储于第三层存储器/存储介质中,其中各新路由信息消息可添加到所述日志中。将路由信息添加到日志可维持且跟踪路由事件的时间线,从而可扫描和重放日志。此外,例如,如果用于HDD中,则所添加的信息可使用循序写入能力来提高存储性能。第三层存储器/存储系统中的转发信息日志可用于系统故障恢复。例如,当系统(硬件或软件)出现故障时,可通过,例如从故障点或时间开始扫描和重放转发信息日志130来完全或部分重建第二层处的计数布隆过滤器。如果第三层存储器/存储介质也损坏,则内容路由器可联系相邻的路由器,并请求日志的损坏或丢失部分。例如,由于可根据请求信息选择恢复部分,因此,用于恢复的停机时间窗可相当短,例如,约为几秒或若干秒。因此,可缓解诸如中间系统到中间系统(IS-1S)和开放最短路径优先(OSPF)等路由信息交换协议的收敛问题。在某些实施例中,出于持久和复制目的,布隆过滤器和计数布隆过滤器也可存储于第三层。此外,日志中的转发信息的交换可配置成布隆过滤器的形式,例如,而不是路由器中的路由信息的原始形式。因此,鉴于布隆过滤器的紧凑大小,交换转发信息所需的带宽实质上可减少。在存储器/存储系统的三层中,保存转发信息日志的第三层存储器/存储介质可具有最大的容量和最低的单价。第三层存储器/存储介质也可用作难以或无法重建的非重建转发信息的持久存储器。例如,转发信息日志可包括未在查询、路由和转发内容期间实时使用的信息。例如,当前的HDD可用于将转发信息日志存储在存储器/存储系统的第三层。HDD是大容量应用的常用存储部件。例如,面向性能的串行高级技术附件(SATA) HDD可提供等于约10毫秒的访问延迟。虽然与第一和第二层存储介质相比(例如,DRAM和SSD),此类存储介质可能较慢,但HDD可具有约0.05美元每GB的相当低的单价。路由器转发平面结构的另一部件可为端口偏好表,其可存储在第一或第二层存储器/存储系统。例如,在通用名称前缀与多个端口的多个布隆过滤器匹配时,端口偏好表可指示所查询的通用名称前缀的偏好或优选端口。端口偏好表可指定每个端口上某些业务中的部分。例如,端口偏好表可包括多个条目,其中各条目可指示端口和相关内容前缀。由于多路径路由通常用于内容网络,例如,以改进内容传递,因此,内容包可与路由器中的多个端口匹配。在缺少路由内容的偏好端口的情况下,可同等对待与内容相关联的端口,且因此,所述内容可在所有相关端口上转发。或者,可使用端口偏好表来选择优选端口,并且只在优选端口上转发内容。例如,端口偏好表可由操作人员手动设置,且可不包括相当大量的条目,且因此,可与布隆过滤器一起存储于第一层存储器/存储系统(例如,DRAM)中。如果端口偏好表包括相当大量的条目,那么所述表可与计数布隆过滤器一起存储于第二层存储器/存储系统(例如,SSD)中。图5图示路由器转发方法500的一项实施例,其可用于根据上述路由器转发平面结构来转发内容。例如,路由器转发方法500可由包括三层存储器/存储系统的路由器来实施。在块510处,例如,可在路由器的端口上接收内容。所述内容可为任何内容数据,例如,文本、语音、视频、电视(TV)、互联网和/或任何专用内容,或者,所述内容可为,例如,来自于终端用户、其他路由器或内容服务器的内容请求。在块520处,可从所述内容中获取内容前缀。例如,路由器可在所述内容中检测名称前缀。在块530处,例如,可查询第一存储器/存储层处的多个布隆过滤器,以找到内容前缀的匹配项。布隆过滤器可与路由器的多个端口相关联,且可在存储器(例如,DRAM)中并行,例如,约同时进行查询。在块540处,方法500可确定是否找到内容前缀的匹配项。如果找到匹配项,那么方法500可进入块550。否则,方法500可进入块580。在块550处,方法500可确定是否找到内容前缀的多个匹配项。如果找到与多个端口相关联的多个匹配项,那么方法500可进入块560。否则,方法500可进入块570。在块560处,可选择优选端口用于转发内容。所述优选端口可从端口偏好表中选择且可与内容前缀相关联。在块570处,所述内容可在与内容前缀匹配的所有端口上转发。在块580处,所述内容可在所有端口上扩散,例如,除了入端口之外,或者可丢弃。随后,方法500可结束。在另一实施例中,方法500可用于根据地址或前缀,例如,与使用多个布隆过滤器的多个端口相关联的IP地址,对任何内容或数据进行路由。图6图示发射器/接收器单元600的一项实施例,所述发射器/接收器单元可为经由网络传送包和/或内容的任何装置。例如,发射器/接收器单元600可位于内容网络中的内容路由器或任何节点中。发射器/接收器单元600可包括:一个或多个入端口或单元610,用于从其他网络部件接收包、对象,或类型-长度-值(TLV);逻辑电路620,用于确定发送包的目标网络部件;以及一个或多个出端口或单元630,用于将帧发送到其他网络部件。上述网络部件可在任何通用网络部件上实施,例如计算机或特定网络部件,其具有足够的处理能力、存储资源和网络吞吐能力来处理其上的必要工作量。图7图示典型的通用网络部件700,其适用于实施本文所揭示的部件的一项或多项实施例。网络部件700包括处理器702 (可称为中央处理器单元或CPU),所述处理器与包括以下项的存储装置通信:辅助存储器704、只读存储器(ROM) 706、随机存取存储器(RAM) 708、输入/输出(I/O)装置710,以及网络连接装置712。处理器702可作为一个或多个CPU芯片实施,或者可为一个或多个专用集成电路(ASIC)的一部分。辅助存储器704通常包括一个或多个磁盘驱动器或磁带驱动器,且用于对数据进行非易失性存储,且如果RAM708的容量不足以存储所有工作数据,则用作溢流数据存储装置。辅助存储器704可用以在选择执行载入到RAM708中的程序时存储此类程序。R0M706用于存储在程序执行期间读取的指令以及可能的数据。R0M706为非易失性存储装置,其存储容量相对于辅助存储器704的较大存储容量而言通常较小。RAM708用于存储易失性数据,还可能用于存储指令。访问R0M706和RAM708通常比访问辅助存储器704要快。本发明揭示了至少一项实施例,而且所属领域的一般技术人员对实施例和/或实施例的特征做出的变化、组合和/或修改均在本发明的范围内。通过组合、整合和/或忽略各项实施例的特征 而得到的替代性实施例也在本发明的范围内。在明确说明数字范围或限制的情况下,此类表达范围或限制应被理解成包括在明确说明的范围或限制内具有相同大小的迭代范围或限制(例如,从约为I到约为10包含2、3、4等;大于0.10包含0.11,0.12、
0.13等)。例如,只要揭示具有下限R1和上限Ru的数字范围,便明确揭示了此范围内的任何数字。具体而言,在所述范围内的以下数字是明确揭示的=R=Rfk*(Ru-R1),其中k为从1%到
100% 范围内以 1% 递增的变量,即,k 为 1%、2%、3%、4%、7%、......、70%、71%、72%、......、97%、
96%、97%、98%、99%或100%。此外,由上文中定义的两个数字R定义的任何数字范围也是明确揭示的。相对于权利要求书的任一元素使用术语“选择性地”意味着所述元素是需要的,或者所述元素是不需要的,这两种替代方案均在所述权利要求书的范围内。使用诸如“包括”、“包含”和“具有”等较广术语应理解为提供对诸如“由…组成”、“基本上由…组成”以及“大体上由…组成”等较窄术语的支持。因此,保护范围不受上文所述的说明限制,而是由所附权利要求书界定,所述范围包含所附权利要求书的标的物的所有等效物。每一和每条权利要求作为进一步揭示内容并入说明书中,且所附权利要求书是本发明的实施例。对本发明中的参考进行的论述并非承认其为现有技术,尤其是
公开日期在本申请案的优先权日期后的任何参考。本发明中所引用的所有专利、专利申请案和公开案的揭示内容以引用的方式并入本文中,以提供补充本发明的示例性、程序性或其他细节。
虽然本发明中已提供若干实施例,但应理解,在不脱离本发明的精神或范围的情况下,所揭示的系统和方法可以许多其它特定形式来实施。本发明的实例应视为说明性的而非限制性的,且本发明不限于本文所给出的细节。例如,各元件或部件可在另一系统中组合或合并,或某些特征可省略或不实施。另外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可与其他系统、模块、技术或方法组合或合并。所示或讨论的彼此耦接、直接耦接或通信的其他项目可以电气方式、机械方式或其他方式经由某些接口、装置或中间部件而间接耦接或通信。改变、替换和更改的其他实例可由所属领域的技术人员确定,且在不脱离本文中所揭示的精神和范围的情况下做出。
权利要求
1.一种路由器转发平面,包括: 布隆过滤器,其存储于第一层存储介质上;以及 转发信息日志,其与所述布隆过滤器相关联且存储于第二层存储介质上。
2.根据权利要求1所述的设备,进一步包括与所述布隆过滤器相关联且存储于第三层存储介质上的计数布隆过滤器,其中与所述第三层存储介质相比,所述第一层存储介质具有更快的访问速度和更小的存储容量,且其中与所述第二层存储介质相比,所述第三层存储介质具有更快的访问速度和更小的存储容量。
3.根据权利要求2所述的设备,其中所述布隆过滤器支持以约3.2兆位每秒(Tbps)的位速率对约千字节(KB)的相对较小的内容包进行路由,以约8千兆位每秒(Pbps)的位速率对约兆字节(MB)的相对较大的内容进行路由,或者上述两项。
4.根据权利要求1所述的设备,进一步包括与所述布隆过滤器相关联且存储于第三层存储介质上的计数布隆过滤器,其中所述第一层存储介质包括动态随机存取存储器(DRAM),所述第三层存储介质包括固态驱动器(SSD),且所述第二层存储介质包括硬盘驱动器(HDD)。
5.根据权利要求1所述的设备,进一步包括与所述布隆过滤器相关联且存储于第三层存储介质上的计数布隆过滤器,其中所述第一层存储介质包括动态随机存取存储器(DRAM),所述第三层存储介质包括相变存储器(PCM),且所述第二层存储介质包括固态驱动器(SSD)。
6.根据权利要求1所述的设备,进一步包括与所述布隆过滤器相关联且存储于第三层存储介质上的计数布隆过滤器,其中所述第一层存储介质、所述第二层存储介质及所述第三层存储介质位于商品服务器上,且其中所述布隆过滤器、所述计数布隆过滤器及所述转发信息日志为保存在所述商品服务器上的部件。
7.根据权利要求1所述的设备,其中所述布隆过滤器与所述路由器上的单个端口相关联。
8.根据权利要求1所述的设备,进一步包括与所述布隆过滤器相关联且存储于第三层存储介质上的计数布隆过滤器,其中所述布隆过滤器与所述路由器上的多个端口相关联,且其中所述第一层存储介质或所述第三层存储介质包括端口偏好表,用以指示与所述布隆过滤器相关联的所述端口中的优选转发端口。
9.一种网络部件,包括: 接收器,其用于接收包括通用名称前缀的内容; 第一层存储介质,其用于存储与多个通用名称前缀和多个对应端口相关联的多个布隆过滤器; 逻辑电路,其用于根据所接收内容的所述通用名称前缀来计算多个签名;以及 发射器,其用于在所述通用名称前缀是所述布隆过滤器中至少一个布隆过滤器的成员的情况下,在与所述布隆过滤器中所述至少一个布隆过滤器相关联的端口中的至少一个端口上转发所述所接收内容。
10.根据权利要求9所述的网络部件,其中多个通用名称前缀为与单个端口相关联的单个布隆过滤器的成员,且其中所述单个布隆过滤器包括多个位,所述多个位设置成指示对应于所述成员的多个签名。
11.根据权利要求9所述的网络部件,其中多个端口与单个布隆过滤器相关联,且其中如果所述所接收内容的所述通用名称前缀为所述单个布隆过滤器的成员,则在与所述单个布隆过滤器相关联的所述端口上转发所述所接收内容。
12.根据权利要求9所述的网络部件,其中所述签名使用对应于所述签名的多个散列函数进行计算,其中同一散列函数用于多个所接收的通用名称前缀,且其中针对不同通用名称前缀可计算出不同签名。
13.根据权利要求9所述的网络部件,进一步包括第二层存储介质,用于存储与所述布隆过滤器相关联的多个计数布隆过滤器,其中所述计数布隆过滤器中的每一个计数布隆过滤器针对一个对应布隆过滤器中的各签名指示成员的数量。
14.根据权利要求13所述的网络部件,其中所述计数布隆过滤器中的每一个计数布隆过滤器包括用于各签名的位子集,所述子集包括指示对应于所述签名的当前成员数量的值,且其中当具有对应签名的成员添加到与所述布隆过滤器相关联的端口时,所述值增加一,且当从所述端口的成员集合中移除具有对应签名的成员时,所述值减少一。
15.根据权利要求13所述的网络部件,进一步包括第三层存储介质,用于存储转发信息日志,所述转发信息日志用以在系统出现故障时重建所述计数布隆过滤器、所述布隆过滤器或这两者的至少某些部分。
16.根据权利要求15所述的网络部件,其中所述计数布隆过滤器、所述布隆过滤器或这两者在相对于内容转发过程的约为几秒的相对较短的时间窗内恢复。
17.—种计算机实施方法,包括: 接收内容项; 从所述内容中获取通用内容前缀; 查询多个布隆过滤器,以找到所述通用内容前缀的至少一个匹配项;以及 在与匹配所述通用内容前缀的至少一个布隆过滤器相关联的至少一个端口上转发所述内容。
18.根据权利要求17所述的方法,进一步包括: 如果所述通用内容前缀匹配与多个布隆过滤器相关联的多个端口,则在端口偏好表中选择与所述通用内容前缀相关联的优选端口 ;以及 在所述优选端口上转发所述内容。
19.根据权利要求17所述的方法,进一步包括: 使用多个散列函数,针对新通用内容前缀计算多个签名; 在与分配给所述新通用内容前缀的端口相关联的布隆过滤器中设置对应于所计算的签名的多个位;以及 在与所述布隆过滤器和所述端口相关联的计数布隆过滤器中增加对应于所述签名的一个多个计数器。
20.根据权利要求17所述的方法,进一步包括: 针对作为布隆过滤器的成员且之前分配给与所述布隆过滤器相关联的端口的通用内容前缀,计算多个签名; 清除对应于与所述端口相关联的所述布隆过滤器中所计算的签名的多个位;以及 在与所述布隆过滤器和所述端口相关联的计数布隆过滤器中减少对应于所述签名的一个多个计数器。
21.一种路由器转发平面,包括: 计数布隆过滤器,其存储于第一层存储介质上;以及 转发信息日志,其与所述计数布隆过滤器相关联且存储于第二层存储介质上。
22.根据权利要求21所述的设备,其中所述第一层存储介质包括固态驱动器(SSD),且所述第二层存储介质包括硬盘驱动器(HDD )。
23.根据权利要求21所述的设备,其中所述第一层存储介质包括相变存储器(PCM),且所述第二层存储介质包括固态驱动器(SSD)。
24.根据权利要求21所述的设备,其中所述第一层存储介质和所述第二层存储介质位于商品服务器上,且其中所述计数布隆过滤器和所述转发信息日志为保存在所述商品服务器上的部件。
全文摘要
一种路由器转发平面,包括布隆过滤器,其存储于第一层存储介质上,以及转发信息日志,其与所述布隆过滤器相关联且存储于第二层存储介质上。本发明还揭示一种网络部件,包括接收器,其用于接收包括通用名称前缀的内容;第一层存储介质,其用于存储与多个通用名称前缀和多个对应端口相关联的多个布隆过滤器;逻辑电路,其用于根据所接收内容的所述通用前缀名称来计算多个签名;以及发射器,其用于在所述通用名称前缀是所述布隆过滤器中至少一个布隆过滤器的成员的情况下,在与所述布隆过滤器中所述至少一个布隆过滤器相关联的端口中的至少一个端口上转发所述所接收内容。
文档编号H04L12/703GK103141060SQ201180047867
公开日2013年6月5日 申请日期2011年5月6日 优先权日2010年10月4日
发明者吴建明, 施广宇 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1