资讯详情

【RDMA】无损网络和PFC(基于优先级的流量控制)

前言

1.为什么会有拥塞?

二、PFC如何实现流控?

锁-toc">三、PFC死锁

四、利用ECN实现端到端拥塞控制

五、ECN交互过程

总结


原文:为什么我们需要RDMA?为何需要无损网络?https://www.sohu.com/a/258041228_100289134

(Priority-based Flow Control,流量控制基于优先级)

前言

RDMA技术:降低数据中心内部网络延迟,提高处理效率。

当前RDMA以太网上的传输协议是RoCEv2,RoCEv2.基于无连接协议UDP与面向连接的协议相比,面向连接的协议TCP协议,UDP协议更快,更占用CPU资源较少,但不同TCP该协议具有滑动窗口、确认响应等机制,以实现可靠的传输。一旦包丢失,依靠上层应用程序进行重新传输将大大降低RDMA传输效率。

所以,突破数据中心大规模分布式系统的网络性能瓶颈,,实现不丢包的关键是解决网络拥塞。

拥塞的原因有很多,以下是数据中心场景中的三个关键和常见原因:

1.收敛比

在设计数据中心网络架构时,从成本和收入两个方面考虑,大多数会采用不对称带宽设计,即上下链路带宽不一致。交换机的收敛比只是总输入带宽除以总输出带宽。

交换机A:下行带宽480G,上行带宽240G,整机收敛比为2:1

交换机B:下行带宽1200G,上行带宽800G,整机收敛比为1.5:1

也就是说,当当当联服务器上行承包总速率超过上行链路总带宽时,出现拥塞。

2.ECMP

目前,数据中心网络多采用Fabric并采用架构ECMP来构建多条等价负载的链路,并HASH选择链路转发很简单,但这个过程并没有考虑所选链路本身是否有拥塞。对于已经产生拥塞的链路,很可能会加剧链路的拥塞。

3.TCP Incast

TCP Incast是Many-to-One(多对一)这种通信模式经常发生在数据中心云化的大趋势下,尤其是那些Scale-Out分布式存储和计算应用包括Hadoop、MapReduce、HDFS等。

例如,当一个Parent Server当向一组节点(服务器集群或存储集群)发出请求时,集群中的节点同时收到请求,几乎同时响应,许多节点同时向机器发出请求(Parent Server)发送TCP数据流产生微突发流,使交换机连接Parent Server出口缓存不足,造成拥塞。

TCP Incast流量模型

正如前面所说,RDMA和TCP不同的是,它需要一个无损的网络。对于普通的微突然流量,交换机Buffer缓冲区可以起到一定的作用,在缓冲区排队等待突发报纸,但由于交换机的增加Buffer容量成本很高,所以它的作用有限。一旦缓冲区排队的报纸太多,仍然会丢包。

,避免在交换机中Buffer数据包丢失是由缓冲区溢出引起的,,避免丢包。

IEEE 802.1Qbb(Priority-based Flow Control,流量控制基于优先级)简称PFC,是流量控制的增强版。

说PFC以前,我们可以先看看IEEE 802.3X(Flow Control)流量控制机制:当接收人无法处理收到的报告时,为防止报告丢弃,接收人需要通知发送人暂时停止发送报告。

如下图所示,端口G0/1和G0/2以1Gbps当速率转发报纸时,端口F拥塞将发生在0/1。为避免报纸丢失,打开端口G0/1和G0/2的Flow Control功能。

端口产生拥塞的打流模型

当F0/1在转发报文出现拥塞时,交换机B会在端口缓冲区中排队报文,当拥塞超过一定阈值时,端口G0/2向G0/1发PAUSE帧,通知G0/1暂停发送报文。

? G0/1接收到PAUSE帧后暂时停止方向G0/2发送报纸。暂停时间长短信息由PAUSE帧携带。交换机A将在此超时范围内等待,或直到收到一个Timeout然后继续发送值为0的控制帧。

IEEE 802.3X该协议存在一个缺点:一旦链路被暂停,发送就不能再发送任何数据包。如果暂停是由一些优先级较低的数据流引起的,则链路上其他更高优先级的数据流也被暂停,这实际上超过了损失。

如下图中的报文分析所示,在基础流控IEEE 802.3X在扩展的基础上,

PFC协议报文结构分析

PFC流控粒度从物理端口细化到8个虚拟通道,分别对应Smart NIC硬件上的8个硬件发送队列(这些队列命名为Traffic Class,分别为TC0,TC1,...,TC7),在RDMA在不同的包装协议下,也有不同的映射方法。

? RoCEv1:

协议是将军RDMA数据段包装在以太网数据段,加上以太网头部,所以属于数据包。为了对其进行分类,只能使用VLAN(IEEE 802.1q)头部中的PCP(Priority Code Point)域3 Bits设置优先级。

二层以太网帧VLAN头部结构

这个协议是,加上UDP加上头IP头,最后加以太网头,属于数据包。它可以用于分类VLAN中的PCP也可以使用域IP头部的DSCP域。

三层IP报文头部结构

简单地说,在的情况下,。当下数据中心因多采用三层网络,因此使用DSCP比PCP更有优势。

