CN1863169A - 基于网络处理器的路由查找结果缓存方法 - Google Patents
基于网络处理器的路由查找结果缓存方法 Download PDFInfo
- Publication number
- CN1863169A CN1863169A CNA2006100837011A CN200610083701A CN1863169A CN 1863169 A CN1863169 A CN 1863169A CN A2006100837011 A CNA2006100837011 A CN A2006100837011A CN 200610083701 A CN200610083701 A CN 200610083701A CN 1863169 A CN1863169 A CN 1863169A
- Authority
- CN
- China
- Prior art keywords
- list item
- address
- route searching
- searching result
- group
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 19
- 230000006870 function Effects 0.000 claims abstract description 13
- 238000012545 processing Methods 0.000 claims description 42
- 230000008878 coupling Effects 0.000 claims description 21
- 238000010168 coupling process Methods 0.000 claims description 21
- 238000005859 coupling reaction Methods 0.000 claims description 21
- 230000013011 mating Effects 0.000 claims description 4
- 238000012217 deletion Methods 0.000 claims description 2
- 230000037430 deletion Effects 0.000 claims description 2
- 230000001105 regulatory effect Effects 0.000 abstract 1
- 238000004422 calculation algorithm Methods 0.000 description 14
- 238000013461 design Methods 0.000 description 7
- 238000010276 construction Methods 0.000 description 6
- 230000008520 organization Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000003860 storage Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000008034 disappearance Effects 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000000052 comparative effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- RWNNRGBCWXOVAC-UHFFFAOYSA-N 1,4-bis[bis(aziridin-1-yl)phosphoryl]piperazine Chemical compound C1CN1P(N1CCN(CC1)P(=O)(N1CC1)N1CC1)(=O)N1CC1 RWNNRGBCWXOVAC-UHFFFAOYSA-N 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000000205 computational method Methods 0.000 description 1
- 239000007799 cork Substances 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000017525 heat dissipation Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
基于网络处理器的路由查找结果缓存方法属于计算机领域,其特征在于:在网络处理器的片上高速存储器中建立并维护一个路由查找结果缓存表,每个需要查找的目的IP地址被网络处理器接收后,先在该缓存表中通过哈希函数进行快速查找,若其结果已存在于该缓存表中,则直接返回路由查找结果,并对缓存表的表项按最近最少使用的原则进行顺序的调整,以期在后续查找中能尽快地得到结果;否则,才对保存在片外低速存储器中的路由表进行查找,其结果在返回给应用程序的同时,还要写回路由查找结果缓存表。本发明减少了由路由查找而引发的片外低速存储器的访问次数、以及对存储器带宽的占用。
Description
技术领域
本发明是一种利用网络处理器的存储器组织结构,对路由查找结果进行缓存的方法,可以提高网络设备中报文处理的速度,属于计算机技术领域。
背景技术
网络处理器属于专用处理器的一种,通常应用于灵活高速的数据包处理。它结合了ASIC和通用CPU的优势,具有能够缩短路由器的开发周期和延长网络设备的生存周期的优点。一些厂商已经陆续推出了各类网络处理器产品。为了达到预期的目的,这些设计往往采用了与通用处理器截然不同的体系结构。比如,最为常见的做法就是将多个基于精简指令集(RISC)的处理单元集成在同一块芯片上,并且使用经过优化的专用指令集。另外一个广泛使用的架构是将通用处理器中层次式的存储器结构改为并列式,所有存储单元均对程序员可见并且由软件控制,用来减少层次式的存储器结构中由硬件控制的高速缓冲存储器所导致的访问时间不确定性,以适应网络处理半实时性的需求。
网络处理器主要应用于路由器等网络设备,而路由器的主要功能之一就是进行路由查找并根据查找结果对数据包进行转发。现有的网络处理器设计往往偏重于满足路由器日益增长的对复杂操作的需求,因此,灵活性虽然很高,但是对高效地完成路由查找等基本操作缺乏支持。目前很多比较流行的网络处理器,如Intel IXP系列,其路由查找的功能依赖于外接的TCAM器件或者专用的路由查找协处理器。尽管这些器件吞吐量很高并且具有确定性的访问延迟,但它们价格昂贵,并且功耗和散热量都很大,因此线卡的设计复杂且成本极高。这使得这种方案非常不适合于以低成本为首要考虑因素的中低端路由器和以功耗和线卡所占空间为首要因素的移动设备。所以,一种能够由网络处理器自身来完成的有效的路由查找机制就显得极为重要。
路由查找算法经过了较长时间的研究,目前已经比较成熟。比如基于多比特树(multi-bittrie)的算法,简单高效并且适合硬件实现。P.Gupta等人在文献[1]中设计了一种特殊的multi-bittrie算法,即根据路由表中前缀长度的分布,将trie分为长度为24和8的两级。由于绝大多数前缀都不大于24位,该算法在大多情况下只需要一次路由表的访问,个别时候需要两次。它主要的缺点是路由表占用的空间较大,可多达几十MB。但是目前大部分网络处理器都支持较大的地址空间,比如Intel IXP2400可外接2GB的DRAM。因此,该算法是比较适合在网络处理器中使用的。然而,由于多处理单元共享存储器所导致的排队和调度等因素,使得访问外部大容量存储单元的延迟通常较大,在一些工作频率较高的网络处理器中甚至可多达200多个周期。另外一方面,尽管网络处理器提供了多线程等延迟隐藏机制用于减少并列式存储器结构缺乏硬件控制高速缓冲存储器所带来的影响,但网络流量高突发性和尤其在中低速流量中更为明显的低并行性,往往使得多线程不能很好地发挥作用。因此需要一种方法,使其能够在充分利用网络处理器现有的存储结构的基础上,有效地降低返回路由查找结果所需的时间。
由于网络流量中数据包的目的IP地址之间具有较强的时间局部性,即同样的目的IP地址在一段时间内会反复出现,路由查找结果的缓存是一项在各类平台和背景下广泛被采用的技术。在一些设备中会使用专门设计的硬件,称为路由查找结果高速缓冲存储器(route cache)[2]。但是这些硬件无法在已经制成产品的网络处理器中使用。Tzi-cker Chiueh等人曾经为通用处理器设计过一种加速路由查找过程的算法[3]。但该算法主要利用的是通用处理器中容量较大且硬件控制的高速缓冲存储器,这在网络处理器中是不具备的。
[1]P.Gupta,S.Lin,and N.McKeown.Routing Lookups in Hardware at Memory AccessSpeeds.Proceedings of IEEE INFOCOM’98,pp.1240-1247,April 1998.
[2]Huan Liu.Routing Prefix Caching in Network Processor Design.Proceedings of theTenth International Conference on Computer Communications and Networks(ICCCN’01),pp.18-23,2001.
[3]Tzi-cker Chiueh,and Prashant Pradhan.High-Performance IP Routing Table LookupUsing CPU Caching.Proceedings of IEEE INFOCOM’99,vol.3,pp.1421-1428,1999.
发明内容
本发明的目的在于提高网络处理器中路由查找算法的效率,使得它既能够在较短的时间内返回查找结果从而给其他应用留出更充足的时间,同时又能减少完成同样功能所需要的芯片的种类和数量,以降低线卡所占用的空间、所需功耗和设计复杂度,进而降低其成本。
本发明充分利用了目前比较流行的网络处理器地址空间由片上容量较小但访问延迟低的存储器和片外容量较大但访问延迟较大的存储器构成、且缺乏硬件支持的高速缓冲存储器(cache)的特点,将片上高速存储器的一部分划分出来,由软件来维护一个路由查找结果缓存表,同时在片外低速存储器中建立路由表。由于网络流量中数据包的目的IP地址之间具有较强的时间局部性,即同样的目的IP地址在一段时间内会反复出现,所以有可能通过仅维护少量目的IP地址的查找结果来降低实际所需要的片外低速存储器访问次数、提高路由查找的效率。每个需要进行查找的目的IP地址被接收后,先在该缓存表中通过哈希进行快速的查找。如果其结果已经在该表内存在则直接返回该结果,并对缓存表的结构进行相应的调整,以期在以后的查找中能尽快地返回所需结果。否则的话,才对保存在片外低速存储器中的路由表进行查找,其结果除了返回给应用程序外,还会写回路由查找结果缓存表。哈希函数的选择需要既能使从目的IP地址在缓存表中的分布足够均匀,从而减少冲突的概率,又能通过简单的几条指令就可获得索引号,缩短处理所需的时间。当路由表的内容发生改变时,需要对路由查找结果缓存表中受到影响的表项进行改变。路由查找结果缓存表模拟通用处理器中高速缓冲存储器结构,也具有标志位、标签(tag)以及缓存结果等内容。根据表项组织方式的不同,也分为直接相联、多路组相联等形式;同时由于软件的灵活性,还能在多路组相联缓存表中较为轻松地实现“最近最少使用”(Least Recently Used,LRU)等效果较好但难于用硬件实现的替换策略。网络处理器通常提供了针对网络应用进行了优化的指令集,诸如位操作、表操作等特殊指令可以使本发明高效地在网络处理器中实现。
本发明的特征在于,该方法在所述网络处理器中依次按照以下步骤执行:
步骤0:初始化
步骤0.1:在所述网络处理器的片上高速存储器内建立并维护一个路由查找结果缓存表,该路由查找结果缓存表以组为基本单位,每个组内含有若干表项,各组含有的表项数目相等,每个表项都与一个目的IP地址相对应;所述每个表项含有一个与目的IP地址对应的下一跳IP地址所在的端口号,即该目的IP地址的路由查找结果,用于表示表项是否有效的标志位,以及用于确定表项是否与接收到的目的IP地址匹配的标签信息D’;所述端口号的位宽由该网络处理器所支持的下一跳IP地址的个数决定;所述端口号、标志位以及标签信息在表项中的位置由编程人员自由设定,一旦设定后,在所有的表项中都是统一的;
步骤0.2:在所述网络处理器的片外低速存储器内建立用于完成路由查找的数据结构,比如,一种实现方法是在所述片外低速存储器内为路由表建立一个trie树,当路由查找结果缓存表中没有任何表项匹配的时候,就使用该trie树,进行完整的路由查找,并返回查找的结果;
步骤1:对所述网络处理器收到的目的IP地址进行哈希运算,得到要进行匹配操作的路由查找结果缓存表的组的索引号,也即该被索引组的第一个表项在片上高速存储器中的地址,一种可能的哈希运算是将所述目的IP地址中的低位部分字段不加变化地直接提取出来,作为索引号的一部分,然后对所述目的IP地址中的其他字段进行诸如异或等的操作后,将生成的结果作为索引号的其他部分;
步骤2:读取所述被索引组中的第一个表项,将表项的内容保存入寄存器R;
步骤3:检查所述寄存器R中的表项内容,确定该表项的标志位是否有效,如果无效,则执行步骤4,否则,跳转至步骤6;
步骤4:检查所述被索引组内是否所有表项都已经检查完毕,如果不是,则执行步骤5,否则,跳转至步骤10;
步骤5:读取所述被索引组中下一个未检查的表项,将表项的内容保存入寄存器R,跳转至步骤3;
步骤6:根据所述目的IP地址,计算得到标签D,如果采用的是步骤1中所述的哈希函数,由于IP地址中有部分字段被直接提取并用作索引号的一部分,那么路由查找结果缓存表表项中的标签信息D’只需要保存IP地址中除该字段以外的部分,标签D也由所述目的IP地址中未被直接提取用作索引号的部分构成;
步骤7:将步骤6中计算得到的标签D与所述寄存器R中所保存表项的标签信息D’进行比对,检查是否一致,如果一致,称该寄存器R中的表项为匹配表项,执行步骤8,否则,跳转至步骤4;
步骤8:如果路由查找结果缓存表的每个组内只有一条表项,或者匹配表项是路由查找结果缓存表中该组的第一条表项,则组内表项顺序不需要调整,执行步骤14;否则,执行步骤9;
步骤9:将路由查找结果缓存表中该组内该匹配表项之前的所有表项顺次向后移动一个位置,则该匹配表项所在的位置被原来位于该匹配表项之前的那个表项所覆盖,然后将该组内的第一条表项用该匹配表项的内容的取代,跳转至步骤14;
步骤10:对片外低速存储器中保存的路由表进行完整的路由查找,得到查找的结果,即与下一跳IP地址对应的端口号;
步骤11:如果路由查找结果缓存表的每个组内只有一条表项,跳转至步骤13;否则,执行步骤12;
步骤12:将路由查找结果缓存表中该组内所有的表项顺次向后移动一个位置,删除最后一条表项;
步骤13:将步骤10返回的路由查找结果作为新表项的端口号,将步骤6中计算得到的标签D作为新表项的标签信息D’,将该新表项的标志位设置为有效,然后将该新表项作为路由查找结果缓存表中被索引组内的第一条表项写回;
步骤14:向应用程序返回路由查找结果。
采用本发明的优势在于,能够极大地减少由路由查找而引发的片外低速存储器的访问次数,除了提高路由查找的效率外,还减少了对宝贵的存储器带宽的占用,有利于扩展其他应用。表1显示了直接相联路由查找结果缓存表在不同大小下面的缺失率。两个流量从真实的网络链路上截取,其中BWY为OC3(155Mbps)级别,MRA为OC12(622Mbps)级别。从中可以看到,使用一个比较小的缓存表,就可以使路由查找运算的次数大大减少,比如,对于OC3级别的链路,一个4KB的缓存表就可以使片外低速存储器的访问次数降低到十分之一以下,而对于OC12级别的链路,一个8KB的缓存表可以使片外低速存储器的访问次数减少到五分之一左右。
表1直接相联路由查找结果缓存表的缺失率(%)
流量名称 | 路由查找结果缓存表大小 | ||||
1KB | 2KB | 4KB | 8KB | 16KB | |
BWY | 24.50 | 17.45 | 9.7 | 4.70 | 2.51 |
MRA | 44.45 | 37.17 | 29.70 | 22.23 | 15.27 |
附图说明
图1一种典型的网络处理器存储器组织结构。
图2具有1024个组的2路组相联路由查找结果缓存表及其查找算法的基本过程框图。
图3一种可能的路由查找结果缓存表表项构成方式。
图4使用路由查找结果缓存表的流程图。
图5一种可能的哈希函数计算以及标签D的构成方法。
具体实施方式
图1是一种典型的网络处理器架构,该图中重点显示了其存储器组织结构,即本发明的应用背景。不同网络处理器,其存储器组织方式可能会略有不同,但是整个存储空间均由片上高速存储器和片外低速存储器构成。前者一般由SRAM器件构成,容量较小;后者则容量较大,一般由DRAM构成,在一些网络处理器中也可以包括SRAM器件。通用处理器中虽然也存在片上高速存储器,但是不提供独立的地址空间,所有数据的维护和移动均由硬件完成,完全不受程序员的控制,因此称为层次式存储器结构。而网络处理器中通常采用的是并列式存储器结构,即片上高速存储器与片外低速存储器的地位完全一样,不仅构成地址空间,且不受硬件的控制,对程序员完全可见,其数据的存储和移动完全由程序员来控制。
本发明将片上高速存储器的一部分划分出来,由软件来维护一个路由查找结果缓存表,同时在片外低速存储器中用一些简单高效但有可能耗用较多空间的算法建立路由表。比如,可以采用P.Gupta等人在文献[1]中设计的24-8两级表的方法,这种方法需要很大的存储空间来维护路由表,但每个目的IP地址最多需要两次路由表的访问,大多数情况下仅需一次路由表的访问就可以得到路由查找的结果。路由查找缓存表的每个表项记录一个目的IP地址的路由查找结果。路由查找结果缓存表的组织结构以组为单位,每个组内可能含有若干表项,各组含有的表项数相等。与高速缓冲存储器中的概念相对应,我们将每组内只含有一个表项的称为直接相联,每组内含2个表项的称为2路组相联,依此类推。为了存储管理的方便,组内含有的表项数为2的幂次。
目的IP地址有32位,而片上高速存储器通常只有十几KB,因此路由查找结果缓存表内含有的表项总数远远少于实际所需的,即232个表项。图2显示了一个具有1024个组的2路组相联路由查找结果缓存表及其查找过程的基本框图。假如每个表项需要4个字节,那么该路由查找结果缓存表2-2就需要占用片上高速存储器2-1中8KB的存储空间。当一个目的IP地址收到时,使用该32位的数据进行一次哈希运算,得到一个10位的索引号,然后就可以使用该索引号检索到路由查找结果缓存表中对应的组。假设该组为图2中的组2-I,包含两个表项2-I-1和2-I-2。对这两个表项进行检查,如果发现匹配,就将该表项中保存的查找结果返回。如果两个表项均未匹配,则引发一个缺失。此时,就会完整地使用路由查找算法,在片外低速存储器中保存的路由表中检索到结果。该结果除了返回给应用程序外,还会写回到路由查找结果缓存表,供后来接收到的IP地址使用。
在实际使用的网络中,路由的变更是比较频繁的。路由器会接收到大量路由刷新消息,并由其控制平面将这些消息综合分析后,把最终的修改通知路由表和路由查找结果缓存表。因此,原来有效的查找结果可能会在某次路由刷新后不再有效。因此,路由查找结果缓存表的每个表项中需要一个标志位,用来表示该表项是否有效。尽管路由查找的结果最终表现为IP地址(称为下一跳IP地址),但由于同一个路由器所连接的不同主机不可能太多,因此可以将所连接主机的IP地址简单地映射为一个端口号。另外,由于会出现若干个不同的目的IP地址经过哈希以后映射到同一个表项的情况。为了区分,每个表项中除了记录作为路由查找结果的端口号外,还需要保存IP地址的信息,称为标签,用D’表示。
在实际使用的时候,标志位、标签D’和端口号这三部分在表项中的位置是可以任意设定的。图3显示了一种可能的表项构成方式。由于片上高速存储器通常按照字(32位)组织,其与处理单元内的寄存器的通信也以字为单位,为了节省访问到必要信息的时间开销,可以将每个表项的大小限制为一个字。每个表项的最高位为标志位(标记为V),当为“1”时有效。表项的低7位作为端口号,这样该网络处理器可以支持128个不同的下一跳IP地址。剩下的空间即可用来保存标签信息。
在图3的例子中,由于标志位和端口号已经占用了部分比特,并非所有的目的IP地址字段都可以保存在表项内,因此在目的IP地址进行哈希的过程,需要有一定数量的比特位保持不变,以索引的形式反映出来。与此同时,路由查找结果缓存表至少要维持一定数量的组,才能保证目的IP地址信息不丢失。以图3为例,共有8位被占用,那么目的IP地址中应该至少有8位保持不变,用来作为索引的一部分。而路由查找结果缓存表也至少需要维持28=256个组。此时目的IP地址中剩下的24位,就可以用来与保存在路由查找结果缓存表表项中的标签进行比较,来确定是否匹配。为了区别,可以将进行路由查找结果缓存表检索时,目的IP地址用来与表项中标签进行比对的部分称为标签D’。
多路组相联结构的路由查找结果缓存表由于利用了不同数据包的目的IP地址之间的空间局部性,其命中率较直接相联方式为高。网络处理器中通常是没有并行比较机制的,因此组内表项的比较往往需要逐个进行,直到发现匹配表项或所有的表项都已耗尽为止。假如第一个表项就发生匹配,那么此时软件的开销最低。实验表明,刚刚出现过的目的IP地址最有可能再次出现,而最久未出现的IP地址则最不可能再次出现。因此,路由查找结果缓存表的替换策略以LRU(Least Recently Used)为最优。该替换策略在路由查找结果缓存表中一种可能的实现为:每次发生匹配时,假如匹配表项是该组的第一个表项,那么组内表项顺序不需要调整;否则的话,将位于该匹配表项之前的所有表项顺次向后移动一个位置,然后将匹配表项写为该组的第一个表项,这样就可以使得第一个表项的内容是最近刚出现的目的IP地址,而最后一个表项是最久未出现的目的IP地址;当发生缺失时,最后一个表项被驱逐出该组,其他表项顺次向后移动一个位置,然后将新返回的结果写为该组的第一个表项,这样,最久未出现的目的IP地址就被替换了。
图4显示了使用路由查找结果缓存表进行检索的流程图,其具体的步骤如下:
1、对接收到的目的IP地址进行哈希运算,得到路由查找结果缓存表中的组的索引号,也就是该被索引组中第一个表项的位置。4-1
2、读取该表项的内容。4-2
3、根据该表项的标志位,确定表项是否有效;如果无效,则继续,否则,跳转至步骤6。4-3
4、检查该被索引组内是否所有表项都已经检查完毕;如果不是,则继续,否则,跳转至步骤10。4-4
5、移动到下一个未检查的表项,跳转至步骤2。4-5
6、根据目的IP地址,计算得到标签D。4-6
7、将标签D与表项内保存的标签D’进行比对,检查是否一致;如果一致,则继续,否则,跳转至步骤4。4-7
8、根据替换策略,检查是否需要对该被索引组内表项的顺序进行调整;如果需要,则继续,否则,跳转至步骤14。4-8
9、根据替换策略,将路由查找结果缓存表中该组内该匹配表项之前的所有表项顺次向后移动一个位置,则该匹配表项所在的位置被原来位于该匹配表项之前的那个表项所覆盖,然后将该组内的第一条表项用该匹配表项的内容的取代,跳转至步骤14。4-9
10、对片外低速存储器中保存的路由表进行完整的路由查找,得到查找的结果,即与下一跳IP地址对应的端口号。4-10
11、确定组内是否有多条表项;如果是,则继续,否则,跳转至步骤13。4-11
12、根据LRU的替换策略,将组内表项顺次下移,删除最后一个表项。4-12
13、将查找结果以及标签D组成的新表项,作为组内的第一条表项写回。4-13
14、返回路由查找结果。4-14
哈希函数的选择是一个比较关键的问题。这是因为哈希函数决定了目的IP地址在缓存表中的分布,并且每个数据包都要经过这样一次计算。该操作位于关键路径上,需要选择简单高效的算法,使得一方面能使从目的IP地址到索引号的映射足够均匀,从而减少冲突的概率,降低路由查找操作发生的频率,另一方面又能通过简单的几条指令就可以获得索引号,缩短处理所需的时间。对于目的IP地址在哈希变换中保持不变的部分,应该选择那些被置为“1”和“0”的概率差不多相等的字段。索引号中并非由目的IP地址中的字段直接得到的部分,则可以由整个目的IP地址或者其中的某一部分经过运算得到。由于本发明中所使用的哈希函数完全由软件来实现,因此可以根据实际的流量来进行调整,以使缓存表的命中率达到最大。
图5显示了一种可能的哈希函数计算方法以及标签的构成。具体来说:
片上高速存储器5-1中保存了一个具有1024个组的2路组相联路由查找结果缓存表5-2。该表的表项长度为32位,并具有如图3所示的构成方式。假设网络处理器以字(32位)为单位进行寻址,并且该路由查找结果缓存表的起始地址保存一个称为基地址5-5的寄存器中。
由于该路由查找结果缓存表具有1024个组,因此,其索引号5-4需要有10位,记为Index[9..0]。由于每个路由查找结果缓存表表项中的标签仅有24位,因此,目的IP地址5-3中至少要有8位保持不变,并作为索引号的一部分。在本例中,目的IP地址5-3的第15到第8位保持不变(即图5中的DIP[15..8]),作为索引号5-4的低位部分(即Index[7..0]);索引号5-4的高位部分(即Index[9..8])由DIP[19..18]和DIP[17..16]经过按位异或5-6产生。
由于路由查找结果缓存表的每个组包含两个表项,而网络处理器又按照字来寻址,因此,索引号5-4必须乘以2(乘法操作5-8和操作数5-7)以后才能得到被索引组相对于路由查找结果缓存表起始地址的偏移量。然后将该偏移量与基地址5-5相加(加法操作5-13),才能得到被索引组的地址。在图5中,假设被索引到的组为组5-9。
标签D,即5-10由除DIP[15..8]以外的其他比特,即DIP[31..16]和DIP[7..0]连接起来构成。
假如组5-9中的表项1,即5-9-1有效,标签D,即5-10,将与该表项中的标签D’进行比较(比较操作5-11)。假如表项1,即5-9-1,无效或者比较结果不同(称为未匹配),那么将检查表项2,即5-9-2;如果表项2,即5-9-2有效,那么标签D,即5-10将继续与该表项中的标签D’进行比较(比较操作5-12)。
针对网络应用的特点对指令集进行优化是网络处理器设计中经常采用的技术。网络处理中频繁出现的操作被提取出来,由专用的硬件或者指令来完成,以提高代码执行的效率。对于本发明来说,一些在网络处理器中被广泛采用的特殊指令可以用来缩短程序的长度,节省处理的时间。比如,对位操作的支持就可以大大简化算法中哈希函数的运算和标签的生成。这类指令的例子包括Intel IXP1200中的LD_FIELD和LD_FIELD_W_CLR指令,可以将字节加载到寄存器的指定字段中。还有一类指令,可以称为表操作,除了可以指定基地址和偏移量外,还可以指定要读入字段的起始地址和字的个数;然后,片上高速存储器的控制器就能以突发的方式将指定字段读出,并写入处理单元中编号相连的寄存器。
以下是几条经常会被网络处理器采用的优化指令:
BLOAD Rdest,Rsrc,@sst_b,@length,@dst_b;
该指令是一条字段提取指令,将源寄存器Rsrc中从第@sst_b位开始的@length个比特,写入目的寄存器Rdest中从第@dst_b位开始的部分。由于寄存器一般只有32位,因此用来表示字段的起始位置和长度的数字只需要5位。为了区别这些与字段相关的数字,我们在它们前面加上@,而一般的操作数,则没有这个@符号。
BCMP Ra,Rb,@st_b,@length;
这是一条与位操作相关的算术运算指令,将寄存器Ra和Rb中从第@st_b位开始的@length个比特进行比较,并将结果写入特殊用途寄存器中,用来进行跳转等操作。
TABLE_SEARCH Rresult,Rbase,Rindex,@length;
这是一条表相关指令,将地址空间中从位置Rbase+Rindex开始的@length个字,写入到以Rresult开始的@length个连续的寄存器中。
TABLE_MODIFY Rsrc,Rbase,Rindex,@length;
该指令与上一条指令相反,将从Rsrc开始的@length个连续的寄存器中的内容,写入到地址空间中从位置Rbase+Rindex开始的@length个字。
以下显示了本发明用针对网络处理器优化后的指令编写的代码;该程序是采用图5中的具有1024个组的2路组相联路由查找结果缓存表及其哈希算法所进行的结果检索和缓存表维护算法;当程序开始执行时,路由查找结果缓存表的基地址、以及目的IP地址已经分别保存Rbase和RDIP中了。
/*路由查找结果缓存表的查找与维护*/
/*将保存在寄存器RDIP中目的IP地址的第15到第8位,即DIP[15..8]写入寄存器Rindex,作为索引的低8位,即Index[7..0]*/
BLOAD Rindex,RDIP,@0x0F,@0x08,@0x07;
/*将目的IP地址右移两位保存在寄存器R1中,使DIP[19..18]与DIP[17..16]对齐*/R_SHIFT R1,RDIP,@0x02;
/*进行异或操作*/
XOR R1,RDIP,R1;
/*将R1中的第17到第16位,即DIP[19..18]与DIP[17..16]异或的结果写入R1从第9位开始的地方*/
BLOAD R1,R1,@0x11,@0x02,@0x09;
/*将R1与Rindex合并,获得最终的索引号*/
AND Rindex,Rindex,R1;
/*将索引号左移3位,获得偏移量*/
L_SHIFT Rindex,Rindex,@0x03;
/*将DIP[31..16]写入寄存器Rtag的第30到第15位*/
BLOAD Rtag,RDIP,@0x1F,@0x10,@0x1E;
/*将DIP[7..0]写入寄存器R1的第14到第7位*/
BLOAD R1,RDIP,@0x07,@0x08,@0x0E;
/*将两部分合并,形成标签D*/
OR Rtag,Rtag,R1;
/*将标志位置为有效*/
AND Rtag,Rtag,0x80000000;
/*以Rbase的内容作为基地址,将Rindex中的内容作为偏移量,将片上高速存储器中的两个字读入寄存器Rresult及其相邻的寄存器,记为Rresult2*/
TABLE_SEARCH Rresult,Rbase,Rindex,@0x02;
/*将返回结果中的标志位与标签D’部分,即第31到第7位,与Rtag进行比较*/
BCMP Rtag,Rresult,@0x1F,@0x19;
/*如果匹配的话,则跳转到report开头的语句*/
EQ report;
/*否则,检查第二个表项*/
BCMP Rtag,Rresult2,@0x1F,@0x19;
/*如果匹配,则跳转到change开头的语句*/
EQ exchange;
/*否则,产生缺失,进行路由查找操作,返回的结果写在寄存器Rport中*/
perform off-chip route table search;
/*表项下移*/
AND Rresult2,Rresult,0x00000000;
/*写入新的内容*/
AND Rresult,Rtag,Rport;
/*将调整过的表项写回缓存表*/
TABLE_MODIFY Rresult,Rbase,Rindex,@0x02;
/*返回*/
JUMP done;
exchange:
/*交换Rresult和Rresult2的内容*/
AND R1,Rresult,0x00000000;
AND Rresult,Rresult2,0x00000000;
AND Rresult2,R1,0x00000000;
/*将交换过的表项写回缓存表*/
TABLE_MODIFY Rresult,Rbase,Rindex,@0x02;
report:
/*将缓存的结果,即Rresult的低7位写入寄存器Rport*/
AND Rport,Rresult,0x0000007F;
/*返回*/
JUMP done。
Claims (1)
1.基于网络处理器的路由查找结果缓存方法,其特征在于,该方法在所述网络处理器中依次按照以下步骤执行:
步骤0:初始化
步骤0.1:在所述网络处理器的片上高速存储器内建立并维护一个路由查找结果缓存表,该路由查找结果缓存表以组为基本单位,每个组内含有若干表项,各组含有的表项数目相等,每个表项都与一个目的IP地址相对应;所述每个表项含有一个与目的IP地址对应的下一跳IP地址所在的端口号,即该目的IP地址的路由查找结果,用于表示表项是否有效的标志位,以及用于确定表项是否与接收到的目的IP地址匹配的标签信息D’;所述端口号的位宽由该网络处理器所支持的下一跳IP地址的个数决定;所述端口号、标志位以及标签信息在表项中的位置由编程人员自由设定,一旦设定后,在所有的表项中都是统一的;
步骤0.2:在所述网络处理器的片外低速存储器内建立用于完成路由查找的数据结构,比如,一种实现方法是在所述片外低速存储器内为路由表建立一个trie树,当路由查找结果缓存表中没有任何表项匹配的时候,就使用该trie树,进行完整的路由查找,并返回查找的结果;
步骤1:对所述网络处理器收到的目的IP地址进行哈希运算,得到要进行匹配操作的路由查找结果缓存表的组的索引号,也即该被索引组的第一个表项在片上高速存储器中的地址,一种可能的哈希运算是将所述目的IP地址中的低位部分字段不加变化地直接提取出来,作为索引号的一部分,然后对所述目的IP地址中的其他字段进行诸如异或等的操作后,将生成的结果作为索引号的其他部分;
步骤2:读取所述被索引组中的第一个表项,将表项的内容保存入寄存器R;
步骤3:检查所述寄存器R中的表项内容,确定该表项的标志位是否有效,如果无效,则执行步骤4,否则,跳转至步骤6;
步骤4:检查所述被索引组内是否所有表项都已经检查完毕,如果不是,则执行步骤5,否则,跳转至步骤10;
步骤5:读取所述被索引组中下一个未检查的表项,将表项的内容保存入寄存器R,跳转至步骤3;
步骤6:根据所述目的IP地址,计算得到标签D,如果采用的是步骤1中所述的哈希函数,由于IP地址中有部分字段被直接提取并用作索引号的一部分,那么路由查找结果缓存表表项中的标签信息D’只需要保存IP地址中除该字段以外的部分,标签D也由所述目的IP地址中未被直接提取用作索引号的部分构成;
步骤7:将步骤6中计算得到的标签D与所述寄存器R中所保存表项的标签信息D,进行比对,检查是否一致,如果一致,称该寄存器R中的表项为匹配表项,执行步骤8,否则,跳转至步骤4;
步骤8:如果路由查找结果缓存表的每个组内只有一条表项,或者匹配表项是路由查找结果缓存表中该组的第一条表项,则组内表项顺序不需要调整,执行步骤14;否则,执行步骤9;
步骤9:将路由查找结果缓存表中该组内该匹配表项之前的所有表项顺次向后移动一个位置,则该匹配表项所在的位置被原来位于该匹配表项之前的那个表项所覆盖,然后将该组内的第一条表项用该匹配表项的内容的取代,跳转至步骤14;
步骤10:对片外低速存储器中保存的路由表进行完整的路由查找,得到查找的结果,即与下一跳IP地址对应的端口号;
步骤11:如果路由查找结果缓存表的每个组内只有一条表项,跳转至步骤13;否则,执行步骤12;
步骤12:将路由查找结果缓存表中该组内所有的表项顺次向后移动一个位置,删除最后一条表项;
步骤13:将步骤10返回的路由查找结果作为新表项的端口号,将步骤6中计算得到的标签D作为新表项的标签信息D’,将该新表项的标志位设置为有效,然后将该新表项作为路由查找结果缓存表中被索引组内的第一条表项写回;
步骤14:向应用程序返回路由查找结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100837011A CN100418331C (zh) | 2006-03-03 | 2006-06-02 | 基于网络处理器的路由查找结果缓存方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200610011423.9 | 2006-03-03 | ||
CN200610011423 | 2006-03-03 | ||
CNB2006100837011A CN100418331C (zh) | 2006-03-03 | 2006-06-02 | 基于网络处理器的路由查找结果缓存方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1863169A true CN1863169A (zh) | 2006-11-15 |
CN100418331C CN100418331C (zh) | 2008-09-10 |
Family
ID=37390498
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100837011A Expired - Fee Related CN100418331C (zh) | 2006-03-03 | 2006-06-02 | 基于网络处理器的路由查找结果缓存方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100418331C (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101827137A (zh) * | 2010-04-13 | 2010-09-08 | 西安邮电学院 | 一种基于哈希表和扩展存储器的高性能IPv6地址查找方法 |
CN101883055A (zh) * | 2010-07-19 | 2010-11-10 | 福建星网锐捷网络有限公司 | 路由转发表容量扩展实现方法、装置及交换设备 |
CN101895479A (zh) * | 2010-08-17 | 2010-11-24 | 上海交通大学 | 提高路由查找速度的系统 |
CN101282296B (zh) * | 2008-05-27 | 2010-12-08 | 华为技术有限公司 | 获取下一跳路由的方法和装置 |
CN101335737B (zh) * | 2008-08-05 | 2011-09-21 | 中兴通讯股份有限公司 | 一种网络处理器及其数据处理方法 |
CN101350788B (zh) * | 2008-08-25 | 2011-10-26 | 中兴通讯股份有限公司 | 一种网络处理器内外混合查表方法 |
CN101556610B (zh) * | 2009-05-04 | 2011-12-21 | 中兴通讯股份有限公司 | 网络处理器使用的建表和查表方法 |
WO2013024402A1 (en) * | 2011-08-12 | 2013-02-21 | International Business Machines Corporation | Optimized virtual function translation entry memory caching |
US8954704B2 (en) | 2011-08-12 | 2015-02-10 | International Business Machines Corporation | Dynamic network adapter memory resizing and bounding for virtual function translation entry storage |
CN105357126A (zh) * | 2015-11-12 | 2016-02-24 | 国电南瑞科技股份有限公司 | 应用于prp/hsr报文丢弃算法的查找表优化方法 |
CN105939263A (zh) * | 2015-08-12 | 2016-09-14 | 杭州迪普科技有限公司 | 一种报文发送方法和装置 |
WO2016206490A1 (zh) * | 2015-06-26 | 2016-12-29 | 深圳市中兴微电子技术有限公司 | 一种用于提高表项访问带宽和原子性操作的装置及方法 |
WO2018006786A1 (zh) * | 2016-07-04 | 2018-01-11 | 新华三技术有限公司 | 转发表项访问 |
CN107729053A (zh) * | 2017-10-17 | 2018-02-23 | 安徽皖通邮电股份有限公司 | 一种实现高速缓存表的方法 |
CN107888513A (zh) * | 2017-10-23 | 2018-04-06 | 深圳市楠菲微电子有限公司 | 用于交换芯片的缓存方法及装置 |
CN115080478A (zh) * | 2022-06-09 | 2022-09-20 | 苏州大学 | 嵌入式平台显示系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1173531C (zh) * | 2003-01-17 | 2004-10-27 | 清华大学 | 同时支持路由查找、ip包分类、arp查找的方法及查找系统 |
US7606251B2 (en) * | 2004-08-05 | 2009-10-20 | International Business Machines Corporation | Method, system, and computer program product for reducing network copies by port-based routing to application-specific buffers |
US20060090034A1 (en) * | 2004-10-22 | 2006-04-27 | Fujitsu Limited | System and method for providing a way memoization in a processing environment |
-
2006
- 2006-06-02 CN CNB2006100837011A patent/CN100418331C/zh not_active Expired - Fee Related
Cited By (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101282296B (zh) * | 2008-05-27 | 2010-12-08 | 华为技术有限公司 | 获取下一跳路由的方法和装置 |
CN101335737B (zh) * | 2008-08-05 | 2011-09-21 | 中兴通讯股份有限公司 | 一种网络处理器及其数据处理方法 |
CN101350788B (zh) * | 2008-08-25 | 2011-10-26 | 中兴通讯股份有限公司 | 一种网络处理器内外混合查表方法 |
CN101556610B (zh) * | 2009-05-04 | 2011-12-21 | 中兴通讯股份有限公司 | 网络处理器使用的建表和查表方法 |
CN101827137A (zh) * | 2010-04-13 | 2010-09-08 | 西安邮电学院 | 一种基于哈希表和扩展存储器的高性能IPv6地址查找方法 |
CN101827137B (zh) * | 2010-04-13 | 2013-01-30 | 西安邮电学院 | 一种基于哈希表和扩展存储器的高性能IPv6地址查找方法 |
CN101883055A (zh) * | 2010-07-19 | 2010-11-10 | 福建星网锐捷网络有限公司 | 路由转发表容量扩展实现方法、装置及交换设备 |
CN101895479A (zh) * | 2010-08-17 | 2010-11-24 | 上海交通大学 | 提高路由查找速度的系统 |
WO2013024402A1 (en) * | 2011-08-12 | 2013-02-21 | International Business Machines Corporation | Optimized virtual function translation entry memory caching |
GB2507454A (en) * | 2011-08-12 | 2014-04-30 | Ibm | Optimized virtual function translation entry memory caching |
GB2507454B (en) * | 2011-08-12 | 2014-08-27 | Ibm | Optimized virtual function translation entry memory caching |
US8937940B2 (en) | 2011-08-12 | 2015-01-20 | International Business Machines Corporation | Optimized virtual function translation entry memory caching |
US8954704B2 (en) | 2011-08-12 | 2015-02-10 | International Business Machines Corporation | Dynamic network adapter memory resizing and bounding for virtual function translation entry storage |
US8959310B2 (en) | 2011-08-12 | 2015-02-17 | International Business Machines Corporation | Dynamic network adapter memory resizing and bounding for virtual function translation entry storage |
WO2016206490A1 (zh) * | 2015-06-26 | 2016-12-29 | 深圳市中兴微电子技术有限公司 | 一种用于提高表项访问带宽和原子性操作的装置及方法 |
CN106302374A (zh) * | 2015-06-26 | 2017-01-04 | 深圳市中兴微电子技术有限公司 | 一种用于提高表项访问带宽和原子性操作的装置及方法 |
US10545867B2 (en) | 2015-06-26 | 2020-01-28 | Sanechips Technology Co., Ltd. | Device and method for enhancing item access bandwidth and atomic operation |
CN105939263B (zh) * | 2015-08-12 | 2019-07-09 | 杭州迪普科技股份有限公司 | 一种报文发送方法和装置 |
CN105939263A (zh) * | 2015-08-12 | 2016-09-14 | 杭州迪普科技有限公司 | 一种报文发送方法和装置 |
CN105357126A (zh) * | 2015-11-12 | 2016-02-24 | 国电南瑞科技股份有限公司 | 应用于prp/hsr报文丢弃算法的查找表优化方法 |
CN107579916A (zh) * | 2016-07-04 | 2018-01-12 | 新华三技术有限公司 | 转发表项访问方法及装置 |
WO2018006786A1 (zh) * | 2016-07-04 | 2018-01-11 | 新华三技术有限公司 | 转发表项访问 |
CN107579916B (zh) * | 2016-07-04 | 2021-03-23 | 新华三技术有限公司 | 转发表项访问方法及装置 |
US11038797B2 (en) | 2016-07-04 | 2021-06-15 | New H3C Technologies Co., Ltd. | Forwarding table entry access |
CN107729053A (zh) * | 2017-10-17 | 2018-02-23 | 安徽皖通邮电股份有限公司 | 一种实现高速缓存表的方法 |
CN107729053B (zh) * | 2017-10-17 | 2020-11-27 | 安徽皖通邮电股份有限公司 | 一种实现高速缓存表的方法 |
CN107888513A (zh) * | 2017-10-23 | 2018-04-06 | 深圳市楠菲微电子有限公司 | 用于交换芯片的缓存方法及装置 |
CN115080478A (zh) * | 2022-06-09 | 2022-09-20 | 苏州大学 | 嵌入式平台显示系统 |
CN115080478B (zh) * | 2022-06-09 | 2023-10-27 | 苏州大学 | 嵌入式平台显示系统 |
Also Published As
Publication number | Publication date |
---|---|
CN100418331C (zh) | 2008-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1863169A (zh) | 基于网络处理器的路由查找结果缓存方法 | |
CN1195279C (zh) | 对软件管理树进行模式范围比较的方法、装置和系统 | |
US10455063B2 (en) | Packet flow classification | |
JP4091604B2 (ja) | ビットストリングの照合方法および装置 | |
US10511532B2 (en) | Algorithmic longest prefix matching in programmable switch | |
US7782853B2 (en) | Apparatus and method of using fully configurable memory, multi-stage pipeline logic and an embedded processor to implement multi-bit trie algorithmic network search engine | |
US8750144B1 (en) | System and method for reducing required memory updates | |
Bando et al. | Flashtrie: Hash-based prefix-compressed trie for IP route lookup beyond 100Gbps | |
CN1279729C (zh) | 基于tcam的分布式并行ip路由查找方法 | |
CN1929451A (zh) | 一种解决Hash冲突的方法及装置 | |
JP2005198285A (ja) | ハードウエアにおけるipルックアップソリューションを効率的に実現するためにハッシングを使用する装置及び方法 | |
CN110908931B (zh) | Tlb模块的更新方法 | |
CN1688140A (zh) | 基于网络处理器的高速多维报文分类算法的设计和实现 | |
Han et al. | A novel routing algorithm for IoT cloud based on hash offset tree | |
CN116860665A (zh) | 由处理器执行的地址翻译方法及相关产品 | |
Jiang et al. | Parallel IP lookup using multiple SRAM-based pipelines | |
CN108762810A (zh) | 一种基于并行微引擎的网络报文头处理器 | |
CN1866918A (zh) | 静态多接口范围匹配表的管理维护方法 | |
Shi et al. | A triplet-based computer architecture supporting parallel object computing | |
CN103150196B (zh) | 动态二进制翻译中代码Cache管理方法 | |
CN1809019A (zh) | 一种基于自适应缓存机制实现快速网络报文分发的方法 | |
Chang et al. | Dynamic multiway segment tree for IP lookups and the fast pipelined search engine | |
CN104301227B (zh) | 基于tcam的高速低功耗ip路由表查找方法 | |
Jiang et al. | Multi-terabit IP lookup using parallel bidirectional pipelines | |
Li et al. | IP address lookup using GPU |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080910 Termination date: 20160602 |