一般的MPLS VPN体系结构都是在一个自治系统内运行,任何VPN的路由信息都是只能在一个自治系统内按需扩散,没有提供自治系统内的VPN信息向其他自治系统扩散的功能。
如上图,基于MPLS的VPN可以将私有网络的不同Site连接起来,形成一个统一的网络,基于 MPLS的VPN还支持对不同VPN间的互通控制。CE(Customer Edge)是用户边缘设备;PE(Provider Edge)是服务商边缘路由器,位于骨干网络;P(Provider),是服务提供商网络中的骨干路由器,不与CE直接相连。
如果同一VPN的两个站点位于不同的AS,那么普通的MPLS BGP VPN是否还合适于业务的部署?
答案是否定的。因为此时连接VPN的PE路由器已经无法简单地建立IBGP邻居关系了,或是与RR建立邻居关系。因此,需要一些手段通过建立EBGP邻居关系来传递VPNv4路由。
为了支持不同AS之间的VPN路由信息交换,就需要扩展现有的协议和修改MPLS VPN体系框架,提供一个不同于基本的MPLS VPN体系结构所提供的互连模型——跨域(Inter-AS)的MPLS VPN,以便可以穿过AS间的链路来发布路由前缀和标签信息。
跨域VPN-OptionA是基本BGP/MPLS IP VPN在跨域环境下的应用,ASBR之间不需要运行MPLS,也不需要为跨域进行特殊配置。这种方式下,两个AS的边界路由器ASBR直接相连,ASBR同时也是各自所在自治系统的PE。两个ASBR都把对端 ASBR看作自己的CE设备,使用EBGP方式向对端发布IPv4路由。
跨域VPN-OptionA方式-拓扑
在本方案中,ASBR-PE之间直接相连。两台ASBR-PE之间用多个接口(包括子接口)互连,每个接口关联一个VPN,每个ASBR-PE都把对端当成CE。因此,ASBR-PE相连的接口(包括子接口)需要绑定VRF,并通过eBGP邻居关系把VPNv4路由转变成普通IPv4路由从一个AS传递到另一个AS。因此,两个ASBR相连,但不需要启用MPLS。此方案在MPLS BGP VPN业务属性上没有做扩展。
跨域VPN-OptionA方式-控制平面
我们只通过单方向来解释控制平面的工作过程,同时假设在站点Site1有一VPN路由Client1连接,如上图,现在需要把Client1这条路由从CE1穿过AS100和AS200传递到CE2∶
跨域VPN-OptionA方式-转发平面
通过前文的过程分析,我们从反向来分析转发平面的工作过程,即CE2要发送一个目的地为 Client1的IP报文给CE1,如上图所示∶
跨域VPN-OptionA方式的特点
跨域VPN-OptionB中,两个ASBR通过MP-EBGP交换它们从各自AS的PE设备接收的标签VPN-IPv4路由。
跨域VPN-OptionB方案中,ASBR接收本域内和域外传过来的所有跨域VPN-IPv4路由,再把VPN-IPv4路由发布出去。但MPLS VPN的基本实现中,PE上只保存与本地VPN实例的VPN Target相匹配的VPN路由。因此,可以在ASBR上配置不做 RT过滤来传递路由,因此无需在ASBR创建VPN实例,无需绑定任何接口。
可以在网络中叠加部署RR设备,专门负责客户侧VPN路由的传递。
跨域VPN-OptionB方式 - 拓扑
在此方案中,PE通过MP-iBGP将VPNv4路由通告给ASBR-PE或是VPN RR(其中ASBR-PE是其客户机)。ASBR-PE再通过MP-eBGP将VPNv4通告给另一个AS的ASBR-PE,再由这个ASBR-PE将 VPNv4路由通告给该AS内的PE。
跨域VPN-OptionB方式-控制平面(无RR场景)
我们只通过单方向来解释控制平面的工作过程,同时假设在站点Site1有一VPN路由Ciet1连接∶
跨域VPN-OptionB方式-控制平面(带RR场景)
当VPN实例数量较多时,可以部署专门的RR设备。如图,AS内的PE和ASBR设备只与RR设备建立 MP-BGP邻居关系,由RR负责路由的反射传递,PE和ASBR之间无需建立BGP邻居。
RR只负责控制平面的VPNv4路由传递,数据转发时,流量不经过RR。
跨域VPN-OptionB方式-控制平面(无RR)
跨域VPN-OptionB方式的特点
不同于OptionA,OptionB方案不受ASBR之间互连链路数目的限制。
局限性∶VPN的路由信息是通过AS之间的ASBR来保存和扩散的,当VPN路由较多时,ASBR负担重,容易成为故障点。因此在MP-EBGP方案中,需要维护VPN路由信息的ASBR一般不再负责公网IP转发。
跨域VPN-OptionC中,ASBR通过MP-IBGP向各自AS内的PE设备发布标签IPv4路由,并将到达本AS内PE的标签IPv4路由通告给它在对端AS的ASBR对等体,过渡自治系统中的ASBR也通告带标签的IPv4路由。这样,在入口PE和出口ASBR之间建立一条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的工作负担。
跨域VPN-OptionC方式-拓扑
在此方案中,ASBR不再维护或是通告VPN4路由(所以如上图,此处将ASBR-PE路由器改名为 ASBR)。ASBR只需要维护所有去往PE的带标签路由,并通过EBGP通告给对端AS。在transitAS内的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的VPNRR之间。并且当这些VPN RR通告VPNv4路由时不改变下一跳信息。PE只与VPN RR建立MP-iBGP会话。
注意∶为了方便,如上图,使用的是对称的LSP进行示意,但是实际上在控制平面和数据平面的工作过程上,两端AS的LSP结构是不对称的。下文将会详细讲解。
跨域VPN-OptionC方式-控制平面(无RR场景)
我们只通过单方向来解释控制平面的工作过程,同时假设在站点Sitel有一VPN路由Client1连接,并且P1与P2路由器都没有去往另一个AS的PE的路由,以上图为例∶
跨域VPN-OptionC方式-控制平面(带RR场景)
VPNv4邻居 ∶ 本端PE只与本端R建立VPNv4邻居,本端RR与对端RR建立VPNv4邻居,实现了跨域VPN路由的传递。
ASBR,PE同RR建立BGP单播IPv4邻居∶
ASBR通过ipv4邻居学习将从对端ASBR学到的RR的loopback,传递给本端RR,用于本端RR与对端RR建立v4邻居。
ASBR通过ipv4邻居学习将从对端ASBR学到的R和PE的loopback,传递给本端R,本端RR再将其反射给PE,用于跨域之间的PE建立BGP LSP。
带RR场景中,RR负责控制平面IPv4的路由反射、VPNv4路由的传递,转发平面的流量不经过RR。
跨域VPN-OptionC方式-转发平面
跨域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设备的部署。
跨域VPN-OptionC方式-拓扑
在此方案中,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转发流量时,可以迭代至正确的隧道。
跨域VPN-OptionC方式-控制平面(无RR场景)
我们只通过单方向来解释控制平面的工作过程,同时假设在站点Site1有一VPN路由Client1连接,并且P1与P2路由器都没有去往另一个AS的PE的路由,以上图为例∶
跨域VPN-OptionC方式-控制平面(带RR场景)
跨域VPN-OptionC方式-转发平面
跨域VPN-OptionC方式的特点
VPN路由在入口PE和出口PE之间直接交换,不需要中间设备的保存和转发。
VPN的路由信息只出现在PE设备上,而P和ASBR只负责报文的转发,使得中间域的设备可以不支持MPLS VPN业务,只需支持MPLS转发,ASBR设备不再成为性能瓶颈。因此跨域VPN-OptionC更适合在跨越多个AS时使用。
更适合支持MPLS VPN的负载分担。
缺点是维护一条端到端的PE连接管理代价较大。
R2(P1)为例,查看mpls ldp:
R1与R3,R6与R4之间配置IBGP和MP-IBGP,结果验证:
在PE(R1,R6)和ASBR(R3,R4)上配置VPN实例并关联到相应接口,在PE与CE,ASBR1与ASBR2之间在VPN实例中配置EBGP,测试:
CE之间能学习到对方接口路由,CE1和CE2能够相互ping通。
以CE1的显示为例:
上述配置完成后,CE之间能学习到对方的接口路由,CE1与CE2可以相互ping通
在ASBR上执行display bgp v4 all routing-table命令,可以看到VPNv4路由
如上图所示,共分为4个AS,AS100和AS200作为ISP,PE1,P1,RR1和ASBR1属于AS100, PE2,P2,RR2和ASBR2属于AS200。CE1和CE2属于同一个VPN,CE1通过AS100的PE1接入, CE2通过AS200的PE2接入。
每台路由器的IP地址规划详见拓扑图。
本例为OptionC方式实现方案一,可以采用PE1与PE2直接建立MP-EBGP(不带RR)来传递跨域 VPN路由,也可以采用RR1与RR2建立MP-EBGP邻居(PE1与RR1,PE2与RR2建立MP-IBGP邻居)传递跨域VPN路由,两者相似,本例采用RR方式实现OptionC方案一。
配置步骤
#
sysname R1
#
interface Ethernet0/0/0
ip address 14.1.1.1 255.255.255.0
#
interface LoopBack0
ip address 11.11.11.11 255.255.255.255
#
bgp 1
peer 14.1.1.2 as-number 100
#
ipv4-family unicast
undo synchronization
network 11.11.11.11 255.255.255.255
peer 14.1.1.2 enable
#
R4配置:(R9参考R4)
#
sysname R4
#
ip -instance 1
ipv4-family
route-distinguisher 1:1
-target 1:1 export-extcommunity
-target 1:1 import-extcommunity //配置VPN实例
#
mpls lsr-id 4.4.4.4 //配置MPLS,并在相应接口上开启
mpls
#
mpls ldp
#
interface Ethernet0/0/0
ip binding -instance 1
ip address 14.1.1.2 255.255.255.0 //配置接口与VPN实例关联
#
interface Ethernet0/0/1
ip address 34.1.1.1 255.255.255.0
mpls
mpls ldp
#
interface LoopBack0
ip address 4.4.4.4 255.255.255.255
#
bgp 100
peer 2.2.2.2 as-number 100
peer 2.2.2.2 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
peer 2.2.2.2 enable
peer 2.2.2.2 label-route-capability //使能PE与RR之间相互交换标签IPv4路由的能力
#
ipv4-family v4
policy -target
peer 2.2.2.2 enable
#
ipv4-family -instance 1
peer 14.1.1.1 as-number 1 //在PE的VPN实例中配置与CE的EBGP
#
ospf 1 router-id 4.4.4.4
area 0.0.0.0
network 4.4.4.4 0.0.0.0
network 34.1.1.0 0.0.0.255
#
R2配置:(R7参考R2)
#
sysname R2
#
mpls lsr-id 2.2.2.2
mpls
#
mpls ldp
#
interface Ethernet0/0/0
ip address 23.1.1.1 255.255.255.0
mpls
mpls ldp
#
interface LoopBack0
ip address 2.2.2.2 255.255.255.255
#
bgp 100
peer 4.4.4.4 as-number 100
peer 4.4.4.4 connect-interface LoopBack0
peer 5.5.5.5 as-number 100
peer 5.5.5.5 connect-interface LoopBack0
peer 7.7.7.7 as-number 200
peer 7.7.7.7 ebgp-max-hop 10
peer 7.7.7.7 connect-interface LoopBack0 //R2与R7(RR1与RR2)之间建立E-BGP关系
#
ipv4-family unicast
undo synchronization
peer 4.4.4.4 enable
peer 4.4.4.4 reflect-client
peer 4.4.4.4 label-route-capability
peer 5.5.5.5 enable
peer 5.5.5.5 reflect-client
peer 5.5.5.5 label-route-capability
peer 7.7.7.7 enable
#
ipv4-family v4
undo policy -target
peer 4.4.4.4 enable
peer 4.4.4.4 next-hop-invariable
peer 7.7.7.7 enable
peer 7.7.7.7 next-hop-invariable //RR传递给PE和对端RR的路由不修改下一跳,路由可以递归然后走P设配
#
ospf 1 router-id 2.2.2.2
area 0.0.0.0
network 2.2.2.2 0.0.0.0
network 23.1.1.0 0.0.0.255
#
R3配置:(R6参考R3)
#
sysname R3
#
mpls lsr-id 3.3.3.3
mpls
#
mpls ldp
#
interface Ethernet0/0/0
ip address 34.1.1.2 255.255.255.0
mpls
mpls ldp
#
interface Ethernet0/0/1
ip address 23.1.1.2 255.255.255.0
mpls
mpls ldp
#
interface GigabitEthernet0/0/0
ip address 35.1.1.1 255.255.255.0
mpls
mpls ldp
#
interface LoopBack0
ip address 3.3.3.3 255.255.255.255
#
ospf 1 router-id 3.3.3.3
area 0.0.0.0
network 3.3.3.3 0.0.0.0
network 23.1.1.0 0.0.0.255
network 35.1.1.0 0.0.0.255
network 34.1.1.0 0.0.0.255
#
R5配置:(R8参考R5)
#
sysname R5
#
mpls lsr-id 5.5.5.5
mpls
#
mpls ldp
#
interface Ethernet0/0/0
ip address 58.1.1.1 255.255.255.0
mpls
#
interface Ethernet0/0/1
ip address 35.1.1.2 255.255.255.0
mpls
mpls ldp
#
interface LoopBack0
ip address 5.5.5.5 255.255.255.255
#
bgp 100
peer 2.2.2.2 as-number 100
peer 2.2.2.2 connect-interface LoopBack0
peer 58.1.1.2 as-number 200
#
ipv4-family unicast
undo synchronization
network 2.2.2.2 255.255.255.255
network 4.4.4.4 255.255.255.255
peer 2.2.2.2 enable
peer 2.2.2.2 route-policy policy2 export //在ASBR1上对向RR1发布的路由应用路由策略,对于向本AS内的RR发布的路由,如果是带有标签的IPv4路由,为其分配新的MPLS标签
peer 2.2.2.2 label-route-capability
peer 58.1.1.2 enable
peer 58.1.1.2 route-policy policy1 export //对向ASBR2发布的路由应用路由策略,对于从本AS内的RR接收的路由,在向对端AS的ASBR发布时,分配MPLS标签
peer 58.1.1.2 label-route-capability
#
ospf 1 router-id 5.5.5.5
area 0.0.0.0
network 5.5.5.5 0.0.0.0
network 35.1.1.0 0.0.0.255
#
route-policy policy1 permit node 10
apply mpls-label //为匹配条件的路由分配标签
#
route-policy policy2 permit node 10
if-match mpls-label
apply mpls-label //如果路由带有标签,则为其分配标签
#
在R4的E0/0/1接口抓,ce1去往ce2 的ping包
在ASBR上display bgp routing-table label命令,可以看到路由的标签信息
如上图所示,共分为4个AS,AS100和AS200作为ISP,PE1,P1,RR1和ASBR1属于AS100, PE2,P2,RR2和ASBR2属于AS200。CE1和CE2属于同一个VPN,CE1通过AS100的PE1接入, CE2通过AS200的PE2接入。
每台路由器的IP地址规划详见拓扑图。
本例为OptionC方式实现方案二。方案二的实现与方案一大致相似,主要区别在于,当本端ASBR收到对端ASBR传递来的labeled-IPv4-Route后,触发LDP为BGP标签路由分标签。
RR与ASBR之间没有建立BGP邻居,在ASBR上BGP路由中宣告本AS的RR的环回接口,然后将BGP重发布到OSPF中,在OSPF进程中引入BGP路由,是为了让RR1与RR2能够顺利建立EBGP邻居关系,进而传递VPN路由。建议在OSPF中引入BGP路由时配置路由策略,做好精确的明细引入,减少不必要的路由进入IGP域。
在PE上执行display mpls lsp命令,可以看到去往对方PE的LDP LSP