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