NAME

ncStateByNa4Incomplete - Verifying State Machine: NA vs. INCOMPLETE


TARGET

Host and Router


INITIALIZATION

Set the state of neighbor cache entry to INCOMPLETE.

  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)


TEST PROCEDURE

ncStateByNa4Incomplete verifies that state transition for a NUT in INCOMPLETE state when receiving a NA.

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

State: INCOMPLETE (for TN)
==== NA ===> src=TN's link-local dst=NUT's link-local or all-node w/o or w/ TLLA r=0, s=0/1, o=0/1
Judgment: Examining NUT's neighbor cache state


JUDGMENT

  ===============================+===============+=============
  NA                             |New State      |cached LLA
  --------------+-+--+-+---------+               |
  Destination   |r| s|o|TLLA     |               |
  ==============+=+==+=+=========+===============+=============
  Unicast        0  0 0 none      INCOMPLETE      unchanged
  --------------+-+--+-+---------+---------------+-------------
  Unicast        0  0 1 none      INCOMPLETE      unchanged
  --------------+-+--+-+---------+---------------+-------------
  Unicast        0  1 0 none      INCOMPLETE      unchanged
  --------------+-+--+-+---------+---------------+-------------
  Unicast        0  1 1 none      INCOMPLETE      unchanged
  ==============+=+==+=+=========+===============+=============
  Unicast        0  0 0 exist     STALE           *updated
  --------------+-+--+-+---------+---------------+-------------
  Unicast        0  0 1 exist     STALE           *updated
  --------------+-+--+-+---------+---------------+-------------
  Unicast        0  1 0 exist     REACHABLE       *updated
  --------------+-+--+-+---------+---------------+-------------
  Unicast        0  1 1 exist     REACHABLE       *updated
  ==============+=+==+=+=========+===============+=============
  *Multicast     0  0 0 *none     INCOMPLETE      unchanged
                 *invalid
  --------------+-+--+-+---------+---------------+-------------
  *Multicast     0  0 1 *none     INCOMPLETE      unchanged
                 *invalid
  --------------+-+--+-+---------+---------------+-------------
  *Multicast     0 *1 0 *none     INCOMPLETE      unchanged
                 *invalid
  --------------+-+--+-+---------+---------------+-------------
  *Multicast     0 *1 1 *none     INCOMPLETE      unchanged
                 *invalid
  ==============+=+==+=+=========+===============+=============
  Multicast      0  0 0 exist     STALE           *updated
  --------------+-+--+-+---------+---------------+-------------
  Multicast      0  0 1 exist     STALE           *updated
  --------------+-+--+-+---------+---------------+-------------
  *Multicast     0 *1 0 exist     INCOMPLETE      unchanged
                 *invalid
  --------------+-+--+-+---------+---------------+-------------
  *Multicast     0 *1 1 exist     INCOMPLETE      unchanged
                 *invalid
  ==============+=+==+=+=========+===============+=============


TERMINATION

  N/A


NOTE

  The test does not invoke any remote command.


REFERENCE

RFC2461

7.2.5. Receipt of Neighbor Advertisements
If the target's Neighbor Cache entry is in the INCOMPLETE state when the advertisement is received, one of two things happens. If the link layer has addresses and no Target Link-Layer address option is included, the receiving node SHOULD silently discard the received advertisement. Otherwise, the receiving node performs the following steps:
- It records the link-layer address in the Neighbor Cache entry.
- If the advertisement's Solicited flag is set, the state of the entry is set to REACHABLE, otherwise it is set to STALE.
- It sets the IsRouter flag in the cache entry based on the Router flag in the received advertisement.
- It sends any packets queued for the neighbor awaiting address resolution.
Note that the Override flag is ignored if the entry is in the INCOMPLETE state.


SEE ALSO

  perldoc V6evalTool
  perldoc V6evalRemote