Imagine you want to set up a meeting with a potential employer in Japan while living in Alaska. You have several communication options like Skype, Vonage, FaceTime, and a cell phone. Your employer also has Skype, an international cell phone, and a landline. You both agree to use Skype for the meeting. This process is similar to autonegotiation in networking.
Autonegotiation is a method used in Ethernet connections where two devices communicate to agree on transmission settings, such as speed, duplex mode, and flow control. The connected devices send messages to each other to share their capabilities and then select the best performance option that both can support. This process happens at the physical layer, which is the first layer of the OSI model.
With autonegotiation, devices can choose different transmission rates and duplex modes, including half-duplex (where data can flow in both directions but not at the same time) and full-duplex (where data can flow in both directions simultaneously). Higher speeds and full-duplex are preferred whenever possible. If one device does not support autonegotiation, the device that does will select a speed that matches the other device, but it will default to half-duplex since full-duplex cannot be assumed. Standards for 1000BASE-T, 1000BASE-TX, and 10GBASE-T require that autonegotiation be enabled.
Example of Configuring a Router
Here’s an example of how to set a router for full-duplex operation at a speed of 100 Mbps:
Terminal Console output
R2(config-if)#int f0/0
R2(config-if)#no shut
R2(config-if)#duplex ?
auto Enable AUTO duplex configuration
full Force full duplex operation
half Force half-duplex operation
R2(config-if)#duplex full
R2(config-if)#speed ?
10 Force 10 Mbps operation
100 Force 100 Mbps operation
auto Enable AUTO speed configuration
R2(config-if)#speed 100
R2(config-if)#do sh int f0/0
FastEthernet0/0 is up, line protocol is up
Hardware is Gt96k FE, address is c402.484c.0000 (bia c402.484c.0000)
MTU 1500 bytes, BW 100000 Kbit/sec, DLY 100 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation ARPA, loopback not set
Keepalive set (10 sec)
Full-duplex, 100Mb/s, 100BaseTX/FX
Example of Autonegotiation on Another Router
Now, let’s see how to set up autonegotiation on another router, which negotiates to half-duplex and 10 Mbps:
Terminal Console output
R1(config-if)#int f0/0
R1(config-if)#duplex auto
R1(config-if)#speed auto
*Mar 1 00:08:55.523: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
*Mar 1 00:08:59.967: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
R1(config-if)#do sh int f0/0
FastEthernet0/0 is up, line protocol is up
Hardware is Gt96k FE, address is c401.4f4c.0000 (bia c401.4f4c.0000)
MTU 1500 bytes, BW 10000 Kbit/sec, DLY 1000 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation ARPA, loopback not set
Keepalive set (10 sec)
Half-duplex, 10Mb/s, 100BaseTX/FX
Important Note
In both examples, it’s crucial that the routers are set to autonegotiation, and that both duplex and speed settings match for the routers to successfully negotiate to full-duplex and 100 Mbps.