锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

RDMA之无损网络

时间:2023-12-13 14:07:02 k4fecn6电容器

1、why

为什么我们需要它?RDMA?

为什么我们需要无损网络?

这些先进的技术能给我们带来什么好处?

从网络层面来看,你可能无法得到令人满意的答案。以下是前端业务和后端应用程序的简要例子。我相信你可以解决你的疑虑。

如今,互联网上有大量的在线业务,如在线搜索、购物、直播等,需要以非常快的速度响应高频用户请求。数据中心的任何链接都会导致延迟,这将对终端用户的访问体验产生很大的影响,从而影响其流量、声誉、活跃用户等。还有机器学习和AI在技术趋势下,对计算能力的需求呈几何级数上升。为了满足日益复杂的神经网络和深度学习模型,数据中心将有大量的分布式计算集群,但大量的平行程序通信延迟将极大地影响整个计算过程的效率。

另外为了解决数据中心内爆炸式增长的数据存储和读取效率问题,利用以太网融合组网的分布式存储越来越受到欢迎。但因为存储网络中数据流以大象流为主,所以一旦因拥塞造成丢包,将会引发大象流重传,不仅降低效率,还会加重拥塞。

因此,从前端用户的体验和后端应用的效率来看,目前对数据中心网络的要求是:延迟越低越好,效率越高越好。

为减少数据中心内部网络的延迟,提高处理效率,RDMA技术应运而生,通过允许用户态的应用程序直接读写远程内存,而无需CPU多次复制内存,绕过内核直接向网卡写数据,实现高吞吐量、超低延迟和低延迟CPU开销的效果。

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

所以要发挥RDMA要突破数据中心大规模分布式系统的网络性能瓶颈,必然是真正的性能RDMA建立一套不丢包的无损网络环境,实现不丢包的关键是解决网络拥塞。

2.为什么会有拥塞?

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

1.收敛比(总输入带宽/总输出带宽)

在设计数据中心网络架构时,从成本和收入两个方面考虑,大多数会采用不对称带宽设计,即上下链路带宽不一致。交换机的收敛比只是总输入带宽除以总输出带宽。下行服务器输入的带宽为48*10G=480G,向上输出的带宽为6*40G=240G,整机收敛比为2:1。下行服务器输入的带宽为48*25G=1200G,向上输出的带宽为8*100G=800G,整机收敛比为1.5:1。也就是说,当当当联服务器上行承包总速率超过上行链路总带宽时,出现拥塞。

2.ECMP(ECMP构建多条等价负载链路,HASH选择在拥塞链路发送加剧拥塞)

目前,数据中心网络多采用Fabric并采用架构ECMP通过设置扰动因子,构建多个等价负载均衡的链路HASH转发选择链路很简单,但在此过程中没有考虑所选链路本身是否有拥塞。ECMP没有拥塞感知机制,只是将流量分散到不同的链路上进行转发,这很可能会加剧已经产生拥塞的链路的拥塞。

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由于缓冲区溢出造成的数据包丢失,交换机必须引入其他机制,如流量控制,以减少交换机Buffer避免丢包的压力。

3、流控

1、流控发展

FC(整个链路流控)-->PFC(基于优先级流控)-->PFC ECN(流控发生前避免拥塞)/PFC ETS(分配带宽) ECN)

IEEE 802.1Qbb(Priority-based Flow Control,流量控制基于优先级)简称PFC,是IEEE桥接数据中心(Data Center Bridge)协议系列中的一项技术是流量控制的增强版。

2、FC(Flow Conrol 整个链路流控)

如下图所示,端口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该协议存在一个缺点:一旦链路被暂停,发送就不能再发送任何数据包。如果暂停是由一些优先级较低的数据流引起的,则链路上其他更高优先级的数据流也被暂停,这实际上超过了损失。

3、PFC(基于优先级流控)

PFC在基础流控IEEE 802.3X在扩展的基础上,允许在以太网链路上创建8个虚拟通道,并为每个虚拟通道指定相应的优先级,允许任何虚拟通道单独暂停和重启,其他虚拟通道的流量不中断。如下图所示:

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

? RoCEv1:

这个协议是将RDMA数据段包装在以太网数据段,加上以太网头部,属于二层数据包。为了分类,只能使用VLAN(IEEE 802.1q)头部中的PCP(Priority Code Point)域3 Bits设置优先级。二层以太网帧VLAN头部结构:

