跨域MPLS-VPN分享

2021-12-29 17:56:23 阅读量:


\
 
前言

跨域MPLS-VPN作为目前数通方向的重中之重,熟知跨域MPLS-VPN的工作原理应该是每位工程师必修的课程,今天我们就重点了解一下跨域MPLS-VPN。 

简介

首先,我们要先了解一下什么是跨域VPN。
随着MPLS VPN解决方案的广泛应用,服务的终端用户的规格和范围也在增长,在一个企业内部的站点数目越来越大,某个地理位置与另外一个服务提供商相连的需求变得非常的普遍,例如国内运营商的不同城域网之间,或相互协作的运营商的骨干网之间都存在着跨越不同自治域的情况。
一般的MPLS VPN体系结构都是在一个自治系统AS(Autonomous System)内运行,任何VPN的路由信息都是只能在一个AS内按需扩散,没有提供AS内的VPN信息向其他AS扩散的功能。因此,为了支持运营商之间的VPN路由信息交换,就需要扩展现有的协议和修改MPLS VPN体系框架,提供一个不同于基本的MPLS VPN体系结构所提供的互连模型——跨域(Inter-AS)的MPLS VPN,以便可以穿过运营商间的链路来发布路由前缀和标签信息。

RFC4364中提出了三种跨域VPN解决方案,分别是:

跨域VPN-OptionA(Inter-Provider Backbones Option A)方式:需要跨域的VPN在ASBR(AS Boundary Router)间通过专用的接口管理自己的VPN路由,也称为VRF-to-VRF;
跨域VPN-OptionB(Inter-Provider Backbones Option B)方式:ASBR间通过MP-EBGP发布标签VPN-IPv4路由,也称为EBGP redistribution of labeled VPN-IPv4 routes;
跨域VPN-OptionC(Inter-Provider Backbones Option C)方式:PE间通过Multi-hop MP-EBGP发布标签VPN-IPv4路由,也称为Multihop EBGP redistribution of labeled VPN-IPv4 routes。 

详细解读

在跨域VPN中,我们熟知的有三种解决方案,分别是:OptionA、OptionB、OptionC。无论是哪种解决方案,其实我们需要解决重点的问题就两个:一是VPN的路由怎样从当前自己的AS传递到另一个AS中;二是访问时需要使用的标签应该如何获取。
我们简单的看一下各种解决办法的区别。
OptionA的解决方案比较容易理解,简单来说就是两个同域的MPLS-VPN拼接在一起。而精髓就是把ASBR当做PE设备,对端整个AS当做CE设备。
 
\ 
 
如图所示,一张标准的跨域VPN的物理拓扑图,而OptionA的解决方案就是把对端的AS当做自己的CE设备,ASBR当做PE设备,通过在ASBR上绑定实例,将VPNV4的路由变成IPV4的路由传递给对端,在ASBR之间传递的是IPV4的路由,所以无需运行MPLS,解决了我们提到的两个问题。
 
那为什么说OptionA是两个同域的MPLS-VPN拼接在一起呢?我们看一下OptionA的逻辑拓扑。
 
\ 
 
如图所示,我们可以将ASBR1当做PE设备,而包含ASBR2在内整个右边所有的设备当做一个大的逻辑路由器,将这个逻辑路由器当做一个普通的CE设备,这时其实就可以发现,这个逻辑拓扑其实就相当于我们同域的MPLS-VPN,包括配置几乎和同域的VPN配置相同,在PE1与ASBR1之间建立MP-IBGP的邻居关系,在ASBR1的下行接口绑定实例,AS234内运行MPLS与LDP协议。
 
AS234的配置完成后,以AS567为中心的逻辑拓扑如下:
 
\ 
 
 
如图所示,同理,也是将对方的整个AS当做自己的一个逻辑上的CE设备去处理,以同域的方式配置AS567,同样的配置MP-IBGP邻居,绑定实例,以及MPLS和LDP。
 
所以,跨域OptionA的解决方案很简单,唯一要注意的是,既然要把ASBR当做PE去使用,ASBR就要有处理VPN路由的能力,在ASBR之间绑定实例,传递IPV4的路由,那么ASBR上的RT值的配置就要注意,PE1出入方向的RT,要和ASBR1出入方向的RT相同,ASBR2出入方向的RT要和PE2的出入方向的RT相同。
 
最后总结一下OptionA的特点:
 
优点是配置简单:由于ASBR之间不需要运行MPLS,也不需要为跨域进行特殊配置。
 
缺点是可扩展性差:由于ASBR需要管理所有VPN路由,为每个VPN创建VPN实例。这将导致ASBR上的VPN-IPv4路由数量过大。并且,由于ASBR间是普通的IP转发,要求为每个跨域的VPN使用不同的接口,从而提高了对PE设备的要求。如果跨越多个自治域,中间域必须支持VPN业务,不仅配置量大,而且对中间域影响大。在需要跨域的VPN数量比较少的情况,可以优先考虑使用。
 
接下来,我们看一下OptionB的解决方案。
 
OptionB的解决方案对比OptionA的解决方案更加的取巧一些,在OptionA的基础上进行了更改,在OptionA中,ASBR之间使用的是实例,传递IPV4路由的方式,这种方式需要在ASBR上参与路由计算,而OptionB在ASBR之间建立MP-EBGP的邻居关系,使ASBR只作为一个传递者,从本端PE收到VPNV4路由后,直接通过与对端ASBR的MP-EBGP的邻居关系传递给对端,再通过对端ASBR与对端PE的MP-IBGP的邻居关系而进行接收。
 
那OptionB怎样简单的去处理呢?如同OptionA一样,也是简单的两个同域的逻辑拓扑,只不过将当做PE的ASBR设备没有连接任何的CE设备:
 
 \
