前文我們了解了路由引入相關話題,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/15359902.html;今天我們來討論下由於路由引入所導致的問題以及怎么避免此類問題的解決方案;
各路由協議在IP路由表中的默認優先級

提示:以上是各路由協議在ip路由表中的優先級;我們知道對於路由器來說,它最終依靠的是ip路由表來轉發數據;對於去往同一網絡的路由,優先級數字越小,表示優先級越高;優先級越高,對應也就表示路由越優先;即對應路由優先存放在路由表;如果優先級相同,則此時才會比對開銷,開銷越小的路由,對應路由優先存放在ip路由表中,即在數據包轉發選路時,優先選擇開銷小的路由;如果優先級、開銷都一樣,則兩個路由對應的鏈路,負載分擔對應網絡流量;
路由引入導致的次優路由

提示:如上圖所示,對於2.2.2.2這個網絡的路由,首先RTD通過RIP向RTC和RTB發送,對應RTC和RTB都會通過RIP學習到對應路由信息;此時如果我們在RTC上把RIP的路由引入至isis中,那么對應2.2.2.2的路由會隨之被引入之isis網絡中;對於RTB來說,此時它既可以通過RIP學習到達2.2.2.2的路由,同時也可以通過ISIS學習到達2.2.2.2的路由;由於isis路由協議的優先級要高於RIP,所以RTB的路由表中只會存在ISIS學習到達2.2.2.2的路由;即RTB要想和2.2.2.2通信,它需要走RTB--->RTA--->RTA--->RTC--->RTD,很顯然沒有RTB--->RTD路徑短;所以此時就會產生次優路由;
解決次優路由方案-->利用路由過濾

提示:解決類似次優路由的方法,我們可以在RTB上通過路由策略,將對應引入的路由過濾掉;這樣一來RTB就不會通過ISIS學習到引入的路由,對應也就不會產生次優路由;
解決次優路由方案-->調整路由協議優先級

提示:如上圖所示,我們還可以通過修改ISIS路由協議的優先級,從而來影響RTB上路由表中的路由條目;我們把RTB上ISIS的優先級調整至大於RIP默認優先級100即可解決次優路由;或者我們調整RIP優先級至小於ISIS默認優先級15也行;
路由引入導致的路由環路

提示:如上圖所示,首先我們在RTA上將2.2.2.2的路由引入之OSPF中,並將對應開銷更改為2,此操作會導致RTB、RTC、RTE通過ospf5類LSA學習到2.2.2.2的路由,對應路由的優先級為150,開銷為2;我們在RTE上將ospf路由引入之ISIS中,此操作會導致RTD通過ISIS學習到達2.2.2.2的路由,優先級為15,開銷為1(默認種子度量值為1),同時RTD也會通過LSP包向RTC更新路由;如果此時我們在RTC上將isis進程中的路由再次引入至ospf中,此時對應2.2.2.2的路由會隨之被引入至opsf進程,其優先級為150,開銷為1;此時RTB收到優先級相同,開銷要小於RTA發送的LSA,此時RTB的路由表中就只會存放RTC發送到LSA更新,並計算對應路由存放在ip路由表中;這樣一來RTB要訪問2.2.2.2網絡,此時路由環路就產生了;首先RTB訪問2.2.2.2網絡,它會把數據包發送至RTC,而不會發送至RTA,原因是RTC發送的LSA中對應路由的開銷要小於RTA發送的LSA開銷要小;所以對於RTB來說,它去往2.2.2.2的路由,其下一跳為RTC;對應RTC去往2.2.2.2的下一跳為RTD,RTD去往2.2.2.2的下一跳為RTE,RTE去往2.2.2.2的下一跳為RTB;最終直到對應數據包的TTL值減為0以后,對應數據包才會停止;
解決路由環路方案-->利用路由過濾避免環路

提示:路由環路形成最主要的原因是我們把引入的路由再次引入至原路由協議;我們可以通過路由策略將對應引入路由(原路由協議已經存在的路由),再次引入時將其過濾掉即可;如上圖所示,我們可以在RTC上再次引入路由時,直接將原ospf中已經存在的2.2.2.2的路由過濾掉即可;
解決路由環路方案-->調整路由協議優先級避免環路

提示:我們知道路由引入的必要條件是對應路由必須存在於對應路由器的路由表中才可以執行路由引入;如果通過調整優先級將對應路由不存在路由表中即可解除環路;對應能影響RTC路由表中的信息,我們可以調整ISIS優先級至大於ospf外部路由默認優先級150即可;調整以后,對應RTC通過ISIS學習到的路由,就不會存放於路由表中,因為RTC通過ospf學習到達外部路由其優先級為150,對應通過isis學習到達路由優先級為160,所以RTC的路由表只會存放優先級略小的路由條目;這樣一來RTC收到去往2.2.2.2的路由,其下一條為RTB,而RTB收到去往2.2.2.2的下一跳為RTA,RTA和2.2.2.2為直連;最終環路被破壞;
實驗:如下拓撲,通過配置路由引入,實現全網互通