RoCEv2:

协议是将军RDMA首先包装数据段UDP添加数据段UDP加上头IP头部,最后加以太网头部,属于三层数据包。它可以用于分类VLAN中的PCP也可以使用域IP头部的DSCP域。三层IP报文头部结构:

简单来说,在二层网络的情况下,PFC使用VLAN中的PCP在三层网络的情况下,位来区分数据流,PFC既可以使用PCP、也可以使用DSCP,使不同的数据流能够享受到独立的流量控制。目前,由于三层网络多用于数据中心,因此使用它DSCP比PCP更有优势。

4、PFC存在的问题

1、死(PFCdeadlock)

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

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

正常情况下,当交换机端口堵塞并触发时XOFF水线时,即下游设备将发送PAUSE接收上游设备的帧反压PAUSE帧后停止发送数据,如果上游设备本地端口缓存消耗超过阈值,则继续向上游反压。直到网络终端服务器在这样一级反压PAUSE帧中指定Pause Time内部暂停发送数据,以消除网络节点因拥堵而丢失的包。

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

(BGP(Border Gateway Protocol,边界网关协议用于连接Internet独立系统的路由选择协议。PFC锁示意图:

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

为了消除死锁状态,一方面要消除数据中心中的环路,另一方面要通过网络设备的死锁检测功能来实现。RG-S6510-48VS8CQ上的Deadlock可以检测到检测功能Deadlock状态后的一段时间内,忽略收到的PFC帧,同时对buffer转发或丢弃报文(默认为转发)。

例如,定时器的监0次定时器监控次数,每次10次ms内部检测是否收到PFC Pause帧Deadlock,对buffer默认操作中的报纸,然后设置100ms作为Recover时间后恢复检测。命令如下:

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

RDMA在无损网络中使用PFC流量控制机制在交换机端口缓存溢出前暂停对端流量,防止包装丢失。但由于需要一级反压,效率低,需要更高效、端到端的流量控制能力。

2、拥塞传播

<>

3、PauseStorm

由于PFC pause是传递的,所以很容器引起pause frame storm。比如,NIC因为bug导致接收缓冲区填满,NIC会一直对外发送pause frame。需要在NIC端和交换机端使用watchdog机制来防止pause storm。

1,服务器0的NIC发生故障,不断向其ToR交换机发送暂停帧;

2. ToR交换机依次暂停所有其余端口,包括到Leaf交换机的所有上游端口。

3.叶子交换机暂停脊椎交换机;

4. Spine交换机暂停其余的Leaf交换机;

5.其余的叶子交换机暂停其ToR交换机;

6. ToR交换机会暂停连接到它们的服务器。

       PFC风暴问题的根本原因是NIC的接收管道中存在错误。 该错误使NIC无法处理收到的数据包。 结果,NIC的接收缓冲区已满,并且NIC一直一直发出暂停帧。

翻译原文:https://blog.csdn.net/qq_21125183/article/details/104637777

英文原文:https://www.microsoft.com/en-us/research/wp-content/uploads/2016/11/rdma_sigcomm2016.pdf

https://www.cnblogs.com/zafu/p/10804005.html

4、不公平问题

如上图 a),交换机上两个流入端口有数据流向同一个流出端口:Ingress 1 携带 Flow 1,Ingress 2 携带 Flow 2 和 3。

图 b) 触发了 PFC Pause,Ingress 1 和 2 同时暂停发送。

图 c) Egress 1 队列空闲,通知 Ingress 1 和 2 恢复发送。

图 d) 由于 Ingress 1 和 2 是同时暂停和恢复的,Flow 2 和 3 需要竞争 Ingress 2,导致 Flow 1 始终能够获得比 Flow 2 或 3 更高的带宽,出现了不同 Flow 带宽分配不公平。

5、Head-of-Line 堵塞问题


如上图 a),Flow 1 和 Flow 2 从同一个 Ingress 1 流向不同的 Egress 1 和 2。 

图 b),Egress 1 触发了 PFC Pause,Ingress 1 暂停发送。Flow 2 并不需要经过 Egress 1,却受其影响也被暂停了。

原文:https://zhuanlan.zhihu.com/p/257228128
 

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

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

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

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

 五、ECN交互过程

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

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

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

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

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

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

RoCEv2的CNP包格式如下:

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

总结

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

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

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

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

相关文章