Skip to main content
开放网络的先行者与推动者—星融元
加入我们技术支持(Support)  TEL:(+86)4000989811
RoCE、SONiC

星融元(Asterfusion) SONiC交换机的RoCE方案配置

1 目的

本文主要讲解企业级SONiC交换机的RoCE方案及配置。

2 型号和版本

以下产品可以实现本方案:
CX-N系列交换机
AsterNOS系统软件版本:
AsterNOSv3.1

3 RoCE 原理和配置注意事项

3.1 RoCE介绍

在各种HPC高性能计算场景中,对网络的诉求基本上是高吞吐和低时延这两个重要特性,为了实现高吞吐和低时延,业界一般采用 RDMA(Remote Direct Memory Access,远程直接内存访问)替代 TCP 协议。但是RDMA 对于丢包非常敏感,一旦发生丢包重传,性能会急剧下降。因此要使得 RDMA 吞吐不受影响,丢包率必须保证在 1e-05(十万分之一)以下,最好为零丢包。

RoCE (RDMA over Converged Ethernet)网络通过PFC+ECN特性来保障网络传输过程不丢包。

3.2 RoCE 原理和配置注意事项

RoCE网络通过PFC+ECN方式保证网络无损。具体原理如下:

PFC+ECN原理

当serverA与serverB通信时,正常数据流向如绿色实线所示,从A经过交换机S到达B,然后再由B返回到A。

当报文发生拥塞时,需要先使ECN发挥作用,设置交换机的ECN缓存阈值区间为N~M,当缓存超过N时,S开始随机在报文中标记ECN位,当缓存超过M时,S开始在所有报文中标记ECN位。B收到带有ECN标记的报文后,开始向A发送CNP报文,通知A降低发送速率,直到找到最佳速率后,以该速率持续发送数据,从而达到不丢包的目的。

当报文发生拥塞时,PFC也会发挥作用,设置交换机的PFC缓存阈值为Q,当缓存超过Q时,交换机会立即向A持续发送PAUSE数据帧,A收到PAUSE帧后,会立即停止向S的该队列发送报文,这时数据流会中断。当A不再收到pause报文之后,将重新开始向S发送报文。

因此,为了降低数据中断对业务的影响,应尽量避免PFC的触发,使用ECN来保障数据传输,此时就需要交换机的缓存阈值设置Q应该大于M。确保ECN先于PFC触发。

4 Asterfusion Enterprise SONiC 交换机 RoCE 配置

Asterfusion交换机运行企业级SONiC(AsterNOS)系统,采用PFC+ECN的方式保障RoCE网络无损。

有两种配置方式:

4.1 一键自动配置RoCE参数

Example:
sonic# configure terminal
sonic(config)# qos roce lossless
sonic(config)# qos service-policy roce_lossless

它还提供所有与 RoCE 相关配置信息的一键查看功能。命令如下:

sonic# show qos roce

4.2 手动配置RoCE参数

当一键RoCE的配置参数与当前场景并不是很匹配时,也可以手动进行参数配置,以达到最佳效果,相关配置如下:

修改 DSCP 映射

configure termin

diffserv-map type ip-dscp roce_lossless_diffserv_map   #进入DSCP映射配置视图

ip-dscp value cos cos_value  #配置DSCP到COS的映射,value指定DSCP值,范围0-63;cos_value指定COS值,范围0-7

default {cos_value|copy}  #default cos_value表示所有数据包被映射到相应的COS值;default copy表示系统默认的映射

Example:
sonic# configure terminal
sonic(config)# diffserv-map type ip-dscp roce_lossless_diffserv_map
sonic(config-diffservmap-roce_lossless_diffserv_map)# ip-dscp 1 cos 1
sonic(config-diffservmap-roce_lossless_diffserv_map)# default copy

修改队列调度策略

configure terminal

policy-map roce_lossless    #进入相关视图

queue-scheduler priority queue queue-id  #配置SP模式调度,queue-id表示队列,范围0-7

queue-scheduler queue-limit percent queue-weight queue queue-id #配置DWRR模式调度queue-weight表示调度权重百分比,范围0-100;queue-id表示队列,范围0-7

Example:
sonic# configure terminal
sonic(config)# policy-map roce_lossless
sonic(config-pmap-roce-lossless)# queue-scheduler priority queue 3
sonic(config-pmap-roce_lossless)# queue-scheduler queue-limit percent 60 queue 3

