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配置步骤:

  1. 交换机端启用巨帧。不同厂商命令不同,但核心都是设置MTU为9216或9000。
  2. 服务器网卡端设置MTU。注意,必须所有设备一致,否则会出现丢包。
  3. 验证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(队列对)的建立。准备好了吗?