pub enum DynamicNeighborState<D: LinkDevice, BT: NudBindingsTypes<D>> {
Incomplete(Incomplete<D, BT::Notifier>),
Reachable(Reachable<D, BT::Instant>),
Stale(Stale<D>),
Delay(Delay<D>),
Probe(Probe<D>),
Unreachable(Unreachable<D>),
}
Expand description
The state of a dynamic entry in the neighbor cache within the Neighbor Unreachability Detection state machine, defined in RFC 4861 section 7.3.2 and RFC 7048 section 3.
Variants§
Incomplete(Incomplete<D, BT::Notifier>)
Address resolution is being performed on the entry.
Specifically, a probe has been sent to the solicited-node multicast address of the target, but the corresponding confirmation has not yet been received.
Reachable(Reachable<D, BT::Instant>)
Positive confirmation was received within the last ReachableTime
milliseconds that the forward path to the neighbor was functioning
properly. While Reachable
, no special action takes place as packets
are sent.
Stale(Stale<D>)
More than ReachableTime milliseconds have elapsed since the last positive confirmation was received that the forward path was functioning properly. While stale, no action takes place until a packet is sent.
The Stale
state is entered upon receiving an unsolicited neighbor
message that updates the cached link-layer address. Receipt of such a
message does not confirm reachability, and entering the Stale
state
ensures reachability is verified quickly if the entry is actually being
used. However, reachability is not actually verified until the entry is
actually used.
Delay(Delay<D>)
A packet has been recently sent to the neighbor, which has stale reachability information (i.e. we have not received recent positive confirmation that the forward path is functioning properly).
The Delay
state is an optimization that gives upper-layer protocols
additional time to provide reachability confirmation in those cases
where ReachableTime milliseconds have passed since the last confirmation
due to lack of recent traffic. Without this optimization, the opening of
a TCP connection after a traffic lull would initiate probes even though
the subsequent three-way handshake would provide a reachability
confirmation almost immediately.
Probe(Probe<D>)
A reachability confirmation is actively sought by retransmitting probes every RetransTimer milliseconds until a reachability confirmation is received.
Unreachable(Unreachable<D>)
Similarly to the Probe
state, a reachability confirmation is actively
sought by retransmitting probes; however, probes are multicast to the
solicited-node multicast address, using a timeout with exponential
backoff, rather than unicast to the cached link address. Also, probes
are only transmitted as long as packets continue to be sent to the
neighbor.