跨域 MPLS VPN

传统MPLS VPN跨域MPLS VPN的区别

  • 传统MPLS VPN
    • 在一个AS内运行
    • PE和PE之间建立一个AS号
    • 在一个运营商网络运行
  • 跨域MPLS VPN
    • 在多个AS间运行
    • 涉及到跨运营商

跨域MPLS VPN

为了支持不同AS之间的VPN路由信息交换,扩展现有的协议和修改MPLS VPN体系框架,提供新的互联模型——跨域(inter-as)的MPLS VPN,以便可以穿过AS间的链路来发布路由前缀和标签信息。

跨域MPLS VPN解决方案:RFC 4364

跨域 MPLS VPN

跨域VPN-OptionA方式:

  • ASBR背靠背,彼此将对方当CE,创建VRF实例
  • ASBR中间运行的是纯ip报文,不携带标签。因为互为CE剥离了标签转发
  • 路由发布:
    • 数据通过CE1发送到PE1,PE1打上RD、RT和外层标签转发到ASBR1,ASBR1和ASBR2将对方互为CE并且将接口划分到VRF,ASBR1将标签和RD、RT剥离发送纯IP报文给ASBR2,ASBR2打上RD、RT和外层标签再逐步转发到CE2。
  • 数据转发:
  • 优点:简单实用,因为ASBR之间不需要运行MPLS,所以不用扩展协议和做特殊的配置,属于天然支持
  • 缺点:扩展性差,ASBR需要为每个VPN创建一个VPN实例,需要管理和维护所有VPN路由,如果VPN数量众多,将导致ASBR的VPNv4路由表空间过于庞大,资源开销大。如果跨多个域,配置的工作量很大,扩展性太差。
OptionA方式配置案例:(全局配置,不分配置顺序)
跨域 MPLS VPN
sysname r1

interface GigabitEthernet0/0/0
 ip address 12.0.0.1 255.255.255.0 

interface LoopBack2
 ip address 172.16.2.1 255.255.255.255 

ospf 1 router-id 1.1.1.1 
 area 0.0.0.0 
  network 12.0.0.0 0.0.0.255 
  network 172.16.2.1 0.0.0.0 
sysname r8

interface GigabitEthernet0/0/0
 ip address 78.0.0.8 255.255.255.0 

interface LoopBack1
 ip address 172.16.8.1 255.255.255.255 

ospf 1 router-id 8.8.8.8 
 area 0.0.0.0 
  network 78.0.0.0 0.0.0.255 
  network 172.16.8.1 0.0.0.0 
 sysname r2

ip vpn-instance A
 ipv4-family
  route-distinguisher 234:1
  vpn-target 234:1 export-extcommunity
  vpn-target 234:1 import-extcommunity

mpls lsr-id 2.2.2.2
mpls
mpls ldp

interface GigabitEthernet0/0/0
 ip binding vpn-instance A
 ip address 12.0.0.2 255.255.255.0 

interface GigabitEthernet0/0/1
 ip address 23.0.0.2 255.255.255.0 
 mpls
 mpls ldp

interface GigabitEthernet0/0/2

interface LoopBack0
 ip address 2.2.2.2 255.255.255.255 

bgp 234
 router-id 2.2.2.2
 peer 4.4.4.4 as-number 234 
 peer 4.4.4.4 connect-interface LoopBack0
 
 ipv4-family unicast
  undo synchronization
  peer 4.4.4.4 enable
 
 ipv4-family vpnv4
  policy vpn-target
  peer 4.4.4.4 enable

 ipv4-family vpn-instance A 
  import-route ospf 1

ospf 1 router-id 2.2.2.2 vpn-instance A
 import-route bgp
 area 0.0.0.0 
  network 12.0.0.0 0.0.0.255 

ospf 234 router-id 2.2.2.2 
 area 0.0.0.0 
  network 2.2.2.2 0.0.0.0 
  network 23.0.0.0 0.0.0.255
 sysname r3

mpls lsr-id 3.3.3.3
mpls
mpls ldp

interface GigabitEthernet0/0/0
 ip address 23.0.0.3 255.255.255.0 
 mpls
 mpls ldp

interface GigabitEthernet0/0/1
 ip address 34.0.0.3 255.255.255.0 
 mpls
 mpls ldp

interface GigabitEthernet0/0/2

interface LoopBack0
 ip address 3.3.3.3 255.255.255.255 

ospf 234 router-id 3.3.3.3 
 area 0.0.0.0 
  network 3.3.3.3 0.0.0.0 
  network 23.0.0.0 0.0.0.255 
  network 34.0.0.0 0.0.0.255 
 sysname r4

vpn-instance A
 ipv4-family
  route-distinguisher 234:1
  vpn-target 234:1 export-extcommunity
  vpn-target 234:1 import-extcommunity

mpls lsr-id 4.4.4.4
mpls
mpls ldp

interface GigabitEthernet0/0/0
 ip address 34.0.0.4 255.255.255.0 
 mpls
 mpls ldp

interface GigabitEthernet0/0/1
 ip binding vpn-instance A
 ip address 45.0.0.4 255.255.255.0     # 配置用于optionA的接口IP,并将它绑定VRF

interface LoopBack0
 ip address 4.4.4.4 255.255.255.255 

bgp 234
 router-id 4.4.4.4
 peer 2.2.2.2 as-number 234 
 peer 2.2.2.2 connect-interface LoopBack0
 
 ipv4-family unicast
  undo synchronization
  peer 2.2.2.2 enable
 
 ipv4-family vpnv4
  policy vpn-target
  peer 2.2.2.2 enable
 
 ipv4-family vpn-instance A 
  peer 45.0.0.5 as-number 567      # 将对端邻居ip用于配置vpn实例邻居,完成optionA

ospf 234 router-id 4.4.4.4 
 area 0.0.0.0 
  network 4.4.4.4 0.0.0.0 
  network 34.0.0.0 0.0.0.255
 sysname r5

ip vpn-instance B
 ipv4-family
  route-distinguisher 567:1
  vpn-target 567:1 export-extcommunity
  vpn-target 567:1 import-extcommunity

mpls lsr-id 5.5.5.5
mpls
mpls ldp

interface GigabitEthernet0/0/0
 ip address 56.0.0.5 255.255.255.0 
 mpls
 mpls ldp

interface GigabitEthernet0/0/1
 ip binding vpn-instance B
 ip address 45.0.0.5 255.255.255.0 

interface LoopBack0
 ip address 5.5.5.5 255.255.255.255 

bgp 567
 router-id 5.5.5.5
 peer 7.7.7.7 as-number 567 
 peer 7.7.7.7 connect-interface LoopBack0
 
 ipv4-family unicast
  undo synchronization
  peer 7.7.7.7 enable
 
 ipv4-family vpnv4
  policy vpn-target
  peer 7.7.7.7 enable
 
 ipv4-family vpn-instance B  
  peer 45.0.0.4 as-number 234     # 参考R4做法

ospf 567 router-id 5.5.5.5 
 area 0.0.0.0 
  network 5.5.5.5 0.0.0.0 
  network 56.0.0.0 0.0.0.255 
 sysname r6

mpls lsr-id 6.6.6.6
mpls
mpls ldp

interface GigabitEthernet0/0/0
 ip address 67.0.0.6 255.255.255.0 
 mpls
 mpls ldp

interface GigabitEthernet0/0/1
 ip address 56.0.0.6 255.255.255.0 
 mpls
 mpls ldp

interface LoopBack0
 ip address 6.6.6.6 255.255.255.255 

ospf 567 router-id 6.6.6.6 
 area 0.0.0.0 
  network 6.6.6.6 0.0.0.0 
  network 56.0.0.0 0.0.0.255 
  network 67.0.0.0 0.0.0.255
 sysname r7

ip vpn-instance B
 ipv4-family
  route-distinguisher 567:1
  vpn-target 567:1 export-extcommunity
  vpn-target 567:1 import-extcommunity

mpls lsr-id 7.7.7.7
mpls
mpls ldp

interface GigabitEthernet0/0/0
 ip binding vpn-instance B
 ip address 78.0.0.7 255.255.255.0 

interface GigabitEthernet0/0/1
 ip address 67.0.0.7 255.255.255.0 
 mpls
 mpls ldp

interface LoopBack0
 ip address 7.7.7.7 255.255.255.255 

bgp 567
 router-id 7.7.7.7
 peer 5.5.5.5 as-number 567 
 peer 5.5.5.5 connect-interface LoopBack0
 
 ipv4-family unicast
  undo synchronization
  peer 5.5.5.5 enable
 
 ipv4-family vpnv4
  policy vpn-target
  peer 5.5.5.5 enable
 
 ipv4-family vpn-instance B 
  import-route ospf 1

ospf 1 router-id 7.7.7.7 vpn-instance B
 import-route bgp
 area 0.0.0.0 
  network 78.0.0.0 0.0.0.255 

ospf 567 router-id 7.7.7.7 
 area 0.0.0.0 
  network 7.7.7.7 0.0.0.0 
  network 67.0.0.0 0.0.0.255
