在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的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。