Tip

Duplex mismatch

What is duplex, and what is the difference between half and full duplex? What is a duplex mismatch? How can autonegotiation help or hurt your network? How can you resolve duplex conflicts? In this tip, David Davis helps networking engineers and newcomers understand the issues behind one of the most troublesome problems plaguing today's networks.

When you are configuring Ethernet ports on PCs, laptops, servers, printers or switches, one of your configuration choices will almost always be duplex. So what is duplex and what is a duplex mismatch? Let's find out.

Duplex
Duplex is the ability of a communications system to communicate in both directions at the same time. Think of a regular telephone call. Both parties can talk to each other at the same time. Telephone calls are duplex communications. On the other hand, a radio station is not duplex. You can only listen to the radio station; you cannot communicate back to it. The radio station's method of communication is simplex.

Half duplex vs. full duplex
What is the difference between half and full duplex? With half duplex, only one party can communicate at a time. With full duplex, both parties can communicate with each other at the same time. You could compare this to a one-way street vs. a two-way street. On a one-way street, cars can travel in only one direction at a time. On a two-way street, traffic can flow down each side of the street and travel in both directions at the same time. Another analogy is a walkie-talkie. With a walkie-talkie, you have to push a button to talk. While you are talking, no one else can do so. Others can talk only when you are done.

Loki Jorgenson provides an in-depth discussion of duplex mismatch
Duplex mismatch part 1: Why duplex conflicts plague the network

Duplex mismatch part 2: Stop the conflicts

This comes into play with Ethernet because you can have half-duplex and full-duplex Ethernet. For example, you have, say, a 100 Mb Ethernet link. With half duplex, you can send or receive 100 Mb at any one time. With full duplex, you can send 100 Mb and receive 100 Mb at any one time. Thus, you could theoretically get 200 Mb out of a 100 Mb Ethernet connection, if you could find a way to utilize both the sending and receiving paths at the same time.

What is autonegotiation?
Autonegotiation is a process between two Ethernet devices in which the devices exchange transmission parameters and agree upon those parameters. Autonegotiation was originally defined as IEEE 802.3u but was an optional standard for Ethernet equipment manufacturers to follow. When Gigabit Ethernet came out, autonegotiation was required with IEEE standard 802.3af.

Autonegotiation is used so that two devices can decide upon the proper speed and duplex with which to communicate. The speeds that the devices are choosing between are 10 Mb, 100 Mb and 1000 Mb. The duplex options are either half duplex or full duplex. Once this information is shared, the two devices will decide upon the fastest speed and duplex that both can support.

What is a duplex mismatch?
Duplex mismatch occurs when the two communicating Ethernet devices end up with duplex settings that are not the same, either because of manual settings or the autonegotiation process.

Unlike the case of a speed mismatch, the two devices with a duplex mismatch will communicate. They will suffer from poor performance, however. This can be confusing to many network administrators who see the two devices communicating. They assume that because the devices can ping each other, there cannot be an Ethernet issue. This leads them to troubleshoot all sorts of causes of application or operating system performance problems.

How do duplex mismatches occur?
The logical question is, "With autonegotiation, how can a duplex mismatch occur?" Like most system administrators, you probably assume that as long as you use autonegotiation, you can't have a duplex mismatch. This seems logical, but it is an incorrect assumption.

Duplex mismatches occur when either the Ethernet device or the Ethernet switch is hard-coded to full duplex and the other side is configured for autonegotiation. This happens because the switch, when not given any autonegotiation information, will default to half duplex. Because the device is hard-coded to full duplex, the switch and the device suffer a duplex mismatch.

More on duplex mismatch
Cisco: Troubleshooting Cisco Catalyst Switches to NIC Compatibility Issues

Cisco: Configuring and Troubleshooting Ethernet 10/100/1000Mb Half/Full Duplex Autonegotiation

PDF: Detecting Duplex Mismatch on Ethernet

This is the common cause of a duplex mismatch, but I won't say it's the only way a mismatch can happen. I recommend checking the duplex of Ethernet links whenever you suffer performance issues on the LAN.

How can I prevent a duplex mismatch?
To prevent a duplex mismatch, you have two options:

  1. Set all devices to autonegotiation.
  2. Hard-code all device-speed and duplex settings on both the switch and the device.

The first option (using autonegotiation) is the best, in my opinion. This makes life easier. There are very few new devices today that will have problems or incompatibilities with autonegotiation.

The second option (hard-coding all device-speed and duplex settings) may be a good one for a server farm. This is because you will always know that your devices are operating at a certain speed and duplex, or not operating at all. However, I would never try to set all PCs, for example, to have hard-coded speed and duplex settings -- it would be a management nightmare.

How do I configure autonegotiation?
On a PC, you would go to your network interface's properties. Click on the "configure" button next to your network interface's description. Then set the "link speed & duplex" on the "advanced" tab to Auto. Here is a screenshot:

On a Cisco switch, you would go to the Interface's configuration and just use the command speed auto, like this:

Switch#config terminal
Enter configuration commands, one per line.  End with CNTL/Z.
Switch(config)#int fa0/2 
Switch(config-if)#
Switch(config-if)#spee
Switch(config-if)#speed ?
  10    Force 10 Mbps operation
  100   Force 100 Mbps operation
  auto  Enable AUTO speed configuration

Switch(config-if)#speed auto

About the author:
David Davis (CCIE #9369, CWNA, MCSE, CISSP, Linux+, CEH) has been in the IT industry for 15 years. Currently, he manages a group of systems/network administrators for a privately owned retail company and authors IT-related material in his spare time. He has written more than 100 articles, eight practice tests and three video courses, and he has co-authored one book. His Web site is www.happyrouter.com.

Dig Deeper on Network infrastructure