网络--QOS(PAUSE帧与BackPressure背压)

BCM56224芯片支持4种QOS模式:基于端口(Port-ID)、基于MAC地址、基于802.1p、基于DiffServ的优先级设置。

基于802.1p、基于DiffServ的优先级设置的寄存器在Register Definitions中很快找到;而基于端口的优先级设置寄存器却在802.1Q Vlan章节中


置过程中会遇到QOS PAUSE Enable Register寄存器,后来才明白他的作用:

(写在出发前:通常,存储转发的以太网交换控制电路有3种缓冲方式:端口输入缓冲,共享中央缓冲和端口输出缓冲。当发送方和接收方数据传输率不匹配时,为了防止高速发送方的数据把低速接收方“淹没”,需要通过流量控制机制使发送方在接收方缓冲区将满时,停止发送数据帧,在缓冲区将空时,继续发送数据帧。在数据链路层实现流量控制,可以调整连接设备的传输速率、解决拥塞问题和减少帧丢失。)


1、以太网流量控制技术

IEEE802.3协议把数据链路层分为逻辑链路控制子层、MAC控制子层和介质访问控制(MAC)子层。其中MAC控制子层为可选子层,该子层规定了一个通用的全双工流量控制结构框架;载波侦听多路访问/冲突检测(CSMA/CD)算法则实现了半双工流量控制。

1.1、半双工网络的流量控制技术

当以太网交换控制电路端口工作在半双工模式时,符合IEEE802.3协议的载波侦听多路访问/冲突检测(CSMA/CD)算法,可以实现隐式的流量控制,即采用背压技术(BackPressure)防止缓冲区的溢出,在发送方数据到来前采取某种动作,阻止发送方发送数据。
背压技术是交换控制电路发出一种伪碰撞信号(false collision signal)技术。背压技术通常根据已用缓冲区的容量比例来实现,当已用缓冲区容量达到一个预先设定的比例时,端口将根据这个阈值生成阻塞信号,而当空闲缓冲区容量超过另一个较低的比例时,端口将取消阻塞信号。在拥塞端口所在的网段内,阻塞信号的传输可以使该网段里所有的端口都能检测到冲突,等待阻塞信号结束后再传输数据帧,从而阻止更多的碰撞,暂时中止了数据的传输,使缓冲区的空间得到释放。
实现方法这里不做说明)

1.2、全双工网络的流量控制技术

全双工网络中,交换控制电路端口不检测冲突,忽略可延迟传送的载波侦听,所以不能采用背压技术解决拥塞,需要采用显式的流量控制机制,使交换控制电路能够阻塞处于拥塞状态的站点。

IEEE802.3协议为MAC控制子层提供了一个全双工流量控制结构框架,MAC控制子层是介于逻辑链路控制子层和介质访问控制子层间的可选功能,MAC控制子层在OSI体系中的位置如下面所示。

OSI参考模型

   应用层

   表示层

   会话层

   传输层

   网络层

数据链路层 (从上之下可分为:a、LLC——逻辑链路控制 b、MAC 控制——(可选项) c、MAC——介质访问控制)

   物理层


交换控制电路要防止缓冲区溢出,可以利用MAC控制子层来控制以太网介质访问控制子层的操作。当已用缓冲区容量达到一个预先设定的阈值时,端口向全双工链路对方发出停止发送数据的请求,这个请求通过MAC控制子层产生的控制帧实现。

同样,端口可以接收由其他站点MAC控制子层产生的控制帧,控制帧夹在客户数据帧流中发送,接收方会根据帧的内容将控制帧分离出来,提交到MAC控制子层中的流量控制模块,流量控制模块解析控制帧的内容,提取帧中的控制参数,根据控制参数决定暂停发送的时间。

在全双工MAC控制框架下,流量控制机制是通过PAUSE功能实现的。PAUSE功能可以防止瞬时过载导致缓冲区溢出时不必要的帧丢失。PAUSE操作实现了一种简单的停-等式流量控制机制。如果某个端口要停止帧的接收,可以发送一个带有参数的PAUSE帧,参数指示全双工链路对方在开始发送数据前需要等待的时间。当链路对方接收到PAUSE帧后,在参数指定的时间内停止发送数据。当指定时间超出,或端口流量控制状态解除后,原拥塞端口重新发出操作参数为0的PAUSE帧,链路对方从暂停的位置继续发送数据帧。
MAC控制帧是符合IEEE802.3协议的以太网帧,可以通过其唯一的类型域标识符(0x8808)识别。MAC控制帧在网络上的发送和接收与数据帧类似,除了前导码和帧开始符外,长度为以太网帧的最小帧长度(64字节)。MAC控制帧的数据域内,前两个字节标识了MAC控制的操作码,表示帧请求的控制功能。目前协议只定义了一种操作代码,即PAUSE操作,操作代码为0x0001。操作码后是操作所需的参数,参数只用了数据字段的2个字节,数据字段中其余位将填充0。

PAUSE帧格式 (帧长64字节):

前导码(7字节)+

目的地址(6字节)+

源地址(6字节)+

类型(2字节)+

帧开始符(1字节)+

操作码(2字节)+

操作参数(2字节)+

保留(42字节)+

校验序列(4字节)


2、交换控制电路全双工流量控制机制的实现

2.1、PAUSE操作的实现

当链路双方通过自动协商启用流量控制以后,链路端口可以生成PAUSE帧,同时在接收帧的过程中识别PAUSE帧,响应停-等请求,交换控制电路PAUSE操作的实现主要有3个方面。
第1个方面:PAUSE帧要及时发送。以太网交换设备按序发送数据帧,当缓冲区将要溢出时插入PAUSE帧。PAUSE帧会因为排队等候发送而造成延迟,因此,PAUSE帧应该具有发送优先权。如果在发送PAUSE帧前数据帧正在传输,PAUSE帧必须等待当前数据帧传输完毕,在帧间隔过后才能发送。
第2个方面:对接收到的PAUSE帧进行识别。识别过程需要512位链路传输时间,这是完整地接收64字节PAUSE帧所需的时间。接收端口对所有接收的帧进行协议分析,结合PAUSE帧的格式对接收帧的目的地址、帧类型、MAC控制操作码和帧校验序列进行检查,确定是否收到了正确的PAUSE帧,用提取的暂停时间乘以512位链路传输时间,得到端口暂停时间。若收到暂停时间为零的PAUSE帧,则解除端口流量控制状态。
第3个方面:合理设定发出流量控制请求时机。由于全双工链路存在传播延迟和响应延迟,发出PAUSE帧后,对方不能立即停止数据帧的发送。发送方必须考虑在发出PAUSE帧后能够接收的最大数据量,避免缓冲区溢出。本设计的以太网交换控制电路支持10M/100M链路传送,最坏情况下需要考虑的因素包括:
(1)在发送PAUSE帧前正在发送一个最长数据帧(1 536字节);
(2)发送PAUSE帧花费的时间为512位链路传输时间;
(3)发送帧间隔为96位链路传输时间;
(4)对方在解析PAUSE帧的同时,正开始发送一个最长数据帧 (1 536字节);
(5)接收帧间隔为96位链路传输时间;
(6)链路的往返传输延迟时间。
根据上述因素,流量控制请求发出以后,还需要大约3.2K字节的数据等待接收与缓存,PAUSE帧才能终止链路对方数据帧的发送。在设计缓冲容量和选择流量控制阈值时,需要考虑这些延迟因素,有效地实现流量控制机制,防止帧丢失。

2.2、 缓冲区策略的实现

虽然IEEE802.3已经定义了流量控制机制,但是何时启动流量控制,却完全取决于供应商或者用户。根据实现的复杂度可以有不同的方法,比如设定PAUSE帧中暂停时间和交换控制电路的缓冲能力等这里就不做说明。

你可能感兴趣的:(网络知识)