MPLS_VPN跨域

似梦清欢
• 阅读 159

当两个不同AS的CE之间相互通信时,需要使用跨域VPN技术。 MPLS VPN跨域产生的问题:

  • AS之间不会运行LDP协议,因此AS之间无法建立外层隧道。
  • PE之间没有运行IGP协议,缺省情况下无法建立BGP邻居关系,进而无法直接传递VPNv4路由。

三种解决思路:

  1. OptionA:ASBR之间交换IPv4路由,采用IPv4数据包转发数据。
  2. OptionB:ASBR之间交换VPNv4路由,采用携带一层MPLS标签的方式转发数据包。
  3. OptionC:PE之间交换VPNv4路由,采用携带多层MPLS标签的方式转发数据包。

跨域VPN-OptionA方式:
   需要跨域的VPN在ASBR间通过专用的接口管理自己的VPN路由,配置简单,ASBR之间不需要运行MPLS。
跨域VPN-OptionB方式:
   ASBR间通过MP-EBGP发布标签VPNv4路由,不需要针对每个VPN创建不同接口。
跨域VPN-OptionC方式:
   PE或RR间通过Multi-hop MP-EBGP发布标签VPNv4路由,ASBR不维护或发布VPNv4路由,配置较为复杂。
基础实验拓扑配置:

MPLS_VPN跨域

[AR1-GigabitEthernet0/0/0]ip ad 10.1.12.1 24      CE设备暂只配置IP

[AR2]ip vpn-instance A
[AR2-vpn-instance-A]route-distinguisher 100:100
[AR2-vpn-instance-A-af-ipv4]vpn-target 1:1
[AR2-GigabitEthernet0/0/0]ip binding vpn-instance A
[AR2-GigabitEthernet0/0/0]ip ad 10.1.12.2 24
[AR2]isis    
[AR2-isis-1]network-entity 49.0001.0000.0000.0002.00
[AR2-isis-1]is-level level-2    
[AR2-isis-1]cost-style wide
[AR2]mpls lsr-id 2.2.2.2
[AR2]mpls    
[AR2]mpls ldp
[AR2-GigabitEthernet0/0/1]ip ad 10.1.23.2 24    
[AR2-GigabitEthernet0/0/1]isis enable 
[AR2-GigabitEthernet0/0/1]mpls    
[AR2-GigabitEthernet0/0/1]mpls ldp
[AR2-LoopBack0]ip ad 2.2.2.2 32
[AR2-LoopBack0]isis enable

[AR3]isis 
[AR3-isis-1]network-entity 49.0001.0000.0000.0003.00
[AR3-isis-1]is-level level-2    
[AR3-isis-1]cost-style wide
[AR3]mpls lsr-id 3.3.3.3
[AR3]mpls
[AR3-mpls]mpls ldp
[AR3-GigabitEthernet0/0/0]ip ad 10.1.23.3 24
[AR3-GigabitEthernet0/0/0]isis enable
[AR3-GigabitEthernet0/0/0]mpls     
[AR3-GigabitEthernet0/0/0]mpls ldp
[AR3-GigabitEthernet0/0/1]ip ad 10.1.34.3 24    
[AR3-GigabitEthernet0/0/1]isis enable 
[AR3-GigabitEthernet0/0/1]mpls
[AR3-GigabitEthernet0/0/1]mpls ldp
[AR3-LoopBack0]ip ad 3.3.3.3 32 
[AR3-LoopBack0]isis enable 

[AR4]isis
[AR4-isis-1]network-entity 49.0001.0000.0000.0004.00
[AR4-isis-1]is-level level-2    
[AR4-isis-1]cost-style wide
[AR4]mpls lsr-id 4.4.4.4
[AR4]mpls
[AR4]mpls ldp 
[AR4-GigabitEthernet0/0/0]ip ad 10.1.34.4 24    
[AR4-GigabitEthernet0/0/0]isis enable 
[AR4-GigabitEthernet0/0/0]mpls
[AR4-GigabitEthernet0/0/0]mpls ldp
[AR4-LoopBack0]ip ad 4.4.4.4 32
[AR4-LoopBack0]isis enable 
[AR4-GigabitEthernet0/0/1]ip ad 10.1.45.4 24    连接区域外的接口暂只配置IP

[AR5-GigabitEthernet0/0/0]ip ad 10.1.45.5 24    连接区域外的接口暂只配置IP
[AR5]isis
[AR5-isis-1]network-entity 49.0001.0000.0000.0005.00
[AR5-isis-1]is-level level-2
[AR5-isis-1]cost-style wide
[AR5]mpls lsr-id 5.5.5.5
[AR5]mpls
[AR5-mpls]mpls ldp
[AR5-GigabitEthernet0/0/1]ip ad 10.1.56.5 24    
[AR5-GigabitEthernet0/0/1]isis enable 
[AR5-GigabitEthernet0/0/1]mpls 
[AR5-GigabitEthernet0/0/1]mpls ldp
[AR5-LoopBack0]ip ad 5.5.5.5 32    
[AR5-LoopBack0]isis enable 

[AR6]isis
[AR6-isis-1]network-entity 49.0001.0000.0000.0006.00
[AR6-isis-1]is-level level-2    
[AR6-isis-1]cost-style wide
[AR6]mpls lsr-id 6.6.6.6
[AR6]mpls
[AR6-mpls]mpls ldp
[AR6-GigabitEthernet0/0/0]ip ad 10.1.56.6 24    
[AR6-GigabitEthernet0/0/0]isis enable 
[AR6-GigabitEthernet0/0/0]mpls    
[AR6-GigabitEthernet0/0/0]mpls ldp 
[AR6-GigabitEthernet0/0/1]ip ad 10.1.67.6 24
[AR6-GigabitEthernet0/0/1]isis enable 
[AR6-GigabitEthernet0/0/1]mpls 
[AR6-GigabitEthernet0/0/1]mpls ldp 
[AR6-LoopBack0]ip ad 6.6.6.6 32
[AR6-LoopBack0]isis enable 

[AR7]isis
[AR7-isis-1]network-entity 49.0001.0000.0000.0007.00
[AR7-isis-1]is-level level-2    
[AR7-isis-1]cost-style wide
[AR7]mpls lsr-id 7.7.7.7
[AR7]mpls
[AR7-mpls]mpls ldp
[AR7-GigabitEthernet0/0/0]ip ad 10.1.67.7 24    
[AR7-GigabitEthernet0/0/0]isis enable 
[AR7-GigabitEthernet0/0/0]mpls
[AR7-GigabitEthernet0/0/0]mpls ldp
[AR7-LoopBack0]ip ad 7.7.7.7 32
[AR7-LoopBack0]isis enable
[AR7]ip vpn-instance A
[AR7-vpn-instance-A]route-distinguisher 100:100    
[AR7-vpn-instance-A-af-ipv4]vpn-target 1:1
[AR7-GigabitEthernet0/0/1]ip binding vpn-instance A
[AR7-GigabitEthernet0/0/1]ip ad 10.1.78.7 24

[AR8-GigabitEthernet0/0/0]ip ad 10.1.78.8 24      CE设备暂只配置IP

Option A:

如下,两个单域合并在一起,形成跨域的Option A: MPLS_VPN跨域 两个AS的ASBR会互相将对方当作自己的CE设备处理,即ASBR会将自己当作PE设备,将对端ASBR当作CE设备,PE设备(ASBR)需要存在VPN实例,VPN实例的规划和本端PE设备对接。

ASBR之间传递私网路由信息,不携带任何标签值
ASBR需要维护私网路由,就需要存在VPN实例(VPN实例隔离私网路由)
ASBR需要维护所有站点信息(PE只需要维护自身连接站点信息),ASBR设备资源处理压力会随着用户站点的增加而增加(VPN实例数量增加)
ASBR还需要处理私网数据转发过程中的私网标签和私网路由

当option A存在多租户,ASBR上为了区别多租户需要创建多个VPN实例:
  1.ASBR之间连接多根线,每一个接口做一个VPN实例的绑定,设备的接口资源消耗快
  2.ASBR之间通过子接口做VPN实例的绑定,多个租户共享一个物理接口的带宽,容易出现拥塞、延迟、丢包等问题

Option A实验

将跨域连接的两台PE设备当作对端的PE的CE设备做配置: MPLS_VPN跨域

AR4增加站点VPN实例配置
[AR4]ip vpn-instance A
[AR4-vpn-instance-A]route-distinguisher 100:100
[AR4-vpn-instance-A-af-ipv4]vpn-target 1:1    
[AR4-GigabitEthernet0/0/1]ip binding vpn-instance A
[AR4-GigabitEthernet0/0/1]ip ad 10.1.45.4 24

使用OSPF做站点路由接入
[AR1]ospf router-id 10.1.1.1
[AR1-ospf-1]a    
[AR1-ospf-1]area 0
[AR1-GigabitEthernet0/0/0]ospf enable area 0

[AR2]ospf router-id 10.2.2.2 vpn-instance A
[AR2-ospf-1]area 0    
[AR2-GigabitEthernet0/0/0]ospf enable area 0

[AR4]ospf router-id 10.4.4.4 vpn-instance A
[AR4-ospf-1]area 0
[AR4-GigabitEthernet0/0/1]ospf enable area 0

[AR5]ospf router-id 10.5.5.5
[AR5-ospf-1]area 0    
[AR5-GigabitEthernet0/0/0]ospf enable area 0

::: tip 公网中可以配置RR,也可以直接配置对端PE的BGP :::

公网MP-IBGP配置(AS 100单域配置)
[AR2]bgp 100    
[AR2-bgp]peer 4.4.4.4 as-number 100     不设置RR,PE直接建立BGP邻居
[AR2-bgp]peer 4.4.4.4 connect-interface LoopBack 0
[AR2-bgp]undo peer 4.4.4.4 enable
[AR2-bgp]ipv4-family vpnv4     
[AR2-bgp-af-vpnv4]peer 4.4.4.4 enable 

[AR4]bgp 100    
[AR4-bgp]peer 2.2.2.2 as-number 100    
[AR4-bgp]peer 2.2.2.2 connect-interface LoopBack 0
[AR4-bgp]undo peer 2.2.2.2 enable 
[AR4-bgp]ipv4-family vpnv4    
[AR4-bgp-af-vpnv4]peer 2.2.2.2 enable 

如上配置后,AR1的站点路由可以由PE设备AR4通告给CE设备AR5:

[AR1-LoopBack1]ip ad 100.1.1.1 32
[AR1-LoopBack1]ospf enable area 0

[AR2]acl 2000
[AR2-acl-basic-2000]rule 5 permit source 100.1.1.1 0
[AR2]route-policy OSPF_TO_BGP permit node 10
[AR2-route-policy]if-match acl 2000
[AR2]bgp 100
[AR2-bgp]ipv4-family vpn-instance A
[AR2-bgp-A]import-route ospf 1 route-policy OSPF_TO_BGP 

[AR4-ospf-1]import-route bgp

AR5收到AR1通告路由: MPLS_VPN跨域 PE传给CE的是私网路由,AR5接收AR4传来的私网路由时,可以将自身当作PE设备,AR4当作CE设备,接收该私网路由。 ::: warning AR5作为PE设备,创建VPN实例接收私网路由传递到对端PE设备AR7时,需要保证AR5的VPN实例和AR7的VPN实例的RT值相互对应。 :::

