Why does ethernet have a minimum frame size specified?

I think the minimum is 64 Bytes. Why is that minimum necessary?


Solution 1:

Doing some quick reading, it seems it is related to the Collision Detection part of CSMA/CD. If frames were too small on old broadcast media, then some collisions would be undetectable. Continuing my theme of automobile analogies today, it's for the same reason that we don't allow bicycles on high-speed highways - it's just not safe for them.

Solution 2:

In addition to mfinni's (absolutely correct) answer, setting a minimum frame size allows you to spend multiple receive cycles verifying your frames' checksums. In Ye Olde Days, one can easily imagine a chip that processes one bit per cycle, but takes many cycles to compute a checksum on a dedicated pathway that runs parallel to the receive pathway. Receiving many short messages could result in this checksum logic becoming garbled by having multiple simultaneous operations triggered in it. Discarding anything below a certain size threshold allows you to avoid this issue in a simple way.

Solution 3:

Ethernet is designed to work over a shared medium (the ether!). Senders are capable of sensing when the signal they are driving the ether with is different from what is on the ether.

Unfortunately all media have a propagation delay (unfortunately even light travels at a finite speed).

Suppose you send a very short frame. To detect if the receiver transmits right at the same time they were receiving your frame, you must wait for the signal they send to reach you, so you must therefore wait/listen for twice the propagation delay of the medium before you know if there was a collision at the receiving end.

Now, instead of just listening (sending silence) during that time, you might as well go ahead and send some useful information during that time.

The standard therefore sets the minimum frame size to be the amount of data you can send in TWICE the worst-case propagation delay in the shared medium.

So if you're unhappy because the large frames feel "un-optimized" for your small message, think of that extra space in the packet as an opportunity to find something else to send, when you'd otherwise have to send zeros anyway.

Of course there are many other ways of dealing with collisions and propagation delays in a local networking standard, but then it wouldn't be ethernet, and I think we can all agree that ethernet is pretty sweet.