由于生成樹協議本身比較小,所以并不像路由協議那樣廣為人知。但是它卻掌管著端口的轉發和開關的大權。在和別的協議一起運行的時候生成樹就有可能切斷其他協議報文通路,造成種種奇怪的現象。生成樹協議和其他協議一樣是隨著網絡的不斷發展而不斷更新換代的。總的來說可以分成以下三代生成樹協議。
一、第一代生成樹協議STP和RSTP
1.Spanning Tree Protocol
以太網絡發展初期,透明網橋是一個不得不提的重要功能。它比只會放大和廣播信號的HUB功能強大很多。它能把發向它的數據幀的源MAC和端口記錄下來,下次如果再遇到這個目的MAC的幀就只從記錄中的端口號發送出去,可以加快處理幀的速度。除非目的MAC沒有記錄或者目的MAC就是多播地址才會向所有端口發送。通過透明網橋不同的局域網之間可以互相通訊,而且由于具備MAC地址學習功能,不會像HUB那樣造成網絡流量的碰撞,但是透明網橋也有它的不足之處,就是透明網橋并不能像路由器那樣知道數據幀可以經過多少次轉發,一旦網絡存在環路就會造成數據幀在環路內不斷循環和增生甚至造成廣播風暴,導致網絡不可用。另外由于在大型網絡中不好定位,所以廣播風暴是二層網絡災難性的故障。
在這種環境下產生的生成樹協議很好地解決了這一問題,生成樹協議的基本思想十分簡單。因為自然界中生長的樹是不會出現環路的,所以如果網絡也能夠像一棵樹那樣生長就永遠不會出現環路。因此生成樹協議定義了以下一些概念。
根橋 Root Bridge
根端口 Root Port
指定端口 Designated Port
路徑開銷 Path Cost
定義這些概念的目的就在于通過構造一棵自然樹的方法達到裁剪冗余環路的目的同時實現鏈路備份和路徑最優化,用于構造這棵樹的算法就叫做生成樹算法(Spanning Tree Algorithm,SPA),用這種算法構造網絡樹的協議也就被稱為生成樹協議。
要實現這些功能網橋之間必須要交換一些信息,這些信息交流單元就稱為網橋協議數據單元(Bridge Protocol Data Unit,BPDU),這是一種二層數據幀,它指向的目的地址是MAC多播地址01-80-C2-00-00-00,所有支持STP協議的網橋都會接收到該數據幀,其中的數據區里攜帶了用于生成樹計算的所有有用信息。通過這些信息,加上生成樹協議的算法就可以達到生成一個無環路拓撲。
2.Rapid Spanning Tree Protocol
由于生成樹的計算時間相對來說比較長,對一些實時性要求比較高的業務,比如IP語音(Voice over IP,VOIP)的網絡,這可能導致嚴重的性能問題。為了克服這些問題,出現了快速生成樹協議(Rapid Spanning Tree Protocol,RSTP),即802.1w,它與802.1d是可以共用的,是802.1d的擴展版本??焖偕蓸鋮f議中的端口只有三種狀態:丟棄狀態,學習狀態和轉發狀態,相比生成樹協議的五種狀態提高了效率,并且可以實現更快的收斂速度。
3.STP和RSTP的缺點
快速生成樹協議相對于生成樹協議的確改進了很多,為了支持這些改進對網橋協議數據單元的格式做了一些修改,但仍然向下兼容生成樹協議,可以在一個網絡中同時包含快速生成樹協議和生成樹協議,雖然如此快速生成樹協議和生成樹協議一樣同屬于單生成樹(Single Spanning Tree,SST),它自身有很多缺陷,總的來說表現在三個方面:
(1)由于整個交換網絡只有一棵生成樹,在網絡規模比較大的時候會導致較長的收斂時間,并且一旦拓撲改變會造成較大的影響面積。
(2)在網絡結構不對稱的時候單生成樹會影響網絡的連通性。
(3)當鏈路被阻塞后將不承載任何流量,造成了帶寬的極大浪費,這在環行城域網的情況下比較明顯。
二、第二代生成樹協議PVST和PVST+
1.PVST和PVST+
上一小節所述的那些缺陷都是單生成樹無法克服的,于是支持VLAN的生成樹協議出現了。
每個VLAN都生成一棵樹是一種比較直接而且最簡單的解決方法,它能夠保證每一個VLAN都不存在環路,但是由于種種原因以這種方式工作生成樹并沒有形成標準協議,而是各個廠商都出了自己的一套協議,其中尤以Cisco的每VLAN生成樹(Per VLAN Spanning Tree,PVST)最為為代表。
但是為了攜帶更多的信息,每VLAN生成樹的網橋協議數據單元已經和生成樹協議和快速生成樹協議的網橋協議數據單元不一樣了,所以最初的每VLAN生成樹協議并不兼容生成樹協議和快速生成樹協議。
所以Cisco很快推出了能兼容生成樹協議和快速生成樹協議的VLAN生成樹協議每VLAN生成樹+(Per VLAN Spanning Tree +,PVST+)。
2.PVST和PVST+的缺點
PVST和PVST+ 協議實現了VLAN認知能力和負載均衡能力,但是新技術也帶來了新問題,PVST/PVST+ 協議也有它們一些缺點:
(1)由于每個VLAN都需要生成一棵生成樹,所以PVST的網橋協議數據單元通信量將和干道(Trunk)中的需要中繼的VLAN個數成正比。
(2)在創建VLAN個數比較多的時候維護多棵生成樹的計算量和資源占用量將急劇增長。
(3)由于協議的私有性PVST/PVST+不能像生成樹協議和快速生成樹協議一樣得到廣泛的支持。
三、第三代生成樹MISTP和MSTP
MISTP和MSTP一般情況下網絡的拓撲結構不會頻繁變化,所以PVST/PVST+的上述缺點并不會很致命,但是端口需要中繼大量VLAN的這種需求還是存在的。所以Cisco又推出了新的生成樹協議:多實例生成樹協議(Multi-Instance Spanning Tree Protocol,MISTP)。
在這個協議中引入了“實例”這個概念,相對與PVST/PVST+而言每一個VLAN對應一個生成樹,而在多實例生成樹協議中是每個實例對應一個生成樹。一個實例中可以包含多個VLAN,不過一個VLAN不能對應到多個實例中去。在使用的時候可以把多個相同拓撲結構的VLAN映射到一個實例里,這些VLAN在端口上轉發狀態將取決于對應實例在MISTP里的狀態。
多實例生成樹協議帶來的好處是顯而易見的,它既有PVST對VLAN的認知能力和負載均衡能力,又擁有可以和單生成樹協議相媲美的低CPU占用率。不過極差的兼容性阻礙了多實例生成樹協議的大范圍應用,而且它是一個Cisco私有協議。
多生成樹協議(Multiple Spanning Tree Protocol,MSTP)是美國電氣電子工程師學會在802.1s中定義的一種新型生成樹協議,這個協議目前仍然在制定過程中。多生成樹協議設計巧妙的地方在于把支持多生成樹協議的交換機和不支持多生成樹協議的交換機劃分成不同的區域,分別稱作多生成樹(Multiple Spanning Tree,MST)域和單生成樹(Single Spanning Tree,SST)域在多生成樹域內部運行多實例化的生成樹在多生成樹域的邊緣運行快速生成樹協議兼容其他協議。
四、生成樹協議在未來的發展
任何技術的發展都不會因為某項理想技術的出現而停滯,生成樹協議的發展歷程本身就說明了這一點。隨著應用的深入各種二層隧道技術不斷涌現,在這種新形勢下生成樹協議該往何處走?不過可喜的是各家廠商已經開始了這方面的探索,雖然現在還沒有一個統一的意見,但是可以預見,將來一段時間內生成樹協議仍然會在網絡中發揮重要的作用。
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。