对端公网单域配置
[AR5]ip vpn-instance A
[AR5-vpn-instance-A]route-distinguisher 100:100
[AR5-vpn-instance-A-af-ipv4]vpn-target 1:1    
[AR5-GigabitEthernet0/0/0]ip binding vpn-instance A
[AR5-GigabitEthernet0/0/0]ip ad 10.1.45.5 24
[AR5-GigabitEthernet0/0/0]ospf enable area 0
Error: The specified process ID has been used by the process of another instance.
[AR5]undo ospf 1
Warning: The OSPF process will be deleted. Continue? [Y/N]:y
[AR5]ospf router-id 10.5.5.5 vpn-instance A     
[AR5-GigabitEthernet0/0/0]ospf enable  area 0

::: warning OSPF进程默认属于公网,VPN实例绑定的接口使能OSPF时需要先undo OSPF进程,再在OSPF进程上绑定VPN实例,才能在接口使能OSPF。

MPLS_VPN跨域 出现如上报错时需要在接口undo ospf使能。 ::: OSPF引入VPN实例路由(AR4)后,被VPN实例的OSPF接收(AR5),出现DN bit置位: MPLS_VPN跨域 出于防环考虑,DN bit置位的LSA不会计算写入路由表: MPLS_VPN跨域

[AR5-ospf-1]vpn-instance-capability simple       减弱VPN实例处理机制,忽略DN bit检查

MPLS_VPN跨域

至此AS 100域内的路由可以正常传输到AS 200。

公网MP-IBGP配置(AS 200单域配置)
[AR5]bgp 200
[AR5-bgp]peer 7.7.7.7 as-number 200
[AR5-bgp]peer 7.7.7.7 connect-interface LoopBack 0
[AR5-bgp]ipv4-family vpnv4    
[AR5-bgp-af-vpnv4]peer 7.7.7.7 enable 

[AR7]bgp 200    
[AR7-bgp]peer 5.5.5.5 as-number 200    
[AR7-bgp]peer 5.5.5.5 connect-interface LoopBack 0
[AR7-bgp]ipv4-family vpnv4    
[AR7-bgp-af-vpnv4]peer 5.5.5.5 enable 

MPLS_VPN跨域 如上,AR5上该路由通过OSPF学习到,需要把OSPF路由再次引入到VPN实例中。

[AR5]bgp 200
[AR5-bgp]ipv4-family vpn-instance A
[AR5-bgp-A]import-route ospf 1        OSPF路由引入到VPN实例

VPN实例路由表中出现该路由,并被转换成VPNv4路由(策略过滤其他路由): MPLS_VPN跨域 IBGP间路由正常传递到AR7,AR7上VPN实例配置RT值相互匹配,可以接收VPNv4路由并转换VPN实例路由: MPLS_VPN跨域

AS 200域内OSPF站点接入
[AR7]undo ospf 1
Warning: The OSPF process will be deleted. Continue? [Y/N]:y
[AR7]ospf router-id 10.7.7.7 vpn-instance A
[AR7-ospf-1]area 0
[AR7-ospf-1]import-route bgp 
[AR7-GigabitEthernet0/0/1]ospf enable area 0

[AR8]ospf router-id 10.8.8.8
[AR8-ospf-1]area 0
[AR8-GigabitEthernet0/0/0]ip ad 10.1.78.8 24    
[AR8-GigabitEthernet0/0/0]ospf enable  area 0

AR8收到AR1通告路由: MPLS_VPN跨域

AR8向AR1通告路由
[AR8-LoopBack1]ip ad 100.8.8.8 32    
[AR8-LoopBack1]ospf enable  area 0

[AR7-bgp]ipv4-family vpn-instance A    
[AR7-bgp-A]import-route ospf 1 rou OSPF_TO_BGP

[AR5-ospf-1]import-route bgp 
[AR5-ospf-1]undo vpn-instance-capability      执行vpn-instance-capability会导致IBGP路由无法import引入到OSPF
[AR5-ospf-1]dn-bit-check disable summary      使用dn-bit-check忽略DN检查

[AR4]acl 2000
[AR4-acl-basic-2000]ru 5 p s 100.8.8.8 0
[AR4]route-policy OSPF_TO_BGP p n 10
[AR4-route-policy]if acl 2000
[AR4-bgp]ipv4-family vpn-instance A    
[AR4-bgp-A]import-route ospf 1 route-policy OSPF_TO_BGP 
[AR4-ospf-1]dn-bit-check disable summary 

[AR2-ospf-1]import-route bgp 

::: warning vpn-instance-capability命令用于MCE场景。 ::: AR1收到AR8通告路由: MPLS_VPN跨域 两台设备可以跨域通信: MPLS_VPN跨域

::: tip 如果两台ASBR之间建立BGP关系,可以直接进行路由传递,无需引入。 如果两台ASBR之间建立ISIS关系,不需要OSPF防环的步骤,可以直接引入。 ::: ::: warning 如上拓扑中ASBR间路由引入是EBGP引入到OSPF,如果是IBGP路由引入到OSPF,需要执行以下命令:

[AR-ospf-1]import-route bgp permit-ibgp           将IBGP邻居的路由引入到IGP

默认的import-route bgp只引入EBGP邻居关系。 :::

VPN-Option A控制平面: MPLS_VPN跨域 上图中NH表示下一跳。 VPN-Option A转发平面: MPLS_VPN跨域


Option B:

Option B实验:

MPLS_VPN跨域

配置思路:
    1.AS内建立IGP邻居、MPLS LDP使能
    2.站点PE设备建立VPN实例绑定接口
(站点内路由协议规划)
    3.ASBR之间的接口需要使能MPLS
    4.本端PE和本端RR建立MP-IBGP邻居
      本端RR和本端ASBR建立MP-IBGP邻居
      本端ASBR和对端ASBR建立MP-EBGP邻居
    5.RR设备和ASBR设备需要关闭policy vpn-target
[AR1]ospf router-id 10.1.1.1 
[AR1-ospf-1]area 0
[AR1-GigabitEthernet0/0/0]ospf enable  area  0
[AR1-LoopBack0]ip ad 1.1.1.1 32
[AR1-LoopBack0]ospf enable area 0    

[AR2]ospf router-id 10.2.2.2 vpn-instance A
[AR2-ospf-1]area 0    
[AR2-GigabitEthernet0/0/0]ospf enable area 0
[AR2-bgp]ipv4-family vpn-instance A
[AR2-bgp-A]import-route ospf 1
(ACL过滤网段路由)
[AR2]bgp 100
[AR2-bgp]peer 3.3.3.3 as-number 100    
[AR2-bgp]peer 3.3.3.3 connect-interface LoopBack 0
[AR2-bgp]undo peer 3.3.3.3 enable
[AR2-bgp]ipv4-family vpnv4     
[AR2-bgp-af-vpnv4]peer 3.3.3.3 enable 

[AR3]bgp 100    
[AR3-bgp]peer 2.2.2.2 as-number 100    
[AR3-bgp]peer 2.2.2.2 connect-interface LoopBack 0
[AR3-bgp]undo peer 2.2.2.2 enable
[AR3-bgp]peer 4.4.4.4 as-number 100    
[AR3-bgp]peer 4.4.4.4 connect-interface LoopBack 0
[AR3-bgp]undo peer 4.4.4.4 enable 
[AR3-bgp]ipv4-family vpnv4     
[AR3-bgp-af-vpnv4]peer 2.2.2.2 enable 
[AR3-bgp-af-vpnv4]peer 2.2.2.2 reflect-client 
[AR3-bgp-af-vpnv4]peer 4.4.4.4 enable 
[AR3-bgp-af-vpnv4]peer 4.4.4.4 reflect-client 
[AR3-bgp-af-vpnv4]undo policy vpn-target        RR上没有VPN实例,没有RT值对应接收,会默认过滤所有路由信息,手动关闭过滤动作

[AR4]bgp 100
[AR4-bgp]peer 3.3.3.3 as-number 100
[AR4-bgp]peer 3.3.3.3 connect-interface LoopBack 0
[AR4-bgp]undo peer 3.3.3.3 enable
[AR4-bgp]ipv4-family vpnv4     
[AR4-bgp-af-vpnv4]peer 3.3.3.3 enable 
[AR4-bgp-af-vpnv4]undo policy vpn-target 

此时AR1通告路由传到AR4: MPLS_VPN跨域

ASBR配置MP-EBGP
[AR4-bgp]peer 10.1.45.5 as-number 200
[AR4-bgp]peer 10.1.45.5 connect-interface GigabitEthernet 0/0/1
[AR4-bgp]undo peer 10.1.45.5 enable 
[AR4-bgp]ipv4-family vpnv4
[AR4-bgp-af-vpnv4]peer 10.1.45.5 enable 

[AR5-bgp]peer 10.1.45.4 as-number 100
[AR5-bgp]peer 10.1.45.4 connect-interface GigabitEthernet 0/0/0
[AR5-bgp]undo peer 10.1.45.4 enable 
[AR5-bgp]ipv4-family vpnv4
[AR5-bgp-af-vpnv4]peer 10.1.45.4 enable 

::: tip 通常情况下,IBGP邻居通过环回口建立,EBGP邻居通过接口建立。 ::: AR5可以收到EBGP邻居AR4通告的路由 MPLS_VPN跨域

AS 200内IBGP配置
[AR5]bgp 200
[AR5-bgp]peer 6.6.6.6 as-number 200
[AR5-bgp]peer 6.6.6.6 connect-interface LoopBack 0
[AR5-bgp]undo peer 6.6.6.6 enable
[AR5-bgp]ipv4-family vpnv4     
[AR5-bgp-af-vpnv4]peer 6.6.6.6 enable 
[AR5-bgp-af-vpnv4]undo policy vpn-target 


[AR6]bgp 200
[AR6-bgp]peer 5.5.5.5 as-number 200    
[AR6-bgp]peer 5.5.5.5 connect-interface LoopBack 0
[AR6-bgp]ipv4-family vpnv4    
[AR6-bgp]undo peer 5.5.5.5 enable
[AR6-bgp-af-vpnv4]peer 5.5.5.5 enable 
[AR6-bgp-af-vpnv4]peer 5.5.5.5 reflect-client 
[AR6-bgp]peer 7.7.7.7 as-number 100    
[AR6-bgp]peer 7.7.7.7 connect-interface LoopBack 0
[AR6-bgp]undo peer 7.7.7.7 enable    
[AR6-bgp-af-vpnv4]peer 7.7.7.7 enable 
[AR6-bgp]ipv4-family vpnv4    
[AR6-bgp-af-vpnv4]peer 7.7.7.7 reflect-client 
[AR6-bgp-af-vpnv4]undo policy vpn-target 

[AR7]bgp 200    
[AR7-bgp]peer 6.6.6.6 as-number 200    
[AR7-bgp]peer 6.6.6.6 connect-interface LoopBack 0
[AR7-bgp]undo peer 6.6.6.6 enable 
[AR7-bgp]ipv4-family vpnv4    
[AR7-bgp-af-vpnv4]peer 6.6.6.6 enable 

如上配置AR5不会通告路由给AR6。(后续说明原因)

在AR5的EBGP邻居接口使能MPLS
[AR5-GigabitEthernet0/0/0]mpls

路由可以向下传到AR7: MPLS_VPN跨域

[AR7]ospf router-id 10.7.7.7 vpn-instance  A
[AR7-ospf-1]area 0    
[AR7-ospf-1]import-route bgp 
[AR7-GigabitEthernet0/0/1]ospf enable area 0

[AR8]ospf router-id 10.8.8.8
[AR8-ospf-1]area 0    
[AR8-GigabitEthernet0/0/0]ospf enable  area  0

AR8收到AR1通告路由: MPLS_VPN跨域


Option B控制平面路由传递过程

