bond简介:
bond技术即bonding,它是Linux Kernel模块,能够将多块物理网卡绑定到一块虚拟网卡上,并通过修改网口驱动让多块网卡看起来是一个单独的以太网接口设备,外界看到的只有一个IP,一般用于解决网卡的单点故障或网卡负载较高的场景。
bond技术原理:
bond技术需要物理网卡开启混杂模式才能正常工作。在混杂模式下,网卡不只接收目的MAC地址为自身的以太网帧,而是接收网络上所有的数据帧。为了实现多块网卡协同工作,bond将自己的MAC地址复制到各个物理网卡上,让所有的网卡共享同一个MAC地址。这个方式要求所有的网卡都要支持BIOS,这样才能够让操作系统将MAC地址写到网卡上。
对于单物理网卡的bond网卡来说,bond网卡的MAC地址和物理网卡的MAC地址是一致的。而对于多物理网卡的bond网卡而言,其中一块物理网卡会被设置为Master,其他的网卡则都是Slave,bond网卡的MAC地址取自标志为Master的物理网卡,然后再将这个MAC地址复制到其他物理网卡上。所以在安装网卡时,我们需要指定bond网卡,以及bond网卡所对应的标志为Master的物理网卡。
网卡bond模式:
网卡bond模式总共有7种。最常用的是负载模式和主备模式。在网络流量较大的情况下推荐使用负载模式,而在可靠性要求较高的场景下则推荐使用主备模式。
bond0:轮询策略,即顺序地在每一个被bond的网卡是发送数据包,这种模式提供负载均衡和容错能力。
bond1:主备策略,在同一时时刻只有一张网卡被激活,当且仅当活动网卡失效时才会激活其他网卡。
bond2:默认选择策略是 选择的网卡序号=(源MAC地址 XOR 目标MAC地址) % Slave网卡的数量,其他的策略可以通过xmit_hash_policy配置项指定。
bond3:使用广播策略,数据包会被广播到所有Slave网卡进行传送。
bond4:动态链接聚合策略,启动时会创建一个聚合组,所有Slave网卡共享同样的速率和双工设定,需要交换机支持IEEE 802.3ad动态链路聚合模式。
bond5:基于每个网卡的速率选择传输网卡。需要ethtool支持获取每个slave的速率。
bond6:包含bond5模式,同时还支持对IPV4流量接收时的负载均衡策略,而且不需要任何交换机的支持。需要ethtool支持获取每个slave的速率,底层驱动支持设置某个设备的硬件地址。