针对bgp负载分担中路由下一跳变化的处理方法

文档序号:7625679阅读:298来源:国知局
专利名称:针对bgp负载分担中路由下一跳变化的处理方法
技术领域
本发明涉及网络通信技术领域,尤其涉及一种针对BGP负载分担中路由下一跳变化的处理方法。
背景技术
BGP(边界网关协议)是一种自治系统间的动态路由发现协议,其基本功能是在自治系统间自动交换无环路的路由信息。与OSPF(开放最短路径优先)和RIP(路由信息协议)等在自治区域内部运行的协议对应,BGP是一类EGP(Edge Gateway Protocol,边缘网关协议)协议,而OSPF和RIP等为IGP(Interior Gateway Protocol,内部网关协议)。
BGP连接有两种类型,具体为IBGP(Internal BGP,内部BGP)和EBGP(External BGP,外部BGP)。在同一AS(自治区域)中建立的BGP连接称为IBGP,不同AS自治区域间的BGP连接为EBGP连接。
BGP在现有的协议中规定在向邻居发送路由信息时,当相同目的地址存在有多条路由时,仅选择一条最优的路由发送,其余路由则不发送。但是,在一些如实现负载分担功能等情况下,为实现相应的功能,BGP需要发送多条路由信息。这就要求BGP在选路规则中,在选择最优路径上放宽选路条件,当有多条路由满足条件时,则将所有路由发送到对端。
例如,如图1所示,CE(客户端)用户路由器RTA通过路由器RTB和RTC接入运营商骨干网,为减少BGP邻居数量,骨干网中有一台RR(BGP路由反射器)路由器配置为反射器,图1中的RTB,RTC,RTD都是这个反射器的客户端,此时,各客户端之间,如RTB和RTD,RTC与RTD之间不再需要配置BGP邻居关系。
另外,在接入端,用户为了网络健壮性,一般要与骨干网建立两条路径,接入到不同的骨干网路由器中,以提供冗余备份。当然,在网络稳定的前提下,用户还希望两条链路同时负责业务的传输,以实现负载分担。
根据BGP协议可知,虽然其在通告路由可达时,提供路由的下一跳信息,但是由于当前BGP协议实现上的一个重要约束协议在撤销路由的报文中不含有下一跳信息,只有地址前缀信息。因此,为使BGP邻居间可发送多条目的地址相同的路由,提供的如下的具体实现方案首先,BGP邻居在发送路由时将所有满足一定条件到达同一目的地址的路由发送到对端;之后,当撤销路由时,报文中Withdrawn Routes(撤销路由)字段里增加下一跳信息,并通过BGP能力协商机制,增加一种能力通告,使协议做到向后兼容;最后,当路由器收到带有下一跳信息的撤销通告消息时,则根据下一跳信息删除相应路由。
因此,当建立BGP邻居时,根据上述处理方案,接收端邻居向发送多条路由的一方通告能够处理带下一跳的withdrown路由。这样,在撤销路由时,在报文中增加指定撤销路由的下一跳来明确指定所要撤销的路由。
可以看出,当被发送的这些路由中的某个下一跳发生变化时,仅按照上述方案发送撤销消息,却并没有提供相应的更新处理过程,即目前无法针对存在多条路由的情况下的其中一个下一跳发生变化进行路由更新处理。

发明内容
本发明的目的是提供一种针对BGP负载分担中路由下一跳变化的处理方法,从而可以有效提高路由变化时的路由更新处理效率。
本发明的目的是通过以下技术方案实现的本发明提供了一种针对BGP负载分担中路由下一跳变化的处理方法,包括A、当基于边界网关协议BGP负载分担的系统中下一跳发生变化时,将变化前、后的下一跳信息承载于更新报文中发送;B、接收所述更新报文的BGP邻居实体根据报文中承载的变化前、后的下一跳信息进行一下跳路由信息的更新。
所述的更新报文包括基于第四版IP协议IPv4或第六版IP协议IPv6,网络报文交换协议IPX,IPv4虚拟专网VPN-IPv4地址族的更新报文。
所述的步骤A包括当下一跳发生变化时,在BGP的更新报文中指示变化后的下一跳信息长度值及具体的下一跳信息,并在所述更新报文中还指示变化前的下一跳信息长度值及具体的下一跳信息。
所述的步骤B包括接收端接收所述的更新报文后,利用报文中描述的变化前的下一跳信息和地址前缀作为索引,查找路由表中相应的路由,并进行对应下一跳路由信息的更新。
所述的步骤B具体包括当接收端接收到所述的更新报文后,若确定报文中的多协议网络层不可达信息MP_UNREACH_NLRI属性字段中包含下一跳信息,则将该下一跳信息和MP_REACH_NLRI中的地址信息作为索引查找路由表,并更新相应的下一跳路由信息。
本发明中,对于基于IPv4的更新报文,所述的步骤B具体包括
当接收端接收到所述的更新报文后,根据报文中的下一跳Next Hop字段中包含变化前下一跳信息,以及地址前缀查找路由表,并将相应的下一跳路由信息更新为路径属性Path Attribute中描述的下一跳。
本发明中,在执行所述的步骤A之前还包括通过BGP能力协商过程确定对端实体能够识别步骤A所述的更新报文后,执行所述的步骤A。
由上述本发明提供的技术方案可以看出,本发明提供的处理方法可以解决在BGP向邻居发送多条到达相同目的地址的路由情况下,当下一跳路由发生变化时的路由更新问题。而且,本发明提供的解决方法可以准确地更新发生变化的下一跳信息,有效提高了上述情况下的路由更新效率。


