说到以太网帧格式,可以说是耳熟能详了。如果要问千兆以太网帧格式有什么特殊的地方,恐怕大多数人会感到好奇。事实是,千兆以太网的帧格式确实不太一样。

常规的以太网帧格式是这样的:

目的MAC

MAC

类型

数据和Padding

FCS

千兆以太网工作在半双工模式的情况下,如果帧长小于512字节,数据帧的FCS域后面会用“CarrierExtension”域补齐512字节。不过,CarrierExtension域并不参与FCS的计算。

千兆以太网为什么需要CarrierExtension域呢?这要从CSMA/CD的冲突检测机制和以太网提速的原理说起。

在回答上面的问题之前,先看一下冲突检测的过程。假设主机A和主机B是链路上相距最远的两台主机。主机A发送的信号传播到B处时,主机B刚好开始发送信号,主机A和主机B发送的信号就会发生冲突,主机B马上就能感知到冲突。但是,当冲突信号传播到主机A时,主机A才能检测到冲突。从主机A开始发送信号到冲突信号传播到主机A这段时间,要小于512比特时间,否则最小的数据帧(64字节)发送完成之前就检测不到冲突了。冲突检测机制限制了以太网的最大传播距离。

传输速率为10M的经典以太网中,链路上的主机需要在512比特时间内检测到潜在的冲突,这段时间称为“collisionwindow”。在百兆以太网中,collisionwindow依然是512比特时间,因为传输速率提升为原来的10倍,collisionwindow的绝对时间缩短为原来的十分之一。要在十分之一的时间内检测到潜在的冲突,百兆以太网将最大的传输距离缩短到经典以太网的十分之一。百兆以太网诞生时,以太网组网方式已经转为使用Hub,虽然百兆以太网的传输距离大大缩短,依然可以满足实际的组网需求。当传输速率提升到1000M时,512比特时间就不够用了,为了满足冲突检测的需要,传输距离将大大缩短,短到几乎没有什么实用价值。

千兆以太网为了增加最大传输距离,collisionwindow被提升到4096比特时间,也就是说在4096比特时间内检测到冲突就可以了。但是,这样又有了新的问题。因为以太网最小帧长是64字节,发送最短的数据帧只需要512比特时间。数据帧发送结束之后,可能在远端发生冲突,冲突信号传到发送端时,数据帧已经发送完成,发送端也就感知不到冲突了。最终的解决办法就是,当数据帧长度小于512字节(即4096比特)时,在FCS域后面添加CarrierExtension域。主机发送完短数据帧之后,继续发送CarrierExtension信号,冲突信号传回来时,发送端就能感知到了。

现在,来考虑另一个问题。如果发送的数据帧都是64字节的短报文,那么链路的利用率就很低,因为CarrierExtension域将占用大量的带宽。千兆以太网标准中,引入了framebursting机制来改善这个问题。当连续发送小于512字节的报文时,不是长时间发送CarrierExtension信号,而是只发送帧间隔时间的carrierextension然后继续发送下一个数据帧,这样就提高了链路的利用率。

Carrierextensionframebursting用于千兆以太网的半双工模式全双工模式不需要使用CSMA/CD机制,也就不需要这两个特性。

参考资料:

1)IEEEStd802.3-2012

2)<<BobMetcalfe:EthernetatForty>>,CharlesSeverance