虽然PFC基于队列的流控可以通过向不同的队列映射不同的优先级来实现,但也引入了新的问题,如PFC死锁问题。

PFC死锁是指当多个交换机因微环等原因同时拥堵时,各自的端口缓存消耗超过阈值,等待对方释放资源,导致所有交换机上的数据流永久堵塞的网络状态。

但在特殊情况下,例如发生链路故障或设备故障时,BGP路由重新收敛期间可能会出现短暂环路,会导致出现一个循环的缓冲区依赖。如下图所示,当4台交换机都达到XOFF水线,都同时向对端发送PAUSE帧,这个时候该拓扑中所有交换机都处于停流状态,由于PFC的反压效应,整个网络或部分网络的吞吐量将变为零。

PFC死锁示意图

即使在无环网络中形成短暂环路时,也可能发生死锁。虽然经过修复短暂环路会很快消失,但它们造成的死锁不是暂时的,即便重启服务器中断流量,死锁也不能自动恢复。

为了解除死锁状态,一方面是,另一方面则可以。锐捷RG-S6510-48VS8CQ上的Deadlock检测功能,可以检测到出现Deadlock状态后的一段时间内,忽略收到的PFC帧,同时对buffer中的报文执行转发或丢弃的操作(默认是转发)。

例如,定时器的监控次数可配置设置检测10次,每次10ms内检测是否收到PFC Pause帧。若10次均收到则说明产生Deadlock,对buffer中的报文执行默认操作,之后将设置100ms作为Recover时间后恢复再检测。命令如下:

priority-flow-control deadlock cos-value 5 detect 10 recover 100 //10次检测,100ms recover。

RDMA无损网络中利用PFC流控机制,实现了交换机端口缓存溢出前暂停对端流量,阻止了丢包现象发生,但因为需要一级一级反压,效率较低,所以需要更高效的、端到端的流控能力。

当前的RoCE拥塞控制依赖ECN(Explicit Congestion Notification,显式拥塞通知)来运行。ECN最初在RFC 3168中定义,网络设备会在检测到拥塞时,通过在IP头部嵌入一个拥塞指示器和在TCP头部嵌入一个拥塞确认实现。

(RFC:Request For Comments,缩写为RFC,是由互联网工程任务组(IETF)发布的一系列备忘录。)

RoCEv2标准定义了RoCEv2拥塞管理(RCM)。启用了ECN之后,网络设备一旦检测到RoCEv2流量出现了拥塞,会在数据包的IP头部ECN域进行标记。

IP报文头ECN字段结构

这个拥塞指示器被目的终端节点按照BTH(Base Transport Header,存在于IB数据段中)中的FECN拥塞指示标识来解释意义。换句话说,当被ECN标记过的数据包到达它们原本要到达的目的地时,拥塞通知就会被反馈给源节点,源节点再通过对有问题的Queue Pairs(QP)进行网络数据包的速率限制来回应拥塞通知。

ECN交互过程示意图

① 发送端发送的IP报文标记支持ECN(10);

② 交换机在队列拥塞情况下收到该报文,将ECN字段修改为11并发出,网络中其他交换机将透传;

③ 接收端收到ECN为11的报文发现拥塞,正常处理该报文;

④ 接收端产生拥塞通告,每ms级发送一个CNP(Congestion Notification Packets)报文,ECN字段为01,要求报文不能被网络丢弃。接收端对多个被ECN标记为同一个QP的数据包发送一个单个CNP即可(格式规定见下图);--(即对同一个QP的数据发送同一个CNP即可)

⑤ 交换机收到CNP报文后正常转发该报文;

⑥ 发送端收到ECN标记为01的CNP报文解析后对相应的流(对应启用ECN的QP)应用速率限制算法。

RoCEv2的CNP包格式如下:

CNP报文结构

值得注意的是,CNP作为拥塞控制报文,也会存在延迟和丢包,从发送端到接收端经过的每一跳设备、每一条链路都会有一定的延迟,会最终加大发送端接收到CNP的时间,而与此同时交换机端口下的拥塞也会逐步增多,若发送端不能及时降速,仍然可能造成丢包。建议拥塞通告域的规模不要过大,从而避免因为ECN控制报文交互回路的跳数过多,而影响发送端无法及时降速,造成拥塞。

总结

网络正是在网络中部署。PFC技术让我们可以对链路上RDMA专属队列的流量进行控制,并在交换机入口(Ingress port)出现拥塞时对上游设备流量进行反压。利用ECN技术我们可以实现端到端的拥塞控制,在交换机出口(Egress port)拥塞时,对数据包做ECN标记,并让流量发送端降低发送速率。

从充分发挥网络高性能转发的角度,我们一般建议通过,让ECN快于PFC触发,即网络还是持续全速进行数据转发,让服务器主动降低发包速率。如果还不能解决问题,再通过PFC让上游交换机暂停报文发送,虽然整网吞吐性能降低,但是不会产生丢包。

在数据中心网络中应用RDMA,不仅要解决转发面的无损网络需求,还要关注精细化运维,才能应对延迟和丢包敏感的网络环境

标签: k4fecn6电容器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台