在MPLS ×××中,CE-PE之间使用ospf协议的时候,如果在CE之间还有backdoor链路的时候,那么CE之间在选择路由的时候总是优先选择backdoor链路,而不会选择穿越MPLS ×××网络的链路,主要是因为:
在MPLS ×××配置的时候,OSPF经常用来作为PE-CE中间的路由协议,以通过MPLS骨干网络连接×××内的各站点。虽然OSPF PE-CE之间的连接保证了×××站点间的连通性,但×××站点间的backdoor后门链路也应该考虑。如果两个站点属于同一个site,那么经过后门链路的路径总是会被优先选择,因为按OSFP协议规定,intra-area的路径总是优于inter-area路径。因此,必须考虑存在后门链路时,能通过策略来控制路由。 ( K5 R% b0 G8 m8 w6 V
如果后门链路只是用来作为备份使用而不参与×××业务提供服务,缺省的处理流程将不可接受。为了重新通过MPLS ×××骨干区建立站点间的连接,必须在相关PE路由器的入口和出口VRF间建立逻辑的intra-area链路。本特性提供一种解决方案,在两个站点间建立一个假OSPF链路:sham-link,作为intra-area通道,以使得两个站点间的之间的通讯通过MPLS骨干区域,而后门链路作为备份使用。如果两个站点间不存在后门链路,没有必要使用sham-link。
在MPLS-×××网络中,当PE和CE使用OSPF时,PE从CE学到路由后,都放在相应VRF中,然后传递给对端PE,再由PE转发到远程CE。如果两端CE之间存在backdoor link,×××流量总是通过backdoor link转发,而放弃从MPLS骨干传输。
如图,假设CE1通过OSPF从CE2学到一条路由4.4.4.4/32,CE1必定会优先选择从后门链路到达4.4.4.4。不仅如此,PE路由器也同样会选择从后门链路到达4.4.4.4而放弃从MPLS ×××骨干网络中传输。
下面通过实验来验证
实验拓扑如上图,PE1、PE2之间运行MP-BGP。PE与CE之间运行OSPF, CE1和CE2之间也建立OSPF邻接关系,且均属于area 0。在两个PE上一个×××实例。在CE2上创建一个loopback0,4.4.4.4/32,并将其宣告进OSPF。
实验配置
PE1的OSPF和BGP配置:
router ospf 100 vrf ×××A
router-id 1.1.1.1
log-adjacency-changes
redistribute bgp 100 subnets
network 192.168.13.1 0.0.0.0 area 0
!!
router bgp 100
bgp router-id 1.1.1.1
no bgp default ipv4-unicast
bgp log-neighbor-changes
neighbor 2.2.2.2 remote-as 100
neighbor 2.2.2.2 update-source Loopback0!
address-family ***v4
neighbor 2.2.2.2 activate
neighbor 2.2.2.2 send-community extended
exit-address-family
address-family ipv4 vrf ×××A
redistribute ospf 100
PE2的OSPF和BGP配置:
router ospf 100 vrf ×××A
router-id 2.2.2.2
log-adjacency-changes
redistribute bgp 100 subnets
network 192.168.24.2 0.0.0.0 area 0
!!
router bgp 100
bgp router-id 2.2.2.2
no bgp default ipv4-unicast
bgp log-neighbor-changes
neighbor 1.1.1.1 remote-as 100
neighbor 1.1.1.1 update-source Loopback0!
address-family ***v4
neighbor 1.1.1.1 activate
neighbor 1.1.1.1 send-community extended
exit-address-family
address-family ipv4 vrf ×××A
redistribute ospf 100
CE1的OSPF配置:
router ospf 100
router-id 3.3.3.3
log-adjacency-changes
network 192.168.13.3 0.0.0.0 area 0
CE2的OSPF配置:
router ospf 100
router-id 4.4.4.4
log-adjacency-changes
network 192.168.24.4 0.0.0.0 area 0
network 4.4.4.4 0.0.0.0 area 0
实验结果
CE1路由表
PE1路由表和BGP路由表
从CE1和PE1路由可以看出,PE1和CE1都优先选择backdoor link到达4.4.4.4/32
分析:
(1)CE1从CE2学到的关于4.4.4.4/32的路由为o的路由,即intra-area路由,从MPLS ×××骨干网络到达远程网络是inter-area路由,而inter-area路由是不可能优先于intra-area路由的。
(2)PE1从CE1学到的关于4.4.4.4/32的OSPF路由AD为110,而从PE2学到的关于4.4.4.4/32的IBGP路由AD为200,所以选择从CE1走。
结论:如果CE之间的后门链路仅仅是作为备份使用,那么将其作主用链路,是不理智的。
为了避免这一问题,可以在PE 路由器之间建立OSPF 伪连接(sham link),使经过MPLS ××× 骨干网的路由也成为OSPF 区域内路由。
sham link 作为区域内的一条点到点链路,包含在Type1 LSA 中发布。用户可以通过调整度量值在sham link 和backdoor 之间进行选路。
配置OSPF sham-link
PE1
(1)在PE1路由器上创建/32位loopback地址
PE1(config)#int loopback 100
PE2(config-if)#ip vrf forwarding ×××A
PE2(config-if)#ip add 100.1.1.1 255.255.255.255
(2)将/32位地址在MP-BGP里发布
PE1(config)#router bg 100
PE2(config-router)#address-family ipv4 vrf ×××A
PE3(config-router-af)#network 100.1.1.1 mask 255.255.255.255
(3) 创建Sham-Link
PE1(config)#router ospf 2 vrf ×××A
PE2(config-router)#area 0 sham-link 100.1.1.1 100.1.1.2 cost 1
PE2
(1)在PE2路由器上创建/32位loopback地址
PE1(config)#int loopback 100
PE2(config-if)#ip vrf forwarding ×××A
PE2(config-if)#ip add 100.1.1.2 255.255.255.255
(2)将/32位地址在MP-BGP里发布
PE1(config)#router bg 100
PE2(config-router)#address-family ipv4 vrf ×××A
PE3(config-router-af)#network 100.1.1.2 mask 255.255.255.255
(3) 创建Sham-Link
PE1(config)#router ospf 2 vrf ×××A
PE2(config-router)#area 0 sham-link 100.1.1.2 100.1.1.1 cost 1
实验结果
PE1和PE2通过sham-link建立了OSPF邻接关系
再看CE1和PE1的路由表
结论:
从路由表中可以看出,PE1和CE1均通过sham-link学到了关于4.4.4.4/32的OSPF intra-area路由,可以调整sham-link和backdoor的cost来进行路由选择
配置sham-link时需要满足的条件
(1)在PE上单独创建32位loopback地址,在PE之间使用这个地址来建立Sham-Link。
(2)这个32位loopback地址的接口必须放入相应的VRF。
(3)这个32位loopback地址必须在BGP里发布,而不能在OSPF里发布。
(4)同一个OSPF 进程的多条sham link 可以共用端点地址,但不同OSPF 进程不能拥有两条端点地址完全相同的sham link。
(5)sham link 的端点地址被BGP 作为×××-IPv4 地址发布。如果路由经过了sham link,它就不能再以×××-IPv4 路由的形式被引入到BGP。