PFC和ECN:网络流量控制的关键技术

龅牙兔谈科技 2024-05-29 06:11:34

在现代数据中心和高性能计算网络中,尤其在针对无损以太网的需求,流量控制至关重要。Priority Flow Control(PFC)和Explicit Congestion Notification(ECN)是两种重要的流量控制技术。

PFC

PFC —— 基于优先级的流量控制,作为标准的网络流量控制协议,本身是一种基于链路级别的流量控制机制,通过基于优先级的流量暂停方式,用于无损以太网环境,如RDMA over Converged Ethernet(RoCE)。它通过发送暂停帧来控制流量,以防止数据包丢失。

PFC 主要用于改进以太网数据传输的可靠性和效率,特别是在高性能和高吞吐量的网络环境中。在网络出现拥塞时可以暂停某些低优先级的流量。

概念:PFC是IEEE 802.1Qbb标准的一部分,是基于优先级的、控制低优先级流量暂停的一种机制。目的:对不同优先级的流量进行独立控制,防止拥塞导致丢包。它会暂停某些低优先级的流量,而不会影响高优先级的流量。具体实现:当一个设备(如交换机或网卡)检测到其接收缓冲区即将溢出时,它会向其对端设备发送PFC暂停帧,要求对方暂停发送特定优先级的流量。接收到PFC暂停帧的设备会暂停发送这些特定优先级的流量,直到暂停时间结束或接收到继续发送的信号。局限性:由于PFC仅在相邻设备之间生效,如果网络中的其他设备没有协调处理,可能会导致死锁或阻塞扩散等问题。PFC的劣势及解决方案:

缺点

缺点描述

问题

解决方案

死锁

(Deadlock)

在复杂网络拓扑中,PFC可能导致死锁。当多个交换机和设备之间的PFC信号互相锁定时,会形成循环依赖,导致数据流无法前进。

数据流中断:死锁会导致网络中的某些部分的流量完全停止,导致服务中断。性能下降:死锁情况可能导致网络性能显著下降,延迟增加。优化流控配置:合理配置PFC优先级队列,避免过多的流量集中在同一个队列。环路避免:设计网络拓扑时,尽量避免环路,使用Spanning Tree Protocol (STP) 或其他环路避免机制。实时监控:使用网络监控工具实时监控PFC信号和网络流量,及时发现并解决潜在的死锁问题。

阻塞扩散

(Head-of-Line Blocking)

PFC会导致阻塞扩散,即一个优先级队列的阻塞可能影响到其他队列的流量,导致整体网络性能下降。

延迟增加:阻塞扩散会导致其他流量的延迟增加,影响网络性能。吞吐量降低:阻塞扩散会降低网络的整体吞吐量,影响数据传输效率。优化队列管理:提高交换机和设备的缓冲区管理能力,减少阻塞扩散的可能性。优先级调整:合理配置不同流量的优先级,避免关键流量受到低优先级流量的影响。

高资源占用

PFC需要大量的缓冲区和内存资源来处理流控信号和数据包,增加了网络设备的成本和复杂性。

硬件成本增加:为支持PFC,需要更高规格的网络设备,增加了硬件成本。维护复杂:高资源占用增加了网络维护的复杂性,增加了管理和运营成本。增加缓冲区:增大交换机和设备的缓冲区,以减少触发PFC暂停帧的频率。硬件升级:选择更高规格的网络设备,确保其能够高效处理PFC流控信号和数据包。

对网络拓扑的依赖

PFC对网络拓扑的设计和配置有较高要求,需要精心规划和优化,否则容易出现性能问题。

设计复杂:需要花费大量时间和精力来设计和配置网络拓扑,以避免潜在的PFC问题。灵活性降低:对网络拓扑的依赖性强,限制了网络的灵活性和扩展性。拓扑优化:精心设计和优化网络拓扑,避免复杂环路和潜在的死锁问题。网络冗余:提供多路径冗余,防止某一路径上的问题导致整个网络的性能下降。

兼容性问题

不同厂商的PFC实现可能存在兼容性问题,导致在多厂商设备混用时出现不一致性和性能问题。

部署复杂:在多厂商设备环境中部署PFC,可能需要额外的配置和调整,增加了部署难度。性能不稳定:兼容性问题可能导致网络性能不稳定,影响整体服务质量。标准化协议:推动厂商采用统一的PFC实现标准,减少兼容性问题。多厂商测试:在多厂商设备环境中进行充分测试,确保PFC配置的一致性和性能。

反馈滞后

PFC的流控信号在传输过程中可能存在延迟,导致流控反馈滞后,无法实时反映网络拥塞情况。

响应不及时:流控反馈滞后可能导致发送方无法及时调整发送速率,增加了拥塞和丢包的风险。网络波动:反馈滞后导致的响应不及时可能引起网络性能波动,影响用户体验。采用ECN:使用Explicit Congestion Notification(ECN)等拥塞控制机制,减少对PFC的依赖。智能流控:部署智能流控机制,根据实时网络状况动态调整流控策略。ECN

ECN —— 显式拥塞通知,是一种端到端的拥塞控制机制,通过在IP和TCP头中标记拥塞状态,让传输路径上的所有设备和终端参与拥塞通知和控制。

ECN 作为是一种网络拥塞管理机制,它通过网络设备(如路由器和交换机)在发生拥塞时标记IP报文,而不是丢弃它们,从而通知发送方降低发送速率。

ECN 是一种在IP和TCP层面实现的机制,旨在提高网络的稳定性和效率。

ECN的诞生背景:1、传统拥塞控制问题:在传统的网络拥塞控制机制中,网络设备通过丢弃报文来通知发送方网络已经拥塞。这种方法虽然有效,但丢包会导致传输延迟增加和网络性能下降。2、TCP拥塞控制:TCP协议依赖于丢包作为拥塞信号,当检测到丢包时,发送方减少发送速率。但是,这种方法可能导致显著的性能下降,尤其是在高带宽-延迟产品(BDP)网络中。3、需要更优的拥塞控制机制:随着互联网和数据中心网络的规模和复杂性增加,迫切需要一种更有效的拥塞控制机制,能够在不丢包的情况下管理网络拥塞,从而提高整体网络性能。ECN的具体实现过程:1、发送方:在TCP握手阶段,发送方和接收方协商是否支持ECN。如果支持,数据包的IP头和TCP头会包含ECN标志。2、网络设备:当路由器或交换机检测到拥塞时,它会在数据包的ECN字段中设置拥塞标志(CE,Congestion Experienced)。3、接收方:接收方在检测到CE标志的数据包后,会在其发送的TCP ACK(确认)包中设置ECN-Echo标志,通知发送方发生了拥塞。4、发送方:发送方在接收到带有ECN-Echo标志的ACK包后,会根据拥塞控制算法(如TCP CUBIC、TCP BBR)调整其发送速率,以减缓拥塞。ECN的特点:1、显式拥塞信号:通过在IP头中设置ECN位,网络设备可以显式地通知发送方网络中存在拥塞。2、无损拥塞通知:与传统的丢包机制不同,ECN通过标记报文而不是丢弃它们来通知拥塞,从而避免了丢包引起的传输延迟和重传开销。3、双向通信支持:ECN支持双向通信,允许发送方和接收方都能够感知和响应网络拥塞情况。4、兼容性:ECN设计为向后兼容,即使某些设备不支持ECN,也不会影响网络通信的正常进行。基于PFC的劣势,采用ECN的优势:

解决问题

优势

劣势

避免死锁

ECN通过在数据包中标记拥塞状态而不是暂停流量,避免了PFC中可能导致的死锁问题。

减少阻塞扩散

ECN不会引起一个优先级队列的阻塞扩散到其他队列,从而保持整体网络性能。

降低资源占用

ECN机制不需要额外的缓冲区和内存资源,相比PFC减少了硬件成本和复杂性。

增强兼容性

ECN作为标准协议,在多厂商设备之间具有更好的兼容性,减少了配置和调整的复杂性。

改善反馈延迟

ECN的反馈机制通过标记数据包而非暂停数据流,能够提供更及时的拥塞信息,减少了反馈滞后的问题。

依赖于网络设备的支持

并非所有网络设备和操作系统都完全支持ECN,需要确保所有设备和软件支持ECN才能实现无损网络传输。

需要适应的应用场景

ECN适用于需要高带宽和低延迟的环境,但在极端低延迟和高可靠性要求的环境中,可能仍需要与其他机制结合使用。

网络调整和优化

采用ECN需要对现有网络进行调整和优化,包括配置路由器、交换机和终端设备支持ECN标记和处理。

为确保ECN在网络中正常工作并发挥其效用,途径所有相关的网络设备、服务器和终端设备都需要支持ECN:

组件

支持要求

具体功能

路由器和交换机

路由器和交换机必须能够识别和处理ECN标记的数据包。这些设备需要能够在检测到拥塞时设置数据包的ECN标记位。在转发数据包时,这些设备必须保留和转发ECN标记。拥塞检测:设备需要能够检测到拥塞,并将数据包的ECN字段设置为Congestion Experienced (CE)。ECN位处理:在转发过程中,设备应确保ECN位在数据包头中保持正确。

服务器和终端设备