MPLS_VPN跨域 如上旁挂式RR,AS内的PE和ASBR设备只与RR设备建立MP-BGP邻居关系,RR只负责控制平面的VPNv4路由传递,数据转发时流量不经过RR,PE和ASBR之间无需建立BGP邻居。

::: tip VPN跨域场景下,建议部署独立的RR设备,只负责路由传递,不转发流量。 ::: AR2上MPLS LSP表: MPLS_VPN跨域 AR2转发100.1.1.1: MPLS_VPN跨域 AR2发出标签为1026,AR3上接收标签应为1026: MPLS_VPN跨域 AR3把该路由反射给AR4,AR4上该路由多出一个发出标签: MPLS_VPN跨域 ::: warning MP-EBGP邻居传递路由时需要替换私网标签值。即ASBR之间使用MP-EBGP传递VPNv4路由时,会为其重新分配一个标签。 MP-IBGP邻居传递路由时,由于LDP存在,不需要替换私网标签。 :::

与Option A相比,ASBR之间传递私网路由IP时没有标签值,不够安全,Option B为其封装私网标签。 ::: tip Option B在数据传输的任意一段都要存在标签进行数据封装。 MP-IBGP邻居只对自身始发的路由分配标签,MP-EBGP邻居对经过自身的所有路由都分配标签。 ::: AR5收到后同样会封装私网标签: MPLS_VPN跨域 AR6收到该路由: MPLS_VPN跨域 AR7收到AR6反射来的路由: MPLS_VPN跨域

::: tip 在控制平面,从MP-EBGP邻居收到的路由信息传递给MP-IBGP邻居时,要求设备本身可以进行标签的处理(存在标签转发的能力),否则下游设备发来携带该标签的数据会被丢弃,所以ASBR之间互联的接口需要开启MPLS功能。 :::

AR8向AR1通告路由
[AR8-LoopBack0]ip ad 100.8.8.8 32
[AR8-LoopBack0]ospf enable area  0

[AR7]acl 2000
[AR7-acl-basic-2000]ru 5 p s 100.8.8.8 0
[AR7]route-policy OSPF_TO_BGP p n 10
[AR7-route-policy]if acl 2000
[AR7-bgp]ipv4-family vpn-instance A    
[AR7-bgp-A]import-route ospf 1 rou OSPF_TO_BGP 

路由引入后AR4可以学到100.8.8.8的路由,但不能通告给AR3: MPLS_VPN跨域 原因是AR4没有标签分配处理的能力,无法传递标签信息。

[AR4-Gigabitethernet0/0/1]mpls           AR4对应接收100.8.8.8的接口使能MPLS

开启标签处理能力后,AR4具备转发能力: MPLS_VPN跨域

[AR2-ospf-1]import-route bgp   

AR1收到AR8通告路由: MPLS_VPN跨域

Option B数据平面(转发平面)路由传递过程

MPLS_VPN跨域 如上,私网标签隧道(绿色)在AS间断开,LDP仅在AS内存在封装公网标签。 MPLS_VPN跨域 如上,AR1和AR8可以正常访问,但tracert时第3、4跳没有回显。转发平面查看FIB表: MPLS_VPN跨域 AR2私网标签: MPLS_VPN跨域

MPLS_VPN跨域 AR2公网标签: MPLS_VPN跨域 AR3公网标签: MPLS_VPN跨域 AR3发出时弹出公网标签,查看私网标签: MPLS_VPN跨域 MPLS LSP表中没有给出下一跳,该路由从BGP学到,查看BGP路由表: MPLS_VPN跨域 查看AR4的FIB: MPLS_VPN跨域 如上,路由转发不需要走隧道时,按照出接口转发。 AR5收到后做标签替换,私网标签1027替换为1026: MPLS_VPN跨域 MPLS LSP表中没有给出下一跳,该路由从BGP学到,查看BGP路由表: MPLS_VPN跨域 查看AR5的FIB: MPLS_VPN跨域 如上,该路由走隧道转发,查看7.7.7.7对应公网标签信息: MPLS_VPN跨域 如上,封装公网标签1025。 AR6收到该路由后,公网标签替换为3: MPLS_VPN跨域 AR7收到私网标签: MPLS_VPN跨域 AR7从VPN实例A中查找: MPLS_VPN跨域 如上,通过AR7 GE0/0/1接口转发,到达AR8。

::: tip 数据平面转发数据时,ASBR之间需要替换私网标签,即ASBR需要处理私网数据:

  • 维护私网路由(VPNv4路由)。
  • 处理私网路由对应的私网标签(私网标签替换传递)。 :::

Option B相比于Option A ASBR上减少了VPN实例的创建,通过关闭policy vpn-target策略来接收VPNv4路由。 综合ASBR还是需要维护私网路由,处理私网标签需要部署性能高的设备。

私网数据在传输过程中的任意一段都使用标签进行封装,但私网标签隧道不完整的:
   1.本端PE到本端ASBR是一段私网标签隧道
   2.本端ASBR到对端ASBR是一段私网标签隧道
   3.对端ASBR到对端PE是一段私网标签隧道

LDP分配的公网标签只能在AS内进行使用,AS之间不存在LDP分配的公网标签。


Option C:

Option B:在数据传输的任意一段都要存在标签进行数据封装(可能是公网或私网标签)
Option C:在数据传输的任意一段都要存在公网标签进行数据封装,构建一条完整的私网LSP(私网标签隧道中,私网标签不变)

::: tip Option C核心是使得两端PE之间路由可达,建立MP-IBGP邻居。 ::: Option C分类(本端PE如何学习到对端PE公网路由信息):

  • C1:本端PE通过BGP路由学习到对端PE的公网路由信息。
  • C2:本端PE通过IGP路由学习到对端PE的公网路由信息。

(LDP为IGP分配标签,BGP学习到的路由也需要递归到IGP。) AS内使用LDP封装公网标签,ASBR间需要继续封装,否则私网标签,会被ASBR设备更改处理。

Option C路由传递时,AS域内使用IGP从PE传到本端ASBR,ASBR通过EBGP邻居宣告或引入方式传递给对端的ASBR,对端ASBR通过普通IBGP邻居传递到对端PE设备。 ::: warning BGP基于IGP,BGP引入到IGP较为方便。 ::: Option C数据三层封装思路:本端PE的私网路由下一跳为对端PE,通过BGP(本端ASBR)学到,本端ASBR的路由通过IGP学到。即私网递归到BGP,再递归到IGP,通过IGP公网隧道转发。 MPLS_VPN跨域 如上图,BGP LSP公网标签隧道用于在ASBR之间封装私网隧道。 由于LDP和BGP LSP之间不能相互替换,就在PE间(AR4-AR7)直接封装三层隧道,在ASBR上无需替换,可以直接剥离公网LDP标签,直接根据内层BGP LSP隧道进行转发。

::: tip Option C1方案的优势:

  1. 可以建立一条端到端的私网隧道。
  2. 所有的公网设备(除PE和RR设备外)不会接收、处理私网路由信息。
  3. ASBR之间使用公网标签封装私网标签,数据信息更加安全。

缺点:端到端维护一条完整的LSP代价较大,需要维护一条路由的标签封装,站点较多时代价较大。 :::


Option C1实验:

MPLS_VPN跨域

BGP打通路由,AR2向AR7通告路由
[AR2-LoopBack1]ip ad 100.2.2.2 32
[AR2-LoopBack1]isis enable
[AR2]bgp 100    
[AR2-bgp]peer 4.4.4.4 as-number 100    
[AR2-bgp]peer 4.4.4.4 connect-interface LoopBack 0
路由通过IP v4邻居传递,不能undo peer 4.4.4.4 enable

[AR4]bgp 100    
[AR4-bgp]peer 2.2.2.2 as-number 100    
[AR4-bgp]peer 2.2.2.2 connect-interface LoopBack 0
[AR4-bgp]peer 10.1.45.5 as-number 200
[AR4-bgp]network 100.2.2.2 32       ASBR通过IBGP(ISIS)学习到该路由后由自身执行宣告

[AR5]bgp 200    
[AR5-bgp]peer 7.7.7.7 as-number 200
[AR5-bgp]peer 7.7.7.7 connect-interface LoopBack 0
[AR5-bgp]peer 7.7.7.7 next-hop-local         EBGP邻居收到路由传递进IBGP时将下一跳改为本地
[AR5-bgp]peer 10.1.45.4 as-number 100

[AR7]bgp 200
[AR7-bgp]peer 5.5.5.5 as-number 200    
[AR7-bgp]peer 5.5.5.5 connect-interface LoopBack 0

AR7学习到对端PE通告的路由信息,并将下一跳改为本端ASBR: MPLS_VPN跨域

MPLS_VPN跨域

按照封装流程分析,AR2 100.2.2.2数据包可以带标签访问AR7 100.7.7.7,但在AR3上数据包会被丢弃: 查看AR2转发表: MPLS_VPN跨域 如上AR2-AR7通过IP转发,不进入隧道。AR3上没有对应路由: MPLS_VPN跨域 直接通过BGP学习到的路由默认按照IP进行转发,BGP路由可以迭代到IGP,但不会进入LDP的公网隧道。

BGP路由携带标签,执行隧道转发
[AR4]route-policy ASBR permit node 10    
[AR4-route-policy]apply mpls-label
[AR4-bgp]peer 10.1.45.5 route-policy ASBR export       向邻居AR5通告路由时打上标签
[AR4-bgp]peer 10.1.45.5 label-route-capability        使能发送和接收标签路由的功能

[AR5-bgp]peer 10.1.45.4 label-route-capability        两端相互协商,都需要使能能力

MPLS_VPN跨域 AR4首先在IBGP学到该路由,然后可以通过EBGP通告给邻居: MPLS_VPN跨域 ::: warning 如果AR2的100.2.2.2没有使能ISIS通过IBGP传给AR4,由AR2的BGP通告100.2.2.2,普通的BGP邻居可以正常接受传递,但由于AR4做了策略标签(route-policy ASBR),AR4收到AR2 BGP通告的100.2.2.2后,不能通告给其他邻居。 即ASBR做了策略标签后,只能为自身引入或宣告的路由打标签传递。 :::

AS 200内建立隧道
AR5向本端PE继续分配标签
[AR5]route-policy PE permit node 10
[AR5-route-policy]if-match mpls-label      ASBR如果收到也给MPLS标签,就重新分配一个标签
[AR5-route-policy]apply mpls-label 
[AR5-bgp]peer 7.7.7.7 route-policy PE export
[AR5-bgp]peer 7.7.7.7 label-route-capability       开启标签路由能力
[AR5-GigabitEthernet0/0/0]mpls      不开启MPLS则AR5无法转发带标签路由

[AR7-bgp]peer 5.5.5.5 label-route-capability

::: warning mpls-label只对到邻居生效,AR4分配的标签只对ASBR之间的链路生效,AR5向本端PE传递需要重新分配标签。

AR5收到AR4分配的带标签路由,需要在接收端口开启MPLS标签转发功能。 ::: AR7收到AR5通告路由,并打上标签1026: MPLS_VPN跨域

MPLS_VPN跨域

[AR5-bgp]undo peer 7.7.7.7 next-hop-local 

MPLS_VPN跨域 如上,标签信息改变后,下一跳会自动改变,EBGP邻居学到路由传递给IBGP邻居时,无需配置将下一跳变为自身的命令。

如上配置后,AR7可以通过标签封装正常访问AR2: MPLS_VPN跨域 访问该IP需要打标签1026: MPLS_VPN跨域 该路由通过BGP学到,需要递归到IGP,下一跳5.5.5.5: MPLS_VPN跨域 下一跳5.5.5.5对应封装标签1025,从GE0/0/0发出: MPLS_VPN跨域 即AR7访问10.2.2.2时,需要先封装BGP公网标签1026,再封装LDP公网标签1025,再通过GE0/0/0接口发出。

