week 4 - zxc22273146/TCP-IP GitHub Wiki
IEEE 802.1D 交換機的擴張樹演算法(Spanning Tree Algorithm)
-
SA:source MAC address
-
DA:destination MAC address
-
Bridge:frame forwarding、filtering、address learning、resolving possible loops。
-
Why Bridged LANs(BLAN)?
reliability、performance、security、geography
-
bridge收到一個封包後會先看database中有無這個位址,沒有的話就廣播至所有port(除了送來的port),有的話就看目標port和接收的port是否是同一個,是的話就過濾(表示SA與DA在同一個網段中),不是的話就繼續往前送。
-
bridge收到封包後會做兩件事,一是轉送,二是學習。
-
為了提供網路穩定連結,橋接網路(BLAN)拓樸可以存在一些迴圈。
在傳輸訊框以前,橋接網路的擴張樹必須先建立好。
根據擴張樹的結構,任兩個橋接器之間只會有一個傳輸路徑。
-
ID擁有最小識別碼的橋接器將會成為擴張樹中的根橋接器(root bridge)
ID長度為8個Bytes,前2個可更改,後6個為MAC address。
-
建立一個橋接網路上擴張樹的順序為
尋找橋接網路中的根橋接器、尋找橋接器根埠(root port)、尋找區域網路的代理埠(designated port)。
-
在擴張樹完全確定建立前,一個埠的狀態可能會在blocking、listening、learning、forwarding的四個狀態間做轉換。
一個在forwarding狀態的埠將會是根埠或指定埠
一個處於learning狀態的埠可以學習一個接收訊框的來源MAC位址,但無法轉送訊框。
一個處於forwarding狀態的埠可以過濾或轉送收到的訊框
-
bridge protocol data unit(BPDU):橋接器交換資料所用的封包格式,其中有Root Bridge ID、RPC(root path cost)、Bridge ID、Root Port ID。
-
假設一個橋接器的某一個port收到一個BPDU且其根橋接器辨識碼比自己還小,則此port會被選為R port。
承上,假設此port收到的BPDU其根橋接器辨識碼與自己相同,但此port的傳輸費用+BPDU的根路徑費用<橋接器本身的根路徑費用,則此port會被選為R port。
承上,假設此port收到的BPDU其根橋接器辨識碼比自己還大,則此BPDU會被轉送到剛剛接收的port並丟棄。
-
維護擴張樹:
root會週期性地送出configuration BPDU沿著spanning tree到各個地方。
任何bridge只要發現他的port有變化,表示spanning tree將要改變,便會送出TCN(topology change notification)給root,且此傳送為可靠的。
R port跟blocking port會定期收到hello BPDUs,D port則不會。
假設某一個port處於blocking狀態,且hello BPDU逾時,則此port會被選為新的D port,BPDU會由R port轉送到此port。
假設某一個R port的hello BPDU逾時,則此橋接器將會視自己為新的根橋接器並且開始進行建立擴張樹,其所有port將會成為D port,且一個根橋接器識別碼為自己、根路徑費用為0的BPDU將會被轉送到其所有port。