NAME

ncStateByNs4Stale - Verifying State Machine: NS vs. STALE


TARGET

Host and Router


SYNOPSIS

  ncStateByNs4Stale.seq [-tooloption ...] -p ncStateByNs4Stale.def


INITIALIZATION

  1. Set the state of neighbor cache entry to REACHABLE.
  2. Cache either TN's LLA, or a bogus LLA


Cache a LLA of 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 w/ SLLA timeout: RETRANS_TIMER * MAX_MULTICAST_SOLICIT
==== solicited NA ===> src=TN's link-local dst=NUT's link-local target=TN's link-local TLLA=TN's LLA
State: REACHABLE (for TN)
<=== echo-reply ==== src=NUT's link-local dst=TN's link-local timeout: 2 sec
Wait (REACHABLE_TIME * MAX_RANDOM_FACTOR)
State: STALE (for TN)


Cache a bogus LLA

  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 w/ SLLA timeout: RETRANS_TIMER * MAX_MULTICAST_SOLICIT
==== solicited NA ===> src=TN's link-local dst=NUT's link-local target=TN's link-local TLLA=a bogus LLA
State: REACHABLE (for TN)
<=== echo-reply ==== src=NUT's link-local dst=TN's link-local timeout: 2 sec
Wait (REACHABLE_TIME * MAX_RANDOM_FACTOR)
State: STALE (for TN)


TEST PROCEDURE

ncStateByNs4Stale verifies that state transition in STALE state when receiving a NS.

  TN                 NUT
  ----------------------

State: STALE (for TN)
==== NS ===> src=TN's link-local dst=NUT's link-local or solicited-node[NUT's link-local] w/o or w/ SLLA
Judgment: Examining NUT's neighbor cache state


JUDGMENT


7.2.3. Receipt of Neighbor Solicitations
A valid Neighbor Solicitation that does not meet any the following requirements MUST be silently discarded:
- The Target Address is a "valid" unicast or anycast address assigned to the receiving interface [ADDRCONF],
- The Target Address is a unicast address for which the node is offering proxy service, or
- The Target Address is a "tentative" address on which Duplicate Address Detection is being performed [ADDRCONF].
If the Target Address is tentative, the Neighbor Solicitation should be processed as described in [ADDRCONF]. Otherwise, the following description applies. If the Source Address is not the unspecified address and, on link layers that have addresses, the solicitation includes a Source Link-Layer Address option, then the recipient SHOULD create or update the Neighbor Cache entry for the IP Source Address of the solicitation. If an entry does not already exist, the node SHOULD create a new one and set its reachability state to STALE as specified in Section 7.3.3. If an entry already exists, and the cached link-layer address differs from the one in the received Source Link-Layer option, the cached address should be replaced by the received address and the entry's reachability state MUST be set to STALE.
===============================+==========+=========+================= NS |New State |LLA Comments ---------+-----------+---------+ | Source IP|Destination|SLLA | | |IP | | | =========+===========+=========+==========+=========+================= TN's link Unicast none STALE unchanged Not mentioned in RFC2461 ---------+-----------+---------+----------+---------+----------------- TN's link Unicast same STALE unchanged ---------+-----------+---------+----------+---------+----------------- TN's link Multicast same STALE unchanged =========+===========+=========+==========+=========+================= TN's link Unicast different STALE changed ---------+-----------+---------+----------+---------+----------------- TN's link Multicast different STALE changed =========+===========+=========+==========+=========+=================


TERMINATION

  N/A


NOTE

  The test does not invoke any remote command.


SEE ALSO

  perldoc V6evalTool
  perldoc V6evalRemote