CN118233371A - 一种报文转发方法、装置、网络设备及存储介质 - Google Patents
一种报文转发方法、装置、网络设备及存储介质 Download PDFInfo
- Publication number
- CN118233371A CN118233371A CN202410650694.7A CN202410650694A CN118233371A CN 118233371 A CN118233371 A CN 118233371A CN 202410650694 A CN202410650694 A CN 202410650694A CN 118233371 A CN118233371 A CN 118233371A
- Authority
- CN
- China
- Prior art keywords
- node
- jump
- physical
- path
- forwarding
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 66
- 238000004590 computer program Methods 0.000 claims description 15
- 238000005457 optimization Methods 0.000 claims description 13
- 230000008859 change Effects 0.000 claims description 7
- 230000001960 triggered effect Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 30
- 230000008569 process Effects 0.000 description 15
- 238000012545 processing Methods 0.000 description 11
- 230000006872 improvement Effects 0.000 description 8
- 230000009191 jumping Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例提供了一种报文转发方法、装置、网络设备及存储介质,涉及网络技术领域,包括:接收报文,获取目的地址;若查找目标节点为分裂节点,确定是否包含跳跃信息;若包含,则在跳跃数据与目的地址数据相同的情况下,确定跳跃地址指示的跳跃目标节点为新的查找目标节点;若不包含或跳跃数据与目的地址数据不同,从查找目标节点的子节点中查找与目的地址匹配的物理节点,将查找的物理节点作为新的查找目标节点;返回执行确定分裂节点是否包含跳跃信息的步骤;获取查找目标节点中的转发信息,转发报文。应用本申请实施例提供的方案能够实现报文转发效率的提升。
Description
技术领域
本申请实施例涉及网络技术领域,特别是涉及一种报文转发方法、装置、网络设备及存储介质。
背景技术
在网络系统的运行过程中,网络设备经常需要在各种转发表中进行转发表项的查找,如在MAC(Media Access Control,媒体访问控制)表、ACL(Access Control Lists,访问控制列表)、路由表等表中查找转发表项。示例性的,对于进行报文转发的路由器,其在接收报文后,根据报文的目的地址搜索路由表,根据最长掩码匹配规则选取一条前缀最长的表项作为查表结果。
在大型网络中,一个转发表中可能包含数十万甚至数百万条转发表项,在转发表项过多的情况下,进行报文转发的过程中查找表项的效率较低,导致报文转发的效率较低。尤其在网络设备的报文流量较大的情况下,该问题尤为明显。
发明内容
本申请实施例的目的在于提供一种报文转发方法、装置、网络设备及存储介质,以实现报文转发效率的提升。具体技术方案如下:
第一方面,本申请实施例提供了一种报文转发方法,应用于网络设备,上述网络设备中包含与转发表对应的物理树,上述物理树中的每一物理节点中包含上述转发表中转发表项内的网络地址中包含的地址数据,针对每一物理节点,在上述物理树中从根节点至该物理节点的路径中各物理节点内包含的地址数据组成分支地址,全部或部分物理节点中包含该物理节点的分支地址在上述转发表中对应的转发信息;
上述物理节点中包括:存在子节点的分裂节点,全部或部分分裂节点中还包含:跳跃信息,上述跳跃信息包括:物理跳跃路径对应的跳跃数据、跳跃目标节点在上述物理树中的跳跃地址,上述物理跳跃路径为:上述物理树中从该分裂节点至上述跳跃目标节点的路径,上述跳跃数据由上述物理跳跃路径经过的物理节点中包含的地址数据组成;
上述方法包括:
接收报文,获取上述报文的目的地址;
若当前的查找目标节点为分裂节点,则确定该分裂节点中是否包含跳跃信息;其中,初始的查找目标节点为上述物理树的根节点;
若包含上述跳跃信息,则在上述跳跃数据与上述目的地址中包含的数据相同的情况下,确定上述跳跃地址指示的跳跃目标节点为新的查找目标节点;
若不包含上述跳跃信息或上述跳跃数据与上述目的地址中包含的数据不相同,从当前的查找目标节点的子节点中查找与上述目的地址匹配的物理节点,将查找到的物理节点作为新的查找目标节点;
返回执行上述若当前的查找目标节点为分裂节点,则确定该分裂节点中是否包含跳跃信息的步骤,直至达到第一预设终止条件;
获取最终的查找目标节点中的转发信息,转发上述报文。
第二方面,本申请实施例提供了一种报文转发装置,应用于网络设备,上述网络设备中包含与转发表对应的物理树,上述物理树中的每一物理节点中包含上述转发表中转发表项内的网络地址中包含的地址数据,针对每一物理节点,在上述物理树中从根节点至该物理节点的路径中各物理节点内包含的地址数据组成分支地址,全部或部分物理节点中包含该物理节点的分支地址在上述转发表中对应的转发信息;
上述物理节点中包括:存在子节点的分裂节点,全部或部分分裂节点中还包含:跳跃信息,上述跳跃信息包括:物理跳跃路径对应的跳跃数据、跳跃目标节点在上述物理树中的跳跃地址,上述物理跳跃路径为:上述物理树中从该分裂节点至上述跳跃目标节点的路径,上述跳跃数据由上述物理跳跃路径经过的物理节点中包含的地址数据组成;
上述装置包括:
获取模块,用于接收报文,获取上述报文的目的地址;
第一确定模块,用于若当前的查找目标节点为分裂节点,则确定该分裂节点中是否包含跳跃信息;其中,初始的查找目标节点为上述物理树的根节点;
第二确定模块,用于若包含上述跳跃信息,则在上述跳跃数据与上述目的地址中包含的数据相同的情况下,确定上述跳跃地址指示的跳跃目标节点为新的查找目标节点;返回触发执行上述第一确定模块;
查找模块,用于若不包含上述跳跃信息或上述跳跃数据与上述目的地址中包含的数据不相同,从当前的查找目标节点的子节点中查找与上述目的地址匹配的物理节点,将查找到的物理节点作为新的查找目标节点;返回触发执行上述第一确定模块,直至达到第一预设终止条件;
获取与转发模块,用于获取最终的查找目标节点中的转发信息,转发上述报文。
第三方面,本申请实施例提供了一种网络设备,上述网络设备执行第一方面任一报文转发方法中的步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,上述计算机可读存储介质内存储有计算机程序,上述计算机程序被网络设备执行时实现第一方面任一报文转发方法中的步骤。
第五方面,本申请实施例提供了一种计算机程序产品,上述计算机程序产品促使网络设备:实现第一方面任一报文转发方法中的步骤。
本申请实施例有益效果:
在本申请实施例提供的方案中,网络设备中包含与转发表对应的物理树,在物理树的一些分裂节点中包含跳跃信息,并且全部或部分物理节点中存储有转发信息。在获取到报文的目的地址后,将物理树的根节点作为初始的查找目标节点,开始进行信息查找。在当前查找目标节点为分裂节点的情况下,便会确定当前的查找目标节点中是否包含跳跃信息。由于跳跃信息中包含的跳跃数据由物理跳跃路径经过的物理节点中包含的地址数据组成,因此,会有以下两种情形:第一种情形中,发现跳跃数据与上述目的地址相同,便意味着无需从当前的查找目标节点再逐个节点往下查找,而是可以直接从当前的查找目标节点跳跃至跳跃信息中跳跃地址指示的跳跃目标节点,该跳跃目标节点即为新的查找目标节点。第二种情形中,发现跳跃数据与上述目的地址不相同或是当前的查找目标节点中不包含跳跃信息,则按逐个节点查找的方式,从当前的查找目标节点的子节点中查找出与上述目的地址匹配的节点,作为新的查找目标节点,并在该新的查找目标节点为分裂节点的情况下,继续按照上述的在当前查找目标节点为分裂节点的情况下后所使用的处理方式,确定新的查找目标节点,最后根据查找目标节点中的转发信息来转发报文。应用本申请实施例提供的方案,在发现跳跃数据与目的地址相同的情况下,可以直接从当前的查找目标节点跳跃至跳跃信息中跳跃地址指示的跳跃目标节点,减少了节点查找次数,提高了查找到转发信息的效率,从而能够实现报文转发效率的提升。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。
图1为相关技术中Btree-32的结构示意图;
图2为相关技术中表项查找的一种示意图;
图3为本申请实施例提供的第一种逻辑树的结构示意图;
图4为本申请实施例提供的一种物理树的结构示意图;
图5为本申请实施例提供的一种报文转发方法的流程示意图;
图6为本申请实施例提供的第二种逻辑树的结构示意图;
图7为本申请实施例提供的第三种逻辑树的结构示意图;
图8为本申请实施例提供的第四种逻辑树的结构示意图;
图9为本申请实施例提供的第五种逻辑树的结构示意图;
图10为本申请实施例提供的一种虚拟节点的示意图;
图11为本申请实施例提供的第六种逻辑树的结构示意图;
图12为本申请实施例提供的第七种逻辑树的结构示意图;
图13为本申请实施例提供的第一种实现报文的转发信息跳跃查找的架构示意图;
图14为本申请实施例提供的优化链表结构示意图;
图15为本申请实施例提供的第二种实现报文的转发信息跳跃查找的架构示意图;
图16为本申请实施例提供的一种报文转发装置的结构示意图;
图17为本申请实施例提供的一种网络设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员基于本申请所获得的所有其他实施例,都属于本申请保护的范围。
相关技术在进行报文转发的过程中,常使用最长掩码匹配的方式进行转发信息的查找。例如,相关技术中,针对一转发表,该转发表对应的物理树中的物理节点基于Btree(Balanced Tree,平衡多路查找树)生成,具体的,该Btree的格式可为Btree-32。参见图1,为相关技术中Btree-32的结构示意图。从图1可以看出,Btree-32有3个Level(层级),每个Level有各自的Depth(深度)、Length(长度),对于Level 0,Depth=0、Length=1b;对于Level1,Depth=2b、Length=4b;对于Level 2,Depth=5b、Length=32b。示例性的,对于Level 2,Depth=5b表示对于前缀长度大于等于5的前缀,选择Level 2规则进行压缩,压缩深度为5个bit(比特),其中,在网络技术中,前缀是指IP(Internet Protocol,网际互连协议)地址的一部分,用于表示网络地址;Length=32b则表示按压缩深度为5个bit进行压缩时,共有32种组成。
另外,Length还被称为bitmap(位图),每层的bitmap被置1后,会申请2^BtreeSplit After(平衡多路查找树分裂后参数)个存储空间用于存储节点,其中,Split After为分裂节点继续分裂bit数,也可称为分裂后参数,如图1中的圆点便表示一个节点。具体的,Btree Split After的设置可参见如下表1,表1为Btree-32规则配置示意表。
表1
按照表1的配置,图1中的Level 0能够存储1×22=4个节点,Level 1能够存储4×23=32个节点,Level 2能够存储32×23=256个节点。其中,LogLength指Length的Log值。
按照图1所示结构,对相关技术查找转发信息的场景可进行如下描述:
参见表2,为待查找的前缀的信息示意表。
表2
表2中,索引1~6分别指示一条待查找的前缀;表2中“节点”指示的列中为根据前缀在物理树中所查找到的节点。具体的,可参见以下图2,为相关技术中表项查找的一种示意图。
图2所展示的树形结构为相关技术使用的一种物理树结构示意,其中,S0为根节点,也为分裂节点,S1、S5为分裂节点;L1为叶子节点,其中包含多条前缀及各自对应的转发信息;R0、R2、R3为结果节点,其中包含一条前缀对应的转发信息。图2中,根节点S0中包含信息:前缀“10111001”指示下一查找节点为R0、前缀“10111111”指示下一查找节点为S1;S1中包含信息:前缀“01001100”指示下一查找节点为L1、前缀“11000001”指示下一查找节点为S5,S5中包含信息:前缀“101”指示下一查找节点为R2、前缀“001110”指示下一查找节点为R3。
示例性的,若要查找索引6指示的前缀“10111111/11000001/00111”对应的转发信息,按照最长掩码匹配的方式,在图2中,经节点S0,查找到节点S1,继而查找到节点S5,最后查找到节点R3,R3中存储的转发信息即为需要的转发信息。因此,为查找索引6指示的前缀对应的转发信息,需从根节点S0开始,进行3次查找。另外,以图1所示结构示意图为例,分裂节点中存储有每个Level首个子节点的内存地址,每个Level的子节点通过该Level首个子节点的内存地址加上偏移量计算获取。
按照以上描述的方式进行转发信息的查找,每次查找的前缀越长,所需的查找次数越少。相关技术中,以128bit的IPv6(Internet Protocol Version 6,互联网协议第6版)地址为例,有关数据统计如下表3所示。参见表3,为相关技术中128bit的IPv6地址查找数据统计表。
表3
从表3中可以看出,若每次查找的前缀长度从8bit增大为16bit,理论最大查找次数会显著降低,然而,在每次查找的前缀长度为16bit的情况下,需要消耗的内存节点空间将几何倍增加,增加成本开销。故相关技术中,每次查找的前缀长度为8bit,但在进行报文转发的过程中,若需查找的前缀较长或是需频繁查找,会出现转发信息查找效率低下的问题,导致报文转发的效率较低。
为了解决上述问题,本申请实施例提供了一种报文转发方法、装置、网络设备及存储介质,下面分别进行具体说明。
首先,对本申请实施例提供的一种报文转发方法进行说明。
本申请实施例中的报文转发方法应用于网络设备。本申请一个实施例中,在上述网络设备中包含与转发表对应的物理树,上述物理树中的物理节点包括:结果节点、叶子节点与分裂节点,上述分裂节点存在子节点,上述结果节点与叶子节点不存在子节点,每一物理节点中包含上述转发表中转发表项内的网络地址中包含的地址数据,针对每一物理节点,在所述物理树中从根节点至该物理节点的路径中各物理节点内包含的地址数据组成分支地址。全部或部分物理节点中包含该物理节点的分支地址在转发表中对应的转发信息。
本申请一个实施例中,每一结果节点中还包含:一条分支地址在转发表中对应的转发信息。例如,可结合图2进行示例性说明:对于图2中节点S5的一条分支地址,由于在图2所示的物理树中,从根节点S0至节点S5的路径为:S0→S1→S5,其中,根节点S0中包含的转发表中转发表项内的网络地址的地址数据有:10111111,节点S1中包含的转发表中转发表项内的网络地址的地址数据有:11000001,节点S5中包含的转发表中转发表项内的网络地址的地址数据有:101,则节点S5的一条分支地址为:10111111/11000001/101。
另外,每一叶子节点中还包含;多条分支地址在转发表中对应的转发信息。
并且,存在一些分裂节点,在这些分裂节点中还包含;跳跃信息和/或该分裂节点的分支地址在转发表中对应的转发信息,上述跳跃信息包括:物理跳跃路径对应的跳跃数据、物理跳跃路径的跳跃目标节点在上述物理树中的跳跃地址,该跳跃地址实质就是跳跃目标节点在物理树中所处的地址;上述物理跳跃路径为:上述物理树中从该分裂节点至上述跳跃目标节点的路径,上述跳跃数据由上述物理跳跃路径经过的物理节点中包含的地址数据组成,这里的物理节点中包含的地址数据即为上述转发表中转发表项内的网络地址的地址数据。
本申请一个实施例中,上述物理树中的物理节点是基于预设结构的Btree生成的。具体的,对于上述预设结构的Btree,可以有逻辑树和物理树,其中,逻辑树是一颗二叉树,用于存储转发表项前缀及其结果,这里的结果可理解为前缀对应的转发信息;物理树是基于逻辑树压缩后形成的树。
参见图3,为本申请实施例提供的第一种逻辑树的结构示意图,图3中,“r”所在节点为根节点;节点中的数字“0”与“1”为节点中记录的数据。图中节点一侧的数字表示从根节点到该节点的路径上包含的节点中记录的数据组成的地址。示例性的,图3中一节点旁边的“11\2”表示根节点到该节点的路径上包含的节点中记录的数据组成的地址为“11”,为两位。
参见图4,为本申请实施例提供的一种物理树的结构示意图,其中的S0为根节点,也为分裂节点。本申请实施例中,标识开头为“S”的节点为分裂节点,标识开头为“L”的节点为叶子节点,标识开头为“R”的节点为结果节点,也就是图4中,S0、S2、S3、S4、S5、S6、S7、S8为分裂节点,L1、L2为叶子节点,R1、R2、R3、R4、R5为结果节点。另外,叶子节点可分为四种类型:Leaf_1x64,表示该类型叶子节点最多只能存储1条前缀,每条前缀最长为64bit;Leaf_2×24,表示该类型叶子节点最多存储2条表项,每条表项的前缀最长为24bit;Leaf_3×8,表示该类型叶子节点最多存储3条表项,每条表项的前缀最长为8bit;Leaf_4×2,表示该类型叶子节点最多存储4条表项,每条表项的前缀最长为2bit。其中,Leaf表示叶子节点。
参见图5,为本申请实施例提供的一种报文转发方法的流程示意图,该方法应用于网络设备,包括以下步骤S501至步骤S505。
步骤S501:接收报文,获取上述报文的目的地址。
网络设备在接收到要转发的报文后,读取该报文的相关信息,获取到与转发该报文对应的目的地址,进而能够根据目的地址进行物理节点的查找。
步骤S502:若当前的查找目标节点为分裂节点,则确定该分裂节点中是否包含跳跃信息。
其中,初始的查找目标节点为上述物理树的根节点。
网络设备在获取到报文的目的地址后,会根据该目的地址,通过物理树查找、确定转发信息。在网络设备在物理树中进行转发信息查找的过程中,网络设备初始的查找目标节点为物理树的根节点,由于根节点为分裂节点,因此网络设备会在根节点中确定其中是否包含跳跃信息。当然,无论网络设备当前的查找目标节点是否为根节点,只要当前的查找目标节点为分裂节点,网络设备均会确定其中是否包含跳跃信息。具体的,若当前的查找目标节点中包含跳跃信息,则执行下述步骤S503。
步骤S503:在上述跳跃数据与上述目的地址中包含的数据相同的情况下,确定上述跳跃地址指示的跳跃目标节点为新的查找目标节点。
由于跳跃信息中的跳跃数据由物理跳跃路径经过的物理节点中包含的地址数据组成,因此,若跳跃数据与目的地址中包含的数据相同,即使在物理树中不进行节点的跳跃、逐个进行节点的查找,按照上述跳跃数据的指示,最终查找到的节点也就是上述跳跃地址指示的跳跃目标节点。在上述的情形下,便可以跳过一些中间节点,直接从当前的查找目标节点跳跃到跳跃地址指示的跳跃目标节点,将跳跃目标节点作为新的查找目标节点。例如,可结合图4进行示例性说明:若按照上述跳跃数据的指示,在物理树中不进行节点的跳跃、逐个进行节点的查找,查找路径为:节点S0→节点S2→节点S4→节点S6,节点S0为当前的查找目标节点,节点S6为跳跃地址指示的跳跃目标节点,在本申请实施例中,便可以跳过节点S2与节点S4,直接从节点S0跳跃至节点S6。
步骤S504:若不包含上述跳跃信息或上述跳跃数据与上述目的地址中包含的数据不相同,从当前的查找目标节点的子节点中查找与上述目的地址匹配的物理节点,将查找到的物理节点作为新的查找目标节点。
若当前的查找目标节点中不包含跳跃信息,则自然不会进行节点的跳跃,而是从当前的查找目标节点的子节点中查找与目的地址匹配的物理节点,例如按照最长掩码匹配进行查找。若当前查找目标节点中的跳跃数据与目的地址中包含的数据不相同,表明跳跃地址指示的跳跃目标节点并不是根据目的地址在物理树中进行查找所应经过的节点,也就是此时若直接跳跃至跳跃地址指示的跳跃目标节点,便会出现查找错误。因此,若当前的查找目标节点中不包含跳跃信息或跳跃数据与目的地址中包含的数据不相同,便从当前的查找目标节点的子节点中查找与目的地址匹配的物理节点,并将查找到的节点作为新的查找目标节点,返回执行步骤S502,也就是按步骤S502及其之后步骤的处理方式,继续处理新的查找目标节点,直至达到第一预设终止条件。第一预设终止条件可以是:网络设备根据目的地址,在物理树中查找到了能够查找到的最后一个物理节点。具体的,这最后一个物理节点中便包含着转发报文所需的转发信息。
步骤S505:获取最终的查找目标节点中的转发信息,转发上述报文。
网络设备在获取到转发信息后,便能够根据转发信息进行报文的转发。
本申请一个实施例中,全部或部分分裂节点中包含转发信息,步骤S505可由以下步骤N至步骤P实现。
步骤N:若当前的查找目标节点为分裂节点,该分裂节点为根据上述目的地址查找的最后一个物理节点,获取该分裂节点中与上述目的地址匹配的分支地址对应的转发信息,基于所获得的转发信息,转发上述报文。
若当前查找的分裂节点为根据上述目的地址查找的最后一个物理节点,表明当前查找的分裂节点中包含需要的转发信息,故在当前查找的分裂节点中获取与上述目的地址匹配的分支地址对应的转发信息,进而根据转发信息转发报文。
步骤O:若当前的查找目标节点为结果节点,则获取该结果节点中的转发信息,基于所获得的转发信息,转发上述报文。
按照上述的查找方式,若发现当前的查找目标节点为结果节点,则该结果节点中的转发信息便是根据在步骤S501中获取的报文的目的地址,网络设备所需要的转发信息,故直接获取该结果节点中的转发信息,进而根据转发信息转发报文。
步骤P:若当前的查找目标节点为叶子节点,则获取该叶子节点中与上述目的地址匹配的分支地址对应的转发信息,基于所获得的转发信息,转发上述报文。
由于叶子节点中包含多条分支地址在转发表中对应的转发信息,因此,若当前的查找目标节点为叶子节点,需在叶子节点中的多条分支地址中寻找与目的地址匹配的分支地址,如使用最长掩码匹配,在确定出与目的地址匹配的分支地址后,确定出的分支地址对应的转发信息,便是根据在步骤S501中获取的报文的目的地址,网络设备所需要的转发信息,网络设备获取与目的地址匹配的分支地址对应的转发信息,进而根据转发信息转发报文。
具体的,以上的步骤S501至步骤S505以及步骤N至步骤P由网络设备中的网络处理器(Network Processor,NP)执行。
由以上可见,在本申请实施例提供的方案中,网络设备中包含与转发表对应的物理树,在物理树的一些分裂节点中包含跳跃信息,并且全部或部分物理节点中存储有转发信息。在获取到报文的目的地址后,将物理树的根节点作为初始的查找目标节点,开始进行信息查找。在当前查找目标节点为分裂节点的情况下,便会确定当前的查找目标节点中是否包含跳跃信息。由于跳跃信息中包含的跳跃数据由物理跳跃路径经过的物理节点中包含的地址数据组成,因此,会有以下两种情形:第一种情形中,发现跳跃数据与上述目的地址相同,便意味着无需从当前的查找目标节点再逐个节点往下查找,而是可以直接从当前的查找目标节点跳跃至跳跃信息中跳跃地址指示的跳跃目标节点,该跳跃目标节点即为新的查找目标节点。第二种情形中,发现跳跃数据与上述目的地址不相同或是当前的查找目标节点中不包含跳跃信息,则按逐个节点查找的方式,从当前的查找目标节点的子节点中查找出与上述目的地址匹配的节点,作为新的查找目标节点,并在该新的查找目标节点为分裂节点的情况下,继续按照上述的在当前查找目标节点为分裂节点的情况下后所使用的处理方式,确定新的查找目标节点,最后根据查找目标节点中的转发信息来转发报文。应用本申请实施例提供的方案,在发现跳跃数据与目的地址相同的情况下,可以直接从当前的查找目标节点跳跃至跳跃信息中跳跃地址指示的跳跃目标节点,减少了节点查找次数,提高了查找到转发信息的效率,从而能够实现报文转发效率的提升。
本申请一个实施例中,网络设备中还包含与转发表对应的逻辑树,除根节点外,上述逻辑树中包含存在子节点的第一节点与不存在子节点的第二节点。其中,每一第一节点中包含上述转发表中转发表项内的网络地址中的数据,全部或部分第一节点中还包含该第一节点的前缀地址对应的转发信息,每一第二节点中包含该第二节点的前缀地址对应的转发信息。节点的前缀地址为:从上述逻辑树的根节点到该节点的路径中包含的各节点中的数据组成的地址。例如,可结合图3进行示例性说明:在图3中,对于节点C,从图3中逻辑树的根节点到节点C的路径为:根节点→节点A→节点B→节点C ,其中,节点A中包含的网络地址中的数据为0,节点B中包含的网络地址中的数据为0,节点C中包含的网络地址中的数据为1,则节点C的前缀地址为“001”。
物理节点中包含的地址数据为与该物理节点有对应关系的逻辑节点对应的前缀地址中最长的前缀地址。例如,若有逻辑节点A、逻辑节点B,映射的是同一物理节点C,其中,逻辑节点A中存储的值对应的前缀地址长度为10bit,逻辑节点B中存储的值对应的前缀地址长度为16bit,则物理节点C中存储的便是逻辑节点B中的值。
在转发表中表项出现增加、删除等改变的情形下,对应逻辑树、物理树会发生变化,因而需要重新获取物理跳跃路径的跳跃数据。在逻辑树、物理树发生变化的情况下,逻辑树、物理树中节点所处的层级也会相应改变。本申请实施例中,通过以下步骤A至步骤E获得物理跳跃路径的跳跃数据。
步骤A:确定各逻辑节点的有效数量。
其中,逻辑节点的有效数量的初始值为该逻辑节点的表项数量,每一逻辑节点的表项数量为:上述逻辑树中从该逻辑节点出发的所有路径对应的路由表项的数量。
参见图6,为本申请实施例提供的第二种逻辑树的结构示意图。图6中,一个圆圈便是一个逻辑节点,圆圈中的数字便是该逻辑节点的有效数量。一个逻辑节点的有效数量信息可存储于该逻辑节点中。
步骤B:针对当前的优化节点,将当前的第三节点加入逻辑跳跃路径,并选择当前的第三节点的子节点中有效数量最大的节点,作为新的第三节点。
返回执行上述将当前的第三节点加入逻辑跳跃路径的步骤,直至达到第二预设终止条件,生成一条逻辑跳跃路径。
其中,上述优化节点为:对应上述分裂节点的任一逻辑节点;该优化节点对应的初始的第三节点为该优化节点。
参照图6,图6中根节点(有效数量1000)的有效数量最大,故根节点为最开始的优化节点。之后,分析根节点的子节点,发现根节点当前的子节点中有效数量最大的节点为节点A(有效数量700),则节点A为新的第三节点,将节点A加入逻辑跳跃路径。之后,确定出节点A的子节点中有效数量最大的节点为节点B(有效数量500),则节点B为新的第三节点。之后,针对新的第三节点,也就是当前的第三节点,继续执行上述将当前的第三节点加入逻辑跳跃路径及其之后的步骤,直至达到第二预设终止条件,便生成了一条逻辑跳跃路径。另外,作为一种示例,图6中圆圈里的数字为节点的有效数量,这些有效数量都是初始值,即图6中一个节点的有效数量与该节点的表项数量的取值相同。
本申请一个实施例中,可用第一预设终止子条件1和/或第一预设终止子条件2来描述上述第二预设终止条件。
第一预设终止子条件1:当前的第三节点的子节点的有效数量均小于等于平衡数量,其中,上述平衡数量为:上述转发表中包含的转发表项的总数与第一预设数量之商,上述第一预设数量为:预设逻辑跳跃路径数量与预设参数之和。
具体的,按照图6,上述转发表中包含的转发表项的总数为1000。上述预设参数可以是1或2,或者3,等等。在一种示例中,上述预设参数为1,则上述平衡数量=转发表中包含的转发表项的总数/(预设逻辑跳跃路径数量+1)。
第一预设终止子条件2:当前的逻辑跳跃路径中包含的逻辑节点的数量达到上述预设最大数量。
具体的,例如上述预设最大数量为8,则在当前的逻辑跳跃路径中包含的逻辑节点的数量为8时,便满足了第一预设终止子条件2。
步骤C:在该逻辑跳跃路径中除根节点外的每一逻辑节点的有效数量上减少第一变化量。
其中,上述第一变化量为:该逻辑跳跃路径的末位节点当前的有效数量。
参照图6,若平衡数量为100,则在节点D处发现节点D的子节点的有效数量均为100,满足了第二预设终止条件,则节点D便是最后一个加入当前的逻辑跳跃路径的节点,节点D为当前确定的逻辑跳跃路径的末位节点。由于节点D当前的有效数量为200,因此,在该逻辑跳跃路径中除根节点外的每一逻辑节点的有效数量上减少第一变化量,即是对于节点A、节点B、节点C、节点D,分别对每一节点的有效数量减去200,则节点A最新的有效数量为500,节点B最新的有效数量为300,节点C最新的有效数量为100,节点D最新的有效数量为0。
参见图7,为本申请实施例提供的第三种逻辑树的结构示意图,图7中圆圈里括号中的数字便是进行减法运算后节点最新的有效数量。
在更新节点的有效数量后,确定新的优化节点,返回执行上述步骤B,直至达到第三预设终止条件。
本申请一个实施例中,可将分裂节点信息提取存储于优化链表中,对弹出优化链表的一个分裂节点作为优化节点进行逻辑跳跃路径的确定后,便从优化链表中弹出下一个分裂节点,作为新的优化节点。
在根据步骤C更新了已确定的逻辑跳跃路径中逻辑节点的有效数量后,根据更新后的节点的有效数量,确定新的逻辑跳跃路径,也就是按照步骤B的方式,继续针对当前的优化节点,将当前的第三节点加入逻辑跳跃路径,这里的逻辑跳跃路径便是新的逻辑跳跃路径。
参照图7,更新有效数量后,根节点(有效数量1000)的一个子节点的有效数量为300,另一个子节点的有效数量为500(节点A),根节点为新的逻辑跳跃路径的起始点;之后,由于根节点的子节点中节点A的有效数量最大,则选择节点A为新的、当前的第三节点,加入新的逻辑跳跃路径;节点A的子节点中有效数量最大的节点为节点B(有效数量300),选择节点B为当前的第三节点,加入新的逻辑跳跃路径;节点B的子节点中有效数量最大的节点为节点E(有效数量200),选择节点E为当前的第三节点,加入新的逻辑跳跃路径;由于节点E的子节点的有效数量均为100,在平衡数量为100的情况下,节点E便是最后一个加入新的逻辑跳跃路径的节点,节点E为确定的新的逻辑跳跃路径的末位节点。
在确定新的逻辑跳跃路径的过程中,若达到第三预设终止条件,便不再进行逻辑跳跃路径的确定。本申请一个实施例中,可用第二预设终止子条件1和/或第二预设终止子条件2来描述第三预设终止条件。
第二预设终止子条件1:所生成的逻辑跳跃路径的数量达到第三预设数量。
例如,若第三预设数量为7,则在生成7条逻辑跳跃路径的情况下,便满足第二预设终止子条件1。
第二预设终止子条件2:所有对应分裂节点的逻辑节点当前的有效数量均小于等于平衡数量。
其中,平衡数量为:转发表中包含的转发表项的总数与第一预设数量之商,第一预设数量为:预设逻辑跳跃路径数量与预设参数之和。例如,预设逻辑跳跃路径数量为7或2等。
具体的,若平衡数量为100,在所有对应分裂节点的逻辑节点当前的有效数量均小于等于100的情况下,便满足第二预设终止子条件2。
步骤D:将逻辑跳跃路径对应的前缀地址作为物理跳跃路径的跳跃数据。
对于生成的逻辑跳跃路径,便可将该逻辑跳跃路径对应的前缀地址作为物理跳跃路径的跳跃数据。
由以上可见,在本申请实施例提供的方案中,基于逻辑节点的有效数量确定逻辑跳跃路径,并进行有效数量的更新以确定新的逻辑跳跃路径,能够使查找转发信息过程中各查找路径所需的查找次数尽量保持平衡,提升查找性能。
本申请一个实施例中,在上述步骤D之后,还包括以下步骤E与步骤F。
步骤E:确定是否存在末位节点的子节点当前的有效数量大于平衡数量的逻辑跳跃路径。
其中,上述平衡数量为:转发表中包含的转发表项的总数与第一预设数量之商,第一预设数量为:预设逻辑跳跃路径数量与预设参数之和。
在确定各逻辑跳跃路径的过程中,若依据的第二预设终止条件为:当前的逻辑跳跃路径中包含的逻辑节点的数量达到预设最大数量,则可能会出现确定出的逻辑跳跃路径的末位节点的子节点当前的有效数量大于平衡数量。
对确定出的每一逻辑跳跃路径,确定该逻辑跳跃路径末位节点的子节点当前的有效数量是否大于平衡数量。
步骤F:若存在,则去除除目标跳跃路径之外的其他逻辑跳跃路径。
其中,上述目标跳跃路径为:包含的逻辑节点最多的第二预设数量个逻辑跳跃路径。
若存在有逻辑跳跃路径末位节点的子节点当前的有效数量大于平衡数量,表明当前确定逻辑跳跃路径的方式,并不能达到使查找转发信息过程中各查找路径所需的查找次数尽量保持平衡的目标,在这种情况下,便将目标跳跃路径之外的其他逻辑跳跃路径去除,只保留目标跳跃路径作为最终生成的逻辑跳跃路径。例如,在4条逻辑跳跃路径中存在有逻辑跳跃路径末位节点的子节点当前的有效数量大于平衡数量,其中,逻辑跳跃路径1为:针对节点1→节点2→节点3→节点4→节点5这一路径,直接从节点1跳跃至节点5;逻辑跳跃路径2为:针对节点1→节点2→节点3→节点6这一路径,直接从节点1跳跃至节点6;逻辑跳跃路径3为:针对节点7→节点8→节点9→节点10→节点11→节点12这一路径,直接从节点7跳跃至节点12;逻辑跳跃路径4为:针对节点7→节点8→节点9→节点13这一路径,直接从节点7跳跃至节点13。在这4条逻辑跳跃路径中,逻辑跳跃路径1包含5个逻辑节点,逻辑跳跃路径2包含4个逻辑节点,逻辑跳跃路径3包含6个逻辑节点,逻辑跳跃路径4包含4个逻辑节点,若第二预设数量为2,则目标跳跃路径为逻辑跳跃路径1与逻辑跳跃路径3,也就是去除逻辑跳跃路径2与逻辑跳跃路径4。
对于一个去除的逻辑跳跃路径,若在生成该逻辑跳跃路径的过程中,对该逻辑跳跃路径中的逻辑节点的有效数量进行了减少,则在去除该逻辑跳跃路径后,将有效数量减少了的逻辑节点的有效数量恢复为未减少前的数量。
具体的,可参见表4,为本申请实施例提供的对目标跳跃路径的设置说明表。
表4
逻辑跳跃路径格式(x,y)中的x即代表预设逻辑跳跃路径数量。
本申请实施例中,可设置多种逻辑跳跃路径格式,若使用一种逻辑跳跃路径格式生成的逻辑跳跃路径不符合需要,则使用下一种逻辑跳跃路径格式进行逻辑跳跃路径的生成。
当然,表4中的设置说明只是一种示例,还可以根据需求进行对目标跳跃路径有关的设置。
由以上可见,在本申请实施例提供的方案中,若出现逻辑跳跃路径的末位节点的子节点当前的有效数量大于平衡数量,则去除除目标跳跃路径之外的其他逻辑跳跃路径,以尽可能保持转发信息查找过程中查找次数的平衡,提升整体查找效率。
本申请一个实施例中,在确定新的逻辑跳跃路径之后,还包括以下步骤G与步骤H。
步骤G:若新的逻辑跳跃路径为当前优化节点下子节点的已确定的逻辑跳跃路径的子集,或满足预设去除条件,则去除已确定的逻辑跳跃路径。
其中,上述预设去除条件为:已确定的逻辑跳跃路径的起始节点位于新的逻辑跳跃路径中,并且新的逻辑跳跃路径与已确定的逻辑跳跃路径之间存在交集,且新的逻辑跳跃路径的末位节点位于已确定的逻辑跳跃路径中。
在一种情形中,新的逻辑跳跃路径为当前优化节点下子节点的已确定的逻辑跳跃路径的子集,则在查找逻辑树的过程中,由于会根据新的逻辑跳跃路径进行跳跃查找,已确定的逻辑跳跃路径并不会被使用到,可称已确定的逻辑跳跃路径为不可达跳跃路径,去除已确定的逻辑跳跃路径。
在另一种情形中,可如图8所示,图8为本申请实施例提供的第四种逻辑树的结构示意图。从图8中可以看出,已确定的逻辑跳跃路径的起始节点位于新的逻辑跳跃路径中,并且新的逻辑跳跃路径与已确定的逻辑跳跃路径之间存在交集,且新的逻辑跳跃路径的末位节点位于已确定的逻辑跳跃路径中,在这种情形下,每次查找到新的逻辑跳跃路径的起始节点时,便会从该起始节点直接跳跃到新的逻辑跳跃路径的末位节点,会跳过已确定的逻辑跳跃路径的起始节点,也就是已确定的逻辑跳跃路径并不会被使用,故去除已确定的逻辑跳跃路径。
由以上的描述可知,若新的逻辑跳跃路径为当前优化节点下子节点的已确定的逻辑跳跃路径的子集,或满足预设去除条件,则表明已确定的逻辑跳跃路径并不会被使用,已确定的逻辑跳跃路径为不可达跳跃路径,在这种情形下便去除已确定的逻辑跳跃路径。
步骤H:在去除的逻辑跳跃路径中逻辑节点当前的有效数量上增加第二变化量。
其中,上述第二变化量为:之前生成去除的逻辑跳跃路径时在逻辑节点的有效数量上减去的第一变化量。
也就是说,在一些逻辑节点的有效数量上减去了第一变化量,之后在此基础上确定出了逻辑跳跃路径。而由于在步骤G中去除了逻辑跳跃路径,故不再需要让上述的一些逻辑节点的有效数量减去第一变化量,因而在去除的逻辑跳跃路径中逻辑节点当前的有效数量上增加第二变化量。
由以上可见,在本申请实施例提供的方案中,会判断是否需要对逻辑跳跃路径进行去除,从而保证最后留下的均为可使用的逻辑跳跃路径。
本申请一个实施例中,在确定新的逻辑跳跃路径之后,还包括以下步骤I与步骤J。
步骤I:若新的逻辑跳跃路径的末位节点对应分裂节点,且该末位节点对应的分裂后参数为第一预设值,则去除该末位节点下的所有已存在的逻辑跳跃路径。
其中,该末位节点所在层起第一次序层的WC(Worst Case,最坏访问环境)值最大,上述第一次序的取值等于上述分裂后参数。例如,若上述第一预设值为8,也就是第一次序的取值为8,则末位节点所在层之后第8层的WC值最大。
对步骤I可示例性说明如下:由于Btree-32一次分裂最大就是8bit,如果末位节点对应的分裂后参数为8,那么便不需要通过该末位节点来找到它下面的子节点,可直接通过跳跃实现,所以该末位节点下面的所有逻辑跳跃路径也就失去了意义,故去除该末位节点下的所有已存在的逻辑跳跃路径。
步骤J:在去除的逻辑跳跃路径中逻辑节点当前的有效数量上增加第二变化量。
其中,第二变化量为:之前生成去除的逻辑跳跃路径时在逻辑节点的有效数量上减去的第一变化量。
由以上可见,在本申请实施例提供的方案中,若新的逻辑跳跃路径的末位节点对应分裂节点,且该末位节点对应的分裂后参数为第一预设值,表明该末位节点下的所有逻辑跳跃路径为不可达跳跃路径,便去除这些逻辑跳跃路径,能够避免出现冗余无用的逻辑跳跃路径。
本申请一个实施例中,在生成新的逻辑跳跃路径之后,还包括以下步骤K至步骤M。
步骤K:确定逻辑树中备选层的WC值。
其中,上述备选层为新的逻辑跳跃路径的末位节点所在层之后第二次序层,上述第二次序的取值为第二预设值。
确定逻辑树中备选层的WC值,也就是确定出了在查找逻辑树过程中备选层的最大访问次数。第二预设值根据需求设置,例如第二预设值在[0、3、5、8]中选取,如第二预设值为8,则备选层为新的逻辑跳跃路径的末位节点所在层之后第8层。
步骤L:选择WC值最大的备选层中、位于该末位节点的逻辑子树内的、当前的有效数量最大的逻辑节点。
在步骤M中选出的逻辑节点的有效数量大,对该逻辑节点进行跳跃查找能提升查找转发信息的效率,且该逻辑节点的有效数量越大,对查找转发信息效率的提升越高。
步骤M:将从该末位节点至所选择的逻辑节点的路径加入上述新的逻辑跳跃路径。
将从该末位节点至所选择的逻辑节点的路径加入上述新的逻辑跳跃路径后,便意味着能够从上述新的逻辑跳跃路径的起始节点直接跳跃查找至该选择出的逻辑节点。示例性的,参见图9,为本申请实施例提供的第五种逻辑树的结构示意图,图9中的节点C便是按步骤L的方式选择出的逻辑节点,图9中的节点B为步骤L中的末位节点,从节点A至节点B为新的逻辑跳跃路径,将从节点B至节点C的路径加入新的逻辑跳跃路径,便表明可直接从节点A跳跃查找至节点C。
由以上可见,在本申请实施例提供的方案中,通过选择WC值最大的备选层中、位于末位节点的逻辑子树内的、当前的有效数量最大的逻辑节点,并将从该末位节点至所选择的逻辑节点的路径加入新的逻辑跳跃路径,能够生成跳过的逻辑节点更多的逻辑跳跃路径。
本申请一个实施例中,对于一个新生成的逻辑跳跃路径,通过该逻辑跳跃路径可直接跳跃查找到该逻辑跳跃路径的末位节点,而不会通过该末位节点的父节点来查找到该末位节点,本申请实施例中将该末位节点称为虚拟节点。图10为本申请实施例提供的一种虚拟节点的示意图。每一新生成的逻辑跳跃路径均会产生虚拟节点,由于不会通过虚拟节点的父节点来查找虚拟节点,因此,对于存在子节点为虚拟节点的父节点,首先将该父节点中的虚拟节点信息复制存储到新生成的逻辑跳跃路径的起始分裂节点的数据结构中,再将该父节点中的虚拟节点信息进行释放,而在去除逻辑跳跃路径的情况下,则需将父节点中释放的虚拟节点信息进行恢复。
另外,本申请实施例中,在生成逻辑跳跃路径的过程中不会出现为无效跳跃,即不会使用到的逻辑跳跃路径。参见图11,为本申请实施例提供的第六种逻辑树的结构示意图。图11中的数字,如500、300等,表示节点的有效数量。若是不按照上述步骤C的方式进行节点有效数量的更新,参照图11,在已经存在一条从节点A跳跃至节点F的逻辑跳跃路径的情况下,可能会产生从节点B跳跃至节点E或是从节点B跳跃至节点G的逻辑跳跃路径。但本申请实施例中可按照上述步骤C的方式对图11中的节点有效数量进行更新,得到图12所示的第七种逻辑树的结构示意图。图12中,括号内的数字为更新后的节点有效数量,可以看出,此时节点E更新后的有效数量为0,也就不会再生成从节点B跳跃至节点E或是从节点B跳跃至节点G的逻辑跳跃路径。
本申请的一个实施例中,在最终生成物理树后,可将物理树写入到DDR(DoubleData Rate Synchronous Dynamic Random Access Memory,双倍速率同步动态随机存储器)实现硬件查找加速。或者不写入DDR中采用软件形式进行查找。另外,本申请实施例可在查找转发信息的同时进行逻辑跳跃路径的生成。
参见图13,为本申请实施例提供的第一种实现报文的转发信息跳跃查找的架构示意图,对图13所示的架构可说明如下:
表项优化收集模块:用于在转发表中添加表项、删除表项、更新表项过程中,对物理树节点进行遍历时,收集所有的分裂节点到优化链表中。
其中,对于优化链表,可参见图14所示的优化链表结构示意图。图14中,对节点所处深度可示例说明如下:节点S1、S2处于同一深度,节点S4、S5处于同一深度。对于图14中的链表头可示例性说明如下:如对于节点S4,其对应的pNext表示链表中S4的下一节点位置,pPrev表示链表中S4上一节点位置,pData表示链表中S4的数据的位置,value表示链表中S4的值,index表示链表中S4在数组中的索引,pNode表示链表中S4节点位置。
图14中的优化节点存储数组的每个元素都存储一个链表节点头,优化节点存储数组[0]存储的链表中的节点深度最低,处于物理树的最上层节点。
表项跳跃模块:用于进行跳跃查找,快速找到当前需要操作的节点位置。
表项物理树压缩模块:用于解析前缀地址,每次最多提取分析8个bit,找到需要操作的节点位置。
第一表项构建模块:用于节点的插入、删除或者更新,同时将最终要操作的每个节点封装成一个16B(字节)大小的数据结构,写入到DDR供硬件加速查表。
参见图15,为本申请实施例提供的第二种实现报文的转发信息跳跃查找的架构示意图,对图15所示的架构可说明如下:
线程定时器:用于执行定时任务,在指定的时间间隔后启动线程,执行特定的程序或触发一些操作。具体的,本文中的线程定时器执行的动作起始就是本申请实施例的方案。
优化节点提取模块:用于将优化链表中的节点按顺序从头结点开始依次提取出来,提取出来的节点为优化节点。
“操作跳跃”算法模块:用于收集每个优化节点的前缀地址,根据收集到的前缀地址进行“操作”,“操作”指的是对前缀地址对应的逻辑节点的有效数量进行更新。
跳跃生成模块:用于生成逻辑跳跃路径。
计算模块:用于生成逻辑跳跃路径的末位节点对应的分裂后参数。
标记模块:用于对生成的逻辑跳跃路径造成的一些影响进行标记,包括不可达跳跃路径、不可达节点、跳跃目标节点进行标记。
节点处理模块:负责对可达节点的子节点进行更新。
第二表项构建模块:用于对因生成逻辑跳跃路径造成的受影响节点写入到DDR,通过硬件加速,提高查找节点的效率。
对100条19B路由表和10000条19B路由表应用本申请实施例方案前后得到的性能指标数据如下:
具体的,对100条19B路由表应用本申请实施例方案前后得到的性能指标数据见如下表5,表5为本申请实施例提供的第一种性能指标数据统计表。
表5
对10000条19B路由表应用本申请实施例方案前后得到的性能指标数据见如下表6,表6为本申请实施例提供的第二种性能指标数据统计表。
表6
从表5、表6中可以看出,应用本申请实施例方案后的查找次数明显下降,且随着表项指数级的增加,平均访问次数上涨趋势趋于缓慢,虽然物理节点的数量有少量增加,不过增长量不大,相对于查找性能提升而言,可以忽略不计。
具体的,对于以上报文转发方法的各实施例,除去步骤S501至步骤S505以及步骤N至步骤P之外的其余方法步骤由网络设备中的主机侧执行。
与前述的一种报文转发方法相对应,本申请实施例还提供了一种报文转发装置。
参见图16,为本申请实施例提供的一种报文转发装置的结构示意图,该装置应用于网络设备,上述网络设备中包含与转发表对应的物理树,上述物理树中的每一物理节点中包含上述转发表中转发表项内的网络地址中包含的地址数据,针对每一物理节点,在上述物理树中从根节点至该物理节点的路径中各物理节点内包含的地址数据组成分支地址,全部或部分物理节点中包含该物理节点的分支地址在上述转发表中对应的转发信息;
上述物理节点中包括:存在子节点的分裂节点,全部或部分分裂节点中还包含:跳跃信息,上述跳跃信息包括:物理跳跃路径对应的跳跃数据、跳跃目标节点在上述物理树中的跳跃地址,上述物理跳跃路径为:上述物理树中从该分裂节点至上述跳跃目标节点的路径,上述跳跃数据由上述物理跳跃路径经过的物理节点中包含的地址数据组成;
上述装置包括:
获取模块1601,用于接收报文,获取上述报文的目的地址。
第一确定模块1602,用于若当前的查找目标节点为分裂节点,则确定该分裂节点中是否包含跳跃信息;其中,初始的查找目标节点为上述物理树的根节点。
第二确定模块1603,用于若包含上述跳跃信息,则在上述跳跃数据与上述目的地址中包含的数据相同的情况下,确定上述跳跃地址指示的跳跃目标节点为新的查找目标节点;返回触发执行上述第一确定模块1602。
查找模块1604,用于若不包含上述跳跃信息或上述跳跃数据与上述目的地址中包含的数据不相同,从当前的查找目标节点的子节点中查找与上述目的地址匹配的物理节点,将查找到的物理节点作为新的查找目标节点;返回触发执行上述第一确定模块1602,直至达到第一预设终止条件。
获取与转发模块1605,用于获取最终的查找目标节点中的转发信息,转发上述报文。
由以上可见,在本申请实施例提供的方案中,网络设备中包含与转发表对应的物理树,在物理树的一些分裂节点中包含跳跃信息,并且全部或部分物理节点中存储有转发信息。在获取到报文的目的地址后,将物理树的根节点作为初始的查找目标节点,开始进行信息查找。在当前查找目标节点为分裂节点的情况下,便会确定当前的查找目标节点中是否包含跳跃信息。由于跳跃信息中包含的跳跃数据由物理跳跃路径经过的物理节点中包含的地址数据组成,因此,会有以下两种情形:第一种情形中,发现跳跃数据与上述目的地址相同,便意味着无需从当前的查找目标节点再逐个节点往下查找,而是可以直接从当前的查找目标节点跳跃至跳跃信息中跳跃地址指示的跳跃目标节点,该跳跃目标节点即为新的查找目标节点。第二种情形中,发现跳跃数据与上述目的地址不相同或是当前的查找目标节点中不包含跳跃信息,则按逐个节点查找的方式,从当前的查找目标节点的子节点中查找出与上述目的地址匹配的节点,作为新的查找目标节点,并在该新的查找目标节点为分裂节点的情况下,继续按照上述的在当前查找目标节点为分裂节点的情况下后所使用的处理方式,确定新的查找目标节点,最后根据查找目标节点中的转发信息来转发报文。应用本申请实施例提供的方案,在发现跳跃数据与目的地址相同的情况下,可以直接从当前的查找目标节点跳跃至跳跃信息中跳跃地址指示的跳跃目标节点,减少了节点查找次数,提高了查找到转发信息的效率,从而能够实现报文转发效率的提升。
本申请一个实施例中,全部或部分分裂节点中包含转发信息,上述物理树中的物理节点还包括:结果节点、叶子节点,上述结果节点与叶子节点不存在子节点,每一结果节点中还包含:一条分支地址在转发表中对应的转发信息,每一叶子节点中还包含:多条分支地址在转发表中对应的转发信息,上述获取与转发模块1605,具体用于:
若当前的查找目标节点为分裂节点,该分裂节点为根据上述目的地址查找的最后一个物理节点,获取该分裂节点中与上述目的地址匹配的分支地址对应的转发信息,基于所获得的转发信息,转发上述报文;
若当前的查找目标节点为结果节点,则获取该结果节点中的转发信息,基于所获得的转发信息,转发上述报文;
若当前的查找目标节点为叶子节点,则获取该叶子节点中与上述目的地址匹配的分支地址对应的转发信息,基于所获得的转发信息,转发上述报文。
根据查找目标节点的不同类型,针对性地获取用于转发报文的转发信息,从而能够完成后续的报文转发。
本申请一个实施例中,上述网络设备中还包含与转发表对应的逻辑树;除根节点外,上述逻辑树中包含存在子节点的第一节点与不存在子节点的第二节点;
每一第一节点中包含上述转发表中转发表项内的网络地址中的数据,全部或部分第一节点中还包含该第一节点的前缀地址对应的转发信息,每一第二节点中包含该第二节点的前缀地址对应的转发信息;
节点的前缀地址为:从上述逻辑树的根节点到该节点的路径中包含的各节点中的数据组成的地址;
物理节点中包含的地址数据为与该物理节点有对应关系的逻辑节点对应的前缀地址中最长的前缀地址;
上述装置还包括:
第三确定模块1606,用于确定各逻辑节点的有效数量,其中,逻辑节点的有效数量的初始值为该逻辑节点的表项数量,每一逻辑节点的表项数量为:上述逻辑树中从该逻辑节点出发的所有路径对应的路由表项的数量。
加入与返回执行模块1607,用于针对当前的优化节点,将当前的第三节点加入逻辑跳跃路径,并选择当前的第三节点的子节点中有效数量最大的节点,作为新的第三节点,返回执行上述将当前的第三节点加入逻辑跳跃路径的步骤,直至达到第二预设终止条件,生成一条逻辑跳跃路径。
其中,上述优化节点为:对应上述分裂节点的任一逻辑节点;该优化节点对应的初始的第三节点为该优化节点。
减少模块1608,用于在该逻辑跳跃路径中除根节点外的每一逻辑节点的有效数量上减少第一变化量,其中,上述第一变化量为:该逻辑跳跃路径的末位节点当前的有效数量;确定新的优化节点,返回触发执行上述加入与返回执行模块1607,直至达到第三预设终止条件。
第四确定模块1609,用于将逻辑跳跃路径对应的前缀地址作为物理跳跃路径的跳跃数据。
由以上可见,在本申请实施例提供的方案中,基于逻辑节点的有效数量确定逻辑跳跃路径,并进行有效数量的更新以确定新的逻辑跳跃路径,能够使查找转发信息过程中各查找路径所需的查找次数尽量保持平衡,提升查找性能。
本申请一个实施例中,上述装置还包括:
第五确定模块1610,用于确定是否存在末位节点的子节点当前的有效数量大于平衡数量的逻辑跳跃路径,其中,上述平衡数量为:上述转发表中包含的转发表项的总数与第一预设数量之商,上述第一预设数量为:预设逻辑跳跃路径数量与预设参数之和。
第一去除模块1611,用于在存在末位节点的子节点当前的有效数量大于平衡数量的逻辑跳跃路径的情况下,则去除除目标跳跃路径之外的其他逻辑跳跃路径,其中,上述目标跳跃路径为:包含的逻辑节点最多的第二预设数量个逻辑跳跃路径。
由以上可见,在本申请实施例提供的方案中,若出现逻辑跳跃路径的末位节点的子节点当前的有效数量大于平衡数量,则去除除目标跳跃路径之外的其他逻辑跳跃路径,以尽可能保持转发信息查找过程中查找次数的平衡,提升整体查找效率。
本申请一个实施例中,上述装置还包括:
第二去除模块1612,用于若新的逻辑跳跃路径为当前优化节点下子节点的已确定的逻辑跳跃路径的子集,或满足预设去除条件,则去除已确定的逻辑跳跃路径,其中,上述预设去除条件为:已确定的逻辑跳跃路径的起始节点位于新的逻辑跳跃路径中,并且新的逻辑跳跃路径与已确定的逻辑跳跃路径之间存在交集,且新的逻辑跳跃路径的末位节点位于已确定的逻辑跳跃路径中。
第一增加模块1613,用于在已确定的逻辑跳跃路径中逻辑节点当前的有效数量上增加第二变化量,其中,上述第二变化量为:生成新的逻辑跳跃路径时在逻辑节点的有效数量上减去的第一变化量。
由以上可见,在本申请实施例提供的方案中,会判断是否需要对逻辑跳跃路径进行去除,从而保证最后留下的均为可使用的逻辑跳跃路径。
本申请一个实施例中,上述装置还包括:
第三去除模块1614,用于若上述新的逻辑跳跃路径的末位节点对应分裂节点,且该末位节点对应的分裂后参数为第一预设值,则去除该末位节点下的所有已存在的逻辑跳跃路径,其中,该末位节点所在层起第一次序层的WC值最大,第一次序的取值等于上述分裂后参数。
第二增加模块1615,用于在去除的逻辑跳跃路径中逻辑节点当前的有效数量上增加第二变化量,其中,上述第二变化量为:之前生成去除的逻辑跳跃路径时在逻辑节点的有效数量上减去的第一变化量。
由以上可见,在本申请实施例提供的方案中,若新的逻辑跳跃路径的末位节点对应分裂节点,且该末位节点对应的分裂后参数为第一预设值,表明该末位节点下的所有逻辑跳跃路径为不可达跳跃路径,便去除这些逻辑跳跃路径,能够避免出现冗余无用的逻辑跳跃路径。
本申请一个实施例中,上述装置还包括:
第六确定模块1616,用于确定上述逻辑树中备选层的WC值,其中,上述备选层为上述新的逻辑跳跃路径的末位节点所在层之后第二次序层,第二次序的取值为第二预设值。
选择模块1617,用于选择WC值最大的备选层中、位于该末位节点的逻辑子树内的、当前的有效数量最大的逻辑节点。
加入模块1618,用于将从该末位节点至所选择的逻辑节点的路径加入上述新的逻辑跳跃路径。
由以上可见,在本申请实施例提供的方案中,通过选择WC值最大的备选层中、位于末位节点的逻辑子树内的、当前的有效数量最大的逻辑节点,并将从该末位节点至所选择的逻辑节点的路径加入新的逻辑跳跃路径,能够生成跳过的逻辑节点更多的逻辑跳跃路径。
本申请一个实施例中,上述第二预设终止条件为:当前的第三节点的子节点的有效数量均小于等于平衡数量;其中,上述平衡数量为:上述转发表中包含的转发表项的总数与第一预设数量之商,上述第一预设数量为:预设逻辑跳跃路径数量与预设参数之和;
和/或
当前的逻辑跳跃路径中包含的逻辑节点的数量达到上述预设最大数量。
本申请一个实施例中,上述第三预设终止条件为:所生成的逻辑跳跃路径的数量达到第三预设数量;
和/或
所有对应分裂节点的逻辑节点当前的有效数量均小于等于平衡数量;其中,上述平衡数量为:上述转发表中包含的转发表项的总数与第一预设数量之商,上述第一预设数量为:预设逻辑跳跃路径数量与预设参数之和。
本申请一个实施例中,上述物理树中的物理节点是基于预设结构的Btree生成的。
与前述报文转发方法相对应,本申请实施例还提供了一种网络设备,该网络设备执行前述任一报文转发方法的步骤。如图17所示,上述网络设备包括:
主机侧处理器1701;NP1705;
收发器1704;
机器可读存储介质1702,上述机器可读存储介质1702存储有能够被上述主机侧处理器1701或NP1705执行的机器可执行指令,上述主机侧处理器1701、NP1705根据机器可执行指令执行前述报文转发方法的步骤。具体的,NP1705执行前述报文转发方法中步骤S501至步骤S505以及步骤N至步骤P,主机侧处理器1701执行前述报文转发方法中除去步骤S501至步骤S505以及步骤N至步骤P之外的其余方法步骤。
如图17所示,网络设备还可以包括通信总线1703。主机侧处理器1701、NP1705、机器可读存储介质1702及收发器1704之间通过通信总线1703完成相互间的通信,通信总线1703可以是外设部件互连标准(Peripheral Component Interconnect,PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,EISA)总线等。该通信总线1703可以分为地址总线、数据总线、控制总线等。
收发器1704可以为无线通信模块,收发器1704在主机侧处理器1701或NP1705的控制下,与其他设备进行数据交互。
机器可读存储介质1702可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。另外,机器可读存储介质1702还可以是至少一个位于远离前述处理器的存储装置。
主机侧处理器1701可以是除NP以外的通用处理器,包括中央处理器(CentralProcessing Unit,CPU);还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
由以上可见,在本申请实施例提供的方案中,网络设备中包含与转发表对应的物理树,在物理树的一些分裂节点中包含跳跃信息,并且全部或部分物理节点中存储有转发信息。在获取到报文的目的地址后,将物理树的根节点作为初始的查找目标节点,开始进行信息查找。在当前查找目标节点为分裂节点的情况下,便会确定当前的查找目标节点中是否包含跳跃信息。由于跳跃信息中包含的跳跃数据由物理跳跃路径经过的物理节点中包含的地址数据组成,因此,会有以下两种情形:第一种情形中,发现跳跃数据与上述目的地址相同,便意味着无需从当前的查找目标节点再逐个节点往下查找,而是可以直接从当前的查找目标节点跳跃至跳跃信息中跳跃地址指示的跳跃目标节点,该跳跃目标节点即为新的查找目标节点。第二种情形中,发现跳跃数据与上述目的地址不相同或是当前的查找目标节点中不包含跳跃信息,则按逐个节点查找的方式,从当前的查找目标节点的子节点中查找出与上述目的地址匹配的节点,作为新的查找目标节点,并在该新的查找目标节点为分裂节点的情况下,继续按照上述的在当前查找目标节点为分裂节点的情况下后所使用的处理方式,确定新的查找目标节点,最后根据查找目标节点中的转发信息来转发报文。应用本申请实施例提供的方案,在发现跳跃数据与目的地址相同的情况下,可以直接从当前的查找目标节点跳跃至跳跃信息中跳跃地址指示的跳跃目标节点,减少了节点查找次数,提高了查找到转发信息的效率,从而能够实现报文转发效率的提升。
在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被网络设备执行时实现上述任一报文转发方法的步骤。
应用本申请实施例提供的计算机可读存储介质中存储的计算机程序进行报文转发时,由于网络设备中包含与转发表对应的物理树,在物理树的一些分裂节点中包含跳跃信息,并且全部或部分物理节点中存储有转发信息。在获取到报文的目的地址后,将物理树的根节点作为初始的查找目标节点,开始进行信息查找。在当前查找目标节点为分裂节点的情况下,便会确定当前的查找目标节点中是否包含跳跃信息。由于跳跃信息中包含的跳跃数据由物理跳跃路径经过的物理节点中包含的地址数据组成,因此,会有以下两种情形:第一种情形中,发现跳跃数据与上述目的地址相同,便意味着无需从当前的查找目标节点再逐个节点往下查找,而是可以直接从当前的查找目标节点跳跃至跳跃信息中跳跃地址指示的跳跃目标节点,该跳跃目标节点即为新的查找目标节点。第二种情形中,发现跳跃数据与上述目的地址不相同或是当前的查找目标节点中不包含跳跃信息,则按逐个节点查找的方式,从当前的查找目标节点的子节点中查找出与上述目的地址匹配的节点,作为新的查找目标节点,并在该新的查找目标节点为分裂节点的情况下,继续按照上述的在当前查找目标节点为分裂节点的情况下后所使用的处理方式,确定新的查找目标节点,最后根据查找目标节点中的转发信息来转发报文。应用本申请实施例提供的方案,在发现跳跃数据与目的地址相同的情况下,可以直接从当前的查找目标节点跳跃至跳跃信息中跳跃地址指示的跳跃目标节点,减少了节点查找次数,提高了查找到转发信息的效率,从而能够实现报文转发效率的提升。
在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一报文转发方法。
应用本申请实施例提供的计算机程序产品进行报文转发时,由于网络设备中包含与转发表对应的物理树,在物理树的一些分裂节点中包含跳跃信息,并且全部或部分物理节点中存储有转发信息。在获取到报文的目的地址后,将物理树的根节点作为初始的查找目标节点,开始进行信息查找。在当前查找目标节点为分裂节点的情况下,便会确定当前的查找目标节点中是否包含跳跃信息。由于跳跃信息中包含的跳跃数据由物理跳跃路径经过的物理节点中包含的地址数据组成,因此,会有以下两种情形:第一种情形中,发现跳跃数据与上述目的地址相同,便意味着无需从当前的查找目标节点再逐个节点往下查找,而是可以直接从当前的查找目标节点跳跃至跳跃信息中跳跃地址指示的跳跃目标节点,该跳跃目标节点即为新的查找目标节点。第二种情形中,发现跳跃数据与上述目的地址不相同或是当前的查找目标节点中不包含跳跃信息,则按逐个节点查找的方式,从当前的查找目标节点的子节点中查找出与上述目的地址匹配的节点,作为新的查找目标节点,并在该新的查找目标节点为分裂节点的情况下,继续按照上述的在当前查找目标节点为分裂节点的情况下后所使用的处理方式,确定新的查找目标节点,最后根据查找目标节点中的转发信息来转发报文。应用本申请实施例提供的方案,在发现跳跃数据与目的地址相同的情况下,可以直接从当前的查找目标节点跳跃至跳跃信息中跳跃地址指示的跳跃目标节点,减少了节点查找次数,提高了查找到转发信息的效率,从而能够实现报文转发效率的提升。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk (SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、网络设备、计算机可读存储介质及计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的较佳实施例,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。
Claims (14)
1.一种报文转发方法,其特征在于,应用于网络设备,所述网络设备中包含与转发表对应的物理树,所述物理树中的每一物理节点中包含所述转发表中转发表项内的网络地址中包含的地址数据,针对每一物理节点,在所述物理树中从根节点至该物理节点的路径中各物理节点内包含的地址数据组成分支地址,全部或部分物理节点中包含该物理节点的分支地址在所述转发表中对应的转发信息;
所述物理节点中包括:存在子节点的分裂节点,全部或部分分裂节点中还包含:跳跃信息,所述跳跃信息包括:物理跳跃路径对应的跳跃数据、跳跃目标节点在所述物理树中的跳跃地址,所述物理跳跃路径为:所述物理树中从该分裂节点至所述跳跃目标节点的路径,所述跳跃数据由所述物理跳跃路径经过的物理节点中包含的地址数据组成;
所述方法包括:
接收报文,获取所述报文的目的地址;
若当前的查找目标节点为分裂节点,则确定该分裂节点中是否包含跳跃信息;其中,初始的查找目标节点为所述物理树的根节点;
若包含所述跳跃信息,则在所述跳跃数据与所述目的地址中包含的数据相同的情况下,确定所述跳跃地址指示的跳跃目标节点为新的查找目标节点;
若不包含所述跳跃信息或所述跳跃数据与所述目的地址中包含的数据不相同,从当前的查找目标节点的子节点中查找与所述目的地址匹配的物理节点,将查找到的物理节点作为新的查找目标节点;
返回执行所述若当前的查找目标节点为分裂节点,则确定该分裂节点中是否包含跳跃信息的步骤,直至达到第一预设终止条件;
获取最终的查找目标节点中的转发信息,转发所述报文。
2.根据权利要求1所述的方法,其特征在于,所述网络设备中还包含与转发表对应的逻辑树;除根节点外,所述逻辑树中包含存在子节点的第一节点与不存在子节点的第二节点;
每一第一节点中包含所述转发表中转发表项内的网络地址中的数据,全部或部分第一节点中还包含该第一节点的前缀地址对应的转发信息,每一第二节点中包含该第二节点的前缀地址对应的转发信息;
节点的前缀地址为:从所述逻辑树的根节点到该节点的路径中包含的各节点中的数据组成的地址;
物理节点中包含的地址数据为与该物理节点有对应关系的逻辑节点对应的前缀地址中最长的前缀地址;
通过以下方式获得物理跳跃路径的跳跃数据:
确定各逻辑节点的有效数量,其中,逻辑节点的有效数量的初始值为该逻辑节点的表项数量,每一逻辑节点的表项数量为:所述逻辑树中从该逻辑节点出发的所有路径对应的路由表项的数量;
针对当前的优化节点,将当前的第三节点加入逻辑跳跃路径,并选择当前的第三节点的子节点中有效数量最大的节点,作为新的第三节点,返回执行所述将当前的第三节点加入逻辑跳跃路径的步骤,直至达到第二预设终止条件,生成一条逻辑跳跃路径;
其中,所述优化节点为:对应所述分裂节点的任一逻辑节点;该优化节点对应的初始的第三节点为该优化节点;
在该逻辑跳跃路径中除根节点外的每一逻辑节点的有效数量上减少第一变化量,其中,所述第一变化量为:该逻辑跳跃路径的末位节点当前的有效数量;
确定新的优化节点,返回执行所述针对当前的优化节点,将当前的第三节点加入逻辑跳跃路径,并选择当前的第三节点的子节点中有效数量最大的节点,作为新的第三节点的步骤,直至达到第三预设终止条件;
将逻辑跳跃路径对应的前缀地址作为物理跳跃路径的跳跃数据。
3.根据权利要求2所述的方法,其特征在于,在所述将逻辑跳跃路径对应的前缀地址作为物理跳跃路径的跳跃数据之后,还包括:
确定是否存在末位节点的子节点当前的有效数量大于平衡数量的逻辑跳跃路径,其中,所述平衡数量为:所述转发表中包含的转发表项的总数与第一预设数量之商,所述第一预设数量为:预设逻辑跳跃路径数量与预设参数之和;
若存在,则去除除目标跳跃路径之外的其他逻辑跳跃路径,其中,所述目标跳跃路径为:包含的逻辑节点最多的第二预设数量个逻辑跳跃路径。
4.根据权利要求2所述的方法,其特征在于,在确定新的逻辑跳跃路径之后,还包括:
若新的逻辑跳跃路径为当前优化节点下子节点的已确定的逻辑跳跃路径的子集,或满足预设去除条件,则去除已确定的逻辑跳跃路径,其中,所述预设去除条件为:已确定的逻辑跳跃路径的起始节点位于新的逻辑跳跃路径中,并且新的逻辑跳跃路径与已确定的逻辑跳跃路径之间存在交集,且新的逻辑跳跃路径的末位节点位于已确定的逻辑跳跃路径中;
在已确定的逻辑跳跃路径中逻辑节点当前的有效数量上增加第二变化量,其中,所述第二变化量为:生成新的逻辑跳跃路径时在逻辑节点的有效数量上减去的第一变化量。
5.根据权利要求2所述的方法,其特征在于,在确定新的逻辑跳跃路径之后,还包括:
若所述新的逻辑跳跃路径的末位节点对应分裂节点,且该末位节点对应的分裂后参数为第一预设值,则去除该末位节点下的所有已存在的逻辑跳跃路径,其中,该末位节点所在层起第一次序层的最坏访问环境WC值最大,所述第一次序的取值等于所述分裂后参数;
在去除的逻辑跳跃路径中逻辑节点当前的有效数量上增加第二变化量,其中,所述第二变化量为:之前生成去除的逻辑跳跃路径时在逻辑节点的有效数量上减去的第一变化量。
6.根据权利要求2所述的方法,其特征在于,在生成新的逻辑跳跃路径之后还包括:
确定所述逻辑树中备选层的WC值,其中,所述备选层为所述新的逻辑跳跃路径的末位节点所在层之后第二次序层,所述第二次序的取值为第二预设值;
选择WC值最大的备选层中、位于该末位节点的逻辑子树内的、当前的有效数量最大的逻辑节点;
将从该末位节点至所选择的逻辑节点的路径加入所述新的逻辑跳跃路径。
7.根据权利要求2-6中任一项所述的方法,其特征在于,所述第二预设终止条件为:当前的第三节点的子节点的有效数量均小于等于平衡数量;其中,所述平衡数量为:所述转发表中包含的转发表项的总数与第一预设数量之商,所述第一预设数量为:预设逻辑跳跃路径数量与预设参数之和;
和/或
当前的逻辑跳跃路径中包含的逻辑节点的数量达到所述预设最大数量。
8.根据权利要求2-6中任一项所述的方法,其特征在于,所述第三预设终止条件为:所生成的逻辑跳跃路径的数量达到第三预设数量;
和/或
所有对应分裂节点的逻辑节点当前的有效数量均小于等于平衡数量;其中,所述平衡数量为:所述转发表中包含的转发表项的总数与第一预设数量之商,所述第一预设数量为:预设逻辑跳跃路径数量与预设参数之和。
9.根据权利要求1-6中任一项所述的方法,其特征在于,所述物理树中的物理节点是基于预设结构的平衡多路查找树Btree生成的。
10.根据权利要求1-6中任一项所述的方法,其特征在于,全部或部分分裂节点中包含转发信息,所述物理树中的物理节点还包括:结果节点、叶子节点,所述结果节点与叶子节点不存在子节点,每一结果节点中还包含:一条分支地址在转发表中对应的转发信息,每一叶子节点中还包含:多条分支地址在转发表中对应的转发信息,所述获取查找目标节点中的转发信息,转发所述报文,包括:
若当前的查找目标节点为分裂节点,该分裂节点为根据所述目的地址查找的最后一个物理节点,获取该分裂节点中与所述目的地址匹配的分支地址对应的转发信息,基于所获得的转发信息,转发所述报文;
若当前的查找目标节点为结果节点,则获取该结果节点中的转发信息,基于所获得的转发信息,转发所述报文;
若当前的查找目标节点为叶子节点,则获取该叶子节点中与所述目的地址匹配的分支地址对应的转发信息,基于所获得的转发信息,转发所述报文。
11.一种报文转发装置,其特征在于,应用于网络设备,所述网络设备中包含与转发表对应的物理树,所述物理树中的每一物理节点中包含所述转发表中转发表项内的网络地址中包含的地址数据,针对每一物理节点,在所述物理树中从根节点至该物理节点的路径中各物理节点内包含的地址数据组成分支地址,全部或部分物理节点中包含该物理节点的分支地址在所述转发表中对应的转发信息;
所述物理节点中包括:存在子节点的分裂节点,全部或部分分裂节点中还包含:跳跃信息,所述跳跃信息包括:物理跳跃路径对应的跳跃数据、跳跃目标节点在所述物理树中的跳跃地址,所述物理跳跃路径为:所述物理树中从该分裂节点至所述跳跃目标节点的路径,所述跳跃数据由所述物理跳跃路径经过的物理节点中包含的地址数据组成;
所述装置包括:
获取模块,用于接收报文,获取所述报文的目的地址;
第一确定模块,用于若当前的查找目标节点为分裂节点,则确定该分裂节点中是否包含跳跃信息;其中,初始的查找目标节点为所述物理树的根节点;
第二确定模块,用于若包含所述跳跃信息,则在所述跳跃数据与所述目的地址中包含的数据相同的情况下,确定所述跳跃地址指示的跳跃目标节点为新的查找目标节点;返回触发执行所述第一确定模块;
查找模块,用于若不包含所述跳跃信息或所述跳跃数据与所述目的地址中包含的数据不相同,从当前的查找目标节点的子节点中查找与所述目的地址匹配的物理节点,将查找到的物理节点作为新的查找目标节点;返回触发执行所述第一确定模块,直至达到第一预设终止条件;
获取与转发模块,用于获取最终的查找目标节点中的转发信息,转发所述报文。
12.一种网络设备,其特征在于,所述网络设备执行前述权利要求1-10中任一所述报文转发方法中的步骤。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被网络设备执行时实现权利要求1-10中任一所述报文转发方法中的步骤。
14.一种计算机程序产品,其特征在于,所述计算机程序产品促使网络设备:实现权利要求1-10中任一所述报文转发方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410650694.7A CN118233371A (zh) | 2024-05-24 | 2024-05-24 | 一种报文转发方法、装置、网络设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410650694.7A CN118233371A (zh) | 2024-05-24 | 2024-05-24 | 一种报文转发方法、装置、网络设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118233371A true CN118233371A (zh) | 2024-06-21 |
Family
ID=91510511
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410650694.7A Pending CN118233371A (zh) | 2024-05-24 | 2024-05-24 | 一种报文转发方法、装置、网络设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118233371A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101741708A (zh) * | 2008-11-13 | 2010-06-16 | 华为技术有限公司 | 一种存储数据的方法、装置及系统 |
WO2013078776A1 (en) * | 2011-12-02 | 2013-06-06 | Hangzhou H3C Technologies Co., Ltd. | Establishing a label distribution protocol ldp remote neighbor relationship |
CN109951495A (zh) * | 2019-03-29 | 2019-06-28 | 新华三信息安全技术有限公司 | 网段查找方法及装置 |
US20230171184A1 (en) * | 2020-07-14 | 2023-06-01 | Huawei Technologies Co., Ltd. | Packet Forwarding Method, Device, and System |
-
2024
- 2024-05-24 CN CN202410650694.7A patent/CN118233371A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101741708A (zh) * | 2008-11-13 | 2010-06-16 | 华为技术有限公司 | 一种存储数据的方法、装置及系统 |
WO2013078776A1 (en) * | 2011-12-02 | 2013-06-06 | Hangzhou H3C Technologies Co., Ltd. | Establishing a label distribution protocol ldp remote neighbor relationship |
CN109951495A (zh) * | 2019-03-29 | 2019-06-28 | 新华三信息安全技术有限公司 | 网段查找方法及装置 |
US20230171184A1 (en) * | 2020-07-14 | 2023-06-01 | Huawei Technologies Co., Ltd. | Packet Forwarding Method, Device, and System |
Non-Patent Citations (2)
Title |
---|
BANNO, RYOHE等: "An Efficient Routing Method for Range Queries in Skip Graph", 《IEICE TRANSACTIONS ON INFORMATION AND SYSTEMS》, 31 March 2020 (2020-03-31) * |
李维勇;吴阕;张伟;陈云芳;: "一种面向SD-WAN的协议无感知快速源路由转发方案", 计算机工程, no. 07, 10 October 2019 (2019-10-10) * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1358739B1 (en) | Method and apparatus for routing table management | |
EP2560327B1 (en) | Routing table establishment method and device | |
US20060083247A1 (en) | Prefix lookup using address-directed hash tables | |
CN111937360B (zh) | 最长前缀匹配 | |
CA2365395C (en) | Default route coding | |
JP2006527526A (ja) | 限定サイズを有する限定数のサブデータベースに分割された転送データベースを効率的にサーチするシステムと方法 | |
KR100586461B1 (ko) | 파이프라인 이진 트리를 이용한 ip 어드레스 검색 방법,하드웨어 구조 및 기록매체 | |
US20170366459A1 (en) | Jump on a Match Optimization for Longest Prefix Match using a Binary Search Tree | |
CN108134739B (zh) | 一种基于索引特里树的路由查找方法及装置 | |
CN106803809B (zh) | 一种报文转发的方法和装置 | |
CN103051543A (zh) | 一种路由前缀的处理、查找、增加及删除方法 | |
CN110557335B (zh) | 三态内容寻址存储器tcam表项处理方法及装置 | |
US6925503B2 (en) | Method and system for performing a longest prefix match search | |
US10897422B2 (en) | Hybrid routing table for routing network traffic | |
US11888743B1 (en) | Network device storage of incremental prefix trees | |
WO2010054599A1 (zh) | 存储数据的方法、装置及系统 | |
KR100999408B1 (ko) | 해시트리를 이용한 url 검색방법 | |
CN118233371A (zh) | 一种报文转发方法、装置、网络设备及存储介质 | |
CN113824814B (zh) | 一种转发表的地址匹配方法、装置、网络设备及介质 | |
JP4646823B2 (ja) | ルータ装置、ルータ装置におけるルート決定方法 | |
CN107870925B (zh) | 一种字符串过滤方法和相关装置 | |
CN115086221A (zh) | 一种报文处理方法、装置、转发设备和存储介质 | |
US8964759B2 (en) | Method for direct access to information stored in nodes of a packet switching network | |
CN111353018A (zh) | 基于深度包检测的数据处理方法、装置和网络设备 | |
CN112115312B (zh) | 数据名查找方法、系统及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |