Why is a full duplex Ethernet connection significantly faster ?

A full duplex connection is more than twice as fast as half duplex ? Why ? The real point of this question is that a half duplex connection is much slower than full duplex connection.

Some Basics

Lets recap some of the basics.

Half Duplex

A half duplex Ethernet port must detect collisions on the broadcast medium. A small process in the network driver checks that the medium is free before transmitting thus adding a small amount of delay. The driver must also monitor for a collision and, if a collision occurs, must backoff for a random interval before checking availability and retransmitting the frame.

Full Duplex

A full duplex port has no requirement to check for collisions and thus immediately transmits the frame. And has no need to check for collisions (thus having a secondary benefit on driver and CPU performance). The driver can immediately transmit the frame without any delay.

Acknowledgements, Collisions and CPU

It is easy to forget that data transfer is a two way process. Consider a large file transfer where data is mostly flowing in a single direction. TCP/IP will transmit acknowledgements regularly, and these frames are returned to the sender. It is certain that some of these ACK’s will collide and cause a delay in the transmission. Any Ethernet collision will cause a pause in transmission, CPU will be expended to manage the buffers / queues will determining if the packet can be retransmitted.

In a full duplex connection, each direction has dedicated bandwidth and collisions cannot occur. This removes the delay and retransmissions that occur in a shared medium.



A Ethernet port at half duplex will be appreciably slower than a full duplex connection. This is a good illustration of the difference between bandwidth and speed. The speed of 100Mbps half duplex connection is still 100Mbps, but the [slider title="maximum bandwidth is about 60 Mbps"]I can’t provide you with exact numbers but it will be less than 70Mbps, and tends to vary according to the application. Small frames perform OK, big frames go slower in half duplex. Either way you will not be able to move as much data as a full duplex connection. [/slider]

You should always remember the difference when designing high performance networks.