生成樹協議(STP PVST CST RSTP MSTP)解析

此文轉於:http://network.51cto.com/art/201307/404013.htm  ,沒有別的意思是隻留起來慢慢學習

生成樹協議是一種二層管理協議,它通過有選擇性地阻塞網絡冗餘鏈路來達到消除網絡二層環路的目的,同時具備鏈路的備份功能。

由於生成樹協議本身比較小,所以並不像路由協議那樣廣爲人知。但是它卻掌管着端口的轉發大權—“小樹枝抖一抖,上層協議就得另謀生路”。真實情況也確實如此,特別是在和別的協議一起運行的時候,生成樹就有可能斷了其他協議的報文通路,造成種種奇怪的現象。

生成樹協議和其他協議一樣,是隨着網絡的不斷髮展而不斷更新換代的。本文標題中的“生成樹協議”是一個廣義的概念,並不是特指IEEE 802.1D中定義的STP協議,而是包括STP以及各種在STP基礎上經過改進了的生成樹協議。

在生成樹協議發展過程中,老的缺陷不斷被克服,新的特性不斷被開發出來。按照大功能點的改進情況,我們可以粗略地把生成樹協議的發展過程劃分成三代,下面一一道來。

開天闢地的第一代生成樹協議:

STP/RSTP

在網絡發展初期,透明網橋是一個不得不提的重要角色。它比只會放大和廣播信號的集線器聰明得多。它會悄悄把發向它的數據幀的源MAC地址和端口號記錄下來,下次碰到這個目的MAC地址的報文就只從記錄中的端口號發送出去,除非目的MAC地址沒有記錄在案或者目的MAC地址本身就是多播地址纔會向所有端口發送。通過透明網橋,不同的局域網之間可以實現互通,網絡可操作的範圍得以擴大,而且由於透明網橋具備MAC地址學習功能而不會像Hub那樣造成網絡報文衝撞氾濫。

但是,金無足赤,透明網橋也有它的缺陷,它的缺陷就在於它的透明傳輸。透明網橋並不能像路由器那樣知道報文可以經過多少次轉發,一旦網絡存在環路就會造成報文在環路內不斷循環和增生,甚至造成恐怖的“廣播風暴”。之所以用“恐怖”二字是因爲在這種情況下,網絡將變得不可用,而且在大型網絡中故障不好定位,所以廣播風暴是二層網絡中災難性的故障。

在這種大環境下,扮演着救世主角色的STP(Spanning TreeProtocol)協議來到人間,其中以IEEE的802.1D版本最爲流行。

圖1 生成樹工作過程示意圖

STP協議的基本思想十分簡單。大家知道,自然界中生長的樹是不會出現環路的,如果網絡也能夠像一棵樹一樣生長就不會出現環路。於是,STP協議中定義了根橋(RootBridge)、根端口(RootPort)、指定端口(DesignatedPort)、路徑開銷(PathCost)等概念,目的就在於通過構造一棵自然樹的方法達到裁剪冗餘環路的目的,同時實現鏈路備份和路徑最優化。用於構造這棵樹的算法稱爲生成樹算法SPA(Spanning TreeAlgorithm)。

要實現這些功能,網橋之間必須要進行一些信息的交流,這些信息交流單元就稱爲配置消息 BPDU(BridgeProtocol Data Unit)。STP BPDU是一種二層報文,目的MAC是多播地址01-80-C2-00-00-00,所有支持STP協議的網橋都會接收並處理收到的BPDU報文。該報文的數據區裏攜帶了用於生成樹計算的所有有用信息。

要了解生成樹協議的工作過程也不難,首先進行根橋的選舉。選舉的依據是網橋優先級和網橋MAC地址組合成的橋ID(Bridge ID)橋ID最小的網橋將成爲網絡中的根橋。在圖1所示的網絡中,各網橋都以默認配置啓動,在網橋優先級都一樣(默認優先級是32768)的情況下,MAC地址最小的網橋成爲根橋,例如圖1中的SW1,它的所有端口的角色都成爲指定端口,進入轉發狀態。

接下來,其他網橋將各自選擇一條 “最粗壯”的樹枝作爲到根橋的路徑,相應端口的角色就成爲根端口。假設圖1中SW2和SW2、SW3之間的鏈路是千兆GE鏈路,SW1和SW3之間的鏈路是百兆FE鏈路,SW3從端口1到根橋的路徑開銷的默認值是19,而從端口2經過SW2到根橋的路徑開銷是4+4=8,所以端口2成爲根端口,進入轉發狀態。同理,SW2的端口2成爲根端口,端口1成爲指定端口,進入轉發狀態。

根橋和根端口都確定之後一棵樹就生成了,如圖中實線所示。下面的任務是裁剪冗餘的環路。這個工作是通過阻塞非根橋上相應端口來實現的,例如SW3的端口1的角色成爲禁用端口,進入阻塞狀態(圖中用“×”表示)。

生成樹經過一段時間(默認值是30秒左右)穩定之後,所有端口要麼進入轉發狀態,要麼進入阻塞狀態。STPBPDU仍然會定時從各個網橋的指定端口發出,以維護鏈路的狀態。如果網絡拓撲發生變化,生成樹就會重新計算,端口狀態也會隨之改變。

當然生成樹協議還有很多內容,在這裏不可能一一介紹。之所以花這麼多筆墨介紹生成樹的基本原理是因爲它太“基本”了,其他各種改進型的生成樹協議都是以此爲基礎的,基本思想和概念都大同小異。

STP協議給透明網橋帶來了新生。但是,隨着應用的深入和網絡技術的發展,它的缺點在應用中也被暴露了出來。STP協議的缺陷主要表現在收斂速度上。

當拓撲發生變化,新的配置消息要經過一定的時延才能傳播到整個網絡,這個時延稱爲Forward Delay,協議默認值是15秒。在所有網橋收到這個變化的消息之前,若舊拓撲結構中處於轉發的端口還沒有發現自己應該在新的拓撲中停止轉發,則可能存在臨時環路。爲了解決臨時環路的問題,生成樹使用了一種定時器策略,即在端口從阻塞狀態到轉發狀態中間加上一個只學習MAC地址但不參與轉發的中間狀態,兩次狀態切換的時間長度都是Forward Delay,這樣就可以保證在拓撲變化的時候不會產生臨時環路。但是,這個看似良好的解決方案實際上帶來的卻是至少兩倍Forward Delay的收斂時間!

爲了解決STP協議的這個缺陷,在世紀之初IEEE推出了802.1w標準,作爲對802.1D標準的補充。在IEEE 802.1w標準裏定義了快速生成樹協議RSTP(Rapid Spanning Tree Protocol)。RSTP協議在STP協議基礎上做了三點重要改進,使得收斂速度快得多(最快1秒以內)。

第一點改進:爲根端口和指定端口設置了快速切換用的替換端口(Alternate Port)和備份端口(Backup Port)兩種角色,當根端口/指定端口失效的情況下,替換端口/備份端口就會無時延地進入轉發狀態。圖2中所有網橋都運行RSTP協議,SW1是根橋,假設SW2的端口1是根端口,端口2將能夠識別這種拓撲結構,成爲根端口的替換端口,進入阻塞狀態。當端口1所在鏈路失效的情況下,端口2就能夠立即進入轉發狀態,無需等待兩倍Forward Delay時間。

圖2 RSTP冗餘鏈路快速切換示意圖

第二點改進:在只連接了兩個交換端口的點對點鏈路中,指定端口只需與下游網橋進行一次握手就可以無時延地進入轉發狀態。如果是連接了三個以上網橋的共享鏈路,下游網橋是不會響應上游指定端口發出的握手請求的,只能等待兩倍Forward Delay時間進入轉發狀態。

第三點改進:直接與終端相連而不是把其他網橋相連的端口定義爲邊緣端口(Edge Port)。邊緣端口可以直接進入轉發狀態,不需要任何延時。由於網橋無法知道端口是否是直接與終端相連,所以需要人工配置。

可見,RSTP協議相對於STP協議的確改進了很多。爲了支持這些改進,BPDU的格式做了一些修改,但RSTP協議仍然向下兼容STP協議,可以混合組網。雖然如此,RSTP和STP一樣同屬於單生成樹SST(SingleSpanning Tree),有它自身的諸多缺陷,主要表現在三個方面。

第一點缺陷:由於整個交換網絡只有一棵生成樹,在網絡規模比較大的時候會導致較長的收斂時間,拓撲改變的影響面也較大。

第二點缺陷:近些年IEEE802.1Q大行其道,逐漸成爲交換機的標準協議。在網絡結構對稱的情況下,單生成樹也沒什麼大礙。但是,在網絡結構不對稱的時候,單生成樹就會影響網絡的連通性。

圖3 非對稱網絡示意圖

圖3中假設SW1是根橋,實線鏈路是VLAN 10,虛線鏈路是802.1Q的Trunk鏈路,Trunk了VLAN 10和VLAN 20.當SW2的Trunk端口被阻塞的時候,顯然SW1和SW2之間VLAN 20的通路就被切斷了。

