ncStateByRa4Probe - Verifying State Machine: RA vs. PROBE
Host only
ncStateByRa4Probe.seq [-tooloption ...] -p ncStateByRa4Probe.def
TN NUT ----------------------
State: NONCE (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 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)
Wait (REACHABLE_TIME * MAX_RANDOM_FACTOR)
State: STALE ==== echo-request ===> src=TN's link-local dst=NUT's link-local
<=== echo-reply ==== src=NUT's link-local dst=TN's link-local timeout=2 sec
State: DELAY (for TN)
Wait (DELAY_FIRST_PROBE_TIME)
State: PROBE (for TN)
TN NUT ----------------------
State: NONCE (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 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)
Wait (REACHABLE_TIME * MAX_RANDOM_FACTOR)
State: STALE (for TN) ==== echo-request ===> src=TN's link-local dst=NUT's link-local
<=== echo-reply ==== src=NUT's link-local dst=TN's link-local timeout=2 sec
State: DELAY (for TN)
Wait (DELAY_FIRST_PROBE_TIME)
State: PROBE (for TN)
ncStateByRa4Stale verifies that state transition for a NUT in PROBE state when receiving a RA.
TN NUT ----------------------
State: PROBE (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
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.
========================+=================================+============== RA | Neighbor Cache | ------------+-----------+---------+-----------+-----------+ Destination | TLLA | Current | New | LLA | ============+===========+=========+===========+===========+============== all-node | none | PROBE | unchanged | unchanged | Not mentioned | | | | | in RFC2461 ------------+-----------+---------+-----------+-----------+-------------- all-node | same | PROBE | unchanged | unchanged | ------------+-----------+---------+-----------+-----------+-------------- all-node | different | PROBE | STALE | updated | ============+===========+=========+===========+===========+==============
N/A
The test does not invoke any remote command.
perldoc V6evalTool perldoc V6evalRemote