4、网络基础配置:IP地址分配、MTU设置(9000字节巨帧)、VLAN划分、路由配置
好,咱们进入第四讲。这一节全是硬功夫,说白了就是给RDMA网络铺路。你想想看,高速公路修得再宽,如果入口匝道设计不合理,车照样堵死。网络基础配置就是这个道理——IP怎么分、MTU设多大、VLAN怎么划、路由怎么指,每一步都直接影响RDMA的最终性能。
我个人习惯,在部署RDMA之前,先把网络拓扑图画在纸上。别笑,这招我用了十几年,比任何网管软件都靠谱。画清楚交换机之间的链路、服务器的网卡归属、以及存储节点的位置,后面配置起来心里才有底。
4.1 IP地址分配:别让地址成为瓶颈
IP地址分配看似简单,但坑不少。RDMA网络通常要求二层连通,所以IP规划要尽量简洁。
核心原则:
- 每个RDMA网卡一个独立IP。别复用管理口的IP,RDMA流量和管理流量必须分开。
- 使用私有地址段。我习惯用10.0.0.0/8或者172.16.0.0/12,留足扩展空间。
- 按功能划分地址池。比如计算节点用10.1.x.x,存储节点用10.2.x.x,管理节点用10.254.x.x。
避坑指南:我曾经在一个项目中,所有RDMA网卡都用了同一个C类网段(192.168.1.0/24),结果扩容到第254台服务器时,地址不够用了。最后不得不重新规划,停机窗口长达4小时。所以,一开始就留足余量,别抠门。
实际配置示例(以Mellanox ConnectX-5网卡为例):
# 为两个RDMA端口分配IP
ip addr add 10.1.1.1/24 dev ens1f0
ip addr add 10.1.2.1/24 dev ens1f1
ip link set ens1f0 up
ip link set ens1f1 up
嗯,这里要注意:如果使用RoCE v2,IP地址必须配置在物理网卡上,而不是虚拟接口上。我见过有人配在bond接口上,结果RDMA通信死活不通,排查了半天才发现问题。
4.2 MTU设置:9000字节巨帧是RDMA的生命线
MTU(最大传输单元)设置,是RDMA性能的关键。标准以太网MTU是1500字节,但RDMA强烈建议使用9000字节的巨帧(Jumbo Frame)。
为什么会这样?你想想看,RDMA的数据传输通常是大块数据(比如4KB、8KB甚至更大)。如果MTU只有1500,一个数据包要被拆成6-7个分片,每个分片都要经过TCP/IP协议栈处理,CPU开销巨大。而使用9000字节巨帧,一个包就能装下大部分数据,CPU负担骤降,吞吐量直线上升。
我建议的MTU配置步骤:
- 交换机端启用巨帧。不同厂商命令不同,但核心都是设置MTU为9216或9000。
- 服务器网卡端设置MTU。注意,必须所有设备一致,否则会出现丢包。
- 验证MTU连通性。用ping命令测试,带上不分片标志。
小技巧:配置完成后,用以下命令测试MTU是否生效:
# 测试9000字节的包能否通过(不分片)
ping -M do -s 8972 10.1.1.2
注意:-s 8972加上IP头部20字节和ICMP头部8字节,正好是9000字节。如果ping通,说明MTU设置正确。
服务器端MTU配置示例:
# 设置网卡MTU为9000
ip link set dev ens1f0 mtu 9000
ip link set dev ens1f1 mtu 9000
# 永久生效(以CentOS/RHEL为例)
echo 'MTU=9000' >> /etc/sysconfig/network-scripts/ifcfg-ens1f0
echo 'MTU=9000' >> /etc/sysconfig/network-scripts/ifcfg-ens1f1
警告:我曾经在一个项目中,只配了服务器端的MTU,忘了配交换机。结果RDMA流量时断时续,性能惨不忍睹。排查了整整两天,最后发现是交换机端口MTU还是默认的1500。记住:端到端,一个都不能少!
4.3 VLAN划分:隔离流量,保障性能
VLAN(虚拟局域网)在RDMA网络中的作用,不仅仅是隔离广播域,更重要的是流量优先级管理和安全隔离。
我的VLAN划分策略:
- RDMA数据平面VLAN:专门用于RDMA流量,比如VLAN 100。这个VLAN里只跑RoCE v2流量,不混入管理或存储流量。
- 管理平面VLAN:用于SSH、监控、带外管理等,比如VLAN 10。
- 存储平面VLAN(可选):如果存储和计算分离,可以再划一个VLAN 200。
交换机VLAN配置示例(以Cisco Nexus为例):
vlan 100
name RDMA_Data
vlan 10
name Management
interface Ethernet1/1
switchport mode trunk
switchport trunk allowed vlan 10,100
mtu 9216
服务器端VLAN配置:
# 创建VLAN子接口
ip link add link ens1f0 name ens1f0.100 type vlan id 100
ip addr add 10.1.100.1/24 dev ens1f0.100
ip link set ens1f0.100 up
# 或者使用NetworkManager(推荐)
nmcli con add type vlan ifname ens1f0.100 dev ens1f0 id 100
nmcli con modify ens1f0.100 ipv4.addresses 10.1.100.1/24
nmcli con up ens1f0.100
个人经验:我建议在VLAN上启用PFC(优先级流控制)。RDMA对丢包零容忍,PFC可以保证高优先级流量(比如RDMA数据)在拥塞时不被丢弃。具体配置我们后面章节会详细讲,但VLAN划分时就要预留好PFC的配置空间。
4.4 路由配置:让数据找到回家的路
RDMA网络通常建议二层连通,但实际部署中,跨机柜、跨楼层甚至跨数据中心时,三层路由不可避免。RoCE v2本身就是基于UDP/IP的,所以路由配置必须正确。
路由配置要点:
- 默认路由指向网关。如果RDMA网卡需要访问其他网段,必须配置默认路由。
- 策略路由(可选)。如果服务器有多张RDMA网卡,可以用策略路由实现流量负载分担。
- ECMP(等价多路径)。在核心交换机上启用ECMP,实现多链路负载均衡。
服务器端路由配置示例:
# 添加默认路由
ip route add default via 10.1.1.254 dev ens1f0
# 添加特定网段路由
ip route add 10.2.0.0/16 via 10.1.1.254 dev ens1f0
# 查看路由表
ip route show
交换机端路由配置(以Cisco Nexus为例):
ip routing
interface Vlan100
ip address 10.1.100.254/24
no shutdown
ip route 10.2.0.0/16 10.1.100.1
避坑指南:我曾经遇到一个案例,RDMA跨网段通信时性能骤降。排查发现,中间路由器没有启用UDP封装转发。RoCE v2的UDP目的端口是4791,有些老式路由器默认会丢弃这个端口的包。所以,记得在路由器上放行UDP 4791端口。
验证路由连通性:
# 使用ping测试三层连通性
ping -c 4 10.2.100.1
# 使用traceroute查看路径
traceroute -n 10.2.100.1
# 使用RDMA工具测试(需要安装rdma-core)
ibping -G 0x0002c903000a0001 -S 10.2.100.1
总结一下:网络基础配置是RDMA部署的基石。IP地址分配要留余量,MTU必须端到端统一为9000,VLAN划分要清晰隔离,路由配置要确保三层可达。每一步都马虎不得。我见过太多项目,因为MTU不一致导致性能腰斩,或者因为VLAN没配好导致广播风暴。嗯,这些坑,咱们提前填上。
下一节,我们会进入RDMA协议栈的配置,包括RoCE v2的启用、GID索引的配置、以及QP(队列对)的建立。准备好了吗?