RA_decVLT - check the address expiration process. NUT receives RAs three times which contain one Global Prefix, and second RA contains less VLT value than first one.(Assigning and Expiring Global address)
All Node
Reboot NUT or Initialize interface of NUT or Initialize IPv6 stack of NUT.
The following tests are prepared in this test package. See INDEX file.
Test for all node
When NUT receives RA which contains Global Prefix, NUT assignes autoconfigured address. Later NUT receives different RA which contains same prefix but greater VLT than first one before first VLT exires. At this point, NUT resets its VLT using second VLT, and the assinged address MUST expire second VLT[sec] later.
Test sequence
TN NUT --------------------------------- Initialize NUT
Configure address of NUT (reboot or interface initialization etc...)
TN wait the DAD NS sent from NUT
<=== Judgement #1: DAD NS =======
name: DADNS_from_NUT
<=== Judgement #2: RS ===========
name: RS_from_NUT, RS_from_NUT_wSLL
==== Action #1: RA =============>
name: RA_GA0_VLT90
(1st RA VLT=longVLT)
<=== Judgement #3: DAD NS =======
name: DADNS_from_NUT_GA0Tgt
Wait for 5+DupAddrDetectTransmits*(RetransTimer/1000)[sec]
Check if NUT's address is configured
==== Action #2: SOL NS =========>
name: SOLNS_from_TN_GA0Tgt
<=== Judgement #4: SOL NA =======
name:
NA_from_NUT_GA0Tgt,
NA_from_NUT_GA0Tgt_woTLL,
NA_from_GA0NUT_GA0Tgt,
NA_from_GA0NUT_GA0Tgt_woTLL
Wait until (longVLT*1/2)+5[sec] pasts since receiving 1st RA
==== Action #3: RA =============>
name: RA_GA0_VLT20
(2nd RA VLT=shortVLT)
X<== Judgement #5: DAD NS =======
name: DADNS_from_NUT_GA0Tgt,DADNS_any, DADNS_any_wSLL
Check if NUT's address is configured
==== Action #4: SOL NS =========>
name: SOLNS_from_TN_GA0Tgt
<=== Judgement #6: SOL NA =======
name:
NA_from_NUT_GA0Tgt,
NA_from_NUT_GA0Tgt_woTLL,
NA_from_GA0NUT_GA0Tgt,
NA_from_GA0NUT_GA0Tgt_woTLL
Wait until (shortVLT)-3[sec] pasts since receiving 2nd RA
Check if NUT's address is configured
==== Action #5: SOL NS =========>
name: SOLNS_from_TN_GA0Tgt
<=== Judgement #7: SOL NA =======
name:
NA_from_NUT_GA0Tgt,
NA_from_NUT_GA0Tgt_woTLL,
NA_from_GA0NUT_GA0Tgt,
NA_from_GA0NUT_GA0Tgt_woTLL
Wait until (shortVLT)+3[sec] pasts since receiving 2nd RA
Check if NUT's address is configured
==== Action #6: SOL NS =========>
name: SOLNS_from_TN_GA0Tgt
<=== Judgement #8: DAD NA =======
name:
NA_from_NUT_GA0Tgt,
NA_from_NUT_GA0Tgt_woTLL,
NA_from_GA0NUT_GA0Tgt,
NA_from_GA0NUT_GA0Tgt_woTLL
Wait until (longVLT)-10[sec] pasts since receiving 1st RA
==== Action #7: RA =============>
name: RA_GA0_VLT20
(3rd RA VLT=shortVLT)
X<== Judgement #9: SOL NS =======
name:
NA_from_NUT_GA0Tgt,
NA_from_NUT_GA0Tgt_woTLL,
NA_from_GA0NUT_GA0Tgt,
NA_from_GA0NUT_GA0Tgt_woTLL
Check if NUT's address is configured
==== Action #8: SOL NS =========>
name: SOLNS_from_TN_GA0Tgt
<=== Judgement #10: SOL NA =======
name:
NA_from_NUT_GA0Tgt,
NA_from_NUT_GA0Tgt_woTLL,
NA_from_GA0NUT_GA0Tgt,
NA_from_GA0NUT_GA0Tgt_woTLL
Wait until (longVLT)-3[sec] pasts since receiving 1st RA
Check if NUT's address is configured
==== Action #9: SOL NS =========>
name: SOLNS_from_TN_GA0Tgt
<=== Judgement #11: DAD NA =======
name:
NA_from_NUT_GA0Tgt,
NA_from_NUT_GA0Tgt_woTLL,
NA_from_GA0NUT_GA0Tgt,
NA_from_GA0NUT_GA0Tgt_woTLL
Wait until (longVLT)+3[sec] pasts since receiving 1st RA
Check if NUT's address is configured
==== Action #10: SOL NS =========>
name: SOLNS_from_TN_GA0Tgt
<=== Judgement #12: DAD NA ======
name:
NA_from_NUT_GA0Tgt,
NA_from_NUT_GA0Tgt_woTLL,
NA_from_GA0NUT_GA0Tgt,
NA_from_GA0NUT_GA0Tgt_woTLL
Wait until (shortVLT)-3[sec] pasts since receiving 3rd RA
Check if NUT's address is configured
==== Action #11: SOL NS =========>
name: SOLNS_from_TN_GA0Tgt
<=== Judgement #13: SOL NA =======
name:
NA_from_NUT_GA0Tgt,
NA_from_NUT_GA0Tgt_woTLL,
NA_from_GA0NUT_GA0Tgt,
NA_from_GA0NUT_GA0Tgt_woTLL
Wait until (shortVLT)+3[sec] pasts since receiving 3rd RA
Check if NUT's address is configured
==== Action #12: SOL NS =========>
name: SOLNS_from_TN_GA0Tgt
X<== Judgement #14: SOL NA ======
name:
NA_from_NUT_GA0Tgt,
NA_from_NUT_GA0Tgt_woTLL,
NA_from_GA0NUT_GA0Tgt,
NA_from_GA0NUT_GA0Tgt_woTLL
Test for all NODE
NUT performs Stateless Address Autoconfiguration(Global) on its interface
Judgement #1. NUT MUST transmit DAD NS for its autoconfigured Link-local address.
name: DADNS_from_NUT
src: ::0
dst: solnode[NUT's tentative Link-local]
TargetAddress: NUT's tentative Link-local
Judgement #2. NUT SHOULD transmit RS.
name: RS_from_NUT
src: NUT's Link-local
dst: allrouter
Action #1. TN transmits RA which contains Global Prefix.
name: RA_GA0_VLT90
src: TN's Link-local
dst: allnode
PXOPT: Global0
VLT=90
PLT=45
Judgement #3. NUT MUST transmit DAD NS for its autoconfigured Global address.
(* If the address is consisits of EUI64, as same as Link-local
address, This DAD MAY be omitted.)
name: DADNS_from_NUT_GA0Tgt
src: ::0
dst: solnode[NUT's tentative Global0]
TargetAddress: NUT's tentative Global0
Action #2. TN transmits SOL NS to check if NUT's address is configured.
name: SOLNS_from_TN_GA0Tgt
src: TN's Link-local
dst: solnode[NUT's Global0]
TargetAddress: NUT's Global0
Judgement #4. NUT MUST transmit SOL NA for its autoconfigured Global address.
name:
NA_from_NUT_GA0Tgt,
NA_from_NUT_GA0Tgt_woTLL,
NA_from_GA0NUT_GA0Tgt,
NA_from_GA0NUT_GA0Tgt_woTLL
src: NUT's any Unicast Address
dst: TN's Link-local
TargetAddress: NUT's Global0
RFlag: 0
SFlag: 1
OFlag: 1
TLLOPT: NUT's MAC address
(* TLLOPT may be omitted)
Action #3. TN transmits RA which contains Global Prefix.
name: RA_GA0_VLT20
src: TN's Link-local
dst: allnode
PXOPT: Global0
VLT=20
PLT=10
Judgement #5. NUT MUST NOT transmit DAD NS for its autoconfigured Global address.
(* If the address is consisits of EUI64, as same as Link-local
address, This DAD MAY be omitted.)
name: DADNS_from_NUT_GA0Tgt,DADNS_any, DADNS_any_wSLL
src: ::0
dst: solnode[NUT's tentative Global0]
TargetAddress: NUT's tentative Global0
Action #4. TN transmits SOL NS to check if NUT's address is configured.
name: SOLNS_from_TN_GA0Tgt
src: TN's Link-local
dst: solnode[NUT's Global0]
TargetAddress: NUT's Global0
Judgement #6. NUT MUST transmit SOL NA for its autoconfigured Global address.
name:
NA_from_NUT_GA0Tgt,
NA_from_NUT_GA0Tgt_woTLL,
NA_from_GA0NUT_GA0Tgt,
NA_from_GA0NUT_GA0Tgt_woTLL
src: NUT's any Unicast Address
dst: TN's Link-local
TargetAddress: NUT's Global0
RFlag: 0
SFlag: 1
OFlag: 1
TLLOPT: NUT's MAC address
(* TLLOPT may be omitted)
Action #5. TN transmits SOL NS to check if NUT's address is configured.
name: SOLNS_from_TN_GA0Tgt
src: TN's Link-local
dst: solnode[NUT's Global0]
TargetAddress: NUT's Global0
Judgement #7. NUT MUST transmit SOL NA for its autoconfigured Global address.
name:
NA_from_NUT_GA0Tgt,
NA_from_NUT_GA0Tgt_woTLL,
NA_from_GA0NUT_GA0Tgt,
NA_from_GA0NUT_GA0Tgt_woTLL
src: NUT's any Unicast Address
dst: TN's Link-local
TargetAddress: NUT's Global0
RFlag: 0
SFlag: 1
OFlag: 1
TLLOPT: NUT's MAC address
(* TLLOPT may be omitted)
Action #6. TN transmits SOL NS to check if NUT's address is configured.
name: SOLNS_from_TN_GA0Tgt
src: TN's Link-local
dst: solnode[NUT's Global0]
TargetAddress: NUT's Global0
Judgement #8. NUT MUST transmit SOL NA for its autoconfigured Global address.
name:
NA_from_NUT_GA0Tgt,
NA_from_NUT_GA0Tgt_woTLL,
NA_from_GA0NUT_GA0Tgt,
NA_from_GA0NUT_GA0Tgt_woTLL
src: NUT's any Unicast Address
dst: TN's Link-local
TargetAddress: NUT's Global0
RFlag: 0
SFlag: 1
OFlag: 1
TLLOPT: NUT's MAC address
(* TLLOPT may be omitted)
Action #7. TN transmits RA which contains Global Prefix.
name: RA_GA0_VLT20
src: TN's Link-local
dst: allnode
PXOPT: Global0
VLT=20
PLT=10
Judgement #9. NUT MUST NOT transmit DAD NS for its autoconfigured Global address.
(* If the address is consisits of EUI64, as same as Link-local
address, This DAD MAY be omitted.)
name: DADNS_from_NUT_GA0Tgt,DADNS_any, DADNS_any_wSLL
src: ::0
dst: solnode[NUT's tentative Global0]
TargetAddress: NUT's tentative Global0
Action #8. TN transmits SOL NS to check if NUT's address is configured.
name: SOLNS_from_TN_GA0Tgt
src: TN's Link-local
dst: solnode[NUT's Global0]
TargetAddress: NUT's Global0
Judgement #10. NUT MUST transmit SOL NA for its autoconfigured Global address.
name:
NA_from_NUT_GA0Tgt,
NA_from_NUT_GA0Tgt_woTLL,
NA_from_GA0NUT_GA0Tgt,
NA_from_GA0NUT_GA0Tgt_woTLL
src: NUT's any Unicast Address
dst: TN's Link-local
TargetAddress: NUT's Global0
RFlag: 0
SFlag: 1
OFlag: 1
TLLOPT: NUT's MAC address
(* TLLOPT may be omitted)
Action #9. TN transmits SOL NS to check if NUT's address is configured.
name: SOLNS_from_TN_GA0Tgt
src: TN's Link-local
dst: solnode[NUT's Global0]
TargetAddress: NUT's Global0
Judgement #11. NUT MUST transmit SOL NA for its autoconfigured Global address.
name:
NA_from_NUT_GA0Tgt,
NA_from_NUT_GA0Tgt_woTLL,
NA_from_GA0NUT_GA0Tgt,
NA_from_GA0NUT_GA0Tgt_woTLL
src: NUT's any Unicast Address
dst: TN's Link-local
TargetAddress: NUT's Global0
RFlag: 0
SFlag: 1
OFlag: 1
TLLOPT: NUT's MAC address
(* TLLOPT may be omitted)
Action #10. TN transmits SOL NS to check if NUT's address is configured.
name: SOLNS_from_TN_GA0Tgt
src: TN's Link-local
dst: solnode[NUT's Global0]
TargetAddress: NUT's Global0
Judgement #12. NUT MUST transmit SOL NA for its autoconfigured Global address.
name:
NA_from_NUT_GA0Tgt,
NA_from_NUT_GA0Tgt_woTLL,
NA_from_GA0NUT_GA0Tgt,
NA_from_GA0NUT_GA0Tgt_woTLL
src: NUT's any Unicast Address
dst: TN's Link-local
TargetAddress: NUT's Global0
RFlag: 0
SFlag: 1
OFlag: 1
TLLOPT: NUT's MAC address
(* TLLOPT may be omitted)
Action #11. TN transmits SOL NS to check if NUT's address is configured.
name: SOLNS_from_TN_GA0Tgt
src: TN's Link-local
dst: solnode[NUT's Global0]
TargetAddress: NUT's Global0
Judgement #13. NUT MUST transmit SOL NA for its autoconfigured Global address.
name:
NA_from_NUT_GA0Tgt,
NA_from_NUT_GA0Tgt_woTLL,
NA_from_GA0NUT_GA0Tgt,
NA_from_GA0NUT_GA0Tgt_woTLL
src: NUT's any Unicast Address
dst: TN's Link-local
TargetAddress: NUT's Global0
RFlag: 0
SFlag: 1
OFlag: 1
TLLOPT: NUT's MAC address
(* TLLOPT may be omitted)
Action #12. TN transmits SOL NS to check if NUT's address is configured.
name: SOLNS_from_TN_GA0Tgt
src: TN's Link-local
dst: solnode[NUT's Global0]
TargetAddress: NUT's Global0
Judgement #14. NUT MUST NOT transmit SOL NA for its autoconfigured Global address.
name:
NA_from_NUT_GA0Tgt,
NA_from_NUT_GA0Tgt_woTLL,
NA_from_GA0NUT_GA0Tgt,
NA_from_GA0NUT_GA0Tgt_woTLL
src: NUT's any Unicast Address
dst: TN's LIink-local
TargetAddress: NUT's Global0
RFlag: 0
SFlag: 1
OFlag: 1
TLLOPT: NUT's MAC address
(* TLLOPT may be omitted)
RFC2462
(omit)
5.5.3. Router Advertisement Processing
(omit)
e) If the advertised prefix matches the prefix of an autoconfigured address (i.e., one obtained via stateless or stateful address autoconfiguration) in the list of addresses associated with the interface, the specific action to perform depends on the Valid Lifetime in the received advertisement and the Lifetime associated with the previously autoconfigured address (which we call StoredLifetime in the discussion that follows):
1) If the received Lifetime is greater than 2 hours or greater than StoredLifetime, update the stored Lifetime of the corresponding address.
2) If the StoredLifetime is less than or equal to 2 hours and the received Lifetime is less than or equal to StoredLifetime, ignore the prefix, unless the Router Advertisement from which this Prefix Information option was obtained has been authenticated (e.g., via IPSec [RFC2402]). If the Router Advertisment was authenticated, the StoredLifetime should be set to the Lifetime in the received option.
3) Otherwise, reset the stored Lifetime in the corresponding address to two hours.
The above rules address a specific denial of service attack in which a bogus advertisement could contain prefixes with very small Valid Lifetimes. Without the above rules, a single unauthenticated advertisement containing bogus Prefix Information options with short Lifetimes could cause all of a node's addresses to expire prematurely. The above rules insure that legitimate advertisements (which are sent periodically) will "cancel" the short lifetimes before they actually take effect.
5.5.4. Address Lifetime Expiry
A preferred address becomes deprecated when its preferred lifetime expires. A deprecated address SHOULD continue to be used as a source address in existing communications, but SHOULD NOT be used in new communications if an alternate (non-deprecated) address is available and has sufficient scope. IP and higher layers (e.g., TCP, UDP) MUST continue to accept datagrams destined to a deprecated address since a deprecated address is still a valid address for the interface. An implementation MAY prevent any new communication from using a deprecated address, but system management MUST have the ability to disable such a facility, and the facility MUST be disabled by default.
An address (and its association with an interface) becomes invalid when its valid lifetime expires. An invalid address MUST NOT be used as a source address in outgoing communications and MUST NOT be recognized as a destination on a receiving interface.
(omit)
detail of v6eval tool option: see perldoc V6evalTool.pm, perldoc V6evalRemote.pm