Linux 多网口绑定

多网口绑定(也称为网卡组或链路聚合)是一种将多个网卡绑定成单个网络设备的技术。利用该技术可以实现某个或多个目标,例如提高网络链路容错能力,增加网络通信性能等。类似光纤通道和光纤交换机这样的高速网络硬件的价格一般都非常昂贵。利用链路聚合技术,将两个物理网卡组成一个逻辑网卡,能够将网络传输速度加倍。
大部分交换机设备都已经支持 Linux 内核的这个特性。如果你的服务器有多个以太网口,你可以将这些网口连接到不同的交换机,以便将故障点分散到不同的网络设备,一旦有物理线路故障或网络设备故障发生,多网卡绑定会自动将通信流量从故障线路切换到正常线路。
链路聚合技术可以有效减少虚拟机在线迁移的时延,并提高服务器节点之间的数据复制速度。
目前一共有 7 种网口绑定模式:

绑定模式

轮询模式

轮询模式(blance-rr): 网络数据包将按顺序从绑定的第一个网卡到最后一个网卡轮流发送。这种模式可以同时实现负载均衡和链路容错效果。

主备模式

主备模式(active-backup): 该模式下网卡组中只有一个网卡活动。只有当活动的网卡故障时,其他网卡才会启动并接替该网卡的工作。
整个网卡组使用其中一块网卡的 MAC 地址作为对外通信的 MAC 地址,以避免网络交换机产生混乱。这种模式仅能实现链路容错效果。

异或模式

异或模式(balance-xor): 网络数据包按照异或策略在网卡组中选择一个网卡发送([源 MAC 地址 XOR 目标 MAC 地址] MOD 网卡组中网卡数量)。
对于同一个目标 MAC 地址,该模式每次都选择使用相同网卡通信。该模式能同时实现负载均衡和链路容错效果。

广播模式

广播模式(broadcast): 网络数据包会同时通过网卡组中所有网卡发送。该模式能实现链路容错效果。

动态链路聚合模式

  • IEEE 802.3ad 动态链路聚合模式(802.3ad)(LACP): 该模式会创建多个速度和双工配置一致的聚合组。并根据 802.3ad 标准在活动聚合组中使用所有网卡进行通信。

自适应传输负载均衡模式

自适应传输负载均衡模式(balance-tlb): 该 Linux 网卡绑定模式无须交换机支持即可配置使用。
根据当前每块网卡的负载情况(根据链路速度计算的相对值),流出的网络数据包流量会自动进行均衡。流入的网络流量将由当前指定的一块网卡接 收。
如果接收流入流量的网卡故障,会自动重新指定一块网卡接收网络数据包,但该网卡仍沿用之前故障网卡的 MAC 地址。

自适应负载均衡模式

自适应负载均衡模式(均衡的 IEEE 802.3ad 动态链路聚合模式(802.3ad)(LACP):-alb): 该模式是在 blance-tlb 模式的基础上结合了 IPV4 网络流量接收负载均衡(rlb)特性,并且无须网络交换机的专门支持即可配置使用。
网络流量接收负载均衡基于 ARP 协商实现。网卡组驱动将自动截获本机的 ARP 应答报文,并使用网卡组中其中一块网卡的 MAC 地址覆盖 ARP 报文中应答的源 MAC 地址,从而达到不同的网络通信对端和本机不同 MAC 地址通信的效果。

大多数情况下,active-backup 模式会是最佳选择。但如果你的网络交换机支持 LACP“IEEE
802.3ad”功能,那么 802.3ad 模式会是更好的选择。

下面所列的网卡绑定配置示例可用于分布式/共享存储网络配置。其主要优势是能达到更高
的传输速度,同时实现网络链路容错的效果。

例子:

  • 基于固定 IP 地址的多网卡绑定

    auto lo
    iface lo inet loopback

    iface eth1 inet manual
    iface eth2 inet manual

    auto bond0
    iface bond0 inet static
    slaves eth1 eth2
    address 192.168.1.2
    netmask 255.255.255.0
    bond_miimon 100
    bond_mode 802.3ad
    bond_xmit_hash_policy layer2+3
  • 另一种配置方法是直接使用网卡组作为虚拟交换机桥接端口,从而实现虚拟机网络的容错效果。

    auto lo
    iface lo inet loopback

    iface eth1 inet manual
    iface eth2 inet manual

    auto bond0
    iface bond0 inet maunal
    slaves eth1 eth2
    bond_miimon 100
    bond_mode 802.3ad
    bond_xmit_hash_policy layer2+3
文章作者: j0ck1e
文章链接: https://blog.j0ck1e.com/2018/10/30/linux_bond/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 j0ck1e's blog