调整PFC水线

configure terminal

buffer-profile roce_lossless_profile #进入PFC配置视图

mode lossless dynamic dynamic_th size size xoff xoff xon-offset xon-offset [xon xon]

#修改PFC无损Buffer。

dynamic_th表示动态阈值系数,取值范围为[-4,3];动态阈值= 2dynamic_th×剩余可用buffer。例如,dynamic_th设为1,那么动态阈值为2倍的剩余可用buffer,即实际threshold为2/3的总可用buffer;

size表示保留大小,单位为字节,建议配置值为1518;

xoff表示PFC反压帧触发缓存门限值,建议配置为cell size(224 Bytes)的整数倍,单位为字节。xoff与线缆长度,接口速率等参数有关。xoff值必须大于xon值;

xon-offset表示PFC反压帧停止缓存门限值,建议配置为cell size(224 Bytes)的整数倍,单位为字节。建议配置值为13440;

xon为可选参数一般配置为0。

Example:
sonic# configure terminal
sonic(config)# buffer-profile roce_lossless_profile
sonic(config-buffer-profile-roce_lossless_profile)# mode lossless dynamic 1 size 1518 xoff 896 xon-offset 13440 xon 0

调整ECN水线

configure terminal

wred roce_lossless_ecn  #进入ECN配置视图

mode ecn gmin min_th gmax max_th gprobability probability [ymin min_th ymax max_th yprobability probability|rmin min_th rmax max_th rprobability probability]

#修改ECN参数。

min_th设置显式拥塞通告的下限绝对值,单位为字节。即当队列中的报文长度达到此数值时,接口开始按照概率将报文的ECN字段置为CE。可配置的min threshold最小值为15KB,建议配置值为15360;

max_th设置显式拥塞通告的上限绝对值,单位为字节。即当队列中的报文长度达到此数值时,接口开始将全部报文的ECN字段置为CE;不同速率接口的建议值分别为:100/200G为76800,400G为1536000。

probability设置将报文的ECN字段的设置为CE的最大概率,整数形式,取值范围[1,100]。对于时延敏感型业务,建议最大丢弃概率设置为90%;对于吞吐敏感型业务,建议设置为10%。

Example:
sonic# configure terminal
sonic(config)# wred roce_lossless_ecn
sonic(config-wred-roce_lossless_ecn)# mode ecn gmin 15360 gmax 76800 gprobability 90

5 用户测试案例

5.1 要求

现用三台已安装Mellanox 100G网卡的服务器,测试CX532P-N交换机无损转发数据的特性,如下图所示,用server1发送RDMA流量经过交换机的无损队列转发给server3,同时用server2发送普通TCP流量经交换机转发给server3,查看数据接收情况。

5.2 拓扑图

拓扑图

5.3 测试环境

硬件

名称型号硬件指标数量备注
交换机CX532P-N参见彩页2
服务器X86普通服务器3安装100G IB网卡
光模块100GQSFP286
光纤多模100G适用3
网卡MCX653195A-ECAT100G3

软件

软件版本备注
交换机操作系统AsterNOSv3.1
宿主机操作系统openEuler 22.03
宿主机内核 5.10.0-136.33.0.109
Mellanox网卡驱动5.10.0-60.18.0网卡驱动版本要适配宿主机内核版本
iperf33.9

管理网口IP地址规划

设备名称接口IP地址备注
CX532P-N管理口10.230.1.18
Server-1管理口10.230.1.11
Server-2管理口10.230.1.12
Server-3管理口10.230.1.13

业务网口IP地址规划

设备名称接口IP地址备注
CX532P-NVlan接口100.0.10.200
Server-1业务接口100.0.10.10Mellanox 网卡接口
Server-2业务接口100.0.10.11Mellanox 网卡接口
Server-3业务接口100.0.10.12Mellanox 网卡接口

5.4 测试前的准备工作

根据拓扑图将每台服务器连接到交换机,确保服务器上已正确安装 Mellanox 网卡和驱动程序,并安装 iperf3 测试工按照组网图将各服务器与交换机正确连接,确保服务器上安装好mellanox网卡及驱动,并安装好iperf3测试工具。

5.5 配置步骤

第 1 步

对交换机进行基础配置,确保三个接口在同一二层网络中,数据能正常转发。

sonic# configure terminal
sonic(config)# vlan 101
sonic(config-vlan-101)# interface ethernet 0/0
sonic(config-if-0/0)# switchport access vlan 101
sonic(config-if-0/0)# interface ethernet 0/4
sonic(config-if-0/4)# switchport access vlan 101
sonic(config-if-0/4)# interface ethernet 0/8
sonic(config-if-0/8)# switchport access vlan 101
sonic(config-if-0/8)# exit
sonic(config)# interface vlan 101
sonic(config-vlanif-101)# ip address 100.0.10.200/24

第 2 步

一键配置交换机RoCE参数。

onic# configure terminal
sonic(config)# qos roce lossless
sonic(config)# qos service-policy roce_lossless

查看交换机RoCE配置

sonic# show qos roce

第 3 步

配置三台服务器ip地址,并配置网卡的RoCE参数,本次无损队列使用队列3。

[admin@Server1~]# sudo ifconfig ens1f2 100.0.10.10/24 up
[admin@Server2~]# sudo ifconfig ens1f2 100.0.10.11/24 up
[admin@Server3~]# sudo ifconfig ens1f2 100.0.10.12/24 up
[admin@Server1~]# sudo mlnx_qos -i ens1f2 –trust dscp
[admin@Server1~]# sudo mlnx_qos -i ens1f2 –pfc 0,0,0,1,0,0,0,0
[admin@Server1~]# sudo cma_roce_mode -d mlx5_0 -p 1 -m 2
[admin@Server1~]# sudo echo 96 > /sys/class/infiniband/mlx5_0/tc/1/traffic_class
[admin@Server1~]# sudo cma_roce_tos -d mlx5_0 -t 96
[admin@Server1~]# sudo echo 1 > /sys/class/net/ens1f2/ecn/roce_np/enable/3
[admin@Server1~]# sudo echo 1 > /sys/class/net/ens1f2/ecn/roce_rp/enable/3
[admin@Server1~]# sudo echo 16 > /sys/class/net/ens1f2/ecn/roce_np/cnp_dscp
[admin@Server1~]# sudo sysctl -w net.ipv4.tcp_ecn=1
[admin@Server3~]# sudo mlnx_qos -i ens1f2 –trust dscp
[admin@Server3~]# sudo mlnx_qos -i ens1f2 –pfc 0,0,0,1,0,0,0,0
[admin@Server3~]# sudo cma_roce_mode -d mlx5_0 -p 1 -m 2
[admin@Server3~]# sudo echo 96 > /sys/class/infiniband/mlx5_0/tc/1/traffic_class
[admin@Server3~]# sudo cma_roce_tos -d mlx5_0 -t 96
[admin@Server3~]# sudo echo 1 > /sys/class/net/ens1f2/ecn/roce_np/enable/3
[admin@Server3~]# sudo echo 1 > /sys/class/net/ens1f2/ecn/roce_rp/enable/3
[admin@Server3~]# sudo echo 16 > /sys/class/net/ens1f2/ecn/roce_np/cnp_dscp
[admin@Server3~]# sudo sysctl -w net.ipv4.tcp_ecn=1

第 4 步

使用server1和server2向server3发数据包,其中server1发送RoCE流量,server2发送tcp流量。

[admin@Server3~]# ib_send_lat -R -d mlx5_0 -F –report_gbits -a
[admin@Server1~]# ib_send_lat -a -R -x 3 -d mlx5_0 -F -f 2 100.0.10.12
[admin@Server3~]# iperf3 -s
[admin@Server2~]# iperf3 -c 100.0.10.12 -l 20k -b 100G -M 9000 -t 1000

查看三个接口的各队列数据转发情况。

sonic# show counters queue 0/0
sonic# show counters queue 0/4
查看0/4接口的队列转发
sonic# show counters queue 0/8
查看0/8接口的队列转发

6 结论

由转发结果可以看出,经过队列3转发的RoCE流量未丢包,经过队列0转发的TCP流量由于带宽不足产生丢包。CX532P-N交换机可以通过RoCE功能实现网络无损传输。

点击了解Asterfusion CX-N数据中心交换机

如有其它问题,请填写需求表单联系我们

A-lab-AI&HPC, A-lab-部署验证

对星融元产品感兴趣?

立即联系!

返回顶部

© 星融元数据技术(苏州)有限公司 苏ICP备17070048号-2