網絡小故事 8 · 進階

兩條線一齊拉Link Aggregation(鏈路聚合)

STP 把後備線停用了,有沒有方法兩條線一齊用?

主角:八爪、小比閱讀時間約 10 分鐘

建議先讀:小故事 7「Spanning Tree」

1. 故事

按「下一步」一步一步看。每一步都有一位角色出場,解釋自己正在做什麼。

序幕:溫習一下

第 1 步/共 9 步

兩部 Switch,一條網線

樓下的 S2 和書房的 S3 之間,有一條 1 Gbps 網線。所有經過兩部 Switch(交換器)的資料,都要擠在這一條線上。

動畫文字版(全部步驟)
  1. 序幕:溫習一下
  2. 兩部 Switch,一條網線 八爪:樓下的 S2 和書房的 S3 之間,有一條 1 Gbps 網線。所有經過兩部 Switch(交換器)的資料,都要擠在這一條線上。
  3. 第一幕:塞車了
  4. 全家一起用 小比:阿麥在備份相片、桌面電腦在看高清影片、書房電腦在傳檔案給阿麥……所有小比都擠在同一條網線上,排長龍了!
    • 一條 1 Gbps 網線:所有對話一起分享 1 Gbps
    • 這條線成為樽頸
  5. 多拉一條線? 八爪:那就多拉一條網線吧!可是,兩部 Switch 之間有兩條線,就是一個環路。STP(生成樹協定)馬上把第二條線 Blocked(阻斷)了。
    • 網線多了一條,速度卻沒有增加
    • 第二條線只是「坐冷板凳」的後備
  6. 第二幕:捆成一條
  7. 兩條線,一條邏輯連線 八爪:我們改用 Link Aggregation(鏈路聚合):把兩條網線捆綁成一條邏輯連線。對 STP 來說,這只是一條連線,不再是環路,所以兩條線都可以工作!
    • Po1 = Port-channel 1,即第一組 Link Aggregation
    • 其他名稱:LAG、EtherChannel、Bonding、Teaming
  8. LACP:確認大家是同一組 八爪:S2 和 S3 用 LACP(鏈路聚合控制協定) 互相打招呼,交換 LACPDU 訊息:「這兩條線都接著你,我們把它們放在同一組,好嗎?」「好!」
    • LACP 會一直監察:哪條線收不到 LACPDU,就把它移出組別
    • 組內的網線,速度和設定都要一樣
  9. 不同對話,分走不同的線 小比:現在,八爪用一條叫 Hash(雜湊)的公式計算每個對話走哪條線:阿麥的備份走上面,桌面電腦的影片走下面。兩條線一起工作,合共 2 Gbps!
    • Hash 按 MAC Address、IP Address 或 Port 號碼計算
    • 同一個對話永遠走同一條線,保證 Frame 按次序到達
  10. 一個大檔案,只走一條線 小比:留意:如果只有阿麥一個人在傳一個大檔案,這個對話只會走其中一條線,最高仍然是 1 Gbps。Link Aggregation 幫的是「很多人同時用」。
  11. 第三幕:斷了一條也不怕
  12. 上面那條線斷了! 八爪:糟糕,上面那條網線被扯斷了!Port 失去訊號,八爪立即發現,把它移出組別。所有對話自動改走下面那條線,不用等 STP 重新計算。
    • 頻寬由 2 Gbps 變成 1 Gbps,但完全沒有斷線
    • 通常在一秒內就完成切換
  13. 總結:更快,也更可靠 八爪:Link Aggregation 一次解決兩個問題:平時兩條線一起用,更快;一條斷了,另一條繼續,更可靠。第一部分「同一個 LAN 裡」到此完結,下一站,輪到路路帶我們走出家門!
    • 把多條網線捆成一條邏輯連線,STP 不會 Block
    • 總頻寬相加;一個對話只走一條線
    • LACP 協商及監察成員網線

2. 問題在哪裡

