數據鏈路層 - 構建冗餘鏈路

冗餘鏈路出現的背景

由於公司對網絡的可靠性的要求,大部分公司都會增加額外的交換機,防止在某臺交換機出現故障時造成網絡的無法使用的情況,例如形成如下圖的拓撲的結構。

假設 W 和 X 交換中的一臺出現故障後,流量依然可以通過 Y 和 Z 到達 B。

雖然說這樣的結構可以很好的解決,網絡可靠性的問題。但由於這三臺交換機構成了一個環路,同時也帶了一些額外的問題:

廣播風暴:

這裏假設 W 不知道 B 的 MAC 地址,會採用泛洪的操作。而此時由於環狀的結構,廣播數據包會在四臺交換機之間來回的傳輸,佔用大量的帶寬。

多幀拷貝:

假設 W 不知道 B 的 MAC 地址,此時會泛洪發給 Y 和 X,假設 Y 和 X 知道 B 的 MAC 地址,此時會將數據包以單播的形式發給 Z,而 Z 會將兩個單播數據包傳給 B. 造成傳輸冗餘的數據幀。

MAC 表不穩定:

同樣假設 W 不知道 B 的 MAC,採用泛洪。同時 X,Y,Z 也不知道 B 的 MAC。此時 W 廣播後,X 和 Y 會在 MAC 表中記錄 A 對應 MAC 在 1 號口,然後繼續泛洪給 Z. Z 按照時間順序假設在 MAC 表中記錄的是來自 Y 的數據幀,此時記錄的是 2 號口。而由於 Z 也不知道 B 的 MAC,還會廣播。此時 Y 和 X 也會收到,此時 MAC 表按照時間順序,又會改爲另一個 2 號口,進而在 1 和 2 口之間來回抖動。

解決環路帶來的問題

冷備份

在連接線纜時,僅僅連接一條線路。當這條鏈路出現問題時,由管理員手動切換至另一根線路。

熱備份

線纜正常連接,在接口上進行配置,不允許該接口接受和發送任何設備。通過 STP (生成樹)實現。

STP

STP 協議會先進行計算選擇一個樹根,然後將樹根上的一個接口進行阻塞,進而無法構成環路。

STP 選舉規則 - 802.1D

在所有設備啓動時,所有交換機都認爲自己是跟,然後廣播發送 BPDU,然後在 BPDU 中的某些參數選擇一個真正的樹根。

  1. 在整個拓撲上,選擇一臺根交換機。
  2. 對每臺非根交換機上,選擇一個根端口(RP)。
  3. 在每條網線上(每個網絡),選一個指定端口(DP)。
  4. 餘下端口爲 BP,被阻塞的端口。

BPDU 比較參數,按照如下的順序進行比較:

  1. 根橋 ID(優先級,根的 MC 地址)
  2. COST(發送者橋 ID 到根橋的距離)
  3. 發送者橋 ID(優先級,橋 MAC 地址)
  4. 發送者端口 ID(接口號)

例子 1

以下拓撲爲例,模擬下選擇 BPDU 的過程,假設 MAC 地址大小爲:SW1 < SW2 < SW2.

首先判斷根橋 ID,如果沒有配置過,默認都是一樣的。接着會比較 MAC 地址,選出最小的 MAC 作爲根橋, 也就是 SW1.

在選出根後,根會每 2s 發送一次 BPDU,然後非根交換機轉發 BPDU。

比較 COST,SW1 作爲根會向 SW2 和 SW3 轉發 BPDU,而 SW2 和 SW3 同時也會轉發收到的 BPDU 給對方。這裏假設都是百兆鏈路。

這裏以 SW2 爲視角,會收到 SW1 發送的 BPDU 和 SW3 轉發 SW3 的 BPDU. 對於 SW2 的 1 號接口來說 COST 爲 0(發送者爲 SW1,跟橋 ID 爲 SW1),對於 2 號口來說,COST 爲 19(發送者 SW3,根橋 ID 爲 SW1).

100 M -> COST = 19

10 M -> COST = 100

進而 0 小於 19,1 號口爲成爲 RP.

同理,在 SW3 的視角,收到 SW1 和 SW2 轉發 SW1 的BPDU. 選擇 2 號口爲 RP.

下面接着選擇 DP:

