NAME

hostRecvRaNHD - Verifying net-hop determination


TARGET

Host only


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: No neighbor cache entry (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:


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


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 or global dst=solicited-node[off-link global] target=off-link global w/ SLLA


JUDGMENT

1. Next-hop determination

  =========+========+==========================================
  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


REFERENCE

RFC2461

5.2. Conceptual Sending Algorithm
Next-hop determination for a given unicast destination operates as follows. The sender 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, the sender selects a router from the Default Router List. (following the rules described in Section 6.3.6). If the Default Router List is empty, the sender assumes that the destination is on-link.


SEE ALSO

  perldoc V6evalTool
  perldoc V6evalRemote