STP狀態切換詳述(Cisco實現)

1.狀態切換

序號

狀態切換

切換原因

to Disabled

管理員shutdown端口或端口失效

to Blocking

當前端口放棄Root PortDesignated  Port角色,且經過選舉後被阻塞

Disabled to Listening

管理員激活端口或端口由失效恢復,此時端口爲Designated  Port,開始發送BPDU

Blocking to Listening

Blocking State,通過BPDU信息,當前端口決定成爲Root PortDesignated Port

Listening to Learning & Learning to Forwarding

Forward Delay計時器超時

Blocking to Forwarding

配置了STP增強特性

注意:

當端口由Disabled to Listening時,能夠轉發BPDU,可以認爲是DesignatedPort

該端口此後如果能夠收到BPDU,則將根據BPDU決定成爲RootPort,或將端口狀態轉爲Blocking,或繼續維持DesignatedPort角色


2.狀態維護機制

2.1 Best BPDU

1何爲Best BPDU

Spanning Tree拓撲穩定時,交換機所瞭解到的最優BPDU參數

注意:

實際上交換機收到BPDU時,與本地STP數據庫中信息進行比較,這裏稱爲BestBPDU是爲了更加形象,易於描述

2Best BPDU參數

RID

是當前Spanning Tree拓撲中,根橋的BID

Root Path Cost

是當前交換機(Root Port)到根橋的開銷

BID

每個SegmentDesignated BridgeBID(每個端口有所不同)

PID

每個SegmentDesignated BridgePID(每個端口有所不同)

3作用

用於維護Spanning Tree信息

2.2 維護機制

交換機端口收到BPDU時,便將其與該端口對應的Best BPDU相比較

1參數一致

刷新保持計時器

2收到的BPDU參數更優

端口角色、狀態將會發生改變

3本地Best BPDU更優

Designated Port

發送BPDU,使遠端與本地保持一致

Root PortBlocking Port

由於這兩種端口都沒有發送BPDU的能力,因此簡單忽略該BPDU

2.3 Inferior BPDU

是指不如本地Best BPDU的消息

2.4 Better(Superior) BPDU

是指比本地保存的Best BPDU更優的消息


3.端口放棄Root Port角色

3.1 放棄Root Port可能導致的狀態切換

Forwarding to Forwarding

Forwarding to Blocking

Forwarding to Disabled

3.2 何時放棄Root Port

爲了方便各種不同情況的判斷,下文均以僞代碼的形式表示STP的端口狀態判斷機制

1Root Port丟失到根橋連接

MaxAgeTimeexpire

ifno BPDU rcv || haven't rcv BestBPDUon RootPort

PortRoleRootPort to DesignatedPort

PortStatestay Forwarding

else ifport change state to down

PortStateForwardingto Disabled

注意:

特殊情況下,當前交換機如果由於根端口丟失到根橋連接,進而導致交換機所有端口無法瞭解到根橋信息時,當前交換機將認爲自己是根橋

2其它端口發現到根橋的更優路徑

BPDUBPDU rcv onother ports

ifa new root port is on one of other ports

PortRolegive up RootPort

PortStateRootPortto Blocking       //這是通常情況

注意:

之所以說通常進入Blocking State是因爲原拓撲中,Root Port鏈路對端是Designated Port,距離根橋的距離更近

如果Spanning Tree拓撲發生較大變化,當前端口不排除成爲Designated Port的可能,此時則依然維持Forwarding State

3出現新根橋,且當前端口未能選舉成Root Port

BPDUa BPDU rcv onother ports

ifthis other port elected to be the new RootPort

PortRolegive up RootPort

PortStateForwarding

BPDUa BPDU rcv on old RootPort

ifold RootPort is failed in the election

PortStateForwardingto Blocking

else

PortRoleto be DesignatedPort

PortStatestay Forwarding


4.端口放棄Designated Port角色

4.1  放棄Designated Port可能導致的狀態切換

Forwarding to Forwarding

Forwarding to Blocking

Forwarding to Disabled

4.2 何時放棄Designated Port

1出現到根橋的新路徑

BPDUa better BPDUrcv on DesignatedPort

ifa new DesignatedBridgeis elected in the segment

PortRolegive up DesignatedPort

PortStateForwardingto Blocking

else ifthe DesignatedPort iselected to be the new RootPort on the bridge

PortStatestay Forwarding

2出現新根橋,且當前端口未能選舉爲Designated Port

BPDUa new BPDU rcvon DesignatedPort

Bridgea new RootBridge found

supersede the old RootBridge

ifDesignatedPort is elected to be the new RootPort

PortStatestay Forwarding

else ifDesignatedPort is failed in the election

PortRolegive up DesignatedPort

PortStateForwardingto Blocking

3Designated Port被失效或被手動關閉

放棄Designated Port角色,進入Disabled狀態


5.端口決定成爲Root Port

5.1 可能導致的狀態切換

Blocking to Listening

Forwarding to Forwarding

Listeing to Listening

5.2 何時決定成爲Root Port

1Blocking端口發現去往根橋捷徑

BPDUa better BPDUrcv on BlockingPort

ifPortState==Blocking &&Port is elected to be RootPort

PortStateBlockingto Listening

2Blocking端口發現新根橋

a new RootBridge discovered

ifPortState==Blocking &&Port is elected to be RootPort

PortStateBlockingto Listening

3Designated Port放棄當前角色

PortRoleDesignatedPort

BPDUa better BPDUrcv on DesignatedPort

ifDesignatedPort change to RootPort

PortStatestay Forwarding

4端口激活或恢復後,選舉爲Root Port

ifPortState change state to Up                 //端口激活或恢復

PortStateDisabledto Listening

PortRoleDesignatedPort

ForwardDelayTimeron

BPDUa BPDU rcv onListeningPort

ifPort is elected to be RootPort

PortStatego on with Listening

ForwardDelayTimergoon

ForwardDelayTimerexpire

PortStateListening to Learning

ForwardDelayTimerexpire

PortStateLearning to Forwarding


6.端口決定成爲Designated Port

6.1 可能導致的狀態切換

Blocking to Listening

Forwarding to Forwarding

Listening to Listening

6.2 何時決定成爲Designated Port

Bridgealready has a RootPort

ifPortState == Blocking

MaxAgeTimeexpire

ifno BPDU rcv || haven't rcv BestBPDUon DesignatedPort

PortRoledecide to be DesignatedPort

PortStateBlocking to Listening


else ifPortState ==Forwarding      //端口處於轉發狀態且不是指定端口,穩定拓撲中,則爲根端口

PortRoleRootPort

BPDUa BPDU rcv onthis port

ifthis port give up the RootPort role && BPDU isnot better than BestBPDU

PortRoleDesignatedPort

PortStatestay Forwarding


else ifport was down && comes Up

PortStateDisabled to Listening

PortRoleDesignatedPort

BPDUa BPDU rcv onthis port

ifthis BPDU is not better thanBestBPDU

PortStatego on with Listening

ForwardDelayTimergoon

ForwardDelayTimerexpire

PortStateListening to Learning

ForwardDelayTimerexpire

PortStateLearning to Forwarding

6.3 成爲Designated Port以後

BPDUa BPDU rcv onDesignatedPort

ifthis BPDU is not better thanBestBPDU

BPDUsend BPDU on DesignatedPort

注意:

Root Portnon-Designated Port選擇忽略不同,指定端口由於具備BPDU發送能力,此時會主動同步下游設備


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章