轉自 http://storage.chinabyte.com/64/12541564.shtml http://lolo77.blog.51cto.com/941571/295075
1.LACP的概念
在過去的10年里,以太網線速(Line Rate)的發展從10Mb/s -> 100Mb/s -> 1Gb/s -> 10Gb/s(40GE和100GE也已出現),而然有的時候single 10GE link依然無法滿足VLAN Trunk或iSCSI/FCoE 流量對帶寬和冗余性的需求。於是鏈路聚合(Link Aggregation,LA)技術出現了,這是一種將多個網絡鏈路合並成單條邏輯鏈路,從而提供更大帶寬和冗余的網絡技術。
注:本文多次用到Link Aggregation、Port Aggregation、Port Channel、Link Channel等術語,如未特別指出,可認為是同一個意思。
Link Aggregation
不同廠商交換機的端口聚合(Port Aggregation,PA) 采用不同術語,Cisco的EtherChannel,Brocade的Brocade LAG,還有基於標准的IEEE 802.3ad LACP(Link Aggregation Control Protocol,該標准在2008年被轉入IEEE 802.1ax),LACP可以動態配置端口聚合,且不依賴任何廠商,因此大部分以太網交換機都支持該協議。所有這些實現的目標都是一致的,即將兩個或多個端口綁定在一起作為一個高帶寬的邏輯端口來提升鏈路速度、冗余、彈性和負載均衡。技術上來講,我們可以在交換機之間使用多個端口創建並行trunk鏈路,但生成樹協議(STP)將其視為環路,從而會關閉所有可能造成環路的鏈接。端口聚合生成single logical link,不會造成環路,可作為Access Port(連接主機)或Trunk Port(承載Multi-VLAN traffic)使用。
在使用LA技術之前,有必要了解如下技術屬性:
兼容性/正常運行:聚合鏈路每一端的交換機或主機必須理解或使用公共的端口聚合技術
負載均衡:通過哈希算法在single link中區分不同的traffic pattern來實現
鏈路冗余:如果邏輯鏈路中的一條物理鏈路故障,流量轉走臨近的鏈路,故障轉移時間一般小於幾個毫秒。一旦失敗鏈路恢復,流量會重新分布。
在選擇端口做端口聚合或端口隧道(port channel)時,每個端口需要互相兼容,可以在允許將端口加入端口聚合組(Port Channel Group)之前,檢查端口的運行屬性,兼容性檢查通常包括以下接口運行屬性:
Port Mode
Access VLAN
Trunk native VLAN
允許的VLAN列表
Speed
Link Aggregation Control Protocol (LACP)
LACP 是通過向所有啟用LACP協議的鏈路發送LACPDU Frame來工作的,如果發現鏈路另一端的設備也啟用了LACP,LACP將獨自在同一條鏈路上發送Frame,使得兩者能夠發現它們之間的多條鏈路,並將它們合並成單條邏輯鏈路。
LACP可以配置為兩種模式中的一種:Active 或 Passive。在Active模式下,LACP主動在配置的鏈路上發送Frame;在Passive模式下,LACP的反應是“speak when spoken to”,從而可以作為控制意外環路的一種方法(只要其他設備在Active模式下)。
IEEE 802.3ad定義的LAC(Link Aggregation Group)是一個允許交換機自動協商端口綁定鏈路的協議,通過發送LACP Frame給Peer來實現。這些Frame在支持port channel的交換機端口之間進行交換,從而學習【鄰居身份】以及【port group capability】並與本地交換機對比,然后LACP為port channel的端點分配角色。
系統優先級最低的交換機根據端口優先級決定哪些端口可在某一時段作為端口聚合的Active port。例如,一組8 link的port channel,在任何時候LACP選擇4個優先級最高的端口作為Active port,通常數值越小的端口優先級越高。另外8條鏈路置於hot-standby狀態,如果一條Active Link down,就會激活其它的鏈路。端口優先級是可配置的,如果沒有配置,則使用不同廠商自己的默認值。如果端口使用了相同的值,廠商通常會實現一個“tie breaker”,比如lower port number作為Active port,即port 1/1 > port 1/5。
Port Channel中的每一個端口必須分配同樣且唯一的channel group number,LACP自動在【配置為使用LACP的端口上】配置一個等於channel group number的管理鍵值(Administrative key value),該管理鍵值定義了端口與其他端口聚合的能力(ability)。一個端口與其他端口做聚合的能力取決於帶寬、雙工模式、點對點或共享介質的狀態。通道協商必須設置為ON(無條件通道;沒有LACP協商),Passive(被動監聽並等待詢問)或Active(主動詢問)。


2.將eth1 和 ethe2 通過LACP模式進行聚合
2.1 Linux網卡的綁定模式
- bond0:round-robin, 輪詢。各接口輪流使用。需要交換機支持。交換機要配置成聚合口
- bond1:active-backup, 主備。即只有一個接口在使用,當接口出現問題的時候再切換到別的接口
- bond2:load balancing(xor), 根據數據的目的mac地址計算使用的端口。
- bond3:broadcast, 所有數據在每個接口都復制一份
- bond4:lacp, IEEE 802.3ad動態鏈路聚合。創建共享相同的速率和雙工模式的聚合組。能根據802.3ad規范利用所有的slave來建立聚合鏈路。Salve的出站選擇取決於傳輸的hash策略,默認策略是簡單的XOR策略,而hash策略則可以通過xmit_hash_policy選項加以改變。
- bond5:對外出流量負載均衡
- bond6:通過修改ARP包實現負載均衡, 即對到來的arp請求依據一定策略使用不通過的arp進行回復
2.2 示例:將eth1和eth2兩張網卡使用mode 4 也就是LACP模式進行綁定
auto bond0
iface bond0 inet manual
bond-slaves eth2 eth1
bond-miimon 100
bond-mode 4
bond-lacp-rate 1
bond-xmit-hash-policy 2
mtu 9000
auto eth2
iface eth2 inet manual
bond-master bond0
auto eth1
iface eth1 inet manual
bond-master bond0
auto bond0.1600
iface bond0.1600 inet static
address 10.0.1.108
netmask 255.255.255.0
up ip route add 10.0.0.0/16 via 10.0.1.1 dev bond0.1600 || true