概述:
随着MPLS技术的成熟,其应用越来越流行,尤其是在VPN方面。通过运营商提供的VPN服务,将分布在各地的站点通过运营商的网络连接起来,避免了租用专线,节省了大量的成本。近年来,由于MPLS VPN业务的迅猛发展,企业的站点数量也在不断增长,企业间经常发生并购与整合的现象,使得其不同分支站点可能属于不同的运营商。因此,对于大型电信运营商来说,目前需要解决的问题是如何部署一个易扩展、易维护的跨域MPLS L3 VPN。
跨域VPN有以下两种最普遍的形式。一种情况是对于一个大型电信运营商网络,一般会为一个省分配一个 AS,要
求跨省为客户提供MPLS VPN业务;或者是在一个省级网络范围内,也经常为每个地市的城域网分配一个保留的AS,要求跨地市提供 MPLS VPN业务。另一种情况是VPN客户网络穿越了多个不同的运营商网络,运营商之间相互合作(特别是国际业务方面与国外运营商之间的合作)。
普通的MPLS VPN体系结构都是在一个AS内运行的,任何VPN的路由信息都是只能在一个AS内按需扩散的,没有提供AS内的VPN信息向其他AS扩散的功能。如下图所示,为了支持运营商不同AS之间的 VPN路由信息交换,就需要扩展现有的协议和修改MPLS VPN体系框架,提供一个不同于基本的MPLS VPN体系结构所提供的互连模型跨域(Inter-AS)的 MPLS VPN,以便可以穿过运营商间的链路来发布路由前缀和标签信息。
实现方式:
目前,业务主流的跨域MPLS VPN 的互通方式有三种,这种解决方案由RFC4364定义,它们分别如下:
- 跨域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-hopMP-eBGP发布标签VPN-IPv4路由,也称为Multihop eBGP redistribution of labeledVPN-IPv4 routeso
在不同的情况下,这几种解决方案都有不同的优缺点,在实际的网络环境中,OptionB和 Option C也有不同的变种,这里只介绍它们的常规实现方案。
OptionA:
概述:
需要在PE和ASBR之间建立MP-INGP对等体关系,在各AS域中的ASBR上为每一个VPN创建一个VPN实例(实现不同VPN路由之间的隔离),并分别与一个物理接口或子接口进行绑定,然后使用普通的IGP或BGP路由方式(最好使用EBGP方式)向对端发布普通的单播IPv4路由,以实现ASBR间的三层互联。
路由发布原理:
我们只通过单方向来解释控制平面的工作过程,同时假设在站点Site1有一VPN路由Client1连接,如上图,现在需要把Client1这条路由从CE1穿过AS100和AS200传递到CE2:
- 在AS100中,通过运行LDP协议,PE1分配一个与去往PE1的路由相关联的隧道标签(外层标签)T1给P1。
- 在AS100中,通过运行LDP协议,P1分配一个与去往PE1的路由相关联的隧道标签(外层标签)T2给ASBR-PE1。
- 在AS200中,同样通过运行LDP协议,ASBR-PE2分配一个与去往ASBR-PE2的路由相关联的隧道标签(外层标签)T3给P2。
- 在AS200中,通过运行LDP协议,P2分配一个与去往ASBR-PE2的路由相关联的隧道标签(外层标签)T4给PE2。
- CE1 通告路由Client1给PE1,路由的下一跳为CE1的接口地址。
- PE1将IPv4路由Client1通过MP-BGP重发布为VPNv4路由,并且下一跳改为PE1,分配一个VPN标签V1,然后通告给ASBR-PE1。
- ASBR-PE1将VPNv4路由变为IPv4路由,把IPv4路由Client1通告给ASBR-PE2,并且下一跳指向ASBR-PE1。
- ASBR-PE2将IPv4路由Client1通过MP-BGP重发布为VPNv4路由,并且下一跳为ASBR-PE2,为该路由分配一个VPN标签V2,将其通告给PE2。
- PE2将VPNv4路由转变为IPv4路由Client1,把路由Client1通告给CE2,并且下一跳指向PE2。
报文转发原理:
通过前文的过程分析,我们从反向来分析转发平面的工作过程,即CE2要发送一个目的地为Client1的IP报文给CE1,如上图所示:
- CE2发送一个目的地为Client1的IP报文给PE2。
- PE2收到IP报文后进行MPLS标签的封装,先封装VPN标签V2,再封装外层标签T4,然后将此报文发送给P2。
- P2进行标签交换,把外层标签T4换成T3,然后将此报文发送给ASBR-PE2。
- ASBR-PE2去掉所有标签,将报文(普通IP报文)转发给ASBR-PE1。
- ASBR-PE1收到IP报文后进行MPLS标签的封装,先封装VPN标签V1,再封装外层标签T2,然后将此报文发送给P1。
- P1进行标签交换,把外层标签T2换成T1,然后将此报文发送给PE1。
- PE1收到后去掉所有标签,将报文(普通IP报文)转发给CE1。
跨域VPN-OptionA的特点:
优点:配置简单,由于ASBR之间不需要运行MPLS,也不需要为跨域进行特殊配置。
缺点:可扩展性差,由于ASBR需要管理所有VPN路由,为每个VPN创建VPN实例。这将导致ASBR上的VPN-IPv4路由数量过大。并且,由于ASBR间是普通的IP转发,要求为每个跨域的VPN使用不同的接口,从而提高了对PE设备的要求。如果跨越多个自治域,中间域必须支持VPN业务,不仅配置量大,而且对中间域影响大。在需要跨域的VPN数量比较少的情况,可以优先考虑使用。
OptionB:
ASBR间通过MP-EBGP发布标签VPN-IPv4路由,也称为EBGP redistribution of labeled VPN-IPv4 routes。
跨域VPN-OptionB方案中,ASBR接收本域内和域外传过来的所有跨域VPN-IPv4路由,再把VPN-IPv4路由发布出去。但MPLS VPN的基本实现中,PE上只保存与本地VPN实例的VPN Target相匹配的VPN路由。因此,可以在ASBR上配置不做RT过滤来传递路由,因此无需在ASBR创建VPN实例,无需绑定任何接口。
可以在网络中叠加部署RR设备,专门负责客户侧VPN路由的传递。
路由发布原理:
一、无RR的场景:
我们只通过单方向来解释控制平面的工作过程,同时假设在站点Site1有一VPN路由Client1连接:
- 在AS100中,通过运行LDP协议,PE1分配一个与去往PE1的路由相关联的隧道标签(外层标签)T1给P1。
- 在AS100中,通过运行LDP协议,P1分配一个与去往PE1的路由相关联的隧道标签(外层标签)T2给ASBR-PE1。
- 在AS200中,同样通过运行LDP协议,ASBR-PE2分配一个与去往ASBR-PE2的路由相关联的隧道标签(外层标签)T3给P2。
- 在AS200中,通过运行LDP协议,P2分配一个与去往ASBR-PE2的路由相关联的隧道标签(外层标签)T4给PE2。
- CE1 通告路由Client1给PE1,路由的下一跳为CE1的接口地址。
- PE1将IPv4路由Client1通过MP-IBGP重发布为VPNv4路由,并且下一跳改为PE1,分配一个VPN标签V1,然后通告给ASBR-PE1。
- ASBR-PE1通过MP-EBGP将Client1的VPNv4路由通告给ASBR-PE2,将下一跳改为ASBR-PE1,并重新分配一个VPN标签V2。
- ASBR-PE2将收到的Client1的VPNv4路由通过MP-IBGP通告给PE2,将下一跳指向自己,并重新分配一个VPN标签V3。
- PE2将Client1的VPNv4路由变为IPv4路由,把路由Client1通告给CE2,并且下一跳改为PE2。
二、带RR的场景:
当VPN实例数量较多时,可以部署专门的RR设备。如图,AS内的PE和ASBR设备只与RR设备建立MP-BGP邻居关系,由RR负责路由的反射传递,PE和ASBR之间无需建立BGP邻居。
RR只负责控制平面的VPNv4路由传递,数据转发时,流量不经过RR。
数据转发原理:
通过上文的过程分析,我们从反向来分析转发平面的工作过程:
- CE2发送一个目的地为Client1的IP报文给PE2。
- PE2收到IP报文后进行MPLS标签的封装,先封装VPN标签V3,再封装外层标签T4,然后将此报文发送给P2。
- P2进行标签交换,把外层标签T4换成T3,然后将此报文发送给ASBR-PE2。
- ASBR-PE2去掉外层标签,将VPN标签V3交换为V2,再将其转发给ASBR-PE1(此时报文仅带有一层私网标签)。
- ASBR-PE交换VPN标签V2成V1,再加一个外层标签T2,并将报文转发给P1。
- P1进行标签交换,把外层标签T2换成T1,然后将此报文发送给PE1。
- PE1收到后去掉所有标签,将报文(普通IP报文)转发给CE1。
optionB的特点:
优点:不同于OptionA,OptionB方案不受ASBR之间互连链路数目的限制。
缺点:VPN的路由信息是通过AS之间的ASBR来保存和扩散的,当VPN路由较多时,ASBR负担重,容易成为故障点。因此在MP-EBGP方案中,需要维护VPN路由信息的ASBR一般不再负责公网IP转发。
OptionC:方案1
PE或RR间通过Multi-hop MP-EBGP发布标签VPN-IPv4路由,也称为Multihop EBGP redistribution of labeled VPN-IPv4 routes。
跨域VPN-OptionC中,ASBR通过MP-IBGP向各自AS内的PE设备发布标签IPv4路由,并将到达本AS内PE的标签IPv4路由通告给它在对端AS的ASBR对等体,过渡自治系统中的ASBR也通告带标签的IPv4路由。这样,在入口PE和出口PE之间建立一条BGP LSP。
不同AS的PE之间建立Multihop方式的EBGP连接,交换VPNv4路由。ASBR上不保存VPN-IPv4路由,相互之间也不通告VPNv4路由。
当网络规模较大时,可以在方案中部署RR设备,专门负责用户侧路由的传递。即,PE与RR建立MP-IBGP邻居,RR1与RR2建立MP-EBGP邻居,路由传递为PE1-RR1-RR2-PE2,PE之间无需直接建立BGP邻居关系,当VPN数量较多时,引入RR的方式可以减轻PE的工作负担。
在此方案中,ASBR不再维护或是通告VPNv4路由(所以如上图,此处将ASBR-PE路由器改名为ASBR)。ASBR只需要维护所有去往PE的带标签路由,并通过EBGP通告给对端AS。在transit AS内的ASBR也同样需要使用EBGP通告这些带标签的IPv4路由。这样在不同AS的PE之间给会建立一条LSP,从而可以建立起PE之间的多跳MP-EBGP连接并进行VPNv4路由的通告。
如果每个AS的P路由器都能够知道去往其他AS的PE路由器的路由,那情况会比较简单。但是如果P不知道,那么当PE收到从CE收到VPN数据时,就要加上三层标签,底层标签是由对端PE分配的与VPN路由相关联的VPN标签,中间的标签是ASBR分配的与去往对端PE的路由相关联的标签,外层标签则是与去往下一跳ASBR的路由相关联的标签。
为了进一步扩展性能,多跳MP-EBGP会话可以建立在不同的AS的VPN RR之间。并且当这些VPN RR通告VPNv4路由时不改变下一跳信息。PE只与VPN RR建立MP-iBGP会话。
注意:为了方便,如上图,使用的是对称的LSP进行示意,但是实际上在控制平面和数据平面的工作过程上,两端AS的LSP结构是不对称的。下文将会详细讲解。
对于建立BGP隧道的理解:
由于P设备没有到达对端PE的路由条目,在收到了MP-BGP传递的条目时,并不知道该如何发给对端AS域的设备(下一跳是对端PE的地址),导致路由条目被丢弃,为了防止这个情况发生,需要建立一条从PE源设备到目的AS的ASBR的隧道,通过这条隧道帮助转发MP-BGP路由报文,隧道目的地址也就是本AS的ASBR。这样内部便有了一个新的目的地址代替原来的目的地址给P设备建立MPLS隧道(也就是BGP隧道下一跳,本端ASBR的地址),这样便能够保证报文能够正常到达。BGP隧道建立的过程,是由ASBR发送本端的MP-BGP对应IP地址的标签到对端ASBR,再到PE,完成隧道的建立。
报文发送过程:
一、无RR场景:
我们只通过单方向来解释控制平面的工作过程,同时假设在站点Site1有一VPN路由Client1连接,并且P1与P2路由器都没有去往另一个AS的PE的路由,以上图为例:
- 在AS100中,通过运行LDP协议,PE1分配一个与去往PE1的路由相关联的隧道标签(外层标签)T1给P1。
- 在AS100中,通过运行LDP协议,P1分配一个与去往PE1的路由相关联的隧道标签(外层标签)T2给ASBR-PE1。
- 在AS200中,同样通过运行LDP协议,ASBR-PE2分配一个与去往ASBR-PE2的路由相关联的隧道标签(外层标签)T3给P2。
- 在AS200中,通过运行LDP协议,P2分配一个与去往ASBR-PE2的路由相关联的隧道标签(外层标签)T4给PE2。
- ASBR1通过EBGP会话通告一条去往PE1的带标签的IPv4路由给ASBR2,其中下一跳为ASBR1,标签为BGP标签,值为B1。
- ASBR2通过BGP会话通告一条去往PE1的带标签的IPv4路由给PE2,其中下一跳为ASBR2,标签为BGP标签,值为B2。注意:这里假设PE2与ASBR1所在的AS已经为去往它们的路由分配了隧道标签(公网标签),并且去往PE2的带标签路由也已经被通告。
- PE1与PE2建立起MP-EBGP会话
- CE1 通告路由Client1给PE1,路由的下一跳为CE1的接口地址
- PE1将IPv4路由Client1通过MP-EBGP重发布为VPNv4路由,并且下一跳改为PE1,分配一个VPN标签V1,将其通告给PE2
- PE2将VPNv4路由变为IPv4路由,把IPv4路由Client1通告给CE2,并且下一跳改为PE2
二、带RR场景:
VPNv4邻居:本端PE只与本端RR建立VPNv4邻居,本端RR与对端RR建立VPNv4邻居,实现了跨域VPN路由的传递。
ASBR,P,PE同RR建立BGP单播IPv4邻居:
- ASBR通过ipv4邻居学习将从对端ASBR学到的RR的loopback,传递给本端RR,用于本端RR与对端RR建立vpnv4邻居。
- ASBR通过ipv4邻居学习将从对端ASBR学到的RR和PE的loopback,传递给本端RR,本端RR再将其反射给P,用于跨域bgp路由的递归查询。
- ASBR通过ipv4邻居学习将从对端ASBR学到的RR和PE的loopback,传递给本端RR,本端RR再将其反射给PE,用于跨域之间的PE建立BGP LSP。
带RR场景中,RR负责控制平面IPv4的路由反射、VPNv4路由的传递,转发平面的流量不经过RR。
流量转发过程:
通过上文的过程分析,我们从反向来分析转发平面的工作过程:
- CE2发送一个目的地为Client1的IP报文给PE2。
- PE2收到IP报文后进行MPLS标签的封装,先封装VPN标签V1,由于去往Client1的下一跳PE1不是直连邻居,通过查表发现去往PE1的BGP路由是带标签的路由,因此加上分配的BGP标签B2做为中间标签,最后,由于去往PE1的路由的下一跳ASBR2也不是直连邻居,通过查表发现去往ASBR2也有关联的标签T4,因此,封装上外层标签T4。
- P2进行标签交换,把外层标签T4换成T3,然后将此报文发送给ASBR-PE2。
- ASBR2去掉外层标签,将BGP标签B2交换为B1,再将其转发给ASBR1。
- 当ASBR1收到报文后,发现B1是它分配的,所以去掉B1进一步查表转发,发现此时去往PE1的路由有一个关联的标签T2,因此,ASBR1将其加在栈顶,并转发给P1。
- P1进行标签交换,把外层标签T2换成T1,然后将此报文发送给PE1。
- PE1收到后去掉所有标签,将报文(普通IP报文)转发给CE1。
OptionC:方案2
跨域VPN-OptionC方案二与方案一大体相似。不同之处在于,方案一中,需要使用三层标签,即VPN label,BGP LSP, Tunnel LSP来承载流量,而方案二只需要两层。
方案一,ASBR在收到对端ASBR发来的BGP标签路由后,需要配置策略产生一个新的标签并发布给AS内的PE或者RR设备,以建立一条完整的BGP LSP。方案二中,ASBR需要配置MPLS触发为BGP标签路由分发标签,因此在AS内的PE上可以看到去往对端PE的LDP LSP,而非BGP LSP。同理,方案二支持RR设备的部署。
在此方案中,ASBR不再维护或是通告VPNv4路由。ASBR只需要维护所有去往PE的带标签路由,并通过EBGP通告给对端ASBR。
对端ASBR收到带BGP标签路由后,MPLS LDP会触发为该BGP标签路由产生标签,并在AS内的LDP邻居间传递。因此,在PE上可以看到去往对端PE的LDP LSP。
为了进一步扩展性能,多跳MP-EBGP会话可以建立在不同的AS的VPN RR之间,本AS内的PE只需要与RR建立MP-IBGP即可。这些VPN RR通告VPNv4路由时不改变下一跳信息,进而当对端PE转发流量时,可以迭代至正确的隧道。
报文发送过程:
一、无RR场景:
我们只通过单方向来解释控制平面的工作过程,同时假设在站点Site1有一VPN路由Client1连接,并且P1与P2路由器都没有去往另一个AS的PE的路由,以上图为例:
- 在AS100中,通过运行LDP协议,PE1分配一个与去往PE1的路由相关联的隧道标签(外层标签)T1给P1。
- 在AS100中,通过运行LDP协议,P1分配一个与去往PE1的路由相关联的隧道标签(外层标签)T2给ASBR1。
- 在AS200中,同样通过运行LDP协议,ASBR2分配一个与去往ASBR2的路由相关联的隧道标签(外层标签)T3给P2。
- 在AS200中,通过运行LDP协议,P2分配一个与去往ASBR2的路由相关联的隧道标签(外层标签)T4给PE2。
- ASBR1通过EBGP会话通告一条去往PE1的带标签的IPv4路由给ASBR2,其中下一跳为ASBR1,标签为BGP标签,值为B1。
- ASBR2为这条BGP标签路由触发建立LSP,分发LDP标签T5至P2,P2进而分发T6至PE2。
- PE1与PE2建立起MP-EBGP会话。
- CE1 通告路由Client1给PE1,路由的下一跳为CE1的接口地址。
- PE1将IPv4路由Client1通过MP-EBGP重发布为VPNv4路由,并且下一跳改为PE1,分配一个VPN标签V1,将其通告给PE2。
- PE2将VPNv4路由变为IPv4路由,把IPv4路由Client1通告给CE2,并且下一跳改为PE2。
二、带RR场景:
VPNv4邻居:
本端PE只与本端RR建立VPNv4邻居,本端RR与对端RR建立VPNv4邻居,实现了跨域VPN路由的传递。带RR场景中,RR只负责控制平面VPNv4路由的传递,转发平面的流量不经过RR。
报文转发过程:
通过上文的过程分析,我们从反向来分析转发平面的工作过程:
- CE2发送一个目的地为Client1的IP报文给PE2。
- PE2收到IP报文后进行MPLS标签的封装,先封装VPN标签V1,由于去往Client1的下一跳PE1不是直连邻居,通过查表发现去往PE1的标签为T6,打上T6。
- P2进行标签交换,把外层标签T6换成T5,然后将此报文发送给ASBR2。
- ASBR2去掉外层标签,将T5交换为B1,再将其转发给ASBR1。
- 当ASBR1收到报文后,发现B1是它分配的,所以去掉B1进一步查表转发,发现此时去往PE1的路由有一个关联的标签T2,因此,ASBR1将其加在栈顶,并转发给P1。
- P1进行标签交换,把外层标签T2换成T1,然后将此报文发送给PE1。
- PE1收到后去掉所有标签,将报文(普通IP报文)转发给CE1。
为什么optionC方式2只有两层标签:
因为P设备在方式2中已经有对端AS的路由了,能够直接建立MPLS VPN隧道,这个隧道就相当于一个跨AS的长隧道,由两个短AS的短隧道+ASBR之间的BGP标签隧道组成。既然是一个长隧道,所以每一台设备之间都需要协议交互连接,而两个AS之间没有直接启用MPLS LDP协议分发标签,这显然是不行的,所以需要通过ASBR之间的BGP标签进行链接,所以在整个隧道的上游(按照流量走向划分),其隧道为了和下游联动,必须将LDP于BGP协议衔接,分配能够正常衔接的标签。
OptionC方式的特点:
优点:
- VPN路由在入口PE和出口PE之间直接交换,不需要中间设备的保存和转发。
- VPN的路由信息只出现在PE设备上,而P和ASBR只负责报文的转发,使得中间域的设备可以不支持MPLS VPN业务,只需支持MPLS转发,ASBR设备不再成为性能瓶颈。因此跨域VPN-OptionC更适合在跨越多个AS时使用。
- 更适合支持MPLS VPN的负载分担。
缺点:
维护一条端到端的PE连接管理代价较大。
三种解决方案的比较:
资料资料来源:华为HCIE培训文档、《HCIE路由交换学习指南》