1.无RR配置
拓补图
其实跟方案一的配置大同小异,就是需要增加命令lsp-trigger bgp-label-route,这条命令的意思就是说,让LDP为带标签的公网BGP路由分发标签
1.基础的配置
- IP地址的配置就省略了
- MPLS域之间运行LDP标签分发协议
- PE和CE之间路由的交互就省略了,可以参考之前的实验
- RT以及RD的配置也忽略了,可以参考之前做的实验
2.ASBR之间i建立MP-EBGP的邻居关系并且宣告PE的路由
ASBR1:
bgp 100
peer 10.1.45.5 as-number 200
network 2.2.2.2 32
ipv4-family vpnv4
peer 10.1.45.5 enable
ASBR2:
bgp 200
peer 10.1.45.4 as-number 100
network 7.7.7.7 32
ipv4-family vpnv4
peer 10.1.45.4 enable
3.ASBR和PE之间i建立普通的IBGP邻居关系
PE1:
bgp 100
peer 4.4.4.4 as-number 100
peer 4.4.4.4 connect-interface LoopBack0
ipv4-family vpnv4
peer 4.4.4.4 enable
ASBR1:
bgp 100
peer 2.2.2.2 as-number 100
peer 2.2.2.2 connect-interface LoopBack0
ipv4-family vpnv4
peer 10.1.45.5 enable
AS 200区域同理
4.MPLS之间开启MPLS协议
[ASBR1]int g0/0/1
[ASBR1-GigabitEthernet0/0/1]mpls
[ASBR2]int g0/0/0
[ASBR2-GigabitEthernet0/0/0]mpls
这个时候MPLS域的PE都收到对端的PE的路由,但是还是一条无效的路由
5.开启标签路由分发协议
PE1:
bgp 100
peer 4.4.4.4 label-route-capability
ASBR1:
bgp 100
peer 2.2.2.2 label-route-capability
peer 10.1.45.5 label-route-capability
ASBR2和PE2同理
6.让ASBR之间的传输携带BGP的标签
[ASBR1]bgp 100
[ASBR1-bgp]peer 10.1.45.5 route-policy lable-export export
[ASBR1]route-policy lable-export permit node 10
[ASBR1-route-policy]apply mpls-label
ASBR2同理
发现现在的路由携带着标签,意思就是说如果ASBR2收到标签为1027的就说明是去往目的地址7.7.7.7的,然后下一跳地址的话是往10.1.45.5发,也就是ASBR2,同理另外一边也是如此
7.让ASBR发送给PE的路由做标签的替换
ASBR1:
bgp 100
peer 2.2.2.2 route-policy lable-sw export
route-policy lable-sw permit node 10
if-match mpls-label
apply mpls-labelASBR2同理
ASBR1收到对端访问自己区域的PE的路由2.2.2.2使用的是1026的标签,这个标签是公网BGP的标签,收到之后做标签替换的动作,把1026的标签替换成1025的标签,这个标签是内部的LDP分发的标签了,然后在传递给P1,PE1会向上游的P1到发送一个特殊标签3来进行隐士空弹出,所以PE收到的就是一个普通的IP报文了
8.PE之间建立MP-EBGP的关系
PE1:
bgp 100
peer 7.7.7.7 as 200
peer 7.7.7.7 connect-interface lo 0
peer 7.7.7.7 ebgp-max-hop 10
ipv4-family vpnv4
peer 7.7.7.7 enable
PE2同理
9.验证结果
虽然现在CE之间都相互有了对方的路由,但是这个并不是方案二去实现的效果,通过抓包可以清楚的看到,现在还是有三层标签的,分别是VPN、BGP、TUNNEL标签,方案二实现的效果就是从三层标签变成两层标签,即BGP和TUNNLE合为一层
10.配置触发带标签的公网BGP路由建立LSP的策略
ASBR1:
mpls
lsp-trigger bgp-label-route
ASBR2同理
当然这样还不行,可以清楚的看到ASBR2有PE1的路由的标签,为什么P2没有PE1的路由的标签,因为没有路由,有路由才会生成FEC的,ASBR2有PE1的路由因为再建立MP-EBGP宣告了PE的路由
10.路由的引入
ASBR1:
ospf 1
import-route bgp
ASBR2同理
在查看P2设备上的LSP是否有去往2.2.2.2的FEC了
11.验证最后的效果
抓包查看就剩下两层的标签了,把TUNNL标签和BGP标签合并成一层标签了,加上VPN标签就剩下了两层标签
2.有RR配置
拓补图
根据以上实验的基础做出以下的调整
- 取消PE之间的MP-EBGP邻居关系,RR之间建立MP-EBGP邻居即可
- ASBR宣告自己所在域的RR的路由
- 每个AS的RR跟PE之间建立MP-IBGP邻居关系,注意要取消对接收的VPN路由或者标签块进行VPN-Target过滤
- 设置RR之间传递不更改下一跳,RR传递给PE不更改下一跳
1.ASBR宣告自己所在区域的RR的路由
ASBR1:
bgp 100
network 3.3.3.3 32
ASBR2同理
2.RR之间建立MP-EBGP的邻居关系
RR1:
bgp 100
peer 6.6.6.6 as-number 200
peer 6.6.6.6 ebgp-max-hop 10
peer 6.6.6.6 connect-interface LoopBack0ipv4-family vpnv4
peer 6.6.6.6 enable
RR2同理
3.每个AS的RR跟PE之间建立MP-IBGP邻居关系,注意要取消对接收的VPN路由或者标签块进行VPN-Target过滤
RR1:
bgp 100
peer 2.2.2.2 as-number 100
peer 2.2.2.2 connect-interface LoopBack0ipv4-family vpnv4
undo policy vpn-target
peer 2.2.2.2 enablePE1:
bgp 100
peer 3.3.3.3 as-number 100
peer 3.3.3.3 connect-interface LoopBack0
ipv4-family vpnv4
peer 3.3.3.3 enable
undo policy vpn-target
RR2以及PE2同理
4.观察CE1访问CE2访问的LSP路径
PE1:PE1去往CE2走的LSP的路径的下一跳是3.3.3.3,也就是RR1
RR1:RR1去往CE2的走的LSP的路径下一跳是6.6.6.6,也就是RR2
RR2:RR2去往CE2的走的LSP路径的下一跳是7.7.7.7,也就是PE2
综上所述,CE1访问CE2的路径是CE1>PE1>RR1>RR2>PE2>CE2,虽然在这张图里面看不出有什么问题,但是如下图所示,如果RR是以R9和R10这种形式连接着其他设备的话,可以就会出现次优路径的问题(红线的路径),那就可以使用下一跳不更改的方法解决这个问题
5.设置下一跳不更改
RR1:
[RR1]bgp 100
[RR1-bgp]ipv4-family vpnv4
[RR1-bgp-af-vpnv4]peer 6.6.6.6 next-hop-invariable
[RR1-bgp-af-vpnv4]peer 2.2.2.2 next-hop-invariable
RR2:
[RR2]bgp 200
[RR2-bgp]ipv4-family vpnv4
[RR2-bgp-af-vpnv4]peer 7.7.7.7 next-hop-invariable
[RR2-bgp-af-vpnv4]peer 3.3.3.3 next-hop-invariable
验证结果:PE1去往CE2的下一跳不再是RR1了,而是对端的PE2,所以这个也解决了次优路径的问题