ncStateByRa4Reachable - Verifying State Machine: RA vs. REACHABLE
Host only
TN NUT ----------------------
State: No neighbor cache entry (for TN)
==== echo-request ===> src=TN's link-local dst=NUT's link-local
State: INCOMPLETE (for TN)
<=== multicast NS ==== src=NUT's link-local or global dst=solicited-node[TN's link-local] target=TN's link-local SLLA=NUT's LLA timeout: RETRANS_TIMER * MAX_MULTICAST_SOLICIT
==== solicited NA ===> src=TN's link-local dst=NUT's link-local R=0, S=1, O=1 target=TN's link-local TLLA=TN's LLA
State: REACHABLE (for TN)
TN NUT ----------------------
State: No neighbor cache entry (for TN)
==== echo-request ===> src=TN's link-local dst=NUT's link-local
State: INCOMPLETE (for TN)
<=== multicast NS ==== src=NUT's link-local or global dst=solicited-node[TN's link-local] target=TN's link-local SLLA=NUT's LLA timeout: RETRANS_TIMER * MAX_MULTICAST_SOLICIT
==== solicited NA ===> src=TN's link-local dst=NUT's link-local R=0, S=1, O=1 target=TN's link-local TLLA=bogus LLA
State: REACHABLE (for TN)
ncStateByRa4Reachable verifies that state transition for a NUT in REACHABLE state when receiving a RA.
TN NUT ----------------------
State: REACHABLE (for TN)
==== RA ===> src=TN's link dst=all-node RouterLifetime=600 ReachableTime=0 RetransTimer=0 M=0, O=0 w/o or w/ TLLA
Judgment: Examining NUT's neighbor cache state
========================+===================================+==============
RA | Neighbor Cache | Comment
------------+-----------+-----------+-----------------------+
Destination | TLLA | Current | New | LLA |
============+===========+===========+===========+===========+==============
all-node | none | REACHABLE | unchanged | unchanged | Not mentioned
| | | | | in RFC2461
------------+-----------+-----------+-----------+-----------+--------------
all-node | same | REACHABLE | unchanged | unchanged |
------------+-----------+-----------+-----------+-----------+--------------
all-node | different | REACHABLE | STALE | updated |
============+===========+===========+===========+===========+==============
TERMINATION
N/A
NOTE
The test does not invoke any remote command.
REFERENCE
RFC2461
6.3.4. Processing Received Router Advertisements
After extracting information from the fixed part of the Router
Advertisement message, the advertisement is scanned for valid
options. If the advertisement contains a Source Link-Layer Address
option the link-layer address SHOULD be recorded in the Neighbor
Cache entry for the router (creating an entry if necessary) and the
IsRouter flag in the Neighbor Cache entry MUST be set to TRUE. If no
Source Link-Layer Address is included, but a corresponding Neighbor
Cache entry exists, its IsRouter flag MUST be set to TRUE. The
IsRouter flag is used by Neighbor Unreachability Detection to
determine when a router changes to being a host (i.e., no longer
capable of forwarding packets). If a Neighbor Cache entry is created
for the router its reachability state MUST be set to STALE as
specified in Section 7.3.3. If a cache entry already exists and is
updated with a different link-layer address the reachability state
MUST also be set to STALE.
APPENDIX C: STATE MACHINE FOR THE REACHABILITY STATE
State Event Action New state
- NS, RS, RA, Redirect Create entry. STALE
INCOMPLETE NS, RS, RA, Redirect Record link-layer STALE
address. Send queued
packets.
!INCOMPLETE NS, RS, RA, Redirect Update link-layer STALE
Different link-layer address
address than cached.
!INCOMPLETE NS, RS, RA, Redirect - unchanged
Same link-layer
address as cached.
SEE ALSO
perldoc V6evalTool
perldoc V6evalRemote