爲有源頭活水來——生成樹技術

萌新學有餘力,整理《路由與交換技術》中關於生成樹技術的一些學習筆記,鞏固自己知識儲備的同時並與大家一起分享,才疏學淺,還請大家多多批評指正,筆芯~

中華文化,底蘊深厚,開篇借用一首來自宋代學問家朱熹先生的詩作正式開啓學習之路吧!


《觀書有感》
半畝方塘一鑑開,天光雲影共徘徊。
問渠那得清如許?爲有源頭活水來。

在這裏插入圖片描述


再回顧生成樹技術之前,先淺談一下什麼是網絡中的廣播風暴
在這裏插入圖片描述
廣播風暴也叫網絡廣播風暴,即一個數據包或幀被傳送到本地網段(由廣播域定義)上的每個節點就是廣播,網絡上的廣播幀由於被轉發,數量急劇增加而出現正常網絡通信的反常現象。

廣播風暴會佔用相當可觀的網絡帶寬,導致正常數據包無法正常運行。當廣播數據充斥網絡無法處理並佔用大量網絡帶寬,導致正常業務不能運行,這就發生了廣播風暴,造成局域網局部或整個網絡癱瘓。

1.生成樹協議的產生
在網絡發展初期,透明網橋是一個不得不提的重要角色。它比只會放大和廣播信號的集線器聰明得多,它會悄悄地把發向它的數據幀的源MAC地址和端口號記錄下來,下次碰到這個目的MAC地址的報文就只從記錄中的端口號發送出去,除非目的MAC地址沒有記錄在案或者目的MAC地址本身就是多播地址纔會向所有端口發送。

通過透明網橋,不同的局域網之間可以實現互通,網絡可操作的範圍得以擴大。並且由於透明網橋具備MAC地址學習功能,而不會像Hub那樣造成網絡報文衝撞氾濫。但是,金無足赤,透明網橋也有它的缺陷。它的缺陷就在於它的透明傳輸,透明網橋並不能像路由器那樣知道報文可以經過多少次轉發,一旦網絡存在環路就會造成報文在環路內不斷循環和增生,甚至造成恐怖的“廣播風暴”。

在這種大環境下,扮演着“救世主”角色的生成樹協議(Spanning Tree Protocol,STP)來到人間,其中以 IEEE的802.1D版本最爲流行。

—————爲有源頭活水來—————

2.生成樹概述
STP是一種第二層的鏈路管理協議,它用於維護一個無環路的網絡。
大家都知道,自然界中生長的樹是不會出現環路的,如果網絡也能夠像一棵樹一樣生長就不會出現環路。
在這裏插入圖片描述
於是,STP中定義了根橋(Root Bridge)、根端口(Root Port)、指定端口(Designated Port)、路徑開銷(Path Cost)等概念,目的就在於通過構造一棵自然樹的方法達到裁剪冗餘環路的目的,同時實現鏈路備份和路徑最優化。

用於構造這棵樹的算法稱爲生成樹算法(SPA)

生成樹算法會特意阻塞可能導致環路的冗餘路徑,以確保網絡中所有目的地之間只有一條邏輯路徑

但要實現這些功能,網橋之間必須要進行一些信息的交流,這些信息交流單元就稱爲網橋協議數據單元(BPDU)幀

BPDU是一種二層報文,目的MAC地址是多播地址:01-80-C2-00-00-00,所有支持STP的網橋都會接收並處理收到的BPDU 報文,該報文的數據區裏攜帶了用於生成樹計算的所有有用信息。阻塞的路徑不再接收和轉發用戶數據包,但是會接收用來防止環路的網橋協議數據單元(BPDU)幀。

如果網絡拓撲發生變化,需要啓用阻塞路徑來抵消網絡電纜或交換機故障的影響,STP就會重新計算路徑,將必要的端口解除阻塞,使冗餘路徑進入活動狀態。

3.基本術語
(1)根橋:每個生成樹實例都有一臺交換機被指定爲根橋。根橋是所有生成樹計算的
參考點,用以確定哪些冗餘路徑應被阻塞。

(2)端口角色
根端口:最靠近根橋的交換機端口

指定端口:網絡中獲准轉發流量的、除根端口之外的所有端口

非指定端口:爲防止環路而被置於阻塞狀態的所有端口

禁用端口:是處於管理性關閉狀態的交換機端口

端口開銷:端口開銷值與給定路徑上的每個交換機端口的端口速度相關聯

路徑開銷:路徑開銷是到根橋的路徑上所有端口開銷的總和

到根橋的最佳路徑:交換機到根橋的所有路徑中最短的一條路徑

BPDU(網橋協議數據單元):是運行STP交換機之間交換的消息幀

每個BPDU都包含4個重要字段:

1.根橋的BID
2.轉發根橋BPDU 的網橋的BID
3.到達根橋的開銷
4.轉發根橋BPDU 的網橋的端口ID

BID(網橋ID):內含有優先級值、發送方交換機的MAC地址以及可選的擴展系統 ID

端口ID:包含交換機端口的優先級、接口ID

交換機完成啓動後,生成樹便立即確定。如果交換機端口直接從阻塞轉換到轉發狀態,但交換機此時並不瞭解所有拓撲信息時,該端口可能會暫時造成數據環路。
爲此,STP引入了5種端口狀態:
在這裏插入圖片描述
端口處於各種端口狀態的時間長短取決於BPDU計時器,BPDU計時器狀態:

Hello時間
Hello時間是端口發送BPDU幀的間隔時間,此值默認爲2s,不過可調整爲1~10s之間的值;

轉發延遲
轉發延遲是處於偵聽和學習狀態的時間,默認情況下,每轉換一個狀態要等待15s,不過此時間可調整爲4~30s之間的值;

最大老化時間
最大老化時間計時器控制着交換機端口保存配置BPDU信息的最長時間,此值默認爲20s,不過可調整爲6~40s之間的值;

4.STP端口狀態轉換過程
STP端口狀態的轉換過程有以下5種:
(1)如果一個被阻塞的接口(非指定端口)在收到一個BPDU後,20s的時間內沒有收到BPDU,則開始進入偵聽狀態。
(2)交換機端口初始化後直接進入偵聽狀態。
(3)在偵聽狀態中,交換機通過相互間的BPDU交換選出根橋、根端口、指定端口。在一個轉發延遲(默認15s)之後進入下個狀態。如果端口類型是以上三種之一則進入偵聽狀態,否則進入阻塞狀態。
(4)在偵聽狀態中,BPDU 交換就緒。開始學習新的MAC 地址。在一個轉發延遲之後(默認15s)進入下個狀態。
(5)在轉發狀態中,端口可以接收和發送BPDU,可以接收和發送數據幀。端口現在就是生成樹拓撲中的一個具有全部功能的交換機端口。
在這裏插入圖片描述
5.BPDU更新過程
●每臺交換機最初都將自己作爲根橋;

●當交換機或其他交換機收到BPDU時,將自己當前的根橋BID與收到的BPDU幀中的進行比較(先比較優先級,後比較MAC地址),如果收到的BPDU中的根橋的BID比當前的根橋BID更小(BID最小的網橋爲根橋),則當前交換機將更新並轉發此BPDU(此時不再自己生成 BPDU),修改發送網橋 BID爲當前網橋的BID,到根的開銷增加送出端口的端口開銷,發送端口ID爲送出端口的ID。

●當交換機收到來自兩個不同接口的BPDU,其標識的根橋BID一致,就會比較其到根橋開銷的大小,忽略開銷大的BPDU,更新並轉發小的BPDU。

●當交換機收到來自兩個不同接口的BPDU,其標識的根橋BID一致,開銷也一樣,就會比較發送網橋的BID的大小,忽略發送網橋BID大的BPDU,更新並轉發小的BPDU。如果發送網橋的BID也一樣,就會比較發送端口ID的大小,忽略發送端口ID大的BPDU,更新並轉發小的 BPDU。

6.STP收斂的步驟

1.選舉根橋
●根橋的選舉在交換機完成啓動時或網絡中檢測到路徑故障時觸發。一開始,所有交換機端口都配置爲阻塞狀態,此狀態默認情況下會持續20s。
●由於生成樹技術允許網絡的端與端之間最多有7臺交換機,因此整個根橋的選舉過程能夠在14s內完成,此時間短於交換機端口處於阻塞狀態的時間。
●交換BPDU,每2s發送一次,選取BID最小的網橋爲根橋。

2.選舉根端口
除根橋外的其餘每臺交換機都需具有一個根端口(到根橋的路徑開銷最低的端口)