AR7向AR2通告路由
[AR7-LoopBack1]ip ad 100.7.7.7 32
[AR7-LoopBack1]isis enable 
[AR7-bgp]network 100.7.7.7 32
[AR7-bgp]undo network 100.7.7.7 255.255.255.255 

[AR5-bgp]network 100.7.7.7 32

[AR4-bgp]peer 2.2.2.2 next-hop-local      需要等待配置生效

MPLS_VPN跨域 如上,AR5上100.7.7.7下一跳为全0,即为AR5自身通告。

AR5打标签传递给ASBR
[AR5]route-policy ASBR permit node 10
[AR5-route-policy]apply mpls-label 
[AR5-bgp]peer 10.1.45.4 route-policy ASBR export 

AR4向本端PE打标签传输
[AR4]route-policy PE permit node 10
[AR4-route-policy]if-match mpls-label     
[AR4-route-policy]apply mpls-label 
[AR4-bgp]peer 2.2.2.2 route-policy PE export 
[AR4-bgp]peer 2.2.2.2 label-route-capability
[AR4-GigabitEthernet0/0/1]mpls

[AR2-bgp]peer 4.4.4.4 label-route-capability

ASBR收到对端ASBR通告路由的端口使能MPLS后可以看给该路由打上发出标签: MPLS_VPN跨域 AR2收到带标签的100.7.7.7路由: MPLS_VPN跨域

::: warning AR7访问AR2时,在ASBR(AR4)上执行BGP标签替换LDP标签: MPLS_VPN跨域 AR2访问AR7时,在ASBR(AR5)上执行BGP标签替换LDP标签: MPLS_VPN跨域 :::


PE间BGP数据封装标签转发流程

MPLS_VPN跨域 AR7查看转发表,该路由走隧道转发,查看MPLS LSP表,BGP LSP封装标签1026,该路由为BGP路由,下一跳为5.5.5.5,走公网LDP隧道,查看MPLS LSP表,LDP封装标签1025,走GE0/0/0接口发出到AR6。 MPLS_VPN跨域 AR6收到LDP标签1025,替换为特殊标签3,弹出LDP标签,将BGP标签1026传到AR5。 MPLS_VPN跨域 MPLS_VPN跨域 AR5将该路由标签替换为1027,由于是BGP路由,查看IP路由表后根据下一跳查询转发表,TunnelID为0,根据出接口IP直接转发。 MPLS_VPN跨域 MPLS_VPN跨域 MPLS_VPN跨域 AR4收到BGP标签1027的路由后剥离BGP标签,由于是BGP路由,查看IP路由表看到该路由从IGP学到,不能根据下一跳查询转发表,查看该路由转发表,TunnelID不为0,需要走隧道转发,查看MPLS LSP表,AR4为该路由封装LDP公网标签1026。(即用该路由的BGP入标签替换为LDP出标签)

MPLS_VPN跨域 如上,AR2和AR7之间公网隧道建立完成。


AR2和AR7之间建立私网隧道MP-EBGP邻居关系
[AR2]bgp 100    
[AR2-bgp]peer 100.7.7.7 as-number 200    
[AR2-bgp]peer 100.7.7.7 connect-interface LoopBack 1
[AR2-bgp]peer 100.7.7.7 ebgp-max-hop 10        EBGP邻居多跳建立,需要更改跳数,否则TTL只有1
[AR2-bgp]undo peer 100.7.7.7 enable
[AR2-bgp]ipv4-family vpnv4    
[AR2-bgp-af-vpnv4]peer 100.7.7.7 enable 

[AR7]bgp 200
[AR7-bgp]peer 100.2.2.2 as-number 100    
[AR7-bgp]peer 100.2.2.2 connect-interface LoopBack 1
[AR7-bgp]peer 100.2.2.2 ebgp-max-hop 10
[AR7-bgp]undo peer 100.2.2.2 enable
[AR7-bgp]ipv4-family vpnv4 
[AR7-bgp-af-vpnv4]peer 100.2.2.2 enable 
站点内规划OSPF
[AR1]ospf router-id 10.1.1.1 
[AR1-ospf-1]area 0
[AR1-GigabitEthernet0/0/0]ospf enable area 0

[AR2]ospf router-id 10.2.2.2 vpn-instance A
[AR2-ospf-1]area 0
[AR2-GigabitEthernet0/0/0]ospf enable area 0

[AR7]ospf router-id 10.7.7.7 vpn-instance A
[AR7-ospf-1]area 0
[AR7-GigabitEthernet0/0/1]ospf enable area 0

[AR8]ospf router-id 10.8.8.8
[AR8-ospf-1]area 0    
[AR8-GigabitEthernet0/0/0]ospf enable  area 0

PE设备执行引入(策略OSPF_TO_BGP过滤)
[AR2-bgp]ipv4-family vpn-instance A
[AR2-bgp-A]import-route ospf 1 route-policy OSPF_TO_BGP
[AR2-ospf-1]import-route bgp 

[AR7-bgp]ipv4-family vpn-instance A
[AR7-bgp-A]import-route ospf 1 rou OSPF_TO_BGP 
[AR7-ospf-1]import-route bgp 

上述配置后,AR2可以直接通过MP-EBGP将路由信息通告到对端PE设备: MPLS_VPN跨域

MPLS_VPN跨域 两个站点的CE设备可以正常通信: MPLS_VPN跨域

CE间BGP数据封装标签转发流程

上述AR1和AR8的私网通信,路由会封装三层标签。 如AR8访问AR1: AR7上查看VPNv4路由表: MPLS_VPN跨域 AR7封装私网标签1027,下一跳10.2.2.2,查看转发表和IP路由表对应的路由条目的标签信息: MPLS_VPN跨域 通过如上的三层封装,数据从AR7的GE0/0/0接口发出。 AR6收到LDP标签1025后弹出(替换为标签3): MPLS_VPN跨域 AR5收到BGP标签1026后替换为1027: MPLS_VPN跨域 MPLS LSP表中没有转发接口,查看IP路由表该路由对应下一跳,查看转发表中下一跳TunnelID不为0,从对应接口转发: MPLS_VPN跨域 AR4收到BGP标签1027,将BGP LSP弹出(Out Lable为空)替换为LDP LSP(封装LDP标签1026): MPLS_VPN跨域 AR3收到LDP标签1026并将该标签弹出: MPLS_VPN跨域 AR2收到私网标签1027: MPLS_VPN跨域 没有出接口,查看VRF实例A,路由从GE0/0/0接口转发: MPLS_VPN跨域

MPLS_VPN跨域 ::: tip 只要设备收到的标签信息不是LDP,就需要进行递归。 设备路由需要从BGP递归到IGP。 :::


Option C1-RR实验:

::: tip 私网隧道完整需要PE之间建立EBGP邻居,如果一台PE与多台PE全部建立EBGP邻居,类似于BGP全互联,实现难度大,较好的方式是PE与本端RR建立MP-IBGP邻居,本端RR与对端RR建立MP-EBGP邻居。后续PE设备增加,只需要与本端RR建立MP-IBGP邻居即可。 :::

C1-RR配置思路:
   1.站点内PE和CE的VPN参数正常配置,接口绑定VPN实例
   2.各AS内IGP、LDP、BGP邻居关系
   3.ASBR之间建立EBGP邻居关系
      ASBR将本AS内以下路由宣告或引入到BGP中
        1.RR的路由信息:用于RR之间建立MP-EBGP邻居关系
        2.PE的路由信息:RR、PE学习到私网路由时,下一跳可达
     使用策略将BGP路由通告给EBGP邻居时,分配一个标签信息
     BGP在传递标签路由信息时,需要开启BGP相关的标签路由能力
     ASBR向RR设备转发路由时,需要使用策略重新分配一个标签信息

   4.本端PE和本端RR建立MP-IBGP邻居关系
     本端RR和对端RR建立MP-EBGP邻居关系
     RR设备需要关闭VPNv4路由的过滤策略
     对端PE传递的私网路由发送至本端PE时,下一跳保持不变

::: warning MP-IBGP发送自身宣告或引入的站点私网路由时会为其分配私网标签。

从MP-IBGP邻居收到的路由传递给MP-EBGP邻居时会为其重新分配一个私网标签,并将下一跳会改变为自身更新源地址。后续的转发平面数据信息的私网标签会在RR设备进行替换,即私网标签隧道在RR处断裂。 :::

MPLS_VPN跨域

站点配置
[AR2]ospf router-id 10.2.2.2 vpn-instance A
[AR2-ospf-1]area 0
[AR2-GigabitEthernet0/0/0]ospf enable area 0

[AR1]ospf router-id 10.1.1.1
[AR1-ospf-1]area 0    
[AR1-GigabitEthernet0/0/0]ospf enable area 0

[AR7]ospf router-id 10.7.7.7 vpn-instance A
[AR7-ospf-1]area 0
[AR7-GigabitEthernet0/0/1]ospf enable area 0

[AR8]ospf router-id 10.8.8.8
[AR8-ospf-1]area 0    
[AR8-GigabitEthernet0/0/0]ospf enable area 0
AS内IBGP配置
[AR2]bgp 100    
[AR2-bgp]peer 3.3.3.3 as-number 100    
[AR2-bgp]peer 3.3.3.3 connect-interface LoopBack 0

[AR3]bgp 100    
[AR3-bgp]peer 2.2.2.2 as-number 100    
[AR3-bgp]peer 2.2.2.2 connect-interface LoopBack 0
[AR3-bgp]peer 4.4.4.4 as-number 100    
[AR3-bgp]peer 4.4.4.4 connect-interface LoopBack 0    
[AR3-bgp]peer 2.2.2.2 reflect-client
[AR3-bgp]peer 4.4.4.4 reflect-client

[AR4]bgp 100    
[AR4-bgp]peer 3.3.3.3 as-number 100    
[AR4-bgp]peer 3.3.3.3 connect-interface LoopBack 0

[AR5]bgp 200    
[AR5-bgp]peer 6.6.6.6 as-number 200    
[AR5-bgp]peer 6.6.6.6 connect-interface LoopBack 0

[AR6]bgp 200    
[AR6-bgp]peer 5.5.5.5 as-number 200
[AR6-bgp]peer 5.5.5.5 connect-interface LoopBack 0    
[AR6-bgp]peer 7.7.7.7 as-number 200    
[AR6-bgp]peer 7.7.7.7 connect-interface LoopBack 0
[AR6-bgp]peer 5.5.5.5 reflect-client     
[AR6-bgp]peer 7.7.7.7 reflect-client 

[AR7]bgp 200    
[AR7-bgp]peer 6.6.6.6 as-number 200
[AR7-bgp]peer 6.6.6.6 connect-interface LoopBack 0

配置AS 100中PE和RR的路由传递到AS 200

AS间EBGP配置
[AR4]bgp 100    
[AR4-bgp]peer 10.1.45.5 as-number 200    
[AR4-bgp]peer 10.1.45.5 co gi 0/0/1

[AR5]bgp 200    
[AR5-bgp]peer 10.1.45.4 as-number 100
[AR5-bgp]peer 10.1.45.4 co gi 0/0/0

ASBR将本区域域内的PE和RR的路由宣告(或引入)BGP
[AR4-bgp]network 2.2.2.2 32
[AR4-bgp]network 3.3.3.3 32