先站在 SW1 和 SW2 這條網段的視角,在該網段可以接收道 SW1 直接發送的 BPDU (記爲 SW1 1 號口)和 經過 SW2 和 SW3 轉發過來的 BPDU(記爲 SW2 1號口). 這裏比較下兩者的 BPDU.

  1. 首先比較根橋 ID,都是 SW1,一樣,繼續比較。
  2. 比較 COST,
    • SW1 1 號口,根橋 ID 和 發送者 ID 都是 SW1,所以 COST 爲 0
    • SW2 1 號口,根橋 ID 爲 SW1,發送者爲 SW3, 經過 SW2. 所以 COST=19 +19=38
    • 0 < 19 , SW1 1 號口爲成爲 DP.

站在 SW1 和 SW3 這段網絡上,同理:

  1. 首先比較根橋 ID,都是 SW1,一樣,繼續比較。
  2. 比較 COST:
    • SW1 2 號口,根橋 ID 和 發送者 ID 都是 SW1,所以 COST 爲 0
    • SW3 2 號口,根橋 ID 爲 SW1,發送者爲 SW2, 經過 SW3. 所以 COST=19 +19=38
    • 0 < 19, SW3 2 號口爲 DP.

最後站在 SW2 和 SW3 這條網段上:

  1. 首先比較根橋 ID,都是 SW1,一樣,繼續比較。
  2. 比較 COST:
    • SW2 2 號口,發送者爲 SW2 2 號口,根橋 ID 爲 SW1 COST = 19
    • SW3 1 號口,發送者爲 SW3 1 號口,根橋 ID 爲 SW1 COST = 19
    • 相等繼續比較。
  3. 比較發送者橋 ID 大小:
    • SW2 的 MAC 小於 SW3 的 MAC
    • 所以選 SW2 的 2 號口爲 DP.

最終,餘下接口 SW3 的 1 號口爲阻塞接口。

總結一下概念:

RP:到根交換機最近的非根交換機接口

DP:在交換機中的連線上,到達根交換機最近的接口

例子2

首先假設 SW1 MAC 小於 SW2,所以跟爲 SW1.

選擇 RP:

以 SW2 的視角,比較過程如下:

  1. 根橋 ID 都是 SW1,一樣,繼續比較.
  2. 比較 COST,對於 3 和 4 兩個口來說,發送者和根橋ID都一樣,相等。
  3. 比較發送者 ID,都是 SW2 本身 一樣。
  4. 比較發送者接口 ID,1 < 2. 所以 3 爲 RP。

選擇 DP:

以 1,3 連線的視角:

  1. 根橋 ID 一致。
  2. 比較 COST, 選擇 1 號口。COST=0, 另一個爲 19. s所以 1 爲 RP.

以 2,4 連線的視角:

  1. 根橋 ID 一致。
  2. 比較 COST, 同理選擇 2 號口,爲 RP.

最後 4 號口爲 BLOCK。

這裏假設 1,3 口爲 10M,2,4 爲百兆鏈路。可以發現如果按照上述的規則,4 號口還是一樣會被阻塞。但這不符合常理,因爲 2,4 口的帶寬明顯更大。

所以這裏的 COST 比較還需要調整,對於選擇 DP 不需要改變。

但對於選擇 RP 的過程,COST 的值需要加上入接口的 COST

也就是說,在 1,3 連線時。COST 的比較值爲:1 號口的 COST 爲 0 + 100. 2 號口的 COST 爲 0 +19. 所以選擇爲 4 號口。

STP 類型

上面選舉的過程是比較基礎的 STP 版本,802.1D. 對應在處理 VLAN 有一定的缺點,就是由於在拓撲中只有一顆樹,在設置了 VLAN 的交換機上通信,有時 VLAN 通信的過程並不是選擇的最優路徑。

後來,又開發了出許多新的版本:

  • PVST+: 針對 VLAN,每個 VLAN 一個 STP.
  • 802.1s(MSTP):多實例生成樹,優化生成樹的數量。
  • 802.1w(RSTP):STP 計算速度更快,收斂速度很快
  • Rapid PVST+:優化了 PVST+ 的生成樹速度

STP 狀態

在交換機接口打開時,進入到 Listening 狀態,進行 STP 的計算。在選舉時,無法轉發數據。

當 Listening 狀態結束後,進入 Learning 狀態,學習 MAC 地址,建立 MAC 地址表。

之後進入 Forwarding 狀態,正常轉發數據。

如果是被 STP 阻塞的端口進入 Blocking 狀態,不能轉發數據,但可以接受 BPDU. 當在 20s 內沒有收到 BPDU 時,會進入 Forwarding 狀態,開始轉發數據。

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