Easy RoCE:在SONiC交换机上一键启用无损以太网

RDMA(远程直接内存访问)技术是一种绕过 CPU 或操作系统,在计算机之间直接传输内存数据的技术。它释放了内存带宽和 CPU,使节点之间的通信具有更低的延迟和更高的吞吐量。目前,RDMA 技术已广泛应用于高性能计算、人工智能工作负载、存储和许多其他场景。

1、RoCEv2对网络的需求和挑战

RoCEv1 基于以太网链路层实现,通过交换机上的流量控制技术确保物理层的可靠传输。RoCEv2 在 UDP 层之上实现,弥补了 InfiniBand 的一些局限性,支持更广泛的 RDMA 应用。

与 TCP 协议相比,UDP 速度更快,消耗的资源更少,但没有TCP的滑动窗口和确认响应等机制来确保可靠传输。在 RoCEv2 网络中,如果出现数据包丢失,网卡将丢弃所有收到的数据包,而发送方需要重新传输所有后续数据包,导致网络传输性能大幅下降。因此,我们通常使用 PFC(优先级流量控制)和 ECN(显式拥塞通知)等功能来保证可靠性。

在以太网交换机上配置上述功能需要熟悉 QoS 机制、配置逻辑和相关命令行。对于长期为客户配置 RoCEv2 网络的工程师来说,这可能并不困难。但对于大部分从事高性能计算和存储领域的技术人员,他们通常专注于服务器侧的相关技术,这种相对复杂的,但又必须调通的网络配置给他们带来了很多麻烦,甚至以往运维过IB网络的工程师也需要花时间学习相关知识。

2、在SONiC交换机上用常规步骤配置无损以太网

现在让我们快速回顾一下如何在SONiC交换机上按常规方法配置 RoCEv2 无损以太网。这里使用的是星融元CX-N系列超低时延交换机,搭载SONiC企业级发行版AsterNOS3.1 R0405P01版本,但没有使用其上的 EasyRoCE 功能。

在部署 RoCEv2 网络时,务必首先确认网络硬件条件:低延迟网络交换机需要能支持 PFC 和 ECN 等功能,服务器侧的网卡也需要支持 RoCEv2 。常规步骤下:

  1. 启用和取消需要分别配置 PFC 和 ECN。
  2. 故障排除或状态检查通常需要进入不同的命令行视图并多次执行 "show "命令,以确定当前队列映射、缓冲区、启用的队列、阈值、队列吞吐量、暂停和 CNP 触发器。

第一步,确保服务器网卡工作在 RoCEv2 模式下,为业务流量配置 PCP 或 DSCP,并启用 ECN。

bash 复制代码
#设置网卡RDMA CM的工作模式
[root@server ~]# cma_roce_mode -d mlx5_0 -p 1 -m

#设置网卡的优先级类型为DSCP
[root@server ~]# mlnx_qos -i enp1s0f0 --trust=dscp
DCBX mode: OS controlled
Priority trust state: dscp

#在队列3上开启PFC
[root@server ~]# mlnx_qos -i enp1s0f0 -f 0,0,0,1,0,0,0,0

#在队列3上开启DCQCN
[root@server ~]# echo 1 > /sys/class/net/enp1s0f0/ecn/roce_np/enable/3
[root@server ~]# echo 1 > /sys/class/net/enp1s0f0/ecn/roce_rp/enable/3

#设置CNP DSCP
[root@server ~]# echo 48 >

然后,在交换机端口配置以启用 PFC 和 ECN 功能并指定队列。您需要在以太网交换机的指定队列(需与服务器上的队列匹配)上启用 PFC 和 ECN,并调整缓冲区和阈值。

bash 复制代码
# 设置PFC门限值
sonic(config)# buffer-profile pg_lossless_100000_100m_profile
sonic(config-buffer-profile-pg_lossless_100000_100m_profile)# mode lossless dynamic -2 size 1518 xon 0 xoff 46496 xon-offset 13440
sonic(config-buffer-profile-pg_lossless_100000_100m_profile)# exit


