區域網路、乙太網路與交換

生成樹協定(Spanning Tree Protocol)

/ SPAN-ing tree /

生成樹協定(Spanning Tree Protocol)阻止交換式網路繞回自己而崩潰。人們常在交換器之間多接幾條線當備援,但迴圈在第二層是致命的:送進迴圈的廣播訊框會永遠繞圈,每經過一台交換器就複製一次,直到網路被副本淹沒(廣播風暴)。STP 是交換器之間的約定,意思是:保留這些備援連結,但邏輯上關掉其中一些,讓任兩點之間恰好只有一條路徑——一棵無迴圈的樹。

用白話分步說明這個想法。交換器們選出一台作為樹的根(橋 ID 最小的那台)。其餘每台交換器算出自己回到根的最低成本路徑,只保留那條最佳路徑上的埠為作用中;會造成第二條通往某處路徑的埠則被置於阻塞狀態,不承載資料訊框,但仍在聆聽。交換器透過交換稱為 BPDU 的小訊息來發現這一切。結果是一棵連到每台交換器、沒有迴圈的樹。若某條作用中的連結失效,先前被阻塞的埠就會醒來接手、恢復連通——這正是人們當初要接備援連結的原因。

經典 STP 在變動後可能要數十秒才重新收斂,所以實務上被快速生成樹(RSTP,802.1w)取代,後者快得多,還有各 VLAN 各自一棵樹的變體。誠實的提醒:STP 靠讓昂貴的連結閒置來解決迴圈,所以在現代資料中心裡,它常被那些「同時使用所有連結而非阻塞它們」的設計(例如搭配等價多路徑的葉脊拓樸,或連結聚合)取代。

三台交換器接成一個三角形以備援。STP 選出一個根,然後阻塞一個埠,使作用中的拓樸是一條線、不是三角形——沒有迴圈。剪斷其中兩台之間作用中的纜線,被阻塞的埠就在片刻內解除阻塞、恢復路徑。

備援佈線保留在原處;STP 一次只讓一條無迴圈路徑作用。

STP 防止第二層迴圈,而 IP 的 TTL 並不能——乙太網路訊框沒有跳數欄位,所以沒有 STP 的話迴圈永遠不會停。代價是被阻塞的連結會閒置到發生故障為止。

又称
STPIEEE 802.1DRSTPrapid spanning tree生成樹