# Linux Bonding/Trunk 端口聚合介紹


# 基本介紹

端口聚合為 ISO OSI Layer 2 技術

Linux Kernel Version 2 後,提供 Bonding 模組讓多張網卡結合成一張結合的網卡功能

端口聚合,是頻寬擴展和鏈路備份的一個重要途徑。Trunk 把多個物理端口捆綁在一起當作一個邏輯端口使用


# Linux Bonding 模式

Linux Bonding 可支援 7 種模式,當然每個模式支援的功能不盡相同


# 基本 bonding 能力
  • 負載平衡能力
    • 將網路流量配分到多個子網卡中,避免網路過量負載影響效能
  • 容錯能力
    • 當有多張網卡,其中有網卡無法正常工作,也不影響整體網路的運作

# 各種 Linux Bonding 可用模式
模式 名稱 特性
0 balance-rr 1. 負載平衡模式,round robin 方式由第一個子網卡到最後一個輪巡傳送網路封包 2. 容錯功能
1 active-backup 1. 同一時間只會有一張網卡工作 2. 啟動中的子網卡失效會自動啟動下一順位的網卡 3. 不需要交換器支援
2 balance-xor 支援負載平衡與容錯,對每張子網卡使用相同的傳送流量
3 broadcast 1. 所有子網卡都會應廣播收到網路封包 2. 容錯能力
4 802.3ad 1. 802.3ad 是正式 Switch 的連線聚合技術,需要交換器支援 802.3ad,驅動需支援 ethtool
5 balance-tlb 1. 只有輸出流量使用繫結且有負載平衡 2. 輸入流量由目前啟動的子網卡負責 3. 容錯能力 4. 無須交換器與驅動支援及設定
6 balance-alb 1. 輸出 / 入流量都有自動負載平衡功能 2. 容錯能力 3. 子網卡驅動需支援變更網卡卡號功能與支援 ethtool 3. 無須交換器支援與設定

# 參考資料

  1. [何謂 Trunking ?](https://chaomengyang.wordpress.com/2007/10/28 / 何謂 - trunking/
  2. Linux 網路結合 (networking bonding) 技術與實務
  3. PVE 主机系统 Bond 网络配置示例