当两个不同AS的CE之间相互通信时,需要使用跨域VPN技术。 MPLS VPN跨域产生的问题:
- AS之间不会运行LDP协议,因此AS之间无法建立外层隧道。
- PE之间没有运行IGP协议,缺省情况下无法建立BGP邻居关系,进而无法直接传递VPNv4路由。
三种解决思路:
- OptionA:ASBR之间交换IPv4路由,采用IPv4数据包转发数据。
- OptionB:ASBR之间交换VPNv4路由,采用携带一层MPLS标签的方式转发数据包。
- 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路由,配置较为复杂。
基础实验拓扑配置:
[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: 两个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设备做配置:
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通告路由: 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。
出现如上报错时需要在接口undo ospf使能。 ::: OSPF引入VPN实例路由(AR4)后,被VPN实例的OSPF接收(AR5),出现DN bit置位: 出于防环考虑,DN bit置位的LSA不会计算写入路由表:
[AR5-ospf-1]vpn-instance-capability simple 减弱VPN实例处理机制,忽略DN bit检查
至此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
如上,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路由(策略过滤其他路由): IBGP间路由正常传递到AR7,AR7上VPN实例配置RT值相互匹配,可以接收VPNv4路由并转换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通告路由:
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通告路由: 两台设备可以跨域通信:
::: 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控制平面: 上图中NH表示下一跳。 VPN-Option A转发平面:
Option B:
Option B实验:
配置思路:
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:
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通告的路由
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:
[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通告路由:
Option B控制平面路由传递过程
如上旁挂式RR,AS内的PE和ASBR设备只与RR设备建立MP-BGP邻居关系,RR只负责控制平面的VPNv4路由传递,数据转发时流量不经过RR,PE和ASBR之间无需建立BGP邻居。
::: tip VPN跨域场景下,建议部署独立的RR设备,只负责路由传递,不转发流量。 ::: AR2上MPLS LSP表: AR2转发100.1.1.1: AR2发出标签为1026,AR3上接收标签应为1026: AR3把该路由反射给AR4,AR4上该路由多出一个发出标签: ::: warning MP-EBGP邻居传递路由时需要替换私网标签值。即ASBR之间使用MP-EBGP传递VPNv4路由时,会为其重新分配一个标签。 MP-IBGP邻居传递路由时,由于LDP存在,不需要替换私网标签。 :::
与Option A相比,ASBR之间传递私网路由IP时没有标签值,不够安全,Option B为其封装私网标签。 ::: tip Option B在数据传输的任意一段都要存在标签进行数据封装。 MP-IBGP邻居只对自身始发的路由分配标签,MP-EBGP邻居对经过自身的所有路由都分配标签。 ::: AR5收到后同样会封装私网标签: AR6收到该路由: AR7收到AR6反射来的路由:
::: 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: 原因是AR4没有标签分配处理的能力,无法传递标签信息。
[AR4-Gigabitethernet0/0/1]mpls AR4对应接收100.8.8.8的接口使能MPLS
开启标签处理能力后,AR4具备转发能力:
[AR2-ospf-1]import-route bgp
AR1收到AR8通告路由:
Option B数据平面(转发平面)路由传递过程
如上,私网标签隧道(绿色)在AS间断开,LDP仅在AS内存在封装公网标签。 如上,AR1和AR8可以正常访问,但tracert时第3、4跳没有回显。转发平面查看FIB表: AR2私网标签:
AR2公网标签: AR3公网标签: AR3发出时弹出公网标签,查看私网标签: MPLS LSP表中没有给出下一跳,该路由从BGP学到,查看BGP路由表: 查看AR4的FIB: 如上,路由转发不需要走隧道时,按照出接口转发。 AR5收到后做标签替换,私网标签1027替换为1026: MPLS LSP表中没有给出下一跳,该路由从BGP学到,查看BGP路由表: 查看AR5的FIB: 如上,该路由走隧道转发,查看7.7.7.7对应公网标签信息: 如上,封装公网标签1025。 AR6收到该路由后,公网标签替换为3: AR7收到私网标签: AR7从VPN实例A中查找: 如上,通过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公网隧道转发。 如上图,BGP LSP公网标签隧道用于在ASBR之间封装私网隧道。 由于LDP和BGP LSP之间不能相互替换,就在PE间(AR4-AR7)直接封装三层隧道,在ASBR上无需替换,可以直接剥离公网LDP标签,直接根据内层BGP LSP隧道进行转发。
::: tip Option C1方案的优势:
- 可以建立一条端到端的私网隧道。
- 所有的公网设备(除PE和RR设备外)不会接收、处理私网路由信息。
- ASBR之间使用公网标签封装私网标签,数据信息更加安全。
缺点:端到端维护一条完整的LSP代价较大,需要维护一条路由的标签封装,站点较多时代价较大。 :::
Option C1实验:
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:
按照封装流程分析,AR2 100.2.2.2数据包可以带标签访问AR7 100.7.7.7,但在AR3上数据包会被丢弃: 查看AR2转发表: 如上AR2-AR7通过IP转发,不进入隧道。AR3上没有对应路由: 直接通过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 两端相互协商,都需要使能能力
AR4首先在IBGP学到该路由,然后可以通过EBGP通告给邻居: ::: 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:
[AR5-bgp]undo peer 7.7.7.7 next-hop-local
如上,标签信息改变后,下一跳会自动改变,EBGP邻居学到路由传递给IBGP邻居时,无需配置将下一跳变为自身的命令。
如上配置后,AR7可以通过标签封装正常访问AR2: 访问该IP需要打标签1026: 该路由通过BGP学到,需要递归到IGP,下一跳5.5.5.5: 下一跳5.5.5.5对应封装标签1025,从GE0/0/0发出: 即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 需要等待配置生效
如上,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后可以看给该路由打上发出标签: AR2收到带标签的100.7.7.7路由:
::: warning AR7访问AR2时,在ASBR(AR4)上执行BGP标签替换LDP标签: AR2访问AR7时,在ASBR(AR5)上执行BGP标签替换LDP标签: :::
PE间BGP数据封装标签转发流程
AR7查看转发表,该路由走隧道转发,查看MPLS LSP表,BGP LSP封装标签1026,该路由为BGP路由,下一跳为5.5.5.5,走公网LDP隧道,查看MPLS LSP表,LDP封装标签1025,走GE0/0/0接口发出到AR6。 AR6收到LDP标签1025,替换为特殊标签3,弹出LDP标签,将BGP标签1026传到AR5。 AR5将该路由标签替换为1027,由于是BGP路由,查看IP路由表后根据下一跳查询转发表,TunnelID为0,根据出接口IP直接转发。 AR4收到BGP标签1027的路由后剥离BGP标签,由于是BGP路由,查看IP路由表看到该路由从IGP学到,不能根据下一跳查询转发表,查看该路由转发表,TunnelID不为0,需要走隧道转发,查看MPLS LSP表,AR4为该路由封装LDP公网标签1026。(即用该路由的BGP入标签替换为LDP出标签)
如上,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设备:
两个站点的CE设备可以正常通信:
CE间BGP数据封装标签转发流程
上述AR1和AR8的私网通信,路由会封装三层标签。 如AR8访问AR1: AR7上查看VPNv4路由表: AR7封装私网标签1027,下一跳10.2.2.2,查看转发表和IP路由表对应的路由条目的标签信息: 通过如上的三层封装,数据从AR7的GE0/0/0接口发出。 AR6收到LDP标签1025后弹出(替换为标签3): AR5收到BGP标签1026后替换为1027: MPLS LSP表中没有转发接口,查看IP路由表该路由对应下一跳,查看转发表中下一跳TunnelID不为0,从对应接口转发: AR4收到BGP标签1027,将BGP LSP弹出(Out Lable为空)替换为LDP LSP(封装LDP标签1026): AR3收到LDP标签1026并将该标签弹出: AR2收到私网标签1027: 没有出接口,查看VRF实例A,路由从GE0/0/0接口转发:
::: 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处断裂。 :::
站点配置
[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设备) AR5收到的路由可以通告给邻居AR6,但不携带标签:
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不具备标签处理能力,就不会向外通告收到的路由:
[AR5-GigabitEthernet0/0/0]mpls ASBR收到对端AS传来路由的接口使能MPLS
AR5接口使能标签处理功能后,可以转发带标签数据,并做标签替换: AR6可以收到路由: AR7能收到路由,但是不携带标签,原因是和AR6的BGP邻居没有使能标签路能力:
RR和PE设备间开启标签路由能力
[AR6-bgp]peer 7.7.7.7 label-route-capability
[AR7-bgp]peer 6.6.6.6 label-route-capability
(如果没有开启,后续VPNv4路由传递会中断)
AR7收到带标签的数据:
::: warning RR反射器反射路由时,下一跳不变:
RR配置BGP next-hop-local命令会将下一跳改为RR自身,但是RR客户端收到的BGP路由就没有标签携带了。 ::: 此时AR6可以学习到AR2、AR3的路由:
配置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的路由:
将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,再传到对方站点:
如上出现tracert路由中断的情况(AR3上执行私网标签替换): 如上LDP公网标签为3,发出后弹出LDP标签,即AR4收到后只有两层标签。 查看BGP VPNv4的路由表: 如上,要保证私网隧道的连续,需要使得本端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: ::: warning 如上图100.8.8.8的路由仍为最优的原因是下一跳7.7.7.7可以通过递归学习到下一跳:
如果ASBR通告路由时没有通告本端PE的路由,则对端RR设备学习到的本端站点路由不可达:
[AR5-bgp]undo network 7.7.7.7 32
:::
Option C2实验
::: tip Option C1是BGP学习,要求路由和下一跳可达。 Option C2是IGP学习,路由可达即可。 :::
Option C2:在AS内只通过LDP LSP封装MP-BGP LSP,不使用BGP LSP。
默认情况LDP LSP只为32位IGP路由分配标签。
(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的路由:
配置站点之间的路由可达
[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
上述配置完成后,站点内设备可以学习到对端站点的路由:
站点间不能相互访问: ::: tip AR2的BGP路由迭代到下一跳公网路由不进入隧道,即私网隧道不能迭代到公网隧道,私网隧道用于直接转发。 ::: AR2的GE0/0/1口抓包: 去往100.8.8.8的路由只封装了1026的私网标签,AR2认为私网数据可以直接发送到MP-EBGP邻居。实际该路由通过BGP学习,需要递归到IGP(下一跳): 查看下一跳的转发表: 下一跳的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标签:
ASBR可以正常接收据对端传来的带标签的PE路由:
::: warning 如上,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路由分配标签后传递:
本端PE访问对端PE时走隧道转发: 访问对端站点时BGP路由迭代到7.7.7.7时走隧道访问: AR2的GE0/0/0接口抓包时封装两层标签:
Option C2数据封装标签转发流程
::: tip
私网隧道中要对到对端的FEC实际经过的每一段链路分配标签,中途不会有特殊标签3。
:::
AR1访问AR8,AR2添加私网标签1026:
BGP路由递归到IGP,AR2添加1026的公网LDP标签:
AR3收到1026的LDP标签后替换为1027,走GE0/0/1转发:
AR4收到1026的LDP区别,替换为1026的LDP标签:
根据FEC,上图中LDP替换后的标签1026是BGP的出标签1026转换来的,即7.7.7.7的路由是BGP路由,LDP标签转换为BGP标签。
查看该BGP路由对应的下一跳:
AR5将BGP标签1026弹出,封装LDP标签1025(BGP递归IGP较为容易):
AR6收到1025的LDP标签后弹出:
AR7收到私网标签1026后进入VRF A:
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
如上AR3和AR6没有回显,原因是RR上替换了私网标签。 AR2学到100.8.8.8的下一跳是3.3.3.3: 如上,RR设备收到私网数据后需要进行处理(封装标签、解封装标签),即RR进行公网标签替换。而RR只作为控制平面路由传递,数据平面走公网传递,RR不应处理私网数据。即需要配置下一跳不改变,即AR2学习到100.8.8.8的下一跳是AR7。
配置路由传递时下一跳不改变
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时下一跳不改变
::: tip Option C-RR的独有内容: 保证本端PE和对端PE间私网隧道不中断,需要保证本端PE上对端站点路由的下一跳是对端PE。 :::
Option C1的方案部署hub-spoke模型
配置思路:
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公网隧道搭建完成):
私网隧道搭建
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: PE的VPNv4路由表只有RD值为200:1的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可以接收到分支路由:
[AR8-ospf-1]import-route bgp
[AR8-bgp-VPN_B]import-route ospf 1 route-policy OSPF_TO_BGP
分支可以接收到总部路由: ::: tip AR2的VPN_IN表有IRT,可以接收对方VPN实例发来的路由,VPN_OUT表只有ERT值,不能与ERT匹配: :::
配置私网隧道下一跳不改变,保证私网隧道完整
总部访问分支
[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
如上的更改保证了总部站点tracert分支过程中每一跳都有回显。
VPN_OUT表中没有分支的路由发出: 原因是路由从AS 100域内发出,通过VPN_OUT回到AS 100域内时被防环策略过滤:
[AR2-bgp-VPN_OUT]peer 10.1.21.1 allow-as-loop 允许出现一次AS号重复(后面可以配置允许重复次数,默认为1)
AR2的VPN_OUT表中出现总部站点发出的分支路由: 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)发来的路由:
分支之间可以正常访问通信:
::: 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。 :::