使用策略将BGP路由通告给EBGP邻居时分配标签信息
[AR4]route-policy ABSR permit node 10    
[AR4-route-policy]apply mpls-label 
[AR4-bgp]peer 10.1.45.5 route-policy ABSR export

开启BGP相关的标签路由能力
[AR4-bgp]peer 10.1.45.5 label-route-capability       
[AR5-bgp]peer 10.1.45.4 label-route-capability 

AR5收到路由:(AS 100内PE和RR路由传递到AS 200的ASBR设备) MPLS_VPN跨域 AR5收到的路由可以通告给邻居AR6,但不携带标签: MPLS_VPN跨域

ASBR(AR5)将路由传递给RR(AR6)
[AR5-bgp]peer 6.6.6.6 label-route-capability      对邻居开启标签路由能力
[AR5]route-policy RR permit node 10
[AR5-route-policy]if-match mpls-label 
[AR5-route-policy]apply mpls-label 
[AR5-bgp]peer 6.6.6.6 route-policy RR export 

[AR6-bgp]peer 5.5.5.5 label-route-capability      对端配置相应标签路由能力
(AS 100内PE和RR路由传递到AS 200的RR设备)

执行上述配置后,由于AR5不具备标签处理能力,就不会向外通告收到的路由: MPLS_VPN跨域

[AR5-GigabitEthernet0/0/0]mpls      ASBR收到对端AS传来路由的接口使能MPLS

AR5接口使能标签处理功能后,可以转发带标签数据,并做标签替换: MPLS_VPN跨域 AR6可以收到路由: MPLS_VPN跨域 AR7能收到路由,但是不携带标签,原因是和AR6的BGP邻居没有使能标签路能力: MPLS_VPN跨域

RR和PE设备间开启标签路由能力
[AR6-bgp]peer 7.7.7.7 label-route-capability
[AR7-bgp]peer 6.6.6.6 label-route-capability
(如果没有开启,后续VPNv4路由传递会中断)

AR7收到带标签的数据: MPLS_VPN跨域

::: warning RR反射器反射路由时,下一跳不变: MPLS_VPN跨域

MPLS_VPN跨域 RR配置BGP next-hop-local命令会将下一跳改为RR自身,但是RR客户端收到的BGP路由就没有标签携带了。 ::: 此时AR6可以学习到AR2、AR3的路由: MPLS_VPN跨域

配置AS 200中PE和RR的路由传递到AS 100

[AR5]route-policy ASBR permit node 10
[AR5-route-policy]apply mpls-label     
[AR5-bgp]peer 10.1.45.4 route-policy ASBR export 

[AR4]route-policy RR permit node 10
[AR4-route-policy]if-match mpls-label 
[AR4-route-policy]apply mpls-label 
[AR4-bgp]peer 3.3.3.3 route-policy RR export 
[AR4-bgp]peer 3.3.3.3 label-route-capability 
[AR4-GigabitEthernet0/0/1]mpls

[AR3-bgp]peer 4.4.4.4 label-route-capability 

此时AR3可以学习到AR6、AR7的路由: MPLS_VPN跨域

将AR6、AR7的路由带标签传递到AR2
[AR3-bgp]peer 2.2.2.2 label-route-capability 
[AR2-bgp]peer 3.3.3.3 label-route-capability 

::: tip ASBR宣告的路由本应传递给IBGP和EBGP邻居,但如上拓扑,ASBR不会将自身宣告的本区域的路由传递给本区域的RR,原因是ASBR上做了RR的策略,route-policy默认拒绝所有,只允许携带MPLS标签的数据传给RR。(RR上本身就会有IGP的路由信息,无需通过ASBR学习BGP路由) :::

AS域内PE和RR建立MP-IBGP
[AR2-bgp]ipv4-family vpnv4
[AR2-bgp-af-vpnv4]peer 3.3.3.3 enable 

[AR3-bgp]ipv4-family vpnv4    
[AR3-bgp-af-vpnv4]peer 2.2.2.2 enable

[AR6-bgp]ipv4-family vpnv4    
[AR6-bgp-af-vpnv4]peer 7.7.7.7 enable 

[AR7-bgp]ipv4-family vpnv4    
[AR7-bgp-af-vpnv4]peer 6.6.6.6 enable  

::: warning 新建IP v4 VPNv4 BGP邻居关系时,IP v4的BGP邻居关系也会重新建立。 :::

AS域间RR建立MP-EBGP
[AR3-bgp]peer 6.6.6.6 as-number 200    
[AR3-bgp]peer 6.6.6.6 connect-interface LoopBack 0
[AR3-bgp]peer 6.6.6.6 ebgp-max-hop 10      EBGP邻居建立需要变为多跳
[AR3-bgp]undo peer 6.6.6.6 enable       关闭IP v4的EBGP邻居关系(会形成环路)
[AR3-bgp]ipv4-family vpnv4    
[AR3-bgp-af-vpnv4]peer 6.6.6.6 enable 

[AR6-bgp]peer 3.3.3.3 as-number 100    
[AR6-bgp]peer 3.3.3.3 connect-interface LoopBack 0
[AR6-bgp]peer 3.3.3.3 ebgp-max-hop 10
[AR6-bgp]undo peer 3.3.3.3 enable 
[AR6-bgp]ipv4-family vpnv4    
[AR6-bgp-af-vpnv4]peer 3.3.3.3 enable 
关闭VPNv4路由过滤策略
[AR3-bgp-af-vpnv4]undo policy vpn-target 
[AR6-bgp-af-vpnv4]undo policy vpn-target 
站点设备宣告路由
[AR1-LoopBack0]ip ad 100.1.1.1 32    
[AR1-LoopBack0]ospf enable area 0

[AR8-LoopBack0]ip ad 100.8.8.8 32    
[AR8-LoopBack0]ospf enable area 0 

[AR2]acl 2000    
[AR2-acl-basic-2000]rule 5 permit source 100.1.1.1 0
[AR2]route-policy OSPF_TO_BGP permit node 10
[AR2-route-policy]if-match acl 2000
[AR2-bgp]ipv4-family vpn-instance A
[AR2-bgp-A]import-route ospf 1 route-policy OSPF_TO_BGP 
[AR2-ospf-1]import-route bgp 

[AR7]acl 2000
[AR7-acl-basic-2000]rule 5 permit source 100.8.8.8 0
[AR7]route-policy OSPF_TO_BGP permit node 10
[AR7-route-policy]if-match acl 2000
[AR7-bgp]ipv4-family vpn-instance A    
[AR7-bgp-A]import-route ospf 1 route-policy OSPF_TO_BGP     
[AR7-ospf-1]import-route bgp  

如上配置后,站点路由从PE通过MP-IBGP传递给RR,通过MP-EBGP传递给对端RR,通过MP-IBGP传递到对端PE,再传到对方站点: MPLS_VPN跨域

MPLS_VPN跨域 如上出现tracert路由中断的情况(AR3上执行私网标签替换): MPLS_VPN跨域 如上LDP公网标签为3,发出后弹出LDP标签,即AR4收到后只有两层标签。 查看BGP VPNv4的路由表: MPLS_VPN跨域 如上,要保证私网隧道的连续,需要使得本端PE上对方站点路由对应的下一跳是对端PE。 ::: tip 私网隧道中断的原因是RR设备传递时替换标签,将下一跳改为自身。 :::

RR设备和本端PE建立MP-IBGP时,不改变下一跳
[AR3-bgp-af-vpnv4]peer 2.2.2.2 next-hop-invariable
[AR6-bgp-af-vpnv4]peer 7.7.7.7 next-hop-invariable

RR设备和对端RR建立MP-EBGP时,不改变下一跳
[AR3-bgp-af-vpnv4]peer 6.6.6.6 next-hop-invariable
[AR6-bgp-af-vpnv4]peer 3.3.3.3 next-hop-invariable

私网隧道从本端PE延伸到对端PE: MPLS_VPN跨域 ::: warning 如上图100.8.8.8的路由仍为最优的原因是下一跳7.7.7.7可以通过递归学习到下一跳: MPLS_VPN跨域

如果ASBR通告路由时没有通告本端PE的路由,则对端RR设备学习到的本端站点路由不可达:

[AR5-bgp]undo network 7.7.7.7 32

MPLS_VPN跨域 :::


Option C2实验

::: tip Option C1是BGP学习,要求路由和下一跳可达。 Option C2是IGP学习,路由可达即可。 :::

Option C2:在AS内只通过LDP LSP封装MP-BGP LSP,不使用BGP LSP。

默认情况LDP LSP只为32位IGP路由分配标签。


MPLS_VPN跨域 (ASBR从IGP学习到PE的路由引入到BGP中)

AS域内IGP(ISIS)关系已建立,建立AS域间BGP关系
[AR4-bgp]peer 10.1.45.5 as-number 200
[AR5-bgp]peer 10.1.45.4 as-number 100

使用BGP路由引入或者路由宣告的方式在ASBR之间传递路由并引入到IGP
[AR4-bgp]import-route isis 1 route-policy ISIS_to_BGP        AR2路由传递到AR7
[AR4-isis-1]import-route bgp route-policy BGP_TO_ISIS        AR7路由传递到AR2

[AR5-isis-1]import-route bgp route-policy BGP_TO_ISIS        AR2路由传递到AR7
[AR5-bgp]network 7.7.7.7 32               AR5将AR7的路由宣告到BGP

上述配置完成两端的PE设备可以学到对端PE的路由: MPLS_VPN跨域

MPLS_VPN跨域

配置站点之间的路由可达
[AR1]ospf 1 router-id 10.1.1.1
[AR1-ospf-1]area 0
[AR1-GigabitEthernet0/0/0]ospf enable area 0
[AR1-LoopBack1]ip ad 100.1.1.1 32
[AR1-LoopBack1]ospf enable area 0

[AR2]ospf 1 router-id 10.2.2.2 vpn-instance A
[AR2-ospf-1]area 0
[AR2-GigabitEthernet0/0/0]ospf enable area 0
[AR2-acl-basic-2000]ru 5 p s 100.1.1.1 0
[AR2]route-policy OSPF_TO_BGP p n 10
[AR2-route-policy]if acl 2000
[AR2-bgp]ipv4-family vpn-instance A    
[AR2-bgp-A]import-route ospf 1 route-policy OSPF_TO_BGP 
[AR2-ospf-1]import-route bgp       为了精准的引入过滤其他路由,也应该写策略

[AR7]ospf 1 router-id 10.7.7.7 vpn-instance A
[AR7-ospf-1]area 0
[AR7-GigabitEthernet0/0/1]ospf enable area 0
[AR7-acl-basic-2000]ru 5 p s 100.8.8.8 0
[AR7]route-policy OSPF_TO_BGP p n 10
[AR7-route-policy]if acl 2000
[AR7-bgp]ipv4-family vpn-instance A
[AR7-bgp-A]import-route ospf 1 route-policy OSPF_TO_BGP 
[AR7-ospf-1]import-route bgp 

[AR8]ospf 1 router-id 10.8.8.8
[AR8-ospf-1]area 0
[AR8-GigabitEthernet0/0/0]ospf enable area 0
[AR8-LoopBack1]ip ad 100.8.8.8 32
[AR8-LoopBack1]ospf enable area 0


AR2-AR7建立MP-EBGP邻居
[AR2]bgp 100
[AR2-bgp]peer 7.7.7.7 as-number 200    
[AR2-bgp]peer 7.7.7.7 connect-interface LoopBack 0
[AR2-bgp]peer 7.7.7.7 ebgp-max-hop 10
[AR2-bgp]undo peer 7.7.7.7 enable
[AR2-bgp]ipv4-family vpnv4    
[AR2-bgp-af-vpnv4]peer 7.7.7.7 enable

