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