08 MPLS L3VPN跨域

1.域内MPLS VPN工作原理
1.1 路由传递及标签分配
CE1与PE1之间运行IGP/BGP交互路由信息(IPv4路由)。
PE1收到CE1的路由后,将其转化为VPNv4路由,并通过MP-IBGP发送给PE2,同时分配VPN标签V1。
PE2收到VPNv4路由后,将其转化为IPv4路由,并通过IGP/BGP发送给CE2。
MPLS骨干网内部PE及P设备之间运行LDP协议,用于分配隧道标签。假设PE1、P为PE1分配的标签分别为T1、T2。



1.2 数据转发
CE2发送一个目的地址为Net1的IPv4报文。
PE2收到报文后进行MPLS标签的封装,先封装VPN标签V1,再封装外层标签T2,然后将此报文发送给P。
P进行标签交换,把外层标签T2换成T1,然后将此报文发送给PE1。
PE1收到后去掉所有标签,将IPv4报文转发给CE1。




2.MPLS VPN跨域产生的问题
相比于域内MPLS VPN,跨域场景下VPN的工作原理不变,但是因为跨越了不同的AS,产生了以下问题:
AS之间不会运行LDP协议,因此AS之间无法建立外层隧道。
PE之间没有运行IGP协议,缺省情况下无法建立BGP邻居关系,进而无法直接传递VPNv4路由。
针对以上问题可以有以下几种解决思路:
OPTION A:ASBR之间交换IPv4路由,采用IPv4数据包转发数据。该方式易于理解。
OPTION B:ASBR之间交换VPNv4路由,采用携带一层MPLS标签的方式转发数据包。
OPTION C:PE之间交换VPNv4路由,采用携带多层MPLS标签的方式转发数据包。



跨域VPN-OptionA(Inter-Provider Backbones Option A)方式:
需要跨域的VPN在ASBR间通过专用的接口管理自己的VPN路由,也称为VRF-to-VRF;
配置简单,ASBR之间不需要运行MPLS。
跨域VPN-OptionB(Inter-Provider Backbones Option B)方式:
ASBR间通过MP-EBGP发布标签VPNv4路由,也称为EBGP redistribution of labeled VPNv4 routes;
不需要针对每个VPN创建不同接口。
跨域VPN-OptionC(Inter-Provider Backbones Option C)方式:
PE或RR间通过Multi-hop MP-EBGP发布标签VPNv4路由,也称为Multihop EBGP redistribution of labeled VPNv4 routes;
ASBR不维护或发布VPNv4路由,配置较为复杂

3.OptionA概述
跨域VPN-OptionA是基本BGP/MPLS IP VPN在跨域环境下的应用,ASBR之间不需要运行MPLS,也不需要为跨域进行特殊配置。这种方式下,两个AS的边界路由器ASBR直接相连,ASBR同时也是各自所在自治系统的PE。两个ASBR都把对端ASBR看作自己的CE设备,通过EBGP对等体关系向对端发布IPv4路由。
两台ASBR-PE之间用多个物理接口(或子接口)互连,每个接口关联一个VPN,每个ASBR-PE都把对端当成CE。因此,ASBR-PE相连的接口需要绑定VRF,并通过EBGP邻居关系把VPNv4路由转变成普通IPv4路由从一个AS传递到另一个AS。因此,两个ASBR相连,但不需要启用MPLS
3.1.控制平面
CE1通告IPv4路由给PE1,路由的下一跳为CE1。
PE1将IPv4路由转化为VPNv4路由发送给ASBR-PE1,并且设置下一跳为PE1,分配VPN标签V1。
PE1、P1分别为去往PE1的路由分配隧道标签T1、T2。
ASBR-PE1将VPNv4路由转化为IPv4路由发送给ASBR-PE2,并且设置下一跳为ASBR-PE1。
ASBR-PE2将IPv4路由转化为VPNv4路由发送给PE2,并且设置下一跳为ASBR-PE2,分配VPN标签V2。
ASBR-PE2、P2分别为去往ASBR-PE2的路由分配隧道标签T3、T4。
PE2将VPNv4路由转变为IPv4路由,通告给CE2,并且设置下一跳为PE2。




3.2.OptionA转发平面
CE2发送一个目的地为Net1的IP报文给PE2。
PE2收到IP报文后,先封装VPN标签V2,再封装外层标签T4,然后将此报文发送给P2。
P2把外层标签T4换成T3,然后将此报文发送给ASBR-PE2。
ASBR-PE2去掉所有标签,将IP报文转发给ASBR-PE1。
ASBR-PE1收到IP报文后先封装VPN标签V1,再封装外层标签T2,然后将此报文发送给P1。
P1进行标签交换,把外层标签T2换成T1,然后将此报文发送给PE1。
PE1收到后去掉所有标签,将IP报文转发给CE1。




4.OptionB概述
相比于OptionA,OptionB无需在ASBR-PE创建VPN实例,无需绑定任何接口。
在OptionB方式中,两个ASBR通过MP-EBGP交换它们从各自AS的PE设备接收的VPNv4路由。
缺省情况下,PE上只保存与本地VPN实例的VPN Target相匹配的VPN路由。因此,可以在ASBR上配置不做RT过滤来传递路由。
网络规模较大时,可部署RR设备,专门负责客户侧VPN路由的传递。



4.1.OptionB控制平面:无RR场景
CE1通告IPv4路由给PE1。
PE1将IPv4路由转化为VPNv4路由发送给ASBR-PE1,并且设置下一跳为PE1,分配VPN标签V1。
ASBR-PE1通过MP-EBGP将Net1的VPNv4路由通告给ASBR-PE2,将下一跳改为ASBR-PE1,并重新分配一个VPN标签V2。
ASBR-PE2将Net1的VPNv4路由通过MP-IBGP通告给PE2,将下一跳指向自己,并重新分配一个VPN标签V3。
PE1、P1分别为去往PE1的路由分配隧道标签T1、T2。
ASBR-PE2、P2分别为去往ASBR-PE2的路由分配隧道标签T3、T4。
PE2将VPNv4路由转变为IPv4路由,通告给CE2,并且设置下一跳为PE2。



4.2.OptionB控制平面:带RR场景
当VPN实例数量较多时,可以部署专门的RR设备。如图,AS内的PE和ASBR设备只与RR设备建立MP-BGP邻居关系,由RR负责路由的反射传递,PE和ASBR之间无需建立BGP邻居。
RR只负责控制平面的VPNv4路由传递,数据转发时,流量不经过RR。



4.3.跨域VPN-OptionB方式:转发平面
CE2发送一个目的地为Net1的IP报文给PE2。
PE2收到IP报文后,先封装VPN标签V3,再封装外层标签T4,然后将此报文发送给P2。
P2把外层标签T4换成T3,然后将此报文发送给ASBR-PE2。
ASBR-PE2去掉外层标签,将VPN标签V3交换为V2,再将其转发给ASBR-PE1(此时报文仅带有一层私网标签)。
ASBR-PE1交换VPN标签V2成V1,再加一个外层标签T2,并将报文转发给P1。
P1进行标签交换,把外层标签T2换成T1,然后将此报文发送给PE1。
PE1收到后去掉所有标签,将报文(普通IP报文)转发给CE1。




5.OptionC概述
5.1.相比于OptionA和OptionB,OptionC方案中,ASBR上不保存VPNv4路由,相互之间也不通告VPNv4路由。
OptionC方案中不同AS的PE之间建立Multihop方式的EBGP连接,交换VPNv4路由。针对不同方式实现PE之间路由互通,OptionC又可以分为两种方式:
方式一:由ASBR将去往其它AS中的PE路由通过BGP发送给本地PE设备。
方式二:由ASBR将去往其它AS中的PE路由引入IGP。
由于ASBR无VPNv4的路由,因此为了避免转发数据包时出现路由黑洞,PE设备必须将数据包引入隧道,使非PE设备不感知VPN的封装信息,因此OptionC的两种方式都需要ASBR之间发布带标签的路由,以构建AS之间的外层转发隧道。



5.2.OptionC方式一控制平面:无RR场景
CE1通告IPv4路由给PE1。
PE1将IPv4路由转化为VPNv4路由发送给PE2,并且设置下一跳为PE1,分配VPN标签V1。
ASBR1通过EBGP会话通告一条去往PE1的带标签的IPv4路由给ASBR2,其中下一跳为ASBR1,标签为BGP标签,值为B1。
ASBR2通过BGP会话通告一条去往PE1的带标签的IPv4路由给PE2,其中下一跳为ASBR2,标签为BGP标签,值为B2。
PE1、P1分别为去往PE1的路由分配隧道标签T1、T2。
ASBR2、P2分别为去往ASBR2的路由分配隧道标签T3、T4。
PE2将VPNv4路由转变为IPv4路由,通告给CE2,并且设置下一跳为PE2。



5.3.OptionC方式一控制平面:带RR场景
本端PE只与本端RR建立VPNv4邻居,本端RR与对端RR建立VPNv4邻居,实现了跨域VPN路由的传递。
ASBR,PE同RR建立BGP单播IPv4邻居:
ASBR将从对端ASBR学到的RR的loopback接口的路由,传递给本端RR,用于本端RR与对端RR建立VPNv4邻居。
ASBR将从对端ASBR学到的RR和PE的loopback接口的路由,传递给本端RR,本端RR再将其反射给本端PE,用于跨域之间的PE建立BGP LSP。



5.4.OptionC方式一转发平面
CE2发送一个目的地为Net1的IP报文给PE2。
PE2收到IP报文后先封装VPN标签V1,然后添加ASBR2分配的BGP标签B2做为中间标签,最后封装上外层标签T4。
P2把外层标签T4换成T3,然后将此报文发送给ASBR2。
ASBR2去掉外层标签,将BGP标签B2交换为B1,再将其转发给ASBR1。
当ASBR1收到报文后,去掉B1进一步查表转发,发现此时去往PE1的路由有一个关联的标签T2,因此,ASBR1将其加在栈顶,并转发给P1。
P1进行标签交换,把外层标签T2换成T1,然后将此报文发送给PE1。
PE1收到后去掉所有标签,将报文转发给CE1。



5.5.OptionC方式二控制平面:无RR场景
CE1通告IPv4路由给PE1。
PE1将IPv4路由转化为VPNv4路由发送给PE2,并且设置下一跳为PE1,分配VPN标签V1。
PE1、P1分别为去往PE1的路由分配隧道标签T1、T2。
ASBR1通过EBGP会话通告一条去往PE1的带标签的IPv4路由给ASBR2,其中下一跳为ASBR1,标签为BGP标签,值为B1。
ASBR2、P2分别为去往PE1的路由分配隧道标签T3、T4。
PE2将VPNv4路由转变为IPv4路由,通告给CE2,并且设置下一跳为PE2。



5.6.OptionC方式二:转发平面
CE2发送一个目的地为Net1的IP报文给PE2。
PE2收到IP报文后先封装VPN标签V1,由于去往Net1的下一跳PE1不是直连邻居,通过查表发现去往PE1的标签为T4,打上T4。
P2把外层标签T4换成T3,然后将此报文发送给ASBR2。
ASBR2去掉外层标签,将T3交换为B1,再将其转发给ASBR1。
当ASBR1收到报文后,去掉B1进一步查表转发,发现此时去往PE1的路由有一个关联的标签T2,因此,ASBR1将其加在栈顶,并转发给P1。
P1进行标签交换,把外层标签T2换成T1,然后将此报文发送给PE1。
PE1收到后去掉所有标签,将报文转发给CE1。



6.总结