第三點缺陷:當鏈路被阻塞後將不承載任何流量,造成了帶寬的極大浪費,這在環行城域網的情況下比較明顯。

圖4 SST帶寬利用率低下示意圖

圖4中假設SW1是根橋,SW4的一個端口被阻塞。在這種情況下,SW2和SW4之間鋪設的光纖將不承載任何流量,所有SW2和SW4之間的業務流量都將經過SW1和SW3轉發,增加了其他幾條鏈路的負擔。

這些缺陷都是單生成樹SST無法克服的,於是支持VLAN的多生成樹協議出現了。

聰明伶俐的第二代生成樹協議:

PVST/PVST+

每個VLAN都生成一棵樹是一種比較直接,而且最簡單的解決方法。它能夠保證每一個VLAN都不存在環路。但是由於種種原因,以這種方式工作的生成樹協議並沒有形成標準,而是各個廠商各有一套,尤其是以Cisco的VLAN生成樹PVST(Per VLAN Spanning Tree)爲代表

爲了攜帶更多的信息,PVSTBPDU的格式和STP/RSTPBPDU格式已經不一樣,發送的目的地址也改成了Cisco保留地址01-00-0C- CC-CC-CD,而且在VLAN Trunk的情況下PVST BPDU被打上了802.1Q VLAN標籤。所以,PVST協議並不兼容STP/RSTP協議。

Cisco很快又推出了經過改進的PVST+協議,併成爲了交換機產品的默認生成樹協議。經過改進的PVST+協議在VLAN 1上運行的是普通STP協議,在其他VLAN上運行PVST協議。PVST+協議可以與STP/RSTP互通,在VLAN 1上生成樹狀態按照STP協議計算。在其他VLAN上,普通交換機只會把PVST BPDU當作多播報文按照VLAN號進行轉發。但這並不影響環路的消除,只是有可能VLAN 1和其他VLAN的根橋狀態可能不一致。

圖5 PVST+與SST對接示意圖

圖5中所有鏈路默認VLAN是VLAN 1,並且都Trunk了VLAN 10和VLAN 20.SW1和SW3運行單生成樹SST協議,而SW2運行PVST+協議。在VLAN 1上,可能SW1是根橋,SW2的端口1被阻塞。在VLAN 10和VLAN 20上,SW2只能看到自己的PVSTBPDU,所以在這兩個VLAN上它認爲自己是根橋。VLAN 10和VLAN 20的PVST BPDU會被SW1和SW3轉發,所以SW2檢測到這種環路後,會在端口2上阻塞VLAN 10和VLAN 20.這就是PVST+協議提供的STP/RSTP兼容性。可以看出,網絡中的二層環路能夠被識別並消除,強求根橋的一致性是沒有任何意義的。

由於每個VLAN都有一棵獨立的生成樹,單生成樹的種種缺陷都被克服了。同時,PVST帶來了新的好處,那就是二層負載均衡。

圖6 PVST+負載均衡示意圖

圖6中四臺設備都運行PVST+協議,並且都Trunk了VLAN 10和VLAN 20.假設SW1是所有VLAN的根橋,通過配置可以使得SW4端口1上的VLAN 10和端口2上的VLAN 20阻塞,SW4的端口1所在鏈路仍然可以承載VLAN20的流量,端口2所在鏈路也可以承載VLAN 10的流量,同時具備鏈路備份的功能。這在以往的單生成樹情況下是無法實現的。

聰明伶俐的PVST/PVST+協議實現了VLAN認知能力和負載均衡能力,但是新技術也帶來了新問題,PVST/PVST+協議也有它們的“難言之隱”。

第一點缺陷:由於每個VLAN都需要生成一棵樹,PVST BPDU的通信量將正比於Trunk的VLAN個數。

第二點缺陷:在VLAN個數比較多的時候,維護多棵生成樹的計算量和資源佔用量將急劇增長。特別是當Trunk了很多VLAN的接口狀態變化的時候,所有生成樹的狀態都要重新計算,CPU將不堪重負。所以,Cisco交換機限制了VLAN的使用個數,同時不建議在一個端口上Trunk很多VLAN.

第三點缺陷:由於協議的私有性,PVST/PVST+不能像STP/RSTP一樣得到廣泛的支持,不同廠家的設備並不能在這種模式下直接互通,只能通過一些變通的方式實現,例如Foundry的IronSpan.IronSpan默認情況下運行的是STP協議,當某個端口收到PVSTBPDU時,該端口的生成樹模式會自動切換成PVST/PVST+兼容模式。

