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