跨域 MPLS VPN
R2已经有了远程172.16.8.1/32路由
跨域 MPLS VPN
经过两段LSP路径

跨域VPN-OptionB方式:单跳MP-eBGP方案

  • ASBR间通过MP-EBGP交换VPN-IPv4路由
  • 路由发布:
  • 数据转发:
  • 优点:不需要在ASBR上为每个VPN创建VPN实例,不需要跨域扩展协议,容易管理和配置
  • 缺点:VPN的路由信息是通过AS之间的ASBR来保存和扩散的,当VPN路由较多的时候,ASBR负担很重,容易成为故障点。因此在MP-EBGP方案中,需要维护VPN路由信息的ASBR一般不再负责公网IP转发。
  • 配置命令:
    • int g x/x/x
      • mpls
        • 接口启用mpls 但不启用ldp
    • bgp *
      • peer * as-number *
      • ipv4-family vpnv4
        • peer * enable
          • 和对端ASBR建立MP-EBGP关系
        • undo policy vpn-target
          • 关闭rt过滤检测
    • 其他配置命令和optionA没什么区别,有区别的就是optionA将两边ASBR当作CE,而optionB则是配置为bgp对等体,但不配置RT。
    • 不再需要将ASBR之间配置VPN实例和接口绑定
    • PS:方法需要两边AS环境配置的RT值一致,如果不一致,则需要在ASBR处通过路由策略修改扩展团体属性为本AS内PE所设置的RT值,否则路由无法引入。
  • 可选配置:由于undo policy vpn-target关闭了RT的过滤检测,ASBR会接收所有的VPNv4的路由信息,ASBR负担会很重,有两种可选的过滤方式可以减轻ASBR的负担
    1. 使用策略控制VPN路由收发:
      • 配置命令过长 下面是华为官方文档的配置方法,在BGP vpnv4视图下对对端ASBR应用策略匹配,只接收哪些RD、RT
    2. ASBR按下一跳分标签:
      • 和使用策略控制VPN路由收发一样,都是适用于optionB,该方法对相同下一跳的路由信息分配标签,节省ASBR资源
      • bgp *
        • ipv4-family vpnv4
        • apply-label per-nexthop
          • 进入bgp-vpnv4视图,开启按下一跳为vpnv4路由分标签

跨域VPN-OptionC方式:多跳Multi-Hop EBGP方案

  • ASBR不维护或发布VPN-IPv4路由,PE之间直接交换VPN-IPv4路由
  • 配置方式麻烦 可看华为官方文档
  • 路由发布:
    • CE1将路由发布给PE1,PE1是和PE3直接通信的,不依靠ASBR,ASBR做转发
    • PE1为这条路由打上最内层的私网标签L3,ASBR1为PE1的1.1.1.1地址打上L9标签表示去往1.1.1.1需要带上L9标签转发。保证1.1.1.1可达
    • ASBR2收到标签后将目的1.1.1.1的L9换成L10标签表示去往1.1.1.1需要带上L10标签,最后发送到PE3
    • 最后PE3去往10.1.1.1的标签有最里层的L3、L10/L9(由ASBR转换)、外网标签。
  • 数据转发:
    • 数据转发过程会有三层标签
    • CE2去往10.1.1.1/24路由,PE3打上最里层的L3私网标签(10.1.1.1的标签)、L10(1.1.1.1的标签)、Lx(外网标签,去往ASBR2,同AS找路)
    • P设备收到后剥离Lx外网标签打上标签3隐式空标签代表弹出
    • ASBR2收到标签后将L10换成L9标签发送给ASBR1
    • ASBR1根据收到的标签将L9剥离并打上外层标签发送给P设备
    • P设备收到后剥离Lx外网标签打上标签3隐式空标签代表弹出发送给PE1
    • PE1收到后将L3剥离并根据IP信息发送给VPN实例的CE1完成转发
  • 优点:这种方案是最容易被接受的,因为它符合MPLS VPN的体系结构的要求,只有PE知道VPN路由信息,而P路由器只负责报文转发。这样就使得中间域的设备可以不支持MPLS VPN业务。尤其是跨越多个域时优势更加明显,而且这个方案支持负载分担等功能
  • 缺点:要对BGP做扩展(利用BGP的一个新特性(RFC3107),这个特性可以让BGP传递公网路由的时候携带标签),而且隧道的生成也是由别于普通MPLS VPN结构,因此维护和理解起来难度比较大,不适合用于企业网络的环境

方案之间的比较和优势:

OptionB比较首选

跨域 MPLS VPN

作者:Zleoco,如若转载,请注明出处:https://www.zleoco.com/?p=2647