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