生成樹的技術,一直以來都是交換機很重要的技術,其目的是為了避免網路迴圈所造成的各種問題。而各個交換機之間到底如何透過一個共同的技術製作出一份生成樹是一個重要的議題,本文將簡述運作的原理,而如何改善運算生成樹的過程,也就是RSTP,也會做介紹。
以圖3為例,這兩台交換機設備都是使用預設的優先序,也就是32768,但是因為交換機A之MAC位址的值比較低,所以交換機A就是Root Bridge。其實,這個優先序是可以自行更改的,可以依照網管人員的網路規劃做不同的設定。
|
▲圖3 網路範例示意圖。 |
第二步驟:決定各個埠的角色
一旦決定了Root Bridge之後,其他的交換機和橋接器設備就都是Non-root Bridge,在Root Bridge上的各個Port一定都是Designated Port,接著就是要在這些其他的Non-root Bridge中決定哪個埠要當成Root Port。接下來,說明稍微複雜一點的範例。
在圖4中,根據第一步驟的概念,可以很輕易地得知交換機C是這整個網路的Root Bridge,所以交換機C上面的埠就都是Designated Port。而由於Root Port的定義是指能以最少的成本到達Root Bridge的埠就叫做Root Port。
|
▲圖4 網路架構範例。 |
從圖中可以看出,在下面兩台交換機設備中,其上面的埠通往交換機C一定可以消耗最少的成本,因為Segment 1的網路速度是100 BaseT,所以這兩台設備上面的埠都是Root Ports。
而這兩台交換機設備的下面兩個埠中,必須選出一個埠當作Designated Port,還記得嗎?因為「每個網路區段(Segment)都必須要有一個Designated Port」,而這個Designated Port到Root Bridge的成本消耗也必須是比較低的,但是就圖中這兩個埠而言,它們到達Root Bridge所花費的成本都是一樣多的,此時就必須根據BID來做選擇,BID較低的就是Designated Port。
由於交換機A的BID比較低(因為MAC位址的值比較低),所以交換機A下面的埠就是Designated Port,而最後沒有被選上的交換機B下端的埠就變成Non-designated Port,這個Non-designated Port的目的就是在於破壞整個網路造成的迴圈。
事實上,STP之所以要如此複雜,其目的就是在於建立一個「不具網路迴圈的最佳網路路線圖」,因為希望能得到最佳的網路路線圖,所以整個考量因素會著重於網路成本之中,使那些可以用最低成本就到達整個網路各個設備的埠能被使用。
而在STP製作出來的網路路線之中,Non-designated Port的角色就相當於「後備」埠,如果原本正在運作的埠內有任何一個突然無法正常運作的話,整個網路的STP就會重新運作並計算出最佳的非迴圈網路路線,並把Non-designated Port重新啟動,加入整個STP運算的考量之中。因此,一旦原本非Non-designated Port不正常運作時,至少會有一個原本是Non-designated Port會變成Root Port或是Designated Port。
除了不正常運作外,當橋接器或是交換機設備在20秒之內沒有收到任何的BPDU時,一樣也會重新採用STP計算最佳網路拓撲。此外,若網路架構中有新增或移除設備的話,也會重新執行STP協定的運算過程。
了解各種埠的狀態
看到這裡,想必大家已經知道STP的詳細運作流程與目的,而在STP運作完成之後,會產生各種角色的埠,如同之前範例所看到的,例如Designated Port、Root Port以及Non-designated Port等等,而Designated Port和Root Port都是處在轉發(Forwarding)的狀態,而Non-designated Port則是處於封鎖(Blocking)的狀態。
事實上,當STP重新運算時,埠從封鎖的狀態要變成轉發的狀態,期間還會經過其他的狀態,在STP運作途中,總共有四種狀態,分別是Blocking、Listening、Learning以及Forwarding狀態。
當STP被啟動時,各個埠都會先處於Blocking狀態,接著經過Listening狀態,再變成Learning狀態,如果設定一切正常的話,最後埠會穩定地變成Blocking或是Forwarding狀態。若變成Forwarding狀態,就代表從這個埠到Root Bridge的成本比較低。
前面有提到,一旦有任何原本是Forwarding狀態的埠不正常運作時,STP就會重新計算,此時各個埠會重新變成Listening和Learning狀態。直到STP運算穩定下來之後,埠才會被決定要處於Forwarding狀態還是Blocking狀態。因此,從Blocking要轉變成Forwarding狀態的過程如圖5所示。
|
▲圖5 從Blocking要轉變成Forwarding狀態的過程。 |
Blocking狀態
一開始,各個埠都是處於Blocking狀態,此時這些埠會等候並監聽BPDU的到來,在這種等待的過程中,最多會等待20秒,如果在這20秒的期間內,都沒有收到來自其他交換機或是橋接器設備的BPDU的話,這個埠就會自動變成Listening狀態。而當交換機或是橋接器設備在開機之後,都會認為自己這台設備是Root Bridge,所以每一台設備都會傳送BPDU到其他設備,但是等到STP運算結束之後,只有Root Bridge才會發送BPDU給其他設備。
小標Listening狀態
一旦從Blocking狀態變成Listening狀態後,就可以發送或是接收BPDU封包,但是這個時候無法發送和接收使用者的資料封包。當各個埠處於Listening的狀態時,所有的交換機或是橋接器設備會完成以下這三件事情: