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。