NAME

sendUcastNS2 - Verify that NUT sends unicast NSs by RetransTimer=3sec.


TARGET

Host and Router

Host only


INITIALIZATION


A CASE OF A HOST

  1. Send RA with RetransTimer=3sec to initiate NUT's retrans timer.
  2. Clear a neighbor cache entry for TN

  TN                   NUT
  ------------------------
  ==== unsolicited RA ===>
        src=X's link-local
        dst=all-node
        M=0, O=0
        Lifetime=600, ReachableTime=0, RetransTimer=3000


A CASE OF A ROUTER

  Clear a neighbor cache entry for TN


TEST PROCEDURE

sendUcastNS2 verifies NUT send unicast NSs by the rules that are configured by RA (in host case) or manual (in router cast).

  TN(or X)	  NUT
  ---------------------

State: No neighbor cache entry
==== echo-request ===> src=TN's link-local dst=NUT's link-local
State: INCOMPLETE
<=== Judgment #1: multicast NS === src=NUT's link-local or global dst=solicited-node[TN's link-local] w/ SLLA timeout: 3 sec * MAX_MULTICAST_SOLICIT
==== solicited NA ===> src=TN's link-local dst=NUT's link-local R=0, S=1, O=1 w/ TLLA
State: REACHABLE
<=== Judgment #2: echo-reply ==== src=NUT's link-local dst=TN's link-local
Wait (REACHABLE_TIME * MAX_RANDOM_FACTOR)
State: STALE
==== echo-request ===> src=TN's link-local dst=NUT's link-local
<=== Judgment #3: echo-reply ==== src=NUT's link-local dst=TN's link-local
Wait (DELAY_FIRST_PROBE_TIME)
State: PROBE
<=== Judgment #4: unicast NS ==== src=NUT's link-local or global dst=TN's link-local w/ or w/o SLLA
<=== Judgment #4: unicast NS ==== src=NUT's link-local or global dst=TN's link-local w/ or w/o SLLA
<=== Judgment #4: unicast NS ==== src=NUT's link-local or global dst=TN's link-local w/ or w/o SLLA


JUDGMENT


  1. NUT must send at the least one multicast NS:
     src=NUT's link-local or global, dst=solicited-node[TN's link-local], w/ SLLA

  2. NUT must send an echo-reply:
     src=NUT's link-local, dst=TN's link-local

  3. NUT must send an echo-reply:
     src=NUT's link-local, dst=TN's link-local

  4. NUT must send multicast NSs:
     src=NUT's link-local or global, dst=TN's link-local, w/ or w/o SLLA

4.1. The Number of the unicast NSs <= MAX_UNICAST_SOLICIT(3)
4.2. Intervals between the unicast NSs >= 3.0 sec.


TERMINATION


A CASE OF A HOST

  1. Set NUT's retrans time to the default (1 sec) with RA with RetransTimer=1sec.
  2. Send RA with RouterLifetime=0 to flush the Default Router List.

  X                    NUT
  ------------------------
  ==== unsolicited RA ===>
        src=X's link-local
        dst=all-node
        M=0, O=0
        Lifetime=600, ReachableTime=0, RetransTimer=1000

  ==== unsolicited RA ===>
        src=X's link-local
        dst=all-node
        M=0, O=0
        Lifetime=0, ReachableTime=0, RetransTimer=0


A CASE OF A ROUTER

  N/A


NOTE

  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".
If the solicitation is being sent to a solicited-node multicast address, the sender MUST include its link-layer address (if it has one) as a Source Link-Layer Address option. Otherwise, the sender SHOULD include its link-layer address (if it has one) as a Source Link-Layer Address option. Including the source link-layer address in a multicast solicitation is required to give the target an address to which it can send the Neighbor Advertisement. On unicast solicitations, an implementation MAY omit the Source Link-Layer Address option. The assumption here is that if the sender has a peer's link-layer address in its cache, there is a high probability that the peer will also have an entry in its cache for the sender. Consequently, it need not be sent.
While waiting for address resolution to complete, the sender MUST, for each neighbor, retain a small queue of packets waiting for address resolution to complete. The queue MUST hold at least one packet, and MAY contain more. However, the number of queued packets per neighbor SHOULD be limited to some small value. When a queue overflows, the new arrival SHOULD replace the oldest entry. Once address resolution completes, the node transmits any queued packets.
While awaiting a response, the sender SHOULD retransmit Neighbor Solicitation messages approximately every RetransTimer milliseconds, even in the absence of additional traffic to the neighbor. Retransmissions MUST be rate-limited to at most one solicitation per neighbor every RetransTimer milliseconds.


SEE ALSO

  perldoc V6evalTool
  perldoc V6evalRemote