NAME

sendNsBasicGlobLink - Verify that NUT send NSs (link ==> global)


TARGET

Host and Router


SYNOPSIS

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


INITIALIZATION


A CASE OF A HOST

  1. Set a global prefix (3ffe:501:ffff:100::/64) with RA.
  2. Set NC state for TN to REACHABLE

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

  State: any (for TN, X)

  ==== multicast RA ===>
       src=X's link-local
       dst=all-node
       M=0, O=0,
       Lifetime=600, ReachableTime=0, RetransTimer=0
       w/ SLLA
       Prefix:
           F=1, A=1,
           ValidLifetime=2592000, PreferredLifetime=604800
           Prefix=3ffe:501:ffff:100::, PrefixLength=64

  Wait (3 sec.)
        Ignoring DAD packets.

  State: any (for TN), STALE (for X)

  ==== echo-request ===>
       src=TN's global
       dst:NUT's link-local

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

  State: REACHABLE (for TN), STALE (for X)


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. Set NC state for TN to REACHABLE

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

  State: any (for TN)

  ==== echo-request ===>
       src=TN's global
       dst:NUT's link-local

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

  State: REACHABLE (for TN)


TEST PROCEDURE

sendNsBasicGlobLink verifies that NUT send valid NSs in both INCOMPLETE state and PROBE state.

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

State: REACHABLE (for TN)
Wait (REACHABLE_TIME * MAX_RANDOM_FACTOR)
State: STALE (for TN)
==== echo-request ===> src=TN's global dst=NUT's link-local
<=== Judgment #1: echo-reply ==== src=NUT's link dst=TN's global timeout: 2 sec
State: DELAY (for TN)
Wait (DELAY_FIRST_PROBE_TIME)
State: PROBE (for TN)
<=== Judgment #2: unicast NS ==== src=NUT's link-local or global dst=TN's global w/ or w/o SLLA timeout: RETRANS_TIMER * MAX_UNICAST_SOLICIT
State: NONCE (for TN)
==== echo-request ===> src=TN's global dst:NUT's link-local
State: INCOMPLETE (for TN)
<=== Judgment #3: multicast NS ==== src=NUT's link-local dst=sol-node[TN's global] w/ SLLA timeout: RETRANS_TIMER * MAX_MULTICAST_SOLICIT
State: NONCE (for TN)


JUDGMENT


  1. NUT must send an echo-reply:
     src: link, dst: global

  2. NUT must send at the most three unicast NS:
     src: link/global, dst: global, w/ or w/o SLLA

  3. NUT must send at the most three multicast NS:
     src: link(SHOULD), dst: sol-node[global], w/ SLLA


TERMINATION

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


NOTE


  1. RFC2461 does not describe the case where a NS sends in PROBE state
     The test judges "PASS" even if NUT sends an NS whose source
     address is not link-local when PROBE state.

  2. The test does not invoke any remote command.


REFERENCE

RFC2461

7.2.2. Sending Neighbor Solicitations
When a node has a unicast packet to send to a neighbor, but does not know the neighbor's link-layer address, it performs address resolution. For multicast-capable interfaces this entails creating a Neighbor Cache entry in the INCOMPLETE state and transmitting a Neighbor Solicitation message targeted at the neighbor. The solicitation is sent to the solicited-node multicast address corresponding to the target address.
If the source address of the packet prompting the solicitation is the same as one of the addresses assigned to the outgoing interface, that address SHOULD be placed in the IP Source Address of the outgoing solicitation. Otherwise, any one of the addresses assigned to the interface should be used. Using the prompting packet's source address when possible insures that the recipient of the Neighbor Solicitation installs in its Neighbor Cache the IP address that is highly likely to be used in subsequent return traffic belonging to the prompting packet's "connection".


SEE ALSO

  perldoc V6evalTool
  perldoc V6evalRemote