一种提升SRv6转发效率的方法与电子设备转让专利

申请号 : CN202110498356.2

文献号 : CN113259241B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张玉婷张继鹏刘剑华任坤高磊盛大富

申请人 : 烽火通信科技股份有限公司

摘要 :

本发明公开了一种提升SRv6转发效率的方法,包括:在软件层面提前实现根据外层封装的IPv6DA通过最长匹配查找IPv6的路由,以使芯片只需要完成一次路由迭代。本发明有效的提高了SRv6隧道场景路由迭代的效率,其次形成了通用化的模型,后续SRv6功能设备侧的开发可移只聚焦于模型设计而不关心代码开发,而且充分利用了线卡资源,减轻主控的负担。本发明还提供了相应的电子设备。

权利要求 :

1.一种提升SRv6转发效率的方法,其特征在于,包括:在软件层面提前实现根据外层封装的IPv6 DA通过最长匹配查找IPv6的路由,以使芯片只需要完成一次路由迭代;其中,

DDPO(Device Data Plant Object,驱动数据平面对象类型)从FDPO(FOS Data Plane Object,FOS数据平面对象类型)映射数据时直接获取到真正的出接口和下一跳,即FDPO迭代链中第二个ROUTE的信息;其中,

FDPO的依赖链是根据DA查找路由转发所需的FDPO依赖链,第一个ROUTE表前缀为目的IP,出段信息在SRV6_NNI_NH中,根据SRV6_NNI_NH表中的VPN SID字段进行最长匹配查找locator路由信息,第二个ROUTE表的前缀即为匹配的locator路由。

2.如权利要求1所述的提升SRv6转发效率的方法,其特征在于,在最长匹配时,A类通过最长匹配依赖B类,则A类为观察者observer,B类为依赖者depender,A类对象observer通过一个链表节点observer_node挂在相应B类对象depender的depender_list中。

3.如权利要求2所述的提升SRv6转发效率的方法,其特征在于,FDPO_CLASS_MGR为FDPO类级的管理数据,LPM_OBSERVER_MGR为A类作为observer的管理信息,包含一条待匹配链wait_list,用来存储匹配失败的A类对象;pobserver_info为A类作为某类observer的具体信息;新增A类对象,需要通过最长匹配查找B类对象,找到后将A类对象的observer_node挂到查找到的B类对象的depender_list中,这样就保存了A类、B类对象的观察关系。

4.如权利要求2所述的提升SRv6转发效率的方法,其特征在于, LPM_DEPENDER_MGR为B类作为depender的管理信息,包含一颗lpm_pat_tree树,存储了所有B类需要参与最长匹配的B类对象,depender_info为B类作为某类depender的具体信息;当新增B类对象时,需要刷新A类对象的最长匹配对象,包括待匹配链wait_list中的A类对象和已经完成匹配的A类对象。

5.如权利要求2所述的提升SRv6转发效率的方法,其特征在于,最长匹配的过程为:A类对象通过最长匹配找到的链表节点对应的是B类对象B0,第二顺位匹配的链表节点对应的是B类的另一个对象B1,即次匹配节点。

6.如权利要求5所述的提升SRv6转发效率的方法,其特征在于,新增B类对象B0时用自身的ip去lpm_pat_tree树匹配,如果找到了另一个B类对象B1,表示B类对象B1的depender_list上的A类对象的最长匹配结果需要刷新成新增的B类对象B0,遍历B1的depender_list中的A类对象进行重匹配,如果没有找到,则说明匹配成功的A类对象中没有更加匹配新增对象的,需要将待匹配链wait_list中未匹配成功的A类对象进行重匹配。

7.如权利要求5所述的提升SRv6转发效率的方法,其特征在于,B类对象B0删除时用先从lpm_pat_tree树中摘除,再用自身的ip去匹配,如果找到了另一个B类对象B1,表示B类对象B0的depender_list上的A类对象第二顺位匹配的对象为B类对象B1,将B类对象B0的depender_list整体移到B类对象B1的depender_list中,就完成了重匹配,如果没有找到,则移入A类的待匹配链中。