服务器和终端设备的操作系统和网络堆栈需要支持ECN。这些设备的网卡(NIC)也需要支持ECN标记和处理。发送方:在TCP握手期间,发送方必须表明它支持ECN(通过设置SYN包中的ECN支持位)。接收方:接收方在检测到CE标记的数据包时,需要发送ECN-Echo(ECE)响应,并在发送确认(ACK)时包含此信息。拥塞控制:发送方在接收到ECN-Echo响应时,需要调整其拥塞控制算法来降低发送速率。

操作系统和网络协议栈

操作系统的网络协议栈必须能够处理ECN标记,包括在TCP连接的建立和数据传输过程中正确处理ECN信号。

TCP拥塞控制:操作系统需要实现支持ECN的TCP拥塞控制算法,如TCP CUBIC、TCP BBR等。ECN标记处理:操作系统需要处理入站和出站数据包的ECN标记,确保正确设置和解释这些标记。

应用层支持(可选)

某些应用层协议和应用程序可能需要额外配置来支持和利用ECN,但这通常是可选的。

应用层优化:某些高性能应用可能会调整其行为,以更好地利用ECN信号来优化数据传输和流量管理。

形象的理解PFC和ECN

假设我们有两条高速公路,分别代表PFC和ECN的流量控制方式。

PFC

设想一条高速公路,每个路段都有交通信号灯来控制车辆的通行。这条高速公路代表了PFC的工作原理。

工作机制:

检测拥堵:如果某个路段的交通量过大(即车辆太多,造成拥堵),该路段的信号灯会变红,停止后面的车辆进入这个路段。暂停交通:当信号灯变红时,所有在信号灯之前的车辆都必须停下来,等待信号灯变绿才能继续行驶。恢复通行:一旦前面的交通缓解,信号灯会变绿,允许停下的车辆继续前进。

形象理解:

暂停帧:信号灯变红时,相当于PFC发送暂停帧,告诉后面的车辆停止行驶。流量控制:交通信号灯只在当前路段和前一个路段之间生效,其他路段的车辆不受影响。问题:如果多个路段的信号灯都变红,会导致整个高速公路上的车辆都停下来,类似于PFC中的死锁和阻塞扩散问题。ECN

设想另一条高速公路,没有信号灯,但每辆车都有一个GPS导航系统,能够实时更新交通信息。这条高速公路代表了ECN的工作原理。

工作机制:

检测拥堵:如果某个路段的交通量过大(即车辆太多,造成拥堵),该路段的监控系统会在GPS系统中标记这个路段为“拥堵”状态。通知司机:所有接近这个路段的车辆的GPS系统都会收到拥堵通知,显示在车内的导航屏幕上。减速行驶:接到通知的司机会提前减速,避免进一步加剧拥堵情况,并寻找替代路线或停车休息。

形象理解:

拥塞标记:监控系统在GPS系统中标记拥堵路段,相当于ECN在数据包头中标记拥塞状态。端到端控制:所有接近拥堵路段的车辆都能收到通知,不仅仅是直接相连的路段。优势:车辆可以提前减速或选择其他路线,避免整体交通的停滞,类似于ECN避免死锁和阻塞扩散。PFC和ECN比较

维度

PFC

ECN

类型

点对点机制

端到端机制

工作层次

链路层(数据链路层)

网络层(IP)和传输层(TCP)

拥塞通知

通过发送暂停帧直接通知对端设备

通过在数据包头中标记拥塞状态,路径上所有设备和终端都参与拥塞控制

生效范围

仅在直接相连的两个设备之间

整个端到端路径,包括所有中间网络设备和终端设备

优点

快速响应,适用于无损以太网环境(如RoCE)

提供更广泛的拥塞控制,减少死锁和阻塞扩散问题,兼容性好,适用范围广泛

缺点

易导致死锁和阻塞扩散,依赖高质量的网络设备

需要路径上所有设备支持ECN,依赖操作系统和应用层的支持,部署和调试较复杂

应用场景

数据中心内部、高性能计算、存储网络等需要低延迟的环境

数据中心、云计算、高性能计算、互联网服务提供商网络等需要广泛拥塞控制的环境

实现复杂度

中等,配置交换机和网卡

高,需要配置网络设备和终端设备,可能涉及应用层调整

硬件要求

高,需要支持PFC的高质量网络设备

中,需要支持ECN的网络设备

软件支持

需要网络设备固件和驱动支持

需要操作系统和应用程序支持

兼容性

较差,不同厂商设备可能存在兼容性问题

较好,符合标准的设备和软件基本兼容

反馈延迟

低,暂停帧直接生效

高,通过数据包标记反馈拥塞信息

资源占用

高,需要大量缓冲区和内存资源

低,不需要额外缓冲区和内存资源

流量控制方式

基于暂停帧的流量控制

基于标记的流量控制

!!!【点赞】、【关注】不走丢^_^

!!!【点赞】、【关注】不走丢^_^

0 阅读:0

龅牙兔谈科技

简介:感谢大家的关注