tft每日頭條

 > 生活

 > 路由環路生成過程

路由環路生成過程

生活 更新时间:2025-02-01 00:55:57

人類的創造力與破壞力同樣強大"。網路互通,同樣也衍生出紛繁複雜的路由協議和各種因特網服務,以及"網絡安全"這個龐大的領域。這也是為什麼說當今所有的網絡通訊流量中,80%的資源都被浪費,隻有20%被用以有效數據的傳輸

防環機制就是在這樣一個大背景下産生的

環路出現在互聯網的各個層面,不同環路的出現原因與解決方法也不同。通常網絡環路分為第二層環路和第三層環路,所有環路的形成都是由目的路徑不明确導緻混亂而造成的。二層環路主要就是交換機廣播流的惡性循環。

三層環路就複雜多了,通常由各種網絡故障導緻!!!也是本文研究的重點。筆者将三層環路分成三類:單鍊路環路、跨結點環路、區域/AS間環路。

交換層廣播流與生成樹

衆所周知,交換網絡是一個小型的本地接入網(LAN),所以二層交換機默認允許轉發廣播流(路由器則默認丢棄)。除了廣播流,交換機查詢mac地址表無果時會将數據幀從除接收接口外的所有接口發送出去。

所以最初,當三個交換機兩兩相連時,一個數據幀會在其中無限循環。生成樹就是為了讓交換網絡中防環而出現的。由于具體的生成樹工作原理過于複雜需另成文,在此隻做介紹不做詳解。

路由環路生成過程(路由環路知識點總結)1

生成樹最原始的版本是802.1d,也就是STP(Spanning Tree Protocol),但這個版本的标準是所有VLAN共用一個生成樹,所以也叫CST(Common Spanning Tree)思科在此基礎上增強了一下,發布了PVST (Per Vlan Spanning Tree)。

802.1d的下一個版本是802.1w,也就是RSTP(Rapid STP),但還是共用生成樹,搞不懂IEEE不長點記性。于是思科又搞了一下,發布了PVRST 。

IEEE又基于思科的MISTP的方案,發布了802.1s(MSTP),這個就比較強了,但凡是大一點的交換網絡都用MSTP,也是現在的主流。

RIP的5種防環機制

Rip作為一個古老的路由協議,雖然正逐漸被淘汰,還是有必要了解一番以理解路由協議的進化史。

先談一個易理解的的程序員邏輯,即路由器接從F0接口收到的某個路由條目A不應該從F0反發出去(水平分割),但是距離矢量路由協議的路由更新要向外發送完整的路由表,因此從F0發出之前将A路由的度量值改為15,這樣對方收到的A的度量值為16不可達(計數最大跳&毒性逆轉)。

路由環路生成過程(路由環路知識點總結)2

當路由器R1檢測到某網段的網絡故障(比如收到icmp報錯),它将要做兩件事,第一,告訴其他路由器:"你們無法從我這裡到達這個子網",第二,尋找其他路徑到達這個子網。此時R1将抑制定時器,即在規定時間内不接收鄰居發來的關于該子網的路由。試想若沒有抑制定時器,這時鄰居正好發送該子網的路由,而這條路徑恰好經過R1,那麼後果将不堪設想。

在抑制時間内R1在做什麼呢?當然是等待rip網絡中所有路由器都收到這條16跳的路由後更正自己的路由表,因此需要觸發更新,不必等時間到期再發路由表。此外當某接口的度量值被改動了也會觸發更新,防環原理相同。

可以看出rip的5個防環機制中,設置最大跳才是終極武器,它配合抑制定時器,不僅能解決"單鍊路環路",更能防止"跨結點環路"。

EIGRP與DUAL算法

視角:周圍可視/局部視角。

Eigrp的進步之處在于多了兩張表:鄰居表與拓撲表。

鄰居表的建立直接避免了單鍊路環路:當在收到的路由更新中看到下一跳是自己,那沒得說了,這條更新定是來源于我的,拒收。

