網絡知識STP協議

一、STP 出現的背景

STP 是一個用於局域網中消除環路的協議。運行該協議的設備通過彼此交互信息而發現網絡中的環路,並適當對某些端口進行阻塞以消除環路。由於局域網規模的不斷增長,生成樹協議已經成為了當前最重要的局域網協議之一。


環路的網絡中,會產生如下兩種情況:

1、廣播風暴導致網絡不可用。

2、MAC 地址表震盪導致 MAC 地址表項被破壞。


二、STP 基本概念


網絡知識STP協議

一個根橋


樹形的網絡結構必須有樹根,於是 STP 引入了根橋(Root Bridge)概念。


對於一個 STP 網絡,根橋在全網中只有一個,它是整個網絡的邏輯中心,但不一定是物理中心。根橋會根據網絡拓撲的變化而動態變化。


網絡收斂後,根橋會按照一定的時間間隔產生並向外發送配置 BPDU,其他設備僅對該報文進行處理,傳達拓撲變化記錄,從而保證拓撲的穩定。


兩種度量


生成樹的生成計算有兩大基本度量依據: ID 和路徑開銷。


ID


ID 又分為: BID(Bridge ID)和 PID(Port ID)。


§BID:橋 ID


IEEE 802.1D 標準中規定 BID 是由 16 位的橋優先級(Bridge Priority)與橋 MAC 地址構成。 BID 橋優先級佔據高 16 位,其餘的低 48 位是 MAC 地址。


在 STP 網絡中,橋 ID 最小的設備會被選舉為根橋。


§PID:端口 ID


PID 由兩部分構成的,高 4 位是端口優先級,低 12 位是端口號。


PID 只在某些情況下對選擇指定端口有作用。


· 路徑開銷


路徑開銷(Path Cost)是一個端口變量,是 STP 協議用於選擇鏈路的參考值。 STP 協議通過計算路徑開銷,選擇較為“強壯”的鏈路,阻塞多餘的鏈路,將網絡修剪成無環路的樹形網絡結構。在一個 STP 網絡中,某端口到根橋累計的路徑開銷就是所經過的各個橋上的各端口的路徑開銷累加而成,這個值叫做根路徑開銷(Root Path Cost)。


三要素選舉


從環形網絡拓撲結構到樹形結構,總體來說有三個要素:根橋、根端口和指定端口


·根橋 RB(Root Bridge)


根橋就是網橋 ID 最小的橋,通過交互配置 BPDU 協議報文選出最小的 BID。


·根端口 RP(Root Port)


所謂根端口就是去往根橋路徑開銷最小的端口,根端口負責向根橋方向轉發數據,這個端口的選擇標準是依據根路徑開銷判定。在一臺設備上所有使能 STP 的端口中,根路徑開銷最小者,就是根端口。很顯然,在一個運行 STP 協議的設備上根端口有且只有一個,根橋上沒有根端口。


·指定端口 DP(Designated Port)


網絡知識STP協議

一旦根橋、根端口、指定端口選舉成功,則整個樹形拓撲建立完畢。在拓撲穩定後,只有根端口和指定端口轉發流量,其他的非根非指定端口都處於阻塞(Blocking)狀態,它們只接收 STP 協議報文而不轉發用戶流量。

四個比較原則


STP 選舉有四個比較原則,構成消息優先級向量: { 根橋 ID,累計根路徑開銷,發送設備 BID,發送端口 PID }。


網絡知識STP協議

在 STP 計算過程中,都遵循數值越小越好的原則。


·最小 BID:用來選舉根橋。運行 STP 協議的設備之間根據表 2 所示根橋 ID 字段選擇最小的BID。


·最小累計根路徑開銷:用來在非根橋上選擇根端口。在根橋上,每個端口到根橋的根路徑開銷都是 0。


· 最小發送者 BID:當一臺運行 STP 協議的設備要在兩個以上根路徑開銷相等的端口之中選擇根端口時,通過 STP 協議計算,將選擇接收到的配置消息中發送者 BID 較小的那個端口。

· 最小 PID:用於在根路徑開銷相同的情況下,不阻塞最小 PID 的端口,而是阻塞 PID 值較大的端口。

五種端口狀態


網絡知識STP協議


網絡知識STP協議

對於 STP,影響端口狀態和端口收斂有以下 3 個參數。


·Hello Time


運行 STP 協議的設備發送配置消息 BPDU 的時間間隔,用於設備檢測鏈路是否存在故障。設備每隔 Hello Time 時間會向周圍的設備發送 hello 報文,以確認鏈路是否存在故障。當網絡拓撲穩定之後,該計時器的修改只有在根橋修改後才有效。新的根橋會在發出的 BPDU報文中填充適當的字段以向其他非根橋傳遞該計時器修改的信息。但當拓撲變化之後, TCNPDU 的發送不受這個計時器的管理。


·Forward Delay


設備狀態遷移的延遲時間。鏈路故障會引發網絡重新進行生成樹的計算,生成樹的結構將發生相應的變化。不過重新計算得到的新配置消息無法立刻傳遍整個網絡,如果新選出的根端口和指定端口立刻就開始數據轉發的話,可能會造成臨時環路。為此, STP 採用了一種狀態遷移機制,新選出的根端口和指定端口要經過 2倍的Forward Delay延時後才能進入轉發狀態,這個延時保證了新的配置消息傳遍整個網絡,從而防止了臨時環路的產生。


說明:Forward Delay Timer 指一個端口處於 Listening 和 Learning 狀態的各自持續時間,默認是 15秒。即 Listening 狀態持續 15 秒,隨後 Learning 狀態再持續 15 秒。這兩個狀態下的端口會處於 Blocking 狀態,這正是 STP 用於避免臨時環路的關鍵。


·Max Age


端口的 BPDU 報文老化時間,可在根橋上通過命令人為改動老化時間。


Max Age 通過配置 BPDU 報文的傳輸,可保證 Max Age 在整網中一致。運行 STP 協議的網絡中非根橋設備收到配置 BPDU 報文後,報文中的 Message Age 和 Max Age 會進行比較:


§如果 Message Age 小於等於 Max Age,則該非根橋設備繼續轉發配置 BPDU 報文。


§如果 Message Age 大於 Max Age,則該配置 BPDU 報文將被老化。該非根橋設備直接丟棄該配置 BPDU,可認為網絡直徑過大,導致根橋連接失敗。


說明:如果配置 BPDU 是根橋發出的,則 Message Age 為 0。否則, Message Age 是從根橋發送到當前橋接收到 BPDU 的總時間,包括傳輸延時等。實際實現中,配置 BPDU 報文經過一個橋,Message Age 增加 1。


網絡知識STP協議

三、STP 報文格式

橋 ID、路徑開銷和端口 ID 等信息,所有這些信息都是通過 BPDU 協議報文傳輸。


·配置 BPDU 是一種心跳報文,只要端口使能 STP,則配置 BPDU 就會按照 Hello Time 定時器規定的時間間隔從指定端口發出。


·TCN BPDU 是在設備檢測到網絡拓撲發生變化時才發出。


BPDU 報文被封裝在以太網數據幀中,目的 MAC 是組播 MAC: 01-80-C2-00-00-00, Length/Type字段為 MAC 數據長度,後面是 LLC 頭, LLC 之後是 BPDU 報文頭。以太網數據幀格式如下圖。


網絡知識STP協議

配置 BPDU


通常所說的 BPDU 報文多數指配置 BPDU。


在初始化過程中,每個橋都主動發送配置 BPDU。但在網絡拓撲穩定以後,只有根橋主動發送配置BPDU,其他橋在收到上游傳來的配置 BPDU 後,才觸發發送自己的配置 BPDU。配置 BPDU 的長度至少要 35 個字節,包含了橋 ID、路徑開銷和端口 ID 等參數。只有當發送者的 BID 或端口的 PID兩個字段中至少有一個和本橋接收端口不同, BPDU 報文才會被處理,否則丟棄。這樣避免了處理和本端口信息一致的 BPDU 報文。


配置 BPDU 在以下 3 種情況下會產生:


· 只要端口使能 STP,則配置 BPDU 就會按照 Hello Time 定時器規定的時間間隔從指定端口發出。


· 當根端口收到配置 BPDU 時,根端口所在的設備會向自己的每一個指定端口複製一份配置BPDU。


· 當指定端口收到比自己差的配置 BPDU 時,會立刻向下遊設備發送自己的 BPDU。


BPDU 報文基本格式


網絡知識STP協議


網絡知識STP協議


標誌字段STP 中只使用了其最高位和最低位。


Flags 字段格式


網絡知識STP協議

TCN BPDU


TCN BPDU 內容比較簡單,只有表 1 中列出的前 3 個字段:協議號、版本和類型。類型字段是固定值 0x80,長度只有 4 個字節。


TCN BPDU 是指在下游拓撲發生變化時向上遊發送拓撲變化通知,直到根節點。


TCN BPDU 在如下兩種情況下會產生:


·端口狀態變為 Forwarding 狀態,且該設備上至少有一個指定端口。


·指定端口收到 TCN BPDU,複製 TCN BPDU 併發往根橋。


分享到:


相關文章: