簡介
本文件說明有關 RSTP 新增到先前 802.1D 標準之增強功能的資訊。
背景
802.1D 跨距樹狀目錄通訊協定 (STP) 標準的設計,是將中斷後在一分鐘左右以內恢復連線的情況視為適當的效能。隨著 LAN 環境中第 3 層交換的出現,橋接器現在會與路由解決方案相互競爭,其中的通訊協定,例如開放式最短路徑優先 (OSPF) 和增強型內部閘道路由通訊協定 (EIGRP) 等,能夠在更短的時間內提供備用路徑。
思科透過 UplinkFast、BackboneFast 和 PortFast 等功能增強了原始 802.1D 規格,藉此加快橋接網路的聚合時間。缺點是這些機制為專有,而且需要其他組態。
快速跨距樹狀目錄通訊協定(RSTP;IEEE 802.1w)可被視為是802.1D標準的演變,而不是一場革命。802.1D 術語基本上保持不變。大部分參數保持不變,因此熟悉 802.1D 的使用者能夠安心且快速地設定新的通訊協定。在大多數情況下,RSTP 不需要任何額外的組態,效能就勝過思科的專屬延伸模組。802.1w 也能夠還原為 802.1D,以便在各個連接埠上與舊版橋接器互通。這一點降低了它帶來的好處。
新版本的 802.1D 標準 IEEE 802.1D-2004 整合了 IEEE 802.1t-2001 和 IEEE 802.1w 標準。
在 Catalyst 交換器中支援 RSTP
此表顯示了部分 Catalyst 交換器系列對 RSTP 的支援,以及該支援的最低軟體需求。
| Catalyst 平台 |
含有 RSTP 的 MST |
RPVST+(又稱為 PVRST+) |
| Catalyst 2900 XL / 3500 XL |
不適用。 |
不適用。 |
| Catalyst 2940 |
12.1(20)EA2 |
12.1(20)EA2 |
| Catalyst 2950/2955/3550 |
12.1(9)EA1 |
12.1(13)EA1 |
| Catalyst 2970/3750 |
12.1(14)EA1 |
12.1(14)EA1 |
| Catalyst 3560 |
12.1(19)EA1 |
12.1(19)EA1 |
| Catalyst 3750 Metro |
12.1(14)AX |
12.1(14)AX |
| Catalyst 2948G-L3/4908G-L3 |
不適用。 |
不適用。 |
| Catalyst 4000/4500 (Cisco IOS®) |
12.1(12c)EW |
12.1(19)EW |
| Catalyst 6000/6500 (Cisco IOS) |
12.1(11b)EX、12.1(13)E、12.2(14)SX |
12.1(13)E |
| Catalyst 8500 |
不適用。 |
不適用。 |
新連接埠狀態和連接埠角色
802.1D 定義為以下五個不同的連接埠狀態:
請參閱本文件的「連接埠狀態」一節以瞭解有關連接埠狀態的更多資訊。
無論連接埠會封鎖或轉送流量,以及連接埠在使用中拓撲中扮演的角色為何(根連接埠、指定連接埠等),連接埠的狀態都是混合的。 例如,從運作的角度來看,處於封鎖狀態的連接埠和處於接聽狀態的連接埠之間並沒有差異。這兩者都會捨棄訊框而且不會學習 MAC 位址。真正的差異在於跨距樹狀目錄指派給連接埠的角色。我們可以安全地假設接聽連接埠為指定或根連接埠,而且正在進入轉送狀態。不過,一旦處於轉送狀態,就無法從連接埠狀態推斷出該連接埠是根連接埠還是指定連接埠了。這有助於證明此狀態型術語並不適用。RSTP 會將連接埠的角色和狀態分離,以解決此問題。
連接埠狀態
RSTP 中只剩下三個連接埠狀態,且對應至三個可能的運作狀態。802.1D 的已停用、封鎖中和接聽中狀態會合併成唯一的 802.1w 捨棄中狀態。
| STP (802.1D) 連接埠狀態 |
RSTP (802.1w) 連接埠狀態 |
連接埠是否包含在使用中拓撲中? |
連接埠是否會學習 MAC 位址? |
| 已停用 |
捨棄中 |
否 |
否 |
| 封鎖中 |
捨棄中 |
否 |
否 |
| 接聽中 |
捨棄中 |
是 |
否 |
| 學習中 |
學習中 |
是 |
是 |
| 轉送中 |
轉送中 |
是 |
是 |
連接埠角色
該連接埠角色現在是指派給指定連接埠的變數。連接埠角色和指定連接埠角色維持不變,而封鎖中連接埠角色分割為備份和備用連接埠角色。跨距樹狀目錄演算法 (STA) 會根據橋接器通訊協定資料單元 (BPDU) 來判斷連接埠的角色。 為了簡化工作,有關 BPDU 且必須記住的重點是,永遠都有一種方法能夠比較其中任兩個角色,並決定其中一個是否比另一個更實用。這是以儲存在 BPDU 中的值為依據,有時候也會以接收這些值所在的連接埠為依據。考慮到這一點,本節的資訊將說明連接埠角色的實用方法。
根連接埠角色
指定連接埠角色
備用和備份連接埠角色
-
這兩個連接埠角色會對應至 802.1D 的封鎖中狀態。已封鎖的連接埠會定義為非指定連接埠或根連接埠。已封鎖的連接埠接收的 BPDU 比其在區段上傳送的 BPDU 更實用。請記住,連接埠必須接收 BPDU 才能保持封鎖狀態。RSTP 為此引進了這兩個角色。
-
備用連接埠會從另一個橋接器接收更實用的 BPDU,而且是已封鎖的連接埠。如下方圖表所示:

-
備份連接埠會從其所在的相同橋接器接收更實用的 BPDU,而且是已封鎖的連接埠。如下方圖表所示:

802.1D 內部已經做出了此區別。這實質上是 Cisco UplinkFast 運作的方式。基本原理是備用連接埠提供了前往根橋接器的備用路徑,因此可以在發生故障時替換根連接埠。當然,備份連接埠會提供與相同區段的備援連線,而且無法保證與根橋接器的備用連線。因此,該連接埠會從上行鏈路群組中排除。
所以,RSTP 會針對與 802.1D 使用相同條件的跨距樹狀目錄計算最終拓撲。不同橋接器和連接埠優先順序的使用方式沒有任何變更。名稱封鎖是用於思科實作中的捨棄狀態。CatOS 版本 7.1 及以上版本仍會顯示接聽中和學習中狀態。這樣所提供的連接埠相關資訊會多於 IEEE 標準的要求。但是,現在的新功能是:通訊協定為連接埠決定的角色及其目前狀態之間有所差異。例如,連接埠現在可以同時擔任指定連接埠和封鎖中連接埠。雖然此情況發生的時間通常相當短暫,但這也表示此連接埠正處於進入指定轉送狀態的過渡狀態。
新的 BPDU 格式
RSTP 對 BPDU 格式引進了一些變更。802.1D 中僅定義兩個旗標,即拓撲變更 (TC) 和 TC 確認 (TCA)。但是,RSTP 會使用剩餘旗標位元組的所有六個位元來執行以下動作:
-
將源自 BPDU 之連接埠的角色和狀態編碼
-
處理建議/協議機制

Cisco BPDU、IEEE BPDU 和 BPDU 圖的完整檢視

