流控

以太网的数据发送和接收都会经过数据包缓冲区,当数据包缓冲区的报文输入的速度小于报文输出的速度时,数据包缓冲区将一直处于未满状态,往数据包缓冲区中输入的报文总是能够输出,此时网络处于畅通状态;而当数据包缓冲区的报文输入的速度大于报文输出的速度时,数据包缓冲区将开始堆积,并最终溢出造成报文丢失。

为了应对这种情况,便有了流控机制,其本质是使通信设备能实时的了解对端设备对通信流量的要求,根据对端设备的要求来决定本设备是继续发送还是暂停发送数据包。这就要求以太网通信设备必须根据自己缓存的状况,实时将缓存的空或满信息发送给对端。这种缓存的空满信息就称为流控信息。流控信息就像红绿灯,报文发送端根据流控信息来决定端口是否继续发送报文。

这种流控机制有效防止了报文的丢失,但是由于网络的迅速发展,网络中负责的业务已不止一种,而这种流控机制会因为某一种业务报文的发送速率过快而导致整个端口停止报文的发送,影响其他业务报文的正常发送与接收。于是就有了基于优先级的流控即PFC(Priority-based Flow Control)流控。与普通流控不同的是,PFC流控有个分类处理的过程,即将网络中的报文根据其业务类别分类后进入不同的缓冲区中,各个缓冲区有自己的流控机制,且互不影响,此外,PFC流控还能够根据业务类型的重要性划分优先级,从而使网络的服务质量(QoS)得到提升。