[AR7]bgp 200    
[AR7-bgp]peer 2.2.2.2 as-number 100
[AR7-bgp]peer 2.2.2.2 connect-interface LoopBack 0
[AR7-bgp]peer 2.2.2.2 ebgp-max-hop 10
[AR7-bgp]undo peer 2.2.2.2 enable 
[AR7-bgp]ipv4-family vpnv4    
[AR7-bgp-af-vpnv4]peer 2.2.2.2 enable 

上述配置完成后,站点内设备可以学习到对端站点的路由: MPLS_VPN跨域

MPLS_VPN跨域 站点间不能相互访问: MPLS_VPN跨域 ::: tip AR2的BGP路由迭代到下一跳公网路由不进入隧道,即私网隧道不能迭代到公网隧道,私网隧道用于直接转发。 ::: AR2的GE0/0/1口抓包: MPLS_VPN跨域 去往100.8.8.8的路由只封装了1026的私网标签,AR2认为私网数据可以直接发送到MP-EBGP邻居。实际该路由通过BGP学习,需要递归到IGP(下一跳): MPLS_VPN跨域 查看下一跳的转发表: MPLS_VPN跨域 下一跳的TunnelID为0,IP出接口直接转发到AR3,AR3上没有私网路由,无法转发。 ::: tip Option C2在AS内使用LDP公网隧道,在ASBR间使用BGP隧道。 :::

ASBR间使用BGP隧道
[AR4]route-policy ASBR permit node 10
[AR4-route-policy]apply mpls-label     
[AR4-bgp]peer 10.1.45.5 route-policy ASBR export 
[AR4-bgp]peer 10.1.45.5 label-route-capability 

[AR5]route-policy ASBR permit node 10
[AR5-route-policy]apply mpls-label 
[AR5-bgp]peer 10.1.45.4 route-policy ASBR export 
[AR5-bgp]peer 10.1.45.4 label-route-capability 

ASBR在传递本端PE路由时都加上了BGP标签: MPLS_VPN跨域

MPLS_VPN跨域 ASBR可以正常接收据对端传来的带标签的PE路由: MPLS_VPN跨域

MPLS_VPN跨域

::: warning MPLS_VPN跨域 如上,ASBR不为BGP学习来的32位主机路由分配标签。 :::

配置AS内为BGP学来的对端PE路由分配LDP标签
[AR4-mpls]lsp-trigger bgp-label-route      为BGP引入到IGP的路由生成标签
[AR4-GigabitEthernet0/0/1]mpls             引入BGP路由的接口需要具备标签处理能力(不需要开启LDP)

[AR5-mpls]lsp-trigger bgp-label-route 
[AR5-GigabitEthernet0/0/0]mpls 

::: tip
只有引入BGP路由的设备需要配置lsp-trigger bgp-label-route命令(谁引入谁打标签)。 ::: ASBR为BGP引入的对端PE路由分配标签后传递: MPLS_VPN跨域

MPLS_VPN跨域 本端PE访问对端PE时走隧道转发: MPLS_VPN跨域 访问对端站点时BGP路由迭代到7.7.7.7时走隧道访问: MPLS_VPN跨域 AR2的GE0/0/0接口抓包时封装两层标签: MPLS_VPN跨域


Option C2数据封装标签转发流程

::: tip 私网隧道中要对到对端的FEC实际经过的每一段链路分配标签,中途不会有特殊标签3。 ::: AR1访问AR8,AR2添加私网标签1026: MPLS_VPN跨域 BGP路由递归到IGP,AR2添加1026的公网LDP标签: MPLS_VPN跨域 AR3收到1026的LDP标签后替换为1027,走GE0/0/1转发: MPLS_VPN跨域 AR4收到1026的LDP区别,替换为1026的LDP标签: MPLS_VPN跨域 根据FEC,上图中LDP替换后的标签1026是BGP的出标签1026转换来的,即7.7.7.7的路由是BGP路由,LDP标签转换为BGP标签。
查看该BGP路由对应的下一跳: MPLS_VPN跨域 AR5将BGP标签1026弹出,封装LDP标签1025(BGP递归IGP较为容易): MPLS_VPN跨域 AR6收到1025的LDP标签后弹出: MPLS_VPN跨域 AR7收到私网标签1026后进入VRF A: MPLS_VPN跨域 MPLS_VPN跨域 MPLS_VPN跨域


Option C2-RR实验:

配置思路:
  1.站点内配置VPN实例参数,接口绑定VPN实例
  2.AS内IGP、LDP正常配置
  3.ASBR之间建立EBGP邻居关系
      ASBR通过宣告或引入的方式将本端相关的路由传递给对端AS
        1.宣告本端PE设备的路由:保证私网路由传递保持下一跳不变后路由仍可达
        2.宣告本端RR设备的路由:保证RR可以建立MP-EBGP邻居关系

  ASBR通过配置标签策略,使得路由传递携带标签信息
#
 route-policy ASBR permit node 10 
  apply mpls-label
#
 bgp 100
  peer 10.1.45.5 route-policy ASBR export
  peer 10.1.45.5 label-route-capability 

  ASBR通过引入的方式将BGP的路由引入到IGP中
[AR4]isis
[AR4-isis-1]import-route bgp 

  ASBR通过配置让LDP为引入到IGP中的bgp路由分配标签
[AR4]mpls
[AR4-mpls]lsp-trigger bgp-label-route 

  ASBR之间互联的接口需要开启MPLS,为了保证分配的标签可以正常传递
[AR4-GigabitEthernet0/0/1]mpls

4.本端PE和本端RR建立MP-IBGP邻居关系
 本端RR和对端RR建立MP-EBGP邻居关系
  *RR设备要求关闭 标签路由过滤策略
  *私网路由在经过MP-BGP邻居传递过程中保证下一跳不改变
      peer 6.6.6.6 next-hop-invariable 
站点配置
[AR1]ospf router-id 10.1.1.1
[AR1-ospf-1]area 0    
[AR1-GigabitEthernet0/0/0]ospf enable  area 0
[AR1-LoopBack1]ip ad 100.1.1.1 32    
[AR1-LoopBack1]ospf enable area 0

[AR2]ospf rou 10.2.2.2 vpn-instance A
[AR2-ospf-1]area 0
[AR2-GigabitEthernet0/0/0]ospf enable area 0
[AR2]acl 2000
[AR2-acl-basic-2000]ru 5 p s 100.1.1.1 0
[AR2]route-policy OSPF_TO_BGP p n 10
[AR2-route-policy]if acl 2000
[AR2-bgp]ipv4-family vpn-instance A    
[AR2-bgp-A]import-route ospf 1 route-policy OSPF_TO_BGP     
[AR2-ospf-1]import-route bgp 

[AR7]ospf router-id 10.7.7.7 vpn-instance A
[AR7-ospf-1]area 0
[AR7-GigabitEthernet0/0/1]ospf enable area 0
[AR7-GigabitEthernet0/0/1]acl 2000
[AR7-acl-basic-2000]ru 5 p s 100.8.8.8 0
[AR7]route-policy OSPF_TO_BGP p n 10
[AR7-route-policy]if acl 2000
[AR7-bgp]ipv4-family vpn-instance A
[AR7-bgp-A]import-route ospf 1 route-policy OSPF_TO_BGP 
[AR7-ospf-1]import-route bgp 

[AR8]ospf router-id 10.8.8.8
[AR8-ospf-1]area 0
[AR8-GigabitEthernet0/0/0]ospf enable area 0
[AR8-LoopBack1]ip ad 100.8.8.8 32    
[AR8-LoopBack1]ospf enable area 0
ASBR间配置
[AR4-bgp]peer 10.1.45.5 as-number 200
[AR4-bgp]network 2.2.2.2 32
[AR4]route-policy ASBR permit node 10
[AR4-route-policy]apply mpls-label     
[AR4-bgp]peer 10.1.45.5 route-policy ASBR export 
[AR4-bgp]peer 10.1.45.5 label-route-capability 
[AR4-GigabitEthernet0/0/1]mpls 
[AR4-mpls]lsp-trigger bgp-label-route 
[AR4-isis-1]import-route bgp 

[AR5-bgp]peer 10.1.45.4 as-number 100
[AR5-bgp]network 7.7.7.7 32
[AR5]route-policy ASBR permit node 10
[AR5-route-policy]apply mpls-label     
[AR5-bgp]peer 10.1.45.4 route-policy ASBR export 
[AR5-bgp]peer 10.1.45.4 label-route-capability 
[AR5-GigabitEthernet0/0/0]mpls
[AR5-mpls]lsp-trigger bgp-label-route
[AR5-isis-1]import-route bgp 
MP-IBGP配置
[AR2]bgp 100    
[AR2-bgp]peer 3.3.3.3 as-number 100    
[AR2-bgp]peer 3.3.3.3 connect-interface LoopBack 0
[AR2-bgp]undo peer 3.3.3.3 enable
[AR2-bgp]ipv4-family vpnv4    
[AR2-bgp-af-vpnv4]peer 3.3.3.3 enable 

[AR3]bgp 100
[AR3-bgp]peer 2.2.2.2 as-number 100    
[AR3-bgp]peer 2.2.2.2 connect-interface LoopBack 0
[AR3-bgp]undo peer 2.2.2.2 enable 
[AR3-bgp]ipv4-family vpnv4    
[AR3-bgp-af-vpnv4]peer 2.2.2.2 enable 
[AR3-bgp]peer 6.6.6.6 as-number 200            AR3需要有AR6的路由
[AR3-bgp]peer 6.6.6.6 connect-interface LoopBack 0
[AR3-bgp]peer 6.6.6.6 ebgp-max-hop 10
[AR3-bgp]undo peer 6.6.6.6 enable
[AR3-bgp]ipv4-family vpnv4    
[AR3-bgp-af-vpnv4]peer 6.6.6.6 enable 
[AR3-bgp-af-vpnv4]undo policy vpn-target        RR需要关闭过滤能力
[AR3-bgp-af-vpnv4]peer 2.2.2.2 reflect-client 

[AR6]bgp 200    
[AR6-bgp]peer 7.7.7.7 as-number 200    
[AR6-bgp]peer 7.7.7.7 connect-interface LoopBack 0
[AR6-bgp]undo peer 7.7.7.7 enable 
[AR6-bgp]ipv4-family vpnv4    
[AR6-bgp-af-vpnv4]peer 7.7.7.7 enable 
[AR6-bgp]peer 3.3.3.3 as-number 100    
[AR6-bgp]peer 3.3.3.3 connect-interface LoopBack 0
[AR6-bgp]peer 3.3.3.3 ebgp-max-hop 10
[AR6-bgp]undo peer 3.3.3.3 enable
[AR6-bgp]ipv4-family vpnv4    
[AR6-bgp-af-vpnv4]peer 3.3.3.3 enable 
[AR6-bgp-af-vpnv4]undo policy vpn-target
[AR6-bgp-af-vpnv4]peer 7.7.7.7 reflect-client  

[AR7]bgp 200
[AR7-bgp]peer 6.6.6.6 as-number 200    
[AR7-bgp]peer 6.6.6.6 connect-interface LoopBack 0    
[AR7-bgp]undo peer 6.6.6.6 enable 
[AR7-bgp]ipv4-family vpnv4    
[AR7-bgp-af-vpnv4]peer 6.6.6.6 enable 

MPLS_VPN跨域

