网卡的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运算选择出口 - **优点**:同会话流量走同一接口,避免乱序 - **缺点**:负载均衡不够精细 - **配置示例**: ```bash # 哈希策略选项 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协议 - **优点**:标准协议,兼容性好,智能负载均衡 - **缺点**:依赖交换机配置 - **交换机配置要求**: ```bash # 配置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. **基础参数** ```bash BONDING_OPTS="mode=1 miimon=100" ``` - **miimon=100**:每100ms检查链路状态(毫秒) - **downdelay=200**:链路down后等待200ms再禁用 - **updelay=200**:链路恢复后等待200ms再启用 ### 2. **主备模式专用参数** ```bash BONDING_OPTS="mode=1 miimon=100 primary=eth0" ``` - **primary=eth0**:指定主接口 - **primary_reselect=always**:主接口恢复后是否切回 ### 3. **LACP模式专用参数** ```bash BONDING_OPTS="mode=4 miimon=100 lacp_rate=fast xmit_hash_policy=layer3+4" ``` ## 配置文件示例 ### RHEL/CentOS/Fedora ```bash # /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 ```bash # /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 ``` ## 状态检查命令 ```bash # 查看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模式时,请确保了解网络环境和业务需求,并在测试环境中验证后再部署到生产环境。