8.一种电子设备,其特征在于,包括:

至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1‑7任一项所述的方法。

说明书 :

一种提升SRv6转发效率的方法与电子设备

技术领域

[0001] 本发明属于通信技术领域,更具体地,涉及一种提升SRv6转发效率的方法与电子设备。

背景技术

[0002] 未来的网络是面向5G时代的网络。面对5G,承载网也需要做出相应的调整。SRv6(Segment Routing IPv6,IPv6段路由)是基于源路由理念设计的一种IPv6包的转发方法。
SRv6通过扩展IPv6的报文头,压入一个显式的IPv6地址栈,通过中间节点不停地更新目的
地址和偏移地址栈进行报文转发。这个IPv6地址栈是一些实例化的SID(Segment ID,段标
识),通过对SID的定义和规划,可以实现VPN(Virtual Private Network,虚拟专用网络)的
简化、报文转发路径的灵活规划等。SRv6隧道技术是通过对目的SID进行最长匹配查找路由
的,所以会涉及芯片的路由二次迭代问题。
[0003] 如图1所示。在SRv6网络中,从R1到R8的VPNv4业务,如果是按照SRv6‑BE(Best Effort,尽力服务)的方式转发,则报文封装的IPv6目的地址是End.DT4 SID(R1,2003:
0001:0:8:100::),不携带IPv6扩展头SRH(Segment Routing Head,分段路由头)。将ISIS2
域内的路由分发到ISIS1域内,R1节点查找目的地址2003:0001:0:8:100::的路由进行转
发,匹配的是locator路由2003:0001:0:8::/64。这需要芯片对每一个SRv6报文进行多次路
由迭代,会对时延、带宽造成较大的影响,大大降低迭代效率。

发明内容

[0004] 针对现有技术的以上缺陷或改进需求,本发明提供了一种提升SRv6转发效率的方案,由软件层面提前实现根据外层封装的IPv6目的地址通过最长匹配查找IPv6的路由,这
样芯片只需要完成一次路由迭代。由于实现了最长匹配的查找,路由的增删会势必会引起
大量的反刷,本发明还通过一个简单的方法大量减少了反刷次数,提高迭代效率。
[0005] 为实现上述目的,按照本发明的一个方面,提供了一种提升SRv6转发效率的方法,包括:
[0006] 在软件层面提前实现根据外层封装的IPv6 DA通过最长匹配查找IPv6的路由,以使芯片只需要完成一次路由迭代。
[0007] 本发明的一个实施例中,DDPO(Device Data Plant Object,驱动数据平面对象类型)从FDPO(FOS Data Plane Object,FOS数据平面对象类型)映射数据时直接获取到真正
的出接口和下一跳,即FDPO迭代链中第二个ROUTE的信息。
[0008] 本发明的一个实施例中,FDPO的依赖链是根据DA查找路由转发所需的FDPO依赖链,第一个ROUTE表前缀为目的IP,出口信息在SRV6_NNI_NH中,根据SRV6_NNI_NH表中的VPN 
SID字段进行最长匹配查找locator路由信息,第二个ROUTE表的前缀即为匹配的locator路
由。
[0009] 本发明的一个实施例中,在最长匹配时,A通过最长匹配依赖B,则A为观察者observer,B为依赖者depender,observer通过一个链表节点observer_node挂在depender
的depender_list中。
[0010] 本发明的一个实施例中,FDPO_CLASS_MGR为FDPO类级的管理数据,LPM_OBSERVER_MGR为A作为observer的管理信息,包含一条待匹配链wait_list,用来存储匹配失败的A表
对象;pobserver_info为A表作为某类observer的具体信息;新增A类对象,需要通过最长匹
配查找B对象,找到后将A对象的observer_node挂到查找到的B对象的depender_list中,这
样就保存了A、B对象的观察关系。
[0011] 本发明的一个实施例中,LPM_DEPENDER_MGR为B作为depender的管理信息,包含一颗lpm_pat_tree,存储了所有B表需要参与最长匹配的对象,depender_info为B表作为某类
depender的具体信息;当新增B类对象时,需要刷新A类对象的最长匹配对象,包括wait_
list中的A对象和已经完成匹配的A对象。
[0012] 本发明的一个实施例中,最长匹配的过程为:A通过最长匹配找到的是链表节点B,第二顺位匹配的是链表节点B1即次匹配节点。
[0013] 本发明的一个实施例中,新增B表对象时用自身的ip去lpm_pat_tree树匹配,如果找到了对象B1,表示B1的depender_list上的A对象的最长匹配结果需要刷新成新增的B对
象,遍历B1 depender_list中的A对象进行重匹配,如果没有找到,则说明匹配成功的A对象
中没有更加匹配新增对象的,需要将wait_list中未匹配成功的A对象进行重匹配。
[0014] 本发明的一个实施例中,B表删除时用先从lpm_pat_tree中摘除,再用自身的ip去匹配,如果找到了B1,表示B的depender_list上的A类对象第二顺位匹配的对象为B1,将B对
象的depender_list整体移到B1的depender_list中,就完成了重匹配,如果没有找到,则移
入A表的待匹配链中。
[0015] 按照本发明的另一方面,还提供了一种电子设备,包括:
[0016] 至少一个处理器;以及,
[0017] 与所述至少一个处理器通信连接的存储器;其中,
[0018] 所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1‑9任一项所述的方法。
[0019] 总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有如下有益效果:
[0020] 本发明有效的提高了SRv6隧道场景路由迭代的效率,其次形成了通用化的模型,后续SRv6功能设备侧的开发可移只聚焦于模型设计而不关心代码开发,而且充分利用了线
卡资源,减轻主控的负担。

