- A link-local address is generated using the prefix FE80 combined with either the interface identifier or the privacy option. The address now is in tentative state.
- The interface joins the following multicast groups: all-nodes (FF02::1) and the solicited-node multicast address for the address generated in step 1.
- A neighbor solicitation message is sent aus with the tentative address as target address. The IPv6 source address is the unspecified address (::0). The destination address is the solicited node multicast address. This way the interface checks, whether someone else is using this address on the link. It is the duplicate address detection test (DAD). If there is no answer, it means the address is unique on the link. The address is assigned to the interface and set to preferred state.
- The interface sends out a router solicitation message in order to detect the routers on the link. It is sent from the preferred address to the all-routers multicast address (FF02::2). Only hosts perform this step.
- Routers on the link answer the packet depending on their configuration. For each prefix in the reply with the A-lag (autonomous flag) set, the interface configures an IP address. The addresses are added to the list of assigned addresses for the interface.
The solicited node multicast address:
This address is formed from the low-order 24 bits of the IPv6 address and the prefix FF02:0:0:0:0:1:FF00::/104.
Our host Pluto has the IPv6 address of FE80::0208:C7FF:FEC5:5E7A. The corresponding solicited-node multicast address is FF02::1:FFC5:5E7A.
As each interface has to register each IPv6 address with the solicited node multicast address (step 2 above), it will always receive packets sent to this address.
This was first published in December 2004