# 在3、4队列开启PFC功能(AsterNOS的PFC功能默认使能3、4队列,无需配置)
sonic(config)# priority-flow-control enable 3
sonic(config)# priority-flow-control enable 4
sonic(config)# exit

# 设置ECN门限值
sonic(config)# wred roce-ecn
sonic(config-wred-roce-ecn)# mode ecn gmin 15360 gmax 750000 gprobability 10
sonic(config-wred-roce-ecn)# exit

# 配置Diffserv map
sonic(config)# diffserv-map type ip-dscp roce-dmap
sonic(config-diffservmap-roce-dmap)# ip-dscp 48 cos 6

# 配置Class map
sonic(config)# class-map roce-cmap
sonic(config-cmap-roce-cmap)# match cos 3 4
sonic(config-cmap-roce-cmap)# exit

# 配置Policy map
sonic(config)# policy-map roce-pmap
sonic(config-pmap-roce-pmap )# class roce-cmap
sonic(config-pmap-c)# wred roce-ecn
sonic(config-pmap-c)# priority-group-buffer pg_lossless_100000_100m_profile
sonic(config-pmap-c)# exit
sonic(config-pmap-roce-pmap )# set cos dscp diffserv roce-dmap
sonic(config-pmap-roce-pmap )# exit

# 进入以太网接口视图,绑定策略,将RoCE网络配置在接口上使能
sonic(config)# interface ethernet 0/0
sonic(config-if-0/120)# service-policy roce-pmap

3、使用AsterNOS上的Easy RoCE快捷配置无损以太网

星融元在 AsterNOS 上推出了 "EasyRoCE" 功能,该功能将无损以太网相关的配置命令行进行了封装和模板化,大大简化了RoCEv2网络配置和部署流程。请注意,以下命令行仅简单展示交换机上与该功能相关的部分关键配置,完整的验证演示流程请参考文末视频。

一键启用无损以太网

故障排除或状态检查

AsterNOS 的 Easy RoCE 功能支持 show roce 命令行,用于一站式查看全局或接口视图的RoCE 配置和计数,以及清除所有配置和计数。

bash 复制代码
# 检查RoCE配置
sonic# show qos roce
# 查看特定接口的计数
sonic# show counters qos roce interface 0/0 queue 3
# 清除全部计数
sonic# clear counters qos roce

自动化配置和网络可见性

上述命令可帮助您快速配置无损以太网,如果您需要微调参数,Easy RoCE也支持自定义更改设备提供的默认模板,该模板也可通过上层管理平台向设备下发。

基于 AsterNOS 的开放式架构,我们还开发了一个容器化部署的 roce_exporter,用于提取设备 RoCE 相关信息,并与 Prometheus 无缝对接以提高网络可见性。

快速配置RoCEv2无损以太网

关注vx公号"星融元Asterfusion",获取更多技术分享和最新产品动态。

相关推荐
幽兰的天空9 小时前
介绍 HTTP 请求如何实现跨域
网络·网络协议·http
lisenustc9 小时前
HTTP post请求工具类
网络·网络协议·http
心平气和️9 小时前
HTTP 配置与应用(不同网段)
网络·网络协议·计算机网络·http
心平气和️9 小时前
HTTP 配置与应用(局域网)
网络·计算机网络·http·智能路由器
Mbblovey10 小时前
Picsart美易照片编辑器和视频编辑器
网络·windows·软件构建·需求分析·软件需求
北顾南栀倾寒11 小时前
[Qt]系统相关-网络编程-TCP、UDP、HTTP协议
开发语言·网络·c++·qt·tcp/ip·http·udp
GZ_TOGOGO11 小时前
PIM原理与配置
网络·华为·智能路由器
7ACE11 小时前
Wireshark TS | 虚假的 TCP Spurious Retransmission
网络·网络协议·tcp/ip·wireshark·tcpdump
大丈夫立于天地间12 小时前
ISIS基础知识
网络·网络协议·学习·智能路由器·信息与通信
hgdlip12 小时前
IP属地与视频定位位置不一致:现象解析与影响探讨
服务器·网络·tcp/ip