MPLS和BGP组网中的路由收敛方法和设备与流程

文档序号:12008387阅读:263来源:国知局
MPLS和BGP组网中的路由收敛方法和设备与流程
本申请涉及网络通信技术,特别涉及多协议标签交换(MPLS:MultiprotocolLabelSwitching)和边界网关协议(BGP:BorderGatewayProtocol)组网中的路由收敛方法和设备。

背景技术:
应用了MPLS和BGP的组网,其可扩展性好,并能够方便地支持MPLS服务质量(QoS)和MPLS流量工程(TE:TrafficEngineering),得到越来越多的应用。以下为便于描述,将应用了MPLS和BGP的组网称为MPLS和BGP组网,简称为BGP/MPLS组网。在BGP/MPLS组网中,BGP作为上层控制层面,控制BGP路由的发布和撤销。而MPLS作为下层数据转发平面,利用BGP发布的BGP路由进行报文的转发。然而,由于BGP路由采用下一跳方式逐跳转发,只有在感知到已发布的BGP路由的下一跳失效时才会将该已发布的BGP路由标记为失效路由,这样就会出现以下问题:当BGP/MPLS组网中出现MPLS标签交换路径(LSP:Label-SwitchPath)转发无效,比如链路不可达、或者MPLS标签发生错误等情况时,如果应用于该LSP的BGP路由此时还未失效,就会使得该BGP路由仍然用于报文转发,这会导致报文转发不通,甚至导致报文丢失,不能实现BGP路由的快速收敛。比如,图1所示BGP/MPLS组网中,假定服务提供商网络边缘设备(PE:ProviderEdge)1上BGP路由的下一跳为PE2的IP地址,该BGP路由应用于PE1至PE2之间的LSP,假如PE1至PE2之间的LSP转发无效,比如PE1至P1的MPLS转发链路故障,则当PE1此时本次存在已发布的应用于PE1至PE2之间LSP的BGP路由,并且,该BGP路由还未被标记为失效路由,则PE1是不会撤销该BGP路由的,其仍然会使用该BGP路由进行报文的转发,而由于PE1至PE2之间的LSP转发无效,这样,PE1在使用该BGP路由进行报文转发时是不会成功转发报文的,即出现了一个转发不通的BGP路由长期被应用于报文的转发,无法实现BGP路由的快速收敛,影响报文的转发。

