STP 生成樹協議詳解:基本概念、相關術語、報文格式,學起來!
本期給大家分享STP生成樹協議詳解問答。
一、生成樹協議基本介紹
1. 生成樹的定義和目的
以太網交換網絡中為了進行鏈路備份,提高網絡可靠性,通常會使用冗余鏈路。但是使用冗余鏈路會在交換網絡上產生環路,引發廣播風暴以及MAC地址表不穩定等故障現象,從而導致用戶通信質量較差,甚至通信中斷。
為解決交換網絡中的環路問題,提出了生成樹協議STP(Spanning Tree Protocol)。生成樹協議演進如下:
生成樹協議中,MSTP兼容RSTP、STP,RSTP兼容STP。三種生成樹協議的比較如下表所示。
生成樹協議 | 特點 | 應用場景 |
STP | 形成一棵無環路的樹,解決廣播風暴并實現冗余備份。 收斂速度較慢。 | 無需區分用戶或業務流量,所有VLAN共享一棵生成樹。 |
RSTP | 形成一棵無環路的樹,解決廣播風暴并實現冗余備份。 收斂速度快。 | |
MSTP | 形成一棵無環路的樹,解決廣播風暴并實現冗余備份。 收斂速度快。 多棵生成樹在VLAN間實現負載均衡,不同VLAN的流量按照不同的路徑轉發。 | 需要區分用戶或業務流量,并實現負載分擔。不同的VLAN通過不同的生成樹轉發流量,每棵生成樹之間相互獨立。 |
生成樹協議目的:
在以太網交換網中部署生成樹協議后,如果網絡中出現環路,生成樹協議通過拓撲計算,可實現:
- 消除環路:通過阻塞冗余鏈路消除網絡中可能存在的網絡通信環路。
- 鏈路備份:當前活動的路徑發生故障時,激活冗余備份鏈路,恢復網絡連通性。
2. 生成樹協議的應用場景
在一個復雜的網絡中,網絡規劃者由于冗余備份的需要,一般都傾向于在設備之間部署多條物理鏈路,其中一條作主用鏈路,其他鏈路作備份。這樣就難免會形成環形網絡,若網絡中存在環路,可能會引起廣播風暴和MAC表項被破壞。
生成樹典型應用組網圖
如上圖,在網絡中部署STP協議,通過彼此交互信息發現網絡中的環路,并有選擇的對某個端口進行阻塞,最終將環形網絡結構修剪成無環路的樹形網絡結構,從而防止報文在環形網絡中不斷增生和無限循環,避免設備由于重復接收相同的報文造成處理能力下降。
二、STP機制原理詳解
1. STP相關概念
STP基本概念如下:
(1) 一個根橋
樹形的網絡結構必須有樹根,于是STP引入了根橋(Root Bridge)概念。
對于一個STP網絡,根橋在全網中只有一個,它是整個網絡的邏輯中心,但不一定是物理中心。
(2) 兩種度量
生成樹的生成計算有兩大基本度量依據:ID和路徑開銷。
① ID,又分為:BID(Bridge ID)和PID(Port ID)。
BID:橋ID。IEEE 802.1D標準中規定BID是由橋優先級(Bridge Priority)與橋MAC地址構成。BID橋優先級占據高16位(默認為32768,須為4096的整數倍,范圍0-61440),其余的低48位是MAC地址。在STP網絡中,橋ID最小的設備會被選舉為根橋。
PID:端口ID。PID由兩部分構成的,高4位是端口優先級,低12位是端口號。
② 路徑開銷(Path Cost)描述了連接網絡的端口 的“優劣”,端口類型和帶寬決定了該端口的路徑開銷,根交換機的根路徑開銷為零。其他交換機收到BPDU后,把報文中的根路徑開銷加上接收端口路徑開銷,得到該端口的“根路徑開銷”(Root Path Cost),根路徑開銷反映了某端口到根交換機的“遠近”。
(3) 三要素選舉
從環形網絡拓撲結構到樹形結構,總體來說有三個要素:根橋、根端口和指定端口。
- 選舉一個網橋ID最小(最優)的交換機作為根網橋(Root Bridge)
- 每個非根交換機選擇一個根端口(Root Port RP),即去往根橋路徑開銷最小的端口
- 每個交換網段選擇一個除根端口之外的轉發端口—指定端口(Designated Port DP),用于發送配置BPDU
- 堵塞其他(非根非指定端口)端口,該端口不轉發業務流量,但會持續接收和偵聽BPDU
(4) 四個比較原則
STP選舉有四個比較原則,構成消息優先級向量:{ 根橋ID,根路徑開銷,發送設備BID,發送端口PID },即配置BPDU報文的比較如下:
- 先比較根橋ID,越小越好
- 如果根橋ID相等,根路徑開銷越小越好
- 如果根橋ID和根路徑開銷相等,發送設備BID越小越好
- 如果根橋ID、根路徑開銷和發送設備BID相等,發送端口PID越小越好
記住生成樹協議所有優先級比較都是“小優”!
(5) 五種端口狀態
運行STP協議的設備上端口狀態如下表所示:
2. STP報文格式
STP報文類型有2種:
- 配置BPDU:通常所說的BPDU報文多數指配置BPDU,它是一種心跳報文,只要端口使能STP,則配置BPDU就會按照Hello Time定時器規定的時間間隔從指定端口發出。
- TCN BPDU:在設備檢測到網絡拓撲發生變化時才發出,指在下游拓撲發生變化時向上游發送拓撲變化通知,直到根節點
3. STP的配置BPDU
STP的配置BPDU報文被封裝在以太網數據幀中,特征為:
目的MAC是組播MAC:01-80-C2-00-00-00,Length/Type字段為MAC數據長度,后面是LLC頭,LLC之后是BPDU報文頭。
這里注意,現在大多數網絡應用都使用Ethernet V2格式,而交換機之間的BPDU則采用IEEE802.3 LLC格式封裝,兩者對比如下圖
在初始化過程中,每個橋都主動發送配置BPDU。但在網絡拓撲穩定以后,只有根橋主動發送配置BPDU,其他橋在收到上游傳來的配置BPDU后,才觸發發送自己的配置BPDU。
配置BPDU的長度至少要35個字節,主要攜帶(根網橋ID 、根路徑開銷、發送網橋ID、發送端口ID)這四個參數和(Hello time、Forwarding delay、MAXage)這三個計時器。
STP有三個計時器影響端口狀態和網絡收斂:
(1) Hello time
- 根交換機發送配置BPDU的時間間隔,缺省2s
- 感知拓撲變化的交換機發送TCN的時間間隔
(2) Forwaring delay:端口在listening或learning狀態停留的時間,缺省15s
(3) MAXage:交換機緩存的配置BPDU的老化時間,缺省20s
STP配置BPDU報文基本格式如下圖所示:
參數表格詳解:
4. STP的TCN BPDU
TCN BPDU是指在下游拓撲發生變化時向上游發送拓撲變化通知,直到根節點。TCN BPDU在如下兩種情況下會產生(STP/RSTP/MSTP機制均一致):
- 端口狀態變為Forwarding狀態。
- 指定端口收到TCN BPDU,復制TCN BPDU并發往根橋。
STP的TCN BPDU內容比較簡單,只有表1中列出的前3個字段:協議號、版本和類型,總長度只有4個字節,如下:
字段說明:
- Protocol Identifier:協議號為0
- Protocol Version Identifier:協議版本號為0,表示為STP(2是RSTP,3是MSTP)
- BPDU Type:類型字段均是固定值0x80,表示為TCN BPDU