Files
Knowledge/1 使用/Linux/网卡 bond.md
T

5.5 KiB
Raw Blame History

网卡的bond(绑定)是一种网络技术,它允许将多个物理网络接口卡(NIC)组合成一个单一的逻辑通道,以提高网络吞吐量并提供冗余。以下是网卡绑定的一些关键点:

  1. 提高带宽:通过将多个网卡绑定在一起,可以增加可用的网络带宽,因为数据可以通过多个网卡同时传输。

  2. 冗余:如果其中一个网卡出现故障,绑定可以自动切换到另一个网卡,从而减少网络中断的风险。

  3. 负载均衡:绑定还可以在多个网卡之间分配网络流量,这称为负载均衡,有助于更均匀地使用网络资源。

以下是Linux网卡绑定(bonding)模式及其对应配置值的详细表格:

网卡Bonding模式对应关系表

Mode编号 模式名称 Linux内核名称 负载均衡 容错性 交换机要求
mode=0 负载均衡(轮询) balance-rr ✅ 轮询方式 ✅ 不需要特殊配置
mode=1 主备模式 active-backup ❌ ✅ 高可用 不需要特殊配置
mode=2 负载均衡(XOR哈希) balance-xor ✅ 基于哈希 ✅ 不需要特殊配置
mode=3 广播模式 broadcast ❌ ✅ 高冗余 不需要特殊配置
mode=4 动态链路聚合 802.3ad ✅ 动态聚合 ✅ 需要支持LACP
mode=5 适配器传输负载均衡 balance-tlb ✅ 自适应 ✅ 不需要特殊配置
mode=6 适配器负载均衡 balance-alb ✅ 自适应 ✅ 不需要特殊配置

各模式详细说明

mode=0 (balance-rr) - 轮询负载均衡

  • 特点:数据包按顺序轮流从每个slave接口发送
  • 优点:带宽叠加,负载均衡
  • 缺点:数据包可能乱序到达
  • 适用场景:需要高带宽,不严格要求包顺序

mode=1 (active-backup) - 主备模式

  • 特点:只有一个接口活跃,其他作为备份
  • 优点:高可用性,配置简单
  • 缺点:不能增加带宽
  • 适用场景:关键业务需要冗余备份

mode=2 (balance-xor) - XOR哈希策略

  • 特点:基于源/目的MAC地址的XOR运算选择出口
  • 优点:同会话流量走同一接口,避免乱序
  • 缺点:负载均衡不够精细
  • 配置示例:
    # 哈希策略选项
    xmit_hash_policy=layer2     # 默认,基于MAC地址
    xmit_hash_policy=layer2+3   # 基于MAC+IP
    xmit_hash_policy=layer3+4   # 基于IP+端口
    

mode=3 (broadcast) - 广播模式

  • 特点:所有数据包在所有接口发送
  • 优点:极高冗余性
  • 缺点:网络开销大,浪费带宽
  • 适用场景:极端可靠性要求

mode=4 (802.3ad/LACP) - 动态链路聚合

  • 特点:需要交换机支持LACP协议
  • 优点:标准协议,兼容性好,智能负载均衡
  • 缺点:依赖交换机配置
  • 交换机配置要求:
    # 配置LACP参数
    lacp_rate=slow    # 默认,每30秒发送LACPDU
    lacp_rate=fast    # 每秒发送LACPDU(1秒)
    

mode=5 (balance-tlb) - 适配器传输负载均衡

  • 特点:根据每个slave的负载情况动态分配
  • 优点:不需要特殊交换机
  • 缺点:只均衡出站流量,入站流量由当前slave处理

mode=6 (balance-alb) - 适配器负载均衡

  • 特点:mode=5的增强版,包含ARP协商
  • 优点:出入站流量都均衡,无需交换机支持
  • 缺点:可能引起ARP刷新问题

常用配置参数

1. 基础参数

BONDING_OPTS="mode=1 miimon=100"
  • miimon=100:每100ms检查链路状态(毫秒)
  • downdelay=200:链路down后等待200ms再禁用
  • updelay=200:链路恢复后等待200ms再启用

2. 主备模式专用参数

BONDING_OPTS="mode=1 miimon=100 primary=eth0"
  • primary=eth0:指定主接口
  • primary_reselect=always:主接口恢复后是否切回

3. LACP模式专用参数

BONDING_OPTS="mode=4 miimon=100 lacp_rate=fast xmit_hash_policy=layer3+4"

配置文件示例

RHEL/CentOS/Fedora

# /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
TYPE=Bond
BONDING_MASTER=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
ONBOOT=yes
BOOTPROTO=none
BONDING_OPTS="mode=4 miimon=100 lacp_rate=fast"

# /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
MASTER=bond0
SLAVE=yes
ONBOOT=yes

Ubuntu/Debian

# /etc/network/interfaces
auto bond0
iface bond0 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    bond-mode 4
    bond-miimon 100
    bond-lacp-rate 1
    bond-slaves eth0 eth1

状态检查命令

# 查看bonding状态
cat /proc/net/bonding/bond0

# 查看网络接口统计
ip link show bond0

# 查看bonding模块参数
cat /sys/class/net/bond0/bonding/mode
cat /sys/class/net/bond0/bonding/slaves

选择建议

  1. 需要高可用性:mode=1(主备模式)
  2. 需要带宽聚合且交换机支持LACP:mode=4(802.3ad)
  3. 需要带宽聚合但交换机不支持LACP:mode=0或mode=6
  4. 需要极致的冗余性:mode=3(广播模式)
  5. 服务器负载均衡:mode=2或mode=4

选择bond模式时,请确保了解网络环境和业务需求,并在测试环境中验证后再部署到生产环境。