如需更高解析度的影像,請參閱 Cisco BPDU、IEEE BPDU 和 BPDU 圖。
附註:位元 0(拓撲變更)是最不重要的位元。
另一個重要變更是 RSTP BPDU 現在屬於類型 2、版本 2。 這表示舊版橋接器必須捨棄這個新的 BPDU。此內容使 802.1w 橋接器能夠輕鬆偵測與其連線的舊版橋接器。
新的 BPDU 處理方式
每隔一次 Hello 時間都會傳送 BPDU
每隔一次 Hello 時間都會傳送 BPDU,而不再只是中繼。透過 802.1D,非根橋接器只會在根連接埠上收到 BPDU 時產生 BPDU。橋接器中繼的 BPDU 數量會比其實際產生的 BPDU 數量更多。對於 802.1w 而言,情況並非如此。即使沒有從根橋接器接收到任何資訊,橋接器也會每 <hello-time> 秒鐘(預設為 2 秒)傳送一次 BPDU 及其目前資訊。
資訊加快老化
在指定的連接埠上,如果連續三次未收到 hello,通訊協定資訊就可能會立即老化(或是 max_age 到期時)。 由於先前提及的通訊協定修改,BPDU 現在會作為橋接器之間的存留機制。如果橋接器連續錯過三個 BPDU,就會認為它遺失了與其直接相鄰裝置根或指定橋接器的連線。這種資訊的快速老化可讓您快速偵測故障。如果橋接器無法從相鄰裝置接收 BPDU,就可以確定與該相鄰裝置的連線已遺失。此情形和 802.1D 相反,且後者的問題可能會發生在根路徑的任一處。
附註:在物理鏈路發生故障時,故障檢測速度更快。
接受較差的 BPDU
這個概念構成了 BackboneFast 引擎的核心。IEEE 802.1w 委員會已將類似的機制納入 RSTP。橋接器從其指定的橋接器或根橋接器接收到較差的資訊時,會立即接受該資訊並取代先前儲存的資訊。

因為橋接器 C 仍然知道根正常運作中,因此會立即向橋接器 B 傳送一個 BPDU,且其中包含有關根橋接器的資訊。因此,橋接器 B 不會傳送自己的 BPDU,而且會將導向橋接器 C 的連接埠作為新的根連接埠。
快速轉換到轉送狀態
快速轉換是 802.1w 引進的最重要功能。舊版 STA 將連接埠轉換成轉送狀態之前,會被動地等待網路聚合。若要實現更快的聚合,就必須變更保守預設參數(轉送延遲和 max_age 計時器),而這經常會危及網路的穩定性。新的快速 STP 會主動確認連接埠是否能夠安全地轉換為轉送狀態,不必依賴任何計時器組態。現在,與 RSTP 相容的橋接器之間有了真正的回饋機制。為了在埠上實現快速收斂,協定依賴於兩個新變數:邊緣埠和鏈路型別。
邊緣連接埠
邊緣連接埠概念已為思科跨距樹狀目錄使用者所熟知,因為它基本上會和 PortFast 功能相對應。直接連線到終端站的所有連接埠都無法在網路中建立橋接器迴圈。因此,邊緣連接埠會直接轉換為轉送狀態,並略過接聽和學習階段。連結切換時,邊緣連接埠或啟用 PortFast 的連接埠均不會產生拓撲變更。接收到 BPDU 的邊緣連接埠會立即失去邊緣連接埠狀態,且變成一般的跨距樹狀目錄連接埠。此時,邊緣連接埠狀態有一個用戶設定的值和一個運作值。思科實作會繼續將 PortFast 關鍵字用於邊緣連接埠組態。這樣會讓轉換至 RSTP 的過程更加簡單。
連結類型
RSTP 只能在邊緣連接埠和點對點連結上快速轉換到轉送狀態。連結類型是自動從連接埠的雙工模式衍生。以全雙工運作的連接埠會假設為點對點,而半雙工連接埠預設則會視為共用連接埠。您可以透過明確組態來覆寫這個自動連結類型值。在現今的交換網路中,大部分連結都是以全雙工模式運作,而且 RSTP 會將其視為點對點連結。這樣讓它們非常適合快速轉換到轉送狀態。
與 802.1D 融合
此圖表說明了 802.1D 如何處理新增到橋接網路的新連結:

