Optimistic Duplicate Address Detection (DAD) for IPv6
updated by
- rfc-7527 — Enhanced Duplicate Address Detection
Extracted elements (23)
Neighbor Solicitations are never sent from an Optimistic Address because NSes include a Source Link-Layer Address Option (SLLAO), which would update neighbors' Neighbor Cache entries and could disrupt the rightful owner of the address in a collision scenario. DAD NSes use the unspecified address (::) and omit the SLLAO, so they are safe.
Optimistic addresses are treated equivalently to Deprecated addresses by default, indicating they are available but should not be preferred. This reuse of the Deprecated semantics allows Default Address Selection (RFC 3484) to prefer other addresses without requiring a new selection rule; implementations can simply set the Deprecated flag alongside the Optimistic flag.
Optimistic DAD is justified by the extremely low probability of address collision when using randomly or hash-generated Interface Identifiers from a 2^62-element space. Birthday-paradox analysis shows collision probability below 5.4e-8 even for networks of 500,000 nodes, making it safe to begin using an address before DAD completes.
The Override flag (O=0) is cleared in all Neighbor Advertisements sent from an Optimistic Address. This prevents neighbors from overriding existing NC entries with the Optimistic Node's link-layer address; the mechanism reuses the existing Override flag already defined in RFC 2461 for Proxy Neighbor Advertisement.
When an Optimistic Node cannot reach a neighbor directly (because it cannot send an NS), it forwards packets via its default router and relies on the router to issue an ICMP Redirect with a Target Link-Layer Address Option (TLLAO). This populates the ON's Neighbor Cache without requiring a direct NS from the Optimistic Address.
If a node with only Optimistic Addresses cannot obtain the router's link-layer address (because the RA omitted the SLLAO and the node cannot send an RS with SLLAO or an NS), the node is unable to communicate until at least one address is no longer Optimistic.
Optimistic DAD behavior is dependent on router support: the router must include SLLAOs in Router Advertisements and must be willing to redirect traffic on behalf of the Optimistic Node. Where a router does not behave in this way, Optimistic DAD inherently reverts to Standard DAD behavior.
Optimistic DAD is designed to be fully interoperable with Standard Nodes (compliant with RFC 2461 and RFC 2462). Once an Optimistic Address completes DAD it behaves identically to a normal address; interoperation issues only arise during the Optimistic phase itself, and the protocol ensures Standard Nodes' Neighbor Caches are not corrupted.
A host MAY configure a new address as Optimistic. A host that does not know the SLLAO of its router SHOULD NOT configure a new address as Optimistic. A router SHOULD NOT configure an Optimistic Address.
A node MUST NOT reply to a Neighbor Solicitation for an Optimistic Address that was sent from the unspecified address (::). Receipt of such an NS indicates an address collision (another node is also performing DAD for the same address), and the address MUST be deconfigured as specified in RFC 2462 for Tentative addresses.
A node MUST NOT send a Router Solicitation with a Source Link-Layer Address Option (SLLAO) from an Optimistic Address. Router Solicitations SHOULD be sent from a non-Optimistic or the Unspecified Address; they MAY be sent from an Optimistic Address only if the SLLAO is omitted.
A node MUST NOT use an Optimistic Address as the source address of a Neighbor Solicitation. This prevents the SLLAO included in NSes from disrupting neighbors' Neighbor Cache entries for an address that may legitimately belong to another node.
A node MUST reply to a Neighbor Solicitation for an Optimistic Address sent from a unicast address, but the Neighbor Advertisement reply MUST have the Override flag cleared (O=0) to prevent overriding the NC entry of the legitimate owner of the address in the case of a collision.
If an Optimistic Node cannot determine the router's SLLAO without violating the rules above (no NS, no RS with SLLAO), it MUST leave the address Tentative until DAD completes rather than using it as an Optimistic Address.
Optimistic DAD SHOULD only be used when the implementation is aware that the address is based on a most-likely-unique interface identifier, such as one derived from a hardware address (RFC 2464), generated randomly (RFC 3041), produced by a well-distributed hash (RFC 3972), or assigned by DHCPv6. Optimistic DAD SHOULD NOT be used for manually entered addresses.
The host MUST join the all-nodes multicast address and the solicited-node multicast address of the Tentative address, and SHOULD NOT delay before sending Neighbor Solicitation messages, eliminating the RetransTimer delay that is the primary motivation for Optimistic DAD.
The Optimistic Address is configured and available for use on the interface immediately upon beginning DAD, and MUST be flagged as 'Optimistic' to distinguish it from Preferred and Deprecated addresses.
When a node has a unicast packet to send from an Optimistic Address to a neighbor whose link-layer address is unknown, it MUST NOT perform Address Resolution. It SHOULD forward the packet to a default router (relying on ICMP Redirect), or otherwise SHOULD buffer the packet until DAD completes.
Optimistic address is a new address state introduced by this memo: an address assigned to an interface and available for use (subject to restrictions) while its uniqueness on a link is being verified via DAD. It differs from Tentative (not usable) and Preferred (unrestricted).
An Optimistic Node can inject IP packets that appear to originate from an address it does not yet legitimately own, effectively spoofing the legitimate holder. This may cause errors or operational problems at the receiving end, though upper-layer protocols are generally expected to handle such duplicate or misdirected packets robustly.
Optimistic DAD does not significantly increase existing Neighbor Discovery or SLAAC security concerns. Secure Neighbor Discovery (SEND, RFC 3971) provides protection against ND threats and introduces no additional attack surface when combined with Optimistic DAD.
There are scenarios where Optimistic DAD can transiently create incorrect Neighbor Cache entries. For example, if a router sends an NS for an address and the Optimistic Node responds before the legitimate owner, the router may forward queued packets to the wrong host. These conditions are expected to be short-lived.
An address transitions through states: Tentative (DAD in progress, not usable) → Optimistic (DAD in progress, usable with restrictions, entered by choice at DAD start) → Preferred or Deprecated (DAD complete, per RFC 2462 lifetime rules). If a collision is detected (NS from :: received, or NA received from collidee), the Optimistic address is immediately deconfigured.