附图说明

[0021] 图1为现有技术中SRv6隧道业务示意图;
[0022] 图2为现有技术中芯片实现迭代示意图;
[0023] 图3为本发明实施例中软件实现迭代示意图;
[0024] 图4为本发明实施例中最长匹配迭代A表数据管理图;
[0025] 图5为本发明实施例中最长匹配迭代B表数据管理图;
[0026] 图6为本发明实施例中最长匹配示意图。

具体实施方式

[0027] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并
不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要
彼此之间未构成冲突就可以相互组合。
[0028] 为了解决现有技术存在的问题,本发明采用了如下技术方案:
[0029] 由软件层面提前实现根据外层封装的IPv6 DA通过最长匹配查找IPv6的路由,这样芯片只需要完成一次路由迭代。由于实现了最长匹配的查找,路由的增删会势必会引起
大量的反刷,本发明还通过一个简单的方法大量减少了反刷次数,提高迭代效率。
[0030] 该技术方案主要包括以下两个方面:
[0031] (1)软件层面实现迭代
[0032] 芯片层面实现根据外层封装的IPv6 DA再次进行路由查找,芯片多次路由查找的能力受限,当前需要环回才能实现,性能直接折半,且不同的芯片都需要实现路由的多次查
找。芯片的迭代过程在图2中具体说明。
[0033] DDPO(Device Data Plant Object,驱动数据平面对象类型)是芯片层面的数据模型,是从FDPO的关系网络中根据需求将数据重新整合的结果。
[0034] FDPO(FOS Data Plane Object,FOS数据平面对象类型)是软件层面的数据模型,模型之间存在依赖关系,依赖关系是指类A的一个对象与类B的一个对象之间的关联关系,
比如ARP表通过出接口的索引(外键)依赖于出接口表,这是一种精确匹配关系。最长匹配是
一种模糊匹配,是一种特殊的依赖关系。软件层面的数据就是由一个个FDPO通过依赖关系
串接成的一张复杂网络。
[0035] 软件层面实现SRv6隧道业务的迭代过程在图3中具体说明。
[0036] 我们假设FDPO A通过IP地址最长匹配查找FDPO B,图4和图5描述了这种查找关系的数据管理方式。
[0037] (2)提高软件层面的迭代效率
[0038] 由于软件层面实现了最长匹配查找,路由的增删势必会引起大量的反刷,本发明通过一种方法,减少了大多数无效的反刷。这种方法在图6中具体说明。
[0039] 图2芯片数据模型迭代示意图
[0040] 一个方框表示一个DDPO,箭头表示依赖关系,即前一个表项通过关键字可查找下一个表项;
[0041] 芯片层面实现时通过vpn_sid的SID字段(外层封装的IPv6 DA)无法直接迭代找到be_tunnel,需要根据这个SID再次进行路由的迭代,这对于芯片层来说是需要环回才能实
现,这样效率直接砍半;
[0042] 对于每一个走SRv6隧道的报文,都需要进行两次迭代。
[0043] 图3软件层面实现迭代示意图
[0044] 上面的方框代表FDPO,下面的方框代表DDPO,箭头表示模型间的依赖关系,即前一个表项通过关键字可查找下一个表项;
[0045] 图片上方FDPO的依赖链是根据DA查找路由转发所需的FDPO依赖链。第一个ROUTE表前缀为目的IP,出口信息在SRV6_NNI_NH中,根据SRV6_NNI_NH表中的VPN SID字段进行最
长匹配查找locator路由信息。第二个ROUTE表的前缀即为匹配的locator路由。这样就在软
件层面找到了真正的出接口和下一跳。
[0046] DDPO从FDPO映射数据时直接可以获取到真正的出接口和下一跳,即FDPO迭代链中第二个ROUTE的信息,不需要自己迭代。DDPO模型可以直接从srv6_vpn_sid表迭代到srv6_
be_tunnel表;
[0047] 对于每一个走SRv6隧道的报文,只需要迭代一次即可,可以减少芯片层处理的负担;
[0048] 图4最长匹配迭代A表数据管理图
[0049] A通过最长匹配依赖B,则A为观察者observer,B为依赖者depender。observer通过一个链表节点observer_node挂在depender的depender_list中。
[0050] FDPO_CLASS_MGR为FDPO类级的管理数据,LPM_OBSERVER_MGR为A作为observer的管理信息,包含一条待匹配链wait_list,用来存储匹配失败的A表对象。pobserver_info为
A表作为某类observer的具体信息。
[0051] 新增A类对象,需要通过最长匹配查找B对象,找到后将A对象的observer_node挂到查找到的B对象的depender_list中,这样就保存了A、B对象的观察关系。
[0052] 图5最长匹配迭代B表数据管理图
[0053] B类的管理数据与A类类似,LPM_DEPENDER_MGR为B作为depender的管理信息,包含一颗lpm_pat_tree,存储了所有B表需要参与最长匹配的对象。depender_info为B表作为某
类depender的具体信息。
[0054] 当新增B类对象时,需要刷新A类对象的最长匹配对象。包括wait_list中的A对象和已经完成匹配的A对象。
[0055] 图6最长匹配示意图
[0056] A通过最长匹配找到的是链表节点B,第二顺位匹配的是链表节点B1即次匹配节点;
[0057] 新增B表对象时用自身的ip去lpm_pat_tree树匹配,如果找到了(即对象B1),表示B1的depender_list上的A对象的最长匹配结果需要刷新成新增的B对象,遍历B1 
depender_list中的A对象进行重匹配,如果没有找到,则说明匹配成功的A对象中没有更加
匹配新增对象的,需要将wait_list中未匹配成功的A对象进行重匹配;
[0058] B表删除时用先从lpm_pat_tree中摘除,再用自身的ip去匹配,如果找到了(即B1),表示B的depender_list上的A类对象第二顺位匹配的对象为B1,将B对象的depender_
list整体移到B1的depender_list中,就完成了重匹配。如果没有找到,则移入A表的待匹配
链中。
[0059] 进一步地,本发明还提供了一种电子设备,包括:
[0060] 至少一个处理器;以及,
[0061] 与所述至少一个处理器通信连接的存储器;其中,
[0062] 所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述提升SRv6转发效率的方法。
[0063] 本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含
在本发明的保护范围之内。