The ethernet MAC protocol is based on CSMA/CD, which defines an algorithm for fair collision handling:

If the NIC detects a collision, it sends a jam signal and enters binary exponential backoff:

After the mth consecutive collision, the NIC chooses K at random from {0,1,2,3, ..., 2^m - 1}

NIC waits K * 512 bit times, then returns to the sending step:

If NIC senses channel idle, starts frame transmission.

If NIC senses channel is busy, waits until channel idle, then transmits.

My question is, is it possible to produce a NIC which implements the protocol unfairly? If so, would there be any reason to do it?

i.e. always waiting 0 bit times before attempting re-transmission in all cases, thus giving the client higher priority for transmission when there are contending connections.

For ethernet connections, which are usually point-to-point, it seems a host would have little reason to assert transmission priority, but I want to know if I'm missing something.


  • You can mis-implement Ethernet (and blatantly violate the specification) any way you want - just build your own ethernet controller chipset (which is pretty trivial to do these days - you could implement Ethernet on an Arduino if you wanted to...) – voretaq7 May 1 '14 at 21:35
  • Right, thanks. The second part of the question has to do with whether these unfair implementations could be used to somehow gain an advantage to the user, which Marek has addressed. – Blake May 1 '14 at 23:27

Very theoretical, but interesting question. I'll try to answer that :)

Ethernet was originally based on the idea of computers communicating over a shared coaxial cable acting as a broadcast transmission medium (e.g. 10-Base2, 10-Base5 standards). After that there was 10-BaseT with the point to point UTP cable, but still entire network was a big collision domain (because of the use of a repeaters/hubs). Network without some collision resolving protocol (like CSMA/CD) wouldn't work at all. That leads us to another conclusion: NIC without proper handling of the CSMA/CD would probably jam entire shared collision domain, and then network admin would have to try to locate the workstation and mark it as broken :)

Another thing is, transmission is a two-way communication. You would gain nothing in terms of traffic priority if the only one NIC was the side with "improved" latency: the other side of the physical connection (e.g. switch) would have to had "unfairly" protocol implemented too. In today's switched Ethernet networks, it would give no effect beside greater possibility of collisions on that piece of copper/fiber between modified NICs.

And last but not least. Ethernet protocol is implemented using the chip on the NIC. You would have to find a way to modify firmware on the NIC itself. I guess it could be difficult task on most modern NICs with hardcoded fw.


  • great answer, thanks. It seems in my reasoning I forgot about the jamming signal. When I said "produce an NIC" I meant fabricate one using HDL - I didn't realize that NICs had a firmware that implemented this protocol. – Blake May 1 '14 at 23:24

You wouldn't get "higher priority," you'd have a higher chance of collision. Of course, if you're on a switched ethernet, or a lightly loaded shared cable, you would have few collisions and few backoffs to begin with.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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