CN102340445B - 一种报文转发流程中的表项处理方法和装置 - Google Patents
一种报文转发流程中的表项处理方法和装置 Download PDFInfo
- Publication number
- CN102340445B CN102340445B CN201010238993.8A CN201010238993A CN102340445B CN 102340445 B CN102340445 B CN 102340445B CN 201010238993 A CN201010238993 A CN 201010238993A CN 102340445 B CN102340445 B CN 102340445B
- Authority
- CN
- China
- Prior art keywords
- bank
- forward process
- process table
- assigned
- numbering
- 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.)
- Expired - Fee Related
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种报文转发流程中的表项处理方法和装置,报文转发流程中需要查询的各转发处理表被分配不同的存储体(BANK),各转发处理表的表项分别存储在对应转发处理表被分配的BANK中,且每个表项的索引与该表项所在BANK的编号相关联;在对接收到的报文进行转发处理过程中,查询转发处理表时,将条件索引转换为与该转发处理表所在BANK的编号相关联的索引后,利用转换后的索引查询对应的表项。本发明能够更加简单方便地提高NP的转发处理能力,避免BANK冲突。
Description
技术领域
本发明涉及网络通信技术领域,特别涉及一种报文转发流程中的表项处理方法和装置。
背景技术
在路由器和交换机中,数据包的转发处理存在大量的查表操作,通常查表快慢是影响转发性能是否达到线速的关键因素,所以很多高端产品采用了高速的静态随机存储器(SRAM)来提升查表性能。如果要支持很大的规格表项时,需要配置大量的SRAM,但由于SRAM价格非常昂贵,会导致成本很高。另外,SRAM本身芯片容量不大,实际上也很难支持大的规格。
为了降低成本,一些网络处理器(NP)支持配置主流的双倍速率即存储器(DDR2/DDR3 RAM)来保存待查询的表项,一个DDR2/DDR3 RAM通常分为多个逻辑的存储体(BANK),通常有8个BANK,由于访问一次BANK需要进行一次充电,因此,如果转发处理中存在两个查询的表项位于同一个BANK上,则两次查询之间需要等待一个充电的时间,我们称之为BANK冲突。对于一个万兆流量的数据流,出现BANK冲突就意味着无法达到线速了。
为了避免BANK冲突,现有技术中,对于转发速率要求高的场合会提供一些特殊版本来满足高性能的需求,通过优化拆减部分特性,减少查表次数来减少BANK冲突使得NP的处理能力达到线速处理能力。例如:将报文转发处理流程中需要查询的各表整合成一个流表,这样只查一个表就可以实现转发。
然而,多开发和维护一个版本会导致工作量的成倍增加,实现较复杂,也会带来版本管理的和开发成本的上升,如果这样需求场合过多的话,这个成本将无法承受。另外,建立流表会导致无法快速响应路由变化,流表的老化和更新也都是问题。
发明内容
本发明提供了一种报文转发流程中的表项处理方法和装置,从而更加简单方便地提高NP的转发处理能力,避免BANK冲突。
一种报文转发流程中的表项处理方法,报文转发流程中需要查询的各转发处理表被分配不同的存储体BANK,各转发处理表的表项分别存储在对应转发处理表被分配的BANK中,且每个表项的索引与该表项所在BANK的编号相关联;该方法包括:
在对接收到的报文进行转发处理过程中,查询转发处理表时,将条件索引转换为与该转发处理表所在BANK的编号相关联的索引后,利用转换后的索引查询对应的表项。
一种报文转发流程中的表项处理装置,该装置包括:存储体BANK分配单元、表项存储单元和表项查询单元;
所述BANK分配单元,用于为报文转发流程中需要查询的各转发处理表分配不同的BANK;
所述表项存储单元,用于将各转发处理表的表项分别存储在对应转发处理表被分配的BANK中,且每个表项的索引与该表项所在BANK的编号相关联;
所述表项查询单元,用于在对接收到的报文进行转发处理过程中,查询转发处理表时,将条件索引转换为与该转发处理表所在BANK的编号相关联的索引后,利用转换后的索引查询对应的表项。
由以上技术方案可以看出,在本发明中通过为各转发处理表分配不同的BANK,相应地,各转发处理表的表项也分别存储在不同的BANK中,使得在对接收到的报文进行转发处理时,对各转发处理表的表项查询将分别命中不同的BANK,从而避免BANK冲突,提高NP的转发处理能力。显然,这种方式无需采用将各转发处理表整合成流表等开发特殊版本的方式,对报文的转发处理流程不会带来影响,实现更加简单方便。
附图说明
图1为本发明实施例提供的方法流程图;
图2为本发明实施例提供的装置结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
首先对NP进行报文转发处理时的相关特性进行简单描述。由于NP在进行查表时,通常是没有规律性的,查询结果的内存基本是跳跃的,这样查不同表的结果就可能位于同一BANK上从而导致BANK冲突。通常一个基本的报文转发业务需要查找5、6个表,这样出现冲突的概率就比较高了,表现为某些流能够达到线速,某些流不能达到线速的情况。
通常一个主流的报文转发业务包括:ACL过滤、反向路由检查和三层转发,需要查询接口表、ACL表、反向路由转发表、正向路由转发表、下一跳表和ARP表等,虽然查表方式和查表数量不同,但基本转发业务的查表数一般不会超过7个,如果报文上、下行处理是不同的NP完成,则一个NP串行查找的表项数会更少。
为了硬件管理方便,表项内容一般是按照4字节的整数倍进行组织,例如:4、8、16、32、4字节大小,表项内容一般不会超过32字节,也就是一个表项结果不会占用2个BANK。
通常各表都是直接索引的表或者通过直接索引进行保存的表,在本发明中将在报文转发流程中需要查询的各表统称为转发处理表。
本发明提供的方法主要包括:为报文转发流程中需要查询的各转发处理表分配不同的BANK,各转发处理表的表项分别存储在不同的BANK中,且每个表项的索引与该表项所在BANK的编号相关联;在对接收到的报文进行转发处理过程中,查询转发处理表时,将条件索引转换为与该转发处理表所在BANK的编号相关联的索引后,利用转换后的索引查询对应的表项。
本发明提供的上述方法实际上包括两个内容:其一是各转发处理表的表项存储过程;其二是在报文转发处理过程中对各转发处理表的表项查询过程。下面通过一个具体的实施例分别对这两种情况进行详细描述。
图1为本发明实施例提供的方法流程图,如图1所示,该方法包括以下步骤:
步骤101:为每个转发处理表分配不同的BANK,并记录各转发处理表所在BANK的编号。
如果BANK的数目大于报文转发流程中需要查询的转发处理表的数目,则一个转发处理表可以分配一个以上的BANK。通常,可以为具有较多表项的转发处理表分配较多的BANK。
可以为各转发处理表随机分配不同的BANK,也可以按照一定的策略分配不同的BANK。在此以BANK的数目为8为例,假设BANK的编号为0~7:如果转发处理表的数目m为2<m≤4,则每个转发处理表可以分配2个BANK,为编号为M的转发处理表分配编号为M和编号为4+M的BANK。例如,如果存在3个转发处理表,则可以将编号为0和4的BANK分配给编号为0的转发处理表,将编号为1和5的BANK分配给编号为1的转发处理表,等等。
如果转发处理表的数目m为2,则为每个转发处理表可以分配4个BANK,其中一个转发处理表分配奇数编号的BANK,另一个转发处理表分配偶数编号的BANK。
如果转发处理表的数目m为4<m<8,则可以为其中8-m个转发处理表分别分配2个BANK,其余转发处理表分别分配1个BANK。
对于在一个报文转发流程中需要查询n次的转发处理表,可以理解为n个转发处理表,分别分配不同的BANK。
步骤102:在存储表项至转发处理表时,将要存储的表项在转发处理表中的编号进行转换处理,该转换处理为:将要存储的表项在该转发处理表中的编号进行移位处理后结合该转发处理表所在BANK的编号得到的值作为该表项的索引,以使各表项的索引能够标识出该表项所在的BANK。
一个转发处理表中各表项通常采用顺次编号的方式,在此将要存储的表项在转发处理表中的编号称为原始索引。对表项的原始索引进行的移位处理可以根据表项中结果区的长度不同进行相应的处理,如下所示:
如果表项中结果区的长度为32字节,则一个表项占用一个BANK。这种情况下,如果该表项对应的转发处理表仅被分配一个BANK,则可以将该表项的原始索引左移3位后加上该表项所在BANK的编号作为该表项的索引进行存储。如果该表项对应的转发处理表以4个BANK的间隔被分配2个BANK,则可以将该表项的原始索引左移2位后加上该表项所在BANK的编号作为该表项的索引进行存储。如果该表项对应的转发处理表以2个BANK的间隔被分配4个BANK,则可以将该表项的原始索引左移1位后加上该表项所在BANK的编号作为该表项的索引进行存储。
如果表项中结果区的长度为16字节,则二个表项占用一个BANK。这种情况下,如果该表项对应的转发处理表仅被分配一个BANK,则可以将该表项的原始索引除最低1位以外的其他位左移3位后加上该表项所在BANK的编号左移1位后的值作为该表项的索引进行存储。如果该表项对应的转发处理表以4个BANK的间隔被分配2个BANK,则可以将该表项的原始索引除最低1位以外的其他位左移2位后加上该表项所在BANK的编号左移1位后的值作为该表项的索引进行存储。如果该表项对应的转发处理表以2个BANK的间隔被分配4个BANK,则可以将该表项的原始索引除最低1位以外的其他位左移1位后加上该表项所在BANK的编号左移1位后的值作为该表项的索引进行存储。
如果表项中结果区的长度为8字节,则四个表项占用一个BANK。这种情况下,如果该表项对应的转发处理表仅被分配一个BANK,则可以将该表项的原始索引除最低2位以外的其他位左移3位后加上该表项所在BANK的编号左移2位后的值作为该表项的索引进行存储。如果该表项对应的转发处理表以4个BANK的间隔被分配2个BANK,则可以将该表项的原始索引除最低2位以外的其他位左移2位后加上该表项所在BANK的编号左移2位后的值作为该表项的索引进行存储。如果该表项对应的转发处理表以2个BANK的间隔被分配4个BANK,则可以将该表项的原始索引除最低2位以外的其他位左移1位后加上该表项所在BANK的编号左移2位后的值作为该表项的索引进行存储。
如果表项中结果区的长度为4字节,则八个表项占用一个BANK。这种情况下,如果该表项对应的转发处理表仅被分配一个BANK,则可以将该表项的原始索引除最低3位以外的其他位左移3位后加上该表项所在BANK的编号左移3位后的值作为该表项的索引进行存储。如果该表项对应的转发处理表以4个BANK的间隔被分配2个BANK,则可以将该表项的原始索引除最低3位以外的其他位左移2位后加上该表项所在BANK的编号左移3位后的值作为该表项的索引进行存储。如果该表项对应的转发处理表以2个BANK的间隔被分配4个BANK,则可以将该表项的原始索引除最低2位以外的其他位左移3位后加上该表项所在BANK的编号左移3位后的值作为该表项的索引进行存储。
如果出现结果区长度大于32字节的表项,例如,结果区长度为64字节的表项,由于其占用2个BANK,需要将相邻的两个BANK分配给该表项对应的转发处理表,如果该表项对应的转发处理表仅被分配相邻的两个BANK,则可以将该表项的原始索引左移3位后加上被分配的其中一个BANK的编号。由于结果区长度大于32字节的情况较少,在此不再对这种情况详细描述。
步骤103:在对接收到的报文进行转发处理过程中,查询转发处理表时,将条件索引按照与步骤102中相同的转换处理方式,利用转换处理后得到的索引查询对应的表项。
在转发处理过程中,会依次查询多个转发处理表,在查询各转发处理表时,是利用条件索引查询转发处理表中与该条件索引匹配的表项。其中,有些转发处理表的条件索引为与报文相关的值,例如接口表的条件索引为接收报文的入接口值;有些转发处理表的条件索引为上一个转发处理表的查询结果,例如ACL的条件索引为接口表的查询结果,即接口表查询得到的表项结果区中的内容;下一跳表的条件索引为路由转发表的查询结果,即路由转发表查询得到的表项结果区中的内容。
由于表项在进行存储时,其索引值为原始索引值进行步骤102中的转换之后的值,因此,在利用条件索引在转发处理表中查找表项时,同样需要先将条件索引进行相同的转换后,再与相应转发处理表中的索引进行匹配。各转发处理表都存在对应的转换处理方式,在步骤102和步骤103中只需要采用与转发处理表对应的转换处理方式即可。
由于各转发处理表的表项存储在不同的BANK上,接收到报文后进行各转发处理表的查询时,也会命中不同的BANK,从而避免BANK冲突。
下面以带ACL和反向路由查找的基本IP转发为例,对上述方法进行实例说明。假设一次报文转发流程涉及到的转发处理表包括:接口表、ACL、路由转发表、下一跳表、ARP表。其中由于要进行反向路由查找,路由转发表需要查找两次,一次反向路由查找,一次正向路由查找,即相当于共存在6个转发处理表。
首先为各转发处理表分配不同的BANK,路由转发表涉及的表项较多,占用空间较大,分给路由转发表4个BANK,其中用于正向路由查找的和用于反向路由查找的分别2个BANK,其他转发处理表分别1个BANK。具体分配情况可以如表1所示。
表1
转发处理表 | 结果区大小 | 表项数 | 查找次数 | 分配BANK的编号 |
接口表 | 32字节 | 1K-8K | 1 | 1 |
ACL表 | 32字节 | 64K-256K | 1 | 3 |
路由转发表 | 16字节 | 1M-4M | 2 | 0,2,4,6 |
下一跳表 | 32字节 | 128K-512K | 1 | 5 |
ARP表 | 32字节 | 64K-512K | 1 | 7 |
对于接口表,在存储表项时,其表项的结果区大小为32字节,分配的BANK数为1,对原始索引的转换方式可以采用左移3位后加上BANK编号的方式,由于分配的BANK编号为1,实际上就是将原始索引的值乘以8再加1。具体如表2所示。
表2
原始索引值 | 转换后的索引值 |
0 | 1 |
1 | 9 |
2 | 17 |
3 | 25 |
4 | 33 |
N | N×8+1 |
对于ACL,在存储表项时,其表项的结果区大小为32字节,分配的BANK数为1,对原始索引的转换方式可以采用左移3位后加上BANK编号的方式,由于分配的BANK编号为3,实际上就是将原始索引的值乘以8再加3。具体如表3所示。
表3
原始索引值 | 转换后的索引值 |
0 | 3 |
1 | 11 |
2 | 19 |
3 | 27 |
4 | 35 |
N | N×8+3 |
对于路由转发表,在存储表项时,其表项的结果区大小为16字节,2个表项占用一个BANK,分配的BANK数为4,其中用于反向路由查询的路由转发表被分配2个BANK,用于正向路由查询的路由转发表被分配2个BANK。对于两种用途的路由转发表,对原始索引的转换方式分别可以采用将最低1位以外的其他位左移2位后加上BANK编号左移1位后的值的方式,表示为:((N&0xfffffffe)<<2)+(M<<1)+(N&1),其中,&表示与操作,<<表示左移操作,N为原始索引值,M为被分配的BANK编号。由于用于正向路由查询的路由转发表被分配的BANK编号为0和2,转换后的索引值具体如表4所示。反向路由查询的路由转发表被分配的BANK编号为4和6,转换后的索引值具体如表5所示。
表4
表5
对于下一跳表,在存储表项时,其表项的结果区大小为32字节,分配的BANK数为1,对原始索引的转换方式可以采用左移3位后加上BANK编号的方式,由于分配的BANK编号为5,实际上就是将原始索引的值乘以8再加5。具体如表6所示。
表6
原始索引值 | 转换后的索引值 |
0 | 5 |
1 | 13 |
2 | 21 |
3 | 29 |
4 | 37 |
N | N×8+5 |
对于ARP表,在存储表项时,其表项的结果区大小为32字节,分配的BANK数为1,对原始索引的转换方式可以采用左移3位后加上BANK编号的方式,由于分配的BANK编号为7,实际上就是将原始索引的值乘以8再加7。具体如表7所示。
表7
原始索引值 | 转换后的索引值 |
0 | 7 |
1 | 15 |
2 | 23 |
3 | 31 |
4 | 39 |
N | N×8+7 |
当接收到报文后,首先查找接口表,由于接口表的转换处理方式为:左移3位后加上BANK编号1。如果入接口为接口0,即条件索引为0,将条件索引进行转换后得到1,以1查询接口表,即与接口表中的索引匹配。无论条件索引是什么都只会命中编号为1的BANK。
假设查询接口表后得到的查询结果为0,即入接口对应的逻辑接口为0,则查询ACL的条件索引为0,ACL的转换处理方式为:左移3位后加上BANK编号3。将条件索引0进行转换后,匹配表项索引,命中编号为3的BANK。
进行反向路由查询时,根据报文的源IP地址进行查询,假设源IP地址作为条件索引时为2,路由转发表用于反向路由查询时被分配的BANK编号为4和6,对应的转换方式为:((2&0xfffffffe)<<2)+(4<<1)+(2&1)或者((2&0xfffffffe)<<2)+(6<<1)+(2&1),按照转换后的值匹配表项索引,命中编号为4或6的BANK。
进行正向路由查询时,根据报文的目的IP地址进行查询,假设目的IP地址作为条件索引时为1,路由转发表用于正向路由查询时被分配的BANK编号为0和2,对应的转换方式为:((1&0xfffffffe)<<2)+(0<<1)+(1&1)或者((1&0xfffffffe)<<2)+(2<<1)+(1&1),按照转换后的值匹配表项索引,命中编号为0或2的BANK。
假设进行正向路由查询来查询路由转发表后得到的查询结果为0,即下一跳索引为0,则查询下一跳表的条件索引为0,下一跳表对应的转换处理方式为:左移3位后加上BANK编号5。将条件索引0左移3位加上5后得到13,以13匹配表项索引,命中编号为5的BANK。
假设下一跳表的查询结果为0,即下一跳IP地址的索引值为0,则查询ARP表的条件索引为0,ARP表对应的转换处理方式为:左移3位后加上BANK编号7。将条件索引0左移3位加上7后得到15,以15匹配表项索引,命中编号为7的BANK。
由上面的例子可以看出,无论如何查表,报文转发流程中各转发处理表的查询都命中不同BANK,即不会对同一个BANK进行两次以上访问,也就不会出现BANK冲突的情况。
以上是对本发明所提供的方法进行的详细描述,下面对本发明所提供的装置进行详细描述。如图2所示,该装置可以包括:BANK分配单元201、表项存储单元202和表项查询单元203。
BANK分配单元201,用于为报文转发流程中需要查询的各转发处理表分配不同的BANK。
表项存储单元202,用于将各转发处理表的表项分别存储在对应转发处理表被分配的BANK中,且每个表项的索引与该表项所在BANK的编号相关联。
表项查询单元203,用于在对接收到的报文进行转发处理过程中,查询转发处理表时,将条件索引转换为与该转发处理表所在BANK的编号相关联的索引后,利用转换后的索引查询对应的表项。
其中,BANK分配单元201可以随机为各转发处理表分配不同的BANK,或者,按照预设的策略为各转发处理表分配不同的BANK。
在按照预设的策略为各转发处理表分配不同的BANK时,如果BANK的数目为8,BANK分配单元201可以在2<m≤4时,m为转发处理表的数目,为每个转发处理表分配2个BANK,且编号为M的转发处理表被分配编号为M和编号为4+M的BANK;在m=2时,为每个转发处理表分配4个BANK,其中一个转发处理表被分配奇数编号的BANK,另一个转发处理表被分配偶数编号的BANK;在4<m<8时,为其中8-m个转发处理表分别分配2个BANK,其余转发处理表分别分配1个BANK;当m=8时,为每个转发处理表分配1个BANK。
具体地,表项存储单元202在存储表项至转发处理表时,可以按照该转换处理表对应的转换处理方式将要存储的表项在转发处理表中的编号进行转换处理,将转换处理后得到的值作为要存储的表项的索引。
相应地,表项查询单元203在查询转发处理表时,按照该转发处理表对应的转换处理方式将条件索引进行转换处理。
其中,转发处理表对应的转换处理方式为:将进行转换处理的对象进行移位处理后结合该转发处理表所在BANK的编号。
上述将进行转换处理的对象进行移位处理后结合该转发处理表所在BANK的编号可以具体包括:
当转发处理表的各表项中结果区的长度为32字节时,如果该转发处理表仅被分配一个BANK,则将进行转换处理的对象左移3位后加上该转发处理表所在BANK的编号;如果该转发处理表以4个BANK的间隔被分配2个BANK,则将进行转换处理的对象左移2位后加上该转发处理表所在BANK的编号;如果该转发处理表以2个BANK的间隔被分配4个BANK,则将进行转换处理的对象左移1位后加上该转发处理表所在BANK的编号。
当转发处理表的各表项中结果区的长度为16字节时,如果该转发处理表仅被分配一个BANK,则将进行转换处理的对象除最低1位以外的其他位左移3位后加上该转发处理表所在BANK的编号左移1位后的值;如果该转发处理表以4个BANK的间隔被分配2个BANK,则将进行转换处理的对象除最低1位以外的其他位左移2位后加上该转发处理表所在BANK的编号左移1位后的值;如果该转发处理表以2个BANK的间隔被分配4个BANK,则将进行转换处理的对象除最低1位以外的其他位左移1位后加上该转发处理表所在BANK的编号左移1位后的值。
当转发处理表的各表项中结果区的长度为8字节时,如果该转发处理表仅被分配一个BANK,则将进行转换处理的对象除最低2位以外的其他位左移3位后加上该转发处理表所在BANK的编号左移2位后的值;如果该转发处理表以4个BANK的间隔被分配2个BANK,则将进行转换处理的对象除最低2位以外的其他位左移2位后加上该转发处理表所在BANK的编号左移2位后的值;如果该转发处理表以2个BANK的间隔被分配4个BANK,则将进行转换处理的对象除最低2位以外的其他位左移1位后加上该转发处理表所在BANK的编号左移2位后的值。
当转发处理表的各表项中结果区的长度为4字节时,如果该转发处理表仅被分配一个BANK,则将进行转换处理的对象除最低3位以外的其他位左移3位后加上该转发处理表所在BANK的编号左移3位后的值;如果该转发处理表以4个BANK的间隔被分配2个BANK,则将进行转换处理的对象除最低3位以外的其他位左移2位后加上该转发处理表所在BANK的编号左移3位后的值;如果该转发处理表以2个BANK的间隔被分配4个BANK,则将进行转换处理的对象除最低3位以外的其他位左移1位后加上该转发处理表所在BANK的编号左移3位后的值。
在报文转发处理流程中,上述转发处理表可以为:接口表、ACL、反向路由转发表、正向路由转发表、下一跳表或ARP表等。
由以上描述可以看出,在本发明中通过为各转发处理表分配不同的BANK,相应地,各转发处理表的表项也分别存储在不同的BANK中,使得在对接收到的报文进行转发处理时,对各转发处理表的表项查询将分别命中不同的BANK,从而避免BANK冲突,提高NP的转发处理能力。显然,这种方式无需采用将各转发处理表整合成流表等开发特殊版本的方式,对报文的转发处理流程不会带来影响,实现更加简单方便。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (10)
1.一种报文转发流程中的表项处理方法,其特征在于,报文转发流程中需要查询的各转发处理表被分配不同的存储体BANK,各转发处理表的表项分别存储在对应转发处理表被分配的BANK中,且每个表项的索引与该表项所在BANK的编号相关联;该方法包括:
在对接收到的报文进行转发处理过程中,查询转发处理表时,将条件索引转换为与该转发处理表所在BANK的编号相关联的索引后,利用转换后的索引查询对应的表项;
其中,所述方法进一步包括:在存储表项至转发处理表时,按照该转发处理表对应的转换处理方式将要存储的表项在转发处理表中的编号进行转换处理,将转换处理后得到的值作为所述要存储的表项的索引;
所述查询转发处理表时,将条件索引转换为与该转发处理表所在BANK的编号相关联的索引为:在查询转发处理表时,按照该转发处理表对应的转换处理方式将条件索引进行转换处理;
其中,所述转发处理表对应的转换处理方式为:将进行转换处理的对象进行移位处理后结合该转发处理表所在BANK的编号。
2.根据权利要求1所述的方法,其特征在于,所述报文转发流程中需要查询的各转发处理表被分配不同的BANK包括:所述各转发处理表被随机分配不同的BANK,或者,按照预设的策略为各转发处理表分配不同的BANK。
3.根据权利要求2所述的方法,其特征在于,所述按照预设的策略为各转发处理表分配不同的BANK包括:当BANK的数目为8时,
如果2<m≤4,m为转发处理表的数目,则每个转发处理表被分配2个BANK,且编号为M的转发处理表被分配编号为M和编号为4+M的BANK;
如果m=2,则每个转发处理表被分配4个BANK,其中一个转发处理表被分配奇数编号的BANK,另一个转发处理表被分配偶数编号的BANK;
如果4<m<8,则其中8-m个转发处理表分别被分配2个BANK,其余转发处理表分别被分配1个BANK;
如果m=8,则每个转发处理表被分配1个BANK。
4.根据权利要求1所述的方法,其特征在于,将进行转换处理的对象进行移位处理后结合该转发处理表所在BANK的编号具体包括:
当转发处理表的各表项中结果区的长度为32字节时,如果该转发处理表仅被分配一个BANK,则将进行转换处理的对象左移3位后加上该转发处理表所在BANK的编号;如果该转发处理表以4个BANK的间隔被分配2个BANK,则将进行转换处理的对象左移2位后加上该转发处理表所在BANK的编号;如果该转发处理表以2个BANK的间隔被分配4个BANK,则将进行转换处理的对象左移1位后加上该转发处理表所在BANK的编号;
当转发处理表的各表项中结果区的长度为16字节时,如果该转发处理表仅被分配一个BANK,则将进行转换处理的对象除最低1位以外的其他位左移3位后加上该转发处理表所在BANK的编号左移1位后的值;如果该转发处理表以4个BANK的间隔被分配2个BANK,则将进行转换处理的对象除最低1位以外的其他位左移2位后加上该转发处理表所在BANK的编号左移1位后的值;如果该转发处理表以2个BANK的间隔被分配4个BANK,则将进行转换处理的对象除最低1位以外的其他位左移1位后加上该转发处理表所在BANK的编号左移1位后的值;
当转发处理表的各表项中结果区的长度为8字节时,如果该转发处理表仅被分配一个BANK,则将进行转换处理的对象除最低2位以外的其他位左移3位后加上该转发处理表所在BANK的编号左移2位后的值;如果该转发处理表以4个BANK的间隔被分配2个BANK,则将进行转换处理的对象除最低2位以外的其他位左移2位后加上该转发处理表所在BANK的编号左移2位后的值;如果该转发处理表以2个BANK的间隔被分配4个BANK,则将进行转换处理的对象除最低2位以外的其他位左移1位后加上该转发处理表所在BANK的编号左移2位后的值;
当转发处理表的各表项中结果区的长度为4字节时,如果该转发处理表仅被分配一个BANK,则将进行转换处理的对象除最低3位以外的其他位左移3位后加上该转发处理表所在BANK的编号左移3位后的值;如果该转发处理表以4个BANK的间隔被分配2个BANK,则将进行转换处理的对象除最低3位以外的其他位左移2位后加上该转发处理表所在BANK的编号左移3位后的值;如果该转发处理表以2个BANK的间隔被分配4个BANK,则将进行转换处理的对象除最低3位以外的其他位左移1位后加上该转发处理表所在BANK的编号左移3位后的值。
5.根据权利要求1至4任一权项所述的方法,其特征在于,所述转发处理表为:接口表、接入控制列表ACL、反向路由转发表、正向路由转发表、下一跳表或地址解析协议ARP表。
6.一种报文转发流程中的表项处理装置,其特征在于,该装置包括:存储体BANK分配单元、表项存储单元和表项查询单元;
所述BANK分配单元,用于为报文转发流程中需要查询的各转发处理表分配不同的BANK;
所述表项存储单元,用于将各转发处理表的表项分别存储在对应转发处理表被分配的BANK中,且每个表项的索引与该表项所在BANK的编号相关联;
所述表项查询单元,用于在对接收到的报文进行转发处理过程中,查询转发处理表时,将条件索引转换为与该转发处理表所在BANK的编号相关联的索引后,利用转换后的索引查询对应的表项;
其中,所述表项存储单元,进一步用于在存储表项至转发处理表时,按照该转发处理表对应的转换处理方式将要存储的表项在转发处理表中的编号进行转换处理,将转换处理后得到的值作为所述要存储的表项的索引;
所述表项查询单元在查询转发处理表时,按照该转发处理表对应的转换处理方式将条件索引进行转换处理;
其中,所述转发处理表对应的转换处理方式为:将进行转换处理的对象进行移位处理后结合该转发处理表所在BANK的编号。
7.根据权利要求6所述的装置,其特征在于,所述BANK分配单元随机为所述各转发处理表分配不同的BANK,或者,按照预设的策略为所述各转发处理表分配不同的BANK。
8.根据权利要求7所述的装置,其特征在于,如果BANK的数目为8,所述BANK分配单元在2<m≤4时,m为转发处理表的数目,为每个转发处理表分配2个BANK,且编号为M的转发处理表被分配编号为M和编号为4+M的BANK;在m=2时,为每个转发处理表分配4个BANK,其中一个转发处理表被分配奇数编号的BANK,另一个转发处理表被分配偶数编号的BANK;在4<m<8时,为其中8-m个转发处理表分别分配2个BANK,其余转发处理表分别分配1个BANK;当m=8时,为每个转发处理表分配1个BANK。
9.根据权利要求6所述的装置,其特征在于,所述将进行转换处理的对象进行移位处理后结合该转发处理表所在BANK的编号具体包括:
当转发处理表的各表项中结果区的长度为32字节时,如果该转发处理表仅被分配一个BANK,则将进行转换处理的对象左移3位后加上该转发处理表所在BANK的编号;如果该转发处理表以4个BANK的间隔被分配2个BANK,则将进行转换处理的对象左移2位后加上该转发处理表所在BANK的编号;如果该转发处理表以2个BANK的间隔被分配4个BANK,则将进行转换处理的对象左移1位后加上该转发处理表所在BANK的编号;
当转发处理表的各表项中结果区的长度为16字节时,如果该转发处理表仅被分配一个BANK,则将进行转换处理的对象除最低1位以外的其他位左移3位后加上该转发处理表所在BANK的编号左移1位后的值;如果该转发处理表以4个BANK的间隔被分配2个BANK,则将进行转换处理的对象除最低1位以外的其他位左移2位后加上该转发处理表所在BANK的编号左移1位后的值;如果该转发处理表以2个BANK的间隔被分配4个BANK,则将进行转换处理的对象除最低1位以外的其他位左移1位后加上该转发处理表所在BANK的编号左移1位后的值;
当转发处理表的各表项中结果区的长度为8字节时,如果该转发处理表仅被分配一个BANK,则将进行转换处理的对象除最低2位以外的其他位左移3位后加上该转发处理表所在BANK的编号左移2位后的值;如果该转发处理表以4个BANK的间隔被分配2个BANK,则将进行转换处理的对象除最低2位以外的其他位左移2位后加上该转发处理表所在BANK的编号左移2位后的值;如果该转发处理表以2个BANK的间隔被分配4个BANK,则将进行转换处理的对象除最低2位以外的其他位左移1位后加上该转发处理表所在BANK的编号左移2位后的值;
当转发处理表的各表项中结果区的长度为4字节时,如果该转发处理表仅被分配一个BANK,则将进行转换处理的对象除最低3位以外的其他位左移3位后加上该转发处理表所在BANK的编号左移3位后的值;如果该转发处理表以4个BANK的间隔被分配2个BANK,则将进行转换处理的对象除最低3位以外的其他位左移2位后加上该转发处理表所在BANK的编号左移3位后的值;如果该转发处理表以2个BANK的间隔被分配4个BANK,则将进行转换处理的对象除最低3位以外的其他位左移1位后加上该转发处理表所在BANK的编号左移3位后的值。
10.根据权利要求6至9任一权项所述的装置,其特征在于,所述转发处理表为:接口表、接入控制列表ACL、反向路由转发表、正向路由转发表、下一跳表或地址解析协议ARP表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010238993.8A CN102340445B (zh) | 2010-07-26 | 2010-07-26 | 一种报文转发流程中的表项处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010238993.8A CN102340445B (zh) | 2010-07-26 | 2010-07-26 | 一种报文转发流程中的表项处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102340445A CN102340445A (zh) | 2012-02-01 |
CN102340445B true CN102340445B (zh) | 2014-09-24 |
Family
ID=45515951
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010238993.8A Expired - Fee Related CN102340445B (zh) | 2010-07-26 | 2010-07-26 | 一种报文转发流程中的表项处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102340445B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015143599A1 (zh) * | 2014-03-24 | 2015-10-01 | 华为技术有限公司 | 确定表的存储位置的方法、转发设备及控制器 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1815625A (zh) * | 2005-11-18 | 2006-08-09 | 宁波中科集成电路设计中心有限公司 | 一种同步动态存储器控制器的设计方法 |
CN101021814A (zh) * | 2007-03-16 | 2007-08-22 | 华为技术有限公司 | 存储、查询方法及存储控制器和查询系统 |
CN101562041A (zh) * | 2009-04-30 | 2009-10-21 | 华为技术有限公司 | 一种实现sdram查表的方法、装置及网络设备 |
-
2010
- 2010-07-26 CN CN201010238993.8A patent/CN102340445B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1815625A (zh) * | 2005-11-18 | 2006-08-09 | 宁波中科集成电路设计中心有限公司 | 一种同步动态存储器控制器的设计方法 |
CN101021814A (zh) * | 2007-03-16 | 2007-08-22 | 华为技术有限公司 | 存储、查询方法及存储控制器和查询系统 |
CN101562041A (zh) * | 2009-04-30 | 2009-10-21 | 华为技术有限公司 | 一种实现sdram查表的方法、装置及网络设备 |
Also Published As
Publication number | Publication date |
---|---|
CN102340445A (zh) | 2012-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101286936B (zh) | 数据报文的处理方法及装置 | |
CN101309216B (zh) | 一种ip包分类方法和设备 | |
CN101005461B (zh) | 一种IPv6路由表查找、转发的方法 | |
US20110270979A1 (en) | Reducing Propagation Of Message Floods In Computer Networks | |
CN100578469C (zh) | 存储、查询方法及存储控制器和查询系统 | |
CN100420193C (zh) | 一种组播转发表输出端口的虚拟标识方法 | |
CN100531097C (zh) | 一种桥接的方法及装置 | |
CN101505279B (zh) | 一种路由查找方法和装置 | |
CN102880724A (zh) | 处理哈希冲突的方法及系统 | |
US20100083259A1 (en) | Directing data units to a core supporting tasks | |
CN101267331A (zh) | 一种组播转发表查找方法和装置 | |
CN102124703A (zh) | 以太网网桥的交换表 | |
CN107040393B (zh) | 一种路由管理方法和设备 | |
CN104394096A (zh) | 一种基于多核处理器的报文处理方法及多核处理器 | |
CN101620623A (zh) | 内容可寻址存储器表项管理方法和装置 | |
CN110096225A (zh) | 针对网络设备中的分组处理指令表的存储器的动态分配 | |
US20160142316A1 (en) | Apparatus and method for scalable and flexible table search in a network switch | |
CN103780493A (zh) | 数据转发方法及系统 | |
EP2104285B1 (en) | Method and apparatus for reducing service loss in a link aggregation group | |
CN103973571A (zh) | 网络处理器及其路由查找方法 | |
CN103581024A (zh) | Mac地址硬件与软件相结合的学习方法及装置 | |
CN102340445B (zh) | 一种报文转发流程中的表项处理方法和装置 | |
CN101753580B (zh) | 包处理芯片及其数据存储、转发方法 | |
CN102045262B (zh) | 媒体接入控制地址表更新方法、装置及网络设备 | |
CN101237405B (zh) | 数据缓存方法和装置 |
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 | ||
CP03 | Change of name, title or address |
Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Patentee after: Xinhua three Technology Co., Ltd. Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base Patentee before: Huasan Communication Technology Co., Ltd. |
|
CP03 | Change of name, title or address | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140924 Termination date: 20200726 |
|
CF01 | Termination of patent right due to non-payment of annual fee |