Eigrp的核心算法叫DUAL(彌散更新),其中有一條公式專門用來防止跨結點環路:當鄰居通向一個網絡的報告距離(RD)比本地路由器通向同一個目的網絡的可行距離(FD)短時,即符合了可行性條件(FC),該路徑被寫進拓撲表。但這樣的算法可想而知也是有缺陷的,即很多高開銷的可行備份路徑也會被當做"環路"而拒絕收錄。

有一個特例:手動彙總導緻的環路。

其實彙總本身是有"缺陷"的,當路由器把彙總的主類網路由更新傳給對端時就相當于讓對端生成了一些關于那些"不存在"的子類網路由指向自己。這樣就不合理了,如果該路由器有一個默認路由指向對端的話,環路就形成了,一個以不存在的子網ip為目的地址的惡意數據包就會在兩個路由器之間無限循環,直到跳數壽命終結。

路由環路生成過程(路由環路知識點總結)3

解決方法(默認開啟)是利用null0接口。本地生成的彙總路由指向這個邏輯空接口,這裡要提一下路由查詢的先後順序:收到數據包先查看普通的單播路由條目,再查看本地彙總路由條目,最後才看默認路由。如圖,這樣就可以識别出那些數據包是惡意數據包,并且從null0口丢棄。

Link state路由協議與SPF算法

視角:全局(整個區域)視角/上帝視角。

除了擁有鄰居表,ospf有一張很強悍的表,叫LSDB(鍊路狀态數據庫)(同is-is)。在每個ospf區域中,通過互發lsa(跨網段傳輸的鍊路通告),每個路由器都能夠獲悉所在的整個區域的拓撲和鍊路狀态。這樣一來在區域内選路就可以從全局的視角鎖定最佳路徑,并且百分百無環路,無論是單鍊路環路還是跨結點環路都可避免,這是鍊路狀态路由協議的創新之處。

OSPF區域間路由環路的避免又是通過哪種方式實現的?答案是:分層結構的拓撲實現。Ospf規定所有常規區域都要鍊接到骨幹層,即使物理上與骨幹層分隔,也要有條邏輯鍊路(虛鍊路)連接到骨幹區域。這種樹形結構從根本上就摒棄了環路。因此ospf也是天然無環的。

與ospf相似的IS-IS,則不要求L1層必須連接到L2層,因而有兩個獨特的防環機制:第一,非L2區域的通信都要通告L2區域轉發;第二,L2區域路由默認不會進入L1(除了路由洩露)。因而實現了防環。附圖:SPF樹。

BGP的高層防環機制

談到Bgp就要有關AS自治系統,bgp的防環主要分為AS内防環與AS間防環(可以類比ospf的區域内和區域間)。

AS間:路由更新的as-path字段包含所經過的所有AS号,當bgp路由器看到路由更新中有自己的AS号就會果斷放棄這條更新(但在特殊情況下可以用命令取消這個特性)。這就是距離向量與距離矢量之間的區别:距離矢量路由協議(如rip)隻記錄到達目的地經過多少步,而距離向量路由器則記錄了途中經過的路徑。看來學好思科還得咬文嚼字啊。

Ibgp的水平分割原則是:從IBGP鄰居所收到的路由信息,不會傳遞給其它的IBGP鄰居,但可以傳遞給EBGP鄰居。注意這和rip的水平分割不大一樣。水平分割是為了防止3個及以上的ibgp peer圍繞成環,造成自治系統内部的跨結點環路。

除了網絡故障帶來的路由環路,網絡的不合理規劃也會造成環路。比如在BGP中如果讓ibgp間的中轉路徑路由器處于另一個AS内的話就會造成環路。當然這隻是其中一個例子,意在說明人為的環路是很難避免的,但思科想的還真周到,提供了next-hop-unchange這條命令來處理上面那個環路。

路由環路生成過程(路由環路知識點總結)4

注意,通常使用路由反射器(RR)來解決水平分割帶來的路由不學習的問題,但有趣之處在于,水平分割用來防環,路由反射器用來防水平分割,因而反射器又産生了環。後來RR經過改進,增加了一個特性叫插入簇ID與起源ID。默認情況下RR會在路由更新中加入自己的router-id以及路由更新的起源路由器的router-id,這也是一種路徑向量的機制。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved