{所有內容均來自于西安歐鵬的陳俊老師}
STP生成樹
當二層交換機意外成環路的時候會發生:
1.廣播風暴:當廣播幀進入環路時,會被不斷復制并傳輸,導致網絡中的廣播流量急劇增加,消耗大量的網絡帶寬,降低網絡性能,形成廣播風暴。
2.MAC地址表的漂移(偏移)(不穩定):每一次數據幀在環路中循環,交換機的MAC地址表記錄可能會不斷更新,導致MAC地址表不穩定。
3.多幀復制:在二層網絡中,由于環路的存在,導致同一數據幀被多次復制并傳輸到目的設備的現象(比如,如圖所示環路,數據幀從PC1發出向LSW3,LSW3廣播向LSW1、2,數據幀再從LSW1、2廣播向LSW3,LSW3會向除了接收數據幀的接口再次廣播其余接口,這是由PC1發出的數據幀就發回了PC1,由此除非環路解除,不然PC1回一直接收這段數據幀。)
破解環路最簡單的辦法就是截斷某些鏈路,所以恭喜你發現生成樹stp工作原理
stp生成樹:將原來的環形拓撲結構轉換為最短路徑生成樹,通過邏輯上阻塞一些接口,以生成最短路徑生成樹,在達到解決環形拓撲的目標,繼續實時監控整個拓撲環境是否發生改變,若改變,則自動將原本阻塞接口重新打開再次生成最短路徑生成樹。
stp的分類:
STP---生成樹協議
PVST PVST+----思科:是一種思科專有的生成樹協議擴展,它允許在同一個交換機上為每個VLAN運行一個獨立的生成樹實例。這意味著每個VLAN都可以有自己的根橋和拓撲結構,從而提高了網絡的靈活性和性能。
Rstp---快速生成樹
Mstp---多生成樹
stp傳遞的報文---BPDU:
1.配置BPDU:協商參數的報文
2.TCN-BPDU:實時的監聽整個拓撲環境是否發生改變,一旦檢測到變化會發出通告TCN-BPDU
?【生成樹所有協商的參數均為越小越優先】
補充:
????????PVI--協議版本號:
????????????????STP--0
????????????????RSTP--2
????????????????MSTP--3
TCN-BPDU
TCN-BPDU--作用
1.通告網絡發生變化;
2.用來刷新MAC地址表中的錯誤記錄--存在逐級上報的機制(避免重復刷新MAC地址表)。
TCN-BPDU報文的應用:
當某一端的設備檢測到自身的網絡結構發生改變時,會主動向所有運行STP設備發送TCN-BPDU,其他設備接收到之后會回復TCA標志位為1的配置BPDU用以向該設備確認,然后會逐級向上轉發一直到根橋設備,之后根橋設備會主動發送TC標志位(拓撲發生改變的標志位)為1的配置BPDU,最終會傳遞到交換網絡的所有設備,當這些收到TC標志位為1的報文,會將自身的MAC地址表老化時間設置為15s,用以刷新錯誤信息
角色選舉
【當生成樹生成后,只有根橋設備才會主動發送配置BPDU,其他非根橋設備僅轉發由根橋設備發送的配置BPDU】
生成樹一共要選舉四種角色:根網橋RB,根端口RP,指定端口DP,非指定端口NDP
根網橋RB
根網橋RB--整個交換網絡必須選擇唯一的一個根橋設備。
通過比較BID最小的設備成為根橋設備
BID--網橋ID作用:
????????1.用來標識和區分不同的運行stp的交換機設備身份
????????2.用來協商生成樹角色
????????組成:前16位二進制是優先級,后48位二進制是設備的MAC地址
比較規則:
1.比較優先級
2.比較MAC地址
[LSW1]display stp
-------[CIST Global Info][Mode MSTP]-------
CIST Bridge ? ? ? ? :32768.4c1f-cc1f-4349? ? ? //BID
Config Times ? ? ? ?:Hello 2s MaxAge 20s FwDly 15s MaxHop 20
Active Times ? ? ? ?:Hello 2s MaxAge 20s FwDly 15s MaxHop 20
CIST Root/ERPC ? ? ?:32768.4c1f-cc1f-4349 / 0
CIST RegRoot/IRPC ? :32768.4c1f-cc1f-4349 / 0
CIST RootPortId ? ? :0.0
BPDU-Protection ? ? :Disabled
TC or TCN received ?:3
TC count per hello ?:0
STP Converge Mode ? :Normal?
Time since last TC ?:0 days 0h:0m:24s
Number of TC ? ? ? ?:3
Last TC occurred ? ?:GigabitEthernet0/0/2
----[Port1(GigabitEthernet0/0/1)][FORWARDING]----
?Port Protocol ? ? ? :Enabled
?Port Role ? ? ? ? ? :Designated Port
?Port Priority ? ? ? :128
?Port Cost(Dot1T ) ? :Config=auto / Active=20000
?Designated Bridge/Port ? :32768.4c1f-cc1f-4349 / 128.1
?Port Edged ? ? ? ? ?:Config=default / Active=disabled
?Point-to-point ? ? ?:Config=auto / Active=true
?Transit Limit ? ? ? :147 packets/hello-time
?Protection Type ? ? :None
根端口RP
根端口RP--所有非根設備必須選擇唯一一個端口成為根端口,用來接收根橋發送的配置BPDU。
RPC--根路徑開銷--設備接口到達根橋的開銷值--類似cost。
生成樹RPC(開銷)的計算公式--等于沿途所有入接口的開銷值累加和接口的開銷值。?
[LSW3]stp pathcost-standard ?
? dot1d-1998 ?IEEE 802.1D-1998
? dot1t? ? ? ? ? ? IEEE 802.1T
? legacy? ? ? ?? ?Legacy
?比較規則:
1.會比較接口的入向RPC值,會選擇入向RPC值更小的接口作為根端口
【入向RPC值----接口收到的配置BPDU中攜帶的開銷值】
2.如果IRPC一致,那么會比較收到的配置BPDU中對端設備的BID大小,會選擇BID更小的所對應的接口;
3.如果對端設備BID一致,那么會比較對端設備的PID,選擇更小PID對應的接口;
4.如果對端設備PID一致,那么會比較自身設備的PID,選擇更小PID對應的接口;
?指定端口DP
指定端口DP---設備用來轉發根網橋發送的配置BPDU的接口,每段鏈路都需 要選擇一個接口成為指定端口
1.選擇接口出向RPC值最小的端口作為根端口;
【出向RPC---設備發出的配置BPDU中攜帶的RPC值】
2.會比較自身本地的配置BPDU中攜帶的BID,選擇數值更小的;
3.當本地bid一致那么會比較發出接口的pid選擇接口pid小的接口作為指定端口;
4.當收到的配置BPDU報文pid一致,那么會直接阻塞該接口。
非指定端口NDP
非指定端口NDP--剩下所有沒有角色的端口就是非指定端口,最終需要被阻塞的端口。?
STP的接口狀態:
阻塞狀態:所有運行STP協議的接口最先進入的狀態,為了避免此時協議剛起到,還沒有徹底收斂,就已經出現環路問題。
【初次收斂時,因為所有設備的接口都是阻塞狀態,會導致沒有任何設備發送BPDU報文,無法協商參數,所以設備會自動關聯最大壽命,如果20S沒有收到任何BPDU報文,那么會視為根橋故障,會自動進入偵聽狀態,主動發送BPDU報文】
偵聽狀態:STP進行角色選舉的狀態,一旦接口被選舉未根端口或者指定端口均會進入下一個狀態(會經過15S的選舉時間,為了讓所有設備所有接口均完成角色選舉,避免臨時環路---一些設備任處于選舉過程中,角色沒有選完,自然不會阻塞接口),如果接口被選舉未非指定端口,那么該接口最終回退到阻塞狀態,被阻塞。
學習狀態:STP為了盡量避免初次訪問時,產生大量的廣播報文影響通訊質量,盡量記錄本設備用戶的MAC地址信息。
STP首次收斂至少50S才能完成收斂,收斂速度很慢
[LSW1]undo stp enable? ? ? ? 直接關閉協議
Warning: The global STP state will be changed. Continue? [Y/N]y
Info: This operation may take a few seconds. Please wait for a moment...done.
[LSW1]
Apr ?4 2025 21:23:31-08:00 LSW1 DS/4/DATASYNC_CFGCHANGE:OID 1.3.6.1.4.1.2011.5.2
5.191.3.1 configurations have been changed. The current change number is 5, the?
change loop count is 0, and the maximum number of records is 4095.?
[LSW1]display stp
?Protocol Status ? ? ? :Disabled ? ? ? ? ? ??
?Protocol Standard ? ? :IEEE 802.1s ? ? ? ? ? ??
?Version ? ? ? ? ? ? ? :3 ? ? ? ? ? ??
?CIST Bridge Priority ?:32768 ? ? ? ? ? ??
?MAC address ? ? ? ? ? :4c1f-cc1f-4349 ? ? ? ? ? ??
?Max age(s) ? ? ? ? ? ?:20 ? ? ? ? ? ??
?Forward delay(s) ? ? ?:15 ? ? ? ? ? ??
?Hello time(s) ? ? ? ? :2 ? ? ? ? ? ??
?Max hops ? ? ? ? ? ? ?:20?
[LSW1]
Apr ?4 2025 21:23:42-08:00 LSW1 %%01PHY/1/PHY(l)[0]: ? ?GigabitEthernet0/0/2: ch
ange status to down
Apr ?4 2025 21:23:43-08:00 LSW1 %%01PHY/1/PHY(l)[1]: ? ?GigabitEthernet0/0/2: ch
ange status to up?
[LSW3-GigabitEthernet0/0/1]undo stp enable? ? ?關閉單個接口stp協議
[LSW3-GigabitEthernet0/0/1]display this?
#
interface GigabitEthernet0/0/1
?stp disable
#
return
?stp的重新收斂
?就是當運行STP的設備網絡結構發生改變而進行重新選舉角色,將原本的非指定端口開放
1.根橋故障【需要50s進行重新收斂】
2.根橋直連鏈路故障【需要30s進行重新選舉角色】
非根橋設備檢測到自身的根端口所在鏈路發生故障,但是其他端口可以收到根橋發送的配置BPDU,此時會將自身被阻塞的端口打開并進入偵聽狀態,重新選舉角色,但是不需要選舉根橋
3.根橋非直連鏈路故障【需要50s重新收斂】
設備檢測到自身根端口所在鏈路故障,但是不能通過其他端口收到根橋發出的配置BPDU,那么只有等待身背最大壽命20s后進行重新選舉。需要經過15s的偵聽喝15s學習狀態。
STP配置
?
[LSW1]stp enable? ? ? ? ? ? //開啟設備stp協議
Warning: The global STP state will be changed. Continue? [Y/N]y
Info: This operation may take a few seconds. Please wait for a moment...done.
[LSW1]stp mode ?? ? ? ? ? ?//所有設備需要確保協議一致,華為設備默認開啟STP協議
? mstp ?Multiple Spanning Tree Protocol (MSTP) mode
? rstp ?Rapid Spanning Tree Protocol (RSTP) mode
? stp ? Spanning Tree Protocol (STP) mode[LSW1]stp mode stp
Info: This operation may take a few seconds. Please wait for a moment...done.
?
[LSW1]display stp brief
?MSTID ?Port ? ? ? ? ? ? ? ? ? ? ? ?Role ?STP State ? ? Protection
? ?0 ? ?GigabitEthernet0/0/1 ? ? ? ?DESI ?FORWARDING ? ? ?NONE
? ?0 ? ?GigabitEthernet0/0/2 ? ? ? ?DESI ?FORWARDING ? ? ?NONE
[LSW1]display stp
-------[CIST Global Info][Mode STP]-------
CIST Bridge ? ? ? ? :32768.4c1f-cc1f-4349
Config Times ? ? ? ?:Hello 2s MaxAge 20s FwDly 15s MaxHop 20
Active Times ? ? ? ?:Hello 2s MaxAge 20s FwDly 15s MaxHop 20
CIST Root/ERPC ? ? ?:32768.4c1f-cc1f-4349 / 0
CIST RegRoot/IRPC ? :32768.4c1f-cc1f-4349 / 0
CIST RootPortId ? ? :0.0
BPDU-Protection ? ? :Disabled
TC or TCN received ?:24
TC count per hello ?:0
STP Converge Mode ? :Normal?
Time since last TC ?:0 days 0h:0m:31s
Number of TC ? ? ? ?:27
Last TC occurred ? ?:GigabitEthernet0/0/2
----[Port25(GigabitEthernet0/0/1)][FORWARDING]----
?Port Protocol ? ? ? :Enabled
?Port Role ? ? ? ? ? :Designated Port
?Port Priority ? ? ? :128
?Port Cost(Dot1T ) ? :Config=auto / Active=20000
?Designated Bridge/Port ? :32768.4c1f-cc1f-4349 / 128.25
?Port Edged ? ? ? ? ?:Config=default / Active=disabled
?Point-to-point ? ? ?:Config=auto / Active=true
?Transit Limit ? ? ? :147 packets/hello-time
?Protection Type ? ? :NoneApr ?5 2025 19:34:59-08:00 LSW1 %%01PHY/1/PHY(l)[0]: ? ?GigabitEthernet0/0/2: ch
ange status to down
Apr ?5 2025 19:35:00-08:00 LSW1 %%01PHY/1/PHY(l)[1]: ? ?GigabitEthernet0/0/2: ch
ange status to up Port STP Mode ? ? ? :STP?
?
[LSW1]stp priority ?28672? ? ? ? //修改BID(32768-4096)【修改設備BID需要安4096為步? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?調加減
[LSW1]stp root primary? ? ? ? ? ? //將某設備配置為根橋,本質上是將該設備優先級改為0
[LSW1]stp root ?secondary? ? ? //將某設備配置為備份根橋,本質將該設備優先級改為4096
MSTP多生成樹(802.M樹--鏈路利用率)
MSTP提出可以將多個VLAN綁定在一起,提出實例instance的概念,實例的實質是12位二進制,范圍是0~4095,其中默認存在實例0,初始所有VLAN均屬于實例0,所有VLAN為一棵樹。
單域MSTP的配置要求:
?
[LSW3-mst-region]display stp region-configuration?
[LSW2-mst-region]display stp region-configuration?
?Oper configuration
? ?Format selector ? ?:0 ? ? ? ? ? ??
? ?Region name ? ? ? ?:4c1fcc427b2c? ?? ?//默認設備存在名稱(初始為設備的MAC地址)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?必須確保單域的name一致
? ?Revision level ? ? :0? ? ? ? ? ? ? ? ? ? ? ? ? ?? //修訂等級(多域才會用,必須一致,單域隨意)? ?Instance ? VLANs Mapped? ? ? ? ? ? ? ? ?//實例喝VLAN對應關系必須一致
? ? ? 0 ? ? ? 1 to 4094
[LSW3-mst-region]
配置完成實例:
[LSW3-mst-region]display stp region-configuration?
?Oper configuration
? ?Format selector ? ?:0 ? ? ? ? ? ??
? ?Region name ? ? ? ?:aa ? ? ? ? ? ??
? ?Revision level ? ? :10? ?Instance ? VLANs Mapped
? ? ? 0 ? ? ? 21 to 4094
? ? ? 1 ? ? ? 1 to 10
? ? ? 2 ? ? ? 11 to 20
[LSW3-mst-region]
?配置過程與解析:
[LSW3]stp enable? ? ? ? ? ? //啟動協議
[LSW3]stp mode mstp?
[LSW3]stp region-configuration? ? ? ??
[LSW3-mst-region]region-name aa? ? ? ? //注意區別大小寫
[LSW3-mst-region]revision-level 10? ? ? ?
[LSW3-mst-region]instance 1 vlan 1 to 10? ? ? ? ? //根據需求配置VLAN喝實例的對應關系
[LSW3-mst-region]instance 2 vlan 11 to 20?
[LSW3-mst-region]active region-configuration? ? //激活配置!!!
Info: This operation may take a few seconds. Please wait for a moment...done.
[LSW3-mst-region]display this?
#
stp region-configuration
?region-name aa
?revision-level 10
?instance 1 vlan 1 to 10
?instance 2 vlan 11 to 20
?active region-configuration
#
return?
[LSW3-mst-region]q??
[LSW3]stp instance 1 root primary? ? ? ? ? ?//將該設備配置為實例1的主根
[LSW3]stp instance 2 root secondary? ? ? //將該設備配置為實例2的備份根橋
[LSW3]display ?this?
#
sysname LSW3
#
vlan batch 2 to 20
#
stp instance 1 root primary
stp instance 2 root secondary
#
cluster enable
ntdp enable
ndp enable
#
drop illegal-mac alarm
#
return
[LSW3]stp region-configuration
[LSW3-mst-region]display stp region-configuration?
?Oper configuration
? ?Format selector ? ?:0 ? ? ? ? ? ??
? ?Region name ? ? ? ?:aa ? ? ? ? ? ??
? ?Revision level ? ? :10? ?Instance ? VLANs Mapped
? ? ? 0 ? ? ? 21 to 4094
? ? ? 1 ? ? ? 1 to 10
? ? ? 2 ? ? ? 11 to 20
[LSW3-mst-region]
?RSTP快速生成樹(802.W樹--收斂速度)
RSTP的改進點:
1.變更端口角色
STP的端口角色:根端口,指定端口,非指定端口
RSTP/MSTP的端口角色::根端口,替代端口,備份端口
替代端口:作為根端口的替代,由于收到對端設備發送到餓配置BPDU兒導致參數不優最終被阻塞的端口。【作用:作為根端口的備份,當根端口出現故障時,設備會從自身所有的替代端口中找出參數最優的直接成為新的根端口。】
備份端口【back】:作為指定端口的備份,由于收到自身發送的配置BPDU從而參數不優而阻塞的端口,一個設備可能有多個備份端口。【作用:作為指定端口的備份,當指定端口出現故障時,設備會從自身所有的備份端口中找出參數最優的直接成為新的指定端口。】
2變更了端口狀態:
STP的端口狀態:禁用狀態,阻塞狀態,偵聽狀態,學習狀態,轉發狀態
RSTP/MSTP將狀態進行合并:
? ? ? ? 1.丟棄狀態DISCARDING--該接口只能處理BPDU報文,不能收發數據流量,不能記錄MAC? ? ? ? ? ? ? ?地址表
? ? ? ? 2.學習狀態
? ? ? ? 3.轉發狀態
3.修改了配置BPDU報文的一些參數
RST-BPDU---P/A---RSTP利用該機制將STP的收斂速度從分鐘級優化到秒級(主要針對指定端口的快速收斂機制)
4.加快了生成樹的失效判斷時間
優化根橋失效判斷時間--將原本為MAX-Age默認20s,在RSTP協議下位3個hello時間--6s
5.快速收斂機制
? ? ? ? 1.根端口的快速切換;
? ? ? ? 2.設置邊緣接口;(需要配置,可以將所有連接PC用戶的接口配置為邊緣接口)
?[LSW3-GigabitEthernet0/0/2]stp edged-port enable? ? //邊緣接口
1.如果將連接PC的接口配置為邊緣接口,那么該接口不需要進行STP選舉,直接進入到轉發狀態。
2.如果邊緣接口收到BPDU報文,那么會變成普通接口,重新協商。(防止將連接設備的接口配置為邊緣接口)
3.一般連接 PC 的接口不需要接收 STP 的 bpdu 報文,所以會和邊緣接口配置結合使用。[LSW3]stp bpdu-protection? ? ? ? ? ? ? ? //BPDU保護(建議配置)如果邊緣接口收到BPDU報文,則會直接物理關閉該接口,防止PC使用BPDU攻擊[LSW3-GigabitEthernet0/0/2]stp bpdu-filter enable? ? ? //過濾接口發出的BPDU報文
? ? ? ? 3.P/A機制?。