STP工作原理
STP能夠檢測并防止2層橋接環路的形成。
可以存在多條并行的路徑,但只使用一條路徑來轉發數據幀,并基于IEEE 802.1D橋協議標準。
802.1w作為一種增強的生成樹,在拓撲發生變化時可提供比傳統生成樹更快的收斂速度。
Cisco交換機在PVST+(每 VLAN 生成樹)或Rapid-PVST+(快速每VLAN 生成樹)中為每個VLAN運行單獨的 STP 實例(instance)。運行RPVST的交換機之間需要配置 Trunking。
對于工業標準 IEEE 802.1Q的Trunk鏈路來說,所有的 VLAN只需一個STP 實例。公共生成樹(CST)使用VLAN 1通信。
PVST+作為Cisco私有的擴展技術,允許交換機在CST與PVST之間互操作。PVST橋協議數據單元(BPDU)在802.1Q Trunk鏈路上以隧道方式傳輸。Catalyst交換機默認運行PVST+。
快速PVST+是一種混合模式的STP,其使用了結合了 PVST基礎的IEEE 802.1w(快速生成樹)。快速PVST+兼容IEEE 802.1w,但須使用Cisco擴展技術來支持每VLAN生成樹。
基于IEEE 802.1s標準的多生成樹(MST)對802.1w RSTP進行擴展,使其擁有多個STP實例。
a. MST向下兼容802.1D、802.1w及PVST+模式的STP。
b. 使用公共VLAN和STP實例的多個交換機組成一個MST區域。
c. MST可產生PVST+的BPDU,用來實現協議之間的互操作性。
d. MST支持最多16個STP實例。
交換機在每個Hello時間間隔(默認2秒)都會向所有接口發送BPDU。
BPDU不能被交換機直接轉發,其用于進一步計算并產生新的 BPDU。
交換機發送兩種類型的BPDU。
a.配置BPDU。
b.拓撲變更通告(TCN)BPDU。
STP流程
01選舉根橋
橋ID最小的交換機將成為生成樹的根橋。
橋 ID(BID)由兩字節的優先級字段和6字節的MAC地址組成。
優先級字段范圍為0~65535,默認是32768。
02選舉根端口
每臺非根橋交換機上將選舉出一個根端口,或稱為離根橋“最近”的端口。
“最近”指端口帶有最低的根路徑開銷值。
開銷值攜帶于BPDU中。
沿路上每臺非根橋交換機都會在BPDU的入站端口上增加本地端口開銷值。
隨著新的BPDU的產生,根路徑值開銷逐漸累積。
03選舉指定端口
在每個網段上,其中一臺交換機的端口將選舉成為指定端口,用于處理此網段的流量,網段中宣告最低根路徑開銷的端口選舉成為指定端口。
04移除橋接環路
既不是根端口又不是指定端口的交換機端口將被置于阻塞狀態。
此步驟將中斷所有橋接環路,否則,將會形成環路。
STP仲裁
當STP選舉遇到先決條件相同或稱為平局時,最重決策基于以下一系列條件。
1.最小的BID。
2.最低的根路徑開銷。
3.最小的發送方的BID。
4.最小的端口ID。
路徑開銷
默認情況下,交換機端口具有如下表中定義的路徑開銷值。
默認下,工作在 RPVST+模式下的Catalyst交換機使用“短模式”,即16比特的路徑或端口開銷值。
當網絡中的端口速率小于1Gbit/s 時,短模式范圍的開銷值已經足夠。
不過,如果存在10Gbit/s或速率更高的端口,需要將網絡中所有交換機設置成使用“長模式”,即32比特的路徑開銷范圍,這樣做可確保所有的交換機計算根路徑開銷值的一致性。
STP端口狀態
每臺交換機的端口須經歷一系列的端口狀態改變。
01禁用狀態(disabled)
端口被管理性的關閉或由于故障引起的端口關閉(MST稱此狀態為丟棄狀態(discarding))。
02阻塞狀態(blocking)
此端口狀態出現在端口初始化之后。處于阻塞狀態的端口不能接收或傳輸數據,不能向自己的地址表添加MAC地址,只能接收BPDUs。
如果檢測出存在橋接環路,或者端口失去其根端口或指定端口的狀態,那么它將返回到阻塞狀態(MST稱此狀態為丟棄狀態)。
03偵聽狀態(listening)
如果某端口可成為根端口或指定端口,該端口將進入偵聽狀態。
偵聽狀態的端口不能接收或傳輸數據,也不能向自己的地址表中添加MAC地址可以收發BPDU(MST稱此狀態為丟棄狀態)。
04學習狀態(learning)
在轉發延時計時器到期后(默認 15 秒),端口將進入學習狀態.學習狀態的端口不能傳輸數據但可收發BPDU,此狀態下可學習MAC地址并可將地址加入到地址表中。
05轉發狀態(forwarding)
在第2個轉發延時計時器到期后(默認15秒),端口將進入轉發狀態。
此狀態下的端口可以收發數據、學習MAC地址及收發BPDUs。
STP拓撲變化
如果交換機的某個端口進入了轉發狀態(啟動了 PortFast 技術除外),將產生拓撲變更信號。
如果交換機的某個端口從轉發或學習狀態進入阻塞狀態,將產生拓撲變更信號。
為了發送拓撲變更信號,交換機會在每個Hello時間間隔從根端口向外發送TCN BPDU。
直到上行的指定橋鄰居確認了 TCN BPDU。
鄰居會在自身的根端口上繼續中繼TCN BPDU直到根橋收到為止。
根橋通過發送配置BPDU來將拓撲變更通知給整棵生成樹,這種BPDU設置了拓撲變更位(TC)。
此操作將導致所有的下行交換機將其地址表老化時間(默認300秒)減少到轉發延時(默認15秒),使得交換機將不活動的MAC地址更快的刷新出地址表。
增強 STP 的穩定性
STP根保護(Root Guard)特性用來在交換網絡內強制根橋位置及身份。
在端口啟用了Root Guard特性后,如果該端口收到了更優的BPDU,那么Root Guard將停用此端口。
此技術用于避免其他交換機意外地成為根橋。
應該在所有不應出現根橋的端口上啟用STP Root Guard 特性,這樣做保護了當前主根橋和備根橋的選擇。
單向鏈路檢測(UDLD)提供了一種檢測單向傳輸鏈路的方法,使得STP無法常規檢測出來或阻止的路由環路和流量黑洞得以防止。
工作在2層的UDLD發送含有設備ID與端口ID的數據包至交換機端口所連的鄰居設備。
同時,鄰居將任何收到的UDLD 數據包原路發回,以便讓它的鄰居知道該數據包已經被對端鄰居識別。
UDLD消息以消息間隔(message interval)時間發出,通常默認值為15秒。
UDLD可工作在兩種模式下:
普通模式(normal mode)
單向鏈路作為一種錯誤被檢測并報告出來,但不做其他動作。
主動模式(aggressive mode)
單向鏈路作為一種錯誤被檢測并報告出來,在8次嘗試(1秒一次,共8秒)重新建立鏈路后停用端口。停用的端口須手工重新啟用。
STP環路防護(Loop Guard)技術用來在根端口(root port)和替換根端(alternate root port)上檢測BPDU的缺失。如果收不到BPDU,非指定端口將被臨時停用,用來防止非指定端口錯誤的成為指定端口并進入轉發狀態。
對于所有可能活動STP拓撲來說,應該在所有根端口和替換根端口(兩者都是非指定端口)上啟用STP Loop Guard。
STP 運作實例
來看一個STP運作的例子,如下圖所示為3臺Catalyst交換機互連成的三角形拓撲網絡。
RP代表根端口,DP代表指定端口,F代表處于轉發狀態的端口,X代表處于阻塞狀態的端口。
生成樹算法過程如下:
01選舉根橋
所有3臺交換機都具有相同的橋優先級(都為默認值32768)。但Catalyst A具有最小的MAC地址(00-00-00-00-00-0a),故Catalyst A選舉成為根橋。
02選舉根端口
在每臺非根橋交換機上計算出最低的根路徑開銷。
在Catalyst B上為端口1/1,其端口路徑開銷為 0+19, Catalyst C上為端口1/1,其根路徑開銷同樣是 0+19。
03選舉指定端口
根據規定,根橋上的所有端口都將成為各自網段的指定端口。
因此,Catalyst A上的端口1/1與1/2都為指定端口。
Catalyst B端口1/2與Catalyst C 端口1/2 共享一個網段,須在兩端口之間選舉出一個指定端口。
這兩個端口的根路徑開銷都為0+19+19,即38,出現了平局。
再選出最低的發送方的BID,故Catalyst B(MAC 地址最小)的端口1/2 選舉成為指定端口。
04既不是根端口又不是指定端口的所有端口將處于阻塞狀態
唯一剩下的Catalyst C上端口1/2,既不是根端口,又不是指定端口。該端口將進入阻塞狀態(圖中X所示 )。
配置STP
01(可選)啟用或禁用 STP
(global) [no] spanning-tree [vlan vlan]
默認情況下, STP 啟用在 VLAN 1 和任何新創建的 VLAN 中。
如果未指定具體的 VLAN,將在所有 VLAN 上啟用或禁用 STP。
要知道如果禁用了 STP,將不能檢測并防止橋接環路的形成。交換機應始終啟用 STP。
02(可選)設置交換機的 STP 模式
spanning-tree mode (pvst I mst I rapid- pvst]
默認情況下,所有 Catalyst 交換機為每個 VLAN 的 STP 實例運行 PVST+模式的 STP。
想要配置成其他的STP模式,須明確使用選項rapid-pvst(帶有IEEE兼容性的每 vlan 802.1w)或mst。
03(僅適用于 MST)激活一個 MST 實例
(1)進入 MST 配置模式
spanning-treemst configuration
(2)定義 MST 區域
(mst )namename
(mst )revisionrevision-number
使用name(最多32字符的文本字符串)來定義MST區域。
如果未指定區域名,系統將不使用區域名。用戶可以使用區域修訂號來指出區域配置改變的次數。
修訂號revision-number(0~65535,默認為 1)須明確地設定,并且不會隨區域配置變化自動遞增。
(3)將一個或多個VLAN映射到實例中
instance instance-id vlanvlan-range
此命令用于將vlan號( 1~1005、1025~4094)映射到 MST instance(0~15)中。
映射關系將保存在MST區域緩存中。
(4)退出 MST 配置模式
(mst)end
輸入end命令將退出并返回到特權模式。同時配置的改變立即生效。
但如果想永久保存MST配置,須將配置保存至NVRAM中。
04(可選)放置根橋交換機
(global)spanning-tree vlanvlanroot {primary | secondary} [diameternet-diameter ][hello-timehello-time]
或
(global) spanning-tree mstinstance-idroot {primary | secondary} [diameternet-diameter ][hello-timehello-time]
帶有參數 primary 的命令將使交換機成為若干 VLAN(1~1005和1025~4094)或指定的STP 實例(1~16,如未指定即VLAN 1)的主根橋。
網橋優先級的修改規則如下:如果大于8192,將被設置成8092;
如果小于8192,將被設置成比當前根橋優先級更小的值。
可以使用關鍵字 secondary來指定備根橋或次根橋,以防主根橋失效。
這里,網橋優先級將被設置成16384(對于MST來說,根橋優先級被設置成24576,備根橋被設置成 28672)。
關鍵字diameter指定了網絡中兩端點之間的直徑,即網橋或交換機的數量(1~7,默認為7)。
可同時設定Hello時間間隔(默認2秒鐘)。
網絡直徑的設置將導致系統自動計算并修改其他STP計時器值。
可使用其他命令明確地調整計時器值,不過調整直徑隱藏了計時器計算的復雜性。
05(可選)調整網橋的優先級
(global)spanning-tree vlanvlanprioritypriority [diameternet-diameter ][hello-timehello-time]
或
(global)spanning-tree mstinstance-idprioritypriority [diameternet-diameter ][hello-timehello-time]
用戶可以直接將網橋優先級修改成其他數值,而不是自動獲得的主備根橋的優先級。
優先級可基于每VLAN或STP實例來設定。
選項instance-list指定了實例號,可使用逗號或連字符來定義一個或一組實例。
如果想強制某臺交換機成為根橋,應為此交換機配置一個比在VLAN或STP實例中其他所有交換機都要低的優先級。
對于PVST+來說網橋優先級范圍介于 0~65535(默認為 32768),不過,當啟用擴展 VLAN 支持功能后,優先級只能設定成以下固定數值:
0(優先級最高)、4096、8192、12288、16384、20480、24576、28672、32768、36864、40960、45056、49152、53248、 57344和61440(優先級最低)。
06(可選)阻止端口成為STP根端口
(interface) spanning -tree rootguard
此命令將在端口或接口上啟用 STP Root Guard(根保護)特性。
如果連接到此端口的網橋通告一個更低的橋ID并成為了根橋,此端口將進入root-inconsistent(偵聽)STP狀態。
當此端口不再能檢測到根橋的BPDU時,將退回到正常的工作狀態。
07(可選)調節根路徑開銷
(1)(可選)設置端口開銷取值范圍
(global)spanning-tree pathcost defaultcost-method[long I short]
默認下, PVST+的交換機使用 short 模式(16 比特)端口開銷值。
如果有10Gbit/s或以上的端口,應在網絡中的所有交換機上將端口開銷取值范圍設定為 long 模式(32 比特)。
MISTP、 MISTP-PVST+及 MST 默認使用“長模式”的端口開銷。
(2)設定所有VLAN或實例的端口開銷
此命令可將所有VLAN或STP實例的端口開銷設定成cost (短模式或 MISTP模式下為 1~65535,在長模式下為 1~200000000)。
(3)設定每 VLAN 或每個實例的端口開銷
(interface)spanning-tree vlanvlan-idcostcost
或
(interface) spanning-tree mst instance-id cost cost
此命令可將 VLAN vlan-id 或 STP 實例 instance-id(0~15)的端口開銷設定為 cost(短模式為 1~65535,長模式為 1~200000000)。
08(可選)調節端口優先級
(1)設定所有 VLAN 或實例的端口優先級
此命令將端口優先級設定成priority(2~255)。
(2)設定每 VLAN 或每個實例的端口優先級
(interface) spanning-tree vlan vlan-list port-priority priority
或
(interface)spanning-tree mst instance-id port-priority priority
此命令將VLAN vlan-id或STP實例instance-id(0~15)的端口優先級設定為。
09(可選)使用 UDLD 檢測單向連接
(1)在交換機上啟用 UDLD
默認情況下, UDLD 處于停用狀態。
在將 UDLD 應用在特定端口之前須先將其啟用。
Supervisor IOS 中可使用關鍵字 aggressive 來在所有以太網光纖端口上全局地啟用UDLD主動模式。
(2)(可選)調整UDLD消息間隔計時器
此命令將 UDLD 消息時間間隔設定成interval(7~90 秒,默認 60 秒)。
(3)在特定端口上啟用UDLD
( interface)udld [enable I disable ]
在交換機上全局啟用 UDLD 后, UDLD 將默認啟用在所有以太網光纖端口上。
默認下,在所有的以太網雙絞線介質端口上, UDLD處于停用狀態。
(4)(可選)在特定端口上啟用UDLD主動模式
( interface)udld aggressive
在端口上啟用 UDLD 主動模式之后,當系統檢測到單向連接時將停用此端口。
問題修正后須手動地重新啟用該端口。
在 Supervisor IOS 中,可使用特權命令udld reset來重新啟用所有被UDLD停用的端口。
10(可選)使用 Loop Guard 特性來增強 STP 的穩定性
( interface)spanning-tree loopguard
Loop Guard(環路防護)特性應只啟用在已知的根端口或替換根端口上。
例如,接入層交換機的上行端口一定是根端口或替換根端口,原因是這些端口離根橋最近(假定用戶將根橋放置在了網絡的中心位置)。
審核編輯:湯梓紅
-
交換機
+關注
關注
21文章
2637瀏覽量
99535 -
Mac
+關注
關注
0文章
1104瀏覽量
51458 -
端口
+關注
關注
4文章
963瀏覽量
32052 -
STP
+關注
關注
0文章
42瀏覽量
10269
原文標題:交換技術(6)STP協議
文章出處:【微信號:通信弱電交流學習,微信公眾號:通信弱電交流學習】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論