簡介
本檔案介紹如何使用Spanning Tree Protocol (STP),確保在網路中有備援路徑時不會建立回圈。
必要條件
需求
本文件沒有特定需求。
採用元件
本文中的資訊係根據以下軟體和硬體版本:
本文檔介紹的生成樹原則適用於幾乎所有支援STP的裝置。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
背景資訊
生成樹通訊協定(STP)是在橋接器和交換器上執行的第2層通訊協定。STP的規格是IEEE 802.1D。STP的主要目的是確保在網路中具有冗餘路徑時不建立環路。環路對網路是致命的。
本檔案中的組態適用於執行Catalyst OS (CatOS)的Catalyst 2926G、2948G、2980G、4500/4000、5500/5000和6500/6000交換器。有關在其他交換機平台上配置STP的資訊,請參閱以下文檔:
網路圖表
此文件使用以下網路設定:
概念
STP在符合802.1D標準的網橋和交換機上運行。STP有多種不同形式,但802.1D是最受歡迎且實施最廣泛的。您在網橋和交換機上實施STP,以防止網路中出現環路。在需要冗餘鏈路而不是環路的情況下,使用STP。冗餘鏈路與備份在網路中發生故障切換時同樣重要。主鏈路發生故障時,會啟用備份鏈路,以便使用者可以繼續使用網路。如果網橋和交換機上沒有STP,此類故障可能會導致環路。如果兩台連線的交換機運行不同型別的STP,它們需要不同的控制才能收斂。當交換機使用不同型別時,就會在阻塞和轉發狀態之間產生控制問題。因此,建議使用同一種型別的STP。請考慮以下網路:
在此網路中,計畫在交換機A和交換機B之間使用冗餘鏈路。但是,這種設定可能會產生橋接環路。例如,從站M傳送併發往站N的廣播或組播資料包只會在兩台交換機之間繼續循環。
但是,當STP在兩台交換機上運行時,網路在邏輯上如下所示:
此資訊適用於網路圖中的方案:
為了提供所需的路徑冗餘並避免出現環路情況,STP定義了一個樹,該樹跨越擴展網路中的所有交換機。STP強制某些冗餘資料路徑進入備用(阻塞)狀態,並使其他路徑保持轉發狀態。如果處於轉發狀態的鏈路變得不可用,STP將重新配置網路並透過啟用適當的備用路徑重新路由資料路徑。
技術說明
使用STP時,關鍵是讓網路中的所有交換機選擇成為網路焦點的根網橋。網路中的所有其他決策(例如阻塞哪個埠以及採用轉發模式的埠)都是從此根網橋的角度做出的。交換環境(與橋接環境不同)最可能處理多個VLAN。在交換網路中實施根網橋時,通常將根網橋稱為根交換機。每個VLAN都必須有自己的根網橋,因為每個VLAN都是獨立的廣播域。不同VLAN的根可以全部駐留在單個交換機或各種交換機中。
附註:特定 VLAN 的根交換器選擇非常重要。您可以選擇根交換機,也可以讓交換機自行決定,這樣做是有風險的。如果您不控制根目錄選取程式,您的網路中可能會有次優路徑。
所有交換機交換用於根交換機選擇和後續網路配置的資訊。網橋協定資料單元(BPDU)傳輸此資訊。每台交換機將交換機傳送給鄰居的BPDU中的引數與交換機從鄰居接收的BPDU中的引數進行比較。
在STP根選擇過程中,越少越好。如果交換機A通告的根ID小於交換機B通告的根ID,則來自交換機A的資訊更好。交換機B停止通告其根ID,並接受交換機A的根ID。
請參閱選用 STP 功能以瞭解更多有關部分選用 STP 功能的資訊,例如:
STP操作
工作
必要條件
在配置STP之前,請選擇一台交換機作為生成樹的根。此交換機不需要是最強大的交換機,而是選擇網路上最集中的交換機。從此交換機的角度來看,網路中的所有資料流都是如此。此外,請選擇網路中受干擾最小的交換機。主幹交換機通常充當生成樹根,因為這些交換機通常不連線到終端站。此外,網路中的移動和更改不太可能影響這些交換機。
決定根交換機之後,請設定適當的變數以將該交換機指定為根交換機。您必須設定的唯一變數是bridge priority 。如果交換機的網橋優先順序低於所有其他交換機,其他交換機將自動選擇該交換機作為根交換機。
交換機埠上的客戶端(終端站)
您也可以針對每個埠發出set spantree portfast 命令。在埠上啟用portfast 變數時,埠會立即從阻塞模式切換到轉發模式。啟用portfast 有助於防止使用Novell Netware或DHCP獲得IP地址的客戶端上出現超時。但是,當您具有交換機到交換機的連線時,請勿使用此命令。在這種情況下,該命令可能會導致環路。在從阻塞模式轉換為轉發模式期間發生的30到60秒延遲可防止連線兩台交換機時網路中出現臨時環路情況。
將大多數其他STP變數保留為預設值。
操作規則
本部分列出有關STP如何工作的規則。當交換機首次啟動時,它們會啟動根交換機選擇過程。每台交換機在每個VLAN上向直連交換機傳輸BPDU。
當BPDU透過網路傳輸時,每台交換機都會將交換機傳送的BPDU與交換機從鄰居收到的BPDU進行比較。然後,交換機會就哪台交換機是根交換機達成一致。網路中橋接器ID最小的交換器會贏得此選舉程式。
附註:請記住,每個 VLAN 都會識別一部根交換器。完成根交換器識別後,交換器會遵守這些規則。
-
STP規則2 -必須將根埠設定為轉發模式。
此外,每個LAN網段上的交換機相互通訊,以確定哪台交換機最適合用於將資料從該網段移動到根網橋。此交換器稱為指定交換器。
-
STP規則3 -在一個LAN分段中,連線到該LAN分段的指定交換機的埠必須處於轉發模式。
-
STP規則4 -所有交換機(特定於VLAN)中的所有其他埠必須處於阻塞模式。規則僅適用於連線到其他網橋或交換機的埠。STP不會影響連線到工作站或PC的埠。這些埠仍保持轉發狀態。
附註:STP 在每個 VLAN 擴充樹 (PVST/PVST+) 模式下執行時,新增或移除 VLAN 會觸發該 VLAN 執行個體的擴充樹重新計算,而且僅會針對該 VLAN 中斷流量。TRUNK鏈路的其他VLAN部分可以正常轉發流量。為已存在的多個生成樹(MST)例項增加或刪除VLAN會觸發該例項的生成樹重新計算,並且該MST例項的所有VLAN部分的流量都會中斷。
附註:依照預設,擴充樹會在每個連接埠上執行。無法針對每個連線埠關閉交換器中的跨距樹狀目錄功能。儘管不建議這樣做,但您可以針對每個VLAN或全局關閉交換機上的STP。每當停用生成樹時,都必須格外小心,因為這會在網路中建立第2層環路。
逐步說明
請完成以下步驟:
-
發出show version 命令以顯示交換機運行的軟體版本。
Switch-15> (enable)show version
WS-C5505 Software, Version McpSW: 4.2(1) NmpSW: 4.2(1)
Copyright (c) 1995-1998 by Cisco Systems
NMP S/W compiled on Sep 8 1998, 10:30:21
MCP S/W compiled on Sep 08 1998, 10:26:29
System Bootstrap Version: 5.1(2)
Hardware Version: 1.0 Model: WS-C5505 Serial #: 066509927
Mod Port Model Serial # Versions
--- ---- ---------- --------- ----------------------------------------
1 0 WS-X5530 008676033 Hw : 2.3
Fw : 5.1(2)
Fw1: 4.4(1)
Sw : 4.2(1)
在此場景中,交換機15是所有VLAN的網路根交換機的最佳選擇,因為交換機15是主幹交換機。
-
發出set spantree root vlan_id 命令,以便將vlan_id 指定的一或多個VLAN的交換機的優先順序設定為8192。
注意:交換機的預設優先順序為32768。當您使用此命令設定優先順序時,將強制選擇交換機15作為根交換機,因為交換機15的優先順序最低。
Switch-15> (enable)set spantree root 1
VLAN 1 bridge priority set to 8192.
VLAN 1 bridge max aging time set to 20.
VLAN 1 bridge hello time set to 2.
VLAN 1 bridge forward delay set to 15.
Switch is now the root switch for active VLAN 1.
Switch-15> (enable)
Switch-15> (enable)set spantree root 200
VLAN 200 bridge priority set to 8192.
VLAN 200 bridge max aging time set to 20.
VLAN 200 bridge hello time set to 2.
VLAN 200 bridge forward delay set to 15.
Switch is now the root switch for active VLAN 200.
Switch-15> (enable)
Switch-15> (enable)set spantree root 201
VLAN 201 bridge priority set to 8192.
VLAN 201 bridge max aging time set to 20.
VLAN 201 bridge hello time set to 2.
VLAN 201 bridge forward delay set to 15.
Switch is now the root switch for active VLAN 201.
Switch-15> (enable)
Switch-15> (enable)set spantree root 202
VLAN 202 bridge priority set to 8192.
VLAN 202 bridge max aging time set to 20.
VLAN 202 bridge hello time set to 2.
VLAN 202 bridge forward delay set to 15.
Switch is now the root switch for active VLAN 202.
Switch-15>
Switch-15> (enable)set spantree root 203
VLAN 203 bridge priority set to 8192.
VLAN 203 bridge max aging time set to 20.
VLAN 203 bridge hello time set to 2.
VLAN 203 bridge forward delay set to 15.
Switch is now the root switch for active VLAN 203.
Switch-15>
Switch-15> (enable)set spantree root 204
VLAN 204 bridge priority set to 8192.
VLAN 204 bridge max aging time set to 20.
VLAN 204 bridge hello time set to 2.
VLAN 204 bridge forward delay set to 15.
Switch is now the root switch for active VLAN 204.
Switch-15> (enable)
命令的較短版本具有相同的效果,如以下示例所示:
set spantree priority Switch-15> (enable)set spantree root 1,200-204
VLANs 1,200-204 bridge priority set to 8189.
VLANs 1,200-204 bridge max aging time set to 20.
VLANs 1,200-204 bridge hello time set to 2.
VLANs 1,200-204 bridge forward delay set to 15.
Switch is now the root switch for active VLANs 1,200-204.
Switch-15> (enable)
命令提供了指定根交換機的第三種方法:
Switch-15> (enable)set spantree priority 8192 1
Spantree 1 bridge priority set to 8192.
Switch-15> (enable)
附註:在此情境中,所有交換器一開始都已清除組態。因此,所有交換機的網橋優先順序均為32768。如果您不確定網路中的所有交換機是否具有大於8192的優先順序,請將所需根網橋的優先順序設定為1。
-
發出set spantree portfast mod_num/port_num enable 命令,以在交換機12、13、14、16和17上配置PortFast設定。
附註:請僅在連線到工作站或電腦的連接埠上進行此設定。請勿在連線到另一台交換機的任何埠上啟用PortFast。
-
埠2/1連線到交換機13。
-
埠2/2連線到交換機15。
-
埠2/3連線到交換機16。
-
埠3/1至3/24連線到PC。
-
連線埠4/1到4/24可連線至UNIX工作站。
根據此資訊,在埠3/1至3/24和埠4/1至4/24上發出set spantree portfast命令:
Switch-12> (enable)set spantree portfast 3/1-24 enable
Warning: Spantree port fast start should
only be enabled on ports connected to a single host. Connecting hubs, concentrators, switches, bridges, etc.
to a fast start port can cause temporary spanning-tree loops. Use with caution. Spantree ports 3/1-24 fast start enabled.
Switch-12> (enable) Switch-12> (enable)set spantree portfast 4/1-24 enable Warning: Spantree port fast start should
only be enabled on ports connected to a single host. Connecting hubs, concentrators, switches, bridges, etc.
to a fast start port can cause temporary spanning-tree loops. Use with caution. Spantree ports 4/1-24 fast start enabled. Switch-12> (enable)
-
發出 show spantree vlan_id命令,以驗證交換機15是否是所有相應VLAN的根交換機。
從此命令的輸出中,比較作為根交換機的交換機的MAC地址與發出該命令的交換機的MAC地址。如果地址匹配,則您所在的交換機是VLAN的根交換機。1/0的根埠也表示您位於根交換機上。以下是命令輸出的示例:
Switch-15> (enable)show spantree 1
VLAN 1
spanning-tree enabled
spanning-tree type ieee
Designated Root 00-10-0d-b1-78-00
!--- This is the MAC address of the root switch for VLAN 1.
Designated Root Priority 8192
Designated Root Cost 0
Designated Root Port 1/0
Root Max Age 20 sec Hello Time 2 sec Forward Delay 15 sec
Bridge ID MAC ADDR 00-10-0d-b1-78-00
Bridge ID Priority 8192
Bridge Max Age 20 sec Hello Time 2 sec Forward Delay 15 sec
此輸出顯示,交換機15是VLAN 1生成樹上的指定根交換機。指定根交換機的MAC地址00-10-0d-b1-78-00與交換機15,00-10-0d-b1-78-00的網橋ID MAC地址相同。表明此交換機是指定根的另一個指標是指定根埠為1/0。
在交換機12的此輸出中,交換機將交換機15辨識為VLAN 1:的Designated Root
Switch-12> (enable)show spantree 1
VLAN 1
spanning-tree enabled
spanning-tree type IEEEDesignated Root 00-10-0d-b1-78-00
!--- This is the MAC address of the root switch for VLAN 1.
Designated Root Priority 8192
Designated Root Cost 19
Designated Root Port 2/3
Root Max Age 20 sec Hello Time 2 sec Forward Delay 15 sec
Bridge ID MAC ADDR 00-10-0d-b2-8c-00
Bridge ID Priority 32768
Bridge Max Age 20 sec Hello Time 2 sec Forward Delay 15 sec
附註:其他交換器和 VLAN 之 show spantree vlan_id 命令的輸出,也可能會指出交換器 15 是所有 VLAN 的指定根。
驗證
本節提供的資訊可用於確認您的組態是否正常運作。
疑難排解
本節提供的資訊可用於對組態進行疑難排解。
當埠速度/雙工發生變化時,STP路徑開銷會自動變化
STP根據交換機之間鏈路的介質速度(頻寬)和每個埠轉發幀的埠開銷計算路徑開銷。生成樹根據路徑開銷選擇根埠。到根網橋的路徑開銷最低的埠將成為根埠。根埠始終處於轉發狀態。
如果連線埠速度/雙工變更,跨距樹狀目錄會自動重新計算路徑成本。路徑開銷的變化可能會改變生成樹拓撲。
有關如何計算埠成本的詳細資訊,請參閱配置生成樹的計算和分配埠成本部分。
疑難排解指令
附註:使用 debug 指令之前,請先參閱有關 Debug 指令的重要資訊。
命令摘要
語法: |
show version |
如本檔案所用: |
show version |
語法: |
set spantree root [vlan_id] |
如本檔案所用: |
set spantree root 1 |
|
set spantree root 1,200-204 |
語法: |
set spantree priority [vlan_id] |
如本檔案所用: |
set spantree priority 8192 1 |
語法: |
set spantree portfast mod_num/port_num {enable | disable} |
如本檔案所用: |
set spantree portfast 3/1-24 enable |
語法: |
show spantree [vlan_id] |
如本檔案所用: |
show spantree |
相關資訊