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。

#设置网卡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”,获取更多技术分享和最新产品动态。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/20440.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

车流量监控系统

1.项目介绍 本文档是对于“车流量检测平台”的应用技术进行汇总,适用于此系统所有开发,测试以及使用人员,其中包括设计背景,应用场景,系统架构,技术分析,系统调度,环境依赖&#xf…

MongoDB~存储引擎了解

存储引擎 存储引擎是一个数据库的核心,主要负责内存、磁盘里数据的管理和维护。 MongoBD的优势,在于其数据模型定义的灵活性、以及可拓展性。但不要忽略,其存储引擎也是插件式的存在,支持不同类型的存储引擎,使用不同…

导线防碰撞警示灯:高压线路安全保障

导线防碰撞警示灯:高压线路安全保障 在广袤的大地上,高压线路如同血脉般纵横交错,然而,在这看似平静的电力输送背后,却隐藏着不容忽视的安全隐患。特别是在那些输电线路跨越道路、施工等区域的路段,线下超…

顶点着色技术在AI去衣中的作用

在当今的数字时代,人工智能(AI)已经渗透到我们生活的方方面面,从智能家居到自动驾驶汽车,再到在线购物推荐。然而,AI的影响远不止于此。近年来,AI在图像处理和计算机视觉领域的应用取得了显著进…

c++字符串相关接口

c字符串相关接口 1.str2wstr(str转换wstr)2.wstr2str(str转换wstr)3.Utf8ToAsi(Utf8转换ANSI)4.AsiToUtf8(ANSI转换Utf8)5.stringformatA/stringformatW(按照指定的格式格式化字符串)6.GetStringBetween(获取cStart cEnd之间的字符串)7.Char2Int(char转int)8.Str2Bin(字符串转换…

视觉语言大模型llava学习

1. 拉取 https://github.com/haotian-liu/LLaVA 视觉语言大模型是人工智能领域一种重要的多模态模型,它结合了计算机视觉(CV)和自然语言处理(NLP)的技术,使得模型能够同时理解图像和文本信息。这类模型在多…

hadoop部署

需要3台机子,Linux为centos7 分别设置静态ip,设置主机名,配置主机名映射,配置ssh免密登入 hadoop1 192.168.1.7 hadoop2 192.168.1.8 hadoop3 192.168.1.9 vi /etc/sysconfig/network-scripts/ifcfg-ens33TYPE"Ethernet" PROX…

Kotlin 泛型

文章目录 定义泛型属性泛型函数泛型类或接口 where 声明多个约束泛型具体化in、out 限制泛型输入输出 定义 有时候我们会有这样的需求:一个类可以操作某一类型的对象,并且限定只有该类型的参数才能执行相关的操作。 如果我们直接指定该类型Int&#xff…

机器人抓取检测(Robot Grasping Detection)

目录 前言 一、物体检测 二、抓取点生成 三、运动规划 四、控制 五、总结 前言 机器人抓取检测(Robot Grasping Detection)是指通过计算机视觉和机器学习技术,自动识别并确定机器人如何抓取物体的一种技术。这个过程涉及多个步骤和关键…

【Python系列】Python 中方法定义与方法调用详解

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

详细介绍运算符重载函数,清晰明了

祝各位六一快乐~ 前言 1.为什么要进行运算符重载? C中预定义的运算符的操作对象只能是基本数据类型。但实际上,对于许多用户自定义类型(例如类),也需要类似的运算操作。这时就必须在C中重新定义这些运算符&#xff…

短信发送验证码及邮件发送验证码

发送短信验证码 阿里云发送验证码 public Integer sendTelCode(String tel) {String url "https://dfsns.market.alicloudapi.com/data/send_sms";String appcode "a3198282fbdf443d97aa9f3cfbe1232e";int code RandomUtil.randomInt(1000,10000);emai…

【DSP】xDAIS算法标准

1. 简介 在安装DSP开发支持包时,有名为 “xdais_7_21_01_07”文件夹。xDAIS全称: TMS320 DSP Algorithm Standard(算法标准)。39条规则,15条指南。参考文档。参考文章。 2. 三个层次 3.接口 XDAIS Digital Media。编解码引擎。VISA(Video&…

LeetCode前端刷题指南:探索四大领域,精通五大技能,掌握六大题型,运用七大策略

LeetCode前端刷题指南:探索四大领域,精通五大技能,掌握六大题型,运用七大策略 在前端开发的广阔领域中,刷题是提高自身能力、深入理解算法和数据结构的重要途径。LeetCode作为知名的在线刷题平台,为前端开…

牛客小白月赛95VP

早上蓝桥杯大寄&#xff0c;算是交了300元买了件T恤qaq 1.签到&#xff1a;https://ac.nowcoder.com/acm/contest/83687/A 下面是AC代码&#xff1a; #include<bits/stdc.h> using namespace std; int main() {int a,b;cin>>a>>b;if(ab) cout<<&quo…

简述你对 SPA 单⻚⾯的理解,它的优缺点分别是什么 ?

SPA&#xff08;Single-Page Application&#xff0c;单页应用&#xff09;是一种在Web开发中广泛使用的应用架构模式。它允许用户通过交互操作来更新页面的部分内容&#xff0c;而无需重新加载整个页面。以下是关于SPA的理解、优点和缺点的简要说明。 SPA的理解 SPA的核心思…

qi5uxeel算法分析流程记录libmsec.so

动态注册函数主要方法在so层。 libmsec.so 通过regsiterNative方法注册62个函数 加壳混淆ollvm动态反调试等你还能再恶心点不 分析流程定位关键点 算法设计SM4以及各类自定义签名算法 涉及到的知识包含Java C Android 完整混淆流程如下图&#xff0c; 不得不说你开发的…

微信小程序canvas画图使用百分比适配不同机型屏幕达到任何屏幕比例皆可!完美适配任何机型!指定canvas尺寸适配亦可!保证全网唯一完美

错误代码示例: // 在onLoad中调用 const that = this wx.getSystemInfo({success: function (res) {console.log(res)that.setData({model: res.model,screen_width: res.windowWidth/375,screen_height: res.windowHeight})} }) 我看到网上很多使用上面这种代码去适配,其…

C语言 指针——函数指针

目录 什么是函数指针&#xff1f; 函数指针的定义 定义函数指针时的常见错误 函数指针有什么用&#xff1f; 函数指针的主要应用 什么是函数指针&#xff1f; 函数指针 (Function Pointer) 就是指向函数的指针变量 数据类型 ( * 指针变量名 ) ( 形参列表 ); 例如&#x…

【回眸】牛客网刷刷刷(九) ——面试经验篇(含参考回答)

前言 度过了忙碌的4个月&#xff0c;经历了加班、筹备wedding、更新简历&#xff0c;终于有些许喘息时间。 下面的规划比较简单&#xff0c;一个是备考3个月后的雅思&#xff0c;一个是积累牛客网冲浪经验&#xff0c;最后一个是记录工作交接项。 牛客网刷刷刷这个系列也终于迎…