昨天就跨域MPLS VPN OptionC实验(带RR场景,VPNv4路由下一跳为RR)进行分析。今天分享一下跨域MPLS VPN OptionC实验(不带RR场景)
【实验基础命令可以在群里看手册自行配置,本次作为实验分析。根据实验拓扑配置进行现象分析】
实验拓扑:
第一步:配置ISP 100和ISP 200的IGP/LDP/MPLS协议,R3和R4之间使能MPLS
- 首先配置ISP 100和ISP 200的IGP,这里使用OSPF
- 在R1上能看懂通过OSPF学习到R2和R3环回口的路由,说明ISP 100的IGP配置完成
- 在R4上能看懂通过OSPF学习到R5和R6环回口的路由,说明ISP 200的IGP配置完成
- 首先配置ISP 100和ISP 200的MPLS和MPLS LDP
- 配置R3和R4之间接口使能MPLS协议
第二步:在PE(R1、R6)上配置VPN实例
代码语言:javascript复制R1-PE1和R6-PE2的VPN实例配置命令
[R1-PE1] ip vpn-instance hcie1
[R1-PE1-vpn-instance-hcie1] route-distinguisher 100:1
[R1-PE1-vpn-instance-hcie1-af-ipv4] vpn-target 100:1
IVT Assignment result:
Info: VPN-Target assignment is successful.
EVT Assignment result:
Info: VPN-Target assignment is successful.
-------------------------------------------------------
[R1-PE1] ip vpn-instance hcie2
[R1-PE1-vpn-instance-hcie2] route-distinguisher 100:1
[R1-PE1-vpn-instance-hcie2-af-ipv4] vpn-target 100:1
IVT Assignment result:
Info: VPN-Target assignment is successful.
EVT Assignment result:
Info: VPN-Target assignment is successful.
-------------------------------------------------------
[R1-PE1]int gi 0/0/2
[R1-PE1-GigabitEthernet0/0/2]ip binding vpn-instance hcie2
[R1-PE1-GigabitEthernet0/0/2]int gi 0/0/1
[R1-PE1-GigabitEthernet0/0/1]ip binding vpn-instance hcie1
第三步:PE-CE之间的IGP配置
- SiteA:S1-CE1的IGP配置
- SiteB:S3-CE3的IGP配置
- R1-PE1与CE1、CE3的IGP配置
- SiteC:S2-CE2的IGP配置
- SiteD:S4-CE4的IGP配置
- R6-PE2与CE2、CE4的IGP配置
第四步:R1-R3、R3-R4、R4-R6之间建立IPv4单播的BGP邻居,并在R3上宣告R1的环回口,R4上宣告R6的环回口
- 注:在R1和R6上宣告自己的环回口会有问题,过河拆桥
- ASBR之间配置IPv4单播的BGP邻居关系,用于传递PE的路由信息
- 因为R1和R6的环回口要建立MP-EBGP多跳的邻居关系,所以要在 R3-ASBR1的IPv4-BGP宣告R1的环回口,R4-ASBR2的IPv4-BGP宣告R6的环回口
- 在R3-ASBR1上能通过BGP学习到10.1.6.6的路由,R4-ASBR2上能通过BGP学习到10.1.1.1的路由
- 但是在R1上无法学习到10.1.6.6,R6上无法学习到10.1.1.1,因为R1没有和R3建立BGP,R4没有和R6建立BGP。所以需要R4和R6建立IPv4单播的BGP邻居
- 但是发现R6学习到10.1.1.1的路由是无效的,因为下一跳不可达
- 在R4上要针对R6指定BGP路由下一跳本地
- 同理,R3也要和R1建立IPv4单播的BGP邻居,并且指定发送给R1的BGP路由下一跳为R3自己
- 到此R1和R6就互相通过IPv4-BGP学习到了对方的环回口路由,但是此时还是无法互通的,因为中间设备,R2和R5没有参与BGP,也就是没有学习到路由,数据包通信会产生路由黑洞
第五步:使能R1-PE1和R3-ASBR1、R3-ASBR1和R4-ASBR2以及R4-ASBR2和R6-PE2具有为互相通告的路由分配标签的能力
- AS 100内的R1,R2,R3都配置LDP协议,所以R2和R3都有去往R1环回口10.1.1.1的标签(外层标签),但是在R4上没有去往R1环回口10.1.1.1的标签信息,原因是缺省IPv4单播的BGP不分配标签
第一点:配置发送标签路由能力,使能R3具有朝着R4发送标签路由能力,同理,R3也要具有朝着R4发送标签路由的能力
注意:使能或禁止发送标签路由能力时,BGP连接会自动断开,然后重新进行邻居能力协商
第二点:配置R3能通过路由策略为其所通告给R4的路由打上标签,同理,R4也要配置路由策略为其所通告给R3的路由打上标签
查看BGP路由的标签信息
此时,R4就有了去往10.1.1.1/32路由的标签信息,是由R3通告IPv4-BGP通告给R4的
同理,R4也为10.1.6.6/32路由分配了标签1026,并传递给了R3;
在R3上也有了去往10.1.6.6/32路由的标签信息;
但是此时面临的问题时R4如何为10.1.1.1/32路由重新分配标签并传递给R6,由于此时R4和R6建立的IPv4-BGP并没有开启通告标签的能力,所以在R6上虽然通过BGP从R4学习到了10.1.1.1/32的路由信息,但是没有标签;
不能直接传递给R5,否则就要建立Full-meash的连接,网络更加复杂;
当然办法也简单,和R3、R4的原理一样,R4在传递路由给R6的时候也为其分配标签,开启R4朝着R6通告标签的能力,但是在做策略的时候最好If-match针对选择有需要的路由为其分配标签,否则传递的所有BGP路由都会分配上标签;
if-match mpls-label的意思是如果从R3传递给R4的BGP路由已经携带了标签,则R4传递给R6的时候继续分配标签,也就是针对收到带有标签的路由则将路由传递对对应的BGP邻居时继续分配标签。如果R3传递给R4的BGP路由没有携带标签,则R4传递给R6的路由就不携带标签;
同理,在R6上也要开启针对R4的路由标签通告能力
那么在R6上就能收到关于去往10.1.1.1/32路由的标签信息
由于R4只做了一个Route-Policy,由于10.1.1.1/32带有标签所以通告给了R6,而10.1.6.6/32由于没有标签,且Route-Policy缺省是deny,所以R6上收不到关于10.1.6.6/32的路由,当然R6并不需要收到关于10.1.6.6/32的路由
到这里为止,关于从左到右10.1.1.1/32路由标签的传递就完成了;
接下来是从右到左,关于10.1.6.6/32路由的标签传递;
R4、R5、R6由于都运行LDP协议,各自为自己的环回口分发标签,在R4上肯定是有关于10.1.6.6/32的路由标签;
并且之前在R3和R4之间也开启了路由互相通告且分配标签的能力,所以在R3上也会有关于10.1.6.6/32的路由标签;
但是在R1和R3之间并没有互相使能发送标签路由的能力,所以在R1和R3上要开启路由标签通告,并且R3针对R1通过Route-Policy策略If-match针对选择有需要的路由为其分配标签,否则传递的所有BGP路由都会分配上标签;
那么在R1就能看到关于10.1.6.6/32的路由标签信息
由于R1和R6都有了去往对方环回口路由的标签,于是就能进行通信
第六步:R1-PE1和R6-PE2建立MP-EBGP的邻居
- 配置R1-R6的MP-EBGP,关闭R1-R6的IPv4-BGP邻居
- 在R1-PE1上将SiteA和SiteC的VRF IGP路由引入BGP
- 在R6-PE2上将SitB和SiteD的VRF IGP路由引入BGP
- 在R1上观察VPNv4路由
- R1上已经学习到了2.2.2.0/24网段个4.4.4.0/24网段的BGP VPNv4路由,下一跳为R6的环回口10.1.6.6
- 在R6上观察VPNv4路由
- R6上已经学习到了1.1.1.0/24网段个3.3.3.0/24网段的BGP VPNv4路由,下一跳为R1的环回口10.1.1.1
- 最后,在R1和R6的VPN实例下引入BGP路由,使得通过MP-BGP学习到的路由通过IGP传递给CE设备
实验测试
图示数据转发方向: