转发表的生成方法及装置、存储介质、电子装置与流程

未命名 09-24 阅读:39 评论:0
1.本发明实施例涉及通信领域,具体而言,涉及一种转发表的生成方法及装置、存储介质、电子装置。
背景技术
::2.bier(bitindexedexplicitreplication,位索引显式复制)(rfc8279)是一种新型组播数据转发技术,该将网络边缘的节点都只用一个bit位来表示,组播流量在中间网络传输,额外封装一个特定的bier头,这个报文头以bit位串的形式标注了该组播流的所有目的节点bfer(bit-forwardingegressrouter,位转发出口路由器),中间网络转发节点根据bit位进行路由,保障流量能够发送到所有目的节点。中间节点转发设备事先通过路由协议形成用于指导bier转发的表,在收到封装bier头的流量时,依据bift(bitindexforwardingtable,位索引转发表)来完成报文到目的节点的转发。bier域的入口节点bfir(bit-forwardingingressrouter,位转发入口路由器)将进入bier域的组播流量作为bier头的payload(载荷)进行封装,通过中间节点的转发后,bier域的出口节点bfer收到bier报文,剥除bier头后,将payload转发给相应的接收者。bier这种数据面转发技术因为没有组播树的建立问题,消除了组播树建立的时延,并且在网络出现链路或者节点问题时,收敛速度同ospf(openshortestpathfirst,开放式最短路径优先)或isis(intermediatesystem-to-intermediatesystem,中间系统到中间系统)协议,比原来的组播树重建降低了巨大的时延。3.对于bier域的入口设备bfir来说,想要传输某条组播流量,需要知道哪些bier域的出口设备bfer(bit-forwardingingressrouter)需要这条组播流量,因此在bfir和bfer之间,需要存在信令交互,这些交互的信令技术称之为bieroverlay技术。中间单纯用于bier转发的bfr(bit-forwardingrouter,位转发路由器)设备则无需知道该组播流量信息。4.为了构建bier转发表项,ospf或者isis等协议,会通过信令扩展支持bier信息通告,bier域内所有节点均会收到其他节点的bier信息,并以此构建bier转发表项,ospf或者isis等扩展信令支持bier信息交互的协议,称之为bierunderlay技术。5.bierunderlay技术除了采用ospf、isis等协议进行通告外,还可以采用bgp(bordergatewayprotocol,边界网关协议)、babel等协议进行通告。6.在相关技术中,ospf、isis等协议通过扩展在通告bier信息时,通告的主要内容包括路由前缀和bfr-id(bfr-identifier,bfr-标识)等,比如ospf会根据rfc8444的定义,在路由前缀通告时,增加biersub-tlv的方式携带bfr-id等信息;协议在根据前缀进行路由计算后,bier转发表项再根据两者进行正确生成;7.借助ospf协议的泛洪机制,网络中的设备在收到其他设备的通告后根据收到的前缀信息进行路由计算,以生成用于普通转发的单播路由表,并由此再生成用于bier转发的bier路由表。8.需要说明的是,相关技术中生成路由表的方式会产生路由的泄露,会使得不同域中并不需要完全互相学习的路由也被各个域内的设备全部学习到,导致通告量巨大,造成网络带宽不必要的占用,设备负担也会加重。此外,过大的通告量,还会容易出现丢包的问题。9.针对相关技术中存在的上述问题,目前尚未提出有效的解决方案。技术实现要素:10.本发明实施例提供了一种转发表的生成方法及装置、存储介质、电子装置,以至少解决相关技术中存在的由于通告量过大而导致网络带宽的不必要占用,设备负担过重以及丢包的问题。11.根据本发明的一个实施例,提供了一种转发表的生成方法,包括:在基于接收到的第一通告消息生成目标转发表时,判断所述目标转发表中已存在的位转发路由器标识bfr-id中是否存与第一bfr-id相同的第二bfr-id,其中,所述第一通告消息用于通告第一bfer的所述第一bfr-id;在确定存在的情况下,从所述第一bfr-id对应的第一位转发路由器前缀bfr-prefix和所述第二bfr-id对应的第二bfr-prefix中确定出目标bfr-prefix;基于所述目标bfr-prefix生成所述目标转发表。12.根据本发明的另一个实施例,提供了一种转发表的生成装置,包括:判断模块,用于在基于接收到的第一通告消息生成目标转发表时,判断所述目标转发表中已存在的位转发路由器标识bfr-id中是否存与第一bfr-id相同的第二bfr-id,其中,所述第一通告消息用于通告第一bfer的所述第一bfr-id;确定模块,用于在确定存在的情况下,从所述第一bfr-id对应的第一位转发路由器前缀bfr-prefix和所述第二bfr-id对应的第二bfr-prefix中确定出目标bfr-prefix;生成模块,用于基于所述目标bfr-prefix生成所述目标转发表。13.根据本发明的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述方法实施例中的步骤。14.根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述方法实施例中的步骤。15.通过本发明,在生成转发表时,如果存在多个相同的bfr-id,会对相同的bfr-id的前缀进行比对,进而确定出更合适的与该bfr-id对应的前缀,从而避免在转发表中重复建立多条对应相同bfr-id的转发条目,避免通告量过大而导致的网络带宽的不必要占用,设备负担过重以及丢包的问题,达到了提高网络带宽利用率、降低设备负担的效果。附图说明16.图1是相关技术中的网络架构图一;17.图2是相关技术中的bfr1上的bier转发表示意图;18.图3是相关技术中的普通转发表示意图;19.图4是相关技术中的网络架构图二;20.图5是相关技术中的单播路由表示意图;21.图6是相关技术中的bier转发路由表示意图一;22.图7是相关技术中的domain2的bfrm上的单播路由表示意图;23.图8是相关技术中的bier转发路由表示意图二;24.图9是本发明实施例的转发表的生成方法的移动终端的硬件结构框图;25.图10是根据本发明实施例的转发表的生成方法的流程图;26.图11是根据本发明实施例的域外sub-sub-tlv格式示意图一;27.图12是根据本发明实施例的域外sub-sub-tlv格式示意图二;28.图13是根据本发明实施例的域外sub-sub-tlv单独携带domain-id时的格式示意图;29.图14是根据本发明实施例的域外sub-sub-tlv携带domain-id时的格式示意图一;30.图15是根据本发明实施例的域外sub-sub-tlv携带domain-id时的格式示意图二;31.图16是根据本发明实施例的设备生成bier转发表的整体流程示意图;32.图17是根据本发明具体实施例一的单播路由表示意图;33.图18是根据本发明具体实施例一的bier转发表示意图;34.图19是根据本发明具体实施例二的单播路由表示意图;35.图20是根据本发明具体实施例二的bier转发表示意图一;36.图21是根据本发明具体实施例二的bier转发表示意图二;37.图22是根据本发明具体实施例三的单播路由表示意图;38.图23是根据本发明具体实施例四的网络架构图;39.图24是根据本发明具体实施例四的单播路由表示意图;40.图25是根据本发明具体实施例四的bier转发表示意图;41.图26是根据本发明实施例的转发表的生成装置的结构框图。具体实施方式42.首先对本发明涉及到的相关技术进行说明:43.现有的ospf、isis等协议通过扩展在通告bier信息时,通告的主要内容包括路由前缀和bfr-id等,比如ospf会根据rfc8444的定义,在路由前缀通告时,增加biersub-tlv的方式携带bfr-id等信息;协议在根据前缀进行路由计算后,bier转发表项再根据两者进行正确生成;以图1为例,该网络中的边缘设备包括bfir和若干bfer:bfer1到bfern,边缘设备将就其bfr-id与对应的sub-domain、bfr-prefix等一并通告,前缀prefix通常取自于设备的loopback地址,用以在网络中唯一的标识一台设备;同一个域中,bfr-id和bfr-prefix(bfr-prefix即是设备的loopback前缀地址)是一一对应的。假设ospf协议根据rfc8444进行通告,通过ospf的extendedprefixtlv通告bfr-prefix,并在此前缀下增加biersub-tlv来携带sub-domain-id、bfr-id等信息;网络的中间设备bfr也会按照此协议扩展进行通告,但因中间设备bfr不分配bfr-id,因此其通告的bfr-id为0。在图1的示例中,假设bfir1的bfr-id是100,其bfr-prefix是p100;bfer1的bfr-id是1,其bfr-prefix是p1;bfer2的bfr-id是2,其bfr-prefix是p2;以此类推,假设这些bfr-id均在sub-domain0中。44.借助ospf协议的泛洪机制,网络中的设备在收到其他设备的通告后根据收到的前缀信息进行路由计算,以生成用于普通转发的单播路由表,并由此再生成用于bier转发的bier路由表;如rfc8279中所描述,bier转发表是bfr-id为索引,包含bfr-prefix以及下一跳邻居bfr-nbr的表项。例如:图2是bfr1上的bier转发表,在生成这个表之前,首先bfr1需要根据收到的ospf通告,生成如图3所示的普通转发表,这个表用于单播路由转发,这个表是以前缀为索引生成,比如对于bfer1所通告的前缀p1,计算出该路由对应的下一跳设备是bfr2,然后将该路由所对应的通告tlv中携带的biersub-tlv取出,将其中包含的bfr-id值作为索引,加入到bier转发表,以此类推生成图2的转发表。45.在一个bier域由多个igp域或者as域(这里的域domain,与上面提到的bier通告时的sub-domain并非同一个含义)组成时,如图4所示的网络,这个bier域由3个域组成,在单独的每个域中,都会有运行的协议,如ospf、isis、bgp等等,各域运行的协议可能相同也可能不同。比如domain1中可能运行的是bgp协议,domain2和domain3中运行的是ospf协议;或者domain1中运行的是ospf协议,domain2中运行的是bgp协议,domain3中运行的是isis协议等等。各domain内的协议通告范围仅在该domain中。假设组播流量需要从bfir1设备发送到bfer1~6,设备除了需要建立自己domain内的转发表之外,还需要建立能够到达其他domain接收者的转发表。46.domain的边界设备,如图4中br1~4,需要作为桥梁将不同域中的bfr-id信息进行传送,比如br1/2需要将domain2中bfer1和bfer2的bfr-id通告到domain1中,将从br3/4收到的domain3中的bfer3和bfer4的bfr-id,以及domain1中的bfer5和bfer6的bfr-id通告到domain2中;类似的,br3/4需要将domain3中bfer3和bfer4的bfr-id通告到domain1中,将从br1/2收到的domain2中的bfer1和bfer2的bfr-id,以及domain1中的bfer5和bfer6的bfr-id通告到domain3中。为了达到该目的,一种实现该方法是,将bfir/bfer的前缀,也就是其loopback地址,直接在domain的边界设备上进行通告,也就是说,br1/2直接将domain2中bfer1的bfr-prefix及其bfr-id、bfer2的bfr-prefix及其bfr-id通告到domain1中;直接将domain1中的bfer5的bfr-prefix及其bfr-id、bfer6的bfr-prefix及其bfr-id、bfir1的bfr-prefix及其bfr-id通告到domain2中;直接将从br3/4获取到的bfer3的bfr-prefix及其bfr-id、bfer4的bfr-prefix及其bfr-id通告到domain2中;以此类推,这样在各domain中,除了本域bfer1和bfer2的信息,同样能收到其他域的bfer设备的bfr-prefix及其bfr-id。以bfr1为例,可以计算出图5的单播路由表,并由此产生图6的bier转发路由表;同理,domain2的bfrm上的单播路由表如图7所示,bier转发路由表如图8所示。47.这种方法的优势是简单直接,缺点也很明显,首先是域间产生了路由的泄漏,比如domain2中2台bfer设备的前缀,在domain1和domain3中都存在,实际上不同域的所有路由并不需要完全互相学习到;其次是假设bfir/bfer设备的数量非常巨大时,设备的负担很重,假设每个domain中都有200台边缘设备,则3个domain总共600个边缘设备的bfr-prefix及其bfr-id都会在每个domain中通告,巨大的通告量除了占用网络带宽、给所有设备造成影响外(比如ospf设备和isis设备的泛洪),还给设备计算造成极大的负担,因为每台设备都首先要计算出600条单播路由,才能生成用于转发的bier转发表。其中,作为边界设备的br1~4,要作为桥梁通告所有的bfr-prefix及其对应的bfr-id,其设备通告量过大,还很容易出现丢包等情况造成问题。48.针对上述问题,本发明实施例中提出了一种转发表的生成方法,下文中将参考附图并结合实施例来详细说明本发明的实施例。49.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。50.本技术实施例中所提供的方法实施例可以在移动终端、路由器或者交换机、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图9是本发明实施例的一种转发表的生成方法的移动终端的硬件结构框图。如图9所示,移动终端可以包括一个或多个(图9中仅示出一个)处理器902(处理器902可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)和用于存储数据的存储器904,其中,上述移动终端还可以包括用于通信功能的传输设备906以及输入输出设备908。本领域普通技术人员可以理解,图9所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图9中所示更多或者更少的组件,或者具有与图9所示不同的配置。51.存储器904可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的转发表的生成方法对应的计算机程序,处理器902通过运行存储在存储器904内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器904可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器904可进一步包括相对于处理器902远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。52.传输装置906用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输装置906包括一个网络适配器(networkinterfacecontroller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置906可以为射频(radiofrequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。53.在本实施例中提供了一种可以但不限于运行于上述终端中的转发表的生成方法,图10是根据本发明实施例的转发表的生成方法的流程图,如图10所示,该流程包括如下步骤:54.步骤s1002,在基于接收到的第一通告消息生成目标转发表时,判断所述目标转发表中已存在的位转发路由器标识bfr-id中是否存与第一bfr-id相同的第二bfr-id,其中,所述第一通告消息用于通告第一bfer的所述第一bfr-id;55.步骤s1004,在确定存在的情况下,从所述第一bfr-id对应的第一位转发路由器前缀bfr-prefix和所述第二bfr-id对应的第二bfr-prefix中确定出目标bfr-prefix;56.步骤s1006,基于所述目标bfr-prefix生成所述目标转发表。57.其中,上述步骤的执行主体可以是bier域内的bfr设备,当然,也可以是bier域内的其他设备,或者还可以是与上述的bfr设备相对独立的处理器,或者还可以是其他的具备类似处理能力的处理设备等等。58.在上述实施例中,如果不存在和第一bfr-id相同的bfr-id条目的情况下,则直接在转发表新增与该第一bfr-id对应的条目,并填入相应的前缀和下一跳。如果存在相同的bfr-id的条目,则需要从该多个相同的bfr-id对应的路由前缀中确定出最终的路由前缀,进而基于该最终的路由前缀调整转发表中的条目,需要说明的是,如果最终确定出的路由前缀就是该第二bfr-id对应的路由前缀的情况下,则无需调整转发表中的条目,如果最终确定出的路由前缀是该第一bfr-id对应的路由前缀的情况下,则需要将转发表中与第一bfr-id对应的路由前缀和下一跳更新为第一bfr-id对应的路由前缀和下一跳。59.通过上述实施例,在生成转发表时,如果存在多个相同的bfr-id,会对相同的bfr-id的前缀进行比对,进而确定出更合适的与该bfr-id对应的前缀,从而避免在转发表中重复建立多条对应相同bfr-id的转发条目,避免通告量过大而导致的网络带宽的不必要占用,设备负担过重以及丢包的问题,达到了提高网络带宽利用率、降低设备负担的效果。60.在一个可选的实施例中,在从多个相同的bfr-id对应的bfr-prefix中确定出目标bfr-prefix时,可以基于各bfr-id对应的bfr-prefix中所包含的内容来综合确定,下面对如何综合确定该目标bfr-prefix进行说明:61.确定方式一:62.比较所述第一bfr-prefix中所包括的第一内容与所述第二bfr-prefix中所包括的第二内容;在确定所述第一内容比所述第二内容详细的情况下,将所述第一bfr-prefix确定为所述目标bfr-prefix;在确定所述第二内容比所述第一内容详细的情况下,将所述第二bfr-prefix确定为所述目标bfr-prefix。63.在该确定方式中,优先选择内容更详细的bfr-prefix作为目标bfr-prefix,其中,内容更为详细可以包括bfr-prefix中包含的内容更多,具体而言,bfr-prefix的前缀掩码长度更长。64.确定方式二:65.比较所述第一bfr-prefix的第一属性信息与所述第二bfr-prefix的第二属性信息;在确定所述第一属性信息的属性值优于所述第二属性信息的属性值的情况下,将所述第一bfr-prefix确定为所述目标bfr-prefix;在确定所述第二属性信息的属性值优于所述第一属性信息的属性值的情况下,将所述第二bfr-prefix确定为所述目标bfr-prefix。66.在该确定方式中,bfr-prefix的属性信息可以包括bfr-prefix的cost属性、metric属性或者其他属性中的一个或多个,其中,更优的属性值可以是cost属性取值更小,metric属性取值更小等等。67.在一个可选的实施例中,基于所述目标bfr-prefix生成所述目标转发表包括:在所述目标bfr-prefix为所述第一bfr-prefix的情况下,将所述目标转发表中已存在的所述第二bfr-id对应的所述第二bfr-prefix以及下一跳设备更新为所述第一bfr-prefix以及所述第一bfr-prefix对应的下一跳设备;在所述目标bfr-prefix为所述第二bfr-prefix的情况下,维持所述转发表中已存在的所述第二bfr-id以及所述第二bfr-id对应的所述第二bfr-prefix以及下一跳设备不变。在该实施例中,在确定出不需要对转发表已有的条目进行更新的情况下,可以直接丢弃该第一bfr-prefix。68.在一个可选的实施例中,在所述第一通告消息中还包括所述第一bfer所在域的第一域标识domain-id信息的情况下,在确定所述目标转发表中已存在的bfr-id中存与第一bfr-id相同的第二bfr-id之后,所述方法还包括:在确定所述第一bfr-id和所述第二bfr-id所分别对应的bfr-prefix中有来自域内的情况下,执行出错处理;在确定所述第一bfr-id和所述第二bfr-id所分别对应的bfr-prefix均来自域外的情况下,确定用于通告所述第二bfr-id的第二通告消息中所携带的第二bfer所在域的第二domain-id信息,在所述第一domain-id信息与所述第二domain-id信息不同的情况下,执行出错处理。在该实施例中,在确定相同的bfr-id所分别对应的bfr-prefix是来自不同域的情况下,说明配置出错,需要停止更新转发表,并执行出错处理。69.在一个可选的实施例中,所述第二通告消息中包括第二域外tlv,其中:所述第二域外tlv中携带所述第第二bfr-id信息;或者,所述第二域外tlv中携带所述第二bfr-id信息以及所述第二bfer所在域的第二domain-id信息。在本实施例中,该第二域外tlv是在通告消息中额外新增的tlv,或者在原有的tlv下新增的新类型的tlv,不同协议下,该新增的tlv的格式是不一样的。例如,在ospf协议下,边界设备在通告域外bfr-id时,采用新的域外sub-tlv或者域外sub-sub-tlv(tlv:type,length,value)等形式进行通告。70.在一个可选的实施例中,所述第二通告消息中包括所述第二bfr-prefix,所述第二域外tlv是跟随所述第二bfr-prefix发送的,其中,所述第二bfr-prefix包括以下之一:聚合路由前缀、缺省路由前缀,边界设备的bfr-prefix。在本实施例中,第二通告消息中可携带域domain-id信息;该域外sub-tlv/域外sub-sub-tlv可以跟随聚合或者缺省路由前缀通告,也可以跟随边界设备的bfr-prefix通告。71.在一个可选的实施例中,所述第一通告消息中包括第一域外tlv,其中:所述第一域外tlv中携带所述第一bfr-id信息;或者,所述第一域外tlv中携带所述第一bfr-id信息以及所述第一bfer所在域的第一domain-id信息。在本实施例中,该第一域外tlv是在通告消息中额外新增的tlv,或者在原有的tlv下新增的新类型的tlv,不同协议下,新增的tlv的格式是不一样的。例如,在ospf协议下,边界设备在通告域外bfr-id时,采用新的域外sub-tlv或者域外sub-sub-tlv(tlv:type,length,value)等形式进行通告。72.在一个可选的实施例中,所述第一通告消息中包括所述第一bfr-prefix,所述第一域外tlv是跟随所述第一bfr-prefix发送的,其中,所述第一bfr-prefix包括以下之一:聚合路由前缀、缺省路由前缀,边界设备的bfr-prefix。在本实施例中,第一通告消息中可携带域domain-id信息;其中,域外sub-tlv/域外sub-sub-tlv可以跟随聚合或者缺省路由前缀通告,也可以跟随边界设备的bfr-prefix通告。73.在一个可选的实施例中,执行出错处理包括以下至少之一:执行告警提示,以提示当前的网络部署存在问题;向控制器发送告警信息,以指示所述控制器当前的网络部署存在问题。在本实施例中,出错处理除了包括上述所述的具体方式之外,还可以是其他的处理方式,例如,向特定的设备发送报错信息,或者向管理员的终端发送报错信息等等,出错处理方式不限。74.下面结合一个整体的实施例对本发明进行说明:75.配置边界设备通告域外sub-sub-tlv,指明跟随通告的前缀,其格式类似图11所示,可列出要携带的bfr-id;在bfr-id是一组连续的值时,可采用类似图12的格式,填入要通告bfr-id的起始值和结束值;同时可选单独携带domain-id值,如图13所示。domain-id值也可直接携带在同一个sub-sub-tlv中,因此也可采用类似图14和图15的方式来携带;76.设备生成bier转发表的整体流程如图16所示,具体包括如下步骤:77.s1602,取出前缀中所携带的brf-id;78.s1604,设备计算生成bier转发表时,查找是否存在与取出的brf-id相同的bfr-id的条目;79.s1606,如果不存在相同bfr-id的条目,则直接新增该条目,并填入相应的前缀和下一跳,转步骤s1620;80.s1608,如果存在相同bfr-id的条目,判断是否有其前缀来自域内(判断是否由biersub-tlv携带);81.s1610,如果有前缀来自域内,则进行出错处理,包括告警提示或者上报给控制器;82.s1612,如果前缀来自域外,则判断各前缀是否来自不同的域,如果是来自不同的域的话,执行s1610;83.s1614,如果是来自相同的域的话,则将相同bfr-id条目所对应的前缀进行比较,选择更详细的前缀所对应的下一跳,更详细的含义为该前缀掩码长度更长;或者比较前缀的cost/metric等其他属性,选择更优的(比如更小cost/metric)前缀及其对应的下一跳;这个属性也可单独比较,即在步骤1612后跳过比较前缀的详细程度而直接比较前缀的cost/metric等其他属性;84.s1616,基于比较结果确定是否需要更新转发表中的条目,在确定需要更新的话,转至s1606,否则,转至s1618;85.s1618,处理下一个bfr-id。86.下面结合具体实施例对本发明进行示例性说明:87.具体实施例一:88.为了减少整网设备的负担,边界设备在通告bfr-id时,会采用一些手段降低通告的前缀数量,比如采用聚合路由或者默认路由的通告方式,在这些方式里,聚合出来的前缀可能会涵盖一个或多个边界设备的前缀,默认路由前缀则会包含所有的边界设备前缀,因此其对应的bfr-id也会有多个,前缀不再和bfr-id一一对应;但对于同一个域中,前缀和bfr-id仍然是一一对应的,因此这时其他域的bfr-id通告必须与本域内的bfr-id通告区分出来;因此在通告其他域的bfr-id时,要用新的tlv携带而不是原有的biersub-tlv,或者以在原有biersub-tlv下新增新类型sub-sub-tlv的方式来携带,在此简称为域外sub-sub-tlv。89.比如图4中,边界设备为了减少通告的前缀数量,并且想对流量有一定的控制,比如想让发给bfer1的流量经过br1,可选择在通告domain2的bfr-id到domain1时,br1上配置的聚合路由(假设其前缀为p11),假设p11仅包含了bfer1的前缀,这样br1在通告p11前缀时,仅会携带bfer1的bfr-id1;假设br2上配置的是缺省路由(0/0路由,方便起见我们称之为p0),包含了domain2所有的路由前缀,因此br2在通告p0到domain1时,会携带bfer1和bfer2的bfr-id1/2。在domain1的设备进行路由计算时,仍然以bfr1为例,会生成p11和p0的单播路由,p11的下一跳为br1,p0的下一跳为br2,如图17所示(简化起见省略了其他的路由条目)。90.接下来计算bier转发表,假设先处理p11前缀所携带的bfr-id信息,因为p11所携带的bfr-id仅有1,因此会生成bfr-id为1,前缀为p11,下一跳为br1的bier转发表项;在处理缺省路由p0时,发现其携带的bfr-id有1和2,并且两个前缀的bfr-id通告都是域外sub-sub-tlv,这时不能直接按照原有的处理原则进行处理,否则将会更新bier转发表中bfr-id1的条目为前缀p0,下一跳br2。这无法达到我们原有的控制目的。因此在处理到缺省路由p0,发现其携带的bfr-id1已经在bier转发表中存在时,需将该路由前缀p0与原bfr-id1中的前缀p11进行对比,发现p11更为详细(其掩码长度更长),所以无需更新bfr-id1的条目,由此最终生成的bier转发表类似图18所示(简化起见省略了其他的条目)。91.具体实施例二:92.边界设备的通告,还可以采取更进一步减少通告前缀的方式,可以在通告边界设备自身的bfr-prefix时,直接携带域外sub-sub-tlv来携带其他域的bfr-id。比如图4中,假设br1的前缀是pb1,br2的前缀是pb2,在通告domain2的bfr-id到domain1时,在同一个前缀bfr-prefix下,除了通告本域内的biersub-tlv,还要携带域外sub-sub-tlv。因此br1在通告其前缀pb1时,还需要携带域外sub-sub-tlv来携带domain2的bfr-id1/2,br2设备同理。93.这样在域内的设备进行计算时,仍然以bfr1为例,首先计算出基于前缀的单播路由表如图19所示;在进行bier转发表的生成时,首先取出pb1前缀所携带的bfr-id1/2,生成两个bier转发条目,bfr-id分别为1和2,前缀均为pb1,下一跳均为br1;在处理到pb2所携带的bfr-id时,发现bier转发表中已有相应的条目存在,在对pb2和pb1的前缀进行比较时,发现两者明细程度可能是一样的(比如对于前缀为ipv4的情况,都是32位的主机路由;对于前缀为ipv6的情况,都是128位的主机路由),这时可以选择直接生成ecmp(equal-costmultipath)链路,类似图20所示;也可以选择对两个前缀的cost/metric等其他ospf协议属性进行比较(这些属性基于前缀的其他tlv进行通告,不一定存在于biersub-tlv或者域外sub-sub-tlv中),假设前缀pb1的cost/metric等属性优于前缀pb2,则最终生成的bier转发表如图21所示。94.具体实施例三:95.网络中的部署有的时候可能会出现问题,假设仍然是图4的网络,假设因为网络管理员的部署错误,对设备bfer5和bfer1设备所分配的bfr-id均为50,bfer5设备就自己的前缀p5以及bfr-id50在domain1中进行通告,bfer1设备就自己的前缀p1以及bfr-id50在domain2中进行通告;在边界设备br1将domain2中的bfr-id通告到domain1中时,假设作为br1前缀pb1的域外sub-sub-tlv进行通告;同样的,从domain1到domain2的通告类似,在此不再累述。96.在设备进行路由计算时,仍然以bfr1为例,bfr1首先会生成普通的单播路由表,生成到前缀p5和pb1的下一跳分别是bfer5和br1,如图22所示;进一步的,假设先取出前缀p5路由所携带的biersub-tlv,得到bfr-id为50,前缀为p5,下一跳为bfer5的bier转发条目;处理前缀pb1所携带的biersub-tlv及域外sub-sub-tlv时,发现bfr-id50,查找bier转发表发现已有该bfr-id的条目,并且其来源是前缀p5的域内biersub-tlv,这时说明出现错误,需要停止更新该bier转发条目,并通过告警或错误信息的方式显示出来,或者上送给控制器,提示网络部署出现问题。97.需要注意的是,以上实施例的通告是以ospf协议为例,假设通过isis协议通告,则对应于ospf协议biersub-tlv的是isis协议的bierinfosub-tlv,相应的域外sub-sub-tlv可增加在该bierinfosub-tlv下;假设通过bgp协议通告,则对应于ospf协议biersub-tlv的是biertlv,可增加在该biertlv下的域外通告则为域外sub-tlv方式。本发明并不对其通告位置作具体的限制。98.具体实施例四:99.在遇到跨多个as域为同一个bier域的场景时,比如图23所示的网络中,同样是3个domain合成同一个bierdomain,domain1/2/3分别代表的是3个as域。各domain的边界设备之间运行的是bgp协议。比如domain1的br1/2与domain2的br5/6之间、domain1的br3/4与domain3的br7/8之间。但在每个domain内部,可能运行的是ospf或者isis协议,或者同样是bgp协议。100.假设配置domain2中运行的是ospf协议,domain1中运行的是isis协议;以边界设备br5/6为例,假设br5/6配置需要将domain2中的bfr-id信息发布给br1/2设备,首先br5将从ospf协议中获取的bfer1/2的bfr-id信息,跟随自己的设备前缀,作为其biertlv下的域外sub-tlv进行通告,下一跳设为自己,发送给br1和br2设备,br6设备同样如此通告。br1设备收到br5和br6设备的通告后,采用类似实施例二的方式计算自己的单播路由转发表,如图24所示,以及生成bier转发表项,假设这里认为br5所通告的前缀metric更优,br1生成的bier转发表如图25所示。br2设备同样如此处理,在br2设备计算bier转发表的过程中,可能认为br6所通告的前缀metric更优,因此br2设备的上对于bfr-id1/2的前缀对应的可能是br6-prefix以及下一跳br6。101.br1和br2设备,还需要继续将这两个bfr-id通告到domain1中,因此br1和br2设备,可在通过isis协议通告自己的前缀路由时,携带域外sub-sub-tlv,由此domain1中将收到来自domain2的bfr-id信息。从domain1到domain2/3,从domain3到domain1的方式类似,在此不再累述。102.以bfr1为例,首先计算出到br1和br2的单播路由表,在计算bier转发表时,同样采用类似实施例二的方式,在存在相同域外bfr-id条目时,通过比较选取前缀cost更优的作为前缀并取其下一跳,或者在两者详细程度一致的时候形成ecmp表项。103.假设网络部署又出现了问题,从domain3传递到domain1的bfr-id中,也有一个与domain2的边界设备bfer1相同,以bfr1为例,在计算bier转发表时,发现已有相同bfr-id的条目,其对应的前缀均来自域外,但来自于不同的domain,这时也说明配置出错,需要停止更新该bier转发条目,并通过告警或错误信息的方式显示出来,或者上送给控制器,提示网络部署出现问题。104.需要注意的是,这里为了简化起见,图中的边缘设备和中间设备数量并不多,本发明应用的实际网络中并不会限制这些设备的数量,所计算出的普通单播路由表及bier转发表,其下一跳以实际的设备为准,并不限于本发明中所描述的直连的情况。105.由此根据本发明所述的通告和计算方法,可以为bier跨域的部署提供正确的通告和计算方法,从而避免出现bier转发表项计算错误的问题,从而加快bier技术的广泛部署。此外,bier的underlay协议在根据通告的前缀计算生成路由表和bier转发表时,明确区分了域内和域间收到bfr-id的情况,保证了能够正确生成bier转发表项,从而使bier转发无误。106.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。107.在本实施例中还提供了一种转发表的生成装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。108.图26是根据本发明实施例的转发表的生成装置的结构框图,如图26所示,该装置包括:109.判断模块262,用于在基于接收到的第一通告消息生成目标转发表时,判断所述目标转发表中已存在的位转发路由器标识bfr-id中是否存与第一bfr-id相同的第二bfr-id,其中,所述第一通告消息用于通告第一bfer的所述第一bfr-id;110.确定模块264,用于在确定存在的情况下,从所述第一bfr-id对应的第一位转发路由器前缀bfr-prefix和所述第二bfr-id对应的第二bfr-prefix中确定出目标bfr-prefix;111.生成模块266,用于基于所述目标bfr-prefix生成所述目标转发表。112.在一个可选的实施例中,所述确定模块264包括:113.第一比较单元,用于比较所述第一bfr-prefix中所包括的第一内容与所述第二bfr-prefix中所包括的第二内容;114.第一确定单元,用于在确定所述第一内容比所述第二内容详细的情况下,将所述第一bfr-prefix确定为所述目标bfr-prefix;115.第二确定单元,用于在确定所述第二内容比所述第一内容详细的情况下,将所述第二bfr-prefix确定为所述目标bfr-prefix。116.在一个可选的实施例中,所述确定模块264包括:117.第二比较单元,用于比较所述第一bfr-prefix的第一属性信息与所述第二bfr-prefix的第二属性信息;118.第三确定单元,用于在确定所述第一属性信息的属性值优于所述第二属性信息的属性值的情况下,将所述第一bfr-prefix确定为所述目标bfr-prefix;119.第四确定单元,用于在确定所述第二属性信息的属性值优于所述第一属性信息的属性值的情况下,将所述第二bfr-prefix确定为所述目标bfr-prefix。120.在一个可选的实施例中,所述生成模块266包括:121.更新模块,用于在所述目标bfr-prefix为所述第一bfr-prefix的情况下,将所述目标转发表中已存在的所述第二bfr-id对应的所述第二bfr-prefix以及下一跳设备更新为所述第一bfr-prefix以及所述第一bfr-prefix对应的下一跳设备;122.维持模块,用于在所述目标bfr-prefix为所述第二bfr-prefix的情况下,维持所述转发表中已存在的所述第二bfr-id以及所述第二bfr-id对应的所述第二bfr-prefix以及下一跳设备不变。123.在一个可选的实施例中,所述方法还包括:124.第一执行模块,用于在所述第一通告消息中还包括所述第一bfer所在域的第一域标识domain-id信息的情况下,在确定所述目标转发表中已存在的bfr-id中存与第一bfr-id相同的第二bfr-id之后,在确定所述第一bfr-id和所述第二bfr-id所分别对应的bfr-prefix中有来自域内的情况下,执行出错处理;125.第二执行模块,用于在所述第一通告消息中还包括所述第一bfer所在域的第一域标识domain-id信息的情况下,在确定所述目标转发表中已存在的bfr-id中存与第一bfr-id相同的第二bfr-id之后,在确定所述第一bfr-id和所述第二bfr-id所分别对应的bfr-prefix均来自域外的情况下,确定用于通告所述第二bfr-id的第二通告消息中所携带的第二bfer所在域的第二domain-id信息,在所述第一domain-id信息与所述第二domain-id信息不同的情况下,执行出错处理。126.在一个可选的实施例中,所述第二通告消息中包括第二域外tlv,其中:所述第二域外tlv中携带所述第二bfr-id信息;或者,所述第二域外tlv中携带所述第二bfr-id信息以及所述第二bfer所在域的第二domain-id信息。127.在一个可选的实施例中,所述第二通告消息中包括所述第二bfr-prefix,所述第二域外tlv是跟随所述第二bfr-prefix发送的,其中,所述第二bfr-prefix包括以下之一:聚合路由前缀、缺省路由前缀,边界设备的bfr-prefix。128.在一个可选的实施例中,所述第一通告消息中包括第一域外tlv,其中:所述第一域外tlv中携带所述第一bfr-id信息;或者,所述第一域外tlv中携带所述第一bfr-id信息以及所述第一bfer所在域的第一domain-id信息。129.在一个可选的实施例中,所述第一通告消息中包括所述第一bfr-prefix,所述第一域外tlv是跟随所述第一bfr-prefix发送的,其中,所述第一bfr-prefix包括以下之一:聚合路由前缀、缺省路由前缀,边界设备的bfr-prefix。130.在一个可选的实施例中,所述第一执行模块和所述第二执行模块均可以通过如下方式至少之一执行出错处理:131.执行告警提示,以提示当前的网络部署存在问题;132.向控制器发送告警信息,以指示所述控制器当前的网络部署存在问题。133.需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。134.本发明的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。135.在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:u盘、只读存储器(read-onlymemory,简称为rom)、随机存取存储器(randomaccessmemory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。136.本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。137.在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。138.本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。139.显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。140.以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
技术特征:
1.一种转发表的生成方法,其特征在于,包括:在基于接收到的第一通告消息生成目标转发表时,判断所述目标转发表中已存在的位转发路由器标识bfr-id中是否存与第一bfr-id相同的第二bfr-id,其中,所述第一通告消息用于通告第一bfer的所述第一bfr-id;在确定存在的情况下,从所述第一bfr-id对应的第一位转发路由器前缀bfr-prefix和所述第二bfr-id对应的第二bfr-prefix中确定出目标bfr-prefix;基于所述目标bfr-prefix生成所述目标转发表。2.根据权利要求1所述的方法,其特征在于,从所述第一bfr-id对应的第一位转发路由器前缀bfr-prefix和所述第二bfr-id对应的第二bfr-prefix中确定出目标bfr-prefix包括:比较所述第一bfr-prefix中所包括的第一内容与所述第二bfr-prefix中所包括的第二内容;在确定所述第一内容比所述第二内容详细的情况下,将所述第一bfr-prefix确定为所述目标bfr-prefix;在确定所述第二内容比所述第一内容详细的情况下,将所述第二bfr-prefix确定为所述目标bfr-prefix。3.根据权利要求1所述的方法,其特征在于,从所述第一bfr-id对应的第一位转发路由器前缀bfr-prefix和所述第二bfr-id对应的第二bfr-prefix中确定出目标bfr-prefix包括:比较所述第一bfr-prefix的第一属性信息与所述第二bfr-prefix的第二属性信息;在确定所述第一属性信息的属性值优于所述第二属性信息的属性值的情况下,将所述第一bfr-prefix确定为所述目标bfr-prefix;在确定所述第二属性信息的属性值优于所述第一属性信息的属性值的情况下,将所述第二bfr-prefix确定为所述目标bfr-prefix。4.根据权利要求1所述的方法,其特征在于,基于所述目标bfr-prefix生成所述目标转发表包括:在所述目标bfr-prefix为所述第一bfr-prefix的情况下,将所述目标转发表中已存在的所述第二bfr-id对应的所述第二bfr-prefix以及下一跳设备更新为所述第一bfr-prefix以及所述第一bfr-prefix对应的下一跳设备;在所述目标bfr-prefix为所述第二bfr-prefix的情况下,维持所述转发表中已存在的所述第二bfr-id以及所述第二bfr-id对应的所述第二bfr-prefix以及下一跳设备不变。5.根据权利要求1所述的方法,其特征在于,在所述第一通告消息中还包括所述第一bfer所在域的第一域标识domain-id信息的情况下,在确定所述目标转发表中已存在的bfr-id中存与第一bfr-id相同的第二bfr-id之后,所述方法还包括:在确定所述第一bfr-id和所述第二bfr-id所分别对应的bfr-prefix中有来自域内的情况下,执行出错处理;在确定所述第一bfr-id和所述第二bfr-id所分别对应的bfr-prefix均来自域外的情况下,确定用于通告所述第二bfr-id的第二通告消息中所携带的第二bfer所在域的第二domain-id信息,在所述第一domain-id信息与所述第二domain-id信息不同的情况下,执行
出错处理。6.根据权利要求5所述的方法,其特征在于,所述第二通告消息中包括第二域外tlv,其中:所述第二域外tlv中携带所述第二bfr-id信息;或者,所述第二域外tlv中携带所述第二bfr-id信息以及所述第二bfer所在域的第二domain-id信息。7.根据权利要求6所述的方法,其特征在于,所述第二通告消息中包括所述第二bfr-prefix,所述第二域外tlv是跟随所述第二bfr-prefix发送的,其中,所述第二bfr-prefix包括以下之一:聚合路由前缀、缺省路由前缀,边界设备的bfr-prefix。8.根据权利要求1所述的方法,其特征在于,所述第一通告消息中包括第一域外tlv,其中:所述第一域外tlv中携带所述第一bfr-id信息;或者,所述第一域外tlv中携带所述第一bfr-id信息以及所述第一bfer所在域的第一domain-id信息。9.根据权利要求8所述的方法,其特征在于,所述第一通告消息中包括所述第一bfr-prefix,所述第一域外tlv是跟随所述第一bfr-prefix发送的,其中,所述第一bfr-prefix包括以下之一:聚合路由前缀、缺省路由前缀,边界设备的bfr-prefix。10.根据权利要求5所述的方法,其特征在于,执行出错处理包括以下至少之一:执行告警提示,以提示当前的网络部署存在问题;向控制器发送告警信息,以指示所述控制器当前的网络部署存在问题。11.一种转发表的生成装置,其特征在于,包括:判断模块,用于在基于接收到的第一通告消息生成目标转发表时,判断所述目标转发表中已存在的位转发路由器标识bfr-id中是否存与第一bfr-id相同的第二bfr-id,其中,所述第一通告消息用于通告第一bfer的所述第一bfr-id;确定模块,用于在确定存在的情况下,从所述第一bfr-id对应的第一位转发路由器前缀bfr-prefix和所述第二bfr-id对应的第二bfr-prefix中确定出目标bfr-prefix;生成模块,用于基于所述目标bfr-prefix生成所述目标转发表。12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现所述权利要求1至10任一项中所述的方法的步骤。13.一种电子装置,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现所述权利要求1至10任一项中所述的方法的步骤。

技术总结
本发明实施例提供了一种转发表的生成方法及装置、存储介质、电子装置,其中,该方法包括:在基于接收到的第一通告消息生成目标转发表时,判断所述目标转发表中已存在的位转发路由器标识BFR-ID中是否存与第一BFR-ID相同的第二BFR-ID,其中,所述第一通告消息用于通告第一BFER的所述第一BFR-ID;在确定存在的情况下,从所述第一BFR-ID对应的第一位转发路由器前缀BFR-Prefix和所述第二BFR-ID对应的第二BFR-Prefix中确定出目标BFR-Prefix;基于所述目标BFR-Prefix生成所述目标转发表。通过本发明,解决了相关技术中存在的由于通告量过大而导致网络带宽的不必要占用,设备负担过重以及丢包的问题。丢包的问题。丢包的问题。


技术研发人员:张征 徐本崇
受保护的技术使用者:中兴通讯股份有限公司
技术研发日:2022.03.16
技术公布日:2023/9/22
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

航空商城 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

评论

相关推荐