【RoCE】拥塞控制机制(ECN, DC-QCN)
时间:2022-11-14 19:00:01
1.网络拥塞问题
网络拥塞发生在网络交换机中,当入口流量大于出口流量的带宽时。一个典型的例子是多个发送方同时向同一目的地发送网络数据。交换机缓存可处理临时拥塞,但当拥塞过长时,交换机缓存会过载。当交换机缓存过载时,下一个收到的新数据包将被丢弃。由于重传和传输协议的复杂性,丢包会降低应用性能。无损网络实现了流量控制机制,可以在缓存溢出前暂停入口流量,防止包装丢失。然而,流量控制本身会导致拥塞传播问题。
考虑以下图表,了解拥塞传播问题。假设交换机1上的端口A到达E将网络数据包发送到端口G,使端口G以100%的能力接收和转发数据。假设相邻的交换机2端口F也在向交换机1端口G发送数据,速度为整个链路带宽的20%。由于端口G的出口已满载,端口F将重机制暂停之前,端口F将重传数据包。此时,端口G将会出现拥塞,然而此时没有负效应,因为所有的端口都会被端口G尽快的服务。
现在考虑交换机2上的端口X,以链路带宽的20%速度向交换机1端口Y发送数据。端口G不在端口X到端口Y的路径上。在这种情况下,您可能会认为端口F只使用交换机间链路的20%带宽,剩余的80%带宽可用于端口X。然而,事实并非如此,因为端口F的流量最终触发了流量控制机制,暂停了交换机之间的链路,并将端口X的流量降低到20%,而不是潜在的80%带宽。
2.拥塞控制
拥塞控制用于减少损坏网络或无损网络中的包装丢失。它还减少了交换机缓存的占用,从而减少了延迟和改善突发流量的容忍度。该方法限制了导致拥塞的根本原因(A-F)其他端口的网络流注入速率(X)发送的网络流不会受到影响。限制端口A-F端口G可以处理注入速率,端口GA-F不应观察性能明显下降(毕竟,他们的数据包必须等待),但从端口X到端口Y发送的数据包应能够正常转发,因为流量控制机制不会发送暂停帧(拥塞控制的目的是保持交换机缓存占用率低,因此不会触发流量控制机制)。当前的RoCE拥塞控制依赖于显式拥塞通知(Explicit Congestion Notification, ECN)来运行。
3.Explicit Congestion Notification(ECN)
ECN最初在RFC 3168文档为TCP/IP通过协议定义IP头部嵌入一个拥塞指示器,TCP头部嵌入一个拥塞确认实现。兼容ECN当检测到拥塞时,交换机和路由器标记网络数据。IP头部拥塞指示也可用于头部拥塞指示RoCEv2.拥塞控制。IP头部前四帧的格式:
下面是整个IP头部帧格式:
4.RoCEv2 的拥塞管理
RoCEv2标准定义了RoCEv2拥塞管理(RCM)。RCM它提供了避免拥堵热点和优化链路吞吐量的能力。启用了RCM之后,链路上的早期拥堵将向网络流源报告,然后网络流源将降低其注入速率,从而防止链路上缓存饱和,增加排队延迟的负面影响。拥塞管理与共存TCP/UDP/IP流量也是相关的。然而,假设是对的RoCEv2.其他流量使用不同的优先级,每个优先级都有一个带宽分布。拥塞和拥塞反映(指网络源对拥塞的动作)的效果不应相互影响。
发出拥塞信号,RCM依赖于RFC 3168中定义的ECN机制。一旦RoCEv2流量拥塞,网络设备在数据包中IP头部对ECN标记域。该拥塞指示器的目的终端节点BTH(Base Transport Header,存在于IB在数据段)中FECN解释拥塞指示标志的意义。换句话说,当被ECN当标记的数据包到达原目的地时,拥塞通知将反馈给源节点,然后通过有问题的源节点QP对拥塞通知进行网络数据包的速度限制。
RCM是可选的规范行为。RCM的RoCEv2主机通道适配器应按以下规则运行:
- 当收到有效的RoCEv当数据包时,它的IP.ECN如果域值为11(二进制),则该主机通道适配器应产生一个RoCEv2的CNP,送回收到的包的源节点(格式如下)。该主机通道适配器应用于多个被子ECN标记相同QP发送单个数据包的数据CNP即可。
- 当收到一个RoCEv2的CNP主机通道适配器应对RoCEv2 CNP中标记的QP减缓注入速率。该速率的总变化由可配置的速率减缓参数决定。
- 当被ECN标记的QP最近收到的RoCEv2 CNP主机通道支配器应在可配置的暂停时间或超过已发送的可配置字节数后增加包QP网络注入率。
RoCEv2的CNP包装格式如下:
5.拥塞控制环路
RoCEv2的拥塞控制环路如下:
1.注入端必须在IP头部设置ECN值,可选值如下(ECT是ECN-Capable Transport):定义在RFC 3168中
注入端网卡设置IP头部的ECN值为ECT(0)(10),注意,ECT(1)和ECT(0)不可交换。
2.RoCEv将数据包注入网络。
3.当路由器在拥塞队列上收到数据包时,它不会立即丢弃,可能会先检查ECN确定域是否开启ECN如果是,功能就在IP头部打开CE位。
4.拥塞时,正常转发的数据包从网络到接收方。
5.接收方将打开CE位且类型为RoCE的数据包进行过滤,触发事件,然后再将数据包释放到正常处理流程中。
6-7.为避免流量负载,接收方应针对每个人QP聚集产生的拥塞通知。 在几秒钟内将一个CN将数据包发送回注入方QP上。在数据包中ECN将数据包设置为‘01’,以验证该数据包未被设置IP丢失路由器。IBA的BTH头部将按上述格式定义。
8.CNP包从接收方回注到网络。
9.IP路由器将IB的CNP包视为普通IP数据包。
10.CNP包到达源注入方节点。注入方节点ECN类型为01RoCE过滤数据包,然后限制指示的网络流应用速率。
6.量化拥塞通知(Quantized Congestion Notification,QCN)
量化拥塞通知IEEE标准(802.Qau)以限带宽延迟的以太网网络为长期保存的网络流提供了拥塞控制。这是IEEE桥接数据中心(DCB)协议套件的一部分还包括ETS,PFC,和DCBX。QCN在二层以太网络上制定并实现硬件。QCN适用于所有以太网帧和所有传输,标准中还详细规定了主机和交换机的行为。QCN可适用于配置和信息提取mlnx_qcn命令。
7.DC-QCN算法
DC-QCN基于数据中心的算法TCP(DCTCP)与微软研究院合作开发的量化通知算法。最初的算法是SIGCOMM'15论文"Congestion control forlarge scaleRDMA deployments"中提出。DC-QCN算法依赖于交换机端的算法ECN标记。ECN是商用数据中心交换机的一般特点。在数据包IP头部检查服务域的两个比特用于提示拥塞。一旦交换机出现拥塞,这两个比特就被置于"11"(CE)。
标记拥塞是队列长度的概率函数,如下图所示。队列长度的两个门限定义了标记概率。当队列长度低于门限下限时,ECN位置不会标记。当队列长度超过门限值上限时,所有从队列传输的网络包都将被标记。ECN标记。当队列长度在两个门限值之间时,数据包将以与队列长度线性增长的概率进行ECN标记。
带有ECN标记的数据包传播到接收方的网卡上。接收方网卡创建一个CNP并发送给它ECN发送标记的数据包。CNP包括标记的数据QP的信息。当CNP当被发送方的网卡收到时,它将基于下面描述的算法减少指定QP传输速率。
DC-QCN下图描述了降速算法。简而言之,如果QP一旦收到内部定时器和发送字节计数器,算法将继续提高发送速率CNP包,将指定QP减速。除此之外,它还维持了一个叫做α它反映了网络中的拥塞度,用于减速计算。
该算法定义为三个并行过程:
- α更新(测量拥塞)
- 降速
- 提速
7.1 α更新
时间分为可配置的时间间隙。每个时间间隙是否指示CNP到达时间间隙。α参数是不断变化的平均值,它是CNP到达时间间隙的比例(如果在同一时间间隙中超过一个CNP只有一个到达CNP效果相同)。每次间隙结束时,α以下公式更新:new_α = g * old_α (1 - g) * CNP_arrived, g是介于0和1的常量参数,CNP_arrived它是一个比特位域,用来指示上次间隙中是否存在CNP到达。
7.2 降速
时间分为可配置的时间间隙(不同于α更新间隙)CNP在上个时间间隙到达(在同一个时间间隙内不止一个CNP到达时,后面的CNP没有指示),QP通过后面的公式降低速率:new_rate = old_rate * (1 - α / 2),同时将用于提速的几个参数重置。
7.3 提速
提速逻辑和QCN定义非常相似。逻辑分为快速恢复、积极增加(保持探测)、超积极增加(保持探测)三个阶段。
从一个阶段移向下一个阶段是通过在该阶段中统计到的提速事件数量参数定义的。在一个阶段中提速事件的数量超过预定义的门限值后,逻辑移向下一个阶段。降速事件会重置所有和提速相关的计数器,并且返回到快速恢复阶段。除此之外,一旦提速后,在降速之前,当前的速度会被保存在一个叫target_rate的参数中。
自从上次提速后,在经过预定义的时间间隙或者预定义的发送字节数过程后,如果没有出现降速事件,就会出现提速事件。
处于快速恢复阶段时,面对每个提速事件,速度按照到target_rate的距离的一半来增加(也就是对数接近,current_rate = (current_rate + target_rate) / 2)。这允许在快速恢复阶段的开始能快速恢复到拥塞出现的速度,然后在速度接近拥塞发生的速度时,更谨慎的增加速度。
在后面两个阶段中,一旦出现提速事件,速度都是按照一个常量值来增加。这可以在带宽释放的时候获得吞吐量。
8.总结
这次记录了RoCEv2网络中对于拥塞控制的检测,预防和应对方法。ECN检测和标记是现代数据中心商用交换机普遍具有的功能,它保存在IP头部的查分服务代码点中的两个比特位中。启用ECN功能后,在网络上出现拥塞后,交换机会对ECN域打上CE值,由接收方产生CNP来通知发送方网络拥塞事件。发送方收到CNP指示的事件通知后,根据DC-QCN算法中对当前速度处于快速恢复,积极增加和超积极增加三个阶段中对应的动作来对注入速率进行控制,从而解决网络中的拥塞情况。