NAME

  rTransNonQuerier.seq - "Multicast Listener Discovery for IPv6" Test
                        Transition to Non-Querier


TARGET

  Router


INITIALIZATION

  None


TEST PROCEDURE

  This test check following.
  
  *1: NUT become Non-Querier.

   -- in RFC2710 page 5 --
   If a router hears a Query message whose IPv6 Source
   Address is numerically less than its own selected address for that
   link, it MUST become a Non-Querier on that link.
   -- in RFC2710 page 5 --

  *2: NUT(Non-Querier) don't send any message.
  
   -- in RFC2710 page 15 --
   The state transition diagram for a router in Non-Querier state is
   similar, but non-Queriers do not send any messages and are only
   driven by message reception.
   -- in RFC2710 page 15 --

  *3: NUT return Querier.

   -- in RFC2710 page 5 --
   If [Other Querier
   Present Interval] passes without receiving, from a particular
   attached link, any Queries from a router with an address less than
   its own, a router resumes the role of Querier on that link.
   -- in RFC2710 page 5 --

  -Test flow 
  
  1. use Generl Query message
     1.1. send Generl Query message
          (Generl Query's source address < NUT address)
          NUT become Non-Querier
     1.2. NUT don't send an General Query message
     1.3. send Generl Query message
     1.4. NUT don't send an General Query message
     1.5. Wait [Other Querier Present Interval](125 + (10/2) = 130s)
          NUT return Querier
     1.6. Wait General Query message from NUT

  2. use Multicast-Address-Specific Query message
     2.1. send Multicast-Address-Specific Query message
          (Multicast-Address-Specific Query's source address < NUT address)
          NUT become Non-Querier
     2.2. NUT don't send an General Query message
     2.3. send Multicast-Address-Specific Query message
     2.4. NUT don't send an General Query message
     2.5. Wait [Other Querier Present Interval](125 + (10/2) = 130s)
          NUT return Querier
     2.6. Wait General Query message from NUT
     
        NUT       TN 
         |        |
         <--------+ Generl Query
         |        | (Generl Query's source address < NUT address)
         |        | 
         |        | No Generl Query message.
         |        | Check *1 *2
         |        |
         <--------+ Generl Query
         |        | (Generl Query's source address < NUT address)
         |        |
         |        | No Generl Query message.
         |        | Check *1 *2
         |        |
         |        | Wait [Other Querier Present Interval](125 + (10/2) = 130s)
         +------->| General Query
         |        | Check *3
         |        |
         |        |
         <--------+ Multicast-Address-Specific Query
         |        | (Multicast-Address-Specific Query's source address < NUT address)
         |        | 
         |        | No Generl Query message.
         |        | Check *1 *2
         |        |
         <--------+ Multicast-Address-Specific Query
         |        | (Multicast-Address-Specific Query's source address < NUT address)
         |        |
         |        | No Generl Query message.
         |        | Check *1 *2
         |        |
         |        | Wait [Other Querier Present Interval](125 + (10/2) = 130s)
         +------->| General Query
         |        | Check *3
         |        |


JUDGEMENT

  PASS: NUT become Non-Querier (NUT don't transmit an General Query message).
        NUT return Querier (Receive General Query message).


SEE ALSO

  perldoc V6evalTool
  MLD.pm "Multicast Listener Discovery for IPv6" Test Common Utility