樓下的 S2 和書房的 S3 之間,只有一條 1 Gbps 網線。平日沒有問題,但當全家一起用:

  • 阿麥在把相片備份到備份伺服器;
  • 桌面電腦在看高清影片;
  • 書房電腦在傳檔案給阿麥……

所有經過兩部 Switch(交換器)的資料,都要擠在這一條線上,一起分享 1 Gbps 的 Bandwidth(頻寬)。這條線成為了整個網絡的「樽頸」。

多拉一條網線,看似可以解決。可是兩部 Switch 之間有兩條線,就是一個環路。上一個故事的 STP(生成樹協定)會馬上把第二條線 Blocked(阻斷)。網線多了一條,速度卻完全沒有增加。

3. 網絡怎樣解決

想像一條只有一條行車線的橋,車輛經常塞車。與其另建一條「後備橋」平時封閉,不如把橋擴闊成兩條行車線,並在橋頭安排指示牌,把車輛分配到不同的行車線。

Link Aggregation(鏈路聚合)就是把兩條或以上的網線,捆綁成一條邏輯連線。在 STP 眼中,這只是一條連線,不再是環路,所以所有網線都可以一起工作。兩部 Switch 用 LACP(鏈路聚合控制協定)確認哪些線屬於同一組;其中一條斷了,其餘的繼續工作。

4. 看深一點

很多個名字,同一件事

Link Aggregation 由 IEEE(電機電子工程師學會)標準化,最初是 802.3ad,今天是 802.1AX。不同的設備和文件,會用不同的名字:

名稱 常見於
Link Aggregation、LAG(Link Aggregation Group) 標準和一般說法
Port-channel、EtherChannel 企業級 Switch 的設定
Bonding、Teaming 伺服器和電腦的作業系統

動畫中的「Po1」就是 Port-channel 1,即 Switch 上的第一組 Link Aggregation。

LACP(鏈路聚合控制協定):先確認,再捆綁

兩部 Switch 會互相發出 LACPDU 訊息,內容大約是:「我是誰、這條線屬於我的哪一組。」雙方確認每條線都接著同一部對手、設定也一致,才把它們放進同一組。

這樣可以避免接錯線。例如有人把其中一條線誤插到另一部 Switch,LACP 就會發現「對手不一樣」,不把它加入組別。

組內的網線要符合幾個條件:

  • 速度一樣(例如全部 1 Gbps);
  • VLAN(虛擬區域網絡)、Trunk(中繼)等設定一樣;
  • 兩端都接著同一對 Switch(一般情況下)。

LACP 之外,也可以用「靜態」方式直接把幾條線捆在一起,不交換 LACPDU。不過接錯線時,Switch 就不會察覺,所以一般建議用 LACP。

Hash(雜湊):誰走哪條線?

Switch 不會把一個對話的 Frame(訊框)輪流分到兩條線,因為兩條線的排隊情況不同,Frame 可能不按次序到達。

所以 Switch 用一條 Hash(雜湊)公式,把每個 Frame 的某些資料「計一計」,得出一個號碼,決定它走哪條成員網線:

示意公式:看寄件人 MAC Address(硬體位址)的最後一個數字,單數走上面,雙數走下面
阿麥 …:01 → 備份伺服器          01 是單數 → 走上面
備份伺服器 …:08 → 桌面電腦      08 是雙數 → 走下面
桌面電腦 …:04 → 書房電腦        04 是雙數 → 走下面
書房電腦 …:07 → 阿麥            07 是單數 → 走上面

這正好是動畫中四個對話所走的線。真實的公式複雜得多,通常同時計算寄件人和收件人,這裡只是示意。

Hash 可以按 MAC Address、IP Address(網絡位址)或 Port(連接埠)號碼計算。同一個對話的資料永遠得出同一個結果,所以永遠走同一條線,Frame 就會按次序到達。

速度怎樣計算?

情況 兩條 1 Gbps 網線組成 Link Aggregation
很多個對話同時進行 總共最高接近 2 Gbps
只有一個對話(例如傳一個大檔案) 最高 1 Gbps
其中一條網線斷了 最高 1 Gbps,但不會斷線

