NAME

hostRecvRedirect4OfflinkNUD - Verifying Redirect (to a better router) vs. Neighbor Unreachability Detection


TARGET

Host only


SYNOPSIS

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


INITIALIZATION

  1. Clear IPv6 routes.
  2. Send RA with RouterLifetime=0 to clear the Default Router List.
  3. Set R1 as the default router by sending RA and NA.
  4. Set TN as the second router by sending RA and NA.

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

State: NONCE (for R1, TN)
==== unsolicited RA ===> src=R1's link-local dst=all-node M=0, O=0 RouterLifetime=0 ReachableTime=0 RetransTimer=0
==== unsolicited RA ===> src=TN's link-local dst=all-node M=0, O=0 RouterLifetime=0 ReachableTime=0 RetransTimer=0
==== unsolicited RA ===> src=R1's link-local dst=all-node M=0, O=0 RouterLifetime=600 ReachableTime=0 RetransTimer=0 w/ SLLA Prefix Option: L=1, A=1 ValidLifetime=2592000 PreferredLifetime=604800 Prefix=3ffe:501:ffff:100::/64
State: STALE (for R1), NONCE (for TN)
==== solicited NA ===> src=R1's link-local dst=NUT's link-local R=1, S=1, O=1 target=R1's link-local TLLA=R1's LLA
State: REACHABLE (for R1), NONCE (for TN)
==== unsolicited RA ===> src=TN's link-local dst=all-node M=0, O=0 RouterLifetime=600 ReachableTime=0 RetransTimer=0 w/ SLLA Prefix Option: L=1, A=1 ValidLifetime=2592000 PreferredLifetime=604800 Prefix=3ffe:501:ffff:100::/64
State: REACHABLE (for R1), STALE (for TN)
==== 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 R1, TN)
Wait (3 sec) for DAD NS


TEST PROCEDURE

hostRecvRedirect4OfflinkNUD verifies that an entry of Destination Cache updated by a redirect message is removed by Neighbor Unreachability Detection.

  1. Send echo-request (src:H1, dst:NUT)
  2. Verify that NUT send echo-reply to the default router, R1
  3. Send redirect message to NUT.
  4. Wait for NC state to STALE.
  5. Send echo-request (src:H1, dst:NUT) again.
  6. Verify that NUT threw send echo-reply to the better router, TN.
  7. Wait for NC state to NONCE.
  8. Send echo-request (src:H1, dst:NUT) again.
  9. Verify that NUT send echo-reply to the default router, R1
  TN               NUT
  ----------------------

State: REACHABLE (for R1, TN)
==== echo-request ===> src=H1(off-link global), prefix=3ffe:501:ffff:109::/64, but LLA is R1's one dst=NUT's global, prefix=3ffe:501:ffff:100::/64
<=== Judgment #1: echo-reply ==== src=NUT's global, prefix=3ffe:501:ffff:100::/64 dst=H1(off-link global), prefix=3ffe:501:ffff:109::/64, but LLA is R1's one
==== redirect ===> src=R1's link-local dst=NUT's link-local icmp target=TN's link-local icmp destination=H1's global w/ TLLA w/o Redirected header
Wait (45 sec)
State: STALE (for R1, TN)
==== echo-request ===> src=H1(off-link global), prefix=3ffe:501:ffff:109::/64, but LLA is R1's one dst=NUT's global, prefix=3ffe:501:ffff:100::/64
<=== Judgment #2: echo-reply ==== src=NUT's global, prefix=3ffe:501:ffff:100::/64 dst=H1(off-link global), prefix=3ffe:501:ffff:109::/64, but LLA is TN's one
State: STALE (for R1), DELAY (for TN)
Wait (5 sec)
State: STALE (for R1), PROBE (for TN)
Wait (3 sec)
State: STALE (for R1), NONCE (for TN)
==== echo-request ===> src=H1(off-link global), prefix=3ffe:501:ffff:109::/64, but LLA is R1's one dst=NUT's global, prefix=3ffe:501:ffff:100::/64
<=== Judgment #1: echo-reply ==== src=NUT's global, prefix=3ffe:501:ffff:100::/64 dst=H1(off-link global), prefix=3ffe:501:ffff:109::/64, but LLA is R1's one


JUDGMENT

  1. NUT must throw echo-reply whose destination is off-link global
    to the default router (i.e. R1).

  2. NUT must throw echo-reply to the better router (i.e. TN).


TERMINATION

  Send RAs to clear the Default Router List:
  - RA (src=R1) with RouterLifetime=0
  - RA (src=TN) with RouterLifetime=0

  Clear IPv6 routes by remote command. XXX


NOTE

  The test invokes the following command:
  - Clear IPv6 routes


SEE ALSO

  perldoc V6evalTool
  perldoc V6evalRemote