What is Auto-Negotiation?
 
In a nutshell, Auto-Negotiation is the process developed by the IEEE to enable devices with different technologies to communicate necessary information to one another in order to inter-operate. Auto-Negotiation is defined in section 28 of the IEEE 802.3u standard. The technologies currently supported by auto-negotiation are: 10BASE-T Half Duplex, 10BASE-T Full Duplex, 100BASE-TX Half Duplex, 100BASE-TX Full Duplex, and 100BASE-T4.
 
FLP Bursts
 
The basis for all of auto-negotiation's functionality is the Fast Link Pulse (FLP) burst. An FLP burst is simply a sequence of 10BASE-T Normal Link Pulses (NLPs, also known as Link Test Pulses in 10BASE-T world) that come together to form a message, or "word." Each FLP is composed of 33 pulse positions, with the 17 odd numbered positions corresponding to clock pulses and the 16 even numbered positions corresponding to data pulses. The time between pulse positions is 62.5µs +/- 7µs, and therefore 125µs +/- 14µs between each clock pulse.

All clock positions are required to contain a link pulse. However, data positions are not. If there is a link pulse present in a data position, it is representative of a logic one, whereas the lack of a link pulse is representative of a logic zero.

The amount of time between FLP bursts is 16ms +/- 8ms, which corresponds to the time between consecutive link test pulses produced by a 10BASE-T device. This was done to allow a fixed speed 10BASE-T device to see FLP bursts and, rather than croaking, remain in the LINK TEST PASS state.

Link Code Words (Base Pages)
 
The 16 data positions in an FLP burst come together to form one 16 bit word. The most important message sent in auto-negotiation is a device's Link Code Word (or Base Page). The breakdown of the bit positions in the link code word is shown in Figure 1:

Figure 1: Link Code Word

Selector Field: The first five bits of the link code word comprise the Selector Field. The Selector Field contains one of 32 possible combinations, only 2 of which are allowed to be sent, which follow:
 
1 0 0 0 0 = IEEE 802.3

0 1 0 0 0 = IEEE 802.9

The other 30 combinations are reserved for later use by the IEEE and should not be transmitted.

Technology Ability Field: The next 8 bits make up the Technology Ability Field. This is where a device advertises its abilities. The first five bits in the field represent the following technologies:

Bit Technology
A0 10BASE-T
A1 10BASE-T Full Duplex
A2 100BASE-TX
A3 100BASE-TX Full Duplex
A4 100BASE-T4

A logic one in any of these positions symbolizes that the device holds that technology. The device should advertise only the technologies that it supports.

The remaining three bits of the Technology Ability Field are reserved for future technologies and should not be transmitted as logic ones.

Remote Fault: This bit can be set to inform a station that a remote fault has occurred.

Acknowledge: This bit is set to confirm the receipt of at least 3 complete, consecutive and consistent FLP bursts from a station. This functionality will be discussed in detail later.

Next Page: This bit is set when a station wishes to participate in a Next Page exchange, a concept to be discussed later.


Figure 2: Sample Link Code Word

Priority Resolution Function
 
Once a device is aware of its link partner's abilities, it must decide what type of link to establish. In order to ensure that all devices will choose the same Highest Common Denominator (HCD) technology, they must implement the Priority Resolution Function. This function simply ranks the possible technologies and requires a device to choose the highest one supported. The ranking is as follows:
  1. 100BASE-TX Full Duplex
  2. 100BASE-T4
  3. 100BASE-TX
  4. 10BASE-T Full Duplex
  5. 10BASE-T
 
The Process
 
Now that you have all the pieces, it's time to assemble the puzzle. Here is the process by which a successful negotiation should take place:
  1. The two link partners transmit their FLP bursts containing their link code words without the Acknowledge bit set.
  2. The stations identify one another as auto-negotiation able within 6 to 17 (inclusive) pulses of the first received FLP burst.
  3. Following auto-negotiation able identification, the station waits for the reception of at least 3 complete, consecutive and consistent FLP bursts (ignoring the acknowledge bit of the FLPs), the stations enter the Acknowledge Detect state, and begin transmitting FLP bursts containing their link code word with the Acknowledge bit set.
  4. After reception of 3 more complete, consecutive and consistent FLP bursts containing a set Acknowledge bit, the stations enter the Complete Acknowledge state, and transmit 6 to 8 (inclusive) more FLP bursts containing their link code words with the Acknowledge bit set.
  5. After transmitting the 6 to 8 (inclusive) more FLP bursts, the stations will participate in Next Page exchange, if necessary (this process will be explained later).
  6. Upon completion of the optional Next Page exchange, the stations should resolve a HCD technology and negotiate to that link, if supported. If no common technologies are shared, no link is established.
 
Parallel Detection Function
 
The Parallel Detection Function is an auto-negotiating device's means to establish links with non-negotiating, fixed speed devices. If an auto-negotiating device receives either 10BASE-T or T4 Link Test Pulses or the idle stream of a TX device, it should do one of two things: either enable that PMA if it supports it, or refuse to establish a link. No FLPs necessary. A device can never parallel detect to a full duplex link, however.
 
Next Page Function
 
An optional additional feature to the auto-negotiation capability is the Next Page function. Next Pages are a means by which devices can transmit additional information beyond their link code words. Next Page exchange occurs after the stations transmit the 6 to 8 FLPs required after they have entered the Complete Acknowledge state. If two stations advertise the Next Page ability, then they are required to transmit at least one Next Page each. There are two types of Next Pages: Message pages and Unformatted pages. The encoding for each type of page is shown in Figure 3 and Figure 4.

Figure 3: Message Page Encoding

Figure 4: Unformatted Page Encoding

Message Code Field: This is an 11-bit wide field that can contain one of 2048 possible Message Codes. However, all but 6 are reserved for future use by the IEEE. The most important of these codes is 0 0 0 0 0 0 0 0 0 0 1, which corresponds to a Null Message. A Null Message is to be sent after a station is finished transmitting all of it's Next Pages. The remainder of the defined codes simply specify what type of Unformatted Pages are to be sent following the Message Page. The possible contents of Unformatted Pages to be advertised are: an extended Technology Ability Field, a Remote Fault message, an Organizationally Unique Identifier (OUI) tag code, or a PHY Identifier tag code.

Unformatted Code Field: This is an 11-bit wide field whose contents vary. Unformatted Pages are generally preceded by Message Pages that define what information is to be carried in their code field. The types of information to be conveyed were mentioned above. The format and sequencing of the Unformatted Pages is to be controlled by the specific device (not the IEEE, that is).

Toggle (T): This bit simply "toggles" between logic one and zero in consecutive Next Pages. It's purpose is to give a station assurance that it is receiving Next Pages in the proper order and has not missed any. The initial value of the Toggle bit is the opposite of bit 11 in the station's Link Code Word.

Acknowledge 2 (Ack2): This bit simply tells a station's link partner whether or not it is able to comply with a message. This bit is set to logic one if a station can comply with a message or zero if it can't.

Message Page (MP): This bit is used to differentiate between the two types of Next Pages: a logic zero indicates that it is an Unformatted Page, where a logic one indicates a Message Page.

Acknowledge (Ack): This bit should remain set to one throughout the Next Page process, provided that the Next Page process runs smoothly.

Next Page (NP): This bit simply indicates whether or not there are more Next Pages to come. When set to logic zero, it indicates that additional pages will follow, whereas a logic one indicates that there are no remaining pages.

The Next Page exchange concludes once both stations have transmitted all the information that they wish and both have begun to transmit Null Message Codes.

Testing Programs