如果對話太少,或者 Hash 剛好把幾個大對話都分到同一條線,兩條線的使用量就會不平均。

斷了一條,怎樣處理?

  • 網線被扯斷,Port 失去訊號,Switch 通常在一秒內就發現,把它移出組別。
  • 如果 Port 的燈仍然亮著,但線路其實有問題,LACP 就靠 LACPDU 發現:一段時間收不到對方的 LACPDU,就把那條線移出組別。

所有對話會自動改走餘下的網線。整組連線仍然存在,STP 看到的仍然是同一條連線,所以不用重新計算。

5. 動手試試

任務:計一計頻寬

一間小公司的兩部 Switch 之間,用 4 條 1 Gbps 網線組成 Link Aggregation。

  1. 50 位同事同時上網,兩部 Switch 之間的總頻寬最高是多少?(答案:接近 4 Gbps。)
  2. 只有一位同事在傳一個超大的影片檔,他最快可以用多少?(答案:1 Gbps。)
  3. 其中 1 條網線壞了,總頻寬變成多少?(答案:3 Gbps,而且沒有斷線。)
  4. 如果改為不用 Link Aggregation,直接拉 4 條網線,STP 會怎樣做?(提示:會剩下幾條可以工作?)

小互動

Link Aggregation 還是 STP?

以下每一句,說的是 Link Aggregation 還是 STP?

  1. 1多條網線同時傳送,總頻寬相加

  2. 2把會造成環路的 Port 暫時 Blocked

  3. 3用 LACPDU 確認成員網線

  4. 4用 BPDU 選出 Root Bridge

  5. 5一個大檔案只會走其中一條成員網線

  6. 6傳統版本約 30 至 50 秒才讓後備線頂上

6. 比喻的極限

  • 兩條線不是變成一條「粗線」。 每個對話仍然只走其中一條成員網線,一個大檔案的最高速度不會因此加倍。
  • 分配不一定平均。 Hash 只按公式計算,不會看哪條線比較空閒,有時一條線很忙、另一條很空。
  • Link Aggregation 不會取代 STP。 它只是把幾條線變成一條邏輯連線;如果網絡中還有其他環路,仍然需要 STP 處理。
  • 一般只能接同一對 Switch。 動畫中兩條線都接著 S2 和 S3。有些高級 Switch 可以讓兩部 Switch 合作,扮成「一部」接收同一組 Link Aggregation,讓整部 Switch 壞了也不怕,但這需要特別的功能。
  • 故障切換不是「零時間」。 通常很快,但切換期間正在傳送的少量 Frame 可能會遺失,要靠上層(例如 TCP(傳輸控制協定))重送。

7. 小測驗

第 1 題,共 3 題為什麼在兩部 Switch 之間直接多拉一條網線,速度不會增加?
第 2 題,共 3 題兩條 1 Gbps 網線組成 Link Aggregation,傳送一個大檔案最高速度是多少?
第 3 題,共 3 題LACP 的作用是什麼?

8. 重點筆記

  • 兩部 Switch 之間直接多拉一條線會形成環路,STP 會把它 Blocked,速度不會增加。
  • Link Aggregation(鏈路聚合)把多條網線捆綁成一條邏輯連線,STP 不會 Block,所有成員一起工作。
  • LACP(鏈路聚合控制協定)用 LACPDU 確認哪些網線屬於同一組,並持續監察。
  • Switch 用 Hash(雜湊)決定每個對話走哪條線:總頻寬相加,但一個對話最高只有一條線的速度。
  • 其中一條網線斷了,其餘的會繼續工作,頻寬減少,但不會斷線。

延伸閱讀

第一部分「同一個 LAN 裡」到此完結!我們跟著八爪學會了 Switch、ARP、VLAN、Trunk、STP 和 Link Aggregation。可是,當小比要去的地方不在家中的 LAN 裡,八爪就送不到了。下一個故事,輪到路路出場:Router(路由器)與 Default Gateway(預設閘道)。