# NAME

recvNsBasic - Verifying that NUT acknowledges valid NSs

# TARGET

Host and Router

# SYNOPSIS

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

# CASE I. A valid NS with SLLA

recvNsBasic verify that NUT acknowledges a valid NS w/ SLLA, then returns a valid NA.

## INITIALIZATION

A CASE OF A HOST
  1. Set a global prefix (3ffe:501:ffff:100::/64) with RA.
  2. Clear NC state for TN.

        TN                   NUT
        ------------------------
        ==== unsolicited RA ===>
              src=X's link-local
              dst=NUT's link-local
              M=0, O=0
              LifeTime=600;
              ReachableTime=0;
              RetransTimer=0;
              Prefix Option:
                      L=1, A=1
                      ValidLifetime=2592000;
                      PreferredLifetime=604800;

A CASE OF A ROUTER
  1. NUT must be configured its interface under test (Link0) to have a global prefix of "3ffe:501:ffff:100::/64".
  2. Clear NC state for TN.

## TEST PROCEDURE

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

      State: NONCE

      ==== NS ===>
    	src=TN's link-local, global
    	dst=NUT's link-local or global or
                solicited-node[NUT's link-local] or
                solicited-node[global]
    	w/ SLL

      State: INCOMPLETE

      <=== Judgment #1: NA ====
    	src=NUT's link-local or global
    	dst=TN's link-local or global
    	w/ or w/o TLL

## JUDGMENT

      Input & output
      ===============================+===================================
       NS (input)                    | NA (expected)
      -------+---------------+-------+-----------+------+-+-+-+----------
       Src   | Dst           | SLLA  | Src       | Dst  |r|s|o| TLLA
      =======+===============+=======+===========+======+=+=+=+==========
      link    link            exist  |link        link   * 1 0 none
                                     |link        link   * 1 1 exist
      -------+---------------+-------+-----------+------+-+-+-+----------
      link    global          exist  |link/global link   * 1 0 none
                                     |link/global link   * 1 1 exist
      -------+---------------+-------+-----------+------+-+-+-+----------
      global  link            exist  |link/global global * 1 0 none
                                     |link/global global * 1 1 exist
      -------+---------------+-------+-----------+------+-+-+-+----------
      global  global          exist  |global      global * 1 0 none
                                     |global      global * 1 1 exist
      =======+===============+=======+===========+======+=+=+=+==========
      link    sol-node[link]  exist  |link/global link   * 1 1 exist
      -------+---------------+-------+-----------+------+-+-+-+----------
      link    sol-node[global]exist  |link/global link   * 1 1 exist
      -------+---------------+-------+-----------+------+-+-+-+----------
      global  sol-node[link]  exist  |link/global global * 1 1 exist
      -------+---------------+-------+-----------+------+-+-+-+----------
      global  sol-node[global]exist  |link/global global * 1 1 exist
      =======+===============+=======+===========+======+=+=+=+==========
      *If NUT is a host, r-flag must be the zero.
      *If NUT is a router, r-flag is must be the one.

# CASE II. A valid NS without SLLA

recvNsBasic verify that NUT acknowledges a valid NS w/o SLLA, then returns a valid NA.

## INITIALIZATION

      Clear NC state for TN.

## TEST PROCEDURE

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

      State: NONCE

      ==== unicast NS ===>
    	src=TN's link-local
    	dst=NUT's link-local
    	w/o SLL

      State: INCOMPLETE

      <=== Judgment #2: multicast NS ====
    	src=NUT's link-local or global
    	dst=solicited-node[TN's link-local]
    	w/ SLL

      ==== solicited NA ===>
    	src=TN's link-local
    	dst=NUT's link-local
    	R=0, S=1, O=1
    	w/ TLL

      State: REACHABLE

      <=== Judgment #3: solicited NA (if any) ====
    	src=NUT's link-local or global
    	dst=TN's link-local
    	R=0/1, S=1, O=0
    	w/ or w/o TLL

## JUDGMENT

      1. Input and output
      ===============================+===================================
       NS (input)                    | NA (expected)
      -------+---------------+-------+-----------+------+-+-+-+----------
       Src   | Dst           | SLLA  | Src       | Dst  |r|s|o| TLLA
      =======+===============+=======+===========+======+=+=+=+==========
      link    link            none   |link/global link   * 1 0 none
                                     |link/global link   * 1 0 exist
      =======+===============+=======+===========+======+=+=+=+==========
      *If NUT is a host, r-flag must be the zero.
      *If NUT is a router, r-flag is must be the one.

      2. NUT may send at the least one multicast NS.
         src=NUT's link-local, dst=solicited-node[TN's link-local], w/ SLL

      3. NUT may send a solicited NA.

         3.1. NUT is a host
              src=NUT's link-local, dst=TN's link-local,
              r=0, s=1, O=0, w/ or w/o TLL

         3.2. NUT is a router
              src=NUT's link-local, dst=TN's link-local,
              r=1, s=1, O=0, w/ or w/o TLL

# TERMINATION

      Send RA with RouterLifetime=0 to clear the Default Router List.

# NOTE

      1. The command does not invoke any remote command.

# REFERENCE

    RFC2461

    7.2.4.  Sending Solicited Neighbor Advertisements

       A node sends a Neighbor Advertisement in response to a valid Neighbor
       Solicitation targeting one of the node's assigned addresses.  The
       Target Address of the advertisement is copied from the Target Address
       of the solicitation.  If the solicitation's IP Destination Address is
       not a multicast address, the Target Link-Layer Address option MAY be
       omitted; the neighboring node's cached value must already be current
       in order for the solicitation to have been received.  If the
       solicitation's IP Destination Address is a multicast address, the
       Target Link-Layer option MUST be included in the advertisement.
       Furthermore, if the node is a router, it MUST set the Router flag to
       one; otherwise it MUST set the flag to zero.

       If the Target Address is either an anycast address or a unicast
       address for which the node is providing proxy service, or the Target
       Link-Layer Address option is not included, the Override flag SHOULD
       be set to zero.  Otherwise, the Override flag SHOULD be set to one.
       Proper setting of the Override flag ensures that nodes give
       preference to non-proxy advertisements, even when received after
       proxy advertisements, and also ensures that the first advertisement
       for an anycast address "wins".

       If the source of the solicitation is the unspecified address, the
       node MUST set the Solicited flag to zero and multicast the
       advertisement to the all-nodes address.  Otherwise, the node MUST set
       the Solicited flag to one and unicast the advertisement to the Source
       Address of the solicitation.

       If the Target Address is an anycast address the sender SHOULD delay
       sending a response for a random time between 0 and
       MAX_ANYCAST_DELAY_TIME seconds.

       Because unicast Neighbor Solicitations are not required to include a
       Source Link-Layer Address, it is possible that a node sending a
       solicited Neighbor Advertisement does not have a corresponding link-
       layer address for its neighbor in its Neighbor Cache.  In such
       situations, a node will first have to use Neighbor Discovery to
       determine the link-layer address of its neighbor (i.e, send out a
       multicast Neighbor Solicitation).

# SEE ALSO

      perldoc V6evalTool
      perldoc V6evalRemote