●如果當同一交換機上有兩個以上的端口到根橋的路徑開銷相同時,做出如下選擇:
(1)到根路徑的上一級網橋BID不同時:選擇其BID小的路徑。
(2)到根路徑的上一級網橋BID相同時:選擇其BPDU中的端口ID小的路徑。

●當交換機從具有等價路徑的多個端口中選擇一個作爲根端口時,落選的端口會被配置
爲非指定端口(阻塞狀態)以避免環路。

3.選舉指定端口和非指定端口
交換網絡中的每個網段只能有一個指定端口

●當兩臺交換機交換BPDU幀時,它們會檢查收到的BPDU幀內的發送方BID,BID較小的交換機會將其端口配置爲指定角色,BID較大的交換機將其交換機端口配置爲非指定角色(阻塞狀態)。

看到這裏,來個例子,加深一下印象,體會STP收斂的過程!
在這裏插入圖片描述
1.首先選取根橋,根橋的選取是根據優先級和MAC地址來選取的。
首先比較優先級,如果優先級小那麼就被選舉爲根橋,如果優先級相同,那麼就比較MAC地址,MAC地址小的選舉爲根橋,如圖所示,首先比較優先級,S1的優先級最小,就選舉其爲根橋。

2.端口選取,分爲根端口和指定端口
途中所有鏈路速度均爲百兆,因此鏈路開銷爲19,根橋不需要選取根端口,因此S1的F0/1和F0/2均爲指定端口。
非根橋的交換機需要選取根端口,靠近根橋的交換機端口即爲根端口,因此,S3的F0/1和S2的F0/1被選舉爲根端口。

在Trunk1鏈路,S2上的F0/1到根橋的開銷爲 19,S1上的F0/1到根橋的開銷爲0,因此選舉S1 的F0/1爲指定端口。
在Trunk2鏈路上S2上的F0/2端口到根橋的開銷爲19,S3上的F0/2端口到根橋的開銷爲19,兩個開銷一樣,就比較MAC地址大小,因此S2上的F0/2被選舉爲指定端口。
在Trunk3鏈路上S3上的F0/1端口到根橋的開銷爲19,S1上的 F0/2端口到根橋的開銷爲0,因此選舉S1上的F0/2爲指定端口。

3.最後選舉非指定端口,即S3上的F0/2端口。
在這裏插入圖片描述
最後,STP給透明網橋帶來了新生。但是,隨着應用的深入和網絡技術的發展,它的缺點在應用中也被暴露了出來。

STP的缺陷主要表現在收斂速度上

當拓撲發生變化,新的配置消息要經過一定的時延才能傳播到整個網絡,這個時延稱爲轉發延遲,協議默認值是15s。在所有網橋收到這個變化的消息之前,若舊拓撲結構中處於轉發的端口還沒有發現自己應該在新的拓撲中停止轉發,則可能存在臨時環路。

爲了解決臨時環路的問題,生成樹使用了一種定時器策略,即在端口從阻塞狀態到轉發狀態中間加上一個只學習MAC地址但不參與轉發的中間狀態,兩次狀態切換的時間長度都是轉發延遲,這樣就可以保證在拓撲變化的時候不會產生臨時環路。但是,這個看似良好的解決方案實際上帶來的卻是至少兩倍轉發延遲的收斂時間。

7.快速生成樹協議RSTP
RSTP在STP基礎上做了三點重要改進,使得收斂速度快得多(最快1s以內)。

★第一點改進:爲根端口和指定端口設置了快速切換用的替換端口(Alternate Port)和備份端口(Backup Port)兩種角色,當根端口/指定端口失效的情況下,替換端口/備份端口就會無時延地進入轉發狀態。

★第二點改進:在只連接了兩個交換端口的點對點鏈路中,指定端口只需與下游網橋進行一次握手就可以無時延地進人轉發狀態。如果是連接了三個以上網橋的共享鏈路,下游網橋是不會響應上游指定端口發出的握手請求的,只能等待兩倍轉發延遲時間進入轉發狀態。

★第三點改進:直接與終端相連而不是把其他網橋相連的端口定義爲邊緣端口(Edge
Port)
。邊緣端口可以直接進入轉發狀態,不需要任何延時,但由於網橋無法知道端口是否是直接與終端相連,所以需要人工配置。


對於生成樹技術的理解,萌新還有許多不足之處,還請讀者朋友多多指正,謝謝啦~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章