網絡工程師修仙指北---STP(Spanning Tree Protocol)
網絡工程師修仙指北---STP(Spanning Tree Protocol)
Hello哇,歡迎來到《網絡工程是修仙指北系列》,今天我們接著上一篇VLAN的內容,繼續為大家介紹網絡交換二層技術中另一個重要的內容---STP
一口小酒??,一首歌??,阿軒帶你修成仙!
上一篇中我們講到,通過VLAN的技術可以實現交換機之間通過一根線纜能夠實現所有VLAN間的通信。
那么大家有沒有想過一個問題,就是如果我這根線纜出現了故障,那是否就意味著我所有的通信就中斷了呢?那么我又沒有什么方法避免呢?
有的人可能就會說了,那可以再接一根線,這樣一根線斷了的話另一根還在。
沒錯,這確實是一個好辦法,但是有沒有想過這樣的一個問題呢:
如圖:

我們說交換機是工作在二層的,他們之間的通信和信息的宣告是通過ARP廣播報文來實現的.
假設現在A和B都是兩個全新的交換機;
那么當交換機剛開機的時候,我們以交換機A為例,首先它看到的是我在0/3接口上對應的一個11的地址,然后我發送廣播,架設從0/1發送,那么B接收,并查看MAC地址表,這個時候發現B上面是沒有MAC地址表的,所有我接收完成后會再發送廣播,這個廣播將從0/1和0/3發送;
這個時候A將從0/2接收到B發送的廣播報文,那A就會產生疑惑,為什么我之前記錄的是11對應的是從0/3過來的,現在變成了0/2?
那這個時候是不是就產生了環路呢?
這其實就是我們所說的二層環路,二層環路是一件很危險的事情的,二層的環路會帶來廣播風暴,大量的廣播風暴會使交換機高負荷工作,輕則設備宕機,嚴重的甚至會造成設備過溫,燒壞硬盤,配置丟失
那么我們有沒有一種技術,既能夠避免二層環路的產生,又能夠支持我接入多條鏈路為主用鏈路做備份呢?
這其實就是STP協議出現的初衷
STP的好處
講到這里,其實我們能夠很清楚的看到,STP的好處就是避免二層網絡出現環路,避免二層網絡中的廣播風暴的產生
STP的工作原理
其實STP的工作原理就是在邏輯上把交換機中的一個端口斷開,防止環路的產生,當主用鏈路故障的時候,會將這個端口自動啟起來,開啟備用鏈路,恢復通信(不要指望能夠很快,這個后面應該會講到---如果沒有喝多的話)
STP的算法
那么STP是如何工作呢?STP的工作大致遵循下面的幾個步驟:
首先STP需要選擇根網橋;
其次選擇根端口;
第三選擇指定端口;
最后將其余端口邏輯down掉。
接下來我們依次來講解每個步驟的工作內容和規則
選擇根網橋
生成樹協議,你就想象成有一棵樹,有樹的話就必須要有根
那么這個根要如何定義呢,主要是遵循以下規則:選擇根網橋ID最小的作為根
那么什么是根網橋ID呢?
網橋ID即BID(Bridge ID),是由網橋優先級+網橋MAC組成的。
網橋優先級的取值范圍為0-61440,默認值是32768,所以一般沒有特殊設定的話我們在選取根的時候是選擇網橋MAC地址最小的,當然優先級是能夠手動指定的。
手動配置的話需要遵循以下幾點:
- 必須是2的整數倍
- 必須是16的證書倍
- 最小值是4096
因此常用的優先級為4096/8192/24576/32768
選擇根端口
選擇完根網橋后,需要選擇根端口。
根端口是用來做什么的呢?
根端口是用來接收從根過來的消息的端口,所以必須是要在非根網橋上去進行選擇,并且選擇一個到達根最近的端口作為根端口
根端口的選擇遵循以下順序:
- 最低的到達根網橋的路徑開銷,帶寬越高,開銷越小,如果開銷值一致,則進行下一步比較;
- 最低的發送方網橋ID,如果一樣,則進行下一步比較;
- 最低的端口優先級,端口優先級的取值范圍是0-240,默認是128,如果一致則進行下一步比較;
- 發送方最低的端口ID,每個端口都有端口ID,端口ID由端口優先級+端口編號組成
選擇指定端口
指定端口是指用來傳遞消息的端口
首先需要確認的一點就是,根網橋上的所有端口都是指定端口。
這個應該就很好理解了,根網橋,所有的端口肯定都要傳遞數據轉發數據幀的,總不至于把根都切斷了吧(斷。。。。根。。。。。斷子絕孫?????)
所以指定端口是在非根網橋上進行選擇的,需要遵循以下四步:
- BPDU中的根網橋ID
- 到達根網橋的最低開銷
- 發送方的網橋ID
- 若優先級相同則選擇最低MAC地址
BPDU
那么在STP協議中,端口的變化,或者說選舉過程中的數據包和信息又要通過什么來傳遞呢?
STP的信息其實是通過BPDU來傳遞的,我們可以將BPDU理解為信息的載體,將需要比較的信息來進行傳遞和交換
BPDU是通過組播來傳遞的,組播地址為01-80-C2-00-00-00
BPDU其實分為兩種:
- 配置BPDU,用于首次生成樹的計算
- 拓撲變更BPDU(TCN BPDU),用于通告網絡拓撲的變化
在一個二層網絡中,不太可能說是不限制整個網絡的大小的,所以在BPDU中由一個參數叫Message Age,從根出來的Message Age的值為0,每經過一個交換機,該值加一,默認的最大值為20,當Message Age的值達到Max Age值的時候,非根網橋將丟棄該配置BPDU

