组网及说明
两台sr66做了vrrp,两台设备上各有静态路由到地市的流量分别指到下行的电信、移动。流量优先走电信到地市。两台sr66之间建立mpls l3vpn同时在bgp vpnv4视图引入静态路由。通过这种方式做到任意链路断开,路由都有备份。
问题描述
测试发现,如果sr66上行链路断掉,流量本应经sr66-2查bgp路由到sr66-1通过电信下行。但实际测试发现流量到SR66-2之后匹配了静态路由到移动。SR66-2上配置BGP路由优先级100,静态路由优先级200。
过程分析
查看设备上路由优先级配置,设置的bgp优先级确实比静态路由优先级高。
bgp 100
peer 10.213.250.252 as-number 100
peer 10.213.250.252 connect-interface LoopBack0
#
address-family vpnv4
peer 10.213.250.252 enable
peer 10.213.250.252 advertise-community
#
ip vpn-instance vpnzhw
#
address-family ipv4 unicast
preference 100 100 190
import-route direct
import-route static
ip route-static vpn-instance vpnzhw 10.206.17.8 29 10.212.47.242 preference 200
查看路由表
[sr66-2]dis ip routing-table vpn-instance vpnzhw
Destinations : 18 Routes : 18
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/32 Direct 0 0 127.0.0.1 InLoop0
10.206.17.8/29 Static 200 0 10.212.47.242 GE0/2
将静态路由删除之后查看路由表,bgp路由生效
[sr66-2]dis ip routing-table vpn-instance vpnzhw
Destinations : 18 Routes : 18
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/32 Direct 0 0 127.0.0.1 InLoop0
10.206.17.8/29 BGP 100 0 10.213.250.252 GE0/0
将静态路由加回来,发现依然是bgp生效。
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/32 Direct 0 0 127.0.0.1 InLoop0
10.206.17.8/29 BGP 100 0 10.213.250.252 GE0/0
查看故障静态路由生效时bgp routing table
Route distinguisher: 35:200(vpnzhw)
Total number of routes: 8
Network NextHop MED LocPrf PrefVal Path/Ogn
* > 10.206.17.8/29 10.212.47.242 0 32768 ?
* i 10.213.250.252 0 100 0 ?
查看静态路由删除后bgp routing table
Route distinguisher: 35:200(vpnzhw)
Total number of routes: 7
Network NextHop MED LocPrf PrefVal Path/Ogn
* >i 10.206.17.8/29 10.213.250.252 0 100 0 ?
查看静态路由删除重加回来之后的bgp routing table
Route distinguisher: 35:200(vpnzhw)
Total number of routes: 7
Network NextHop MED LocPrf PrefVal Path/Ogn
* >i 10.206.17.8/29 10.213.250.252 0 100 0 ?
异常时bgp里有两条路由,一条为本地引入的静态一条为从sr66-1学习过来的。因为本地引入的静态的prefer value私有属性值为32768所以优选,所以将该条路由加入RIB表。最终查dis ip routing-table查看路由表是静态路由优选了。
当删除静态路由后,静态路由失效,只有从对端学习过来的bgp路由生效。
当静态路由重新加回来的时候,因为静态路由在bgp routing里prefer value小,也就无法加入RIB表。也就无法在路由表里,bgp也就无法引入。(bgp引入路由必须该条路由存在于路由表里)
RIB表:
RIB(Routing Information Base,路由信息库),是一个集中管理路由信息的数据库,包含路由表信息以及路由周边信息(路由迭代信息、路由共享信息以及路由扩展信息)等。
路由器通过对路由表进行优选,把优选路由下发到FIB(Forwarding Information Base,转发信息库)表中,通过FIB表指导报文转发。
解决方法
开启BGP次优路由下刷RIB功能。将bgp里的两条路由都加入RIB,然后在RIB里根据路由优先级进行比较,此时bgp优先级高。最终bgp路由就会在dis ip routing里显示。
功能解释:
开启BGP次优路由下刷RIB功能后,当BGP路由表中最优路由为通过network命令生成或import-route命令引入的路由,次优路由为从BGP对等体收到的路由时,次优路由会下刷到RIB表项中。在某些组网情况下,执行本命令下刷到达同一目的网络次优路由到RIB后,当最优路由发生故障时,系统可以快速切换到次优路由。例如,设备有一条到达1.1.1.0/24网络的静态路由,其优先级高于BGP路由,BGP本地引入该静态路由同时从对等体收到到达该网段的路由,执行本命令BGP将从对等体收到的路由作为次优路由下刷到RIB,这时如果开启协议间的FRR功能,当静态路由发生故障时,本地引入的静态路由不可达,系统可以快速切换到BGP次优路由,从而大大缩短了流量中断时间。
功能配置:
bgp 100
flush suboptimal-route