一种路由生成方法和设备
技术领域
本发明涉及通信领域,尤其涉及一种路由生成方法和设备。
背景技术
6PE(IPv6ProvideEdge,IPv6服务提供商网络边缘)是一种过渡技术,它采用MPLS(MultiprotocolLabelSwitching,多协议标签交换)技术实现通过IPv4骨干网连接隔离IPv6用户网络。当ISP(InternetServiceProvider,网络服务提供商)希望在自己原有的IPv4/MPLS骨干网的基础上,为用户网络提供IPv6流量转发能力时,可以采用6PE技术方便地达到该目的。
如图1所示,为现有技术中一种典型的6PE组网的架构示意图。6PE设备从CE(CustomerEdge,用户网络边缘)设备接收到用户网络的IPv6路由信息后,为该路由信息分配标签,通过MP-BGP(MultiprotocolExtensionsforBGP-4,BGP-4的多协议扩展)会话将带有标签的IPv6路由信息发布给对端的6PE设备。对端6PE设备将接收到的IPv6路由信息扩散到本地连接的用户网络。从而,实现IPv6用户网络之间的路由信息发布。
为了隐藏IPv6报文,使得IPv4骨干网中的设备能够转发IPv6用户网络的报文,在IPv4骨干网络中需要建立公网隧道。该公网隧道可以是GRE(GenericRoutingEncapsulation,通用路由封装)隧道、MPLSLSP(LabelSwitchedPath,标签交换路径)、MPLSTE(TrafficEngineering,流量工程)隧道等。
6PE设备转发IPv6报文时,先为IPv6报文封装IPv6路由信息对应的标签(内层标签),再为其封装公网隧道对应的标签(外层标签)。骨干网中的设备根据外层标签转发报文,识别不出该报文为IPv6报文。对端6PE设备接收到报文后,删除内层和外层标签,将原始的IPv6报文转发到本地连接的用户网络。
路由协议分为两种,一种是IGP(InteriorGatewayProtocol,内部网关协议)协议,一种是EGP(ExteriorGatewayProtocol,外部网关协议)协议。BGP(BorderGatewayProtocol,边界网关协议)协议是一种EGP,主要用于控制路由的传播和选择最佳路由。当BGP协议运行于同一AS内部时,被称为IBGP(InternalBGP,内部BGP);当BGP协议运行于不同AS之间时,被称为EBGP(ExternalBGP,外部BGP)。
BGP协议可以基于迭代路由实现负载分担。由于BGP协议本身的特殊性,它产生的路由的下一跳(即原始下一跳)可能不是当前路由器直接相连的邻居。这种情况下,为了能够将报文正确转发出去,路由器必须先找到一个直接可达的地址(查找IGP(InteriorGatewayProtocol,内部网关协议)建立的路由表项),通过这个地址到达路由表中指示的下一跳。在上述过程中,去往直接可达地址的路由被称为依赖路由,BGP路由依赖于这些路由指导报文转发。根据下一跳地址找到依赖路由的过程就是路由迭代。
其中,如果原始下一跳本身是负载分担的(假设有三个下一跳地址),则BGP也会生成与依赖路由数量相同的下一跳地址来指导报文转发。
以图2所示的典型6PE组网为例,箭头为6PE的私网路由100::1/64的发布方向。其中:
PE1和PE2(均为6PE设备),分别使用本地环回口loop1和loop2建立两个IBGP邻居,PE1和PE2之间环回口的路由通过IGP协议学习,每个环回口对应形成3条等价链路。PE1上到目的地址3.3.3.3和4.4.4.4的路由的真实下一跳为20.1.1.1、10.1.1.1和30.1.1.1,路由形成三条等价。
由于6PE路由需要在IPv4骨干网上组建公网隧道才能转发,因此,还需要形成3.3.3.3和4.4.4.4的公网隧道,以MPLSLSP作为公网隧道为例,即生成3.3.3.3和4.4.4.4的LSP,因为MPLSLSP的形成是根据路由来的,所以MPLSLSP也在PE1上形成了三条等价。
BGP协议配置负载分担能力,使得6PE路由形成等价。BGP协议采用了loop1和loop2分别建立了两个BGP邻居,PE1学习到100::1/64的路由,会有两个原始下一跳,分别为3.3.3.3和4.4.4.4。由于BGP协议配置了负载分担能力,因此,在BGP路由表里,这两条路由都属于优选路由。从上述BGP协议的介绍可知,这两条路由需要有依赖路由,所以BGP协议要进行路由迭代,于是3.3.3.3和4.4.4.4这两条路由需要被迭代到IGP协议生成的真实下一跳20.1.1.1、10.1.1.1和30.1.1.1上,作为BGP的依赖路由存在。
现有技术中6PE私网路由形成等价的步骤包括:通过IGP学习到6PE路由的原始下一跳,将IGP学习到的路由通知给MPLS,MPLS形成原始下一跳的LSP隧道,并上报给BGP,由BGP通过从MPLS获取到的隧道信息,再为原始下一跳迭代依赖路由。
现有技术中,对6PE的这两条等价原始下一跳3.3.3.3和4.4.4.4而形成的不同的MPLSLSP,在实际形成过程中,MPLS会为3.3.3.3和4.4.4.4分别形成3条等价LSP,并将其报给BGP,BGP在获取MPLS隧道信息时,要分别将两个原始下一跳去进行依赖路由迭代,无法保障6PE依赖路由能选择不同的真实出接口来使得实际数据报文负载分担到不同链路上,很可能出现6PE数据报文在实际负载分担后,仍然走同一物理链路,这样负载分担到不同作用就无法保障。
发明内容
本发明的目的在于提供一种路由生成方法和设备,以实现依赖路由迭代时的负载分担,为此,本发明采用如下技术方案:
一种路由生成方法,应用于IPv6服务提供商网络边缘6PE组网,所述方法包括:
当PE设备接收到对端PE设备发送的用于发布6PE私网路由的协议报文,所述协议报文中携带特定信息,表明该协议报文属于6PE应用,且确定所述6PE私网路由存在多个原始下一跳和真实下一跳时,所述PE设备分别以所述多个原始下一跳为目的地址生成多协议标签MPLS标签交换路径LSP,并分别以所述多个真实下一跳为索引为所述MPLSLSP生成拓扑;
当所述PE设备为所述多个原始下一跳迭代依赖路由时,所述PE设备为所述多个原始下一跳选择索引不同的拓扑进行依赖路由迭代。
其中,所述PE设备为所述多个原始下一跳选择索引不同的拓扑进行依赖路由迭代,具体为:
当所述PE设备根据所述协议报文中携带的特定信息确定所述协议报文属于6PE应用时,所述PE设备为所述多个原始下一跳选择索引不同的拓扑进行依赖路由迭代。
其中,所述PE设备为所述多个原始下一跳选择索引不同的拓扑进行依赖路由迭代,具体为:
对于所述多个原始下一跳中的任一原始下一跳,所述PE设备从该原始下一跳对应的拓扑中,选择一个索引与用于所述多个原始下一跳中的其他原始下一跳进行依赖路由迭代的拓扑的索引不同的拓扑,进行依赖路由迭代。
其中,所述方法还包括:
所述PE设备中配置有所述拓扑用于依赖路由迭代的优先级;
所述PE设备为所述多个原始下一跳选择索引不同的拓扑进行依赖路由迭代,具体为:
对于所述多个原始下一跳中的任一原始下一跳,所述PE设备根据该原始下一跳对应的拓扑的优先级,按照优先级从高到低的顺序,依次判断所述拓扑的索引是否与用于所述多个原始下一跳中的其他原始下一跳进行依赖路由迭代的拓扑的索引不同,并当判断为不同,选择该拓扑为该原始下一跳进行依赖路由迭代。
一种网络设备,作为PE设备应用于IPv6服务提供商网络边缘6PE组网,所述网络设备包括:
接收模块,用于接收对端PE设备发送的用于发布6PE私网路由的协议报文,所述协议报文中携带特定信息,表明该协议报文属于6PE应用;
生成模块,用于当所述网络设备确定所述6PE私网路由存在多个原始下一跳和真实下一跳时,分别以所述多个原始下一跳为目的地址生成多协议标签MPLS标签交换路径LSP,并分别以所述多个真实下一跳为索引为所述MPLSLSP生成拓扑;
路由迭代模块,用于当所述网络设备为所述多个原始下一跳迭代依赖路由时,为所述多个原始下一跳选择索引不同的拓扑进行依赖路由迭代。
其中,所述路由迭代模块具体用于,当所述网络设备根据所述协议报文中携带的特定信息确定所述协议报文属于6PE应用时,为所述多个原始下一跳选择索引不同的拓扑进行依赖路由迭代。
其中,所述路由迭代模块具体用于,对于所述多个原始下一跳中的任一原始下一跳,从该原始下一跳对应的拓扑中,选择一个索引与用于所述多个原始下一跳中的其他原始下一跳进行依赖路由迭代的拓扑的索引不同的拓扑,进行依赖路由迭代。
其中,所述网络设备中配置有所述拓扑用于依赖路由迭代的优先级;
所述路由迭代模块具体用于,对于所述多个原始下一跳中的任一原始下一跳,根据该原始下一跳对应的拓扑的优先级,按照优先级从高到低的顺序,依次判断所述拓扑的索引是否与用于所述多个原始下一跳中的其他原始下一跳进行依赖路由迭代的拓扑的索引不同,并当判断为不同,选择该拓扑为该原始下一跳进行依赖路由迭代。
本发明上述实施例中,当PE设备接收到对端PE设备发送的用于发布6PE私网路由的协议报文,且确定该6PE私网路由存在多个原始下一跳和真实下一跳时,PE设备分别以该多个原始下一跳为目的地址生成MPLSLSP,并分别以该多个真实下一跳为索引为该MPLSLSP生成拓扑;当该PE设备为上述多个原始下一跳迭代依赖路由时,该PE设备为该多个原始下一跳选择索引不同的拓扑进行路由迭代,实现了依赖路由迭代时的负载分担。
附图说明
图1为现有技术中一种典型的6PE组网的架构示意图;
图2为现有技术中另一种典型的6PE组网的架构示意图;
图3为本发明实施例提供的一种路由生成方法的流程示意图;
图4为本发明实施例提供的一种网络设备的结构示意图。
具体实施方式
针对现有技术存在的上述问题,本发明实施例提供了一种路由生成的技术方案,应用于6PE组网。在该技术方案中,当PE设备接收到对端PE设备发送的用于发布6PE私网路由的协议报文,且确定该6PE私网路由存在多个原始下一跳和真实下一跳时,PE设备分别以该多个原始下一跳为目的地址生成MPLSLSP,并分别以该多个真实下一跳为索引为该MPLSLSP生成拓扑;当该PE设备为上述多个原始下一跳迭代依赖路由时,该PE设备为该多个原始下一跳选择索引不同的拓扑进行路由迭代,实现了依赖路由迭代时的负载分担。
下面将结合本发明的实施例中的附图,对本发明的实施例中的技术方案进行清楚、完整的描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明的实施例保护的范围。
如图3所示,为本发明实施例提供的一种路由生成方法的流程示意图,可以包括以下步骤:
步骤301、PE设备接收对端PE设备发送的用于发布6PE私网路由的协议报文。
具体的,以图2所示应用场景为例,6PE私网路由100::1/64通过PE2向PE1发布,PE1和PE2之间通过环回口loop1和loop2建立IGBP邻居,该6PE私网路由100::1/64存在两个原始下一跳3.3.3.3和4.4.4.4,这两个原始下一跳通过IGP协议发布给PE1,在PE1上形成三条等价路由,其真实下一跳分别为20.1.1.1、10.1.1.1和30.1.1.1。
步骤302、当PE设备确定该6PE私网路由存在多个原始下一跳和真实下一跳时,该PE设备分别以该多个原始下一跳为目的地址生成MPLSLSP,并分别以该多个真实下一跳为索引为该MPLSLSP生成拓扑。
具体的,仍以步骤301中所描述的应用场景为例。PE1接收到的PE2发布的6PE私网路由100::1/64,存在两个原始下一跳3.3.3.3和4.4.4.4,三个真实下一跳20.1.1.1、10.1.1.1和30.1.1.1。PE1分别以3.3.3.3和4.4.4.4为目的地址生成MPLSLSP作为公网隧道,并分别为该MPLSLSP生成三个拓扑,该拓扑以真实下一跳为索引生成,即PE1分别以20.1.1.1、10.1.1.1和30.1.1.1为索引为上述两个MPLSLSP各生成三个不同的拓扑。
步骤303、当PE设备为该多个原始下一跳迭代依赖路由时,该PE设备为该多个原始下一跳选择真实下一跳不同的拓扑进行依赖路由迭代。
具体的,在本发明实施例中,为了实现负载分担,PE设备在为上述多个原始下一跳迭代依赖路由时,可以分别为该多个原始下一跳路由选择真实下一跳不同的拓扑进行依赖路由迭代。
例如,当PE1为3.3.3.3迭代依赖路由时(假设此时4.4.4.4还未进行依赖路由迭代),则PE1可以从为该原始下一跳生成的三个拓扑(索引分别为20.1.1.1、10.1.1.1和30.1.1.1)中选择一个,进行依赖路由迭代(如,选择20.1.1.1);当PE1为4.4.4.4迭代依赖路由时(此时已选择20.1.1.1为3.3.3.3进行依赖路由迭代),PE1可以选择10.1.1.1或30.1.1.1为4.4.4.4进行依赖路由迭代。
其中,当PE1完成为3.3.3.3迭代依赖路由后,PE1为4.4.4.4迭代依赖路由时,可以依次选择20.1.1.1、10.1.1.1和30.1.1.1,并判断所选择的拓扑的索引(即真实下一跳)是否与用于上述多个原始下一跳中的其他原始下一跳(即3.3.3.3)进行依赖路由迭代的拓扑的索引(即20.1.1.1)相同,并选择一个索引与用于3.3.3.3进行依赖路由迭代的拓扑的索引不同的拓扑(即10.1.1.1或30.1.1.1),为4.4.4.4进行依赖路由迭代。
其中,在本发明实施例中,可以在用于发布6PE私网路由的协议报文中携带特定信息,以表明该协议报文属于6PE应用。当PE设备接收到对端PE发送的用于发布6PE私网路由的协议报文时,可以根据该协议报文中携带的特定信息确定该协议报文是否属于6PE应用,并当判断为是时,为上述多个原始下一跳选择真实下一跳不同的拓扑进行依赖路由迭代。
例如,上述协议报文中的特定信息可以为:BGP的Update(更新)报文的“MP_REACH_NHLI”部分,其中使用的AddressFamily(地址族)为IPv6,subsequentaddressfamilyidentifier(并发地址族标识)为标签单播,nexthop(下一跳)字段即原始下一跳,然后是带标签的IPv6路由字段,即LabelStack(标签栈)和IPv6。
需要注意的时,上文描述的用于识别协议报文是否属于6PE应用的特定信息仅仅是一种具体的实现方式,而并不是对本发明保护范围的限定,本发明实施例提供的技术方案在具体实现时,也可以使用其他特定信息来对属于6PE应用的协议报文进行标识,例如,可以在属于6PE应用的协议报文中新增一个预先约定的字段,其具体实现方式在此不再赘述。
进一步地,在本发明实施例中,还可以在PE设备中配置各拓扑用于依赖路由迭代的优先级,即配置偏好拓扑(对应拓扑的索引进行配置),拓扑的偏好需求越高,其用于依赖路由迭代的优先级越高。当PE设备为上述多个原始下一跳选择拓扑进行依赖路由迭代时,需要先确定是否配置有偏好拓扑,并当配置有偏好拓扑时,按照偏好需求(即拓扑用于依赖路由迭代的优先级)从高到低的顺序,依次判断对应的拓扑的索引是否与用于上述多个原始下一跳中的其他原始下一跳进行依赖路由迭代的拓扑的真实下一跳不同,并当判断为不同时,选择该拓扑为该原始下一跳进行依赖路由迭代。
仍以步骤301中所描述的应用场景为例,假设PE1配置的偏好拓扑的偏好需求从高到低依次为20.1.1.1、10.1.1.1和30.1.1.1(即PE1设备选择拓扑进行依赖路由迭代时,索引为20.1.1.1的拓扑的优先级最高,10.1.1.1次之,30.1.1.1最低)。当PE1为3.3.3.3进行依赖路由迭代时(假设此时4.4.4.4还未进行依赖路由迭代),PE1选择20.1.1.1进行依赖路由迭代;当PE1为4.4.4.4进行依赖路由迭代时(此时3.3.3.3已进行依赖路由迭代),优先选择20.1.1.1进行依赖路由迭代,但发现该拓扑的索引与为3.3.3.3进行依赖路由迭代的拓扑的索引相同,因此,PE1选择10.1.1.1为4.4.4.4进行依赖路由迭代。
通过以上描述可以看出,在本发明实施例中,当PE设备接收到对端PE设备发送的用于发布6PE私网路由的协议报文,且确定该6PE私网路由存在多个原始下一跳和真实下一跳时,PE设备分别以该多个原始下一跳为目的地址生成MPLSLSP,并分别以该多个真实下一跳为索引为该MPLSLSP生成拓扑;当该PE设备为上述多个原始下一跳迭代依赖路由时,该PE设备为该多个原始下一跳选择索引不同的拓扑进行路由迭代,实现了依赖路由迭代时的负载分担。
基于上述方法实施例系统的发明构思,本发明实施例还提供了一种网络设备,可以作为PE设备应用于上述方法实施例。
如图4所示,为本发明实施例提供的一种网络设备的结构示意图,该网络设备可以作为PE设备应用于6PE组网,该网络设备包括:
接收模块41,用于接收对端PE设备发送的用于发布6PE私网路由的协议报文;
生成模块42,用于当所述网络设备确定所述6PE私网路由存在多个原始下一跳和真实下一跳时,分别以所述多个原始下一跳为目的地址生成多协议标签MPLS标签交换路径LSP,并分别以所述多个真实下一跳为索引为所述MPLSLSP生成拓扑;
路由迭代模块43,用于当所述网络设备为所述多个原始下一跳迭代依赖路由时,为所述多个原始下一跳选择索引不同的拓扑进行依赖路由迭代。
其中,所述路由迭代模块43具体用于,当所述网络设备根据所述协议报文中携带的特定信息确定所述协议报文属于6PE应用时,为所述多个原始下一跳选择索引不同的拓扑进行依赖路由迭代。
其中,所述路由迭代模块43具体用于,对于所述多个原始下一跳中的任一原始下一跳,从该原始下一跳对应的拓扑中,选择一个索引与用于所述多个原始下一跳中的其他原始下一跳进行依赖路由迭代的拓扑的索引不同的拓扑,进行依赖路由迭代。
其中,所述网络设备中配置有所述拓扑用于依赖路由迭代的优先级;
所述路由迭代模块43具体用于,对于所述多个原始下一跳中的任一原始下一跳,根据该原始下一跳对应的拓扑的优先级,按照优先级从高到低的顺序,依次判断所述拓扑的索引是否与用于所述多个原始下一跳中的其他原始下一跳进行依赖路由迭代的拓扑的索引不同,并当判断为不同,选择该拓扑为该原始下一跳进行依赖路由迭代。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。