MPLS与BPG结合使用可以使内部路由器不跑BGP,不用引入外部路由,以及MPLS的根据IGP的选路的情况。
本实验是基本的MPLS配置,每个接口都启用MPLS,IGP采用OSPF,只有R1和R5启用BGP,LDP邻居和BGP邻居都用环回口L1建立,R1与R5的环回口L2模拟外网,不宣告到IGP中,就是说R2/R3/R4没有外部路由。
当R1与R2的BGP邻居建立时,把环回口L2宣告到BGP中,这样R1的外网就可以和R2的外网通信。
R2到R5会有两条路径可以通信,但是OSPF会选择通过R3走为最佳路径,因为MPLS选路是根据IGP来实现的,如图:(R2的MPLS forwarding table)
所以虽然R2到R5(5.5.5.5)有多条路,但是在LFIB表中只有一条表项,另外的标签保存在LIB表中,细心的同学会发现19的标签下面有2个表项,因为到43.1.1.0网络在OSPF看来是等价的,OSPF会负载均衡,MPLS选路是根据IGP来的,所以就会有2条表项。
我们来查看一下R2的LIB,看看5.5.5.5和43.1.1.0是不是收到了来自下一跳的2个标签。
这2张图可以清楚的看到,5.5.5.5 有一条表项inuse,而43.1.1.0有2条表项inuse,当然1.1.1.1不是R2对于5.5.5.5和43.1.1.0的下一跳。
有的同学做此实验会出现实验不成功的现象,这里有一点要注意,当你BGP LDP ospf邻居都正常时,有可能你在接口下重启MPLS后LDP邻居会建立不起来。就以我这个实验为例,我是最后添加的环回口L2。当你重启MPLS后,LDP的router-ID会选举成L2.(LDP的router-ID选举方式和OSPF一样)但是R2并没有到L2的路由所以建立不成功,可以在接口下用mpls ldp discovery transport-address interface用物理接口建立邻居。
我们在R2上使用show mpls ldp nei如图:
可以标记处看出,R1与R2是用物理接口建立的邻居。
配置:这里只附上R1与R5的配置。
R1:
interface Loopback1
ip address 1.1.1.1 255.255.255.255
interface Loopback2
ip address 11.11.11.11 255.255.255.255
interface Serial0/0
ip address 12.1.1.1 255.255.255.0
mpls ldp discovery transport-address interface
mpls ip
router ospf 1
log-adjacency-changes
network 1.1.1.1 0.0.0.0 area 0
network 12.1.1.0 0.0.0.255 area 0
router bgp 1
network 11.11.11.11 mask 255.255.255.255
neighbor 5.5.5.5 remote-as 1
neighbor 5.5.5.5 update-source Loopback1
R2:
interface Loopback1
ip address 5.5.5.5 255.255.255.255
interface Loopback2
ip address 22.22.22.22 255.255.255.255
interface Serial0/0
ip address 35.1.1.2 255.255.255.0
mpls ip
router ospf 1
network 5.5.5.5 0.0.0.0 area 0
network 35.1.1.0 0.0.0.255 area 0
router bgp 1
network 22.22.22.22 mask 255.255.255.255
neighbor 1.1.1.1 remote-as 1
neighbor 1.1.1.1 update-source Loopback1