一般情況下,網絡的拓撲結構不會頻繁變化,所以PVST/PVST+的這些缺點並不會很致命。但是,端口Trunk大量VLAN這種需求還是存在的。於是,Cisco對PVST/PVST+又做了新的改進,推出了多實例化的MISTP協議。

多實例化的第三代生成樹協議:MISTP/MSTP

多實例生成樹協議MISTP(Multi-Instance Spanning TreeProtocol)定義了“實例”(Instance)的概念。簡單的說,STP/RSTP是基於端口的,PVST/PVST+是基於VLAN 的,而MISTP就是基於實例的。所謂實例就是多個VLAN的一個集合,通過多個VLAN捆綁到一個實例中去的方法可以節省通信開銷和資源佔用率。

在使用的時候可以把多個相同拓撲結構的VLAN映射到一個實例裏,這些VLAN在端口上轉發狀態將取決於對應實例在MISTP裏的狀態。值得注意的是網絡裏的所有交換機的VLAN和實例映射關係必須都一致,否則會影響網絡連通性。爲了檢測這種錯誤,MISTPBPDU裏除了攜帶實例號以外,還要攜帶實例對應的VLAN關係等信息。MISTP協議不處理STP/RSTP/PVST BPDU,所以不能兼容STP/RSTP協議,甚至不能向下兼容PVST/PVST+協議,在一起組網的時候會出現環路。爲了讓網絡能夠平滑地從 PVST+模式遷移到MISTP模式,Cisco在交換機產品裏又做了一個可以處理PVST BPDU的混合模式MISTP-PVST+。網絡升級的時候需要先把設備都設置成MISTP-PVST+模式,然後再全部設置成MISTP模式。

MISTP帶來的好處是顯而易見的。它既有PVST的VLAN認知能力和負載均衡能力,又擁有可以和SST媲美的低CPU佔用率。不過,極差的向下兼容性和協議的私有性阻擋了MISTP的大範圍應用。

多生成樹協議MSTP(Multiple Spanning Tree Protocol)是IEEE 802.1s中定義的一種新型多實例化生成樹協議。這個協議目前仍然在不斷優化過程中,現在只有草案(Draft)版本可以獲得。不過Cisco已經在 CatOS 7.1版本里增加了MSTP的支持,華爲公司的三層交換機產品Quidway系列交換機也即將推出支持MSTP協議的新版本。

MSTP協議精妙的地方在於把支持MSTP的交換機和不支持MSTP交換機劃分成不同的區域,分別稱作MST域和SST域。在MST域內部運行多實例化的生成樹,在MST域的邊緣運行RSTP兼容的內部生成樹IST(Internal Spanning Tree)。

圖7 MSTP工作原理示意圖

圖7中間的MST域內的交換機間使用MSTP BPDU交換拓撲信息, SST域內的交換機使用STP/RSTP/PVST+ BPDU交換拓撲信息。在MST域與SST域之間的邊緣上,SST設備會認爲對接的設備也是一臺RSTP設備。而MST設備在邊緣端口上的狀態將取決於內部生成樹的狀態,也就是說端口上所有VLAN的生成樹狀態將保持一致。

MSTP設備內部需要維護的生成樹包括若干個內部生成樹IST,個數和連接了多少個SST域有關。另外,還有若干個多生成樹實例MSTI(Multiple Spanning Tree Instance)確定的MSTP生成樹,個數由配置了多少個實例決定。

MSTP相對於之前的種種生成樹協議而言,優勢非常明顯。MSTP具有VLAN認知能力,可以實現負載均衡,可以實現類似RSTP的端口狀態快速切換,可以捆綁多個VLAN到一個實例中以降低資源佔用率。最難能可貴的是MSTP可以很好地向下兼容STP/RSTP協議。而且,MSTP是IEEE標準協議,推廣的阻力相對小得多。

可見,各項全能的MSTP協議能夠成爲當今生成樹發展的一致方向是當之無愧的。

生成樹協議的未來之路

任何技術的發展都不會因爲某項“理想”技術的出現而停滯,生成樹協議的發展歷程本身就說明了這一點。隨着應用的深入,各種新的二層隧道技術不斷涌現,例如Cisco的802.1QTunneling,華爲QuidwayS8016的QinQ,以及基於MPLS的二層***技術等。在這種新形勢下,用戶和服務提供商對生成樹協議又會有新的需求。生成樹協議該往何處走?這個問題雖然現在還沒有一個統一的答案,但是各廠商已經開始了這方面的積極探索。也許不久的將來,支持二層隧道技術的生成樹協議將成爲交換機的標準協議。

原文博客:http://blog.163.com/hlz_2599/blog/static/14237847420113261083105/

【責任編輯:張存 TEL:(010)68476606】


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章