48小时系统班试听入口

【大神笔记】解析双点双向重分发中的次优路径和环路问题

发布作者:新盟教育 发布日期:2022-08-08 浏览人数:9860人

快来点击查看吧!

概述




3.1.jpeg


上面拓扑为双点双向重发布的示意图,如果不加控制,将会发生次优路由和环路等故障,产生故障的过程具体分析如下:


在拓扑中,R1将网段10.0.0.0/24引入到OSPF。R2/R3分别将该路由引入ISIS,正常情况下,R2/R3将路由引入ISIS会有先后,假设R3先于R2将该路由引入到IS-IS。那么R2就会同时从OSPF和IS-IS学到10.0.0.0/24的路由。于是R2会根据路由协议的优先级优选通过IS-IS学到的路由(OSPF的外部路由优先级为150,IS-IS的路由优先级为15)


于是,当R2访问10.0.0.0/24网段时,会使用R4-R3-R1这条次优路径。为了避免出现这种情况,可以在路由器R2上使用route-policy修改OSPF ASE路由的优先级,使得OSPF ASE的路由优先于从IS-IS学到的路由,使得R2选择正确的路由。


当R1连接网络10.0.0.0/24的接口断掉之后,虽然该条外部LSA会在OSPF区域内老化,但是由于R2通过IS-IS已经学习到了10.0.0.0/24网络,所以R2会将该网络引入到OSPF,进而使R1和R3会通过R2学习到了网络10.0.0.0/24。


当R2访问访问网络10.0.0.0/24时,流量会沿R4-R3-R1-R2的路径发送,从而引发环路。为避免这种情况,我们可以通过给路由条目添加标记tag标签,然后对特定标签进行过滤的方法来避免环路的发生。


这只是一种环路的情况,如果在两个进程中双点双向重分发路由,就算引入的OSPF没有失效也可能产生环路。



次优路径实验




3.2.jpeg


完成基础配置,然后在R2和R3上做双向重分发,在R1上将L0重分发进入OSPF中,注意ISIS在level 2,区域中才能进行重分发,level 1中不能进行重分发。


在R2上查看对应的去往1.1.1.1的路由条目(直接走R1)


3.3.png


R4上进行查看路由表:会发送给R2。


3.4.png


R3查看路由表,会发送给R4,这里产生次优路径的问题。


3.5.png


R4 ping R1:可以ping通。


3.6.jpeg


所以R3到达1.1.1.1的路径如下:


3.7.jpeg


具体分析报文交互情况,为什么会产生这样的情况路由:


R2上:发送了1.1.1.1给R4。


3.8.jpeg


在R3上:没有发送1.1.1.1给R4,被抑制了。


3.9.jpeg


R1上:收到了R3发送的1.1.1.1/32。


3.10.jpeg


R4上:从R2发送了,R3并没有发送给他。


3.11.png


总结:


因为有路由协议上的机制,当R2将路由条目先重分发进入IS-IS中以后R4和R3会收到了R2发送条目,R3会发现接收条目的AD值比自几的小(用自己的150进行比较),所以就不会发送自己的OSPF协议中R1的L0路由条目发送给R2和R4了,这样R2和R4就只有一条最优的路由去往R1。(如果是R3先重分发路由进入IS-IS,R2的OSPF重分发也会被抑制)


具体被抑制的原因:一种路由协议在引入其他路由协议时,只引入路由协议在路由表中存在的路由,不出现在路由表中的路由是不会被引入的,这种对路由表中路由进行控制的行为是矢量行为。


同时R3会将从ISIS区域收到的更好1.1.1.1的条目发送给R1,这样R1就会有两个1.1.1.1的路由条目了。


这种情况产生了次优路径,但是不会有环路。这种抑制机制保证了无环路的产生。


3.12.jpeg


为了制造能够完全双向重分发的,不被路由机制抑制的环境,只有在两个进程的OSPF下进行。




双进程互双点双向重分发环路



 

3.13.jpeg


其他条件不变,仅仅是将ISIS更换成了OSPF进程2。现在查看R4上的路由条目:


3.14.png


去往1.1.1.1有两个下一跳,负载分担;在R2和R3上查看对应的条目:有负载分担分担的路由。


3.15.png


3.16.png


说明双点双向重分发了,并且为类型2的路由条目,cost值不会累加,这样就可能产生环路(R4->R2->R4;R4->R3-R4)。


当然,如果R4发送给R2或者R3后,R3和R2负载到直接去往R1的路由,则没有环路。用R4 ping R1测试:


3.17.jpeg


这里刚刚好走对了路由,所以是通的,再看看R1上的OSPF的LSDB:


3.18.jpeg


有三条1.1.1.1的条目,其中一条是自己引入的,另外两条是R2和R3发送的。现在我们要解决的问题,让R2,R3去往1.1.1.1只有直接发送给R1的路由,不会发送回给R4,防止环路出现;并且在R1上只有一条1.1.1.1的条目,也就是自己产生的,没有从R2,R3发送回来的。


这时就使用路程策略加tag,保证重分发进入另外进程的路由不会被重新重分发回来。R2的路由策略名称进程1->进程2的记为12-2,R3的进程1->进程2记为12-3,进程2->进程1的记为21-2或者21-3。Tag就去掉中间的-符号。


在R2上:


配置路由策略:


route-policy 12-2 deny node 10 //进程1->进程2if-match tag 213 //拒绝进程2->进程1,R3上发送的条目route-policy 12-2 permit node 20apply tag 122 //其他的打上122的tagroute-policy 21-2 deny node 10 //进程2->进程1if-match tag 123 //拒绝进程1->进程2,R3上发送的条目route-policy 21-2 permit node 20apply tag 212 //其他的打上212的tag


ospf中运用重分发:


ospf 1


import-route ospf 2 route-policy 21-2area 0.0.0.0network 10.12.12.2 0.0.0.0


ospf 2


import-route ospf 1 route-policy 12-2area 0.0.0.0network 10.24.24.2 0.0.0.0


在R3上同理:


配置路由策略



route-policy 12-3 deny node 10 //进程1->进程2if-match tag 212 //拒绝进程2->进程1,R2上发送的条目route-policy 12-3 permit node 20apply tag 123 //其他的打上123的tagroute-policy 21-3 deny node 10 //进程2->进程1if-match tag 122 //拒绝进程1->进程2,R3上发送的条目route-policy 21-3 permit node 20apply tag 213 //其他的打上212的tag


ospf中重分发:


ospf 1


import-route ospf 2 route-policy 21-3area 0.0.0.0network 10.13.13.3 0.0.0.0


ospf 2


import-route ospf 1 route-policy 12-3area 0.0.0.0network 10.34.34.3 0.0.0.0


这样在R1上解决了1.1.1.1/32从R2和R3发送过来的情况:


3.18.jpeg


但是在R2和R3上依然会有两个负载分担的路由条目,因为只是自己会接收,但是不会重分发:


3.20.png


所以我们将重分发进入进程2的条目cost修改大一点即可:


R2上:


route-policy 12-2 permit node 20apply cost 150apply tag 122


R3上:


route-policy 12-3 permit node 20apply cost 150apply tag 123


这样从R2和R3上再去观察:


3.21.png


只有一条最优路径了,这样就不可能产生环路。




 网工界市场认可度极高的华为认证,你考了吗?


拿下华为HCIE认证之后,你可以:

  • 跨越90%企业的招聘硬门槛

  • 增加70%就业机会

  • 拿下BAT全国TOP100大厂敲门砖

  • 体系化得到网络技术硬实力

  • 技术大佬年薪可达30w+