http://book.51cto.com/art/200911/163475.htm
在全双工MAC控制框架下,流量控制机制是通过PAUSE功能实现的。PAUSE功能可以防止瞬时过载导致缓冲区溢出时不必要的帧丢失。PAUSE操作实现了一种简单的停-等式流量控制机制。如果某个端口要停止帧的接收,可以发送一个带有参数的PAUSE帧,参数指示全双工链路对方在开始发送数据前需要等待的时间。当链路对方接收到PAUSE帧后,在参数指定的时间内停止发送数据。当指定时间超出,或端口流量控制状态解除后,原拥塞端口重新发出操作参数为0的PAUSE帧,链路对方从暂停的位置继续发送数据帧。
MAC控制帧是符合IEEE 802.3协议的以太网帧,可以通过其唯一的类型域标识符(0x8808)识别。MAC控制帧在网络上的发送和接收与数据帧类似,除了前导码和帧开始符外,长度为以太网帧的最小帧长度(64字节)。MAC控制帧的"数据"字段内,前两个字节标识了MAC控制的操作码,表示帧请求的控制功能。目前协议只定义了一种操作代码,即PAUSE操作,操作代码为0x0001。操作码后是操作所需的参数,参数只用了数据字段的2个字节,"数据"字段中其余位将填充0。PAUSE帧格式如图5-18所示。
前导码 |
帧开始符 |
目的地址 |
源地址 |
类型 |
操作码 |
操作参数 |
…… |
保留 |
校验序列 |
(点击查看大图)图5-18 PAUSE帧格式 |
PAUSE帧各个字段的定义如下:
前导码:与数据帧前导码相同,为连续7字节的10101010序列,用于物理层设备的同步。
帧开始符:也与数据帧帧开始符相同,为序列10101011,表示帧数据内容的开始。
目的地址:为帧发送端口的48位MAC地址,它可以是单播地址,也可以是组播地址,协议规定PAUSE的目的地址为保留的组播地址0x01-80-C2-00-00-01。
源地址:为发送PAUSE帧端口的48位MAC地址。
类型:为所有MAC控制帧保留类型0x8808。
操作码:恒为0x0001。
PAUSE操作参数:为2字节的暂停时间参数。它是PAUSE发送方请求对方停止发送数据帧的时间长度,通常为0xFFFF,时间度量单位是以当前传输速率传输512位数据所用的时间,接收方实际暂停的时间为操作参数字段内容与以当前传输速率传输512位数据所用时间的乘积。
帧校验和(FCS):为4个字节的循环冗余校验序列(CRC)字段。