在此情境中,根橋接器和橋接器 A 之間新增了一個連結。假設橋接器 A 與根橋接器之間已經存在間接連線(透過圖表中的 C - D)。 STA 會封鎖連接埠並停用橋接器迴圈。首先,當它們出現時,根和橋接器 A 之間的連結上的兩個連接埠都會進入接聽中狀態。橋接器 A 現在可以直接接聽到根。它會立即在指定連接埠上將其 BPDU 傳播到樹狀目錄的分支。橋接器 B 和 C 從橋接器 A 接收到這個新的上層資訊後,就會立即將資訊中繼到分支。幾秒鐘後,橋接器 D 就會從根接收到 BPDU,並立即封鎖連接埠 P1。

跨距樹狀目錄在計算網路的新拓撲方面非常有效率。現在唯一的問題是,在根和橋接器 A 之間的連結最終以轉送狀態結束之前,必須經過兩次轉送延遲。這表示,因為 8021.D 演算法缺少回饋機制,無法清楚地在幾秒鐘內通告網路聚合,因此會有 30 秒的流量中斷(網路的整個 A、B 和 C 部分都隔離了)。
與 802.1w 融合
現在,您可以看到 RSTP 如何處理類似情況。請記住,最終的拓撲與 802.1D 計算出的拓撲完全相同(也就是說,封鎖的連接埠與以前的位置相同)。 只有用來達到此拓撲的步驟有所變更。
交換器 A 與根之間的連結上的兩個連接埠一出現,系統就會立即使它們進入指定的封鎖中。目前為止,所有內容的行為都和純 802.1D 的環境一樣。但是,在這個階段,交換器 A 和根之間會進行交涉。一旦交換器 A 接收到根的 BPDU,就會封鎖非邊緣的指定連接埠。這種運作方式稱為同步。一旦完成此動作,橋接器 A 就會明確授權根橋接器,使其連接埠進入轉送狀態。以下圖表說明了此過程在網路上的結果。交換器 A 和根橋接器之間的連結遭到封鎖,而且兩個橋接器都會交換 BPDU。

一旦交換器 A 封鎖了其非邊緣的指定連接埠,交換器 A 和根之間的連結就會進入轉送狀態,您則會遇到以下情況:

仍然無法有迴圈。現在,網路在交換機A之後阻塞,而不是在交換機A之前阻塞。但是,潛在橋接環路是在另一個位置截斷。此截斷部分會連同根透過交換器 A 發出的新 BPDU,一起沿著樹狀目錄向下傳輸。在此階段,交換器 A 上新封鎖的連接埠也會與啟動同步操作之交換器 B 和交換器 C 上的相鄰連接埠進行交涉,以快速轉換至轉送狀態。除了通往 A 的根連接埠以外,交換器 B 僅具有邊緣指定連接埠。因此,它沒有連接埠可以封鎖,無法授權交換器 A 進入轉送狀態。同樣地,交換器 C 只需要對 D 封鎖其指定的連接埠。現在已達到以下圖表所示的狀態:

請記住,最終的拓撲與 802.1D 範例完全相同;也就是說,D 上的連接埠 P1 最終會封鎖。這表示,只在新 BPDU 沿著樹狀目錄向下傳輸所需的時間內,就達到了最終的網路拓撲。這個快速聚合不需要任何計時器。RSTP 引進的唯一新機制是確認交換器可以在其新的根連接埠上傳送,以授權立即轉換到轉送狀態,並略過兩倍的轉送延遲長時間接聽和學習階段。管理員只需要記住以下幾點,便可從快速聚合中受益:
建議/協議順序
STA 選取某個連接埠作為指定連接埠時,802.1D 仍會等待 <forward delay> 秒兩次(預設為 2x15),才會將其轉換為轉送狀態。在 RSTP 中,此條件會對應到具有指定角色但處於封鎖狀態的連接埠。以下圖表說明了如何逐步完成快速轉換。假設根和交換器 A 之間建立了新的連結。系統會讓此連結上的兩個連接埠都進入指定的封鎖狀態,直到它們從其對等方接收到 BPDU 為止。

指定連接埠處於捨棄中或學習中狀態時(而且僅在這種情況下),就會在傳送出去的 BPDU 上設定建議位元。如先前圖表的步驟 1 所示,這就是根橋接器的連接埠 p0 上所發生的情況。因為交換器 A 接收到上層資訊,所以會立即知道 p1 是新的根連接埠。接著,交換器 A 會開始同步,以驗證其所有連接埠都會和這個新資訊同步。如果連接埠符合以下任一條件,該連接埠就會處於同步狀態:
為了說明同步機制對不同種類連接埠的影響,假設交換器 A 上存在備用連接埠 p2、指定的轉送連接埠 p3 和邊緣連接埠 p4。請注意,p2 和 p4 已經滿足其中一個條件。為了保持同步(請參閱先前圖表的步驟 2),交換器 A 只需要封鎖連接埠 p3,並為其指派捨棄中狀態。現在其所有連接埠都處於同步狀態,交換器 A 就可以取消封鎖其新選取的根連接埠 p1,並傳送協議訊息以回覆根。(請參閱步驟 3)。 此訊息是建議 BPDU 的副本,其中設定的是協議位元,而不是建議位元。這樣可以確保連接埠 p0 明確知道所接收的協議對應到哪一個建議。

p0 接收到該協議後,就可以立即轉換為轉送狀態。這是上圖的步驟 4。請注意,同步之後,連接埠 p3 會停留在指定的捨棄中狀態。在步驟 4 中,該連接埠與步驟 1 中的連接埠 p0 處於完全相同的情況。 接著,它會開始向其鄰近裝置提出建議,並嘗試快速轉換到轉送狀態。
-
建議/協議機制運作非常快速,因為它不會依賴任何計時器。這一波交握會迅速向網路邊緣傳播,並在拓撲有所變更後迅速恢復連線。
-
如果指定的捨棄中連接埠在傳送建議後仍未收到協議,就會緩慢轉換為轉送狀態,並回復為傳統的 802.1D 接聽-學習序列。如果遠端橋接器不瞭解 RSTP BPDU,或是遠端橋接器的連接埠封鎖中,就會發生這種情況。
-
思科對同步機制引進了增強功能,可讓橋接器在同步時僅讓先前的根連接埠進入捨棄中狀態。此機制運作方式的詳細資訊超出了本文件的範圍。但是,您可以安心地假設,在大多數常見的重新聚合情況下會調用此機制。本文件「與 802.1w 融合」一節中描述的情境會變得非常有效率,因為只有前往最終封鎖連接埠之路徑上的連接埠會暫時混淆。

UplinkFast
立即轉換為包含在 RSTP 中之轉送狀態的另一種形式,與 Cisco UplinkFast 專有跨距樹狀目錄擴充模組類似。基本上,橋接器失去其根連接埠時,就能夠讓其最佳備用連接埠直接進入轉送模式(新的根連接埠的顯示也由 RSTP 處理)。 選擇備用連接埠作為新的根連接埠時,會產生拓撲變更。802.1w 拓撲變更機制會清除上游橋接器之內容可定址記憶體 (CAM) 表格中的適當項目。這樣一來,就無需進行 UplinkFast 的虛擬多點傳產生流程。
不需要再進一步設定 UplinkFast,因為該機制為原生包含,而且會在 RSTP 中自動啟用。
新的拓撲變更機制
802.1D 橋接器偵測到拓撲變更時,會使用可靠的機制先通知根橋接器。如下方圖表所示:

一旦根橋接器知悉網路拓撲的變更,就會在其傳送出去的 BPDU 上設定 TC 旗標,然後將其中繼到網路中的所有橋接器。橋接器接收到設定了 TC 旗標位元的 BPDU 時,就會將其橋接表格老化時間減少至轉送延遲秒數。這樣可以確保較快排清過時的資訊。這種拓撲變更機制在 RSTP 中進行了深度的重新設計。拓撲變更的偵測及其透過網路的傳播一直在演進。
拓撲變更偵測
在 RSTP 中,只有移至轉送狀態的非邊緣連接埠會導致拓撲變更。這表示失去連線不再視為拓撲變更(亦即移至封鎖中狀態的連接埠不會再產生 TC),而這和 802.1D 相反。 RSTP 橋接器偵測到拓撲變更時,會發生以下情況:
附註:只要TC While計時器在埠上運行,從該埠傳送的BPDU就會設定TC位。計時器處於啟用狀態時,也會在根連接埠上傳送 BPDU。
拓撲變更傳播
橋接器從相鄰裝置接收到設定了 TC 位元的 BPDU 時,會發生以下情況:
這樣一來,TCN 就會快速泛洪到整個網路中。現在,TC 傳播是單一步驟的流程。事實上,拓撲變更的發起者會將此資訊傳播到整個網路中,而這和僅有根橋接器會這麼做的 802.1D 相反。此機制比 802.1D 同等機制更為快速。它不需要等待通知根橋接器以及將整個網路的拓撲變更狀態維持長達 <max age plus forward delay> 秒。

在幾秒鐘內或少數的多次 hello 時間內,整個網路 (VLAN) 之 CAM 表格中的大多數項目就會排清。這種方法可能會導致更多的臨時泛洪;但在另一方面,它也會清除潛在的過時資訊,以防止快速恢復連線。
與 802.1D 的相容性
RSTP 能夠與舊版 STP 通訊協定互通。但是,請務必注意:802.1w 與舊版橋接器互動時,就會失去其固有的快速聚合優點。
每個連接埠都會保有一個變數,以定義要在相應區段上執行的通訊協定。連接埠啟動時,也會啟動三秒鐘的移轉延遲計時器。執行此計時器時,與該連接埠相關聯的目前 STP 或 RSTP 模式會鎖定。一旦移轉延遲到期,連接埠就會適應與其接收之下一個 BPDU 相對應的模式。如果連接埠因為收到 BPDU 而變更了其操作模式,移轉延遲就會重新啟動。這樣會限制可能的模式變更頻率。

例如,假設上圖中的橋接器 A 和 B 都執行 RSTP,且為該區段指定了交換器 A。此連結上導入的是舊版 STP 橋接器 C。因為 802.1D 橋接器會略過 RSTP BPDU 並將其捨棄,因此 C 會認為區段上沒有其他橋接器,並開始傳送其較差之 802.1D 格式的 BPDU。交換器 A 會接收這些 BPDU,並且在最多兩倍 hello 時間秒數之後,僅在該連接埠上將其模式變更為 802.1D。因此,C 現在會瞭解交換器 A 的 BPDU,並接受 A 作為該區段的指定橋接器。

請注意,在這種特殊情況下,如果移除了橋接器 C,則即使橋接器 A 能夠透過其唯一的相鄰裝置 B 在 RSTP 模式下更有效地運作,也會在該連接埠上以 STP 模式執行。這是因為 A 不知道橋接器 C 已從區段中移除。對於這種特殊(罕見)情況,需要用戶干預才能手動重新啟動連接埠的通訊協定偵測。
連接埠處於 802.1D 相容模式時,也能夠處理拓撲變更通知 (TCN) BPDU,以及設定了 TC 或 TCA 位元的 BPDU。
結論
RSTP (IEEE 802.1w) 原本就隨附對 802.1D 跨距樹狀目錄之大部分思科專有的增強功能,例如 BackboneFast、UplinkFast 和 PortFast。RSTP 在正確設定的網路中可以達到更快的聚合速度,有時大約需要幾百毫秒。傳統的 802.1D 計時器(例如轉送延遲和 max_age)僅用作備份,而且如果管理員正確識別和設定了點對點連結及邊緣連接埠,就不需要使用這些計時器。此外,如果沒有與舊版橋接器互動,也不需要使用計時器。
相關資訊