CN115604110A - 一种BGP Update报文的更新方法和装置 - Google Patents
一种BGP Update报文的更新方法和装置 Download PDFInfo
- Publication number
- CN115604110A CN115604110A CN202211198979.9A CN202211198979A CN115604110A CN 115604110 A CN115604110 A CN 115604110A CN 202211198979 A CN202211198979 A CN 202211198979A CN 115604110 A CN115604110 A CN 115604110A
- Authority
- CN
- China
- Prior art keywords
- route
- bgp update
- update message
- bgp
- routes
- 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
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种BGP Update报文的更新方法和装置,所述方法包括:接收来自邻居设备的第一BGP Update报文;解析第一BGP Update报文得到各路由的类型;将解析的各路由的类型与本地配置的邻居设备支持的路由类型进行匹配;在所述各路由类型中确定相匹配的路由类型,并根据相匹配的路由类型生成第二BGP Update报文;将第二BGP Update报文封装后发送给BMP服务器。本方法利用BGP报文模块化设计的特征,解析确定需要上报的路由类型,将需要上报的路由类型生成新的BGP Update报文,使得上报给BMP服务器的新的BGP Update报文中的路由能够被全部正确解析。
Description
技术领域
本发明涉及网络通信技术领域,尤其是涉及一种BGP Update报文的更新方法和装置。
背景技术
目前,若用户查看某台网络设备内边界网关协议(Border Gateway Protocol,BGP)邻居的路由、BGP邻居状态以及其他相关信息,则可通过登录网络设备进行查看。BGP监控协议(BGP Monitoring Protocol,BMP)是一种用于监控BGP邻居的协议,其提供了比屏幕输出更方便的使用方式,简单、好用、易维护。BMP既可访问BGP指定邻居的状态、路由信息,还可周期性地显示统计信息。
在实际组网中,被监控的网络设备设备称为客户端(client),BMP监控服务器(server)称为监控端或者BMP server。一个客户端可与多个监控服务器连接。客户端内需配置监控服务器的地址、监听端口号等,以便与监控服务器建立TCP连接。
客户端收集被监控BGP邻居收到的路由信息,生成BGP更新(Update)报文。根据BMP规定,在BGP Update报文前封装BMP头部,得到BMP报文。监控服务器接收到各种BMP报文后,根据BMP规定以及BGP规定,解析报文内容并通过可视化的界面向用户呈现。
当前的一种路由上报的方式是,客户端向监控邻居发送refresh请求,接收来自监控邻居上报的BGP Update报文,并将该BGP Update报文直接上报给监控服务器,这种路由上报方法简单、不需要额外消耗内存,但是每新增一个监控服务器,都需要重新向监控户邻居触发一次refresh请求,需要占用网络带宽来实现,同时客户端将接收到的所有BGPUpdate报文中携带的路由都上报给监控服务器,如果这些上报的路由中有监控服务器不支持的路由类型,则监控服务器可能由于无法正确解析BGP Update报文发生错误。
发明内容
鉴于此,本申请提供一种BGP Update报文的更新方法和装置,用于解决客户端向监控服务器直接上报BGP Update报文,导致监控服务器无法正确解析报文发生错误,以及重申请发送更新报文占用网络带宽资源的问题。具体地,公开了如下技术方案:
第一方面,本发明实施例提供了一种BGP Update报文的更新方法,该方法可以应用于一种网络设备,比如BGP客户端,该方法包括:接收来自邻居设备的第一BGP Update报文;解析所述第一BGP Update报文,得到所述第一BGP Update报文中携带的各路由的类型;将解析的各路由的类型与本地配置的所述邻居设备支持的路由类型进行匹配;在所述各路由类型中确定相匹配的路由类型,并根据所述相匹配的路由类型生成第二BGP Update报文;将所述第二BGP Update报文封装后,发送给BMP服务器。
结合第一方面,在第一方面的一种可能的实现方式中,解析所述第一BGP Update报文还得到每个路由类型的地址族信息AFI字段和子地址族信息SAFI字段,所述AFI字段和所述SAFI字段用于指示当前路由所属的地址族;将所述各路由的类型与本地配置的所述邻居设备支持上报的路由类型进行匹配,包括:判断各路由的所述AFI字段和所述SAFI字段指示的地址族,与,所述邻居设备配置支持上报的地址族信息是否都相同。
结合第一方面,在第一方面的另一种可能的实现方式中,在所述各路由类型中确定相匹配的路由类型,并根据所述相匹配的路由类型生成第二BGP Update报文,具体可以包括方式一和方式二:
方式一,获取不相匹配的路由类型,将所述不相匹配的路由类型从所述第一BGPUpdate报文剔除,剩余的相匹配的路由类型生成所述第二BGP Update报文。
方式二,获取不相匹配的路由类型,在所述第一BGP Update报文标记所述不相匹配的路由类型,生成所述第二BGP Update报文,其中被标记的路由类型在上报后不被所述BMP服务器解析。
可选的,可通过配置指示信息“1”或“0”来标记路由类型是否需要被解析,比如设置指示信息为“0”表示屏蔽该路由,“1”表示不屏蔽该路由。
结合第一方面,在第一方面的又一种可能的实现方式中,将所述第二BGP Update报文进行封装之前,还包括:判断相匹配的路由类型、且本地与所述邻居设备建立邻居关系的邻居上是否配置了keep-all-routes功能;如果未配置,则执行所述将所述第二BGPUpdate报文封装后,发送给BMP服务器的步骤。
结合第一方面,在第一方面的又一种可能的实现方式中,所述方法还包括:如果已配置,则根据所述第二BGP Update报文生成实时路由变化的自组包,并将所述自组包发送给所述BMP服务器。
结合第一方面,在第一方面的又一种可能的实现方式中,所述将解析的各路由的类型进行相似度匹配之后,还包括:如果所述各路由类型全部相匹配,则判断所述邻居上是否配置了keep-all-routes功能;如果未配置,则将所述第一BGP Update报文封装后,发送给所述BMP服务器。
结合第一方面,在第一方面的又一种可能的实现方式中,所述方法还包括:如果已配置,则根据所述第一BGP Update报文生成实时路由变化的自组包,并将所述自组包发送给所述BMP服务器。
第二方面,本发明实施例还公开了一种BGP Update报文的更新装置,所述装置用于实现前述第一方面或第一方面任一实现方式所述的方法,该装置包括:
接收单元,用于接收来自邻居设备的第一BGP Update报文;
解析单元,用于解析所述第一BGP Update报文,得到所述第一BGP Update报文中携带的各路由的类型;
匹配单元,用于将解析的各路由的类型与本地配置的所述邻居设备支持的路由类型进行匹配,以及在所述各路由类型中确定相匹配的路由类型;
生成单元,用于根据所述相匹配的路由类型生成第二BGP Update报文;
发送单元,用于将所述第二BGP Update报文封装后,发送给BMP服务器。
第三方面,本发明实施例还公开了一种网络设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行如第一方面或第一方面任一实现方式所述的BGP Update报文的更新方法。
第四方面,本发明实施方式还公开了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被处理器执行时,实现如第一方面或第一方面任一实现方式所述BGP Update报文的更新方法。
本实施例提供的方法和装置,利用BGP报文模块化设计(TLV)的特征,通过快速解析BGP Update报文,确定需要上报的路由类型,将需要上报的路由类型重组生成新的BGPUpdate报文,由于上报给BMP服务器的新的BGP Update报文中的路由能够被全部正确解析,进而解决了BMP服务器接收的路由不能全部解析而发生错误的问题,本方法实现了策略前路由的精准上报,以及BMP服务器对客户端发送的BGP Update报文的正确解析。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种BGP网络环境的示意图;
图2为本发明实施例提供的一种BGP Update报文的格式的示意图;
图3a为本发明实施例提供的一种MP_REACH_NLRI字段的格式示意图;
图3b为本发明实施例提供的一种MP_UNREACH_NLRI字段的格式示意图;
图4为本发明实施例提供的一种BGP Update报文的更新方法的流程图;
图5为本发明实施例提供的另一种BGP Update报文的更新方法的流程图;
图6为本发明实施例提供的一种报文更新装置的结构框图;
图7为本发明实施例提供的一种网络设备的结构示意图。
具体实施方式
下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施例并不代表与本申请相一致的所有实施例。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相对应的列出项目的任何或所有可能组合。
应理解,尽管在本申请可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。
首先对本申请涉及的技术场景和相关技术术语进行说明。
本申请实施例的技术方案应用于一种边界网关协议(Border Gateway Protocol,BGP)网络,参见图1,为一种BGP网络环境的示意图,该BGP网络环境中的网络设备使用TCP作为其传输层协议。
其中,BMP是BGP路由协议的一个扩展功能,其具有工作机制简单、目的明确(收集特定的信息)的特点。由于BMP上所有的配置均可以在作为客户端的设备上完成,所以部署难度低。
如图1所示,BMP中包括以下角色的设备:
客户端,又称BMP client:为配置BMP功能的设备,通过在客户端上配置监控服务器的地址和监听端口号,来建立与监控服务器的TCP连接。其中,一个客户端可以连接一个或多个监控服务器。
监控端,监控服务器,又称BMP server,用于接收客户端发送的BMP报文/BMP消息(message),并解析客户端上报的BMP报文或消息。
监控对等体(Monitored peer),用于与客户端建立BGP会话的对等体。本实施例中,监控端与客户端互为邻居,所以监控端为客户端的监控邻居或邻居设备。
在本示例中,客户端为设备B(Device B),监控对等体为设备A(Device A)和设备C(Device C),监控端为BMP服务器。其中,设备A、设备B和设备C之间两两之间建立BGP会话,设备B上配置BMP功能对其BGP运行状态以及路由变化进行监控。在此组网中,监控服务器(BMP server)为监控端,设备B为客户端(BMP client),与设备B建立BGP会话的设备A和设备C为监控对等体(Monitored peer)。
下面介绍设备间BGP路由以及BGP Update报文的相关概念。
1、BGP路由和BGP Update报文
BGP路由器使用Update报文向其对等体通告路由信息。BGP在一个Update报文中通告一条或多条拥有相同路径属性的路由,拥有不同的路径属性的BGP路由需使用不同的Update报文来通告。BGP Update报文除了能够用于向对等体通告BGP路由,还能够用于撤销一条或多条BGP路由。
参见图2,为一种BGP Update报文的格式,如果BGP报文头中的类型Type为2,则该报文为UPDATE报文(占1octet)。报文头后面所接的报文内容如下(RFC 4271),UPDATE报文用于通告路由。其中展示了各个字段,以及各字段的描述如下:
撤销路由的长度(Withdrawn Routes Length):Update报文中可以包含0条、1条或者多条准备撤销的BGP路由。该字段是一个无符号整数,它指示了Update报文中所包含的“撤销的路由条目”字段的长度(字节数)。可选的,撤销路由长度用符号“L1”表示。
撤销的路由条目(Withdrawn Routes):这个字段用于存放需要被撤销的BGP路由前缀,如果有多条BGP路由需要使用这个Update报文来撤销,那么这个字段将包含一个BGP路由前缀的列表,每条BGP路由前缀包含两元,分别是前缀长度及路由前缀。
总路径属性长度(Total Path Attribute Length):这个字段指示了Update报文中路径属性的总长度。比如图2中,路径属性总长度用符号“L2”表示。
路径属性(Path Attributes):当BGP路由器使用Update报文向监控邻居通告BGP路由时,该报文中就包含着路径属性字段。BGP定义了丰富的路径属性类型。
网络层可达信息(Network Layer Reachability Information):这个字段用于存放需要被被通告的BGP路由前缀,如果有多条BGP路由需要使用这个Update报文来通告,那么这个字段将包含一个BGP路由前缀的列表,每条BGP路由前缀包含两元,分别是前缀长度及路由前缀。当然,一个BGP Update报文用于通告拥有相同路径属性的路由前缀。
在Withdrawn Routes(ipv4撤销路由)开始位置:从BGP报文头开始偏移21字节;如果Withdrawn Routes Length为0,则意味着没有该报文,否则报文到21+Withdrawn RoutesLength位置截止。在Path Attributes(variable)开始位置:从BGP报文头开始偏移23字节,长度为Total Path Attribute Length。在Network Layer Reachability Information(ipv4路由)开始位置:从BGP报文头开始偏移23+L1+L2字节。
其中,路径属性Path Attributes(variable)可以由多个TLV(Tag,Length,Value)组成,格式如下:flag(1octets)type(1octets)|Length(1or2 octets)|Value
其中,flag有标记位表示后面Length字段大小,比如占用1字节还是2字节。
对于更新的路由(Update路由),BGP把路径属性Path Attributes完全相同的合并在一起发布,属性信息放在前面,后面紧跟属性完全相同的一个/组前缀信息。一个Update报文中只能发布一组这样的路由。
随着BGP广泛应用于MPLS VPN、组播以及非IPv4地址族,这种固定的结构不能完全满足应用需求。为了解决BGP对多种网络层协议的支持,IETF(Internet Engineering TaskForce,因特网工程任务组)对BGP-4进行了地址族能力扩展,形成MP-BGP(Multi-ProtocolBGP,多协议BGP),使BGP能够为多种应用提供路由信息。在RFC4760(MultiprotocolExtensions for BGP-4)中,定义了两个新的可选非传递属性,且BGP的多种协议扩展都用到了这两个属性:
扩展协议可达NLRI(MP_REACH_NLRI,属性类型14)
扩展协议不可达NLRI(MP_UNREACH_NLRI,属性类型15)
这两种扩展属性适用于所有的BGP协议扩展,为了对不同的扩展类型进行区分,在这两种属性中都携带了BGP地址族信息(Address Family Information,AFI)和子地址族信息(Sub-Address Family Information,SAFI)。其中,AFI 1分配给IPv4,2分配给IPv6。
具体地,(1)MP_REACH_NLRI(Attribute code:14)
如图3a所示,一个完整的MP_REACH_NLRI属性结构包含如下内容:
第一、地址族信息:包括AFI和SAFI。其中AFI携带和网络地址相关的网络层协议标识;SAFI携带相关属性中网络层可达信息的附加信息。
第二、下一跳信息:包括网络地址长度(Length of Next Hop Network Address)和下一跳网络地址(Network Address of Next Hop)。在BGP IPv4定义中,下一跳是作为地址的属性进行传递的,属性类型3。BGP进行地址扩展后,下一跳地址也需要进行扩展,因此放在MP_REACH_NLRI属性中传递。
第三、前缀信息:放在该属性的NLRI字段传递,不同的地址族格式不同。
此外,图3a中还定义了一个字节的保留(1octet Reserved)未用,必须置为全0。
另外,参见图3b,本实施例还提供了(2)MP_UNREACH_NLRI(Attribute code:15)的格式,其中,扩展地址不可达属性通告不可达路由,一个含有MP_UNREACH_NLRI的Update报文不需要携带MP_UNREACH_NLRI属性以外的任何其他路径属性。其格式如图3b所示。
本实施例中,MP_REACH_NLRI(其他路由类型的更新路由):从Path Attributes(variable)的起始位置开始判断属性类型是否为14,如果否,则进行按照TLV定义内容偏移,判断下一个类型,直到找到属性类型为14或者遍历到Path Attributes(variable)结束位置为止。
另外,在找到MP_REACH_NLRI属性位置后,可以通过开始的AFI和SAFI字段来判断出该路由所属的地址族。同理地,MP_UNREACH_NLRI(其他路由类型的撤销路由)的查询过程与“MP_REACH_NLRI”的查询过程类似,此处不再赘述。
通过上面的描述可以看出,BGP Update报文中的各个路由信息都是可以快速找到起始位置和长度,并获取到路由所属的AFI、SAFI信息。
2、keep-all-routes命令功能
对等体peer keep-all-routes命令:用来保存自BGP连接建立起来之后的所有来自指定对等体(组)的BGP路由更新信息,该更新信息包括原始属性和最终属性这两份属性信息。另外,undo peer keep-all-routes命令用来恢复缺省配置。在缺省情况下,只保存来自对等体的通过已配置入口策略的BGP路由更新信息,即最终属性信息。
比如,keep-all-routes命令格式为:
peer{group-name|ipv4-address|ipv6-address}keep-all-routes;
undo peer{group-name|ipv4-address|ipv6-address}keep-all-routes;
BGP的入口策略改变后,为了使新的策略立即生效,可以复位BGP连接,但这样会造成短暂的BGP连接中断。对于不支持Route-Refresh能力的BGP对等体,可以配置peer keep-all-routes命令,保留该对等体的所有原始路由,此时不需要复位BGP连接即可完成路由表的刷新。
在客户端向监控服务器上报BGP Update报文过程中,监控邻居(监控对等体)收到的路由上报又细分为:策略前模式和策略后模式,其中,策略前模式(pre-policy)指的过策略前的监控路由和属性;策略后模式(post-policy)指的过完策略后的监控路由和属性。
在一种可能的上报方式中:监控邻居(监控对等体)配置keep-all-routes特性,向邻居(监控设备A或C)发送一次refresh请求,把路由的过策略前属性都保存起来,后续自己组包上报监控服务器。该方式每条路由都需要保存两份属性,因此需要额外消耗内存(路由量越大消耗内存资源越多),但新增监控服务器收集路由时,则不需要重新向邻居设备触发一次refresh请求。
如果处于内存占用考虑,采用第一种方式,客户端向监控邻居发送refresh请求的上报方式,则会导致一些不需要的地址族路由被上报,此时这些不支持的路由可能会导致监控服务器无法解析而出现各种问题。若采用第二种方式上报,对路由量少的地址族配置keep-all-routes功能,则会占用较多的设备内存。
基于此,本申请实施例提供的技术方案,使得用户对监控邻居(对等体)只在监控服务器支持的地址族上使能,从而可以解决上述问题。从而既可以解决监控服务器无法解析不支持的路由产生错误的问题,同时还避免了配置keep-all-routes功能占用较多设备内存资源。
下面对本实施例提供的方法进行详细说明。
参见图4,为本实施例提供了一种BGP Update报文的更新方法,该方法可应用于前述应用场景中的一客户端,比如设备B,更具体地,可以是该客户端中的BGP处理模块来执行,该方法包括:
步骤101:接收来自邻居设备的第一BGP Update报文。
其中,第一BGP update报文符合TLV协议框架,即符合TLV编码规则,所述TLV协议框架或编码规则是基于二进制编码的,将数据以(T-L-V)的形式编码为字节数组。并且,该第一BGP Update报文的格式如图2所示。
本一示例中,客户端(设备B)接收来自监控邻居,比如设备A或设备C上报的一个或多个BGP Update报文。
步骤102:解析所述第一BGP Update报文,得到所述第一BGP Update报文中携带的各路由的类型。
其中,该第一BGP Update报文的内容(字段)全部是模块的设计(TLV机制,比如按照RFC4271规范),客户端在接收该第一BGP Update报文后,按照设计的TLV机制解析该第一BGP Update报文得到该报文中携带的一个或多个路由类型的信息。
本实施例中,解析所述第一BGP Update报文得到以下至少一种路由类型字段,分别是:
撤销的路由条目Withdrawn Routes(ipv4撤销路由)、路径属性Path Attributes字段、网络层可达信息Network Layer Reachability Information(ipv4路由)。其中,在Path Attributes字段中包括:MP_REACH_NLRI字段或MP_UNREACH_NLRI字段至少一种。
其中,扩展协议可达NLRI字段(MP_REACH_NLRI)和扩展协议不可达NLRI字段(MP_UNREACH_NLRI)的格式和内容,参见上述图3a和图3b所示,包含地址族信息AFI字段和子地址族信息SAFI字段,本实施例此处不再赘述。
根据上述图3a和图3b所示的字段内容,在步骤102解析第一BGP Update报文还得到每个路由类型对应的AFI字段和SAFI字段,根据这些字段可以指示当前路由所属的地址族,比如指示IPv4或IPv6。
步骤103:判断解析的各路由类型与支持的路由类型是否全部相匹配,即将解析的各路由的类型与本地配置的所述邻居设备支持的路由类型进行匹配。
其中,所述本地配置的邻居设备支持的路由类型可以预先获得,并存储在客户端。比如在上述步骤101和步骤102之前,还包括:
步骤100:本地配置的所述邻居设备支持的路由类型。
例如,客户端的设备B与设备A之间建立邻居,则在设备B上配置的设备A的邻居的所有路由,且该路由是设备B与设备A在建立监控邻居关系时设置的。
在步骤103中将解析后得到的各个路由类型,比如IPv4、IPv6以及其他路由类型,与客户端在本地设置的路由进行比较,判断解析得到的各路由是否都被本地设置的路由所包含。
步骤104:如果不相匹配,即各个路由与本地设置的路由部分相匹配,部分不相匹配,则在所述各个路由类型中确定相匹配的路由类型,并根据所述相匹配的路由类型生成第二BGP Update报文。
步骤105:将所述第二BGP Update报文封装后,发送给BMP服务器。
具体地,步骤105包括:先将第二BGP Update报文封装为第一RM(RouteMonitoring)报文,该第一RM报文也符合TLV设计规范。然后再将该第一RM报文发送给BMP服务器,BMP服务器接收该第二BGP Update报文后对该报文进行解析,得到路由信息。
本实施例提供的方法,利用BGP报文模块化设计(TLV)的特征,通过快速解析BGPUpdate报文,确定需要上报的路由类型,将需要上报的路由类型重组生成新的BGP Update报文,由于上报给BMP服务器的新的BGP Update报文中的路由能够被全部正确解析,进而解决了BMP服务器接收的路由不能全部解析而发生错误的问题,本方法实现了策略前路由的精准上报,以及BMP服务器对客户端发送的BGP Update报文的正确解析。
可选的,在本实施例的一种具体的实施方式中,上述步骤103包括:判断各路由的所述AFI字段和所述SAFI字段指示的地址族与所述邻居设备配置支持上报的地址族信息是否都相同。
其中,邻居设备配置支持上报的地址族信息可在步骤100中获得,在客户端与至少一个监控对等体建立监控邻居是互相指定,并配置该邻居设备支持上报的地址族信息。
本实施例中,各路由的AFI字段和SAFI字段包括:撤销的路由条目WithdrawnRoutes字段、路径属性Path Attributes字段、网络层可达信息Network LayerReachability Information字段。其中,路径属性Path Attributes字段中包括:扩展协议可达NLRI(MP_REACH_NLRI)字段或扩展协议不可达NLRI(MP_UNREACH_NLRI)至少一种属性信息。
步骤103,BMP客户端(设备B)根据和邻居设备(如设备A)建立的邻居地址族信息(步骤100)和来自监控邻居Update报文中获取到的路由的地址族信息(步骤102),判断设备A的地址族信息与来自监控邻居Update报文中获取到的路由的地址族信息是否相匹配。所述相匹配是指,与设备A建立的邻居的地址族信息是否属于监控邻居支持上报的地址族信息(包含多个地址族信息)中的一个。
根据路由的类型,通过AFI字段和SAFI字段的指示,以及监控邻居支持上报的地址族进行对比判断,判断对应的路由是否在这里上报给BMP监控服务器。
例如,解析第一BGP Update报文得到地址族信息包含Withdrawn Routes(ipv4撤销路由)(3),则判断在设备B监控邻居支持上报的地址族(AFI 1~n,SAFI 1~n)中是否包含Withdrawn Routes(ipv4撤销路由)。
一种实施方式是,如果不包含(即不相匹配),即对于监控邻居不支持上报的路由的类型(AFI,SAFI)在第一BGP update报文中剔除,剩余相匹配的路由类型则重新组合(计算长度)生成第二BGP update报文。其中,第二BGP Update报文也符合TLV协议框架/编码规则。
其中,在剔除不符合的路由信息时,可以剔除以下信息中的一项或多项。
(1)MP_REACH_NLRI;
(2)MP_UNREACH_NLRI;
(3)Withdrawn Routes(ipv4撤销路由);
(4)Network Layer Reachability Information(ipv4路由)。
比如,在上述步骤103中判断(3)Withdrawn Routes(ipv4撤销路由)为不相匹配的路由,则将该Withdrawn Routes字段标记为目标字段,将不相匹配的路由类型对应的目标字段从第一BGP Update报文剔除,剩余的相匹配的路由类型(1)、(2)和(4)重组生成第二BGP Update报文。
应理解,所述目标字段可以是上述(1)、(2)、(3)和(4)中的一种或多种。
另一种实施方式是,确定出不相匹配的路由类型后,在所述第一BGP Update报文标记所述不相匹配的路由类型,生成第二BGP Update报文,其中被标记的路由类型在上报后不被所述BMP服务器解析。
例如,经过路由类型匹配判断出(3)Withdrawn Routes(ipv4撤销路由)字段不相匹配,则在该字段(3)中设置指示信息,比如设置指示信息为“0”表示屏蔽该字段的路由解析,“1”表示不屏蔽该字段的路由解析,当BMP服务器接收第二BGP Update报文后,对每个字段的指示信息进行识别,如果识别出是“0”,则不解析该字段,自动屏蔽或跳过;如果识别出指示信息为“1”,则正常解析该字段,获得路由信息。
应理解,本实施例中还可以通过其他方式来指示BMP服务器对接收的BGP Update报文中哪些路由类型进行解析,哪些路由类型不做解析处理,本实施例对具体的指示方式不予限制。
可选的,在另一个实施例中,在步骤105,将第二BGP Update报文进行封装之前,还包括:判断相匹配的路由类型、且本地与所述邻居设备建立邻居关系的邻居上是否配置了keep-all-routes功能。
具体地,如图5所示,所述方法包括:
步骤1031:判断相匹配的、且本地与所述邻居设备建立邻居关系的邻居上是否配置了keep-all-routes功能。
如果否,即存在至少部分邻居上未配置keep-all-routes功能,则执行上述步骤104和步骤105。
其中,keep-all-routes功能中设置有keep-all-routes命令,所述keep-all-routes命令用来保存自BGP连接建立之后的所有来自对等体(组)的BGP路由更新信息。如果未配置该功能,则执行将第二BGP Update报文封装并上报的流程。如果已配置keep-all-routes功能,则可以采用以下两种方式进行上报,具体包括:
方式一:步骤106:客户端向监控邻居(即邻居设备)发送refresh请求的上报方式。即根据第二BGP Update报文生成实时路由变化的自组包,并将自组包发送给BMP监控服务器。该上报方式把路由的过策略前属性都保存起来,基于每个路由重新封装成自组包,然后上报给BGP Update报文给监控服务器。
方式二:该方式二为执行前述步骤1031、104和105的方法流程,即在生成第二BGPUpdate报文后、封装该第二BGP Update报文生成RM报文,并上报给BMP服务器。好处是:简化后续处理流程,避免出现后续处理中拆分为多个小报文上报的情况。采用“方式二”后续就不需要再进行自组包上报了,因为自组包上报(方式一),都是小报文上报的情况。
需要说明的是,如果交换机不支持Route-refresh能力,则需要在本地和对等体上均配置该peer keep-all-routes命令。且第一次配置peer keep-all-routes命令后会导致与对等体会话重新连接。如果交换机支持Route-refresh能力,配置该keep-all-routes命令后,不会导致与对等体的会话重新连接,但交换机通过执行refresh BGP命令刷新路由表功能将不会生效。如果交换机支持Route-refresh能力,则不需要配置peer keep-all-routes命令。本实施例中是否配置keep-all-routes命令可由客户端、对等体自行设置,本实施例此处不做限制。
可选的,在上述步骤103中,将解析的各路由的类型进行相似度匹配之后,还包括:如果所述各个路由类型与设备本地支持的路由类型全部相匹配,则执行步骤1031,判断所述相匹配的邻居上是否都配置了keep-all-routes功能;如果未配置,则将第一BGP Update报文进行封装,比如生成第二RM,并将该第二RM发送给BMP服务器。具体过程与前述步骤104和105相类似,此处不详细赘述。
此外,上述方法还包括:在步骤1031中判断全部相匹配的路由都已配置了keep-all-routes功能,则依然可以采用上述方式一或方式二的任意一种,将RM报文上报给BMP服务器。区别仅在于,本实施例中,方式一为:客户端根据第一BGP Update报文生成实时路由变化的自组包,并将所述自组包发送给BMP服务器。方式二为:客户端将第一BGP Update报文封装成第二RM报文,然后将第二RM报文上报给BMP服务器。
本实施例提供方法,提高了用户不配置或者部分配置keep-all-routes功能时,策略前路由上报的准确性。
可选的,在前述步骤103中,对不匹配的路由类型,一种处理方式是,将第一BGPUpdate报文中不相匹配的路由类型进行剔除,剩余的路由类型重新生成第二BGP Update报文,在重新生成报文的过程中,还需要重新计算BGP Update报文长度。例如可能包括以下情况:
情况一:不匹配的路由是Withdrawn Routes(ipv4撤销路由)
如果确定不匹配的路由是Withdrawn Routes(ipv4撤销路由),则生成的第二BGPUpdate报文的长度为L0-L1;其中,L0为第一BGP Update报文总长度。Withdrawn RoutesLength(2octets)字段更新为0;Total Path Attribute Length(2octets)开始的内容整体前移L1长度,覆盖掉原有的Withdrawn Routes(ipv4撤销路由)内容,至此生成第二BGPUpdate报文。
情况二:不匹配的路由是Network Layer Reachability Information(ipv4路由)
由于该路由的内容在BGP Update报文的结尾,所以只需要将第一BGP update报文总长度L0更新为23+L1+L2,即得到第二BGP Update报文,然后按照报文长度23+L1+L2重新封装生成BMP的RM报文,上报给BMP服务器。
情况三:不匹配的路由是MP_REACH_NLRI
获取MP_REACH_NLRI属性的长度L3;第一BGP Update报文的总长度L0,当剔除MP_REACH_NLRI字段后,长度更新为L0-L3;属性的总长度L2更新为L2-L3;从MP_REACH_NLRI属性结束位置之后的内容整体前移L3长度,覆盖掉原有的MP_REACH_NLRI属性内容,得到新的重组后的报文,即第二BGP Update报文,长度为L0-L3。
情况四:不匹配的路由是MP_UNREACH_NLRI
获取MP_UNREACH_NLRI属性的长度L4;第一BGP Update报文总长度L0,当剔除MP_UNREACH_NLRI字段后,程度更新为L0-L4;属性的总长度L2更新为L2-L4;从MP_UNREACH_NLRI属性结束位置之后的内容整体前移L4长度,覆盖掉原有的MP_UNREACH_NLRI属性内容,得到新的重组后的报文,即第二BGP Update报文,长度为,长度为L0-L4。
应理解,在重新组成第二BGP Update报文,并计算报文长度过程中,还可以包括上述情况一至情况四中的两个或两个以上各种组合,具体地,更新生成第二BGP Update报文,以及计算第二BGP Update报文总长度的过程可参考前述各种情况的描述,本实施例此处不再详细赘述。
本申请实施例还提供了与前述BGP Update报文的更新方法对应的装置。参见图6,为本申请实施例提供的BGP Update报文的更新装置的结构框图。所述装置应用于一客户端,所述客户端已与监控对等体和监控服务器相连接。
其中,所述报文更新装置600包括:接收单元610、解析单元620、匹配单元630、生成单元640和发送单元650,此外,该装置还可以包括其他更多或更少的单元、模块,比如存储单元等,本实施例对此不予限制。
接收单元610,用于接收来自邻居设备的第一BGP Update报文。
解析单元620,用于解析所述第一BGP Update报文,得到所述第一BGP Update报文中携带的各路由的类型。
匹配单元630,用于将解析的各路由的类型与本地配置的所述邻居设备支持的路由类型进行匹配,以及确定出不相匹配的路由类型和相匹配的路由类型。
生成单元640,用于根据匹配单元630确定的相匹配的路由类型,生成第二BGPUpdate报文。
发送单元650,用于将所述第二BGP Update报文封装后,发送给BMP服务器。
可选的,在本实施例的一种具体的实施方式中,解析单元620在解析第一BGPUpdate报文时还得到每个路由类型的AFI字段和SAFI字段,所述AFI字段和所述SAFI字段用于指示当前路由所属的地址族。
匹配单元630,还用于判断各路由的所述AFI字段和所述SAFI字段指示的地址族,与,所述邻居设备配置支持的地址族信息是否都相同。
可选的,在本实施例的另一种具体的实施方式中,匹配单元630,还用于将第二BGPUpdate报文进行封装之前,判断相匹配的路由类型、且本地与所述邻居设备建立邻居关系的邻居上是否配置了keep-all-routes功能;如果否,则利用生成单元640将所述第二BGPUpdate报文封装后,再通过发送单元650发送该第二BGP Update报文给BMP服务器。
可选的,在本实施例的又一种具体的实施方式中,生成单元640还用于如果匹配单元630判断已配置keep-all-routes功能,则根据第二BGP Update报文生成实时路由变化的自组包,并通过发送单元650将所述自组包发送给BMP服务器。
另外,匹配单元630,还用于如果所有路由类型全部相匹配,则判断所述邻居上是否配置了keep-all-routes功能;如果未配置,则生成单元640将所述第一BGP Update报文封装后,通过发送单元650发送第一BGP Update报文给BMP服务器。
如果已配置keep-all-routes功能,则生成单元640根据第一BGP Update报文生成实时路由变化的自组包,并将所述自组包通过发送单元650发送给所述BMP服务器。
本实施例提供的装置,利用BGP报文模块化设计(TLV)的特征,通过快速解析BGPUpdate报文,确定出需要上报的路由,剔除或屏蔽掉不需要上报的路由,将需要上报的路由类型重组生成新的BGP Update报文,由于上报给BMP服务器的新的BGP Update报文能够被全部正确解析,进而解决了BMP服务器接收的路由不能全部解析而发生错误的问题。
此外,本实施例,通过判断是否配置了keep-all-routes功能,提高了用户不配置或者部分配置keep-all-routes功能时,策略前路由上报的准确性。
另外,本发明实施例还提供了一种网络设备,如图7所示,该网络设备可以包括处理器110和存储器120,其中处理器110和存储器120可以通过总线或者其他方式连接,图7中以通过总线连接为例。此外,该电子设备中还包括至少一个接口130,该至少一个接口130可以是通信接口或其他接口,本实施例对此不做限制。
可选的,该网络设备可以是一网络交换机。
其中,处理器110可以为中央处理器(Central Processing Unit,CPU)。处理器110还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
存储器120作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中的BGP Update报文更新方法对应的程序指令/模块。处理器110通过运行存储在存储器120中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施例中的BGP Update报文更新方法。
存储器120可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器110所创建的数据等。此外,存储器120可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器120可选包括相对于处理器110远程设置的存储器,这些远程存储器可以通过网络连接至处理器110。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
另外,至少一个接口130用于网络设备与外部设备的通信,比如与BMP服务器、监控对等体等设备通信等。可选的,至少一个接口130还可以用于连接外设输入、输出设备,比如键盘、显示屏等。
所述一个或者多个模块存储在所述存储器120中,当被所述处理器110执行时,执行如图4或图5所示实施例中的BGP Update报文更新方法。
本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(Random AccessMemory,RAM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD)等;所述存储介质还可以包括上述种类的存储器的组合。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
另外,本申请实施例还提供了一种BGP Update报文更新系统,该系统包括BGP客户端、监控服务器,或者称BGP server,至少一个监控对等体(Monitored peer)。其中任一网络设备的结构可以与前述图7所示的结构相同,且BGP客户端用于实现前述实施例中所述的BGP Update报文更新方法。另外,监控服务器用于接收来自BGP客户端上报的第二BGPUpdate报文,并解析和处理该报文。
对于装置、系统实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置、系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
对于报文更新装置以及机器可读存储介质实施例而言,由于其涉及的方法内容基本相似于前述的方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (10)
1.一种BGP Update报文的更新方法,其特征在于,所述方法包括:
接收来自邻居设备的第一边界网关协议BGP Update报文;
解析所述第一BGP Update报文,得到所述第一BGP Update报文中携带的各路由的类型;
将解析的各路由的类型与本地配置的所述邻居设备支持的路由类型进行匹配;
在所述各路由类型中确定相匹配的路由类型,并根据所述相匹配的路由类型生成第二BGP Update报文;
将所述第二BGP Update报文封装后,发送给BMP服务器。
2.根据权利要求1所述的方法,其特征在于,解析所述第一BGP Update报文还得到每个路由类型的地址族信息AFI字段和子地址族信息SAFI字段,所述AFI字段和所述SAFI字段用于指示当前路由所属的地址族;
将所述各路由的类型与本地配置的所述邻居设备支持的路由类型进行匹配,包括:
判断各路由的所述AFI字段和所述SAFI字段指示的地址族,与,所述邻居设备配置支持上报的地址族信息是否都相同。
3.根据权利要求1所述的方法,其特征在于,在所述各路由类型中确定相匹配的路由类型,并根据所述相匹配的路由类型生成第二BGP Update报文,包括:
获取不相匹配的路由类型,将所述不相匹配的路由类型从所述第一BGP Update报文剔除,剩余的相匹配的路由类型生成所述第二BGP Update报文;
或者,获取不相匹配的路由类型,在所述第一BGP Update报文标记所述不相匹配的路由类型,生成所述第二BGP Update报文,其中被标记的路由类型在上报后不被所述BMP服务器解析。
4.根据权利要求1-3任一项所述的方法,其特征在于,将所述第二BGP Update报文进行封装之前,还包括:
判断相匹配的路由类型、且本地与所述邻居设备建立邻居关系的邻居上是否配置了keep-all-routes功能;
如果未配置,则执行所述将所述第二BGP Update报文封装后,发送给BMP服务器的步骤。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
如果已配置,则根据所述第二BGP Update报文生成实时路由变化的自组包,并将所述自组包发送给所述BMP服务器。
6.根据权利要求4所述的方法,其特征在于,所述将解析的各路由的类型进行相似度匹配之后,还包括:
如果所述各路由类型都相匹配,则判断所述邻居上是否配置了keep-all-routes功能;
如果未配置,则将所述第一BGP Update报文封装后,发送给所述BMP服务器。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
如果已配置,则根据所述第一BGP Update报文生成实时路由变化的自组包,并将所述自组包发送给所述BMP服务器。
8.一种BGP Update报文的更新装置,其特征在于,所述装置包括:
接收单元,用于接收来自邻居设备的第一边界网关协议BGP Update报文;
解析单元,用于解析所述第一BGP Update报文,得到所述第一BGP Update报文中携带的各路由的类型;
匹配单元,用于将解析的各路由的类型与本地配置的所述邻居设备支持的路由类型进行匹配,在所述各路由类型中确定相匹配的路由类型;
生成单元,用于根据所述相匹配的路由类型生成第二BGP Update报文;
发送单元,用于将所述第二BGP Update报文封装后,发送给BMP服务器。
9.一种网络设备,其特征在于,包括处理器和存储器,所述存储器与所述处理器耦合;
所述存储器上存储有计算机可读程序指令,当所述指令被所述处理器执行时,实现如权利要求1至8任一所述的BGP Update报文的更新方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8中任一项所述的BGP Update报文的更新方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211198979.9A CN115604110A (zh) | 2022-09-29 | 2022-09-29 | 一种BGP Update报文的更新方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211198979.9A CN115604110A (zh) | 2022-09-29 | 2022-09-29 | 一种BGP Update报文的更新方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115604110A true CN115604110A (zh) | 2023-01-13 |
Family
ID=84844135
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211198979.9A Pending CN115604110A (zh) | 2022-09-29 | 2022-09-29 | 一种BGP Update报文的更新方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115604110A (zh) |
-
2022
- 2022-09-29 CN CN202211198979.9A patent/CN115604110A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11876695B2 (en) | Path monitoring system (PMS) controller or ingress node based multiprotocal label switching (MPLS) ping and traceroute in inter-autonomous system (AS) segment routing (SR) networks | |
US10972391B2 (en) | Full-path validation in segment routing | |
EP3602979B1 (en) | System and method to facilitate content forwarding using bit index explicit replication (bier) in an information-centric networking (icn) environment | |
US11979322B2 (en) | Method and apparatus for providing service for traffic flow | |
US11855877B2 (en) | Information management method, apparatus, and system | |
US10594592B1 (en) | Controlling advertisements, such as Border Gateway Protocol (“BGP”) updates, of multiple paths for a given address prefix | |
CN108702326B (zh) | 检测sdn控制平面循环的方法、设备和非暂时性机器可读介质 | |
US20230078123A1 (en) | Method for Forwarding Packet in SRV6 Service Function Chain and SF Device | |
CN113347091B (zh) | 灵活算法感知边界网关协议前缀分段路由标识符 | |
EP3567814B1 (en) | Method for updating routing in network, network device and system | |
WO2022041916A1 (zh) | 报文头的处理方法及装置、存储介质、电子装置 | |
US11323371B1 (en) | Micro SID packet processing with operations, administration, and management | |
CN113411258A (zh) | 报文处理方法及装置 | |
CN112491706B (zh) | 数据报文的处理方法及装置、存储介质、电子装置 | |
US11277329B2 (en) | System and method for handling IGP flooding topology inconsistency | |
US20240235994A1 (en) | Packet processing method, network device, and network system | |
US20230327983A1 (en) | Performance measurement in a segment routing network | |
CN114422415A (zh) | 在分段路由中的出口节点处理流 | |
US20050286412A1 (en) | Transient notification system | |
US11784919B2 (en) | Method for sending BIERv6 packet and first network device | |
CN115604110A (zh) | 一种BGP Update报文的更新方法和装置 | |
US10305780B1 (en) | Controlling accumulated interior gateway protocol (“AIGP”) attribute updates | |
US8396955B2 (en) | Systems and methods for discovery of network topology using service OAM | |
WO2023173989A1 (zh) | 转发表的生成方法及装置、存储介质、电子装置 | |
WO2022042610A1 (zh) | 信息处理方法、网络控制器、节点及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |