FlowControl: PauseFrame

来源:互联网 发布:数据服务平台 编辑:程序博客网 时间:2024/05/16 06:16

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口以至少线速运行,链路只需要很短时间的暂停,一般来说微妙级。当客户端上行链路被阻塞时,流控可以起到作用。

0 0
原创粉丝点击