NAME

sendNsBasicLinkGlob - Verify that NUT send NSs (globl ==> link)


TARGET

Host and Router


SYNOPSIS

  sendNsBasicLinkGlob.seq [-tooloption ...] -p sendNsBasicLinkGlob.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 link-local
       dst=NUT's global

  ==== solicited NA ===>
       src=TN's link-local
       dst=NUT's global
       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 link-local
       dst=NUT's global

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

  State: REACHABLE (for TN)


TEST PROCEDURE

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


JUDGMENT


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

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

  3. NUT must send at the least one multicast NS:
     sec: global(SHOULD), dst: sol-node[link], 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 NUT "PASS" even if NUT sends a NS whose source
     address is not global 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