\ 
 
如图所示,先将两个AS内的设备配置成同域的方式,ASBR当做PE使用,在PE与ASBR之间运行MP-IBGP,AS内运行MPLS与LDP。但ASBR上无需配置实例。然后将AS234整个AS当做一台PE设备,AS567当做另一台PE设备,在两个逻辑上的PE设备间建立MP-EBGP的邻居关系传递VPNV4的路由。
 
\ 
如图所示,蓝色的逻辑路由器PE10和红色逻辑路由器PE20,之间建立MP-EBGP的邻居关系。
 
其实最后我们虚拟的这个PE10和PE20所组成的拓扑,和基础的同域VPN的概念没有任何区域,两台设备之间建立VPN的邻居关系,只不过两个ASBR之间是EBGP而已。
 
而OptionB要注意的是,由于ASBR间传递的是VPNV4的路由,所以在ASBR之间需要运行MPLS传递私网标签,并且ASBR设备只作为传递者,无法直接处理带着RT值的VPNV4路由,所以当收到PE传来的路由时,需要在ASBR上配置忽略RT值检查的命令:在BGP的ipv4-family vpnv4进程下undo policy vpn-target,并且保证PE1出入方向的RT要和PE2出入方向的RT相同。
 
最后总结一下OptionB的特点:
 
优点是不同于OptionA,OptionB方案不受ASBR之间互连链路数目的限制。
 
缺点是局限性:VPN的路由信息是通过AS之间的ASBR来保存和扩散的,当VPN路由较多时,ASBR负担重,容易成为故障点。因此在MP-EBGP方案中,需要维护VPN路由信息的ASBR一般不再负责公网IP转发。
 
接下来,我们看一下OptionC的解决方案。
 
前面介绍的两种方式都能够满足跨域VPN的组网需求,但这两种方式也都需要ASBR参与VPN-IPv4路由的维护和发布。当每个AS都有大量的VPN路由需要交换时,ASBR就很可能阻碍网络进一步的扩展。
 
解决上述问题的方案是:ASBR不维护或发布VPN路由,PE之间直接交换VPN路由。ASBR通过MP-IBGP向各自AS内的PE设备发布标签IPv4路由,并将到达本AS内PE的标签IPv4路由通告给它在对端AS的ASBR对等体,过渡AS中的ASBR也通告带标签的IPv4路由。这样,在入口PE和出口PE之间建立一条LSP;不同AS的PE之间建立Multihop方式的EBGP连接,交换VPN-IPv4路由;ASBR上不保存VPN-IPv4路由,相互之间也不通告VPN-IPv4路由。
 
\ 
 
如图所示,OptionC的解决方案在邻居建立和路由传递上面都比较简单,直接在两个PE之间建立多跳的MP-EBGP的邻居关系,传递VPN的路由,这样中间的设备就不需要处理VPN路由。如果在有RR的场景下,也可以直接在RR上建立多跳的MP-EBGP的邻居关系,但如果在RR场景下,则需要在BGP的IPV4-family vpnv4进程下配置peer x.x.x.x next-hop-invariable,不改变VPNV4路由的下一跳,不然会影响访问时的LSP。
 
在OptionC方案中的路由传递问题很好的得到了解决,但是另一个标签产生传递的问题才是OptionC的重点。
 
由于邻居关系是在PE间直接建立,PE在收到发来的VPNV4路由的下一跳是对端的PE,收到的私网标签也是由对端PE发送,所以我们需要构建一条两台PE之间的LSP。由于两台PE处于不同的AS,所以ASBR中间的部分无法使用LDP来进行标签分配,所以需要在ASBR上通过策略的方式使用BGP协议来进行标签分配。并且在ASBR收到对端发来的标签后,也要向本端的PE进行标签分配。
 
\ 
 
如图所示,ASBR间需要通过策略来进行标签分配,在收到对端ASBR发来的标签后,再向本端的PE分配标签。但在向本端PE分配标签时,有两种分配方式,一种是使用策略通过BGP分配标签,另一种是通过LDP使能lsp-trigger  bgp-label-route 的方式分配。同时这两种分配方式也对应着OptionC的两种解决方案:OptionC(方案一)与OptionC(方案二)。
 
这两种方案在传递VPN路由,ASBR间分配标签没有任何区别,唯一的区别在于各自AS内部的底层协议的使用,OptionC(方案一)中AS内部的底层协议使用的是BGP,那么在收到对端PE的路由时,则可以直接使用ASBR之间传递的BGP路由,那么在ASBR向本端的PE生成标签时就需要通过策略的方式使用BGP协议分配标签。而在OptionC(方案二)中,AS背部的底层协议使用的是OSPF/ISIS之类的IGP协议,在收到收到对端PE的路由时,则需要在ASBR上将对端ASBR传来的BGP的路由引入到IGP中,那么则需要在ASBR上通过LDP使能lsp-trigger  bgp-label-route 的方式分配标签,这样内部的PE通过LDP的方式收到标签,则可以直接使用LDP的LSP迭代到对端。
 
 
 
 \
 
跨域VPN-OptionC的特点
 
VPN路由在入口PE和出口PE之间直接交换,不需要中间设备的保存和转发。VPN的路由信息只出现在PE设备上,而P和ASBR只负责报文的转发,使得中间域的设备可以不支持MPLS VPN业务,只需支持MPLS转发,ASBR设备不再成为性能瓶颈。因此跨域VPN-OptionC更适合在跨越多个AS时使用。更适合支持MPLS VPN的负载分担。缺点是维护一条端到端的PE连接管理代价较大。
 
最后附一张访问的路径图给大家参考。
 
\ 
希望大家能够有所收获。