图1为BGP网络结构示意图;图2为本发明所述的方法的流程图。
具体实施例方式
本发明的目的是为了完善BGP发多条路由特性上在下一跳变化时,仅发送一次报文给邻居实体便可以实现相应的处理。
下面首先对本发明在实现过程中的主要处理进行说明。
本发明中,当下一跳路由发生变化时,则通过在BGP的update(更新)报文中增加路由变化前的下一跳信息进行相应的更新处理。接收端处理下一跳变化的更新报文时,则根据变化前的下一跳和路由地址前缀为索引查找路由表,并根据变化后的下一跳信息进行更新处理。
为对本发明有进一步的理解,下面将对本发明进行详细的说明。
本发明提供的方法适用于各类地址族的下一跳变化的路由更新处理,如IPv4、IPV6、IPX(网络报文交换协议)、VPN-IPv4(IPv4虚拟专网)等。
多协议地址族的路由可达信息和不可达信息具体通过两个新增属性通告MP_REACH_NLRI通告地址可达信息和MP_UNREACH_NLRI通告地址不可达信息,下面将分别对两通告报文格式进行说明。
其中,MP_REACH_NLRI通告报文的格式如表1所示表1+---------------------------------------------------------+|Address Family Identifier(2octets) |+---------------------------------------------------------+|Subsequent Address Family Identifier(1octet) |+---------------------------------------------------------+|Length of Next Hop Network Address(1octet) |+---------------------------------------------------------+|Network Address of Next Hop(variable)|+---------------------------------------------------------+|Number of SNPAs(1octet) |+---------------------------------------------------------+|Length of first SNPA(1octet) |+---------------------------------------------------------+|First SNPA(variable) |+---------------------------------------------------------+|Length of second SNPA(1octet)|+---------------------------------------------------------+|Second SNPA(variable)|+---------------------------------------------------------+|... |+---------------------------------------------------------+|Length of Last SNPA(1octet) |+---------------------------------------------------------+|Last SNPA(variable) |+---------------------------------------------------------+|Network Layer Reachability Information(variable) |+---------------------------------------------------------+|Length of Last SNPA(1octet) |+---------------------------------------------------------+|Last SNPA(variable) |+---------------------------------------------------------+|Network Layer Reachability Information(variable) |+---------------------------------------------------------+所述的MP_UNREACH_NLRI通告报文的格式如表2所示表2+---------------------------------------------------------+|Address Family Identifier(2octets) |+---------------------------------------------------------+|Subsequent Address Family Identifier(1octet) |+---------------------------------------------------------+|Withdrawn Routes(variable) |+---------------------------------------------------------+
因此,当相应地址族的下一跳路由发生变化时,MP_UNREACH_NLRI(不可达的多协议NLRI)属性字段内容格式更改如表3所示表3

与原有的MP_UNREACH_NLRI字段内容相比,表3所示的属性字段中只包含了下一跳变化前的地址信息,而不包含withdrawn routes信息,同时在该报文中还将有MP_REACH_NLRI(可达的多协议NRLI)字段,内容与协议相比不变,其中的下一跳为变化后的地址。
这样,当确定下一跳路由发生变化的一端实体发送包含表3所示内容信息的更新报文后,接收端接收并解析所述报文时,便可以发现在所述更新报文中的MP_UNREACH_NLRI属性字段中只包含下一跳信息,则以该下一跳和MP_REACH_NLRI属性字段中的地址信息(地址前缀信息)作为索引,查找路由表,将其下一跳改为更新后的下一跳,即MP_REACH_NLRI属性字段中承载的变化后的下一跳地址信息。
下面再结合附图,以基于IPv4地址的报文进行路由更新的过程对本发明所述的方法的具体实现方式进行说明。
如图2所示,本发明所述的方法具体包括以下处理步骤步骤21在BGP向邻居发送多条到达相同目的地址的路由情况下,确定下一跳路由发生变化;具体确定下一跳路由发生的方法可以是采用已有的故障检测机制、路由发现机制等等,本发明不关注,故不详述;
步骤21确定下一跳路由发生变化的一端实体构造包含变化前及变化后的下一跳信息的报文,并发送给对端实体;当向对端发送多条到达同一目的地址的路由,且其中一条下一跳路由发生变化时,为提高路由更新的效率,本发明中采用仅发送一次update(更新)报文的方式实现;所述的update报文构成除了包括普通update内容外,增加UnfeasibleRoutes Length(不可靠路由器长度)和Next Hop(下一跳)字段,但不包含Withdrawn Routes(撤销路由)字段;所述的update报文中承载变化前、后下一跳信息的格式如表4所示表4

上述报文格式不同现有协议的格式之处在于,通过该特性的能力协商后,针对下一跳变化的路由,Unfeasible Routes Length字段后面跟随的是首先是Next Hop,而不包括要撤销的路由(即Withdrawn Routes字段)。NextHop字段中的下一跳含义代表变化前的下一跳地址,在Path Attributes中包含的下一跳信息是变化后的下一跳。
步骤23接收端接收所述的update报文并解析获得其中承载的变化前、后下一跳路由信息;步骤24利用所述的变化前的下一跳路由信息作为索引查找路由表确定发生路由变化并需要更新的路由表项;
步骤25利用所述的变化后的下一跳路由信息更新所述的需要更新的路由表项,实现发生变化的下一跳路由信息的更新。
总之,当某条路由的下一跳发生变化时,报文构成按表4所示,与原有的撤销路由的报文相比,报文中将不再包括Withdrawn Routes字段,但是还需要包括Path Attributes和NLRI字段。接收处理该报文时,根据UnfeasibleRoutes Length的值可以判断该字段后面只有下一跳信息,而没有待撤销的路由前缀。根据Next Hop和NLRI中地址前缀索引在本端路由表中寻找路由,将该路由的下一跳改为Path Attributes中的下一跳,完成对下一跳变化的处理。
另外,在本发明中,在邻居之间协商了能力建立邻居后的撤销路由处理过程中,仍可以基于现有技术的方式进行路由的撤销处理,具体为发送撤销路由报文中必须在Unfeasible Routes Length字段后面跟随NextHop,接收端在接收、解析报文时,默认Unfeasible Routes Length后面跟随的是Next Hop字段,以该下一跳和Withdrawn Routes字段内的路由地址前缀作为双重索引,查找待撤销的路由。
综上所述,本发明的实现很好地完善了BGP向邻居发送多条到达相同目的地址的路由情况下,当路由下一跳发生变化时的处理过程,从而有效提高了相应的处理过程的效率。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
权利要求
1.一种针对BGP负载分担中路由下一跳变化的处理方法,其特征在于,包括A、当基于边界网关协议BGP负载分担的系统中下一跳发生变化时,将变化前、后的下一跳信息承载于更新报文中发送;B、接收所述更新报文的BGP邻居实体根据报文中承载的变化前、后的下一跳信息进行一下跳路由信息的更新。
2.根据权利要求1所述的针对BGP负载分担中路由下一跳变化的处理方法,其特征在于,所述的更新报文包括基于第四版IP协议IPv4或第六版IP协议IPv6,网络报文交换协议IPX,IPv4虚拟专网VPN-IPv4地址族的更新报文。
3.根据权利要求1所述的针对BGP负载分担中路由下一跳变化的处理方法,其特征在于,所述的步骤A包括当下一跳发生变化时,在BGP的更新报文中指示变化后的下一跳信息长度值及具体的下一跳信息,并在所述更新报文中还指示变化前的下一跳信息长度值及具体的下一跳信息。
4.根据权利要求1、2或3所述的针对BGP负载分担中路由下一跳变化的处理方法,其特征在于,所述的步骤B包括接收端接收所述的更新报文后,利用报文中描述的变化前的下一跳信息和地址前缀作为索引,查找路由表中相应的路由,并进行对应下一跳路由信息的更新。
5.根据权利要求要求4所述的针对BGP负载分担中路由下一跳变化的处理方法,其特征在于,所述的步骤B具体包括当接收端接收到所述的更新报文后,若确定报文中的多协议网络层不可达信息MP_UNREACH_NLRI属性字段中包含下一跳信息,则将该下一跳信息和MP_REACH_NLRI中的地址信息作为索引查找路由表,并更新相应的下一跳路由信息。
6.根据权利要求要求4所述的针对BGP负载分担中路由下一跳变化的处理方法,其特征在于,对于基于IPv4的更新报文,所述的步骤B具体包括当接收端接收到所述的更新报文后,根据报文中的下一跳Next Hop字段中包含变化前下一跳信息,以及地址前缀查找路由表,并将相应的下一跳路由信息更新为路径属性Path Attribute中描述的下一跳。
7.根据权利要求1、2或3所述的针对BGP负载分担中路由下一跳变化的处理方法,其特征在于,在执行所述的步骤A之前还包括通过BGP能力协商过程确定对端实体能够识别步骤A所述的更新报文后,执行所述的步骤A。
全文摘要
本发明涉及一种针对BGP负载分担中路由下一跳变化的处理方法。本发明主要包括首先,当基于边界网关协议BGP负载分担的系统中下一跳发生变化时,将变化前、后的下一跳信息承载于更新报文中发送;之后,接收所述更新报文的BGP邻居实体根据报文中承载的变化前、后的下一跳信息进行一下跳路由信息的更新。在BGP向邻居发送多条到达相同目的地址的路由情况下,当下一跳路由发生变化时,采用本发明提供的方法可以快速准确地实现下一跳路由信息的更新,有效提高了路由更新效率。
文档编号H04L29/06GK1949740SQ20051011258
公开日2007年4月18日 申请日期2005年10月11日 优先权日2005年10月11日
发明者张仁海 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1