Summary
- IPv6 Neighbor Unreachability Detection treated reachability as a claim requiring recent positive evidence. A cache entry became STALE when that evidence aged, but no packet was discarded and no probe was sent merely because a timer expired.
- Actual use moved STALE to DELAY, giving upper layers a chance to prove forward progress before unicast probes began. RFC 7048 later replaced the original quick deletion with an UNREACHABLE state and backed-off recovery when no alternative neighbor existed.
STALE was a statement about evidence, not life
Imagine a host that spoke to its first-hop router half a minute ago and then went quiet. The router's IPv6 address is still paired with a link-layer address in the Neighbor Cache. No new packet says the mapping is wrong. No link alarm says the path is broken. Only the last positive confirmation has grown old.
IPv6 named that condition STALE. The choice of word can mislead an operator reading a table: stale sounds defective. In the state machine standardized first in RFC 1970, retained by RFC 2461 and specified today by RFC 4861, it means something narrower. More than ReachableTime has elapsed since the forward path was positively confirmed. While the entry is stale, nothing happens until someone actually sends a packet through it.
That restraint was architectural. An unused cache may contain old information indefinitely without harming forwarding. Purging every quiet entry on a clock would convert inactivity into multicast address resolution, even when no application needed the neighbor. Correctness depended on testing the working set, not continuously certifying the whole table.
IPv6 asked whether the forward path had worked
NUD did not accept mere presence as proof. A Router Advertisement arriving from a router showed that one packet had travelled from the router to the host. An unsolicited Neighbor Advertisement did the same. Neither showed that a recent packet sent in the other direction had reached the neighbor's IP layer.
The specification therefore admitted two kinds of positive confirmation. One was a solicited Neighbor Advertisement answering the node's own Neighbor Solicitation. The request had to reach the neighbor and the answer had to return, giving evidence of both directions. The other came from an upper-layer protocol whose progress implied that recent traffic had crossed the next hop.
TCP supplied the clearest example. A new acknowledgment shows that earlier data reached the remote peer. New, non-duplicate data can show that earlier acknowledgments arrived there. For an off-link destination, either event implies that the first-hop router carried recent traffic. UDP and a router forwarding other people's packets may have no comparable hint, which is why explicit probing remained necessary.
The evidence was still bounded. It did not authenticate the neighbor, promise future availability or certify the application. It answered a local operational question: has the forward path to this next hop worked recently enough to keep using the cached binding without another test?
The first packet opened a grace period
When ReachableTime expired, REACHABLE became STALE. The next transmission used the cached link-layer address and moved the entry to DELAY. The default delay was five seconds.
That interval was not dead time. It allowed normal traffic to produce cheaper evidence. A TCP connection opened after a lull might complete enough of its handshake to confirm the path almost immediately. Sending a Neighbor Solicitation at the same instant would have duplicated information the transport was about to supply.
If forward progress arrived during DELAY, the entry returned to REACHABLE. If it did not, the node sent a unicast Neighbor Solicitation and entered PROBE. The destination was unicast because the cache still contained a link-layer binding; the question was whether that known path worked, not who owned the IPv6 address.
This sequence made doubt proportional to use. Time aged confidence. Traffic made the doubt relevant. A grace period invited existing communication to answer. Only unresolved, active doubt generated control traffic.
Even the timer resisted a single global rhythm
RFC 4861 defined a default base reachable time of 30 seconds, a one-second retransmission timer, a five-second first-probe delay and three unicast solicitations. But ReachableTime itself was randomized between one half and one and a half times the base. Router Advertisements could also supply nonzero base and retransmission values.
The random component mattered because thousands of nodes can share a link. If every confirmation expired on the same beat, their next traffic could produce a synchronized wave of checks. A public default therefore did not mean one universal wall-clock deadline.
Receiving a Router Advertisement could update the timer parameters, but it still could not confirm reachability. Configuration authority and operational evidence were kept separate: a router could suggest how long evidence should remain fresh without proving the path merely by making that suggestion.
Three quick probes proved too impatient
In RFC 4861's original conceptual machine, PROBE retransmitted a unicast solicitation at RetransTimer intervals. After the configured bound—three transmissions by default—the node discarded the Neighbor Cache entry. Future traffic then fell back to multicast address resolution or selected another first hop.
That was fast when alternatives existed. A host with two default routers should not cling to a silent one. But a temporary layer-2 interruption can outlast three one-second attempts. If the silent neighbor is the only path, deleting its entry does not reveal a better route. It replaces focused unicast checks with repeated multicast discovery and can make a recovering link busier.
RFC 6583 exposed the operational feedback loop. Address-resolution work for huge numbers of nonexistent IPv6 destinations could crowd out maintenance of entries already carrying traffic. If NUD solicitations or their answers were neglected, in-use entries could be flushed, triggering more multicast work and interrupting established flows. It recommended giving NUD higher priority than speculative creation of new entries.
RFC 7048 gave the defect a blunt title: “Neighbor Unreachability Detection Is Too Impatient.” Its repair introduced a conceptual UNREACHABLE state. After the normal threshold, the entry was no longer considered known reachable for next-hop selection, so an alternative could be explored. But the link-layer address could be retained, packets could continue using it when necessary, and solicitations could continue with exponential backoff.
The probes eventually had to become multicast so that a changed link-layer address could be found. They could stop when no packet was using the entry. An example algorithm spread attempts across 1, 4, 13 and 40 seconds and used 60 seconds as a possible maximum interval. Those numbers illustrated a conforming strategy; they were not a measurement of every implementation.
UNREACHABLE separated preference from abandonment
The later state made one distinction explicit. “I should prefer another next hop” and “I should stop trying this neighbor” are not the same decision.
Where a second router exists, early doubt should reopen next-hop selection. Where none exists, patience can preserve recovery from spanning-tree convergence, a transient wireless loss or another short layer-2 disturbance. Exponential backoff bounds the control cost without pretending that three missed packets prove permanent death.
This was a correction in consequences, not a retreat from evidence. A solicited answer or valid upper-layer progress still restored REACHABLE. An unsolicited announcement still could not do so. RFC 7048 changed what the node did after bounded failure, not what counted as positive proof.
The same messages asked different questions
Neighbor Solicitation and Neighbor Advertisement also serve Duplicate Address Detection, defined by RFC 4862. That reuse can blur two mechanisms.
DAD runs before a unicast address is assigned and asks whether another node already claims the tentative address. NUD runs for an already selected unicast neighbor and asks whether the forward path associated with a cached binding is still working. Silence during a bounded DAD procedure can permit assignment. Silence during NUD ages evidence and, once traffic makes the question urgent, escalates through delay and probes.
Neither mechanism proves identity. Neither grants ownership. Their strength comes from saying exactly which local observation can justify which local transition.
Sources and evidence limits
The history and state machine come from RFCs 1970, 2461 and 4861. The DAD boundary comes from RFC 4862; operational cache pressure from RFC 6583; the later retransmission repair from RFC 7048. These documents define standards and recommendations. They do not establish present vendor defaults, deployment share, table sizes, failure rates or conformance by any named network.
Member Briefing
Deeper Profile Context
Sign in with the right membership level to unlock the full briefing and source notes.
Only for Strategic Circle
Strategic Circle
Open to all readers. Unlock profile briefings after joining and signing in.
Join Strategic CircleOnly for Leadership Alliance
Leadership Alliance
For qualified IP-asset owners and management; sign in to unlock alliance briefings.
Join Leadership Alliance
