NAME

v6LC_2_3_17 - Redirect - Receive


TARGET

Router


TOPOLOGY

                   TN2
                    |
----+-------+-------+--- LinkY
    |       |
   TR1     TR2
    |       |
----+-------+-------+--- Link0
                    |
                   RUT
                    |

Link0 global 3ffe:501:ffff:100::/64
link-local fe80::/64
LinkY global 3ffe:501:ffff::/64
link-local fe80::/64
TR1 global 3ffe:501:ffff:100:200:ff:fe00:a0a0
link-local fe80::200:ff:fe00:a0a0
ether 00:00:00:00:a0:a0
TR2 global 3ffe:501:ffff:100:200:ff:fe00:a1a1
link-local fe80::200:ff:fe00:a1a1
ether 00:00:00:00:a1:a1
RUT global 3ffe:501:ffff:100::<NutDef.Link0_addr>
link-local fe80::<NutDef.Link0_addr>
ether <NutDef.Link0_addr>
TN2 global 3ffe:501:ffff::<TnDef.Link0_addr>
link-local fe80::<TnDef.Link0_addr>
ether <TnDef.Link0_addr>


SETUP

This minimal setup procedure provides the NUT with two default routers TR1 and TR2, a global prefix, and ensures that the NUT can communicate with TR1 and TR2. Configure the RUT with a static route to TN2's Link B prefix through TR1.
   TR1     TR2     RUT
    |       |       |
    | ------------> | Echo Request
    |       |   <-- | NS
    | ------------> | NA
    | <------------ | Echo Reply
    |       |       |
    |       | ----> | Echo Request
    |       |   <-- | NS
    |       | ----> | NA
    |       | <---- | Echo Reply
    |       |       |
    V       V       V

1. Send Echo Request
        IPv6 header
            source      = TR1 (link-local)
            destination = RUT (link-local)
        Echo Request
2. Observe NS
        IPv6 header
            hop limit   = 255
            source      = RUT (link-local)
            destination = TR1 (solicited-node multicast address)
        NS
            target      = TR1 (link-local)
        SLL option
3. Send NA
        IPv6 header
            hop limit   = 255
            source      = TR1 (link-local)
            destination = RUT (link-local)
        NA
            R           = 1
            S           = 1
            O           = 1
            target      = TR1 (link-local)
        TLL option
4. Observe Echo Reply
        IPv6 header
            source      = RUT (link-local)
            destination = TR1 (link-local)
        Echo Reply
5. Send Echo Request
        IPv6 header
            source      = TR2 (link-local)
            destination = RUT (link-local)
        Echo Request
6. Observe NS
        IPv6 header
            hop limit   = 255
            source      = RUT (link-local)
            destination = TR2 (solicited-node multicast address)
        NS
            target      = TR2 (link-local)
        SLL option
7. Send NA
        IPv6 header
            hop limit   = 255
            source      = TR2 (link-local)
            destination = RUT (link-local)
        NA
            R           = 1
            S           = 1
            O           = 1
            target      = TR2 (link-local)
        TLL option
8. Observe Echo Reply
        IPv6 header
            source      = RUT (link-local)
            destination = TR2 (link-local)
        Echo Reply


TEST PROCEDURE

