NAME

ADDRSTATE_reset_VLT - Check if ValidLifetime is reset by RA with same prefix


TARGET

Host


SYNOPSIS

ADDRSTATE_reset_VLT.seq [-tooloption ...] -pkt <packetdef> [sequence=<usolra-1>,<waitsec>,<usolra-2>] [init=<initname>,<initname>...] [sd=<sdopt>]

  -tooloption   : v6eval tool option
  <packetdef>   : packet definition file (v6eval tool option)
  <usolra-1,2>  : send RA <usolra-1,2> to NUT ; usolra_vlt(30|60|90|120)
  <waitsec>     : wait NN [sec]; waitNN
  <initname>    : how to initialize NUT; DADSuccess_boot/DADFail_boot/ra
  <sdopt>       : debug options
 detail of v6eval tool option: see perldoc V6evalTool.pm, perldoc V6evalRemote.pm
 detail of parameters: see Test sequence for IPv6 Stateless Address Autoconfiguration.


INITIALIZATION

 detail of Initialization: see Test sequence for IPv6 Stateless Address Autoconfiguration.


TEST PROCEDURE

 The following test is prepared in this test package. See INDEX file.

Test for a Host

   Check if ValidLifetime is reset by RA with same prefix (before expiry, greater VLT)
   Check if ValidLifetime is reset by RA with same prefix (after expiry, greater VLT)
   Check if ValidLifetime is reset by RA with same prefix (after expiry, same VLT)
   Check if ValidLifetime is reset by RA with same prefix (after expiry, less VLT)

