hostRecvRedirect4OfflinkDC - Verifying Redirect (to a better router) vs. Destination Cache
Host only
hostRecvRedirect4OfflinkDC.seq [-tooloption ...] -p hostRecvRedirect4OfflinkDC.def
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
hostRecvRedirect4OfflinkDC verifies that a redirect message (ICMP Destination != ICMP Target) updates a Destination Cache entry.
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 ===> valid redirect OR suspicious redirect OR invalid redirect
==== 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
<=== echo-reply ==== If the message is either valid or suspicous, NUT throw echo-reply to TN (the better router) : 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 OR If the message is invalid, NUT throw echo-reply to R1 (the default router) : 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
1. NUT must throw echo-reply whose destination is off-link global to the default router, ie R1.
2. Valid redirect messages vs. Destination Cache ========================================================+=============+======================= Valid redirect message that NUT receives |Destination | Expected packet ---------------------+-----------------+----------------+Cache | IP |ICMP |Options |for H1 | ----------+----------+----------+------+-----+----------+-------+-----+ Src |Dst |Target |Dst |TLLA |Redirected|Before |After| ==========+==========+==========+======+=====+==========+=======+=====+======================= link-local|link-local|link-local|global|none |none |R1 |TN |echo-reply (R1) |(NUT) |(TN) |(H1) | | | | | src=NUT's global | | | | | | | | dst=H1's global | | | | | | | | but, LLA is TN's ----------+----------+----------+------+-----+----------+-------+-----+----------------------- - |- |- |- |none |exist |R1 |TN |echo-reply | | | | | | | | src=NUT's global | | | | | | | | dst=H1's global | | | | | | | | but, LLA is TN's ----------+----------+----------+------+-----+----------+-------+-----+----------------------- - |- |- |- |exist|none |R1 |TN |echo-reply | | | | | | | | src=NUT's global | | | | | | | | dst=H1's global | | | | | | | | but, LLA is TN's ----------+----------+----------+------+-----+----------+-------+-----+----------------------- - |- |- |- |exist|exist |R1 |TN |echo-reply | | | | | | | | src=NUT's global | | | | | | | | dst=H1's global | | | | | | | | but, LLA is TN's ----------+----------+----------+------+-----+----------+-------+-----+----------------------- - |global |- |- |none |none |R1 |TN |echo-reply |(NUT) | | | | | | | src=NUT's global | | | | | | | | dst=H1's global | | | | | | | | but, LLA is TN's ----------+----------+----------+------+-----+----------+-------+-----+----------------------- - |- |- |- |none |exist |R1 |TN |echo-reply | | | | | | | | src=NUT's global | | | | | | | | dst=H1's global | | | | | | | | but, LLA is TN's ----------+----------+----------+------+-----+----------+-------+-----+----------------------- - |- |- |- |exist|none |R1 |TN |echo-reply | | | | | | | | src=NUT's global | | | | | | | | dst=H1's global | | | | | | | | but, LLA is TN's ----------+----------+----------+------+-----+----------+-------+-----+----------------------- - |- |- |- |exist|exist |R1 |TN |echo-reply | | | | | | | | src=NUT's global | | | | | | | | dst=H1's global | | | | | | | | but, LLA is TN's ==========+==========+==========+======+=====+==========+=======+=====+======================= -: same as above
3. Suspicious redirect messages vs. Destination Cache ========================================================+============+======================== Suspicious redirect message that NUT receives |Destination |Expected packet ---------------------+-----------------+----------------+Cache | IP |ICMP |Options |for H1 | ----------+----------+----------+------+-----+----------+------+-----+ Src |Dst |Target |Dst |TLLA |Redirected|Before|After| ==========+==========+==========+======+=====+==========+======+=====+======================== link-local|link-local|link-local|global|exist|exist |R1 |TN |echo-reply (R1) |(NUT) |(TN) |(H1) | |> 1280 and| | | src=NUT's global | | | | |bogus | | | dst=H1's global | | | | |*susp. | | | but, LLA is TN's ----------+----------+----------+------+-----+----------+------+-----+------------------------ - |all-node |- |- |exist|exist |R1 |TN |echo-reply |*susp. | | | | | | | src=NUT's global | | | | | | | | dst=H1's global | | | | | | | | but, LLA is TN's ==========+==========+==========+======+=====+==========+======+=====+======================== -: same as above
4. Invalid redirect messages vs. Destination Cache ==============================================================+============+====================== Invalid redirect message that NUT receive |Destination |Expected packet ---------------------+----------------------------------------+Cache | IP |ICMP |for H1 | ----------+----------+--------+----+--------+----------+------+------------+ Src |Dst |Hoplimit|Code|Checksum|Target |Dst |Before|After| ==========+==========+========+====+========+==========+======+======+=====+====================== global |link-local|255 |0 |valid |link-local|global|R1 |R1 |echo-reply *invalid |(NUT) | | | |(TN) |(H1) | | | src=NUT's global | | | | | | | | | dst=H1's global | | | | | | | | | but LLA is R1's ----------+----------+--------+----+--------+----------+------+------+-----+---------------------- bogus |- |- |- |- |- |- |R1 |R1 |echo-reply router's | | | | | | | | | src=NUT's global link-local| | | | | | | | | dst=H1's global *invalid | | | | | | | | | but LLA is R1's ----------+----------+--------+----+--------+----------+------+------+-----+---------------------- link-local|- |!=255 |- |- |- |- |R1 |R1 |echo-reply (R1) | |*invalid| | | | | | | src=NUT's global | | | | | | | | | dst=H1's global | | | | | | | | | but LLA is R1's ----------+----------+--------+----+--------+----------+------+------+-----+---------------------- - |- |255 |!=0 |- |- |- |R1 |R1 |echo-reply | | |*inv| | | | | | src=NUT's global | | | | | | | | | dst=H1's global | | | | | | | | | but LLA is R1's ----------+----------+--------+----+--------+----------+------+------+-----+---------------------- - |- |- |0 |*invalid|- |- |R1 |R1 |echo-reply | | | | | | | | | src=NUT's global | | | | | | | | | dst=H1's global | | | | | | | | | but LLA is R1's ==========+==========+========+====+========+==========+======+======+=====+====================== -: same as above
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
The test invokes the following command: - Clear IPv6 routes
perldoc V6evalTool perldoc V6evalRemote