MPLS VPN基本组网 - Hub&Spoke
当采用Hub&Spoke方案时,可以将多个站点中的一个站点设置为Hub站点,其余站点为Spoke站点。站点间的互访必须通过Hub站点,通过Hub站点集中管控站点间的数据传输。
•Hub&Spoke有以下组网方案:
▫方式一:Hub-CE与Hub-PE,Spoke-PE与Spoke-CE使用EBGP
▫方式二:Hub-CE与Hub-PE,Spoke-PE与Spoke-CE使用IGP
▫方式三:Hub-CE与Hub-PE使用EBGP,Spoke-PE与Spoke-CE使用IGP
•无法通过Hub-CE与Hub-PE使用IGP,Spoke-PE与Spoke-CE使用EBGP来部署Hub&Spoke组网的MPLS VPN。
(•以从Spoke-CE1向Spoke-CE2发布路由(目的地址为192.168.1.0/24)为例,大体过程如下:
1.Spoke-CE1通过EBGP将路由发布给Spoke-PE1。
2.Spoke-PE1通过IBGP将路由发布给Hub-PE。
3.Hub-PE通过BGP-VPN实例(VPN_in)的Import Target属性将该路由引入VPN_in路由表;并通过OSPF100多实例发布给Hub-CE。
4.Hub-CE通过OSPF100学习到该路由;并通过OSPF200将路由发布给Hub-PE。
5.Hub-PE的BGP-VPN实例(VPN_out)引入OSPF200多实例路由,并将携带VPN_out的Export Target属性的路由发布给所有Spoke-PE。
6.Spoke-PE2的VPN实例根据Import Target属性引入该路由;Spoke-PE2通过EBGP发布给本地Spoke-CE2。
•Hub-PE的BGP-VPN实例(VPN_out)通过Export Target属性将路由发布给Spoke-PE2的同时,也会将该路由发布给Spoke-PE1。此时,这条路由是Hub-PE通过IGP(OSPF200多实例)引入的,由于IGP路由不携带AS-PATH属性,AS_Path为空;而原来从Spoke-CE1来的192.168.1.0/24路由,其AS_Path不为空,所以从Hub-PE返回的路由会优于从Spoke-CE1来的路由。这样会引起路由振荡,其过程如下:
1.Spoke-CE1发来的路由因为AS_Path变成非最佳路由
2.Spoke-PE1发布Update撤销路由的报文给Hub-PE来撤销192.168.1.0/24路由
3.Hub-PE(通过撤销相应的OSPF LSA)撤销发给Hub-CE的路由
4.Hub-CE(原理同上)撤销发给Hub-PE的路由
5.Hub-PE发布Update撤销路由撤销发给Spoke-PE1的路由
•于是在Spoke-PE1上从Spoke-CE1来的路由又变成最佳路由。Spoke-PE1又通过IBGP将路由发布给Hub-PE。Hub-PE又会返回该路由,从Spoke-CE1来的路由又变成非最佳路由。如此反复。
•
)
- 部署思路
- PE1,PE2的ET,值是100:1,IT值是200:1,所以再HUB-PE上配置两个VPN instance,vpn-in 100:1 IT,vpn-out 200:1 ET,
- 实验分析
- 方式一:Hub-CE与Hub-PE,Spoke-PE与Spoke-CE使用EBGP,主要是解决AS-PATH防环拒绝接收路由,接收端可以设置Allow AS loop,或发送路由端设置substitute-as修改AS号
- ▫方式二:Hub-CE与Hub-PE,Spoke-PE与Spoke-CE使用IGP
如果用OSPF协议,置DN-BIT的条件,OSPF私网进程引入BGP路由时(import from bgp)生成的3、5、7类LSA都会置DN-BIT。
2.1 vpn-instance-capability simple命令取消防环检测
在私网OSPF进程下配置vpn-instance-capability simplem命令后可以取消防环检测功能,此时路由计算时会忽略DN-BIT和tag值检测。
但这个命令只建议配置在MCE设备上,因为配置这个命令后OSPF将不再能够引入IBGP路由(import from IBGP)。
2.3 忽略DN-BIT防环检测
dn-bit-check disble命令可以控制在路由计算时是否忽略DN-BIT检测。这个命令在V6R1C00SPCb00B11q及以后版本支持。
2.4 生成LSA时不置DN-BIT
Dn-bit-set disable命令可以控制在引入BGP路由时是否置DN-BIT。此命令在V6R3及以后版本支持。
OSPF多实例防环检测常见问题说明 - 华为 (huawei.com)
-
- ▫方式三:Hub-CE与Hub-PE使用EBGP,Spoke-PE与Spoke-CE使用IGP
ospf 1
area 0.0.0.0
network 0.0.0.0 255.255.255.255
[SPOKE-PE1]mpls lsr-id 1.1.1.9
[SPOKE-PE1]mpls
[SPOKE-PE1-mpls]mpls ldp
[SPOKE-PE1-GigabitEthernet0/0/2]mpls
[SPOKE-PE1-GigabitEthernet0/0/2]mpls ldp
其他SPOKE 类似配置(略)
-
- 建立BGP邻居关系配置步骤(略)
-
- PE1,PE2按照规划的RD,RT值配置VRF
[SPOKE-PE1-vpn-instance-yeslab]dis this
#
ip vpn-instance yeslab
ipv4-family
route-distinguisher 100:1
vpn-target 100:1 export-extcommunity
vpn-target 200:1 import-extcommunity
[SPOKE-PE2-vpn-instance-yeslab]dis this
#
ip vpn-instance yeslab
ipv4-family
route-distinguisher 100:3
vpn-target 100:1 export-extcommunity
vpn-target 200:1 import-extcommunity
[HUB-PE-vpn-instance-vpn-in]dis this
#
ip vpn-instance vpn-in
ipv4-family
route-distinguisher 100:21
vpn-target 100:1 import-extcommunity
#
return
[HUB-PE-vpn-instance-vpn-out]dis this
#
ip vpn-instance vpn-out
ipv4-family
route-distinguisher 100:22
vpn-target 200:1 export-extcommunity
#
return
- 采用第一种方式,Hub-CE与Hub-PE,Spoke-PE与Spoke-CE使用EBGP
[SPOKE-PE1-bgp]dis this
#
bgp 100
peer 2.2.2.9 as-number 100
peer 2.2.2.9 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
peer 2.2.2.9 enable
#
ipv4-family vpnv4
policy vpn-target
peer 2.2.2.9 enable
#
ipv4-family vpn-instance yeslab
peer 100.1.1.1 as-number 65410
peer 100.1.1.1 ebgp-max-hop 255
[SPOKE-PE2-bgp]dis this
#
bgp 100
peer 2.2.2.9 as-number 100
peer 2.2.2.9 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
peer 2.2.2.9 enable
#
ipv4-family vpnv4
policy vpn-target
peer 2.2.2.9 enable
#
ipv4-family vpn-instance yeslab
peer 120.1.1.1 as-number 65410
peer 120.1.1.1 ebgp-max-hop 255
[SPOK-CE1-bgp]dis this
#
bgp 65410
peer 100.1.1.2 as-number 100
peer 100.1.1.2 ebgp-max-hop 255
#
ipv4-family unicast
undo synchronization
peer 100.1.1.2 enable
[HUB-PE-bgp]dis this
#
bgp 100
peer 1.1.1.9 as-number 100
peer 1.1.1.9 connect-interface LoopBack0
peer 3.3.3.9 as-number 100
peer 3.3.3.9 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
peer 1.1.1.9 enable
peer 3.3.3.9 enable
#
ipv4-family vpnv4
policy vpn-target
peer 1.1.1.9 enable
peer 3.3.3.9 enable
#
ipv4-family vpn-instance vpn-in
peer 110.1.1.1 as-number 65410
peer 110.1.1.1 ebgp-max-hop 255
#
ipv4-family vpn-instance vpn-out
peer 110.2.1.1 as-number 65410
peer 110.2.1.1 ebgp-max-hop 255
[HUB-CE-bgp]dis this
#
bgp 65410
peer 110.1.1.2 as-number 100
peer 110.1.1.2 ebgp-max-hop 255
peer 110.2.1.2 as-number 100
peer 110.2.1.2 ebgp-max-hop 255
#
ipv4-family unicast
undo synchronization
peer 110.1.1.2 enable
peer 110.2.1.2 enable
-
- SPOK-CE1,SPOK-CE2 宣告环口路由,
[SPOKE-CE1-bgp]dis this
#
bgp 65410
peer 100.1.1.2 as-number 100
peer 100.1.1.2 ebgp-max-hop 255
#
ipv4-family unicast
undo synchronization
network 1.1.1.1 255.255.255.255
peer 100.1.1.2 enable
[SPOKE-CE2-bgp]dis this
#
bgp 65410
peer 120.1.1.2 as-number 100
peer 120.1.1.2 ebgp-max-hop 255
#
ipv4-family unicast
undo synchronization
network 2.2.2.2 255.255.255.255
peer 120.1.1.2 enable
-
- 但是此时HUB-CE无法接收到路由,因为AS-PATH防环机制。所以HUB-CE要针对65410开启allow-as-loop 1,允许收到同样的AS一次
- (另外一种方法是再HUB-PE上修改AS,后面演示)
[HUB-CE-bgp]peer 110.1.1.2 allow-as-loop
或者第二种方法,再HUB-PE上配置修改AS号,发现HUB-CE ,reset vpnv4路由后又可以收到SPOKE CE1路由。
[HUB-PE-bgp-vpn-in]peer 110.1.1.1 substitute-as
看到上面path路径都是100,更改了AS号。
-
- HUB-PE的vpn-out内没有收到从HUB-CE的1.1.1.1,3.3.3.3的路由,同样的问题AS-PATH防环。
HUB-PE BGP VPN-OUT 配置防环2次。(第一次是SPOKE-CE,第二次是HUB-CE,如果HUB-PE和HUB-CE之前是修改了AS号,那么设置防环一次即可。)
[HUB-PE-bgp-vpn-out]peer 110.2.1.1 allow-as-loop 2
发现HUB-PE,vpnout方向可以收到路由。
-
- 现在SPOKE-CE1,SPOKE-CE2都无法收到路由,也是因为AS-PATH防环机制。所以也需要配置 allow-as-loop 1
[SPOK-CE2-bgp]peer 120.1.1.2 allow-as-loop 1
[SPOK-CE-bgp]peer 100.1.1.2 allow-as-loop
-
- 所以第一种方式SPOK-CE 和 HUB-CE 均采用EBGP方式完成。主要是解决防环的问题。
- 采用第二种方式,Hub-CE与Hub-PE,Spoke-PE与Spoke-CE都使用IGP (OSPF)
- 现在采用的方法是 HUB-CE配置OSPF 1 单线程。HUB-PE配置ospf2,ospf3双线程,一定会出项DN比特置位的问题。
- 有三种方法可以解决DN比特问题,
1.在私网OSPF进程下配置vpn-instance-capability simplem命令后可以取消防环检测功能,此时路由计算时会忽略DN-BIT和tag值检测。
但这个命令只建议配置在MCE设备上,因为配置这个命令后OSPF将不再能够引入IBGP路由(import from IBGP)。
2.Dn-bit-set disable命令可以控制在引入BGP路由时是否置DN-BIT。此命令在V6R3及以后版本支持。
3.dn-bit-check disble命令可以控制在路由计算时是否忽略DN-BIT检测。这个命令在V6R1C00SPCb00B11q及以后版本支持。
- 取消DN置位后,可以查看VPN-OUT方向能收到路由
- 发现SPOK-CE端能收到路由,但是ping不通
- 检查路由引入问题。需要将SPOKE-PE引入ospf路由,OSPF引入BGP路由,检查可以ping通
- 配置清单:
HUB-PE配置:
SPOKE-PE1主要配置如下:
SPOKE-PE2主要配置如下:
- 方式三:Hub-CE与Hub-PE使用EBGP,Spoke-PE与Spoke-CE使用IGP
- SPOKE侧不变,将HUB-PE侧的IGP删除,改成EBGP,需要注意的是SPOKE-PE,要互相引入路由,HUB-CE要设置allow-as-loop
- HUB-PE配置如下
[HUB-PE]dis cu
#
sysname HUB-PE
#
ip vpn-instance vpn-in
ipv4-family
route-distinguisher 100:21
vpn-target 100:1 import-extcommunity
#
ip vpn-instance vpn-out
ipv4-family
route-distinguisher 100:22
vpn-target 200:1 export-extcommunity
#
mpls lsr-id 2.2.2.9
mpls
#
mpls ldp
#
interface GigabitEthernet0/0/0
ip address 11.1.1.2 255.255.255.0
mpls
mpls ldp
#
interface GigabitEthernet0/0/1
ip address 10.1.1.2 255.255.255.0
mpls
mpls ldp
#
interface GigabitEthernet0/0/2
ip binding vpn-instance vpn-out
ip address 110.2.1.2 255.255.255.0
#
interface GigabitEthernet0/0/3
ip binding vpn-instance vpn-in
ip address 110.1.1.2 255.255.255.0
interface LoopBack0
ip address 2.2.2.9 255.255.255.0
#
bgp 100
peer 1.1.1.9 as-number 100
peer 1.1.1.9 connect-interface LoopBack0
peer 3.3.3.9 as-number 100
peer 3.3.3.9 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
peer 1.1.1.9 enable
peer 3.3.3.9 enable
#
ipv4-family vpnv4
policy vpn-target
peer 1.1.1.9 enable
peer 3.3.3.9 enable
#
ipv4-family vpn-instance vpn-in
peer 110.1.1.1 as-number 65410
peer 110.1.1.1 ebgp-max-hop 255
#
ipv4-family vpn-instance vpn-out
peer 110.2.1.1 as-number 65410
peer 110.2.1.1 ebgp-max-hop 255
peer 110.2.1.1 allow-as-loop 2 (允许AS LOOP)
#
ospf 1 router-id 1.1.1.1
area 0.0.0.0
network 0.0.0.0 255.255.255.255
- SPOK-PE配置如下:
[SPOKE-PE1]dis cu
#
sysname SPOKE-PE1
#
ip vpn-instance yeslab
ipv4-family
route-distinguisher 100:1
vpn-target 100:1 export-extcommunity
vpn-target 200:1 import-extcommunity
#
mpls lsr-id 1.1.1.9
mpls
#
mpls ldp
#
interface GigabitEthernet0/0/1
ip binding vpn-instance yeslab
ip address 100.1.1.2 255.255.255.0
#
interface GigabitEthernet0/0/2
ip address 10.1.1.1 255.255.255.0
mpls
mpls ldp (如果没配置MPLS,BGP收到路由无法显示最优。也不会传个HUB-CE)
interface LoopBack0
ip address 1.1.1.9 255.255.255.0
#
bgp 100
peer 2.2.2.9 as-number 100
peer 2.2.2.9 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
peer 2.2.2.9 enable
#
ipv4-family vpnv4
policy vpn-target
peer 2.2.2.9 enable
#
ipv4-family vpn-instance yeslab
import-route ospf 2
#
ospf 1
area 0.0.0.0
network 0.0.0.0 255.255.255.255
#
ospf 2 vpn-instance yeslab
import-route bgp
area 0.0.0.0
network 100.1.1.0 0.0.0.255
#
- 检查SPOKE-CE1路由表
- 在SPOKE-CE2上 路由跟踪