MPLS_VPN跨域 如上AR3和AR6没有回显,原因是RR上替换了私网标签。 AR2学到100.8.8.8的下一跳是3.3.3.3: MPLS_VPN跨域 如上,RR设备收到私网数据后需要进行处理(封装标签、解封装标签),即RR进行公网标签替换。而RR只作为控制平面路由传递,数据平面走公网传递,RR不应处理私网数据。即需要配置下一跳不改变,即AR2学习到100.8.8.8的下一跳是AR7。 MPLS_VPN跨域

MPLS_VPN跨域

配置路由传递时下一跳不改变
AR7将100.8.8.8发送到AR2:
[AR6-bgp-af-vpnv4]peer 3.3.3.3 next-hop-invariable         AR6发送到AR3时下一跳不改变
[AR3-bgp-af-vpnv4]peer 2.2.2.2 next-hop-invariable         AR3传递到AR2时下一跳不改变

AR2将100.1.1.1发送到AR7:
[AR3-bgp-af-vpnv4]peer 6.6.6.6 next-hop-invariable         AR3发送到AR6时下一跳不改变
[AR6-bgp-af-vpnv4]peer 7.7.7.7 next-hop-invariable         AR6发送到AR7时下一跳不改变

MPLS_VPN跨域 ::: tip Option C-RR的独有内容: 保证本端PE和对端PE间私网隧道不中断,需要保证本端PE上对端站点路由的下一跳是对端PE。 :::


MPLS_VPN跨域


Option C1的方案部署hub-spoke模型

MPLS_VPN跨域

配置思路:
  1.站点内VPN实例参数配置,接口实例绑定
  2.AS内IGP、LDP、BGP邻居关系相互建立
  3.ASBR之间建立EBGP邻居关系后
     ASBR将本端相关的IGP路由宣告或引入到BGP中
     ASBR使用标签策略为传递的路由分配一个标签
     ASBR之间需要使能标签路由通告的能力
     ASBR向本端RR传递路由时重新分配一个标签
     ASBR之间互联的接口需要开启MPLS
  4.本端PE和本端RR建立MP-IBGP邻居
    本端RR和对端RR建立MP-EBGP邻居
    RR需要关闭标签过滤策略
    MP-BGP邻居在传递VPNv4路由时,需要保持下一跳不改变
总部站点内通信
[AR1-GigabitEthernet0/0/0.1]dot1q termination vid 1
[AR1-GigabitEthernet0/0/0.1]arp broadcast enable 
[AR1-GigabitEthernet0/0/0.1]ip ad 10.1.12.1 24    
[AR1-GigabitEthernet0/0/0.2]dot1q termination vid 2
[AR1-GigabitEthernet0/0/0.2]arp broadcast enable 
[AR1-GigabitEthernet0/0/0.2]ip ad 10.1.21.1 24    
[AR1-LoopBack1]ip ad 100.1.1.1 32

[AR2]ip vpn-instance VPN_IN
[AR2-vpn-instance-VPN_IN]route-distinguisher 100:1
[AR2-vpn-instance-VPN_IN-af-ipv4]vpn-target 1:1 import-extcommunity 
[AR2-GigabitEthernet0/0/0.1]ip binding vpn-instance VPN_IN
[AR2-GigabitEthernet0/0/0.1]ip ad 10.1.12.2 24    
[AR2-GigabitEthernet0/0/0.1]dot1q termination vid 1    
[AR2-GigabitEthernet0/0/0.1]arp broadcast enable 
[AR2]ip vpn-instance VPN_OUT
[AR2-vpn-instance-VPN_OUT]route-distinguisher 200:1
[AR2-vpn-instance-VPN_OUT-af-ipv4]vpn-target 2:2 export-extcommunity 
[AR2-GigabitEthernet0/0/0.2]ip binding vpn-instance VPN_OUT
[AR2-GigabitEthernet0/0/0.2]dot1q termination vid 2    
[AR2-GigabitEthernet0/0/0.2]arp broadcast enable 
[AR2-GigabitEthernet0/0/0.2]ip ad 10.1.21.2 24

站点内BGP配置
[AR1]bgp 65001
[AR1-bgp]peer 10.1.12.2 as-number 100    
[AR1-bgp]peer 10.1.21.2 as-number 100
[AR1-bgp]network 100.1.1.1 32

[AR2]bgp 100
[AR2-bgp]ipv4-family vpn-instance VPN_IN
[AR2-bgp-VPN_IN]peer 10.1.12.1 as-number 65001
[AR2-bgp]ipv4-family vpn-instance VPN_OUT
[AR2-bgp-VPN_OUT]peer 10.1.21.1 as-number 65001

站点内OSPF配置
[AR1]ospf router-id 10.1.1.1
[AR1-GigabitEthernet0/0/0.1]ospf enable area 0
[AR1-GigabitEthernet0/0/0.2]ospf enable area 0
[AR1-LoopBack1]ospf enable area 0

[AR2]ospf router-id 10.2.2.2 vpn-instance VPN_IN
[AR2-ospf-1]area 0    
[AR2-GigabitEthernet0/0/0.1]ospf enable 1 area 0
[AR2]ospf 2 router-id 10.2.2.2 vpn-instance VPN_OUT
[AR2-ospf-2]area 0
[AR2-GigabitEthernet0/0/0.2]ospf enable 2 area 0
子接口配置完成后建议验证接口连通性

总部站点内使用BGP通信。

分部站点内通信
[AR7]ip vpn-instance VPN_A
[AR7-vpn-instance-VPN_A]route-distinguisher 100:2    
[AR7-vpn-instance-VPN_A-af-ipv4]vpn-target 2:2 import-extcommunity     
[AR7-vpn-instance-VPN_A-af-ipv4]vpn-target 1:1 export-extcommunity 
[AR7]ospf router-id 10.7.7.7 vpn-instance VPN_A
[AR7-ospf-1]area 0
[AR7-GigabitEthernet0/0/1]ip binding vpn-instance VPN_A
[AR7-GigabitEthernet0/0/1]ip ad 10.1.79.7 24    
[AR7-GigabitEthernet0/0/1]ospf enable  area 0

[AR9]ospf router-id 10.9.9.9
[AR9-ospf-1]area 0
[AR9-GigabitEthernet0/0/0]ip ad 10.1.79.9 24
[AR9-GigabitEthernet0/0/0]ospf enable area 0
[AR9-LoopBack1]ip ad 100.9.9.9 32
[AR9-LoopBack1]ospf enable area 0

[AR8]ip vpn-instance VPN_B
[AR8-vpn-instance-VPN_B]route-distinguisher 100:3    
[AR8-vpn-instance-VPN_B-af-ipv4]vpn-target 2:2 import-extcommunity     
[AR8-vpn-instance-VPN_B-af-ipv4]vpn-target 1:1 export-extcommunity 
[AR8]ospf router-id 10.8.8.8 vpn-instance VPN_B
[AR8-ospf-1]area 0
[AR8-GigabitEthernet0/0/1]ip binding vpn-instance VPN_B
[AR8-GigabitEthernet0/0/1]ip ad 10.1.108.8 24    
[AR8-GigabitEthernet0/0/1]ospf enable  area 0

[AR10]ospf router-id 10.10.10.10
[AR10-ospf-1]area 0
[AR10-GigabitEthernet0/0/0]ip ad 10.1.108.10 24    
[AR10-GigabitEthernet0/0/0]ospf enable area 0
[AR10-LoopBack1]ip ad 100.10.10.10 32
[AR10-LoopBack1]ospf enable area 0
AS内配置
[AR2-isis-1]network-entity 49.0001.0000.0000.0002.00
[AR2-isis-1]is-level level-2    
[AR2-isis-1]cost-style wide
[AR2]mpls lsr-id 2.2.2.2
[AR2]mpls
[AR2]mpls ldp
[AR2-GigabitEthernet0/0/1]ip ad 10.1.23.2 24
[AR2-GigabitEthernet0/0/1]isis enable      
[AR2-GigabitEthernet0/0/1]mpls     
[AR2-GigabitEthernet0/0/1]mpls ldp 
[AR2-LoopBack0]ip ad 2.2.2.2 32
[AR2-LoopBack0]isis enable  
[AR2]bgp 100    
[AR2-bgp]peer 3.3.3.3 as-number 100    
[AR2-bgp]peer 3.3.3.3 connect-interface LoopBack 0

[AR3-isis-1]network-entity 49.0001.0000.0000.0003.00
[AR3-isis-1]is-level level-2    
[AR3-isis-1]cost-style wide    
[AR3]mpls lsr-id 3.3.3.3    
[AR3]mpls 
[AR3]mpls ldp
[AR3-GigabitEthernet0/0/0]ip ad 10.1.23.3 24    
[AR3-GigabitEthernet0/0/0]isis enable 
[AR3-GigabitEthernet0/0/0]mpls    
[AR3-GigabitEthernet0/0/0]mpls ldp 
[AR3-GigabitEthernet0/0/1]ip ad 10.1.34.3 24    
[AR3-GigabitEthernet0/0/1]isis enable 
[AR3-GigabitEthernet0/0/1]mpls    
[AR3-GigabitEthernet0/0/1]mpls ldp 
[AR3-LoopBack0]ip ad 3.3.3.3 32    
[AR3-LoopBack0]isis enable 
[AR3]bgp 100    
[AR3-bgp]peer 2.2.2.2 as-number 100    
[AR3-bgp]peer 2.2.2.2 connect-interface LoopBack 0
[AR3-bgp]peer 2.2.2.2 reflect-client     
[AR3-bgp]peer 4.4.4.4 as-number 100    
[AR3-bgp]peer 4.4.4.4 connect-interface LoopBack 0    
[AR3-bgp]peer 4.4.4.4 reflect-client 

[AR4-isis-1]network-entity 49.0001.0000.0000.0004.00
[AR4-isis-1]is-level level-2    
[AR4-isis-1]cost-style wide    
[AR4]mpls lsr-id 4.4.4.4
[AR4]mpls         
[AR4]mpls ldp 
[AR4-GigabitEthernet0/0/0]ip ad 10.1.34.4 24    
[AR4-GigabitEthernet0/0/0]isis enable 
[AR4-GigabitEthernet0/0/0]mpls    
[AR4-GigabitEthernet0/0/0]mpls ldp 
[AR4-LoopBack0]ip ad 4.4.4.4 32    
[AR4-LoopBack0]isis enable 
[AR4-GigabitEthernet0/0/1]ip ad 10.1.45.4 24
[AR4]bgp 100    
[AR4-bgp]peer 3.3.3.3 as-number 100    
[AR4-bgp]peer 3.3.3.3 connect-interface LoopBack 0
[AR4-bgp]peer 10.1.45.5 as-number 200

[AR5-isis-1]network-entity 49.0001.0000.0000.0005.00
[AR5-isis-1]is-level level-2    
[AR5-isis-1]cost-style wide
[AR5]mpls lsr-id 5.5.5.5
[AR5]mpls 
[AR5]mpls ldp 
[AR5-GigabitEthernet0/0/0]ip ad 10.1.45.5 24
[AR5-GigabitEthernet0/0/1]ip ad 10.1.56.5 24    
[AR5-GigabitEthernet0/0/1]isis enable 
[AR5-GigabitEthernet0/0/1]mpls
[AR5-GigabitEthernet0/0/1]mpls ldp
[AR5-LoopBack0]ip ad 5.5.5.5 32
[AR5-LoopBack0]isis enable 
[AR5]bgp 200    
[AR5-bgp]peer 10.1.45.4 as-number 100
[AR5-bgp]peer 6.6.6.6 as-number 200    
[AR5-bgp]peer 6.6.6.6 connect-interface LoopBack 0

