# NAME

hostRecvRaNHD - Verifying net-hop determination

# TARGET

Host only

# SYNOPSIS

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

# INITIALIZATION

1. Clear the Prefix List that was learned by RAs.
2. Clear the Default Router List.
3. Set its state to REACHABLE.
4. The Router Lifetime of a RA is ether 0 or 600.
5. A RA includes or excludes a prefix option.

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

      State: NONCE (for TN)

      ==== unsolicited RA ===>
           src=TN's link-local
           dst=all-node
           M=0, O=0
           RouterLifetime=0 or 600
           ReachableTime=0
           RetransTimer=0
           w/ SLLA
           w/o Prefix option or Prefix Option:
               L=1, A=1
               ValidLifetime=2592000
               PreferredLifetime=604800
               Prefix=3ffe:501:ffff:100::/64

      State: STALE (for TN)

      <=== Ns for DAD (if any) ====
           src=unspecified
           dst=solicited-node[NUT's global, prefix=3ffe:501:ffff:100::/64]
           target=NUT's global

      Wait (3 sec)

      ==== solicited NA ===>
            src=TN's link-local
            dst=NUT's link-local
            R=1, S=1, O=1
            target=TN's link-local
            TLLA=TN's LLA

      State: REACHABLE (for TN)

# TEST PROCEDURE

hostRecvRaNHD verifies next-hop determination for an unicast address:

- A case where a given address should be off-link
- A cast where a given address should be on-link

## Off-link

##

#

#

#

#

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

      State: REACHABLE (for TN)

      ==== echo-request ===>
           src=off-link global, but LLA is TN's one
           dst=NUT's global

      <=== Judgment #2: echo-reply ====
           src=NUT's global
           dst=off-link global, but LLA is TN's one

    </PER>

    On-link

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

      State: REACHABLE (for TN)

      ==== echo-request ===>
           src=off-link global, but LLA is TN's one
           dst=NUT's global

      <=== Judgment #3: multicast NS ====
            src=NUT's link-local
            dst=solicited-node[off-link global]
            target=off-link global
            w/ SLLA
    </PER>

    JUDGMENT

    1. Next-hop determination

    5.2.  Conceptual Sending Algorithm

         Next-hop determination for a given unicast destination operates as
         follows.  NUT performs a longest prefix match against the
         Prefix List to determine whether the packet's destination is on- or
         off-link.  If the destination is on-link, the next-hop address is the
         same as the packet's destination address.  Otherwise, NUT
         selects a router from the Default Router List.  If the Default Router
         List is empty, NUT assumes that the destination is on-link.

      =========+========+==========================================
      RA received       | NUT
      by NUT            |
      ---------+--------+-----------------+-------------+---------
      Prefix   |Router  | The Prefix List | The Default | Next Hop
      Option   |Lifetime|                 | Router List |
      =========+========+=================+=============+==========
      none     | 0      | empty           | empty       | on-link
      ---------+--------+-----------------+-------------+----------
      none     | 600    | empty           | NOT empty   | off-link
      ---------+--------+-----------------+-------------+----------
      exist    | 0      | NOT empty       | empty       | on-link
      =========+========+=================+=============+==========

      2. NUT throws an echo-reply to the default router (i.e. TN)
         because the given address should be off-link.

      3. NUT sends multicast NSs for the given address
         because it should be on-link.

    TERMINATION

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

      Clear the Prefix List and the Default Router List by remote commands. XXX

    NOTE

      1. RFC2461 describes that a host assumes the destination is on-link
         if the Default Router List is empty. However, it also describes
         that multihomed related issues are not concerned.
         It is also one of the issues that a host assumes an address is
         on-link if the Default Router List is empty. This test judges
         NUT "WARN" instead of "FAIL" in such case.

      2. The echo request that NUT captures has an off-link source address
         and a link-local source address. It is reasonable for NUT not to
         throw the echo-reply to the default router because its source
         address is a link-local. This test judges NUT "WARN" instead of "FAIL"
         in such case.

      3. The test invokes the following command:
         - Clear the Prefix List
         - Clear the Default Router List

    SEE ALSO

      perldoc V6evalTool
      perldoc V6evalRemote