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 。常規步驟下:
- 啟用和取消需要分別配置 PFC 和 ECN。
- 故障排除或狀態檢查通常需要進入不同的命令行視圖并多次執行 “show “命令,以確定當前隊列映射、緩沖區、啟用的隊列、閾值、隊列吞吐量、暫停和 CNP 觸發器。
第一步,確保服務器網卡工作在 RoCEv2 模式下,為業務流量配置 PCP 或 DSCP,并啟用 ECN。
#設置網卡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,并調整緩沖區和閾值。
# 設置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 配置和計數,以及清除所有配置和計數。
# 檢查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”,獲取更多技術分享和最新產品動態。