在Linux操作系統中,一般是多張網卡聚合用于提高網絡帶寬,以及提升線路可用性,提升數據中心服務器可用性。
- 提高網絡的帶寬,因為多個網卡可以同時傳輸數據,相當于增加了網絡的通道 。
- 提高網絡的可用性,因為如果某個網卡出現故障,其他網卡可以自動接管流量,避免了網絡中斷 。
- 提高網絡的冗余性,因為多個網卡可以連接到不同的交換機或路由器,從而實現了網絡的多路徑 。
- 提高網絡的負載均衡,因為根據不同的鏈路聚合模式,可以根據流量的源地址、目的地址、端口號等因素來分配流量到不同的網卡,從而實現了網絡的均衡利用
bond聚合原理
bond鏈路聚合支持基于報文的IP地址或MAC地址來進行負荷分擔,可以配置不同的模式(本地有效,對出方向報文生效)將數據流分擔到不同的成員接口上。常見的模式有:源IP、源MAC、目的IP、目的MAC、源目IP、源+目MAC。
bond工作模式分七種,工作原理和特點如下
- mode 0(balance-rr):平衡輪詢模式round-robin。
此模式將傳輸負載平均分布在所有成員接口之間,并且是輪詢的方式比如第一個包走eth0,第二個包走eth1,直到數據包發送完畢,不提供冗余。
特點:需要交換機通過手工模式或者靜態模式鏈路聚合與之對接,傳輸負載會循環地分配到不同的成員接口上,從而實現負載均衡。但是,為了確保這種負載均衡的效果,交換機需要正常工作并適當地處理從不同成員接口發送的數據包。如果交換機無法正確地處理從多個成員接口發出的數據包,可能會導致數據包的亂序或延遲,從而影響網絡性能
- mode 1 (active-backup) :表示主備模式
在這種模式下,只有一個接口處于活動狀態,其余接口處于備份狀態。如果活動接口失敗,備份接口會自動接管。
- mode 2 (balance-xor) :表示平衡異或模式。
使用異或操作將傳輸負載分布在成員接口之間,提供了負載均衡和部分冗余。它基于HASH算法的負載均衡模式,網卡的分流按照xmit_hash_policy的TCP協議層設置來進行HASH計算分流,使得各種不同處理來源的訪問都盡量在同一個網卡上進行處理。
- mode 3 (broadcast) :表示廣播模式
將數據廣播到所有成員接口,適用于某些特殊情況。
- mode 4 (802.3ad, LACP) :表示IEEE 802.3ad動態鏈接聚合
使用IEEE 802.3ad標準的鏈路聚合控制協議(LACP),協商綁定接口的狀態,提供負載均衡和冗余。在這種模式下,需要交換機支持LACP協議。
- mode 5 (balance-tlb) :表示適配器傳輸負載均衡。
負載根據傳輸負載和接口狀態分布,但接收數據僅通過活動接口。在每個slave上根據當前的負載(根據速度計算)分配外出流量。如果正在接受數據的slave出故障了,另一個slave接管失敗的slave的MAC地址。
- mode 6 (balance-alb) :表示適配器適應性負載均衡
該模式包含了balance-tlb模式,同時加上針對IPV4流量的接收負載均衡(receive load balance, rlb),而且不需要任何switch(交換機)的支持。接收負載均衡是通過ARP協商實現的。bonding驅動截獲本機發送的ARP應答,并把源硬件地址改寫為bond中某個slave的唯一硬件地址,從而使得不同的對端使用不同的硬件地址進行通信。