专利名称:基于最长前缀匹配算法的过滤器的制作方法
技术领域:
本发明涉及基于计算机的通信网络,更具体的是,涉及用于例如上述网络的路由决策的执行最长前缀匹配(LPM)查找的系统和方法。
背景技术:
通信网络,例如因特网,使用包报头中的寻址信息将包在网络之间向目的节点转发。典型地,路由信息实际上是分层的,这样目的地址包括托管(host)目的节点的网络和任何子网络的地址。这种分层路由信息类似于10位数字的电话号码,其中前三位数字表示服务地区的地区代码,第二个三位数字表示该地区中的一个特定交换机,后面的四位数字代表一个该交换机服务的终端用户。因此,当呼叫被呼叫发起者发出后,该呼叫者连接的交换机仅需要确定地区代码,以将该呼叫接到该国家的适当地区。类似地,路由器通常查看IP地址中的分层路由信息以确定下一跳,而不关心目的节点的详细地址。与电话号码不同的是,IP地址中前缀的长度并不是固定的,这使得查找更加复杂。
当对因特网服务的期望增加时,提高带宽的需求也随之增加。有很多因素影响数据流过因特网的速度,例如线路速率,数据服务质量等。一个规定性能的主要因素是路由决策所花费的时间。对于线路速率是典型的瓶颈的低速拨号业务来说,当改善路由决策不会显著地增加总的业务传输时,路由决策的速度变成限制快速传输媒体(如光链路)带宽的因素,因此,本算法就应运而生了。
当因特网用户的数量增加时,对唯一地址的需求也在增加。因此,提供最多223个唯一地址的IPv4 32位地址空间也在迅速地耗尽。虽然已经提出了例如网络地址转换的技术,以扩展IPv4地址空间的可用性,但这些解决方案却破坏了透明的端到端连接。具有128位地址字段的IPv6已被部分引入,以改善地址空间问题。
增加地址报头的最终结果是每一个路由器必须潜在地查看非常长的地址,以做出路由决策。此外,能够对更多节点寻址意味着IPv6路由表可潜在地包含比IPv4可能包含的更多的路由。
如前所述,分层寻址方案使路由器能够将节点分组成网络。这减少了路由器的转发表中记录的数量,因为路由器可基于只匹配地址的网络部分、前缀做出路由决策,而无需整个地址。
前缀匹配包含将部分地址与路由表中的记录进行比较。当然,一个精确的路由算法可以快速给出最佳的路由信息,但典型地,这种查找要求路由表不切实际地大,且难于更新。确定最长前缀匹配的技术已经发展成为一个解决方案。
当路由器以较高速度转发时,转发算法的时间效率能对系统性能产生重大的影响。更有效率的算法,例如本发明提供的算法,会允许达到更高的系统吞吐量。
应当注意,本算法虽是针对IPv6的,但没有理由认为它不能用于IPv4或者任何其他需要LPM查找的应用。
涉及IP路由查找的现有技术包括美国专利6,018,524,其于2000年1月25日公开,发明人为特纳(Turner)等。特纳等人的专利公开了一种使用哈希表对前缀长度进行折半查找的算法。为了方便使用哈希表的折半查找,必须在哈希表中插入标记,以指示路由表中较长前缀长度的记录存在。标记提供表中存在较长前缀的指示,该较长前缀可提供更好的匹配,还可包含用于较短前缀的下一跳信息,该较短前缀已被发现导致当前查找失败。这些标记占据哈希表的重要部分,能占据哈希表内容的10%到60%(典型地为30%),导致更频繁的哈希冲突。在IPv6的情况下,使用该算法需要多达7次的哈希查找,不包括冲突。还有其它方案能稍微降低哈希查找的次数,但是是以额外的处理和额外的表作为代价。
第二个现有技术的方案在达玛普里卡尔(Dharmapurikar)等人的题为“Longest Prefix Matching Using Bloom Filter(使用Bloom过滤器的最长前缀匹配)”的论文中描述。该论文于2003年8月25-29日在德国卡尔斯鲁厄(Karlsruhe)的SIGCOMM03上发表。论文描述了使用一组过滤器(哈希功能)来确定地址应归入哪一组前缀长度。然后在哈希表中按线性顺序搜索该组长度。为了确定哪些前缀长度可用于某个特定地址,对于路由表中的每一个前缀长度都必须使用一个过滤器。考虑到IPv6的任何可能的路由表,必须有128个过滤器。为了有效地进行过滤,该算法限于具有大的晶体管/门数量的硬件实现,以获得期望的并行处理的水平。
执行哈希查找是个代价高的操作,特别是对于IPv6。哈希功能需要应用到关键字上,并且一部分结果用于索引存储器中的记录。由于哈希并不是一对一的映射,因此必须进行冲突检测,这需要在每一个哈希表的记录中存储最初的16字节(128比特)IPv6地址或者一部分地址。冲突可以用许多方法解决,但典型地这些方法都需要另外的存储器存取,以及每个哈希记录中的附加信息。总之,每个哈希查找必须承担大概20个字节的纯开销。作为使用哈希表的性能结果,其目标是降低哈希查找的次数,以及降低哈希记录的数量。
目前大多数其他的IP转发算法是基于树的。因此,它们的性能特点直接取决于地址中的比特数和路由表中记录的数量。由于IPv6地址的长度,现有基于树的IPv4转发算法不能在存储器存储量和存储器存取方面较好地按比例增加到IPv6规模的地址。使用这些算法会导致路由表数据结构的大小激增,以及执行查找所需的存储器等待时间增加。此外,现有的查找算法没有利用IPv6地址的一些用于简化IPv6转发的特性,例如分层寻址。事实上,这些IPv6寻址特性更可能降低现有IPv4查找算法的性能而不是增加。
发明内容
本发明寻求克服现有技术的限制,采用一种不同的方法以降低执行最长前缀匹配所需哈希查找的次数。使用部分地址过滤以降低哈希查找的次数。与最接近的现有技术相比较,减少过滤器和过滤操作的数量具有使LPM算法更快及实现成本更低的优点。为进一步地改善性能,一些实施例使用其它的过滤器,例如理想偏移过滤器,其从正在处理的IP地址中提取固定大小的滑动窗口来进一步地缩小查找结果。
因此,根据本发明的第一个方面,提供了一种执行最长前缀匹配的方法,包括下述步骤a)将关键字过滤成多个过滤字段,每一个过滤字段与各自的过滤表相关联;b)在各自的过滤表中对每一个过滤字段执行最长前缀匹配(LPM)操作,其中每个LPM操作产生一个指示一组潜在匹配所述关键字的前缀的长度的结果;c)交叉所述结果,以进一步减少潜在前缀长度组;d)基于先前指示的潜在前缀长度执行一系列的哈希查找,从最长的潜在前缀长度开始,向逐步更短的潜在前缀长度进行,直到找到匹配前缀,所述匹配前缀是匹配所述关键字的最长前缀。
根据本发明的第二个方面,提供一种执行最长前缀匹配的系统,包括多个过滤字段,每个过滤字段都通过过滤关键字产生,并与过滤表相关联;用于在各自的过滤表中对每一个过滤字段执行最长前缀匹配(LPM)操作的装置,其中,每个LPM操作产生一个指示一组用于匹配所述关键字的最长前缀的潜在前缀长度的结果;用于交叉所述结果以减少潜在前缀长度组的装置;以及基于先前指示的潜在前缀长度执行一系列哈希查找的装置,从最长的潜在前缀长度开始,向逐步更短的潜在前缀长度进行,直到找到匹配前缀,所述匹配前缀是匹配所述关键字的最长前缀。
参考附图,对本发明进行更为详细的描述,其中图1示出了基本的比特交织过滤器;图2提供了根据本发明的查找算法和数据结构的示意图;图3说明了包括部分过滤器的过程的变形;图4示出了用于选择理想比特分组的固定大小的滑动窗口;
图5示出了另一个实施例,其中过滤器基于理想偏移。
具体实施例方式
本发明利用了一种称为过滤的过程,其一般的操作是从某一字段中选择一些比特并将其按原始顺序串连,形成过滤字段。由于保持了比特的顺序,因此地址中包含的前缀信息被传递到过滤字段中,每一个过滤字段都有自己更小的前缀。因此,相关过滤字段表中过滤字段的最长前缀匹配在逻辑上是原始查找关键字的部分匹配。该部分匹配指示一组前缀长度,对于这些前缀长度,可能有匹配查找关键字的前缀。可使用任意数量的过滤字段,每一个过滤字段都与自己的过滤字段表相关联。每一个过滤字段可以使用不同的方法从查找关键字中提取比特。
实现这一过程的一种具体的过滤器称为比特交织过滤器。比特交织是选取一个地址并将其分成过滤字段的过程,这样该地址的第一个比特变成第一个过滤字段的第一个比特,地址的第二个比特变成第二个过滤字段的第一个比特,地址的第三个比特变成第一个过滤字段的第二个比特,地址的第四个比特变成第二个过滤字段的第二个比特,等等。图1示出了这个比特交织过程。阴影区域表示关键字和产生的过滤字段的前缀部分。
本发明能分解成四个步骤。图2示出了本发明的总体视图和执行本算法所包括的步骤。
如图2所示,本算法的第一步是过滤字段的提取步骤。其采用多个过滤字段的提取方法过滤查找关键字或IP地址,以产生一组过滤字段。每个过滤字段就像用于其关联过滤表的小关键字。
第二步包括使用步骤1得到的过滤字段,在各自的过滤表中并行地对每个字段执行LPM查找。可以使用任何LPM算法以执行这些查找,包括直线排列查找或任意树查找。查找算法的选择取决于过滤字段的大小和数量。每个查找的结果是一个比特字段,在IPv6的情况下,是128比特长,其中每个比特指示一个前缀长度,对于该前缀长度,有潜在匹配查找关键字的前缀。作为这些查找的结果,确定了几组潜在前缀长度。这几组潜在前缀长度可以通过找到这些组的交集进一步减少,以产生确定的一组前缀长度。这最后一组潜在前缀长度可包含一个或多个设置比特(set bit),这些比特可进一步分类。其中一个设置比特潜在地指示最长匹配前缀的长度,任何高于该比特的比特都是误报(false positive),所有低于该比特的比特指示更短的匹配前缀以及其它的误报。重要的是注意过滤过程从来不会导致漏报(false negative),在漏报中,实际的匹配前缀不会在最后一组潜在前缀长度中指示其长度。
在交叉的结果之后,进行一系列的哈希查找,在这个过程中使用可能的前缀长度,在通过长度逻辑聚集前缀的哈希表中,查找匹配关键字的前缀。为简化,如图2所示,采用线性查找从最长的潜在前缀长度开始确定匹配前缀。线性查找持续到出现第一次匹配,这就是最长匹配前缀。应当理解,也可以使用其他的查找算法代替线性查找。
除了执行LPM查找算法以外,本发明还包括插入和删除路由规则的过程。插入新的路由就像查找地址一样简单和快速。首先,将路由加入对应前缀长度的哈希表中。然后过滤前缀,过滤字段用作关联过滤表中的关键字。然后根据相关的LPM算法更新过滤字段表,与关键字相关的记录有适当的比特组(bit set),以指示新路由的前缀长度的存在。
删除路由规则比插入稍微复杂一些。幸运的是,这个过程可以分成两个部分一部分能很快发生,并且确保路由立即从所考虑的地方除去,另一部分作为内务功能不经常发生,以减少过滤误报的次数。为删除路由,只需要将其从哈希表中除去。这将保证查找时绝不会找到该路由。如果删除的路由是某个特定前缀长度的唯一实例,则过滤表可以在常规地址查找中错误指示潜在命中该前缀长度。由于该算法用于处理例如上述的误报,因此误报只对查找性能有轻微的负面影响。为减少误报的次数,过滤表必须更新。这是处理稍微加强的工作,但可以有几种方式来完成,每种方式都有其优点。最明显的优点是只周期性地重建过滤表,周期可用路由更新的次数或者时间表示。不过,这涉及遍历(traverse)整个路由规则表。
其它执行更新的选择包括使用计数过滤器计算引起某个特定长度出现在过滤表中的前缀的数量,或遍历按层表示的树,以及只查看给定长度的路由。所幸的是,这个复杂的工作仅需要尽最大的努力进行即可。
本发明可以有几种变形,每一种都有自己的性能特点。每一种变形都是由过滤器的数量和定义确定。通过替换部分算法(例如哈希查找、线性查找等)的其他变形也是可以的。
一个变形包括部分地址过滤。在IPv6中,过滤每一个比特会导致或者过滤字段太多,或者过滤字段太大。在部分地址过滤方案中,仅对一部分IPv6地址(例如前64个比特)进行过滤。这可通过4个16比特的过滤器产生四个字段来进行。这些过滤器从比特位置0、1、2和3开始,并选择每第四个比特。图3示出了这种过滤器的实例。
另一个变形包括理想偏移过滤器,其在2003年11月24日递交的待决美国专利申请中有更为详尽的描述。该待决美国专利申请的内容在此作为参考引入本申请中。图4示出了固定大小的滑动窗口,用于选择理想的比特分组以最佳地将地址分组,以减少组内前缀长度的数量。在这个实施例中,来自滑动窗口的比特用作额外的过滤器。这个方案进一步有两个方面,第一是只利用滑动窗口的理想位置的统计值构建过滤器。在这种情况下,如图5所示,滑动窗口的位置是固定的。第二是基于当前的路由表动态地确定窗口的理想位置。
本申请提出的算法可以采用硬件、软件或软硬件结合轻易地实现。可供选择的例子包括ASICS、FPGAs、GPPs和NPs。显然,本领域的技术人员也可以采用其他的平台来实现。
本发明可以使最长前缀匹配的实现有很低的成本和特别高的速度,可有效地改变关键字长度和前缀的数量。当应用于IPv6时,本发明利用了IPv6地址的特性,避免了IPv6的可伸缩性问题。
通过对本发明的具体实施例的描述和说明,很显然,本领域的技术人员在不偏离基本思想的前提下,可以进行许许多多的变化。不过应当理解,这些变化将落入所附权利要求限定的本发明的范围之内。
权利要求
1.一种执行最长前缀匹配的方法,包括下述步骤a)将关键字过滤成多个过滤字段,每一个过滤字段都与各自的过滤表相关联;b)在各自的过滤表中,对每一个过滤字段进行最长前缀匹配(LPM)操作,其中每个LPM操作产生一个指示潜在匹配所述关键字的前缀的长度的结果;c)交叉所述结果,以获得一组潜在前缀长度;以及d)基于先前指示的潜在前缀长度,执行一系列的哈希查找,从最长的潜在前缀长度开始,向逐步更短的潜在前缀长度进行,直到找到匹配前缀,所述匹配前缀就是匹配所述关键字的最长前缀。
2.根据权利要求1所述的方法,其中每次过滤可以使用不同的方法进行过滤字段的提取。
3.根据权利要求1所述的方法,其中所述关键字是IP地址。
4.根据权利要求3所述的方法,其中所述哈希查找用于路由决策。
5.根据权利要求3所述的方法,其中所述多个过滤字段通过从所述IP地址中提取比特构建。
6.根据权利要求5所述的方法,其中所述提取的比特被串连成过滤字段,每个过滤字段作为用于所述关联过滤表的关键字。
7.根据权利要求1所述的方法,其中所述对每个过滤字段和关联过滤表的最长前缀匹配操作是并行执行的。
8.根据权利要求7所述的方法,其中使用查找表执行LPM操作。
9.根据权利要求7所述的方法,其中使用树查找执行LPM操作。
10.根据权利要求1所述的方法用于执行将新路由插入哈希表中。
11.根据权利要求1所述的方法用于从哈希表中删除路由。
12.根据权利要求11所述的方法,其中更新所述哈希表以删除路由。
13.根据权利要求3所述的方法,其中只有部分IP地址被过滤成过滤字段。
14.根据权利要求3所述的方法,其中所述IP地址长度为128比特。
15.根据权利要求3所述的方法,其中所述IP地址长度为32比特。
16.根据权利要求3所述的方法,其中采用了理想偏移过滤器。
17.一种执行最长前缀匹配的系统,包括多个过滤字段,每个过滤字段通过过滤关键字构建,并与各自的过滤表相关联;用于在各自的过滤表中对每一个过滤字段进行最长前缀匹配(LPM)操作的装置,其中每个LPM操作产生指示匹配所述关键字的最长前缀的潜在前缀长度的结果;用于交叉所述结果以获得一组潜在前缀长度的装置;以及用于在多个逻辑哈希表中采用线性方式查找最长前缀匹配的装置,其中每个哈希表与特定前缀长度相关联,所述查找使用所述一组潜在前缀长度进行,从最长的潜在前缀长度开始,向逐步更短的潜在前缀长度进行,直到找到匹配前缀。
18.根据权利要求17所述的系统,其中所述过滤字段是比特交织过滤器。
19.根据权利要求17所述的系统,其中所述关键字是IP地址。
20.根据权利要求17所述的系统,其中所述LPM操作在查找表中执行。
21.根据权利要求19所述的系统,其中所述IP地址长度为符合IPv6的128比特。
22.根据权利要求19所述的系统,其中所述IP地址长度为符合IPv4的32比特。
全文摘要
本发明提出了关于最长前缀匹配的方法和关于IP地址查找的系统。所述方法和系统具体涉及IPv6,包括对一个IP地址查找最长前缀匹配(LPM)。本发明方法导致使用过滤器进行LPM。在本发明的实施例中,采用部分地址过滤以进一步降低过滤要求。与现有技术方法相比,减少过滤操作的次数具有使LPM算法更快和实现成本更低的优点。还描述了“理想偏移过滤器”,其从正在处理的IP地址中提取固定大小滑动窗口的比特。
文档编号H04L12/56GK1655533SQ20051000775
公开日2005年8月17日 申请日期2005年2月16日 优先权日2004年2月9日
发明者D·J·威尔松, B·S·布-迪亚布 申请人:阿尔卡特公司