RoCE v2 这个协议是将 RDMA 数据段先封装到 UDP 数据段内,加上 UDP 头部,再加上
IP 头部,最后在加上以太网头部,属于三层数据包,为了对它进行分类的话,既可以使用以
太网 VLAN 中的 PCP 域,也可以使用 IP 头部的 DSCP 域。咱们 neonsan 主机端基于 L3 的流
控配置就是这个。
4.2、RoCE 流控的配置步骤
RoCE 的流控分为主机部分和交换机部分的流控。
基于 L3 流控的主机端配置:
Step 1:Set QoS parameters
Set DSCP (L3) as trust mode for the NIC.
网卡开启使用 DSCP 的流控方式
# mlnx_qos -i <interface> --trust dscp
例如:mlnx_qos -i ens1f0 --trust dscp
Set ToS to 106 (DSCP 26) for ALL RoCE traffic (Note: This command is non-persistent)
# echo 106 > /sys/class/infiniband/<mlx-device>/tc/1/traffic_class
例如:echo 106 > /sys/class/infiniband/mlx5_0/tc/1/traffic_class
这一步把所有 RoCE 流量的 DSCP 值设置为 26 对应于 tos 106(01101010,DSCP 取高 6 位),在
交换机上面需要针对 DSCP 26 进行对应的设置。注意:这个设置在重启后丢失,因此每次启动
机器后需要重新配置,可以将该配置置于/etc/rc.local 中。
Set the RDMA-CM ToS to 106 (DSCP 26) (Note: This command is nonpersistent)
# cma_roce_tos -d <mlx-device> -t 106
例如:cma_roce_tos -d mlx5_0 -t 106
这一步将 rdma connection manager 的优先级也设置为 DSCP 26
Enable ECN for TCP traffic (Note: This command is nonpersistent)
# sysctl -w net.ipv4.tcp_ecn=1
这一步设置使得 ECN 报文走 TCP 协议而非默认的 UDP 协议,保证拥塞发生时 ECN 报文能通过
可靠传输到达对端。
Step 2 - Enable PFC on RoCE prioritry
// Enable DCQCN in priority 3
#echo 1 > /sys/class/net/eth1/ecn/roce_np/enable/3
#echo 1 > /sys/class/net/eth1/ecn/roce_rp/enable/3
// Configure CNP to use DSCP over priority 6.
#echo 48 > /sys/class/net/eth0/ecn/roce_np/cnp_dscp
在网口端开启 PFC
Method 1 - Using mlnx_qos tool (Note: This command is nonpersistent):# mlnx_qos -i <interface> --trust=dscp --pfc 0,0,0,1,0,0,1,0
例如:mlnx_qos -i ens1f0 --trust=dscp --pfc 0,0,0,1,0,0,1,0
注意: nonpersistent 的配置在 server 重启之后会丢失,因此需要在 rc.local 里进行配置,保证在
机器重启之后配置依然有效。
基于 L3 流控的交换机配置:
不同交换机的配置方式不一样,目前已经测试过思科 3k 交换机的 L3 流控,盛科交换机 L2,L3
层流控。需要在交换机上配置对应的 dscp 值,具体配置参见厂家给出的配置方案。对交换机的
流控参数配置要求见最后。
交换机参考:
***.***/s/article/howto-configure-mellanox-spe
ctrum-switch-for-lossless-roce
***.***/s/article/recommended-network-configur
ation-examples-for-roce-deployment
***.***/s/article/roce-configuration-for-cisco
-switches
***.***/s/article/roce-configuration-for-arist
a-switches
暂无评论