搞网络技术的朋友都懂,有时候一个实验卡壳,能让人茶饭不思、夜不能寐。
我们前面已经用Arista vEOS这个纯软件镜像,跑通了Underlay网络(四路ECMP玄机:用BGP玩转智算网络迷宫),跑通了Overlay网络(从零搭建EVPN/VXLAN网络:4-Spine架构下的高性能Overlay完全配置指南,打通智算中心任督二脉),测试了Clos架构的大规模集群(挑战极限!4-Spine+12-Leaf超大规模BGP/EVPN集群收敛性能的”终极考验”实战),以及使用Border Leaf架构集成外网出口(从东西向到南北向:Border Leaf如何实现智算中心网络的”全向通达”)。
但Arista vEOS的转发代理主要是为了跑通协议逻辑,无法完美模拟出ASIC级别的队列挤压和PAUSE帧产生机制过程,导致我们后续多次RoCE实验屡战屡败(ECN配置折戟记:vEOS模拟器局限性深度剖析),就像竹篮打水一场空。
就在最近,我又看到了新的希望。
首先,是EmulatedLab社区(EVE-NG中国区官方代理)管理员再次联系我,表示可以赞助我一套Pro版授权,有效期一年,方便后续展示更高级的实验效果。这简直就是久旱逢甘霖啊!
目前专业版的最新版本为6.4.0-78,相比于社区版6.2.0-4,支持热插拔连接、支持节点与性能限制、支持模拟链路质量、支持多用户隔离与权限、内置Wireshark与HTML5桌面等全新特新;同时还做了大量优化。
激动的心,颤抖的手,天赐良缘,准备动手!
第一步,考虑到之前的社区版的部署经验,我们本次将专业版的虚拟机规格调整为40核CPU,给ESXi主机保留8核资源,提升底层平台稳定性;内存依旧分配96 GB,但是预留全部内存,这样我们就可以关闭KSM(Kernel Samepage Merging)内存去重了,内存资源非常充裕,不需要再用CPU去换内存,关闭KSM能换取更纯净的实验环境;磁盘就简简单单分上600 GB就OK了,余粮不多了。
当然,为了提升虚拟机性能,我们还可以在虚拟机设置的【高级】选项中,将【延迟敏感度】设置为【高】,据说能大幅提升虚拟机对资源的调用优先级。
然后就开始部署了,操作很简单,按几次回车就行,非常简单。但是部署时间很长,整体耗时差不多40分钟,堪比守株待兔,但好饭不怕晚。
在配置EVE-NG初始化配置时要注意,上面填完之后直接按两次回车就行,不要将光标移动到最下面一行,这样会选择【Quit】退出,上面就白填了。
然后,等待系统重启应用配置就行了。
等待系统启动完成之后,我们进入WEB控制台,单击顶部【Licensing】下的【License Request】,获取授权请求码。
在这个页面,还用了一半的篇幅介绍怎么配置CPU来提升模拟环境性能。
下半部分是关于授权的使用说明,大概意思就是说一个授权可以在多台设备上使用,但是要遵循相关规定。单击【Continue】,就能进入到请求码页面了。
单击【Copy Code】,记录请求码用于申请授权。
拿到授权之后,单击顶部【Licensing】下的【License Upload】,粘贴授权码,单击【Upload】提交。
然后,还是在顶部【Licensing】下面,选择【License Details】,可以查看授权状态。
可以看到,授权有效期1年,支持两个管理员帐号。不过按照袋里的说法,这里展示的不一定准确,要确认生效还得到命令行进一步确认,显示Valid才是真正生效了。
unl_wrapper -a dummy
有了专业版,推荐首先进入【System】下的【System Settings】,有个Template Visibility选项,配置Unprovisioned images为【Hide】,指的就是将没有导入的不可用镜像隐藏,方便我们更快找到已经导入的镜像。
然后就是到【System】下的【System Status】,关闭KSM和CPULimit。
关闭KSM我们开头已经介绍过了,那为啥还要关闭CPULimit呢?
CPULimit的作用就是强制限制某个进程(通常是QEMU进程)所能使用的最大CPU百分比,它会在CPU达到阈值时硬性挂起进程,导致模拟出的吞吐量断崖式下跌,甚至引起协议报文超时。RDMA模拟在处理高并发流量时,需要瞬间突发的CPU处理能力。此时CPULimit引入的调度延迟会让我们在RoCE环境下测得的RTT数据变得毫无意义。
更建议的做法是,依靠专业版的CPU Pinning功能,将特定节点绑定到固定的物理核心上,既能防止某个镜像占用过多资源影响宿主机,又能保证该节点的CPU响应是实时的、无干扰的。
当然,在新的Pro版平台上,我也想换上更新的Arista vEOS 4.35.2F镜像,再试试能不能跑。
理想很丰满,现实很骨感。又是空欢喜一场,上来就被浇了一桶冷水,现在看来,要放弃Arista vEOS了。
不过,接下来,就是我的第二个新希望:Nvidia Cumulus VX 5.15.1。众所周知,Nvidia收购了Mellanox,强强联手把GPU跟算力网融合成一体,IB网络就是他家的。理论上讲Nvidia Cumulus VX一概可以支持RoCE,到底行不行能?我们测试一下!
在添加设备时,系统默认分配的1 GB内存根本不够用,正常启动就用到1393 MB了,需要调大,比如配置为4096 MB。同时,CPU也给分配2核。
接下来,我们测试一遍RoCE配置命令。
1、开启全局RoCE无损模式,并分配无损缓存流量池,内存比例配置为50 %。
nv set qos roce state enabled
nv set qos roce mode lossless
nv set qos traffic-pool roce-lossless memory-percent 50
漂亮,没有报错。开始配置优先级映射,这是实现无损网络最关键的一步,将RDMA的DSCP标记映射到硬件交换优先级3。
nv set qos mapping ROCE_MAP trust both
nv set qos mapping ROCE_MAP dscp 24 switch-priority 3
nv set qos mapping ROCE_MAP dscp 26 switch-priority 3
nv set qos egress-queue-mapping default-global switch-priority 3 traffic-class 3
稳稳当当。接下来,我们创建可复用的配置文件,定义PFC与ECN,也就是卡死Arista vEOS的配置。
nv set qos pfc ROCE_PFC_PROF switch-priority 3
nv set qos pfc ROCE_PFC_PROF tx enable
nv set qos pfc ROCE_PFC_PROF rx enable
nv set qos congestion-control ROCE_ECN_PROF traffic-class 3 ecn enable
nv set qos congestion-control ROCE_ECN_PROF traffic-class 3 min-threshold 150000
nv set qos congestion-control ROCE_ECN_PROF traffic-class 3 max-threshold 300000
nv set qos congestion-control ROCE_ECN_PROF traffic-class 3 probability 100
过瘾啊,就这么顺顺利利的配上了?一气呵成,颇有庖丁解牛的感觉。下一步,我们将上述逻辑应用到物理网口,并调整MTU为RDMA推荐的巨型帧,在执行生效。
nv set interface swp1 link state up
nv set interface swp1 link mtu 9000
nv set interface swp1 qos mapping profile ROCE_MAP
nv set interface swp1 qos pfc profile ROCE_PFC_PROF
nv set interface swp1 qos congestion-control profile ROCE_ECN_PROF
nv config apply
nv config save
成了!目前看Nvidia Cumulus VX这个镜像还是很稳的。
最后,我们做一下简单的配置验证。
检查RoCE全局状态,展示为enable。
nv show qos roce
检查无损队列映射,确认我们配置的DSCP 24/26映射到了预期的优先级上。
nv show qos mapping ROCE_MAP
nv show qos egress-queue-mapping default
检查ECN配置的红、绿、黄报文标记阈值是否生效:
nv show qos congestion-control ROCE_ECN_PROF
查看接口是否正确绑定了PFC和ECN的配置文件。
nv show interface swp1 qos
查看PFC是否在优先级3上开启了发送和接收使能:
nv show qos pfc ROCE_PFC_PROF
美滋滋啊,数据中心的实验终于可以接着搞了!
至此,EVE-NG专业版 + Nvidia Cumulus VX的RoCE实验环境终于搭建完成。回顾这一路,从Arista vEOS的屡屡碰壁,到Cumulus VX的顺风顺水,真可谓有志者,事竟成,百二秦关终属楚。
如果你也在折腾RDMA或RoCE实验,欢迎在评论区聊聊你踩过的坑。
声明:来自铁军哥,仅代表创作者观点。链接:https://eyangzhen.com/6661.html