Verify that a router properly handles reception of Redirect messages.
   TN2     TR1     TR2     RUT
    |       |       |       |
    | ------+-------------> | Echo Request (via TR1)
    | <-----+-------------- | Echo Reply   (via TR1) [Judgment #1]
    |       |       |       |
    |       | ------------> | Redirect
    |       |       |       |
    | ------+-------------> | Echo Request (via TR1)
    | <-----+-------------- | Echo Reply   (via TR1) [Judgment #2]
    |       |       |       |
    V       V       V       V

1. Send Echo Request (via TR1)
        IPv6 header
            source      = TN2 (global)
            destination = RUT (global)
        Echo Request
2. Observe Echo Reply (via TR1)
        IPv6 header
            source      = RUT (global)
            destination = TN2 (global)
        Echo Reply
3. Send Redirect
        IPv6 header
            source      = TR1 (link-local)
            destination = RUT (global)
        Redirect
            target      = TR2 (link-local)
            destination = TN2 (global)
        TLL option
4. Send Echo Request (via TR1)
        IPv6 header
            source      = TN2 (global)
            destination = RUT (global)
        Echo Request
5. Observe Echo Reply (via TR1)
        IPv6 header
            source      = RUT (global)
            destination = TN2 (global)
        Echo Reply


JUDGEMENT

[Judgment #1] The RUT should send an Echo Reply with a first hop through TR1.
[Judgment #2] The RUT should still send an Echo Reply with a first hop through TR1, indicating the RUT did not change its routing table with information from TR1's Redirect message.


CLEANUP

The Cleanup procedure should cause the NUT to transition Neighbor Cache entries created in this test to state INCOMPLETE and remove any entries from its Default Router and Prefix Lists.
   TR1     TR2     RUT
    |       |       |
    |       | -->   | NA
    |       |       |
    |       | ----> | Echo Request
    |       | <---- | Echo Reply
    |       |       |
    |       *       | Wait (DELAY_FIRST_PROBE_TIME)
    |       |       |
    |       | <---- | NS
    |       | <---- | NS
    |       | <---- | NS
    |       |       |
    | -->   |       | NA
    |       |       |
    | ------------> | Echo Request
    | <------------ | Echo Reply
    |       |       |
    *       |       | Wait (DELAY_FIRST_PROBE_TIME)
    |       |       |
    | <------------ | NS
    | <------------ | NS
    | <------------ | NS
    |       |       |
    V       V       V

1. Send NA w/ TLL (diff)
        IPv6 header
            hop limit   = 255
            source      = TR2 (link-local)
            destination = all-nodes multicast address
        NA
            R           = 1
            S           = 0
            O           = 1
            target      = TR1 (link-local)
        TLL option
            address     = TRX (ether)
2. Send Echo Request
        IPv6 header
            source      = TR2 (link-local)
            destination = RUT (link-local)
        Echo Request
3. Observe Echo Reply
        IPv6 header
            source      = RUT (link-local)
            destination = TR2 (link-local)
        Echo Reply
4. Wait (DELAY_FIRST_PROBE_TIME)
        Node constants:
            DELAY_FIRST_PROBE_TIME: 5 seconds
5. Observe MAX_UNICAST_SOLICIT NSs
        IPv6 header
            hop limit   = 255
            source      = RUT (link-local)
            destination = TR2 (link-local)
        NS
            target      = TR2 (link-local)
        SLL option
        Node constants:
            MAX_UNICAST_SOLICIT: 3 transmissions
6. Send NA w/ TLL (diff)
        IPv6 header
            hop limit   = 255
            source      = TR1 (link-local)
            destination = all-nodes multicast address
        NA
            R           = 1
            S           = 0
            O           = 1
            target      = TR1 (link-local)
        TLL option
            address     = TRX (ether)
7. Send Echo Request
        IPv6 header
            source      = TR1 (link-local)
            destination = RUT (link-local)
        Echo Request
8. Observe Echo Reply
        IPv6 header
            source      = RUT (link-local)
            destination = TR1 (link-local)
        Echo Reply
9. Wait (DELAY_FIRST_PROBE_TIME)
        Node constants:
            DELAY_FIRST_PROBE_TIME: 5 seconds
10. Observe MAX_UNICAST_SOLICIT NSs
        IPv6 header
            hop limit   = 255
            source      = RUT (link-local)
            destination = TR1 (link-local)
        NS
            target      = TR1 (link-local)
        SLL option
        Node constants:
            MAX_UNICAST_SOLICIT: 3 transmissions


REFERENCE

RFC 2461 - Neighbor Discovery for IPv6