Test sequence

  TN(or X)                   NUT
  ------------------------------
  Initialize NUT (see ...)

  Send Unsolicited RA to configure address of NUT
  ==== Action #1: Unsolicited RA ===>
        name: <usolra-1>
        src: TN's Link-local address
        dst: allnodes multicast
        SLL option exists
        Prefix option
              PrefixLength: 64
              LFlag: 1
              AFlag: 1
              ValidLifetime: <ValidLifetime-1>
              PreferredLifetime: <PreferredLifetime-1>
              Prefix: _GLOBAL0_UCAST_PRFX

  TN wait the DAD NS sends from NUT. (This judgement is informational only.)
  <=== Judgement #1: DAD NS ====
        name: dadns_from_NUT
        src: ::0
        dst: solnode[TargetAddress]
        TargetAddress: NUT's tentative _GLOBAL0_UCAST_PRFX + interface-id

  Wait for NUT to finish DAD. (sleep $RetransTimerSec=1 [sec])

  Check if NUT's address is configured.
  ==== Action #2: DAD NS ====>
        name: chkconf_dadns_to_NUT
        src: ::0
        dst: solnode[TargetAddress]
        TargetAddress: NUT's _GLOBAL0_UCAST_PRFX + interface-id

  DAD NA come from NUT because NUT's address is configured (valid preferred).
  <=== Judgement #2: DAD NA come====
        name: chkconf_dadna_from_NUT
        src: NUT's Link-local address or TargetAddress
        dst: allnodes multicast
        TargetAddress: NUT's _GLOBAL0_UCAST_PRFX + interface-id
        OFlag: 1
        RFlag: 0

  Wait for NUT's to spent NUT's address lifetime.
  Action #3: wait <waitsec> [sec]

  Send Unsolicited RA to configure address of NUT
  ==== Action #4: Unsolicited RA ===>
        name: <usolra-2>
        src: TN's Link-local address
        dst: allnodes multicast
        SLL option exists
        Prefix option
              PrefixLength: 64
              LFlag: 1
              AFlag: 1
              ValidLifetime: <ValidLifetime-2>
              PreferredLifetime: <PreferredLifetime-2>
              Prefix: _GLOBAL0_UCAST_PRFX

  TN wait the DAD NS sends from NUT. (This judgement is informational only.)
  <=== Judgement #4: DAD NS ====
        name: dadns_from_NUT
        src: ::0
        dst: solnode[TargetAddress]
        TargetAddress: NUT's tentative _GLOBAL0_UCAST_PRFX + interface-id

  Wait for NUT to finish DAD. (sleep $RetransTimerSec=1 [sec])

  Check if NUT's address is configured.
  ==== Action #5: DAD NS ====>
        name: chkconf_dadns_to_NUT
        src: ::0
        dst: solnode[TargetAddress]
        TargetAddress: NUT's _GLOBAL0_UCAST_PRFX + interface-id

  DAD NA come from NUT because NUT's address is configured (valid preferred).
  <=== Judgement #5: DAD NA come====
        name: chkconf_dadna_from_NUT
        src: NUT's Link-local address or TargetAddress
        dst: allnodes multicast
        TargetAddress: NUT's _GLOBAL0_UCAST_PRFX + interface-id
        OFlag: 1
        RFlag: 0

  permanent loop {
      Wait 30 [sec] to spent NUT's address lifetime.
      Count up totoal wait [sec] to spent NUT's address lifetime.

      Check if NUT's address is configured.
      ==== Action #6: DAD NS ====>
        name: chkconf_dadns_to_NUT
        src: ::0
        dst: solnode[TargetAddress]
        TargetAddress: NUT's _GLOBAL0_UCAST_PRFX + interface-id

      Check if DAD NA come from NUT (check if NUT's address configured)
      Exit the permanent loop if DAD NA doesn't come.
      <=== Judgement #6: DAD NA come====
        name: chkconf_dadna_from_NUT (or chkconf_dadna_from_NUT_rf1 if NUT is a Router)
        src: NUT's Link-local address or TargetAddress
        dst: allnodes multicast
        TargetAddress: NUT's _GLOBAL0_UCAST_PRFX + interface-id
        OFlag: 1
        RFlag: 0 ( if NUT is a Router then 1)
  }

  Judgement #6: it must be 0 < total wait [sec] == ValidLifetime of <usolra-2>


JUDGEMENT

Test for a Host

Check if ValidLifetime is reset by RA with same prefix (before expiry, greater VLT)

  -pkt GLOBAL0_valRA_sameprfxes.def sequence=usolra_vlt60,wait30,usolra_vlt120 init=DADSuccess_boot

  Action #1: send the Unsolicited RA to NUT
        name: usolra_vlt60
        Prefix option
              ValidLifetime: 60
              PreferredLifetime: 60

  Judgement #1: DAD NS come from NUT.
               (This judgement is informational only.)

  Action #2:    Send DAD NS to NUT

  Judgement #2: DAD NA must come from NUT because NUT's address is configured

  Action #3: wait 30 [sec] (not expire the ValidLifetime:60)

  Action #4: send the Unsolicited RA to NUT
        name: usolra_vlt120
        Prefix option
              ValidLifetime: 120
              PreferredLifetime: 120

  Judgement #4: DAD NS come from NUT.
               (This judgement is informational only.)

  Action #5:    Send DAD NS to NUT

  Judgement #5: DAD NA must come from NUT because NUT's address is configured
  
  permanent loop {
      Wait 30 [sec] to spent NUT's address lifetime.
      Count up totoal wait [sec] to spent NUT's address lifetime.

      Action #6:    Send DAD NS to NUT

      Judgement #6: DAD NA come from NUT if NUT's address is valid
                    exit the permanent loop if DAD NA doesn't come.
  }

  Judgement #6: it must be 0 < total wait [sec] == 120 (ValidLifetime of usolra_vlt120)

Check if ValidLifetime is reset by RA with same prefix (after expiry, greater VLT)

  -pkt GLOBAL0_valRA_sameprfxes.def sequence=usolra_vlt60,wait70,usolra_vlt120 init=DADSuccess_boot

  Action #1: send the Unsolicited RA to NUT
        name: usolra_vlt60
        Prefix option
              ValidLifetime: 60
              PreferredLifetime: 60

  Judgement #1: DAD NS come from NUT.
               (This judgement is informational only.)

  Action #2:    Send DAD NS to NUT

  Judgement #2: DAD NA must come from NUT because NUT's address is configured

  Action #3: wait 70 [sec] (expire the ValidLifetime:60)

  Action #4: send the Unsolicited RA to NUT
        name: usolra_vlt120
        Prefix option
              ValidLifetime: 120
              PreferredLifetime: 120

  Judgement #4: DAD NS come from NUT.
               (This judgement is informational only.)

  Action #5:    Send DAD NS to NUT

  Judgement #5: DAD NA must come from NUT because NUT's address is configured
  
  permanent loop {
      Wait 30 [sec] to spent NUT's address lifetime.
      Count up totoal wait [sec] to spent NUT's address lifetime.

      Action #6:    Send DAD NS to NUT

      Judgement #6: DAD NA come from NUT if NUT's address is valid
                    exit the permanent loop if DAD NA doesn't come.
  }

  Judgement #6: it must be 0 < total wait [sec] == 120 (ValidLifetime of usolra_vlt120)

Check if ValidLifetime is reset by RA with same prefix (after expiry, same VLT)

  -pkt GLOBAL0_valRA_sameprfxes.def   :sequence=usolra_vlt60,wait70,usolra_vlt60 init=DADSuccess_boot

  Action #1: send the Unsolicited RA to NUT
        name: usolra_vlt60
        Prefix option
              ValidLifetime: 60
              PreferredLifetime: 60

  Judgement #1: DAD NS come from NUT.
               (This judgement is informational only.)

  Action #2:    Send DAD NS to NUT

  Judgement #2: DAD NA must come from NUT because NUT's address is configured

  Action #3: wait 70 [sec] (expire the ValidLifetime:60)

  Action #4: send the Unsolicited RA to NUT
        name: usolra_vlt60
        Prefix option
              ValidLifetime: 60
              PreferredLifetime: 60

  Judgement #4: DAD NS come from NUT.
               (This judgement is informational only.)

  Action #5:    Send DAD NS to NUT

  Judgement #5: DAD NA must come from NUT because NUT's address is configured
  
  permanent loop {
      Wait 30 [sec] to spent NUT's address lifetime.
      Count up totoal wait [sec] to spent NUT's address lifetime.

      Action #6:    Send DAD NS to NUT

      Judgement #6: DAD NA come from NUT if NUT's address is valid
                    exit the permanent loop if DAD NA doesn't come.
  }

  Judgement #6: it must be 0 < total wait [sec] == 60 (ValidLifetime of usolra_vlt60)

Check if ValidLifetime is reset by RA with same prefix (after expiry, less VLT)

  -pkt GLOBAL0_valRA_sameprfxes.def   :sequence=usolra_vlt120,wait130,usolra_vlt60 init=DADSuccess_boot

  Action #1: send the Unsolicited RA to NUT
        name: usolra_vlt120
        Prefix option
              ValidLifetime: 120
              PreferredLifetime: 120

  Judgement #1: DAD NS come from NUT.
               (This judgement is informational only.)

  Action #2:    Send DAD NS to NUT

  Judgement #2: DAD NA must come from NUT because NUT's address is configured

  Action #3: wait 130 [sec] (expire the ValidLifetime:120)

  Action #4: send the Unsolicited RA to NUT
        name: usolra_vlt60
        Prefix option
              ValidLifetime: 60
              PreferredLifetime: 60

  Judgement #4: DAD NS come from NUT.
               (This judgement is informational only.)

  Action #5:    Send DAD NS to NUT

  Judgement #5: DAD NA must come from NUT because NUT's address is configured
  
  permanent loop {
      Wait 30 [sec] to spent NUT's address lifetime.
      Count up totoal wait [sec] to spent NUT's address lifetime.

      Action #6:    Send DAD NS to NUT

      Judgement #6: DAD NA come from NUT if NUT's address is valid
                    exit the permanent loop if DAD NA doesn't come.
  }

  Judgement #6: it must be 0 < total wait [sec] == 60 (ValidLifetime of usolra_vlt60)


SEE ALSO

 detail of v6eval tool option: see perldoc V6evalTool.pm, perldoc V6evalRemote.pm
 detail of parameters: see Test sequence for IPv6 Stateless Address Autoconfiguration.