前文我們瞭解了路由引入相關話題,回顧請參考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的優先順序以後,對應次優路由沒有了;對應環路也沒有產生;
總結:通過上述實驗可以看到,路由引入主要容易產生次優路由和路由環路兩大問題,這兩個問題都可以修改路由協議優先順序或使用路由策略過濾路由來避免次優路由和路由環路;