一种报文转发流程中的表项处理方法和装置的制作方法

文档序号:7755409阅读:94来源:国知局
专利名称:一种报文转发流程中的表项处理方法和装置的制作方法
技术领域
本发明涉及网络通信技术领域,特别涉及一种报文转发流程中的表项处理方法和
直O
背景技术
在路由器和交换机中,数据包的转发处理存在大量的查表操作,通常查表快慢是影响转发性能是否达到线速的关键因素,所以很多高端产品采用了高速的静态随机存储器(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。对于在一个报文转发流程中需要查询η次的转发处理表,可以理解为η个转发处理表,分别分配不同的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个转发处理表。
8
首先为各转发处理表分配不同的BANK,路由转发表涉及的表项较多,占用空间较大,分给路由转发表4个BANK,其中用于正向路由查找的和用于反向路由查找的分别2个 BANK,其他转发处理表分别1个BANK。具体分配情况可以如表1所示。表 权利要求
1.一种报文转发流程中的表项处理方法,其特征在于,报文转发流程中需要查询的各转发处理表被分配不同的存储体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的编号相关联的索引为在查询转发处理表时,按照该转发处理表对应的转换处理方式将条件索引进行转换处理;其中,所述转发处理表对应的转换处理方式为将进行转换处理的对象进行移位处理后结合该转发处理表所在BANK的编号。
5.根据权利要求4所述的方法,其特征在于,将进行转换处理的对象进行移位处理后结合该转发处理表所在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位后的值。
6.根据权利要求1至5任一权项所述的方法,其特征在于,所述转发处理表为接口表、接入控制列表ACL、反向路由转发表、正向路由转发表、下一跳表或地址解析协议ARP表。
7.一种报文转发流程中的表项处理装置,其特征在于,该装置包括存储体BANK分配单元、表项存储单元和表项查询单元;所述BANK分配单元,用于为报文转发流程中需要查询的各转发处理表分配不同的 BANK ;所述表项存储单元,用于将各转发处理表的表项分别存储在对应转发处理表被分配的 BANK中,且每个表项的索引与该表项所在BANK的编号相关联;所述表项查询单元,用于在对接收到的报文进行转发处理过程中,查询转发处理表时, 将条件索引转换为与该转发处理表所在BANK的编号相关联的索引后,利用转换后的索引查询对应的表项。
8.根据权利要求7所述的装置,其特征在于,所述BANK分配单元随机为所述各转发处理表分配不同的BANK,或者,按照预设的策略为所述各转发处理表分配不同的BANK。
9.根据权利要求8所述的装置,其特征在于,如果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。
10.根据权利要求7所述的装置,其特征在于,所述表项存储单元在存储表项至转发处理表时,按照该转换处理表对应的转换处理方式将要存储的表项在转发处理表中的编号进行转换处理,将转换处理后得到的值作为所述要存储的表项的索引;所述表项查询单元在查询转发处理表时,按照该转发处理表对应的转换处理方式将条件索引进行转换处理;其中,所述转发处理表对应的转换处理方式为将进行转换处理的对象进行移位处理后结合该转发处理表所在BANK的编号。
11.根据权利要求10所述的装置,其特征在于,所述将进行转换处理的对象进行移位处理后结合该转发处理表所在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位后的值。
12.根据权利要求7至11任一权项所述的方法,其特征在于,所述转发处理表为接口表、接入控制列表ACL、反向路由转发表、正向路由转发表、下一跳表或地址解析协议ARP表。
全文摘要
本发明提供了一种报文转发流程中的表项处理方法和装置,报文转发流程中需要查询的各转发处理表被分配不同的存储体(BANK),各转发处理表的表项分别存储在对应转发处理表被分配的BANK中,且每个表项的索引与该表项所在BANK的编号相关联;在对接收到的报文进行转发处理过程中,查询转发处理表时,将条件索引转换为与该转发处理表所在BANK的编号相关联的索引后,利用转换后的索引查询对应的表项。本发明能够更加简单方便地提高NP的转发处理能力,避免BANK冲突。
文档编号H04L12/56GK102340445SQ20101023899
公开日2012年2月1日 申请日期2010年7月26日 优先权日2010年7月26日
发明者焦旭坡 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1