I know (see https://en.wikipedia.org/wiki/Ethernet_frame) that an Ethernet frame includes a 7 byte preamble of 0x55s and a one byte start frame delimiter (SFD) 0xD5, for a total of 8 bytes before the start of the message. At the same time, it looks like the 64b/66b encoding on a 10Gb network (I've found this page helpful https://www.fmad.io/blog/10g-ethernet-layer1-64b-66b) will indicate the start of packet via setting the control bits 10 and setting the block type field to 0x78. It will then have 7 extra bytes of valid data in that control bits packet.

However, from what I understand these extra 7 bytes will actually be 6 bytes of preamble, followed by the SFD. This makes sense so that the Destination Mac can then be sent as the first bytes of the next 64 bit chunk (the first one with control bits 01), but it seems to break the Ethernet protocol of having a 7 byte preamble. Am I understanding this correctly or am I missing something? Is there any official documentation on this?

Moreover, the above case is only for when the start of packet is indicated by block type field 0x78. It can also be indicated by block type field to 0x33 or 0x66, both of which are followed by only 3 valid bytes in the control section. So what is the length of the Ethernet preamble in this case? Is it only 2 bytes so that the start of the Mac lines up correctly, 6 bytes like the above example, or the 7 bytes that I thought it should have been all along?

What's confusing me is that it seems like the packet control bits and control data should be totally independent from the Ethernet preamble, but it seems like they have been mixed together. Any documentation on this would be much appreciated.


1 Answer 1


There are multiple variants of 10G Ethernet line codes. 64b/66b is used for 10GBASE-R. Other variants include 10GBASE-X (8b/10b) and -T (RS-FEC + THP + PAM-16 + DSQ-128).

Preamble and SFD are added at the physical layer before applying PCS and PMA encoding. For 64b/66b to work, the receiver needs to synchronize to the sender's block framing. A PCS sync header is used for that.

Since 64b/66b block framing and actual Ethernet framing are independent from each other, both synchronization schemes are required.

You might want to study IEEE 802.3 clause 49 for details. You can download official documentation free after registration at https://ieeexplore.ieee.org/browse/standards/get-program/page/series?id=68.

  • 1
    Thanks! Reading through the official documentation helps. The main thing that was confusing me was answered in 46.2.2 where it notes that "On transmit, the RS converts the first data octet of preamble transferred from the MAC into a Start control character. On receive, the RS will convert the Start control character into a preamble data octet." So the MAC always sees 7 bytes of preamble but only 6 are actually sent as one is replaced by the start control character. Aug 16, 2022 at 21:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.