基于RDMA网络的MMU水线设置步骤与应用实例

rdma(远程直接数据存取),以其对业务带来的高性能、低延时优势,在数据中心尤其是ai、hpc、大数据等场景得到了广泛应用。为保障rdma的稳定运行,基础网络需要提供端到端无损零丢包及超低延时的能力,这也催生了pfc、ecn等网络流控技术在rdma网络中的部署。在rdma网络中,如何合理设置mmu(缓存管理单元)水线是保证rdma网络无损和低延时的关键。本文将以rdma网络作为切入点,结合实际部署经验,分析mmu水线设置的一些思路。
什么是rdma?
rdma(remote direct memory access),通俗的说就是远程的dma技术,是为了解决网络传输中服务器端数据处理的延迟而产生的。
▲ 传统模式与rdma模式工作机制对比
如上图,在传统模式下,两台服务器上的应用之间传输数据,过程是这样的:
● 首先要把数据从应用缓存拷贝到kernel中的tcp协议栈缓存;
● 然后再拷贝到驱动层;
● 最后拷贝到网卡缓存。
多次内存拷贝需要cpu多次介入,导致处理延时大,达到数十微秒。同时整个过程中cpu过多参与,大量消耗cpu性能,影响正常的数据计算。
在rdma 模式下,应用数据可以绕过kernel协议栈直接向网卡写数据,带来的显著好处有:
● 处理延时由数十微秒降低到1微秒内;
● 整个过程几乎不需要cpu参与,节省性能;
● 传输带宽更高。
rdma对于网络的诉求
rdma在高性能计算、大数据分析、io高并发等场景中应用越来越广泛。诸如isici, san, ceph, mpi, hadoop, spark, tensorflow等应用软件都开始部署rdma技术。而对于支撑端到端传输的基础网络而言,低延时(微秒级)、无损(lossless)则是最重要的指标。
低延时
网络转发延时主要产生在设备节点(这里忽略了光电传输延时和数据串行延时),设备转发延时包括以下三部分:
● 存储转发延时:芯片转发流水线处理延迟,每个hop会产生1微秒左右的芯片处理延时(业界也有尝试使用cut-through模式,单跳延迟可以降低到0.3微秒左右);
● buffer缓存延时:当网络拥塞时,报文会被缓存起来等待转发。这时buffer越大,缓存报文的时间就越长,产生的时延也会更高。对于rdma网络,buffer并不是越大越好,需要合理选择;
● 重传延时:在rdma网络里会有其他技术保证不丢包,这部分不做分析。
无损
rdma在无损状态下可以满速率传输,而一旦发生丢包重传,性能会急剧下降。在传统网络模式下,要想实现不丢包最主要的手段就是依赖大缓存,但如前文所说,这又与低延时矛盾了。因此,在rdma网络环境中,需要实现的是较小buffer下的不丢包。
在这个限制条件下,rdma实现无损主要是依赖基于pfc和ecn的网络流控技术。
pfc
pfc(priority-based flow control),基于优先级的流量控制。是一种基于队列的反压机制,通过发送pause帧通知上游设备暂停发包来防止缓存溢出丢包。
▲ pfc工作机制示意图
pfc允许单独暂停和重启其中任意一条虚拟通道,同时不影响其它虚拟通道的流量。如上图所示,当队列7的buffer消耗达到设置的pfc流控水线,会触发pfc的反压:
● 本端交换机触发发出pfc pause帧,并反向发送给上游设备;
● 收到pause帧的上游设备会暂停该队列报文的发送,同时将报文缓存在buffer中;
● 如果上游设备的buffer也达到阈值,会继续触发pause帧向上游反压;
● 最终通过降低该优先级队列的发送速率来避免数据丢包;
● 当buffer占用降低到恢复水线时,会发送pfc解除报文。
rdma无损网络的关键技术:ecn
ecn(explicit congestion notification):显示拥塞通知。ecn是一个非常古老的技术,只是之前使用的并不普遍,该协议机制作用于主机与主机之间。
ecn是报文在网络设备出口(egress port)发生拥塞并触发ecn水线时,使用ip报文头的ecn字段标记数据包,表明该报文遇到网络拥塞。一旦接收服务器发现报文的ecn被标记,立刻产生cnp(拥塞通知报文),并将它发送给源端服务器,cnp消息里包含了导致拥塞的flow信息。源端服务器收到后,通过降低相应流发送速率,缓解网络设备拥塞,从而避免发生丢包。
通过之前的描述可以了解到,pfc和ecn之所以可以实现网络端到端的零丢包,是通过设置不同的水线来实现的。对这些水线的合理设置,就是针对交换机mmu的精细化管理,通俗讲就是对交换机buffer的管理。接下来我们具体分析下pfc的水线设置。
pfc水线设置
交换芯片都有固定的pipeline(转发流水线), buffer管理处于入芯片流程和出芯片流程的中间位置。报文处于在这个位置上时,已经知道了该报文的入口和出口信息,因此逻辑上就可以分成入方向和出方向分别对缓存进行管理。
pfc水线是基于入方向缓存管理进行触发的。芯片在入口方向提供了8个队列,我们可以将不同优先级的业务报文映射到不同的队列上,从而实现对不同优先级的报文提供不同的buffer分配方案。
▲ 队列buffer的组成部分
具体到每个队列,其buffer分配根据使用场景设计为3部分:保证缓存,共享缓存,headroom。
● 保证缓存:每个队列的专用缓存,确保每个队列均有一定缓存以保证基本转发;
● 共享缓存:流量突发时可以申请使用的缓存,所有队列共享;
● headroom:在触发pfc水线后,到服务器响应降速前,还可以继续使用的缓存。
保证缓存设置
保证缓存是一个静态水线(固定的、独享的)。静态水线的利用率非常低,资源消耗却非常大。我们在实际部署时建议不分配保证缓存,以减少这部分的缓存消耗。这样,入方向报文直接使用共享缓存空间,可提高buffer的利用率。
共享缓存设置
对于共享缓存的设置,需要采用更为灵活的动态水线。动态水线能根据当前空闲的buffer资源,以及当前队列已使用的buffer资源数量来决定能否继续申请到资源。由于系统中空闲共享buffer资源与已使用的buffer资源都是时刻变化的,因此阈值也处于不断变动中。相对于静态水线,动态水线能更灵活、有效的利用buffer及避免造成不必要的浪费。
锐捷网络交换机支持基于动态的方式进行buffer资源的分配,对共享缓存的设置分为11档,动态水线alpha值=队列可申请缓存量/剩余共享缓存量。队列的α值越大,其在共享缓存中可使用的百分数占比也就越高。
▲共享水线α值与可使用率对应关系
我们不妨分析一下:
队列的α值设置越小,其最大可申请的共享缓存占比就越小。当端口拥塞时就会越早触发pfc流控,pfc流控生效后队列降速,可以很好地保证网络不丢包。
但从性能的角度看,过早触发pfc流控,会导致rdma网络吞吐下降。因此我们在mmu水线设置时需要选取一个平衡值。
pfc水线到底设置多少,是一个非常复杂的问题,理论上不存在一个固定的值。实际部署时,需要我们具体分析业务模型,并搭建测试环境进行水线调优,找到匹配业务的最佳水线。
headroom设置
headroom:顾名思义,就是头部空间的意思,是在pfc触发后,到pfc真正生效这一段时间,用来缓存队列报文的。headroom设置多大合适?这里与4个因素有关:
● pg检测到触发xoff水线,到构造pfc帧发出的时间(这里主要跟配置的检测精度以及平均队列算法相关,固定配置是固定值)
● 上游收到pfc pause帧,到停止队列转发的时间(主要跟芯片处理性能有关系,交换芯片实际上是固定值)
● pfc pause帧在链路上的传输时间(跟aoc线缆/光纤距离成正比)
● 队列暂停发送后链路中报文的传输时间(跟aoc线缆/光纤距离成正比)
因此headroom所需要的缓存大小,我们可以根据组网的架构,以及流量模型测算得出。以100米光纤线 + 100g光模块,缓存64字节小包,计算出所需的headroom大小是408个cell(cell是缓存管理的最小单元,一个报文会占用1个或者多个cell),实际测试数据也吻合。当然,考虑一定的冗余性,headroom设置建议比理论值稍大。
rdma网络实践
锐捷网络在研发中心搭建了模拟真实业务的rdma网络,架构如下:
▲锐捷网络rdma组网架构
● 组网模型:大核心三级组网架构,核心采用高密100g线卡;
● pod内:spine采用提供64个100g接口的 box设备,leaf采用提供48个25g接口+8个100g接口的box设备;
● leaf作为服务器网关,支持和服务器间基于pfc流控(识别报文的dscp并进行pg映射),同时支持拥塞ecn标记;
● rdma仅运行于pod内部,不存在跨pod的rdma流量,因此核心无需感知rdma流量;
● 为了避免拥塞丢包,需要在leaf与spine之间部署pfc流控技术,同时spine设备也需要支持基于拥塞的ecn标记;
● leaf和spine设备支持pfc流控帧统计、ecn标记统计、拥塞丢包统计、基于队列的拥塞统计等,并支持将统计信息通过grpc同步到远端grpc服务器。
写在最后
锐捷网络在研发中心同样搭建了模拟真实业务的浸泡组网环境(包括rg-s6510、rg-s6520、rg-n18000-x系列25g/100g网络设备、大型测试仪、25g服务器)。在叠加了多种业务模型,并进行了长时间浸泡测试后,我们对于rdma网络的mmu水线设置已有一些推荐的经验值。此外,在rdma网络中,还存在一些部署难点,比如多级网络中 pfc风暴、死锁问题、ecn水线设计复杂问题等。对于这些问题,锐捷网络也有一些研究和积累,期待与大家共同探讨。


假焊的原因和解决方法
物联网作为国家五大新兴战略性产业之一,那么它的的本质究竟是什么?
国内动力电池装机排名持续波动,市场竞争进一步加剧
NVIDIA与滴滴宣布将合作开发自动驾驶和云计算解决方案
打造电力电子创新教学新高地,泰克REPERS解决方案交付河南工业大学
基于RDMA网络的MMU水线设置步骤与应用实例
数字电源系统管理如何消除盲点
电线接线端子的弊端_电线接线端子安全吗
曝谷歌或收购CRM服务提供商Salesforce 交易金额达到2500亿美元
虚拟货币二手矿机背后有什么
WCDMA标准化进展
全球招募丨第六届未来半导体产业发展大会演讲报名开启!
新品上线|鼎阳科技发布新一代SDS1000X HD系列高分辨率示波器
6P14小胆机制作,6P14 power amplifier
那些不按常理出牌的振荡电路
二极管的常见结构及伏安特性
68元工业级双核A7,全新T113核心板震撼上市!
数据中心机房配电设计原则
ESD静电保护二极管,焊接时,需要区分方向和极性?
大电流开关电源电路图大全(L296/DC-DC变换/CF8865)