集群网络技术2:流量控制与拥塞管理PFC ECN/DCQCN
在高速网络中,拥塞是一个致命问题。当多个端口同时向同一个出口端口发送数据时,交换机的缓冲区可能会被填满,导致数据包被丢弃。在RDMA环境中,丢包是灾难性的,因为它依赖于无损传输。
PFC - 优先级流量控制
PFC是在链路层(L2) 实现的一种“暂停”机制。
工作原理:
当交换机端口的接收缓冲区达到一个预设的阈值时,它会向上游发送设备(可能是另一台交换机或服务器网卡)发送一个PFC暂停帧。
这个暂停帧会说:“请暂停发送具有X优先级的流量一段时间”。
上游设备收到后,会立即停止发送该优先级的流量,从而为交换机缓冲区腾出时间排水。
超时后或收到恢复信号后,再继续发送。
类比: 就像高速公路的匝道信号灯,当主路拥堵时,信号灯变红,暂时阻止匝道上的车流入场,防止拥堵加剧。
图示 PFC:
[服务器A] ----(发送数据)----> [交换机端口] ----> (发生拥塞,缓冲区快满了)|| (发送PFC暂停帧)|[服务器A网卡] <---------------------+| (收到暂停帧,停止发送特定优先级的流量)
PFC的缺点: 不扩散和队头阻塞。PFC只作用于直接相连的两个端口之间。它可能在整个网络中引发连锁反应,导致拥塞点上游的所有链路都被暂停,即使它们本身并不拥塞。这就像因为一个路口堵车,导致全城的车都停下来。
4ECN / DCQCN - 显式拥塞通知 & 其RoCE实现
ECN是一种在网络层(L3) 更智能的拥塞控制机制。
工作原理:
标记: 当交换机的队列长度超过一个阈值时,它不会丢弃数据包,而是在IP头中打上一个标记(ECN标记),意思是“我这边已经有点拥塞了”,然后继续转发这个被标记的数据包。
通知: 接收方收到这个被标记的数据包后,会在其返回的确认报文(在RoCE中是ACK/NAK包)中设置一个标志位,告诉发送方:“你发送的路径上发生了拥塞”。
反应: 发送方(网卡)收到拥塞通知后,会主动地降低自己的发送速率,从源头上减少注入网络的数据量。
DCQCN 是 Data Center QCN (Quantized Congestion Notification) 的简称,它是ECN机制针对RoCE环境的具体实现和增强。它定义了在RoCE网络中,发送方如何根据ECN反馈来精确地调整发送速率的一套完整算法。
类比: 就像在拥堵的路段,交警(交换机)给路过的车辆(数据包)贴一张罚单(ECN标记)。司机(发送方)收到罚单后,知道自己常走的这条路很堵,下次就会主动选择错峰出行或走其他路线(降低发送速率)。
图示 ECN/DCQCN:
[发送方网卡] ----(高速发送)----> [拥塞的交换机] --(标记ECN)--> [接收方]| || <---(ACK包包含ECN标记)----------------------------------||V(根据DCQCN算法降低发送速率)
PFC 与 ECN/DCQCN 的关系
在现代RDMA网络中,PFC和ECN/DCQCN是协同工作的:
PFC 作为“最后防线”: 它负责处理突发的、剧烈的流量洪峰,防止缓冲区溢出导致丢包。它保证的是无损。
ECN/DCQCN 作为“智能调节器”: 它在拥塞发生的早期进行温和的、精确的速率控制,从源头上避免拥塞恶化到需要触发PFC的程度。它保证的是高效和公平。
一个经典的配置是:PFC的触发阈值设置得较高,为ECN的调节留出足够的时间窗口。
