2个RoCE网卡Bond聚合,实现带宽X2

举报
tsjsdbd 发表于 2023/09/28 16:25:52 2023/09/28
【摘要】 2个RoCE网卡Bond聚合,实现带宽X2。今天我们就来实际操作一下这个过程,并了解其中需要注意的地方。

 

我们知道操作系统里面,可以将2个实际的物理网卡,合体形成一个“逻辑网卡”,从而达到如主备/提升带宽等目的。但是RoCE网卡,是否也跟普通网卡一样,支持Bond能力呢?答案是的,RoCE也可以组Bond,只是比普通网卡多了一些约束。


今天我们就来实际操作一下这个过程,并了解其中需要注意的地方。也欢迎一起交流学习。

一、RoCE网卡链路聚合(LAG)

根据找到的资料:https://mellanox.my.site.com/mellanoxcommunity/s/article/How-to-Configure-RoCE-over-LAG-ConnectX-4-ConnectX-5-ConnectX-6 里面说的,RoCE网卡的Bond,只支持3种模式:

  • 模式1(主备)
  • 模式2(负载均衡)
  • 模式4(链路聚合)

相比普通网卡总共0-6共七种模式而言,算是打了大折。好在我们想要的“提升带宽”的模式还是有的。

 

二、服务器执行双网卡聚合(Bond)操作

不同的操作系统,执行Bond的命令不一样。这里我实际操作的是Ubuntu22.04,使用自带的 netplan工具,执行bond过程如下:

修改:

vi /etc/netplan/00-installer-config.yaml
network:
  ethernets:
    ens3f0np0
      dhcp4: no
    ens3f1np1
      dhcp4: no
  version: 2
  renderer: networkd
  bonds:
    bond0:
      interfaces: [ens3f0np0, ens3f1np1]
      parameters:
        mode: 802.3ad
        mii-monitor-interval: 1
        lacp-rate: faset
        transmit-hash-policy: layer3+4
      addresses: [10.10.2.20/24]

执行:

netplan apply

后,就可以看到一个叫“bond0”的网卡了。

 

这里,咱们配置的bond里面有2个重要的参数:

1)选择bond模式4,即802.3ad(链路聚合)

2transmit-hash-policy,负载均衡策略,有以下3种值:


这里由于RDMA点对点通信的时候,IP+MAC地址都不会变。所以咱选 layer3+4,毕竟发送报文的时候,源端口还是随机的。

 

CentOS的操作供参考:

  1. 新建bond
nmcli con add type bond ifname tsjbond0 bond.options "mode=2,miimon=100,updelay=100,downdelay=100"

 

  1. 添加子网卡
nmcli con add type ethernet ifname enp80s0f0 master tsjbond0
nmcli con add type ethernet ifname enp80s0f1 master tsjbond0

 

  1. 激活子网卡
nmcli con up bond-slave-enp80s0f0
nmcli con up bond-slave-enp80s0f1

 

  1. 修改了bond卡的配置
vi /etc/sysconfig/network-scripts/ifcfg-bond-tsjbond0
IPADDR=29.28.195.228
NETMASK=255.255.240.0

 

  1. 修改2子网卡配置
vi /etc/sysconfig/network-scripts/ifcfg-enp80s0f0
DEVICE=enp80s0f0
TYPE=Ethernet
ONBOOT=yes
MASTER= tsjbond0
SLAVE=yes
BOOTPROTO=none

 

  1. 激活bond
ifup bond-slave-enp80s0f0
ifup bond-slave-enp80s0f1
ifdown bond-tsjbond0
ifup bond-tsjbond0

 

 

三、服务器为新网卡开启PFC流控

执行如下命令,首先设置MTU

ifconfig bond0 mtu 4200

然后开启队列4pfc流控策略:

mlnx_qos -i ens3f0np0 --pfc=0,0,0,0,1,0,0,0 --turst=dscp
mlnx_qos -i ens3f1np1 --pfc=0,0,0,0,1,0,0,0 --turst=dscp
cma_roce_mode -d mlx5_bond_0 -p 1 -m 2
echo 128 > /sys/class/infiniband/mlx5_bond_0/tc/1/traffic_class

其中,前2条命令需要分别为bond下的各个子网卡开启pfc

然后,mlx5_bond_0 可以通过 ibdev2netdev 命令查询得到。

最后一条echo 128命令,是指强制网卡发送的报文的Traffic Class128,即匹配网卡发送队列4。不设置的话也行,可以通过 NCCL_IB_TC=128 达成相同的目的。详细可以参考《为什么华为云上AI训练必须设置NCCL_IB_TC=128》一文。

四、交换机执行双网口聚合(LACP)

不同的交换机开启LACP模式的命令不一样,这里型号是 CE9860。执行如下:

开启eth-trunk口。

interface Eth-Trunk1
port link-type trunk
mode lacp-static

然后切换到对应的网口,使其加入到这个trunk口。

interface GigabitEthernet0/0/1
eth-trunk 1
 
interface GigabitEthernet0/0/2
eth-trunk 1

命令操作基本这个思路,另外,LACPLB策略,是通过修改 load-balance profile default配置完成的:

eth-trunk hash-mode ?
  INTEGER<1-9> Different hash mode provide different load distribution result for egress traffic flows from a trunk, the default is 1
  For Eth-Trunk, mode 1 is suggested
  For SMAC change, mode 1/2/6/7 is suggested
  For SIP change, mode 1/5/7/9 is suggested
  For DIP change, mode 5/6 is suggested
  For DMAC&SMAC change, mode 9 is suggested
  For SMAC+SIP change, mode 5/6 is suggested

默认值是1

 

五、交换机为对应端口开启PFC流控

交换机上执行: 

qos buffer headroom-pool size 20164 cells slot 1
interface 400 x/x/x
trust dscp
dcb pfc enable mode manual
dcb pfc buffer 4 xoff dynamic 4 hdrm 3000 cells
commit

上面的命令,其实除了开启pfc之外,还设置了网口对应的buffer大小。具体参数值大小自己看着办。

 

六、RDMA流量带宽测试

这个就是咱们平时经常用的带宽测试命令了:

首先服务器端,启动Server

ib_write_bw -s 8388608 -F --run_infinitely -x 3 -q 8 --report_gbits

然后Client开始给服务端打流:

ib_write_bw -s 8388608 -F --run_infinitely -x 3 10.10.2.20 -q 8 --report_gbits

其中 -x参数设置为3,是表示使用 RoCE V2协议。

参数 --run_infinitely 可以让测试一直进行而不停止。

-q 表示使用多个QPSQueue-Pairs)流。对应 NCCL_IB_QPS_PER_CONNECTION,可以尝试设大一点试试效果。

示意的一个结果如下:


 

七、服务器端统计信息

查询队列4的报文数量:

watch -n 2 “ethtool -S ens3f0np0 | grep prio4”



 这个报文数不会减少,清零不方便,好像重启服务器数量也不会清0

只找到了通过卸载IB模块来达到清空统计数的目的(假如需要的话):

rmmod mlx5_ib
rmmod mlx5_core
modprob mlx5_core

 

查询网卡温度:

mget_temp -d mlx5_bond_0

可以看到温度,一般都是62/63度左右。


 

八、小结

本文只是操作记录,用于互相交流,不一定是最佳实践,自己有选择的看。

因为官网https://mellanox.my.site.com/mellanoxcommunity/s/article/How-to-Configure-RoCE-over-LAG-ConnectX-4-ConnectX-5-ConnectX-6

这么写的:


 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。