[AR6-isis-1]network-entity 49.0001.0000.0000.0006.00
[AR6-isis-1]is-level level-2    
[AR6-isis-1]cost-style wide
[AR6]mpls lsr-id 6.6.6.6
[AR6]mpls
[AR6]mpls ldp 
[AR6-GigabitEthernet0/0/0]ip ad 10.1.56.6 24    
[AR6-GigabitEthernet0/0/0]isis enable 
[AR6-GigabitEthernet0/0/0]mpls 
[AR6-GigabitEthernet0/0/0]mpls ldp
[AR6-GigabitEthernet0/0/1]ip ad 10.1.67.6 24    
[AR6-GigabitEthernet0/0/1]isis enable     
[AR6-GigabitEthernet0/0/1]mpls 
[AR6-GigabitEthernet0/0/1]mpls ldp 
[AR6-GigabitEthernet0/0/2]ip ad 10.1.68.6 24    
[AR6-GigabitEthernet0/0/2]isis enable 
[AR6-GigabitEthernet0/0/2]mpls    
[AR6-GigabitEthernet0/0/2]mpls ldp 
[AR6-LoopBack0]ip ad 6.6.6.6 32    
[AR6-LoopBack0]isis enable
[AR6]bgp 200
[AR6-bgp]peer 5.5.5.5 as-number 200
[AR6-bgp]peer 5.5.5.5 connect-interface LoopBack 0
[AR6-bgp]peer 5.5.5.5 reflect-client 
[AR6-bgp]peer 7.7.7.7 as-number 200    
[AR6-bgp]peer 7.7.7.7 connect-interface LoopBack 0
[AR6-bgp]peer 7.7.7.7 reflect-client 
[AR6-bgp]peer 8.8.8.8 as-number 200    
[AR6-bgp]peer 8.8.8.8 connect-interface LoopBack 0
[AR6-bgp]peer 8.8.8.8 reflect-client 

[AR7-isis-1]network-entity 49.0001.0000.0000.0007.00
[AR7-isis-1]is-level level-2
[AR7-isis-1]cost-style wide
[AR7]mpls lsr-id 7.7.7.7
[AR7]mpls
[AR7]mpls ldp
[AR7-GigabitEthernet0/0/0]ip ad 10.1.67.7 24    
[AR7-GigabitEthernet0/0/0]isis enable 
[AR7-GigabitEthernet0/0/0]mpls    
[AR7-GigabitEthernet0/0/0]mpls ldp 
[AR7-LoopBack0]ip ad 7.7.7.7 32
[AR7-LoopBack0]isis enable 
[AR7]bgp 200    
[AR7-bgp]peer 6.6.6.6 as-number 200    
[AR7-bgp]peer 6.6.6.6 connect-interface LoopBack 0

[AR8-isis-1]network-entity 49.0001.0000.0000.0008.00
[AR8-isis-1]is-level level-2    
[AR8-isis-1]cost-style wide    
[AR8]mpls lsr-id 8.8.8.8
[AR8]mpls 
[AR8]mpls ldp
[AR8-GigabitEthernet0/0/0]ip ad 10.1.68.8 24    
[AR8-GigabitEthernet0/0/0]isis enable 
[AR8-GigabitEthernet0/0/0]mpls    
[AR8-GigabitEthernet0/0/0]mpls ldp 
[AR8-LoopBack0]ip ad 8.8.8.8 32
[AR8-LoopBack0]isis enable 
[AR8]bgp 200    
[AR8-bgp]peer 6.6.6.6 as-number 200
[AR8-bgp]peer 6.6.6.6 connect-interface LoopBack 0
AS域间配置
[AR4]bgp 100
[AR4-bgp]network 2.2.2.2 32
[AR4-bgp]network 3.3.3.3 32    
[AR4]route-policy ASBR permit node 10
[AR4-route-policy]apply mpls-label 
[AR4-bgp]peer 10.1.45.5 route-policy ASBR export 
[AR4-bgp]peer 10.1.45.5 label-route-capability 
[AR4]route-policy RR permit node 10
[AR4-route-policy]if-match mpls-label     
[AR4-route-policy]apply mpls-label 
[AR4-bgp]peer 3.3.3.3 route-policy RR export     
[AR4-bgp]peer 3.3.3.3 label-route-capability 
[AR4-GigabitEthernet0/0/1]mpls

[AR5]bgp 200
[AR5-bgp]network 6.6.6.6 32
[AR5-bgp]network 7.7.7.7 32
[AR5-bgp]network 8.8.8.8 32
[AR5]route-policy ASBR permit node 10
[AR5-route-policy]apply mpls
[AR5-bgp]peer 10.1.45.4 route-policy ASBR export
[AR5-bgp]peer 10.1.45.4 label-route-capability
[AR5]route-policy RR permit node 10
[AR5-route-policy]if-match mpls-label 
[AR5-route-policy]apply mpls-label 
[AR5-bgp]peer 6.6.6.6 route-policy RR export 
[AR5-bgp]peer 6.6.6.6 label-route-capability 
[AR5-GigabitEthernet0/0/0]mpls

AS域内所有接收策略标签的邻居都要使能标签路由能力
[AR3-bgp]peer 4.4.4.4 label-route-capability    
[AR3-bgp]peer 2.2.2.2 label-route-capability 

[AR2-bgp]peer 3.3.3.3 label-route-capability 

[AR6-bgp]peer 5.5.5.5 label-route-capability 
[AR6-bgp]peer 7.7.7.7 label-route-capability    
[AR6-bgp]peer 8.8.8.8 label-route-capability 

[AR7-bgp]peer 6.6.6.6 label-route-capability 

[AR8-bgp]peer 6.6.6.6 label-route-capability

总部PE设备学习到对端的分支的LSP(BGP公网隧道搭建完成): MPLS_VPN跨域

私网隧道搭建
MP-IBGP    
[AR2-bgp-af-vpnv4]peer 3.3.3.3 enable

[AR3-bgp-af-vpnv4]peer 2.2.2.2 enable 
[AR3-bgp-af-vpnv4]peer 2.2.2.2 reflect-client 
[AR3-bgp-af-vpnv4]undo policy vpn-target  

[AR6-bgp-af-vpnv4]peer 7.7.7.7 enable 
[AR6-bgp-af-vpnv4]peer 7.7.7.7 reflect-client     
[AR6-bgp-af-vpnv4]peer 8.8.8.8 enable 
[AR6-bgp-af-vpnv4]peer 8.8.8.8 reflect-client
[AR6-bgp-af-vpnv4]undo policy vpn-target 

[AR7-bgp-af-vpnv4]peer 6.6.6.6 enable 

[AR8-bgp-af-vpnv4]peer 6.6.6.6 enable 

MP-EBGP
[AR3-bgp]peer 6.6.6.6 as-number 200
[AR3-bgp]peer 6.6.6.6 connect-interface LoopBack 0
[AR3-bgp]peer 6.6.6.6 ebgp-max-hop 10
[AR3-bgp]ipv4-family vpnv4        
[AR3-bgp]undo peer 6.6.6.6 enable 
[AR3-bgp-af-vpnv4]peer 6.6.6.6 enable 

[AR6-bgp]peer 3.3.3.3 as-number 100    
[AR6-bgp]peer 3.3.3.3 connect-interface LoopBack 0
[AR6-bgp]peer 3.3.3.3 ebgp-max-hop 10
[AR6-bgp]undo peer 3.3.3.3 enable     
[AR6-bgp]ipv4-family vpnv4    
[AR6-bgp-af-vpnv4]peer 3.3.3.3 enable 

总部路由传递到对端RR: MPLS_VPN跨域 PE的VPNv4路由表只有RD值为200:1的VPN实例传来的路由: MPLS_VPN跨域 原因是没有ERT的路由不被站点接收。 ::: warning IRT定义了哪些VPN路由可以被接收到本地VPN实例中。 当一个VPN路由的ERT与本地VPN实例的IRT匹配时,该路由会被接受并导入到本地VPN实例中。

ERT定义了本地VPN实例中的路由可以传递给哪些其他VPN实例。 如果一个VPN实例只有IRT而没有ERT,那么它无法将路由传递给其他VPN实例,因为其他VPN实例无法识别和接收这些路由。 :::

[AR7-ospf-1]import-route bgp 
[AR7-bgp-VPN_A]import-route ospf 1 route-policy OSPF_TO_BGP 

总部站点AR1可以接收到分支路由: MPLS_VPN跨域

[AR8-ospf-1]import-route bgp 
[AR8-bgp-VPN_B]import-route ospf 1 route-policy OSPF_TO_BGP

分支可以接收到总部路由: MPLS_VPN跨域 ::: tip AR2的VPN_IN表有IRT,可以接收对方VPN实例发来的路由,VPN_OUT表只有ERT值,不能与ERT匹配: MPLS_VPN跨域 :::

配置私网隧道下一跳不改变,保证私网隧道完整
总部访问分支
[AR3-bgp]ipv4-family vpnv4
[AR3-bgp-af-vpnv4]peer 2.2.2.2 next-hop-invariable      AR3把路由传递给AR2时下一跳不改变
[AR6-bgp]ipv4-family vpnv4
[AR6-bgp-af-vpnv4]peer 3.3.3.3 next-hop-invariable      AR6把路由传递给AR3时下一跳不改变

分支访问总部
[AR6-bgp]ipv4-family vpnv4    
[AR6-bgp-af-vpnv4]peer 7.7.7.7 next-hop-invariable    
[AR6-bgp-af-vpnv4]peer 8.8.8.8 next-hop-invariable

[AR3-bgp]ipv4-family vpnv4    
[AR3-bgp-af-vpnv4]peer 6.6.6.6 next-hop-invariable

MPLS_VPN跨域 如上的更改保证了总部站点tracert分支过程中每一跳都有回显。

VPN_OUT表中没有分支的路由发出: MPLS_VPN跨域 原因是路由从AS 100域内发出,通过VPN_OUT回到AS 100域内时被防环策略过滤: MPLS_VPN跨域

[AR2-bgp-VPN_OUT]peer 10.1.21.1 allow-as-loop       允许出现一次AS号重复(后面可以配置允许重复次数,默认为1)

AR2的VPN_OUT表中出现总部站点发出的分支路由: MPLS_VPN跨域 VPN_OUT发出的分支路由到达AS 200后也会出现防环。

[AR6-bgp-af-vpnv4]peer 3.3.3.3 allow-as-loop       VPN_OUT发出的是VPNv4路由

分支的PE可以正常接收总部VPN_OUT(ERT值为200:1)发来的路由: MPLS_VPN跨域

MPLS_VPN跨域 分支之间可以正常访问通信: MPLS_VPN跨域

MPLS_VPN跨域

MPLS_VPN跨域 ::: tip

[AR9]tracert -v -a 100.9.9.9 100.10.10.10          查看每一跳携带的标签

:::

::: warning 以上拓扑如果总部使用OSPF,分支使用BGP,需要注意如下问题:

  • AR2发来(VPN实例接收)的路由打上DN bit,AR1传回AR2时需要配置忽略DN bit。(OSPF站点双归属)
  • 总部将分支的路由发回到对端PE(对端RR反射)时是OSPF路由,PE学习到OSPF和BGP的路由,优选OSPF路由(IGP),不引入分支站点的路由后,PE发给总部的该路由被撤销,总部下发的OSPF消失,PE又会引入BGP路由,导致路由震荡。(可以将中间的两个A当成超级骨干区域) :::

::: tip 站点协议规划时,一般是总部使用BGP,分支使用BGP或者OSPF。 :::

点赞
收藏
评论区
推荐文章

暂无数据

似梦清欢
似梦清欢
Lv1
学海无涯
文章
17
粉丝
17
获赞
1