OptionC2
解决思路
- 1、首先与OptionC1一样需要ASBR之间建立EBGP,然后发布各自PE设备的环回口。
- OptionC1中ASBR与PE需要建立IBGP邻居传递对端PE环回口路由。
- 而OptionC2则不强制要求ASBR与PE建立IBGP邻居,只需要建立有IGP即可。
- OptionC2通过将EBGP路由引入到IGP中,使得PE通过IGP协议学习到对端PE环回口地址。
- 2、以及PE设备之间通过环回口建立MP-BGP邻居。
-
解决ASBR之间的VPNv4路由传递问题:
- 于ASBR设备上通过路由策略向对端ASBR分配标签。
-
解决PE1到ASBR1的路由黑洞问题:
- 通过中间层标签方式解决,已知ASBR2向ASBR1发送的BGP路由携带标签。
- ASBR1将ASBR2传递来的BGP路由引入到IGP中,并配置LDP使其为引入的带标签BGP路由分配标签路径,使得PE1学习到通往ASBR2的标签转发路径,从而解决PE1到ASBR1的路由黑洞。
关于PE1到ASBR2之间存在着多种说法:
1、为啥PE1能够通过标签转发到ASBR1了,还需要继续封装中间层标签到ASBR2呢?
答:(1)如果只有两层标签的话(公网标签[到ASBR1]、私网标签[BGP分配到达VPNA实例]),该报文到达ASBR1上时只剩下私网标签,而对于没有VPNv4路由条目的ASBR1来说,是不知道如何处理该只有私网标签的路由的。
(2)而如果是三层标签(公网[到ASBR1]、中间层[到ASBR2]、私网),那么报文到达ASBR1还剩下(中间层[到ASBR2]、私网),ASBR1根据中间层标签再次进行标签转发给ASBR2,ASBR2拆开发现该报文是传递给PE2的,将会进一步的封装成(公网[到PE2]、私网)进行标签转发到PE2上,由PE2完成最终的转发。
2、如果ASBR2不向ASBR1手动分配标签会怎样?
答:(1)ASBR1没有接收到带标签的PE2路由,那么在将PE2路由引入到IGP中并开启
lsp-trigger bgp-route
也无法给PE2路由生成标签路径。因为ASBR1并不是PE2路由的最后一跳,无法为其分配标签,故满足不了LDP建立LSP的条件。
案例
- 要求通过OptionC2方案,实现CE1与CE2的路由能够互通。
- 省略基础配置
- 所有设备的IP地址配置。
- CE与PE的VPN实例A建立EBGP邻居。
- AS内只建立IGP,不建立IBGP。
1、ASBR之间建立EBGP
[ASBR1]bgp 100
[ASBR1-bgp]peer 10.1.12.2 as-number 200
[ASBR1-bgp]network 1.1.1.1 255.255.255.255
[ASBR2]bgp 200
[ASBR2-bgp]peer 10.1.12.1 as-number 100
[ASBR2-bgp]network 11.11.11.11 255.255.255.255
2、ASBR将路由引入IGP
[ASBR1]ospf 1
[ASBR1-ospf-1]import-route bgp
[ASBR2]ospf 1
[ASBR2-ospf-1]import-route bgp
3、PE之间建立MP-BGP
[PE1]bgp 100
[PE1-bgp]peer 11.11.11.11 as-number 200
[PE1-bgp]peer 11.11.11.11 ebgp-max-hop 20
[PE1-bgp]peer 11.11.11.11 connect-interface LoopBack0
[PE1-bgp]ipv4-family vpnv4
[PE1-bgp-af-vpnv4]peer 11.11.11.11 enable
[PE2]bgp 200
[PE2-bgp]peer 1.1.1.1 as-number 200
[PE2-bgp]peer 1.1.1.1 ebgp-max-hop 20
[PE2-bgp]peer 1.1.1.1 connect-interface LoopBack0
[PE2-bgp]ipv4-family vpnv4
[PE2-bgp-af-vpnv4]peer 1.1.1.1 enable
4、检测配置结果
- CE上查看是否学习到对端CE路由【成功学习到对端CE路由】
<CE1>dis bgp routing-table
BGP Local router ID is 10.1.111.1
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 192.168.10.0 0.0.0.0 0 0 i
*> 192.168.20.0 10.1.111.2 0 100 200 20i
<CE2>dis bgp routing-table
BGP Local router ID is 10.1.211.1
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 192.168.10.0 10.1.211.2 0 200 100 10i
*> 192.168.20.0 0.0.0.0 0 0 i
- 检查连通性【发现学习到路由,但无法互通】
<CE1>ping -a 192.168.10.254 192.168.20.254
PING 192.168.20.254: 56 data bytes, press CTRL_C to break
Request time out
Request time out
Request time out
<CE2>ping -a 192.168.20.254 192.168.10.254
PING 192.168.10.254: 56 data bytes, press CTRL_C to break
Request time out
Request time out
Request time out
5、解决路由黑洞问题
- CE1访问CE2时,由于下一跳11.11.11.11没有相应标签转发路径,故只做路由转发,流量到达P1上时因缺少目的路由从而丢包。
- 为此需要解决PE1到ASBR2之间的标签转发问题,此处就借鉴OptionC1方案的操作,在ASBR之间通过路由策略给对端ASBR打标签。
- 解决ASBR作为中转ASBR无法自主分配标签的问题,以及ASBR之间无法传递标签路由问题。
# ASBR上给对端ASBR传递BGP路由时打上标签
[ASBR1]route-policy mpls permit node 5
[ASBR1-route-policy]apply mpls-label
[ASBR1-route-policy]quit
[ASBR1]bgp 100
[ASBR1-bgp]peer 10.1.12.2 route-policy mpls export
[ASBR1-bgp]peer 10.1.12.2 label-route-capability
[ASBR2]route-policy mpls permit node 5
[ASBR2-route-policy]apply mpls-label
[ASBR2-route-policy]quit
[ASBR2]bgp 200
[ASBR2-bgp]peer 10.1.12.1 route-policy mpls export
[ASBR2-bgp]peer 10.1.12.1 label-route-capability
- 此时ASBR已经向对端ASBR发送带标签的BGP路由,但此时在ASBR1上查看标签信息时,会发现并没有看到发来的BGP标签信息:
<ASBR1>dis mpls lsp
-------------------------------------------------------------------------------
LSP Information: LDP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
1.1.1.1/32 NULL/1024 -/GE0/0/0
1.1.1.1/32 1025/1024 -/GE0/0/0
2.2.2.2/32 NULL/3 -/GE0/0/0
2.2.2.2/32 1026/3 -/GE0/0/0
3.3.3.3/32 3/NULL -/-
- 因为默认情况下,LDP不为带标签的公网BGP路由分配标签,需要在ASBR设备上开启
lsp-trigger bgp-label-route
,为带标签的公网BGP路由建立LDP LSP。
[ASBR1]mpls
[ASBR1-mpls]lsp-trigger bgp-label-route
[ASBR2]mpls
[ASBR2-mpls]lsp-trigger bgp-label-route
- 完成手动打标签、带标签BGP建立LDP这两步操作之后,即可正常通信:
<CE1>ping -a 192.168.10.254 192.168.20.254
PING 192.168.20.254: 56 data bytes, press CTRL_C to break
Reply from 192.168.20.254: bytes=56 Sequence=1 ttl=249 time=220 ms
Reply from 192.168.20.254: bytes=56 Sequence=2 ttl=249 time=50 ms
Reply from 192.168.20.254: bytes=56 Sequence=3 ttl=249 time=50 ms
<CE2>ping -a 192.168.20.254 192.168.10.254
PING 192.168.10.254: 56 data bytes, press CTRL_C to break
Reply from 192.168.10.254: bytes=56 Sequence=1 ttl=249 time=80 ms
Reply from 192.168.10.254: bytes=56 Sequence=2 ttl=249 time=60 ms
Reply from 192.168.10.254: bytes=56 Sequence=3 ttl=249 time=70 ms