# NAME

ncStateByRs4Probe - Verifying State Machine: RS vs. PROBE

# TARGET

      Router Only

# SYNOPSIS

      ncStateByRs4Probe.seq [-tooloption ...] -p ncStateByRs4Probe.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)

      ==== 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)

## 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)

      ==== 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)

# TEST PROCEDURE

ncStateByRs4Probe verifies that state transition for a NUT in PROBE state when receiving an RS.

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

      State: PROBE (for TN)

      ==== RS ===>

      Judgment: Examining NUT's neighbor cache state

# JUDGMENT

      ===============================+==========+=========+=================
      RS                             |New State |LLA       Comments
      ---------+-----------+---------+          |
      Source IP|Destination|SLLA     |          |
               |IP         |         |          |
      =========+===========+=========+==========+=========*=================
      TN's link all-router  none      PROBE      unchanged Not mentioned
                                                           in RFC2461
      ---------+-----------+---------+----------+---------+-----------------
      TN's link all-router  same      PROBE      unchanged
      ---------+-----------+---------+----------+---------+-----------------
      TN's link all-router  different STALE      updated
      =========+===========+=========+==========+=========+=================

# TERMINATION

      N/A

# NOTE

      TBD

# REFERENCE

    6.2.6.  Processing Router Solicitations

       Router Solicitations in which the Source Address is the unspecified
       address MUST NOT update the router's Neighbor Cache; solicitations
       with a proper source address update the Neighbor Cache as follows. If
       the router already has a Neighbor Cache entry for the solicitation's
       sender, the solicitation contains a Source Link-Layer Address option,
       and the received link-layer address differs from that already in the
       cache, the link-layer address SHOULD be updated in the appropriate
       Neighbor Cache entry, and its reachability state MUST also be set to
       STALE.  If there is no existing Neighbor Cache entry for the
       solicitation's sender, the router creates one, installs the link-
       layer address and sets its reachability state to STALE as specified
       in Section 7.3.3.  Whether or not a Source Link-Layer Address option
       is provided, if a Neighbor Cache entry for the solicitation's sender
       exists (or is created) the entry's IsRouter flag MUST be set to
       FALSE.

# SEE ALSO

      perldoc V6evalTool
      perldoc V6evalRemote