AI服务器网络配置:多网卡绑定与RDMA调优实战
AI 服务器网络配置的核心不是把网线插上就算完,而是让训练节点之间的数据流和存储读写流各走各的链路,避免互相抢带宽。
下面按“先看清网卡、再做聚合、最后验证链路”的顺序说明,适用于 Ubuntu 20.04 及以上或 CentOS 7/8 的通用 Linux 环境,需要 root 或 sudo 权限。
先确认网卡命名和链路状态
在动手改配置前,先用命令看清系统识别到了哪些网卡、速率和双工是否正常:
ip -br link show
ethtool eth0 | grep -E 'Speed|Duplex|Link detected'
ip -br link show 输出里带 UP 的才是已启用网卡。
如果看到 state DOWN,先检查光模块、交换机端口和网线,不要急着改 bonding 配置。
对于 100G 或 200G 网卡,还要确认 ethtool 显示的速率与交换机端口协商一致,否则聚合后总带宽可能达不到预期。
多网卡聚合:bonding 与 team 怎么选
AI 服务器常见做法是把两块或四块同速率网卡做成 bond,给训练流量提供更高带宽和冗余。
Linux 内核自带的 bonding 兼容性最好,配置路径在 /etc/sysconfig/network-scripts/(CentOS)或 /etc/netplan/(Ubuntu)。
以 CentOS 7 为例,创建 /etc/sysconfig/network-scripts/ifcfg-bond0:
DEVICE=bond0
TYPE=Bond
BONDING_MASTER=yes
BOOTPROTO=none
IPADDR=192.168.10.10
PREFIX=24
ONBOOT=yes
BONDING_OPTS="mode=802.3ad miimon=100 xmit_hash_policy=layer3+4"
然后把参与聚合的物理网卡 ifcfg-eth1、ifcfg-eth2 中的 MASTER=bond0 和 SLAVE=yes 补上,
重启网络。mode=802.3ad 要求交换机侧也配置 LACP,
否则链路起不来;xmit_hash_policy=layer3+4 让流量按 IP 和端口分散到不同成员口,
对多连接训练更友好。
如果系统是 Ubuntu 且使用 netplan,可以在 /etc/netplan/01-netcfg.yaml 中用 bonds 段声明成员口和参数,再执行 sudo netplan apply。
改完先 ping 网关,再用 cat /proc/net/bonding/bond0 查看 MII Status 是否为 up、Slave Interface 是否全部在线。
MTU 和 RDMA 场景的注意点
训练集群如果走 RoCE 或 InfiniBand,MTU 通常要设成 9000,并且交换机、网卡和 bond 三处保持一致。
用 ip link set dev bond0 mtu 9000 临时调整,持久化则写进网卡配置文件。
改完用 ping -M do -s 8972 <对端IP> 验证大包能否通过,能通说明路径 MTU 一致。
RDMA 网卡不要套用普通以太网 bond 的思路。
先用 ibv_devices 或 ibstat 确认设备被识别,再用 ib_write_bw 做点对点带宽测试。
如果测试失败,优先检查交换机 PFC 和 ECN 配置,而不是反复改服务器端。
配置后如何验证和排错
完成 AI 服务器网络配置后,至少做三件事:用 ip addr 确认业务 IP 落在 bond 上;
用 ethtool bond0 确认 Speed 为聚合后的速率;
用 iperf3 -c <对端IP> -P 8 做多流打流,观察是否接近预期带宽。
如果带宽只有单口速率,多半是交换机 LACP 没配或哈希策略不匹配,可以临时把 xmit_hash_policy 改成 layer2 对比。
最后提醒一点:修改网络配置前先保留一份原配置文件,远程操作时用 nohup 或 screen 执行重启网络命令,避免 SSH 断连后无法回滚。