R1的配置
sys sys R1 int g0/0/0 ip add 12.0.0.1 24 int g0/0/1 ip add 13.0.0.1 24 rip 1 ver 2 net 12.0.0.0 net 13.0.0.0
R2的配置
sys sys R2 int g0/0/0 ip add 12.0.0.2 24 int g0/0/1 ip add 24.0.0.2 24 rip 1 ver 2 net 12.0.0.0 ospf 1 router-id 2.2.2.2 area 0 net 24.0.0.2 0.0.0.0
R3的配置
sys sys R3 int g0/0/0 ip add 13.0.0.3 24 int g0/0/1 ip add 34.0.0.3 24 rip 1 ver 2 net 13.0.0.0 ospf 1 router-id 3.3.3.3 area 0 net 34.0.0.3 0.0.0.0
R4的配置
sys sys R4 int g0/0/0 ip add 24.0.0.4 24 int g0/0/1 ip add 34.0.0.4 24 int s4/0/0 ip add 45.0.0.4 24 ospf 1 router-id 4.4.4.4 area 0 net 24.0.0.4 0.0.0.0 net 34.0.0.4 0.0.0.0 net 45.0.0.4 0.0.0.0
R5的配置
sys sys R5 int s4/0/0 ip add 45.0.0.5 24 int lo 1 ip add 5.5.5.5 32 ospf 1 router-id 5.5.5.5 area 0 net 45.0.0.5 0.0.0.0
在R5引入直連路由5.5.5.5至ospf中

驗證:在ospf路由器上,查看路由表,看看對應路由器是否學習到5.5.5.5的路由?



提示:可以看到ospf路由器都可以通過ospf學習到R5注入的直連路由5.5.5.5,對應路由的優先級為150,開銷為1;此時R2、R3、R4都能正常和5.5.5.5通信;
在R2上將ospf路由注入至RIP中

驗證:查看R3的路由表,看看對應5.5.5.5的路由下一條會是R1還是R4?

提示:可以看到在R2上將ospf路由引入至RIP以后,對應R3的路由表中5.5.5.5的路由就從原來的ospf進程學習變為RIP學習到的,其原因是RIP的優先級要高於ospf外部引入優先級,所以在路由表中RIP學習到的路由優先ospf外部路由;從R3的路由表來看,此時次優路由就產生了;此時R3要想訪問5.5.5.5,此時數據包會先發給R1--->R2---->R4----R5;
驗證:用tracert命令測試,看看R3到達5.5.5.5是怎么走的?

提示:從上面的過程來看,可以明確知道R3訪問5.5.5.5的流量首先發送給R1,然后在發送給R2,后面R4沒有到達R1的路由,所以后面就不通;
在R3上修改RIP優先級,避免次優路由

提示:可以看到在R3上修改了RIP的優先級為160以后,對應5.5.5.5的路由的下一跳由原來的R1變為了R4;
驗證:在R3上用tracert命令測試去往5.5.5.5對應數據包走向

提示:可以看到此時R3可以正常和5.5.5.5通信,對應數據包走向是R3<--->R4<--->R5;
刪除R3優先級調整

在R2上新建路由策略,拒絕5.5.5.5的路由

調用路由策略

驗證:查看R3的路由表,看看對應去往5.5.5.5的路由下一條是否有變化?

提示:可以看到,我們在R2上通過路由策略過濾路由也可以避免次優路由的產生;、
刪除R2上的策略路由和acl

在R3上將RIP路由引入至ospf中

驗證:查看R4的路由表,看看對應5.5.5.5的路由下一跳是否有變化?

提示:可以看到我們在R3上將RIP進程路由引入至ospf以后,原來R4通過R5發送的5類LSA學習到5.5.5.5的路由,其下一跳從原來的45.0.0.5變為了34.0.0.3;在ospf中s4/0/0接口開銷為48大於g0/0/1口開銷,所以ospf認為從g0/0/1口學習到5.5.5.5的路由更優;
驗證:在R1或R2或R3或R4上任意台路由器上,用tracert測試到達5.5.5.5的路由走向

提示:可以看到此時R1去訪問5.5.5.5,對應數據包在R2、R4、R3、R1鏈路上來回跑,從上面的現象可以斷定此時路由出現了環路;
在R3上通過修改RIP優先級來避免環路

提示:可以看到在R3上修改了RIP的優先級以后,對應去往5.5.5.5的路由下一跳由13.0.0.1變為了34.0.0.4;
驗證:查看R4的路由表,看看對應去往5.5.5.5的路由下一跳是否有變化?

提示:可以看到此時R4到達5.5.5.5的下一跳也變為了R5;這是因為此時R3引入rip路由中就沒有5.5.5.5的路由(因為在R3上RIP的優先級為160,而通過R4 這邊學習到達5.5.5.5的路由優先級為150,所以此時路由表中的5.5.5.5的路由不是和RIP相關,所以把rip路由引入至ospf時,對應5.5.5.5的路由不包含其中);這樣一來環路就破壞了;
驗證:在R1、R2、R3或R4任意一台路由器上測試去往5.5.5.5,看看對應網絡是否還會有環路呢?




提示:可以看到4個路由器都可以正常和5.5.5.5通信,並且環路也沒有了;
在R3上刪除優先級調整,新建路由策略過濾5.5.5.5的路由

調用策略之前R4去往5.5.5.5的下一跳

調用路由策略進行路由過濾

驗證:查看R4的路由表,看看去往5.5.5.5的路由下一跳是否變化?

提示:可以看到此時R4的路由去往5.5.5.5的下一跳為R5;這意味着環路被破壞;
驗證:在R1或R2或R3或R4上用tracert命令測試去往5.5.5.5的路由是否可以正常通信?

提示:可以看到R3能夠和5.5.5.5正常通信,這說明路由環路已經被破壞;但是R3和5.5.5.5的通信是次優路由;
在R3調整RIP優先級解決次優路由

提示:可以看到在R3上調整了RIP的優先級以后,對應次優路由沒有了;對應環路也沒有產生;
總結:通過上述實驗可以看到,路由引入主要容易產生次優路由和路由環路兩大問題,這兩個問題都可以修改路由協議優先級或使用路由策略過濾路由來避免次優路由和路由環路;
