作者:中国电信北京研究院王爱俊1背景随着MPLS技术的成熟,其应用越来越广泛,尤其是在VPN方面。电信运营商提供给用户的MPLSVPN服务主要有MPLSLayer2VPN和MPLSLayer3VPN两类。MPLSLayer2VPN因标准化和复杂性问题,目前还没有被大规模采用;而MPLSLayer3VPN具有高度的灵活性和扩展性,正成为取代传统专线VPN的技术。最初的MPLSLayerVPN技术主要应用在一个AS域内,为用户提供在本AS域内的、基于MPLS/IP技术的VPN通信。随着MPLSVPN在一个AS域内的广泛应用,跨域间的VPN通信需求逐渐增加。跨域MPLSLayer3VPN的实现方法有许多种。对于大型电信运营商来说,目前需要解决的问题是如何部署一个易扩展、易维护的跨域MPLSLayer3VPN。2MPLSLayer3VPN架构典型的MPLSLayer3VPN架构如图1所示。其中,PE与CE之间可以运行Static、RIP、OSPF和BGP等协议来传送IP路由信息,而入口PE与出口PE之间则通过MP-iBGP(Multi-Protocolextension–internalBGP)来传送VPN-IP路由信息。图1MPLS-Layer-3-VPN典型的架构3跨域MPLSLayer3VPN实现方案及比较跨域MPLSLayer3VPN主要解决的是VPN的跨域实现,也就是VPNIPv4路由信息的跨域传递。其主要的实现方案有ASBR(AutonomousSystemBoundaryRouter,自治区系统边界路由器)间背靠背VRF-VRF连接、ASBR间通过MP-eBGP分发VPN-IPv4路由信息和相应的标签以及RR间通过Multi-hopMP-eBGP分发VPN-IPv4路由信息和相应的标签三类。下面分别介绍这三种方案的实现原理。3.1方案的实现原理3.1.1方案一:ASBR间背靠背VRF-VRF连接方案一实现起来最简单。它通过两个AS的ASBR间建立VRF-VRF连接来实现MPLS的跨域互通。具体做法就是每个ASBR通过直连链路或者子接口建立到对方ASBR的VRF连接,也就是以本ASBR作为PE、对端ASBR作为自己的CE来进行VPN域内路由的跨域分发。下面结合图2来说明方案一的具体实现。图2方案一实现原理示意如图2所示,VPN-A内的IP路由信息由CE1-A通过RIP、OSPF或者BGP分发给PE11,PE11将其保存在对应的VRF(VPN路由转发)表中,添加RD(RouteDistinguisher,路由区分符),将其变为VPN-IP路由,并且为该路由分配MPLSVPN中的内层标签V1,之后通过MP-iBGP将该路由信息和对应的标签信息发送给同一域内的对等点,也就是图2中的ASBR1。此时,ASBR1作为CE,将收到的VPN-IP路由信息中的IP路由提取出来,同时保留收到的内层标签。提取出来的IP路由(注意:非VPN-IP路由)由ASBR1(CE)通过相应的路由协议(RIP、OSPF和BGP等)发送给ASBR2(PE),由ASBR2进行类似PE11的操作,然后将其发送给PE22,而后由PE22发送给位于VPN-A的CE2-A。当CE2-A有数据要发送给CE1-A时,首先发送数据给PE22,由PE22为该数据包加上两层标签(外层MPLS标签和由ASBR2分发的内层VPN标签V2),之后经过MPLSLSP到达ASBR2(到达时该数据包只有内层标签)。ASBR2根据内层标签在VRF表中查找相应的链路和子接口,去除内层标签,将纯IP数据包发送给ASBR1。ASBR1根据接收数据包的链路选择相应的VRF表,之后进行类似PE22所完成的工作(给数据包加上两层标签),并将数据包通过MPLSLSP发送到PE1(到达PE1时只剩内层标签),由PE1根据VRF表发送给CE1-A。上述VRF背对背连接的一个特点是ASBR和ASBR之间的连接不需要支持MPLS,但因为每一个VPN都需要一个独立的接入链路,所以该方案只适合在小区域内小规模部署。3.1.2方案二:ASBR间通过MP-eBGP分发VPN-IPv4路由信息和相应的标签在方案二中,ASBR间仍然是物理直连,但VPN-IP路由信息是通过它们之间的MP-eBGP关系进行传送。在了解该方案之前,我们首先需要明白MPLSVPN中VPN标签分发的一个原则:VPN标签分发时,与其同时发送的下一跳地址必须是VPN标签分发者本身,否则就需要重新分发VPN标签。如图3所示,当PE11为VPN-A中的路由分发VPN标签V1时,这些路由的下一跳必须是PE11本身。图3方案二实现原理示意在该方案中,两个ASBR之间是e-BGP连接。这样,当ASBR1向ASBR2发送VPN-IP路由信息时,VPN-A中路由的下一跳就会由原来的PE11变为ASBR1。因为下一跳发生变化,所以ASBR1必须重新为VPN-A中的路由信息分配VPN标签V2,ASBR2在收到这些VPN-IP路由信息后,再向其MP-iBGP邻居PE22进行分发。如果不对ASBR2做任何特别的配置,那么在其向PE22分发VPN-A路由信息时,这些路由信息的下一跳仍然为ASBR1,这就要求AS2域中的其他路由器也应该知道ASBR1的IP地址,并为这个地址分配相应的外层标签。ASBR1与ASBR2建立MP-eBGP邻居,可以使用它们之间的直连链路地址,也可以使用各自的loopback地址。如果使用后者,ASBR1和ASBR2之间的关系就是Multi-hopMP-eBGP,不过处理方法与直连的MP-eBGP类似,主要是把用来建立邻居关系的IP地址用对应的方法分发给对等域中的路由器即可。把本域中路由器地址分发给其他域可能有一定的安全风险。由此延伸而来的另一种解决办法是,在配置ASBR2与PE22的MP-iBGP邻居关系时,通过在ASBR2上配置next-hop-self来人为地将ASBR1发送来的VPN-IP路由下一跳改为自己,这样就避免了ASBR1的IP地址在AS2中扩散,从而增加一定的安全性。但因为涉及下一跳地址的改变,所以在VPN-IP路由信息分发到ASBR2后,ASBR2需重新为其分配VPN标签V3。以上所述主要是VPN-IP路由信息从AS1到AS2传送过程中的一些配置和处理,在VPN-IP路由信息从AS2到AS1的传递过程中,对应的ASBR需进行同样的配置和处理。当ASBR1与ASBR2通过MP-eBGP建立邻居关系,并且各自与自己的PE通过next-hop-self建立iBGP邻居关系时(这样就涉及VPN标签的重新分配),典型的数据传送过程如图3所示。在此需要特别指出的是,由于在ASBR1与ASBR2上均进行了next-hop-self配置,VPN-A路由的下一跳地址在传送过程中要改变两次,因此出现了三个VPN标签(一个VPN路由下一跳生成一个标签)。另外要注意此时ASBR1与ASBR2传送的是带VPN标签的IP数据包,所以要求它们之间的链路支持MPLS。对于本方案中的其他解决办法,也可画出类似的数据传送过程,惟一不同的就是如果ASBR2不改变ASBR1发来的路由信息的下一跳,ASBR2就没必要重新分配VPN标签V3,当数据包到达ASBR2时应该包含两层标签,而后由ASBR2剥去外层的MPLS标签,将带VPN标签的数据包发送给ASBR1,由ASBR1完成后续的加标签和发送工作。3.1.3方案三:RR间通过Multi-hopMP-eBGP分发VPN-IPv4路由信息和相应的标签对于大型电信运营商,因其网络中一般有很多PE,如果要求它们之间都相互建立iBGP连接关系,也就是fullmeshiBGP,那么其维护或将来的扩展将会很困难。解决这个问题的办法就是在自治域内部署RR,在RR间直接建立Mult-hopMP-eBGP邻居关系。如图4所示,PE11为VPN-A中的路由分配VPN标签V1,并将下一跳设置为自己,而后将这些信息发送给RR1。RR1在收到PE11发来的VPN-IP路由信息时,通过eBGP连接直接将其发送给RR2,而后由RR2发送给对应的PE22(在此处,可以对RR1与RR2进行相应的配置,如next-hop-unchanged,这样RR2在收到上述信息后,下一跳地址仍保持为PE11,对应的VPN标签仍是原来PE11分发的那个标签。当然也可以不做这样的设置,这样的话RR2需要为这些路由重新分配标签)。位于各自治域的PE只需跟本域的RR建立iBGP邻居关系即可。图4方案三实现原理示意需要特别指出的是,由于RR1与RR2采用next-hop-unchanged来建立Multi-hopMP-eBGP邻居关系,VPN-A中路由信息的下一跳在传送过程中一直未发生变化,因此整个过程仅有一个VPN标签被使用。另外,ASBR1与ASBR2间传送的是加上两层标签(外层MPLS标签和VPN标签)的IP数据包,自然要求它们之间的链路支持MPLS。而且,分别位于两个AS中的PE11和PE22之间需要有一条LSP存在,也就是说PE22需要为PE11分配外层MPLS标签(如图4中的L4),这可能给大规模部署后的维护带来一些困难。3.2方案比较上述三个方案的优缺点比较见表1。4对中国电信开展MPLSLayer3VPN部署的建议中国电信的CN2骨干网目前全面支持MPLSLayer3VPN的部署,在骨干网上直接进行MPLSVPN的部署相对来说比较容易,但其欲采用MPLSVPN支持的业务,如软交换业务、大客户数据业务等主要来自各城域网。因此,要实现全网对MPLSVPN的支持,首先要对各城域网进行改造,使其支持MPLSLayer3VPN。改造后的城域网除了支持在本城域网内开展MPLSLayer3VPN业务外,还需要与CN2骨干网对接,实现跨地区、跨省的MPLSLayer3VPN业务。这就需要部署跨域MPLSVPN。考虑到中国电信目前城域网数量众多,骨干网上与城域网对接的PE路由器数量约是城域网数量的两倍,因此骨干网内PE之间的iBGP连接只能采用RouteReflector或者BGPConfederation方式。从规划和管理方面考虑,采用RouteReflector建立骨干网内各PE间的iBGP连接更加合适。如果城域网内的PE数量较少,则它们之间可以直接建立iBGP邻居关系;如果城域网内的PE数量较多或者考虑到将来扩展的需要,建议采用RouteReflector方式建设。对于城域网之间的跨域连接,也应根据城域网内PE的数量分别设计。(1)如果城域网没有采用RouteReflector方式建设,则其与CN2的跨域VPN连接可综合方案二、三,采用骨干网的RR与城域网的PE(ASBR)建立Multi-hopMP-eBGP邻居关系来实现VPN的跨域连通,如图5所示。但是,这种方案中城域网PE同时兼任ASBR与RR,不利于以后的配置、维护和调试,所以不建议采用。图5中国电信MPLS跨域VPN连接方案(2)如果城域网采用RouteReflector方式建设,则其与CN2的跨域VPN连接可直接采用方案三来实现,也就是RR间直接建立Multi-hopMP-eBGP连接。但是,正如前面分析时所说,如果直接采用方案三,则VPN两端的PE之间必须维持一条LSP,也就是参与通信的PE、P路由器都必须为源PE分配一个标签。这对于大型电信网络来说,无疑会增加维护的难度和安全方面的问题,因为不同域骨干路由器的IP地址信息最好相互隔离,除非是边界路由器。我们不妨结合方案二和方案三各自的优点,采用图6所示的网络结构。图6中国电信跨域MPLS-Layer3VPN目标网络结构及实现流程示意该方案具有以下特点:l同一域内的PE路由器间不直接建立MP-iBGP邻居关系,而是各自与本域内的RR建立MP-iBGP邻居关系,适合于PE数量较多的城域网,能够保证将来的扩展性(以后每新增一台PE,只需对PE和本域内的RR进行重新配置即可)。l不同域ASBR间建立MP-eBGP邻居关系(相邻域ASBR间传送加VPN标签的