1. 故事
按「下一步」一步一步看。每一步都有一位角色出場,解釋自己正在做什麼。
序幕:溫習一下
第 1 步/共 9 步
兩部 Switch,一條網線
樓下的 S2 和書房的 S3 之間,有一條 1 Gbps 網線。所有經過兩部 Switch(交換器)的資料,都要擠在這一條線上。
動畫文字版(全部步驟)
- 序幕:溫習一下
- 兩部 Switch,一條網線 八爪:樓下的 S2 和書房的 S3 之間,有一條 1 Gbps 網線。所有經過兩部 Switch(交換器)的資料,都要擠在這一條線上。
- 第一幕:塞車了
- 全家一起用 小比:阿麥在備份相片、桌面電腦在看高清影片、書房電腦在傳檔案給阿麥……所有小比都擠在同一條網線上,排長龍了!
- 一條 1 Gbps 網線:所有對話一起分享 1 Gbps
- 這條線成為樽頸
- 多拉一條線? 八爪:那就多拉一條網線吧!可是,兩部 Switch 之間有兩條線,就是一個環路。STP(生成樹協定)馬上把第二條線 Blocked(阻斷)了。
- 網線多了一條,速度卻沒有增加
- 第二條線只是「坐冷板凳」的後備
- 第二幕:捆成一條
- 兩條線,一條邏輯連線 八爪:我們改用 Link Aggregation(鏈路聚合):把兩條網線捆綁成一條邏輯連線。對 STP 來說,這只是一條連線,不再是環路,所以兩條線都可以工作!
- Po1 = Port-channel 1,即第一組 Link Aggregation
- 其他名稱:LAG、EtherChannel、Bonding、Teaming
- LACP:確認大家是同一組 八爪:S2 和 S3 用 LACP(鏈路聚合控制協定) 互相打招呼,交換 LACPDU 訊息:「這兩條線都接著你,我們把它們放在同一組,好嗎?」「好!」
- LACP 會一直監察:哪條線收不到 LACPDU,就把它移出組別
- 組內的網線,速度和設定都要一樣
- 不同對話,分走不同的線 小比:現在,八爪用一條叫 Hash(雜湊)的公式計算每個對話走哪條線:阿麥的備份走上面,桌面電腦的影片走下面。兩條線一起工作,合共 2 Gbps!
- Hash 按 MAC Address、IP Address 或 Port 號碼計算
- 同一個對話永遠走同一條線,保證 Frame 按次序到達
- 一個大檔案,只走一條線 小比:留意:如果只有阿麥一個人在傳一個大檔案,這個對話只會走其中一條線,最高仍然是 1 Gbps。Link Aggregation 幫的是「很多人同時用」。
- 第三幕:斷了一條也不怕
- 上面那條線斷了! 八爪:糟糕,上面那條網線被扯斷了!Port 失去訊號,八爪立即發現,把它移出組別。所有對話自動改走下面那條線,不用等 STP 重新計算。
- 頻寬由 2 Gbps 變成 1 Gbps,但完全沒有斷線
- 通常在一秒內就完成切換
- 總結:更快,也更可靠 八爪: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。
- 50 位同事同時上網,兩部 Switch 之間的總頻寬最高是多少?(答案:接近 4 Gbps。)
- 只有一位同事在傳一個超大的影片檔,他最快可以用多少?(答案:1 Gbps。)
- 其中 1 條網線壞了,總頻寬變成多少?(答案:3 Gbps,而且沒有斷線。)
- 如果改為不用 Link Aggregation,直接拉 4 條網線,STP 會怎樣做?(提示:會剩下幾條可以工作?)
小互動
Link Aggregation 還是 STP?
以下每一句,說的是 Link Aggregation 還是 STP?
-
1多條網線同時傳送,總頻寬相加
-
2把會造成環路的 Port 暫時 Blocked
-
3用 LACPDU 確認成員網線
-
4用 BPDU 選出 Root Bridge
-
5一個大檔案只會走其中一條成員網線
-
6傳統版本約 30 至 50 秒才讓後備線頂上
全部分對了!STP 讓後備線平時休息;Link Aggregation 讓多條線一起工作,並在其中一條斷掉時自動切換。
6. 比喻的極限
- 兩條線不是變成一條「粗線」。 每個對話仍然只走其中一條成員網線,一個大檔案的最高速度不會因此加倍。
- 分配不一定平均。 Hash 只按公式計算,不會看哪條線比較空閒,有時一條線很忙、另一條很空。
- Link Aggregation 不會取代 STP。 它只是把幾條線變成一條邏輯連線;如果網絡中還有其他環路,仍然需要 STP 處理。
- 一般只能接同一對 Switch。 動畫中兩條線都接著 S2 和 S3。有些高級 Switch 可以讓兩部 Switch 合作,扮成「一部」接收同一組 Link Aggregation,讓整部 Switch 壞了也不怕,但這需要特別的功能。
- 故障切換不是「零時間」。 通常很快,但切換期間正在傳送的少量 Frame 可能會遺失,要靠上層(例如 TCP(傳輸控制協定))重送。
7. 小測驗
8. 重點筆記
- 兩部 Switch 之間直接多拉一條線會形成環路,STP 會把它 Blocked,速度不會增加。
- Link Aggregation(鏈路聚合)把多條網線捆綁成一條邏輯連線,STP 不會 Block,所有成員一起工作。
- LACP(鏈路聚合控制協定)用 LACPDU 確認哪些網線屬於同一組,並持續監察。
- Switch 用 Hash(雜湊)決定每個對話走哪條線:總頻寬相加,但一個對話最高只有一條線的速度。
- 其中一條網線斷了,其餘的會繼續工作,頻寬減少,但不會斷線。
延伸閱讀
第一部分「同一個 LAN 裡」到此完結!我們跟著八爪學會了 Switch、ARP、VLAN、Trunk、STP 和 Link Aggregation。可是,當小比要去的地方不在家中的 LAN 裡,八爪就送不到了。下一個故事,輪到路路出場:Router(路由器)與 Default Gateway(預設閘道)。