那么前面我們說了STP的作用主要是將端口邏輯Down掉,那么其實在STP中有以下幾種端口狀態:
端口狀態
- 禁用狀態,Disable,不發送不接收BPDU,不學習MAC,不轉發
- 阻塞,Discarding,不發送BPDU,但接收BPDU,不學習MAC,不轉發數據
- 偵聽,Listening,發送和接收BPDU,不學習MAC,不轉發數據
- 學習,Learning,學習MAC,發送和接收BPDU
- 轉發,Forwarding,發送和接收BPDU,學習MAC地址,轉發數據
偵聽和學習稱為中間態,是端口狀態變化的中間狀態

根據上圖,我們知道,端口從阻塞狀態變為轉發狀態總共需要50秒的時間,也就是前面講的當主用鏈路故障的時候,會將這個端口自動啟起來,開啟備用鏈路,恢復通信所需要的時間
實驗
## 實驗目的
令SWA是VLAN1的主根橋,在VLAN 1的STP中阻塞SWC的E0/0/2端口,當SWA失效時,SWB接替SWA成為VLAN1的主根橋

----------
SWA:
<Huawei>
<Huawei>system-view
Enter system view, return user view with Ctrl+Z.
[Huawei]sysname SWA
[SWA]undo info-center enable
Jan 9 2025 16:52:19-08:00 SWA DS/4/DATASYNC_CFGCHANGE:OID 1.3.6.1.4.1.2011.5.25
.191.3.1 configurations have been changed. The current change number is 4, the c
hange loop count is 0, and the maximum number of records is 4095.
Info: Information center is disabled.
[SWA]stp enable
[SWA]stp mode stp
Info: This operation may take a few seconds. Please wait for a moment...done.
[SWA]interface E0/0/1
[SWA-Ethernet0/0/1]port link-type trunk
[SWA-Ethernet0/0/1]port trunk allow-pass vlan all
[SWA-Ethernet0/0/1]interface E0/0/2
[SWA-Ethernet0/0/2]port link-type trunk
[SWA-Ethernet0/0/2]port trunk allow-pass vlan all
[SWA-Ethernet0/0/2]stp priority 4096
[SWA]display current-configuration
\#
sysname SWA
\#
undo info-center enable
\#
stp mode stp
stp instance 0 priority 4096
\#
cluster enable
ntdp enable
ndp enable
\#
drop illegal-mac alarm
\#
diffserv domain default
\#
drop-profile default
\#
aaa
authentication-scheme default
authorization-scheme default
accounting-scheme default
domain default
domain default_admin
local-user admin password simple admin
local-user admin service-type http
\#
interface Vlanif1
\#
interface MEth0/0/1
\#
interface Ethernet0/0/1
port link-type trunk
port trunk allow-pass vlan 2 to 4094
\#
interface Ethernet0/0/2
port link-type trunk
port trunk allow-pass vlan 2 to 4094
[SWA]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/1 DESI FORWARDING NONE
0 Ethernet0/0/2 DESI FORWARDING NONE
SWB:
<Huawei>system-view
Enter system view, return user view with Ctrl+Z.
[Huawei]undo info-center enable
Info: Information center is disabled.
[Huawei]sysname SWB
[SWB]stp enable
[SWB]stp mode stp
Info: This operation may take a few seconds. Please wait for a moment...done.
[SWB]interface E0/0/1
[SWB-Ethernet0/0/1]port link-type trunk
[SWB-Ethernet0/0/1]port trunk allow-pass vlan all
[SWB-Ethernet0/0/1]interface E0/0/2
[SWB-Ethernet0/0/2]port link-type trunk
[SWB-Ethernet0/0/2]port trunk allow-pass vlan all
[SWB-Ethernet0/0/2]stp priority 8192
[SWB]display current-configuration
\#
sysname SWB
\#
undo info-center enable
\#
stp mode stp
stp instance 0 priority 8192
\#
cluster enable
ntdp enable
ndp enable
\#
drop illegal-mac alarm
\#
diffserv domain default
\#
drop-profile default
\#
aaa
authentication-scheme default
authorization-scheme default
accounting-scheme default
domain default
domain default_admin
local-user admin password simple admin
local-user admin service-type http
\#
interface Vlanif1
\#
interface MEth0/0/1
\#
interface Ethernet0/0/1
port link-type trunk
port trunk allow-pass vlan 2 to 4094
\#
interface Ethernet0/0/2
port link-type trunk
port trunk allow-pass vlan 2 to 4094
\#
[SWB] display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/1 DESI FORWARDING NONE
0 Ethernet0/0/2 ROOT FORWARDING NONE
關閉SWA后,SWB狀態變化
[SWB]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/1 DESI DISCARDING NONE
[SWB]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/1 DESI LEARNING NONE
[SWB]
[SWB]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/1 DESI LEARNING NONE
[SWB]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/1 DESI LEARNING NONE
[SWB]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/1 DESI FORWARDING NONE
[SWB]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/1 DESI FORWARDING NONE
SWC:
<Huawei>
<Huawei>system-view
Enter system view, return user view with Ctrl+Z.
[Huawei]undo info-center enable
Info: Information center is disabled.
[Huawei]sysname SWC
[SWC]stp enable
[SWC]stp mode stp
Info: This operation may take a few seconds. Please wait for a moment...done.
[SWC]interface E0/0/1
[SWC-Ethernet0/0/1]port link-type trunk
[SWC-Ethernet0/0/1]port trunk allow-pass vlan all
[SWC-Ethernet0/0/1]interface E0/0/2
[SWC-Ethernet0/0/2]port link-type trunk
[SWC-Ethernet0/0/2]port trunk allow-pass vlan all
[SWC-Ethernet0/0/2]display current-configuration
\#
sysname SWC
\#
undo info-center enable
\#
stp mode stp
\#
cluster enable
ntdp enable
ndp enable
\#
drop illegal-mac alarm
\#
diffserv domain default
\#
drop-profile default
\#
aaa
authentication-scheme default
authorization-scheme default
accounting-scheme default
domain default
domain default_admin
local-user admin password simple admin
local-user admin service-type http
\#
interface Vlanif1
\#
interface MEth0/0/1
\#
interface Ethernet0/0/1
port link-type trunk
port trunk allow-pass vlan 2 to 4094
\#
interface Ethernet0/0/2
port link-type trunk
port trunk allow-pass vlan 2 to 4094
\#
[SWC]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/1 ROOT FORWARDING NONE
0 Ethernet0/0/2 ALTE DISCARDING NONE
關閉SWA后,SWC狀態變化
[SWC]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/1 ROOT FORWARDING NONE
0 Ethernet0/0/2 ALTE DISCARDING NONE
[SWC]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/2 ROOT DISCARDING NONE
[SWC]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/2 ROOT LEARNING NONE
[SWC]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/2 ROOT LEARNING NONE
[SWC]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/2 ROOT LEARNING NONE
[SWC]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/2 ROOT LEARNING NONE
[SWC]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/2 ROOT FORWARDING NONE
[SWC]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/2 ROOT FORWARDING NONE
最后,給各位兄弟們加點氮!

部分圖片來源于網絡,如有侵權請聯系刪除
See yo!
Motto: Actions speak louder than words.

浙公網安備 33010602011771號