您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > MPLS标签分配分析
BGP/MPLSL3VPN中的标签分配朱彦波(吉林省通信公司长春分公司长春130051)摘要:本文以华为Quidway8016及NE80E设备为例,对BGP/MPLSL3VPN的标签分配机制作了详细的剖析。关键词:mplsbgpvpn标签由RFC2547所描述的BGP/MPLSL3VPN技术在IP网络中得到了日益广泛的应用。目前,中国网通吉林省通信公司利用此种技术为包括税务、银行、民政等部门在内的多家集团客户组建了VPN网络,并取了良好的经济效益。同时,BGP/MPLSL3VPN技术在我公司建设的NGN网络中也具有举足轻重的作用,它是IP承载网络的基础协议之一。本文以华为公司的QuidwayS8016三层交换机及NE80E路由器为例,结合作者的实际工作经验,对BGP/MPLSL3VPN中的标签分配技术给出了详细的分析。因篇幅所限,文中对BGP、MPLS、LDP等协议的基本原理及其相关概念并未过多涉及。1、BGP/MPLSL3VPN中的标签分配技术图1BGP/MPLSL3VPN的基本网络拓扑具有MPLS协议交换能力的路由设备被称为LSR,所有的LSR构成MPLS网络。特殊的,对于MPLSVPN网络,其边缘接入设备LSR,我们称之为PE。同一台PE设备可以维护多个VPN网络,它一端与用户端网络设备CE直接相连,另一端则接入MPLS网络核心设备P,P只负责对MPLS数据进行转发操作。我们知道,实际应用中,MPLS网络在真正地进行用户数据传送之前,会根据某种标准对用户数据进行筛选,形成的具有相同转发处理方式的用户数据类型,我们称之为FEC,即转发等价类。一般根据IP地址前缀来划分FEC。MPLS网络中,相同的FEC用户数据所经过的传输路径是相同的。同一台LSR中,不同的FEC用户数据分组将会被打上不同的MPLS标签。在BGP/MPLSL3VPN中,标签的分配工作分为两个部分,即公网的标签分配与私网的标签分配,分别由LDP协议与MP-BGP协议来完成。公网标签用于在PE设备之间形成数据传输的隧道,而私网标签则用于PE对不同VPN用户数据的区分。用户数据由源CE传送给PE设备后,PE会采用两层标签结构对数据包进行MPLS协议封装,如由图2所示。图-2MPLS分组结构其中公网标签处于外层,私网标签处于内层。数据传输过程中,内层标签只由PE设备进行处理,P设备并不理会它的存在。下面,我们分别对这两个过程作进一步分析。1.1公网标签处理入口LSR以IP地址前缀为标准,对用户数据分组进行分类并赋予标签,然后在各LSR之间以LDP协议进行传递,最终形成所谓LSP,即标签交换路径。在一条LSP上,沿着数据的传送方向,相邻的LSR分别称为上游LSR与下游LSR。标签的分配方向与数据的传递方向相反,这一点我们维护人员一定要在理解的基础上牢记在心。标签的分发方式分为两种,DOD(Downstream-on-Demand)下游按需标签分发与DU(DownstreamUnsolicited)下游自主标签分发方式。DU方式指LSR分配标签时,无须从上游LSR获得申请,完全自主决定;而DOD方式中的LSR只有接到上游LSR对某条FEC的标签分配申请后,才进行标签的分配。标签分配完毕后,LSR需要将FEC与标签的映射关系向其它LSR进行通告。LDP协议中规定了两种方式来完成此项工作。分别为独立的LSP控制方式和有序的LSP控制方式。前者指LSR可以在任何时候向和它相连的上游LSR通告标签与FEC的映射关系,后者则不同,此种情况下,如果LSR自身不是此FEC的出口,则必须接收到下游LSR对此FEC的映射通告后才可以向上游LSR发送其标签分配结果。LSR对于收到的FEC标签映射,可以完全保留,这属于标签的自由保持方式;也可以只选择形成实际LSP的标签映射进行保留,即标签的保守保持方式。标签的分发方式、控制方式和保留方式,涵盖了LSR对标签处理的不同方面。各厂商对其实现可能会有所不同。华为的数据产品缺省采用DU+自由标签保持方式+有序的标签控制方式的组合,来完成对标签的处理工作。其标签分配工作遵循如下原则:1)如果LSR是某LSP的终点,它将会把特定的标签与此FEC捆绑并向上游LSR通告。这里的特定标签,统一规定为3,实际上告诉上游LSR,为了提高效率,将数据转发到本LSR时,只是执行标签的POP操作即可,即将数据分组外层标签剥离后直接发送,我们一般把这种操作称为倒数第二跳弹出。2)如果LSR不是某LSP的终点,那么它只有接收到下游LSR的FEC与标签绑定通告后,且自身的路由表中存在此FEC的精确路,才向其上游LSR通告其自身对此FEC的标签映射。3)LSR可能会接收到关于某FEC对应不同下一跳的多条标签映射,此LSR会比较自身的路由表,而启用与路由表中下一跳相吻合的FEC标签映射,而将其它数据作为备用信息保留,以便更加快速地适应网络路由的变化。BPG/MPLSL3VPN中,VPN用户数据实际上将PE之间的LSP作为数据传输隧道。LSP上沿途的P设备只对外层标签进行SWAP操作并进行快速转发。这样,我们只需在相关PE之间建立一条LSP即可满足要求,实际中,我们一般也这样处理。华为设备可以通过命令设置(或是缺省行为)来达到这一目的,即处理直连主机路由(一般为LSR的LOOPBACK端口地址)的标签分配工作。这里需要注意,其处理对象是直连主机路由,并不包括静态路由,即使它是32位掩码的主机路由。1.2私网标签的处理PE通过私网标签确定所收到的VPN用户数据的归属。它是通过MP-BGP协议来确定并分发的。MP-BGP是BGP协议的扩展,可以用来携带MPLSL3VPN的一些专有属性。在部属BGP/MPLSL3VPN网络时,只有PE设备需要启用MP-BGP协议。与传统BGP协议相同,PE设备过多,会引起网络的N2问题,这可以通过建立MP-BGP路由反射器来解决。目前,我省的MPLS域通过两台反射器为全省的PE设备提供路由服务。图3所示为私网标签的传递过程。与公网标签的分配相类似,PE-A为某个VPN的某条路由分配好标签后,将会通过MP-BGP向其它PE通告。这样,当对端PE要以此路由为目标地址发送数据时,将会利用路由PE-A所分配的私网标签对数据进行MPLS封装,之后通过公网MPLS隧道,即通过LDP所建立的LSP透传到PE-A。PE-A通过读取数据分组中的私网标签,就可以对数据进一步的转发处理。图-3私网标签的分发2、MPLSL3VPN标签分配实例对于MPLS标签的分配与传递过程,我们可以通过相关的命令来查看。这是MPLSVPN的维护人员应该掌握的。下面基于图4给出的拓扑,笔者将给出查看标签分配的相关命令及其输出,结合前文的理论分析与介绍,可以使我们对BGP/MPLSL3VPN的理解进一步加深。图-4MPLS网络环境图4中,8016-A与8016-B为PE设备,它们之间通过MBGP-RR,即MBGP的路由反射器来交换VPN路由信息,NE80E为P设备,CE-A与能CE-B为L3MPLSVPN实例vpn-test的成员。首先,我们查看一下私网标签的分配情况。在8016-A上我们执行“displayiprouting-tablevpn-instancevpn-test6.6.6.0verbose”,将得到如下如果1:Routingtables:Summarycount:1RoutingTable:vpn-testRoute-Distinguisher:10000:2**Destination:6.6.6.0Mask:255.255.255.0entry_num1Protocol:#BGPPreference:256flag:remoteAnnounce:1Source:4.4.4.4*NextHop:2.2.2.2Interface:1.1.1.1(LoopBack0)Label:85646/0相应的,我们在8016-B上执行“displaybgpvpnv4vpn-instancevpn-testrouting-table6.6.6.0”,我们得到RouteDistinguisher:10000:2,Localvpn-instance:vpn-testBGProutingtableentryinformationof6.6.6.0/24Nexthop:0.0.0.0Paths:?,valid,sourced,bestFrom:localExtendCommunity:10000:2label:85646对比两条命令的输出,我们看到8016-B给VPN路由6.6.6.0/24分配了私网标签85646,并通过MP-BGP通告给8016-A,8016-A收到此条信息后,将它加入到了自己的VPN实例vpn-test的路由表中。接下来,我们继续在8016-B上执行“displaymplslspvpn-instancevpn-test”得到:Destination/MaskNextHopIn/OutOutRDFlagLabelInterfaceIndex6.6.6.0/242.2.2.2--/1087|85646GE4/0/11A这表示,8016-B将对去往6.6.6.0/24的数据分组打上两层标签,内层标签为85646,这正是通过MP-BGP所获得的信息;而外层标签为1087,前文我们说过,这是LDP协议分配的。其实,如果我们通过“displaymplslsp2.2.2.232”命令查看8016-B与8016-A之间的LSP,1为清楚起见,对文中命令的输出结果,笔者作了一定的修改。Destination/MaskNextHopIn/OutOutRDFlagLabelInterfaceIndex2.2.2.2/323.3.3.3--/1087GE4/0/1--A我们发现,此LSP在8016-B上的标签,正是1087。这是符合前文论述的。实际上,PE所进行的外层标签的封装工作,就是将VPN数据输送到PE间LSP隧道的一个过程。在NE80E中,我们输入“displaymplslspin-label1087verbose”,我们会得到如下结果:Fec:2.2.2.2/32Nexthop:2.2.2.2In-Label:1087Out-Label:3In-Interface:----------Out-Interface:GigabitEthernet3/0/0LsrType:TransitLabelOperation:SWAP我们看到,P设备针对1087标签的操作是SWAP,即标签交换,它将数据分组外层标签1087更换为3,我们知道,此操作实际上就是将MPLS数据分组外层标签去掉后,直接向下一跳8016-A转发。数据分组到达8016-A后只带有内层标签85646。我们在8016-A上执行“displaymplsforwardingilm85646”来查看它对85646标签的处理方法,得到如下结果。DisplayinformationaboutILMforwardingtable.NHLFEInInOutOutIndexInterfaceLabelLabelOperInterfaceNextHop2573Invalid85646InvalidpopVlanif30216.6.6.6正如我们所料,数据被转发到vpn-test所在的端口Vlanif3021。至此,由8016-B至8016-A的VPN数据传送工作完成。3、小结本文以华为公司的两款数据产品为例,对BGP/MPLSL3VPN的标签分配过程作了较详细的剖析,对数据维护人员了解MPLS原理及处理MPLS障碍,有一定的借鉴作用。另外,我省也开通了基于MPLS的二层VPN服务,其标签的分配策略与BGP/MPLSL3VPN有相似之处,一般是由LDP独立完成(如8016的VPLS,它基本上属于Martini二层VPN)或是由LDP与其它协议合作完成(如基于Kompella模型的二层VPN)。这里,我们就不过多涉及了。作者简介:朱彦波,毕
本文标题:MPLS标签分配分析
链接地址:https://www.777doc.com/doc-5480825 .html