基本原理
STP協定由IEEE802.1D定義,RSTP由IEEE802.1W定義。
STP的基本原理是,通過
交換機之間傳遞一種特殊的協定報文(在IEEE 802.1D中這種協定報文被稱為“配置訊息”)來確定網路的拓撲結構。配置訊息中包含了足夠的信息來保證交換機完成
生成樹計算。
生成樹協定STP/RSTP
技術原理
Rstp是從stp發展過來的,其實現基本思想一致,但它更進一步的處理了網路臨時失去連通性的問題。Rstp規定在某些情況下,處於Blocking狀態的連線埠不必經歷2倍的Forward Delay時延而可以直接進入轉髮狀態。如網路邊緣連線埠(即直接與終端相連的連線埠),可以直接進入轉髮狀態,不需要任何時延。或者是
網橋舊的根連線埠已經進入Blocking狀態,並且新的根連線埠所連線的對端網橋的指定連線埠仍處於Forwarding狀態,那么新的根連線埠可以立即進入Forwarding狀態。即使是非邊緣的指定連線埠,也可以通過與相連的網橋進行一次握手,等待對端網橋的贊同報文而快速進入Forwarding狀態。當然,這有可能導致進一步的握手,但握手次數會受到
網路直徑的限制。
功能介紹
生成樹協定最主要的套用是為了避免
區域網路中的網路環回,解決成環
乙太網網路的“
廣播風暴”問題,從某種意義上說是一種網路保護技術,可以消除由於失誤或者意外帶來的循環連線。STP也提供了為網路提供
備份連線的可能,可與SDH保護配合構成以太環網的雙重保護。新型以太單板支持符合ITU-T 802.1d標準的生成樹協定STP及
802.1w規定的快速生成樹協定RSTP,收斂速度可達到1s。
連線埠狀態
802.1d
交換機的連線埠在STP環境中共有5種狀態:阻塞blocking、監聽listening、學習learning、轉發forwarding、關閉(disable)。
*Blocking:處於這個狀態的連線埠不能夠參與轉發數據
報文,但是可以接收配置訊息,並交給CPU進行處理。 不過不能傳送配置訊息,也不進行地址學習。
*Listening:處於這個狀態的連線埠也不參與數據轉發,不進行地址學習;但是可以接收並傳送配置訊息。
*Learning:處於這個狀態的連線埠同樣不能轉發數據,但是開始地址學習,並可以接收、處理和傳送配置訊息。
*Forwarding:一旦連線埠進入該狀態,就可以轉發任何數據了,同時也進行地址學習和配置訊息的接收、處理和傳送。
交換機上一個原來被阻塞掉的連線埠由於在最大老化時間內沒有收到BPDU,從
阻塞狀態轉變為傾聽狀態,傾聽狀態經過一個轉發延遲(15秒)到達學習狀態,經過一個轉發延遲時間的
MAC地址學習過程後進入轉髮狀態。
如果到達傾聽狀態後發現本連線埠在新的
生成樹中不應該由此
連線埠轉發數據則直接回到阻塞狀態。
當拓撲發生變化,新的配置訊息要經過一定的時延才能傳播到整個網路,這個時延稱為轉發延遲(Forward Delay),協定默認值是15秒。
在所有
網橋收到這個變化的訊息之前,若舊
拓撲結構中處於轉發的連線埠還沒有發現自己應該在新的拓撲中停止轉發,則可能存在臨時環路。為了解決臨時環路的問題,生成樹使用了一種
定時器策略,即在連線埠從
阻塞狀態到轉髮狀態中間加上一個只學習MAC地址但不參與轉發的中間狀態,兩次狀態切換的時間長度都是Forward Delay,這樣就可以保證在拓撲變化的時候不會產生臨時環路。
802.1w
STP定義了5種不同的連線埠狀態,
關閉(disable),監聽(Listening),
學習(Learning),
阻斷(Blocking)和
轉發(Forwarding),其連線埠狀態表現為在
網路拓撲中連線埠狀態混合(阻斷或轉發),在拓撲中的角色(根連線埠、指定連線埠等等)。在操作上看,阻斷狀態和
監聽狀態沒有區別,都是丟棄
數據幀而且不學習MAC地址,在轉髮狀態下,無法知道該連線埠是根連線埠還是指定連線埠。
在RSTP中只有三種連線埠狀態,Discarding、Learning和Forwarding。802.1D中的禁止連線埠,監聽連線埠,阻塞連線埠在802.1W中統一合併為禁止連線埠。
RSTP根據連線埠在活動拓撲中的作用,定義了3種連線埠角色(STP有5種角色):禁用連線埠(Disabled Port)、根連線埠(Root Port)、指定連線埠(Designated Port)、為支持RSTP的快速特性規定的替代連線埠(Alternate Port)和備份連線埠(Backup Port)。
表8-20 STP和RSTP連線埠狀態比較
表8-20
RSTP有五種連線埠類型。根連線埠和指定連線埠這兩個角色在RSTP中被保留,阻斷連線埠分成
備份和替換連線埠角色。
生成樹算法(STA)使用BPDU來決定連線埠的角色,連線埠
STP Port State | RSTP Port State | 連線埠是否 為活躍狀態 | 連線埠是否 學習MAC地址 |
禁止 | 禁止 | No | No |
阻塞 | 禁止 | No | No |
監聽 | 禁止 | Yes | No |
學習 | 學習 | Yes | Yes |
轉發 | 轉發 | Yes | Yes |
類型也是通過比較連線埠中保存的BPDU來確定哪個比其他的更優先。
1)根連線埠
非根橋收到最優的BPDU配置信息的連線埠為根連線埠,即到根橋開銷最小的連線埠,這點和STP一樣。請注意圖8-16上方的
交換機,根橋沒有根連線埠。
按照STP的選擇根連線埠的原則,SW-1和SW-2和根連線的連線埠為根連線埠。
2)指定連線埠
與STP一樣,每個
乙太網網段段內必須有一個指定連線埠。假設SW-1的BID比SW-2 優先,而且SW-1的P1口連線埠ID比P2優先權高,那么P1為指定連線埠,如圖8-17所示。
3)替換連線埠
如果一個連線埠收到另外一個
網橋的更好的 BPDU,但不是最好的,那么這個連線埠成為替換連線埠,如圖8-18所示。
對於SW-2來說,連線埠P3收到的BPDU比自己優先,自己為次優先,P3為替換連線埠。
如果一個連線埠收到同一個網橋的更好 BPDU,那么這個連線埠成為備份端。當兩個連線埠被一個點到點鏈路的一個環路連在一起時,或者當一個
交換機有兩個或多個到共享
區域網路段的連線時,一個備份連線埠才能存在。
如圖8-19所示,SW-1的P1和P2口同時接入到
乙太網的
同一網段,P1為指定連線埠,P2 優先權低,則P2連線埠為備份連線埠。
5)禁用連線埠
配置
步驟1:進入全局模式
Switch#configure terminal
步驟2:開啟生成樹協定
Switch(config)#spanning-tree
默認狀態下STP協定是關閉的,需要用命令打開
步驟3:配置生成樹模式
Switch(config)#spanning-tree mode { mstp | rstp | stp }
P/A機制
P/A機制即Proposal/Agreement機制。其目的是使一個指定連線埠儘快進入Forwarding狀態。其過程的完成根據以下幾個連線埠變數:
A)Proposing。當一個指定連線埠處於Discarding或Learning狀態的時候,該變數置位。並向下游交換傳遞Proposal位被置位的BPDU。
B)Proposed。當下游交設備連線埠收到對端的指定連線埠發來的攜帶Proposal的BPDU的時候。該變數置位。該變數指示上游網段的指定連線埠希望進入Forwarding狀態。
C)sync。當Proposed被設定以後,收到Proposal置位信息的根連線埠會依次為自己的其他連線埠置位sync變數。如果連線埠是非邊緣的指定連線埠是則會進入Discarding狀態。
D)synced。當其它連線埠完成轉到Discarding後,會設定自己的synced變數(Alternate、Backup和
邊緣連線埠會馬上設定該變數)。根連線埠監視其他連線埠的synced,當所有其他連線埠的synced全被設定,根連線埠會設定自己的synced,然後傳回BPDU,其中Agreement位被置位。
E)agreed。當指定連線埠接收到一個BPDU時,如果該BPDU中的Agreement位被置位且連線埠角色定義是“根連線埠”,該變數被設定。Agreed變數一旦被置位,指定連線埠馬上轉入Forwarding狀態。
改進
A、STP沒有明確區分連線埠狀態與連線埠角色,收斂時主要依賴於連線埠狀態的切換。RSTP比較明確的區分了連線埠狀態與連線埠角色,且其收斂時更多的是依賴於連線埠角色的切換。
B、STP連線埠狀態的切換必須被動的等待時間的逾時。而RSTP連線埠狀態的切換卻是一種主動的協商。
C、STP中的非根
網橋只能被動的中繼BPDU。而RSTP中的非根網橋對BPDU的中繼具有一定的主動性。