FlowControl: PauseFrame

本文深入探讨了以太网中的流控机制,特别是802.3X标准下的PAUSE帧工作原理及其应用场景。文章解释了在链路过载时如何通过发送PAUSE帧来避免数据包丢失,并讨论了流控机制的局限性和正确使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FlowControl: PauseFrame

原文:https://hasanmansur.com/2012/12/15/flow-control-pause-frames-2/

当以太网设备过载时,流控允许设备发送PAUSE响应,使得对端设备清除过载条件。如果没有使能流控,此时发生过载时,设备会丢弃包。但丢包处理比流控对性能会造成更大的影响。
    802.3X 流控 的实现不是基于流的,而是基于link(链路)的。流控解决的问题是 在过载(oversubscribed)全双工链路上 不能处理线速输入的输入缓冲区阻塞;流控也被实现为阻止以至少media-speed运行的switchs丢弃包,这种情况下,最常用的方法是背压(back_pressure);流控还可以大大降低整个段的整体吞吐量 。

Pause Frames

    当端口的Rx 部分接收大流量且Rx FIFO 队列已满时,端口的Tx部分开始产生pause 帧。希望远端设备以pause帧提到的时间间隔停止或者减少包的发送。

如果在此时间间隔内,Rx有能力清除Rx队列 或者 接受到小流量的数据包,Tx发送一条是时间间隔为0的特殊pause报文,这使得远端设备开始发送包。一旦设置的时间间隔到期,如果Rx仍然在队列上工作,Tx会重新发送一条带有新的时间间隔的pause帧。

1:如果 Rx-No-Pkt-Buff 为0 或者不再增长,TxPauseFrames计数增加,这表明 switch产生pause帧且远端设备遵循该请求,因此Rx FIFO 队列将会耗尽。
2:如果 Rx-No-Pkt-Buff 增长 且 TxPauseFrames 也在增长,这意味着 远端忽视pause帧(不支持流控),继续发送流量。为了克服这个情况,后动配置速度和双工,如果需要的话,禁用流控。接口上这些类型的错误,与端口流量过载的问题相关。

流控不是:

1:没有设计成去解决 稳定状态的超载网络或者链路 的问题;
2:没有设计成去解决 网络容量匮乏 的问题。正确的用法是,流控是解决在一条链路上短期超载的有效工具。
3:没有设计成去提供 端对端的流控。端对端机制,比较经典的是传输层被设计成解决这种情况。最通用的例子就是TCP Windows,他提供了 L3/L4层源地址和目标地址的端对端流控。

如果流控无效将会发生什么?

    对于以太网来说,Rx端口将会持续的接收到包,但是没有足够的空间临时存储这些包。Rx端口仅仅是简单的忽略这些输入数据包。Ethernet 和 TCP/IP 协同合作 重发这些包。然而,判决包已被丢弃,请求这些重新发送,最后发送包 将耗费时间。

流控-何时用?何时不用。

1:网络的边缘(Edge of a network)
服务器上的GE口以至少线速运行,链路只需要很短时间的暂停,一般来说微妙级。当客户端上行链路被阻塞时,流控可以起到作用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值