- Verify that NUT transmits valid NSs in INCOMPLETE state
- Verify that NUT can transmit Echo Reply after address resolution
- Verify that NUT has one queue for each neighbor.
TN1 TN2 NUT
| | |
| ------------> | Echo Request (SN=0)
| | ----> | Echo Request (SN=0)
| ------------> | Echo Request (SN=1)
| | ----> | Echo Request (SN=1)
| ------------> | Echo Request (SN=2)
| | ----> | Echo Request (SN=2)
| | ----> | Echo Request (SN=3)
| <---------- | NS (multicast) [Judgment #1]
| | <-- | NS (multicast) [Judgment #2]
| ------------> | NA
| | ----> | NA
| <------------ | Echo Reply (SN=2) [Judgment #3]
| | <---- | Echo Reply (SN=3) [Judgment #4]
| | |
V V V
State: NONE (TN1) (link-local)
State: NONE (TN2) (link-local)
1. Send Echo Request
IPv6 header
source = TN1 (link-local)
destination = NUT (link-local)
Echo Request
sequence number = 0
State: INCOMPLETE (TN1) (link-local)
State: NONE (TN2) (link-local)
2. Send Echo Request
IPv6 header
source = TN2 (link-local)
destination = NUT (link-local)
Echo Request
sequence number = 0
State: INCOMPLETE (TN1) (link-local)
State: INCOMPLETE (TN2) (link-local)
3. Send Echo Request
IPv6 header
source = TN1 (link-local)
destination = NUT (link-local)
Echo Request
sequence number = 1
4. Send Echo Request
IPv6 header
source = TN2 (link-local)
destination = NUT (link-local)
Echo Request
sequence number = 1
5. Send Echo Request
IPv6 header
source = TN1 (link-local)
destination = NUT (link-local)
Echo Request
sequence number = 2
6. Send Echo Request
IPv6 header
source = TN2 (link-local)
destination = NUT (link-local)
Echo Request
sequence number = 2
7. Send Echo Request
IPv6 header
source = TN2 (link-local)
destination = NUT (link-local)
Echo Request
sequence number = 3
8. Observe NS [Judgment #1]
IPv6 header
hop limit = 255
source = NUT (link-local)
destination = TN1 (solicited-node multicast address)
NS
target = TN1 (link-local)
SLL option
9. Observe NS [Judgment #2]
IPv6 header
hop limit = 255
source = NUT (link-local)
destination = TN2 (solicited-node multicast address)
NS
target = TN2 (link-local)
SLL option
10. Send NA
IPv6 header
hop limit = 255
source = TN1 (link-local)
destination = NUT (link-local)
NA
R = 0
S = 1
O = 1
target = TN1 (link-local)
TLL option
State: REACHABLE (TN1) (link-local)
State: INCOMPLETE (TN2) (link-local)
11. Send NA
IPv6 header
hop limit = 255
source = TN2 (link-local)
destination = NUT (link-local)
NA
R = 0
S = 1
O = 1
target = TN2 (link-local)
TLL option
State: REACHABLE (TN1) (link-local)
State: REACHABLE (TN2) (link-local)
12. Observe Echo Reply [Judgment #3]
IPv6 header
source = NUT (link-local)
destination = TN1 (link-local)
Echo Reply
sequence number = 2
13. Observe Echo Reply [Judgment #4]
IPv6 header
source = NUT (link-local)
destination = TN2 (link-local)
Echo Reply
sequence number = 3
State: REACHABLE (TN1) (link-local)
State: REACHABLE (TN2) (link-local)
- Set neighbor cache state for TN1 to NONE
TN1 TN2 NUT
| | |
| ------------> | NS (unicast) (different cached address)
| | ----> | NS (unicast) (different cached address)
| <------------ | NA
| | <---- | NA
| | |
* | | Wait (DELAY_FIRST_PROBE_TIME)
| | |
| <------------ | NS (unicast)
| | <---- | NS (unicast)
| <------------ | NS (unicast)
| | <---- | NS (unicast)
| <------------ | NS (unicast)
| | <---- | NS (unicast)
| | |
V V V
State: REACHABLE (TN1) (link-local)
State: REACHABLE (TN2) (link-local)
1. Send NS
IPv6 header
hop limit = 255
source = TN1 (link-local)
destination = NUT (link-local)
NS
target = NUT (link-local)
SLL option
address = TN2 (ether)
State: STALE (TN1) (link-local)
State: REACHABLE (TN2) (link-local)
2. Send NS
IPv6 header
hop limit = 255
source = TN2 (link-local)
destination = NUT (link-local)
NS
target = NUT (link-local)
SLL option
address = H1 (ether)
State: STALE (TN1) (link-local)
State: STALE (TN2) (link-local)
3. Observe NA
IPv6 header
source = NUT (link-local)
destination = TN1 (link-local)
NA
R = 0 (If NUT is Host)
= 1 (If NUT is Router)
S = 1
O = 1
target = NUT (link-local)
TLL option
State: DELAY (TN1) (link-local)
State: STALE (TN2) (link-local)
4. Observe NA
IPv6 header
source = NUT (link-local)
destination = TN2 (link-local)
NA
R = 0 (If NUT is Host)
= 1 (If NUT is Router)
S = 1
O = 1
target = NUT (link-local)
TLL option
State: DELAY (TN1) (link-local)
State: DELAY (TN2) (link-local)
5. Wait (DELAY_FIRST_PROBE_TIME)
Node constants:
DELAY_FIRST_PROBE_TIME: 5 seconds
State: PROBE (TN1) (link-local)
State: PROBE (TN2) (link-local)
6. Observe MAX_UNICAST_SOLICIT NSs
IPv6 header
hop limit = 255
source = NUT (link-local)
destination = TN1 (link-local)
NS
target = TN1 (link-local)
SLL option
Node constants:
MAX_UNICAST_SOLICIT: 3 transmissions
State: NONE (TN1) (link-local)
State: PROBE (TN2) (link-local)
7. Observe MAX_UNICAST_SOLICIT NSs
IPv6 header
hop limit = 255
source = NUT (link-local)
destination = TN2 (link-local)
NS
target = TN2 (link-local)
SLL option
Node constants:
MAX_UNICAST_SOLICIT: 3 transmissions
State: NONE (TN1) (link-local)
State: NONE (TN2) (link-local)