mode |
名稱 |
負載平衡 |
冗長性 |
不同的
speed/duplex
設定相容 |
primary
指定 |
Switch
機能 |
監視
模式 |
slave MAC
位址注2 |
送信 |
受信 |
MII |
ARP |
0 |
balance-rr |
○ |
SW依存 |
○ |
×注3 |
× |
Ether Channel |
○ |
○ |
A |
所有鏈路處於負載均衡狀態,輪詢方式往每條鏈路發送報文,基於per packet方式發送。服務上ping 一個相同地址:1.1.1.1 雙網卡的兩個網卡都有流量發出。負載到兩條鏈路上,說明是基於per packet方式 ,進行輪詢發送。(2)這模式的特點增加了帶寬,同時支持容錯能力,當有鏈路出問題,會把流量切換到正常的鏈路上。 |
1 |
active-backup |
× |
× |
○ |
○ |
○ |
不要 |
○ |
○ |
A,C |
一個端口處於主狀態 ,一個處於從狀態,所有流量都在主鏈路上處理,從不會有任何流量。當主端口down掉時,從端口接手主狀態。 |
2 |
balance-xor |
△注1 |
SW依存 |
○ |
×注3 |
× |
Ether Channel |
○ |
○ |
A |
限定流量,以保證到達特定對端的流量總是從同一個接口上發出。既然目的地是通過MAC地址來決定的,因此該模式在「本地」網絡配置下可以工作得很好。如果所有流量是通過單個路由器(比如 「網關」型網絡配置,只有一個網關時,源和目標mac都固定了,那麼這個算法算出的線路就一直是同一條,那麼這種模式就沒有多少意義了。),那該模式就不是最好的選擇。和balance-rr一樣,交換機端口需要能配置為「port channel」。這模式是通過源和目標mac做hash因子來做xor算法來選路的。 |
3 |
broadcast |
○ |
SW依存 |
○ |
不明 |
× |
要(設定不明) |
○ |
○ |
A |
封包會複製往 bond 下的接口分別發送出去,當有對端交換機失效,感覺不到任何downtime,此模式過於浪費資源,但有最好的容錯機制。 |
4 |
802.3ad |
△注1 |
SW依存 |
○ |
△注4 |
× |
802.3ad |
○ |
× |
A |
802.3ad模式是IEEE標準,因此所有實現了802.3ad的對端都可以很好的互操作。802.3ad 協議包括聚合的自動配置,因此只需要很少的對交換機的手動配置(要指出的是,只有某些設備才能使用802.3ad)。802.3ad標準也要求幀按順序(一定程度上)傳遞,因此通常單個連接不會看到包的亂序。802.3ad也有些缺點:標準要求所有設備在聚合操作時,要在同樣的速率和雙工模式,而且,和除了balance-rr模式外的其它bonding負載均衡模式一樣,任何連接都不能使用多於一個接口的帶寬。
此外,linux bonding的802.3ad實現通過對端來分發流量(通過MAC地址的XOR值),因此在「網關」型配置下,所有外出(Outgoing)流量將使用同一個設備。進入(Incoming)的流量也可能在同一個設備上終止,這依賴於對端802.3ad實現裡的均衡策略。在「本地」型配置下,路兩將通過 bond裡的設備進行分發。
除了配置port channel之外還要在port channel聚合口下開啟LACP功能,成功協商後,兩端可以正常通信。否則不能使用。 |
5 |
balance-tlb |
○ |
SW依存 |
○ |
○ |
○ |
不要 |
○ |
× |
B |
balance-tlb模式通過對端均衡外出(outgoing)流量。既然它是根據MAC地址進行均衡,在「網關」型配置(如上文所述)下,該模式會通過單個設備來發送所有流量,然而,在「本地」型網絡配置下,該模式以相對智能的方式(不是balance-xor或802.3ad模式裡提及的XOR方式)來均衡多個本地網絡對端,因此那些數字不幸的MAC地址(比如XOR得到同樣值)不會聚集到同一個接口上。
不像802.3ad,該模式的接口可以有不同的速率,而且不需要特別的交換機配置。不利的一面在於,該模式下所有進入的(incoming)流量會到達同一個接口;該模式要求slave接口的網絡設備驅動有某種ethtool支持;而且ARP監控不可用。 |
6 |
balance-alb |
○ |
○ |
○ |
○ |
○ |
不要 |
○ |
× |
B |
該模式包含了balance-tlb模式,同時加上針對IPV4流量的接收負載均衡(receive load balance, rlb),而且不需要任何switch(交換機)的支持。接收負載均衡是通過ARP協商實現的。bonding驅動截獲本機發送的ARP應答,並把源硬件地址改寫為bond中某個slave的唯一硬件地址,從而使得不同的對端使用不同的硬件地址進行通信。所有端口都會收到對端的arp請求報文,回覆arp回時,bond驅動模塊會截獲所發的arp回覆報文,根據算法算到相應端口,這時會把arp回覆報文的源mac,send源mac都改成相應端口mac。從抓包情況分析回覆報文是第一個從端口1發,第二個從端口2發。以此類推。 |