電腦網路與連結技術第十章 區域網路連結技術 上一頁    下一頁

10-4 橋接網路的擴張樹

內容:

  • 10-4-1 橋接網路的迴路問題

  • 10-4-2 橋接網路的擴張樹

10-4-1 橋接 網路迴路問題

        如果利用多個橋接器所連結之網路,稱之為『橋接區域網路』(Bridge LAN, BLAN。在一個 BLAN 上,我們為了提高網路的可靠性,便希望網路具有迴路功能。如果網路上某一連線斷線,可以經過其它迴路傳送訊框,而不至於使網路被隔離成若干個小網路。但有迴路的 BLAN,會造成橋接器學習上的困難。如圖 10-15 中,橋接器 X 學習到工作站 A 是隸屬於埠口 1 2,而網路橋 Y 也學習到工作站 A 隸屬於埠口 1 2。如果工作站 B 欲傳送資料給工作站 A,當訊框進入橋接器 X 的第二埠口時,它將不予轉送(隸屬於埠口 2)。同樣的,這個訊框進入橋接器 Y,也不予轉送,因此該訊框就無法到達工作站 A

10-15 橋接網路之迴路問題

10-4-2 橋接 網路的擴張樹

          我們希望有迴路的橋接網路(或交換器網路),以提高網路的可靠度,但又不希望迴路造成橋接器學習上的困擾,這就必須利用『擴張樹』(Spanning Tree演算法來解決此問題。擴張樹演算法是在有迴路網路之中,隔離了某些路徑,使其成為沒有迴路的樹狀網路。但這些被隔離之路徑成為預備路徑,如果網路上某些路徑發生故障時,擴張樹演算法也許會再利用這些被隔離之路徑,重新建構新的樹狀網路。例如,圖 10-16 (a) 為有迴路的橋接網路,經過擴張樹演算法處理後,使橋接器 3 的第 2 埠口和橋接器 5 的第 1 埠口暫時被隔離開(成為預備路徑),使網路成為沒有迴路的樹狀網路(擴張樹),其結果如圖 10-16 (b) 所示。

10-16 (a) 橋接網路之擴張樹範例

10-16 (b) 橋接網路之擴張樹的演算結果

        下面讓我們來看看橋接器之擴張樹演算法的運作原理。IEEE 802.1D 標準中,制定一個『分散式擴張樹演算法』(Distributed Spanning Tree Algorithm,希望製造商能夠依此標準來製造橋接器。該標準採用分散式演算法,表示『擴張樹』是由網路上所有橋接器共同建構而成,並非有某一個集中控制器處理。首先,我們來描述擴張樹的特性如下:(請參考圖 10-16

(1) 根點橋接器(Root Bridge):表示在擴張樹中的根點位置的橋接器。一般都取所有橋接器之中,橋接器識別碼最小者當之。如圖 10-16 (b) 中,橋接器1 的識別碼最小(ID = 10)成為根點橋接器。

(2) 傳輸費用(Transmission Cost, TC):橋接器上每一個埠都有一個傳輸費用,一般都以傳輸速率來評估,傳輸速率愈高,則費用愈低。有些情況會將其他因素也加入評估,例如延遲時間、承租線路費用、以及線路品質等等。

(3) 路徑費用(Path Cost):路徑費用是由橋接器的埠口到達根點橋接器,所經過路徑之傳輸費用的總和。在有迴路的網路之下,每一個橋接器也許會有多條路徑到達根點橋接器,因此必須紀錄每一埠口的路徑費用,以作為選擇最短路徑之依據。如橋接器 5 的第一埠口的路徑費用為 25= 5 + 10 + 10)和 15= 5 + 5 + 5);而第二埠口為 5

(4) 根埠口(Root Port):除了根點橋接器以外,每一個橋接器都有一個根埠口。在有迴路的網路之下,橋接器也許可經由多個埠口到達根點橋接器,我們選擇其中最短路徑的埠口作為根埠口。亦即,在擴張樹之下,每一橋接器只有一個根埠口。例如橋接器 5 的根埠口為第二埠口。

(5) 根路徑費用(Root Path Cost, RPC):表示每一橋接器由它的根埠口到達根點橋接器之費用。此費用必須告知相鄰的橋接器,經由本橋接器到達根點橋接器的費用。每部橋接器由所收到的其它橋接器之路徑費用,才可評估出經由哪一個路徑,費用會最低。

(6) 代理埠口(Designated Port):每一網路也可能經由許多橋接器的埠口到達根點橋接器,我們亦選擇其中最短路徑者,作為該網路的『代理埠口』。亦即,在擴張樹之下,每一網路只有一個代理埠口。如網路 5 的代理埠口為橋接器 4 的第二個埠口。

(7) 代理橋接器(Designated Bridge):擁有代理埠口之橋接器為代理橋接器。如網路 5 的代理橋接器為橋接器 4

由以上針對擴張樹演算法的描述,我們大略可以了解,擴張樹必須經由所有橋接器,互相交換訊息才可建構而成,因此,IEEE 802.1D 制定『橋接器通訊協定』(Bridge Protocol標準,讓橋接器之間依此協定互相交換訊息,在協定中規範所交換的『橋接器協定資料單元』(Bridge Protocol Data UnitBPDU)必須包含下訊息:(只列出部分訊息)

a. 根點橋接器識別碼:表示本橋接器已確定哪一部橋接器為根點橋接器。

b. 根點路徑費用(RPC):經由本橋接器到達根點橋接器之費用。

c. 橋接器識別碼:本橋接器之唯一識別碼。

d. 埠口識別碼:本訊框(BPDU)是由橋接器的哪一埠口送出。

擴張樹演算法最主要的原理是:『找出所有橋接器或區域網路到達根點橋接器的最短路徑』。每一橋接器到根點橋接器之埠口,稱之為『根埠口』;而每一區域網路到達根點橋接器之埠口,稱之為『代理埠口』(兩者都是唯一埠口)。如果某一埠口(任一橋接器上)都不屬於這兩類埠口(根埠口或代理埠口),則表示它已被隔離了。IEEE 802.1D 標準所制定的分散式擴張樹演算法,主要包含三個步驟:

a. 找出根端點橋接器(Root Bridge)。

b. 找出每一橋接器的根埠口(Root Port)(根點橋接器除外)。

c. 找出每一區域網路的代理埠口(Designated Port)。

各步驟以下分述之:

(A) 找出根點橋接器(Root Bridge

        找出根點橋接器是要找出所有橋接器之中識別碼最小者。每一橋接器啟動時,並不知道其它橋接器的識別碼,便將自己設定為根點橋接器,並廣播 BPDU 給其它橋接器。BPDU 訊框包含有:『根點橋接器識別碼』為本身識別碼,『根點路徑費用』(RPC 0『橋接器識別碼』為本身識別碼,『埠口識別碼』為送出訊息之埠口。當然,橋接器也會收到其它橋接器廣播 BPDU,便比較本身的識別碼是否大於訊框內之根點橋接器識別碼,如果大於它(表示自己優先權較低),則將自己的 RPC 和訊框內 RPC 相加,再填入訊框內,並往其它埠口傳送;如果識別碼小於訊框的(表示自己優先權較高),則將該訊框丟棄,自己再造一個 BPDU 廣播出去(原先如有傳送過,就不必再傳送)。

        如此,經過兩個傳遞延遲時間後,某一橋接器都沒有收到比自己識別碼更小的 BPDU,則表示自己是根點橋接器,並再發送一次 BPDU 給其它橋接器,而 RPC 設定為 0。其它橋接器在競爭當中,最後收到的 BPDU 中,其識別碼為最小,也找出根點橋接器識別碼之位置。

(B) 找出每一橋接器的根埠口(Root Port

        在尋找根點橋接器時,每一橋接器會收到由各埠口傳送進來的 BPDU(因為有迴路現象)。此時,橋接器比較哪一埠口的 RPC 最小,就設定為『根埠口』,並以該埠口的 RPC 作為本橋接器的 RPC。運作程序以圖 10-17 來說明,首先已確定橋接器 1 為根點橋接器,它將 RB-ID 設定成自己,並將 RPC 設定為 0,再廣播 BPDU 給其它橋接器。橋接器 2 由第一埠口收到最小 RPC BPDU,便設定埠口 1 『根埠口』,再將 BPDU 上的 RPC 加上根埠口的路徑費用後(0 + 20 = 20)往其它埠口傳送。依此類推,每一橋接器都會找到根埠口與其根路徑費用。

10-17 橋接器之根埠口與根路徑費用

(C) 找出每一區域網路的代理埠口(Designated Port

        在有迴路的環境之下,每一區域網路都可能會有許多路徑到達根點橋接器,這些路徑也許經由不同的橋接器或埠口。想在若干路經之中找出最短路徑(RPC 值最小),必須在橋接器之間,互相比較誰的 RPC 最小者取得代理權。但因為橋接器之間,皆不知道對方的 RPC 值,必須經過競爭原則來決定優勝者。其方法如下:首先任一橋接器沒收到其它的 RPC 值,便發佈自己為代理埠口,再將 BPDU 發送到網路上。其它橋接器如認為自己的 RPC 較小,可另發佈 BPDU 來表示自己才是代理者。但每一橋接器收到 RPC 的時間不一定相同,因此,在比較過程之中,會有隨時變動的可能。

        我們用圖 10-18 來說明,如何找出代理埠口的運作程序,依照圖中步驟編號說明如下:

(1) 橋接器 Z 由埠口 1 收到 RPC = 40 BPDU

(2) 計算本身之 RPC = 50,並設定埠口 1 為根埠口(RP =1),並自認埠口 2 LAN W 之代理埠口(D(W) = 2

(3) 橋接器 Z RPC = 50 廣播到 LAN W 上。

(4) 橋接器 X 收到 RPC = 50 之訊息,計算本身之 RPC = 60,並設定 RP =1。橋接器 Y 亦同,RPC = 55RP = 1

(5) 橋接器 X 由埠口 2 收到另一個 RPC = 20 BPDU

(6) 計算本身的 RPC = 35,比原先的 RPC 小,因此更改根埠口為 2RP = 2), 及設定 D(W) =1RPC 的值比橋接器 Z 的小)。

(7) 橋接器 X RPC = 35 之訊息發送到網路上。

(8) 橋接器 Y 收到訊息,計算 RPC = 40RP 還保留 1。橋接器 Z 也收到訊息,計算 RPC = 35,發現比埠口 1 進來的小,便更改 RP 2,且放棄 D(W)之代理權。

(9) 橋接器 Y 由埠口 2 收到 RPC = 25 BPDU

(10) 橋接器 Y 計算 RPC = 27,發現比原先的值小,便更改 RP 2,並設定埠口 1 為網路代理埠口。

(11) 橋接器 Y RPC = 27 之訊息發送到網路上。

(12) 橋接器 X 收到訊息,發現 RPC 的值比自己的小,便放棄 D(W),再計算 RPC = 37RP 還是保留 2。同樣的,橋接器 Z 計算 RPC = 37RP 保留埠口 2

經過上述運作程序後,其結果如圖 10-18 (b) 所示。我們發現橋接器 X 的第一埠口皆不屬於根埠口及代理埠口中的任何一種,因此,該埠口就被隔離了。但對於橋接器 Z 上的第一埠口是否被隔離,這必須視下一個網路的連結情況而定。雖然,網路上的迴路問題可以解決,但網路情況隨時改變,所以橋接器必須隨時發送『問候訊框』,查詢網路是否有發生異常障礙。至於網路中某一路徑發生故障時,如何重新建構擴張樹的問題,留給讀者自己去探討,作者不再贅言。

10-18 (a) 找出區域網路代理埠口之範例

10-18 (b) 擴張樹演算法運作後結果

 

翻轉工作室:粘添壽

 

電腦網路與連結技術:

 

 

翻轉電子書系列: