星融元(Asterfusion) SONiC交换机的RoCE方案配置
- 1 目的
- 2 型号和版本
- 3 RoCE 原理和配置注意事项
- 3.1 RoCE介绍
- 3.2 RoCE 原理和配置注意事项
- 4 Asterfusion Enterprise SONiC 交换机 RoCE 配置
- 4.1 一键自动配置RoCE参数
- 4.2 手动配置RoCE参数
- 5 用户测试案例
- 5.1 要求
- 5.2 拓扑
- 5.3 测试环境
- 5.4 测试前的准备工作
- 5.5 配置步骤
- 6 结论
- Asterfusion CX-N数据中心交换机
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方式保证网络无损。具体原理如下:
当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网卡 |
光模块 | 100G | QSFP28 | 6 | |
光纤 | 多模 | 100G适用 | 3 | |
网卡 | MCX653195A-ECAT | 100G | 3 |
软件
软件 | 版本 | 备注 |
---|---|---|
交换机操作系统 | AsterNOSv3.1 | |
宿主机操作系统 | openEuler 22.03 | |
宿主机内核 | 5.10.0-136.33.0.109 | |
Mellanox网卡驱动 | 5.10.0-60.18.0 | 网卡驱动版本要适配宿主机内核版本 |
iperf3 | 3.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-N | Vlan接口 | 100.0.10.200 | |
Server-1 | 业务接口 | 100.0.10.10 | Mellanox 网卡接口 |
Server-2 | 业务接口 | 100.0.10.11 | Mellanox 网卡接口 |
Server-3 | 业务接口 | 100.0.10.12 | Mellanox 网卡接口 |
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
sonic# show counters queue 0/8
6 结论
由转发结果可以看出,经过队列3转发的RoCE流量未丢包,经过队列0转发的TCP流量由于带宽不足产生丢包。CX532P-N交换机可以通过RoCE功能实现网络无损传输。
点击了解Asterfusion CX-N数据中心交换机
如有其它问题,请填写需求表单联系我们