Auto-Negotiation is the feature that allows a port on switch, router, server or other device to communicate with the device on the other end of the link to determine the optimal duplex mode (Full or Half Duplex Modes) and the speed of the connection. The driver then automatically configures the interface to the values determined for the link.
How Auto-Negotiation Works?
The main source of the crisis is when an auto-negotiation fails another feature called parallel detection kicks in. Parallel detection works by sending the signal being received to the local 10Base-T, 100Base-TX, and 100Base-T4 drivers. If any one of these drivers detects the signal, the interface is set to that speed. Parallel detection determines only the link speed, not the supported duplex modes.
Because of the lack of widespread full-duplex support on 10Base-T, and the typical default behavior of 100Base-T, when auto-negotiation falls through to the parallel detection phase (which only detects speed), the safest thing for the driver to do is to choose half-duplex mode for the link.
When Auto-Negotiation Fails
When auto-negotiation fails on 10/100 links, the most likely cause is that one side of the link has been set to 100/full, and the other side has been set to auto-negotiation. This results in one side being 100/full, and the other side being 100/half.
Figure 1: Shows the link where auto-negotiation has failed.
In the above diagram TX and RX represents Transmitting Line and Receiving Line respectively. In a Half Duplex mode both the TX and RX are dependent on each other, until a packet arrives on the RX line the device cannot transmit and vice-versa. If the device transmits before it receives the packet then a collision occurs and the packet is lost. Where both the TX and RX line has in a Full Duplex mode do not depend on each other and they receive and transmit packets independently without monitoring each other.
When one side of the link is full-duplex and the other side is half-duplex, a large number of collisions will occur on the half-duplex side. Because the full-duplex side sends frames without checking the RX line, if it’s a busy device, chances are it will be sending frames constantly. The other end of the link, being half-duplex, will listen to the RX line, and will not transmit unless the RX line is available. It will have a hard time getting a chance to transmit, and will record a high number of collisions, resulting in the device appearing to be slow on the network. The issue may not be obvious because a half-duplex interface normally shows collisions. The problem should present itself as excessive collisions. This will choke the network bandwidth and reduce the performance of the network.
Auto-Negotiation Best Practices
Using auto-negotiation to your advantage is as easy as remembering one simple rule:
Note: Be careful about using 10/full, as full duplex is not supported on all 10Base-T Ethernet devices.
Gigabit Ethernet uses a substantially more robust auto-negotiation mechanism than the one described in this chapter. Gigabit Ethernet should thus always be set to auto-negotiation, unless there is a compelling reason not to do so (such as an interface that will not properly negotiate). This is a workaround until the appropriate misbehaving part is replaced.
1. “Network Warrior” Oreilly Publications – By Gary A Donahue.
