1、背景
随着MPLS技术的成熟,其应用越来越广泛,尤其是在VPN方面。电信运营商提供给用户的MPLSVPN服务主要有MPLSLayer2 VPN和 MPLS Layer 3 VPN两类。MPLS Layer 2 VPN因标准化和复杂性问题,目前还没有被大规模采用;而MPLS Layer 3 VPN具有高度的灵活性和扩展性,正成为取代传统专线VPN的技术。
最初的MPLSLayerVPN技术主要应用在一个AS域内,为用户提供在本AS域内的、基于MPLS/IP技术的VPN通信。随着MPLS VPN在一个AS域内的广泛应用,跨域间的VPN通信需求逐渐增加。
跨域MPLSLayer3VPN的实现方法有许多种。对于大型电信运营商来说,目前需要解决的问题是如何部署一个易扩展、易维护的跨域MPLS Layer 3 VPN。
2、MPLSLayer3 VPN架构
典型的MPLSLayer3VPN架构如图1所示。其中,PE与CE之间可以运行Static、RIP、OSPF和BGP等协议来传送IP路由信息,而入口PE与出口PE之间则通过MP-iBGP(Multi-Protocol extension –internal BGP)来传送VPN-IP路由信息。
3、跨域MPLSLayer3 VPN实现方案及比较
跨域MPLSLayer3VPN主要解决的是VPN的跨域实现,也就是VPN IPv4路由信息的跨域传递。其主要的实现方案有ASBR(Autonomous System Boundary Router,自治区系统边界路由器)间背靠背VRF-VRF连接、ASBR间通过MP-eBGP分发VPN-IPv4路由信息和相应的标签以及RR间通过Multi-hop MP-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所示,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所完成的工作(给数据包加上两层标签),并将数据包通过MPLS LSP发送到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本身。
在该方案中,两个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邻居关系即可。
需要特别指出的是,由于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 对中国电信开展MPLSLayer3 VPN部署的建议
中国电信的CN2骨干网目前全面支持MPLSLayer3VPN的部署,在骨干网上直接进行MPLS VPN的部署相对来说比较容易,但其欲采用MPLS VPN支持的业务,如软交换业务、大客户数据业务等主要来自各城域网。因此,要实现全网对MPLS VPN的支持,首先要对各城域网进行改造,使其支持MPLS Layer 3 VPN。
改造后的城域网除了支持在本城域网内开展MPLSLayer3VPN业务外,还需要与CN2骨干网对接,实现跨地区、跨省的MPLS Layer 3 VPN业务。这就需要部署跨域MPLS VPN。
考虑到中国电信目前城域网数量众多,骨干网上与城域网对接的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,不利于以后的配置、维护和调试,所以不建议采用。
(2)如果城域网采用RouteReflector方式建设,则其与CN2的跨域VPN连接可直接采用方案三来实现,也就是RR间直接建立Multi-hopMP-eBGP连接。但是,正如前面分析时所说,如果直接采用方案三,则VPN两端的PE之间必须维持一条LSP,也就是参与通信的PE、P路由器都必须为源PE分配一个标签。这对于大型电信网络来说,无疑会增加维护的难度和安全方面的问题,因为不同域骨干路由器的IP地址信息最好相互隔离,除非是边界路由器。
我们不妨结合方案二和方案三各自的优点,采用图6所示的网络结构。
该方案具有以下特点:
l同一域内的PE路由器间不直接建立MP-iBGP邻居关系,而是各自与本域内的RR建立MP-iBGP邻居关系,适合于PE数量较多的城域网,能够保证将来的扩展性(以后每新增一台PE,只需对PE和本域内的RR进行重新配置即可)。
l不同域ASBR间建立MP-eBGP邻居关系(相邻域ASBR间传送加VPN标签的IP数据包)。
l边界路由器ASBR与本域内RR建立MP-iBGP邻居关系时,使用next-hop-self将VPN-IPv4路由信息的下一跳改为自己,再将其发送给RR,而后至本域内的其他PE。这样,同一域内的路由器只为本域内PE路由器的/32主机地址分配标签即可,方便维护且安全性大大提高。
lMPLSVPN通信两端PE间的LSP由几段起终点分别位于各自治域内的LSP组成。
l尽管同一域内所有PE都与RR建立MP-iBGP关系,但MPLSVPN数据不一定全部经过RR转发,因为RR在分发VPN-IPv4路由信息时并没有改变初始的下一跳地址。
图6中描述了在本目标网络架构下典型的数据传送过程。需要注意的是,尽管图中所有数据都通过RR,但实际中不一定是这样。只要有一条LSP能够从出口PE到达入口PE就可以。