网站首页 > 技术文章 正文
在现代数据中心和高性能计算网络中,尤其在针对无损以太网的需求,流量控制至关重要。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信号互相锁定时,会形成循环依赖,导致数据流无法前进。 |
|
|
阻塞扩散 (Head-of-Line Blocking) | PFC会导致阻塞扩散,即一个优先级队列的阻塞可能影响到其他队列的流量,导致整体网络性能下降。 |
|
|
高资源占用 | PFC需要大量的缓冲区和内存资源来处理流控信号和数据包,增加了网络设备的成本和复杂性。 |
|
|
对网络拓扑的依赖 | PFC对网络拓扑的设计和配置有较高要求,需要精心规划和优化,否则容易出现性能问题。 |
|
|
兼容性问题 | 不同厂商的PFC实现可能存在兼容性问题,导致在多厂商设备混用时出现不一致性和性能问题。 |
|
|
反馈滞后 | 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标记,包括在TCP连接的建立和数据传输过程中正确处理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的网络设备 |
软件支持 | 需要网络设备固件和驱动支持 | 需要操作系统和应用程序支持 |
兼容性 | 较差,不同厂商设备可能存在兼容性问题 | 较好,符合标准的设备和软件基本兼容 |
反馈延迟 | 低,暂停帧直接生效 | 高,通过数据包标记反馈拥塞信息 |
资源占用 | 高,需要大量缓冲区和内存资源 | 低,不需要额外缓冲区和内存资源 |
流量控制方式 | 基于暂停帧的流量控制 | 基于标记的流量控制 |
!!!【点赞】、【关注】不走丢^_^
!!!【点赞】、【关注】不走丢^_^
#头条创作挑战赛#
猜你喜欢
- 2024-10-19 3分钟大幅提升CentOS 7的TCP下载性能
- 2024-10-19 Springcloud-alibaba-sentinel 学习
- 2024-10-19 Sentinel 系统自适应限流原理剖析与实战思考
- 2024-10-19 腾讯内核团队发布 TCPA,为什么是 OPEN 而非开源?
- 2024-10-19 服务器为什么要用BBR加速以及安装版本的推荐
- 2024-10-19 阿里面试:说说自适应限流? 自适应控制流程图
- 2024-10-19 谷歌云新网络算法逆天了,可提高网络吞吐量2700倍
- 2024-10-19 4重高阶教程:RAID、快照、3-2-1、混合云,一篇打尽NAS数据安全
- 2024-10-19 tcp收包和发包受哪些linux配置项影响?
- 2024-10-19 谷歌的新网络算法与众不同,看上去很牛,可大大提升网速
你 发表评论:
欢迎- 11-18软考系统分析师知识点十六:系统实现与测试
- 11-18第16篇 软件工程(四)过程管理与测试管理
- 11-18编程|实例(分书问题)了解数据结构、算法(穷举、递归、回溯)
- 11-18算法-减治法
- 11-18笑疯了!巴基斯坦首金!没有技巧全是蛮力!解说:真远啊!笑死!
- 11-18搜索算法之深度优先、广度优先、约束条件、限界函数及相应算法
- 11-18游戏中的优化指的的是什么?
- 11-18算法-分治法
- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)