技术实现要素:
本申请提供了MPLS和BGP组网中的路由收敛方法和设备,以通过BGP和LSP相关联,快速实现BGP路由的快速收敛,提高报文的转发性能。本申请提供的技术方案包括:一种多协议标签交换MPLS和边界网关协议BGP组网中的路由收敛方法,所述方法应用于所述MPLS和BGP组网中的服务提供商网络边缘设备PE,所述PE使能了BGP路由和标签转发路径LSP相关联功能并执行以下步骤:定期对本PE上BGP路由的下一跳所迭代的标签转发路径LSP进行有效性检测;检测到LSP无效时,将下一跳迭代到该无效LSP的BGP路由标记为失效路由,并检查本PE上是否存在与被标记为失效路由的BGP路由具有相同前缀的其他BGP路由;在本PE上不存在与被标记为失效路由的BGP路由具有相同前缀的其他BGP路由时,撤销所述被标记为失效路由的BGP路由;在本PE上存在与被标记为失效路由的BGP路由具有相同前缀的其他BGP路由时,撤销所述被标记为失效路由的BGP路由,并从所述其他BGP路由中优选一个满足以下条件的BGP路由替换所述被标记为失效路由的BGP路由进行报文转发:下一跳迭代的LSP不同于被标记为失效路由的BGP路由的下一跳迭代的LSP。优选地,所述定期对本PE上BGP路由的下一跳所迭代的LSP进行有效性检测包括:定期通过本PE上BGP路由的下一跳所迭代的LSP发送检测报文;当本PE在设定时间内通过所述LSP接收到针对所述检测报文的响应报文时,确定所述LSP有效,反之确定所述LSP无效。优选地,所述PE在检测到本PE上BGP路由的下一跳所迭代的LSP无效之后、且在将下一跳迭代到该无效LSP的BGP路由标记为失效路由之前,进一步包括:检测无效的LSP持续无效的时间是否达到设定的时长、且检测所述BGP路由的下一跳是否可达;在所述无效的LSP持续无效的时间达到设定的时长、且所述BGP路由的下一跳可达时,执行所述将下一跳迭代到该无效LSP的BGP路由标记为失效路由的操作。优选地,BGP路由的下一跳所迭代的LSP通过以下步骤确定:从预先已建立的转发等价类FEC中查找路由前缀为所述BGP路由的下一跳的FEC;所述FEC中至少包括:路由前缀、FEC应用的LSP;将查找到的FEC所应用的LSP作为所述BGP路由的下一跳所迭代的LSP。优选地,当所述PE作为所述MPLS和BGP组网中用户边缘网络设备CE的众多归属中的其中一个归属时,所述撤销被标记为失效路由的BGP路由进一步包括:将本PE撤销所述被标记为失效路由的BGP路由的消息通知给所述CE,以使所述CE根据所述消息重新调整路由。一种服务提供商网络边缘设备PE,所述PE包括:标签转发路径LSP检测模块、转发模块、边界网关协议BGP模块;LSP检测模块,使能了BGP路由和LSP相关联功能,用于定期对本PE上BGP路由的下一跳所迭代的LSP进行有效性检测;转发模块,用于在所述LSP检测模块检测到LSP无效时,将LSP无效的消息发送给BGP模块;BGP模块,用于接收到所述消息时,将下一跳迭代到该无效LSP的BGP路由标记为失效路由,并检查本PE上是否存在与被标记为失效路由的BGP路由具有相同前缀的其他BGP路由;在检查到本PE上不存在与被标记为失效路由的BGP路由具有相同前缀的其他BGP路由时,撤销所述被标记为失效路由的BGP路由;在检查到本PE上存在与被标记为失效路由的BGP路由具有相同前缀的其他BGP路由时,撤销所述被标记为失效路由的BGP路由,并从所述其他BGP路由中优选一个满足以下条件的BGP路由替换所述被标记为失效路由的BGP路由进行报文转发:下一跳迭代的LSP不同于被标记为失效路由的BGP路由的下一跳迭代的LSP。优选地,所述LSP检测模块定期对本PE上BGP路由的下一跳所迭代的LSP进行有效性检测包括:定期通过本PE上BGP路由的下一跳所迭代的LSP发送检测报文;当本PE在设定时间内通过所述LSP接收到针对所述检测报文的响应报文时,确定所述LSP有效,反之确定所述LSP无效。优选地,所述BGP模块在将下一跳迭代到该无效的LSP的BGP路由标记为失效路由之前,进一步包括:检测无效的LSP持续无效的时间是否达到设定的时长、且检测所述BGP路由的下一跳是否可达;在所述无效的LSP持续无效的时间达到设定的时长、且所述BGP路由的下一跳可达时,执行所述将下一跳迭代到该无效LSP的BGP路由标记为失效路由的操作。优选地,当所述PE作为所述MPLS和BGP组网中用户边缘网络设备CE的众多归属中的其中一个归属时,所述BGP模块撤销被标记为失效路由的BGP路由进一步包括:将本PE撤销所述被标记为失效路由的BGP路由的消息通知给所述CE,以使所述CE根据所述消息重新调整路由。优选地,本发明中,所述LSP检测模块通过以下步骤确定BGP路由的下一跳所迭代的LSP:从预先已建立的转发等价类FEC中查找路由前缀为所述BGP路由的下一跳的FEC;所述FEC中至少包括:路由前缀、FEC应用的LSP;将查找到的FEC所应用的LSP作为所述BGP路由的下一跳所迭代的LSP。由以上技术方案可以看出,本发明能够在BGP/MPLS组网中,将MPLS转发层面的LSP与BGP路由控制平面的BGP路由相关联,通过对LSP进行有效性检测,并在检测出LSP转发无效时,如果当前存在其他可达的BGP路由,则及时切换与转发无效的LSP相关联的BGP路由,而如果当前不存在其他可达的BGP路由亦可及时撤销该与转发无效的LSP相关联的BGP路由,避免一个转发不通的BGP路由长期被应用于报文的转发,加速BGP路由的快速收敛,提高报文的转发性能。附图说明图1为BGP/MPLS组网应用示意图;图2为本发明实施例提供的方法流程图;图3为本发明实施例1的应用组网图;图4为本发明实施例2的应用组网图;图5为本发明实施例3的应用组网图;图6为本发明实施例提供的PE结构图。具体实施方式为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。图2为本发明实施例提供的方法流程图。其中,该方法应用于MPLS和BGP组网(简称BGP/MPLS组网)中的PE,比如图1中的PE1、PE2。如图2所示,所述PE执行以下步骤:步骤201,定期对本PE上BGP路由的下一跳所迭代的LSP进行有效性检测,当检测到所述LSP无效时,执行步骤202。这里,本PE上的BGP路由具体为应用于公网隧道比如GRE隧道、LSP隧道等的路由,其一般是从到达同一目的地的多个BGP路由中优选出来的。目前,PE按照以下原则从到达同一目的地的多个BGP路由中优选BGP路由:(1),丢弃下一跳(NEXT_HOP)不可达的路由;(2),优选首选值(Preferred-value)最大的路由;(3),优选本地优先级(LOCAL_PREF)最高的路由;(4),选聚合路由;(5),优选自治系统(AS:AutonomousSystem)路径(AS_PATH)最短的路由;(6),依次选择源属性(ORIGIN)类型为IGP、EGP、Incomplete的路由;(7),优选多出口鉴别(MED:Multi-Exit-Discriminator)值最低的路由;(8),依次选择从外部的BGP(EBGP:ExternalBGP)、联盟、内部的BGP(IBGP:InternalBGP)学来的路由;(9),优选下一跳花费(Cost)值最低的路由;(10),优选CLUSTER_LIST长度最短的路由;(11),优选ORIGINATOR_ID最小的路由;(12),优选RouterID最小的路由器发布的路由;(13),优选IP地址最小的对等体发布的路由。本发明中,BGP是一个AS到AS的路由协议,并不是一个路由器到路由器的路由协议。在BGP中,BGP路由的下一跳的意思并不是指下一个路由器,而是指一个IP地址。比如,图1所示MPLS/BGP组网中,PE1产生到达8.0.0.0网络的路由通告给PE2时,下一跳地址就是PE1与PE2连接时所用的接口IP地址,比如为1.1.1.1/24。基于针对BGP路由下一跳的描述,则本PE上BGP路由的下一跳所迭代的LSP通过以下步骤确定:步骤1,从预先已建立的转发等价类(FEC:ForwardingEquivalenceClass)中查找路由前缀为所述BGP路由的下一跳的FEC。FEC,是MPLS中的一个重要概念。MPLS实质是一种分类转发技术,它将具有相同转发处理方式比如目的地相同、使用转发路径相同或者具有相同服务等级等的分组归为一类,称为一个FEC。FEC的划分方式非常灵活,本发明中,FEC中包含前缀、服务等级、应用的LSP等信息,基于此,本步骤1中,就以所述BGP路由的下一跳为关键词在已划分的所有FEC中查找前缀为关键词的FEC。步骤2,将步骤1查找到的FEC所应用的LSP作为所述BGP路由的下一跳所迭代的LSP。在MPLS中,对于每一个FEC,都会对应建立一条独立的LSP穿过网络,到达目的地。基于此,本步骤2中,可将针对步骤1查找到的FEC所应用的LSP作为所述BGP路由的下一跳所迭代的LSP。至此,通过上述两个步骤即可确定出本PE上BGP路由的下一跳所迭代的LSP。在确定出本PE上BGP路由的下一跳所迭代的LSP后,即可定期对本PE上BGP路由的下一跳所迭代的LSP进行有效性检测。其中,对LSP有效性检测的时间可由用户根据实际网络需求进行设置。作为本发明的一个实施例,本发明中,PE对本PE上BGP路由的下一跳所迭代的LSP进行有效性检测可采用MPLSping的方式。MPLSping是一种检测MPLSLSP数据平面故障的方法,这个方法简单有效,可以发现一些控制平面无法发现的故障,为用户提供了一种在短时间内发现和隔离路由黑洞或者路由丢失等故障的方法。下面以MPLSping为例描述PE如何定期对本PE上BGP路由的下一跳所迭代的LSP进行有效性检测:以图1所示组网为例,假如PE1上BGP路由的下一跳所迭代的LSP为PE1与PE2之间的LSP,其中,如图1所示,该LSP的入标签交换路由器(IngressLSR)为PE1,出标签交换路由器(EngressLSR)为PE2,则PE1定期通过至PE2的LSP发送检测报文,该检测报文具体为MPLSEchorequest,被封装在UDP包中。当PE2通过至PE1的LSP接收到所述MPLSEchorequest时,其会返回一个响应报文。该响应报文具体为MPLSechoreply,被封装在UDP包中。当PE1通过至PE2的LSP收到PE2返回的MPLSechoreply时,其会认为从本PE1至PE2的LSP可以正确的用于数据转发,即确定从本PE1至PE2的LSP有效,反之,当PE1在一定时间内没有通过至PE2的LSP收到PE2返回的MPLSechoreply,其会认为从本PE1至PE2的LSP不可以通畅地用于数据转发,即本PE1确定从本PE1至PE2的LSP无效。需要说明的是,在本发明中,当PE检测到其BGP路由的下一跳所迭代的LSP有效时,可按照现有BGP路由的处理方式执行,这里不再赘述。步骤202,将下一跳迭代到该无效的LSP的BGP路由标记为失效路由。之后执行步骤203。本步骤202是在PE检测到其BGP路由的下一跳所迭代的LSP无效时执行。优选地,本发明中,为便于精确控制本发明的执行,可在PE检测到BGP路由的下一跳所迭代的LSP无效的基础上进一步细分步骤203执行的前提条件,比如,步骤202是在PE检测到BGP路由的下一跳所迭代的LSP无效的时间持续设定的时长、且BGP路由的下一跳可达时执行。这里,BGP路由的下一跳是否可达依赖于PE本地是否将该BGP路由标记为失效路由,如果该BGP路由未被标记为失效路由,则意味着该BGP路由的下一跳可达,反之,如果该BGP路由被标记为失效路由,则意味着该BGP路由的下一跳不可达。基于上述细分的前提条件,则可以得到只有在PE检测到BGP路由的下一跳所迭代的LSP无效的时间持续设定的时长、且BGP路由的下一跳可达时才执行步骤202。而当BGP路由的下一跳不可达时,其仍然按照现有BGP路由不可达时的处理方式执行,不执行本步骤202。步骤203,检查本PE上是否存在与被标记为失效路由的BGP路由具有相同前缀的其他BGP路由,如果否,执行步骤204,如果是,执行步骤205。步骤204,撤销所述被标记为失效路由的BGP路由。通过步骤204能够尽快将失效的BGP路由撤销,避免失效的BGP路由被用于数据转发,减少数据错误发送,这实现了失效BGP路由的加速收敛,避免黑洞路由。步骤205,撤销所述被标记为失效路由的BGP路由,并从所述其他BGP路由中优选一个满足以下条件的BGP路由替换所述被标记为失效路由的BGP路由进行报文转发:下一跳迭代的LSP不同于被标记为失效路由的BGP路由的下一跳迭代的LSP。通过步骤205能够及时切换失效的BGP路由,避免失效的BGP路由被用于数据转发,减少数据错误发送,避免黑洞路由。至此,完成图2所示流程。需要说明的是,本发明中,作为一个实施例,可以默认BGP/MPLS组网中的PE均使能了BGP路由和LSP相关联功能,并执行图2所示的流程。当然,作为本发明的另一个实施例,也可在BGP/MPLS组网中的PE执行图2所示的流程之前先触发该PE使能BGP路由和LSP相关联功能,之后再执行图2所示流程。下面以默认BGP/MPLS组网中的PE执行图2所示的流程为例通过三个实施例对图2所示流程进行描述:实施例1:如图3所示,MPLS骨干网存在两条LSP链路,一个为LSP1,另一个为LSP2,在PE1与PE2之间建立了两对BGP邻居。其中,该两对BGP邻居分别对应BGP路由1和BGP路由2,BGP路由1应用于LSP1,BGP路由2应用于LSP2。正常情况下,PE1通过优选应用于LSP1的BGP路由1与PE2通信,即PE1通过LSP1向PE2转发数据流。然而,当PE1按照步骤201的方式检测到LSP1无效时,假如此时PE1还未通过BGP检测出BGP路由1的下一跳不可达,这里,BGP路由1在未标记为失效路由时,表示BGP路由1的下一跳可达,反之,表示不可达。则基于上述步骤202,PE1先将BGP路由1标记为失效路由,同时,基于上述步骤203,PE1检查本PE1上是否存在与BGP路由1具有相同前缀的其他BGP路由。假如PE1检查出本PE1上还存在与BGP路由1具有相同前缀的BGP路由2,且该BGP路由2的下一跳迭代至LSP2,不同于BGP路由1的下一跳迭代的LSP1,则PE1撤销BGP路由1,同时,PE1优选BGP路由2向PE2转发数据流。之后,PE1就通过LSP2向PE2发送数据流,这能够及时切换失效的BGP路由,避免失效的BGP路由被用于数据转发,减少数据错误发送,避免黑洞路由。至此,完成实施例1的描述。实施例2:如图4所示,CE1存在双归属,即,CE1同时与PE1、PE3连接,并且,PE1、PE3均与远端的PE2建立了BGP邻居。其中,PE1与PE2之间的BGP邻居对应BGP路由1,应用于LSP1,PE3与PE2之间的BGP邻居对应BGP路由2,应用于LSP2。正常情况下,CE1向CE2转发的数据流会优选通过PE3上应用于LSP2的BGP路由2转发,然而当PE3按照上述步骤201检测出LSP2无效即转发不通时,假如此时PE3还未通过BGP检测出BGP路由2的下一跳不可达,这里,BGP路由2在未标记为失效路由时,表示BGP路由2的下一跳可达,反之,表示不可达。则基于上述步骤202,PE3就将BGP路由2标记为失效路由,同时,基于上述步骤203,PE3检查本PE3上是否存在与BGP路由2具有相同前缀的其他BGP路由,结果发现本PE3上不存在与BGP路由2具有相同前缀的其他BGP路由,则PE3撤销BGP路由2,并且,为保证CE1与CE2之间的数据流转发,PE3会将本PE3撤销BGP路由2的消息通知给CE1。假如图4所示的LSP2转发正常,则当CE1收到消息后,CE1再向CE2转发的数据流就会优选通过PE1上应用于LSP1的BGP路由1转发。这能够及时切换失效的BGP路由,避免失效的BGP路由被用于数据转发,减少数据错误发送,避免黑洞路由。至此,完成实施例2的描述。实施例3:假设如图5所示,PE1与PE2之间建立了两种类型的邻居关系,一种为IPv6BGP4+邻居,另一种为6PE邻居。则针对CE1到CE2的数据流,在正常情况下,PE1会优选6PE邻居的路由转发该向CE2转发的数据流。其中,6PE邻居的路由是其走MPLS转发,该路由属于BGP路由,记为BGP路由1,迭代至PE1与PE2之间的LSP。当PE1与PE2之间的LSP无效即转发不通时,按照现有技术,迭代至该LSP的BGP路由1即变为一个无效的黑洞路由,然而,如果实施本发明,当检测到PE1与PE2之间的LSP无效即转发不通时,基于步骤202,PE1就将迭代至该LSP的BGP路由1标记为失效路由,同时,基于上述步骤203,PE1检查本PE1上是否存在与该BGP路由1具有相同前缀的其他BGP路由,结果发现本PE1上不存在与该BGP路由1具有相同前缀的其他BGP路由,则PE1及时撤销该BGP路由1。而此时PE1与PE2还存在一个普通的IPv6BGP4+邻居(该IPv6BGP4+邻居可以通过人工干预),PE1与PE2还存在其他协议的路由原理类似,则PE1此时优选BGP4+邻居的ipv6路由该向CE2转发的数据流。这能够及时切换失效的BGP路由,避免失效的BGP路由被用于数据转发,减少数据错误发送,避免黑洞路由。至此,完成实施例3的描述。由以上技术方案可以看出,本发明能够在BGP/MPLS组网中,将MPLS转发层面的LSP与BGP路由控制平面的BGP路由相关联,通过对LSP进行有效性检测,并在检测出LSP转发无效时,如果当前存在其他可达的BGP路由,则及时切换与转发无效的LSP相关联的BGP路由,而如果当前不存在其他可达的BGP路由亦可及时撤销该与转发无效的LSP相关联的BGP路由,避免一个转发不通的BGP路由长期被应用于报文的转发,加速BGP路由的快速收敛,提高报文的转发性能。以上对本发明提供的方法进行了描述,下面对本发明提供的PE进行描述:参见图6,图6为本发明实施例提供的PE的结构图。如图6所示,所述PE包括:LSP检测模块、转发模块、BGP模块;其中,LSP检测模块,使能了BGP路由和LSP相关联功能,用于定期对本PE上BGP路由的下一跳所迭代的LSP进行有效性检测;转发模块,用于在所述LSP检测模块检测到LSP无效时,将LSP无效的消息发送给BGP模块;BGP模块,用于接收到所述消息时,将下一跳迭代到该无效LSP的BGP路由标记为失效路由,并检查本PE上是否存在与被标记为失效路由的BGP路由具有相同前缀的其他BGP路由;在检查到本PE上不存在与被标记为失效路由的BGP路由具有相同前缀的其他BGP路由时,撤销所述被标记为失效路由的BGP路由;在检查到本PE上存在与被标记为失效路由的BGP路由具有相同前缀的其他BGP路由时,撤销所述被标记为失效路由的BGP路由,并从所述其他BGP路由中优选一个满足以下条件的BGP路由替换所述被标记为失效路由的BGP路由进行报文转发:下一跳迭代的LSP不同于被标记为失效路由的BGP路由的下一跳迭代的LSP。优选地,所述LSP检测模块定期对本PE上BGP路由的下一跳所迭代的LSP进行有效性检测包括:定期通过本PE上BGP路由的下一跳所迭代的LSP发送检测报文;当本PE在设定时间内通过所述LSP接收到针对所述检测报文的响应报文时,确定所述LSP有效,反之确定所述LSP无效。优选地,所述BGP模块在将下一跳迭代到该无效的LSP的BGP路由标记为失效路由之前,进一步包括:检测无效的LSP持续无效的时间是否达到设定的时长、且检测所述BGP路由的下一跳是否可达;在所述无效的LSP持续无效的时间达到设定的时长、且所述BGP路由的下一跳可达时,执行所述将下一跳迭代到该无效LSP的BGP路由标记为失效路由的操作。优选地,当所述PE作为所述MPLS和BGP组网中用户边缘网络设备CE的众多归属中的其中一个归属时,所述BGP模块撤销被标记为失效路由的BGP路由进一步包括:将本PE撤销所述被标记为失效路由的BGP路由的消息通知给所述CE,以使所述CE根据所述消息重新调整路由。本发明中,LSP检测模块通过以下步骤确定BGP路由的下一跳所迭代的LSP:从预先已建立的FEC中查找路由前缀为所述BGP路由的下一跳的FEC;所述FEC中至少包括:路由前缀、FEC应用的LSP;将查找到的FEC所应用的LSP作为所述BGP路由的下一跳所迭代的LSP。至此,完成图6所示的PE描述。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1