NAME

v6LC_2_1_6_D-v3_8_2 - Neighbor Solicitation Origination, Reachability Confirmation (Neighbor Solicitation Origination, Global => Link-local)


TARGET

Host/Router


TOPOLOGY

                    |
   TN1     NUT      R0
    |       |       |
----+-------+-------+--- Link0

Link0 global 3ffe:501:ffff:100::/64
link-local fe80::/64
R0 global 3ffe:501:ffff:100:200:ff:fe00:a0a0
link-local fe80::200:ff:fe00:a0a0
ether 00:00:00:00:a0:a0
TN1 global 3ffe:501:ffff:100::<TnDef.Link0_addr>
link-local fe80::<TnDef.Link0_addr>
ether <TnDef.Link0_addr>
NUT global 3ffe:501:ffff:100::<NutDef.Link0_addr>
link-local fe80::<NutDef.Link0_addr>
ether <NutDef.Link0_addr>


SETUP

This minimal setup procedure provides the NUT with a default router TR1, a global prefix, and ensures that the NUT can communicate with TR1.
   TR1     HUT
    |       |
    | -->   | RA
    |       |
    *       | Wait (MAX_RTR_SOLICITATION_DELAY + RetransTimer * DupAddrDetectTransmits)
    |       |
    | ----> | Echo Request
    |   <-- | NS
    | ----> | NA
    | <---- | Echo Reply
    |       |
    V       V

1. Send RA
        IPv6 header
            hop limit          = 255
            source             = TR1 (link-local)
            destination        = all-nodes multicast address
        RA
            cur hop limit      = 64
            M                  = 0
            O                  = 0
            router lifetime    = 1800
            reachable time     = 30000
            retrans timer      = 1000
        Prefix Information option
            prefix length      = 64
            L                  = 1
            A                  = 1
            valid Lifetime     = 2592000
            preferred lifetime = 604800
            prefix             = 3ffe:501:ffff:100::
2.  Wait (MAX_RTR_SOLICITATION_DELAY + RetransTimer * DupAddrDetectTransmits)
        Host constants:
            MAX_RTR_SOLICITATION_DELAY: 1 second
        Node constants:
            RETRANS_TIMER             : 1,000 milliseconds
        Host Variables:
            RetransTimer
                Default               : RETRANS_TIMER milliseconds
        Node Variables:
            DupAddrDetectTransmits
                Default               : 1
3. Send Echo Request
        IPv6 header
            source      = TR1 (link-local)
            destination = HUT (link-local)
        Echo Request
4. Observe NS
        IPv6 header
            hop limit   = 255
            source      = HUT (link-local)
            destination = TR1 (solicited-node multicast address)
        NS
            target      = TR1 (link-local)
        SLL option
5. Send NA
        IPv6 header
            hop limit   = 255
            source      = TR1 (link-local)
            destination = HUT (link-local)
        NA
            R           = 1
            S           = 1
            O           = 1
            target      = TR1 (link-local)
        TLL option
6. Observe Echo Reply
        IPv6 header
            source      = HUT (link-local)
            destination = TR1 (link-local)
        Echo Reply


INITIALIZATION

none


TEST PROCEDURE

- Verify that NUT transmits valid NSs in PROBE state
- Verify that NUT transmits multicast NSs 3 times
   TN1     NUT
    |       |
    | ----> | Echo Request
    |   <-- | NS (multicast)
    | ----> | NA
    | <---- | Echo Reply
    |       |
    *       | Wait (REACHABLE_TIME * MAX_RANDOM_FACTOR)
    |       |
    | ----> | Echo Request
    | <---- | Echo Reply
    |       |
    *       | Wait (DELAY_FIRST_PROBE_TIME)
    |       |
    | <---- | NS (unicast) [Judgment #1]
    | <---- | NS (unicast)
    | <---- | NS (unicast)
    |       |
    V       V

1. Send Echo Request
        IPv6 header
            source      = TN1 (global)
            destination = NUT (link-local)
        Echo Request
    State: INCOMPLETE (TN1) (global)
2. Observe NS
        IPv6 header
            hop limit   = 255
            source      = NUT (link-local)
            destination = TN1 (solicited-node multicast address)
        NS
            target      = TN1 (global)
        SLL option
3. Send NA
        IPv6 header
            hop limit   = 255
            source      = TN1 (global)
            destination = NUT (link-local)
        NA
            R           = 0
            S           = 1
            O           = 1
            target      = TN1 (global)
        TLL option
    State: REACHABLE (TN1) (global)
4. Observe Echo Reply
        IPv6 header
            source      = NUT (link-local)
            destination = TN1 (global)
        Echo Reply
5. Wait (REACHABLE_TIME * MAX_RANDOM_FACTOR)
        Node constants:
            REACHABLE_TIME   : 30,000 milliseconds
            MAX_RANDOM_FACTOR: 1.5
    State: STALE (TN1) (global)
6. Send Echo Request
        IPv6 header
            source      = TN1 (global)
            destination = NUT (link-local)
        Echo Request
7. Observe Echo Reply
        IPv6 header
            source      = NUT (link-local)
            destination = TN1 (global)
        Echo Reply
    State: DELAY (TN1) (global)
8. Wait (DELAY_FIRST_PROBE_TIME)
        Node constants:
            DELAY_FIRST_PROBE_TIME: 5 seconds
    State: PROBE (TN1) (global)
9. Observe MAX_UNICAST_SOLICIT NSs [Judgment #1]
        IPv6 header
            hop limit   = 255
            source      = NUT (global)
            destination = TN1 (global)
        NS
            target      = TN1 (global)
        SLL option
        Node constants:
            MAX_UNICAST_SOLICIT: 3 transmissions
    State: NONE (TN1) (global)


JUDGEMENT

[Judgment #1] NUT must transmit 3 NSs to TN1


CLEANUP

- Remove global address
   TN1     NUT      R0
    |       |       |
    |       |   <-- | RA (rltime=0, vltime=0, pltime=0) (If NUT isn't Router)
    |       |       |
    V       V       V

    State: NONE (TN1) (global)
1. Send RA (If NUT isn't Router)
        IPv6 header
            hop limit   = 255
            source      = R0 (link-local)
            destination = all-nodes multicast address
        RA
            cur hop limit   = 64
            M               = 0
            O               = 0
            router lifetime = 0
            reachable time  = 0
            retrans timer   = 0
        Prefix Information option
            prefix length      = 64
            L                  = 1
            A                  = 1
            valid Lifetime     = 0
            preferred lifetime = 0
            prefix             = 3ffe:501:ffff:100::
    State: NONE (TN1) (global)


REFERENCE

RFC 2461 - Neighbor Discovery for IPv6