NAME

        acceptTooBigMesgOnlink - Verify changing Path MTU w/ received Too Big Message on a link


TARGET

        Host


SYNOPSIS

        acceptTooBigMesgOnlink.seq [-tooloption ...] -p acceptTooBigMesgOnlink.def


NETWORK CONFIGURATION

        This test evaluate the behavior of NUT when it receive the ICMP
        Packet Too Big Message.
        In this test, NUT is a host and TN plays a Roll of Router and 
        other host.
        
        Phisical Network configuration
        
        --------+---------------+----------
                |               |
               NUT              TN

        Logical Network Configuration

             HOST-B            NUT
               |                |
        -------+--------+-------+--------
                        |
                     Proxy-C
                        |
        --------+-------+----------------
                |
              HOST-A

        In this test, NUT receives variable Packet Too Big Message. 
        - Decrease PMTU for A from 1500 to 1400
        - Re-decrease PMTU for A from 1400 to 1304


INITIALIZATION

        The TN send a RA to assign global address prefix.

           TN          NUT
           |            |
        ---+------------+------

        ===multicast RA===>
        src=TN's link-local
        dst=LinkLocal-all-node                                                  
        M=0, O=0,
        Lifetime=3600, ReachableTime=60000, RetransTimer=1005
        Prefix:
           L=1, A=1,                       
           ValidLifetime=3600005, PreferredLifetime=3600005
           Prefix=3ffe:501:ffff:100::, PrefixLength=64                      
   
          Wait (5 sec.)
                 Ignoring DAD packets for global address.                 


TEST PROCEDURE

         "acceptTooBigMesgOnlink" verify NUT's behavior when it receives 
         ICMP Packet Too Big Mesg even though the destination address
         is Link-Local Address.

           TN          NUT
           |            |
        ---+------------+------

        1. Confirm MTU (MTU=1500) ------------------------------
        1.1
        TN send Echo Request.  
        TN(B) === echo request(1500) ===========> NUT

        1.2
        NUT send Echo Reply.
        << JUDGMENT 1 >>
        TN(B) <=== echo reply(1500) ============= NUT

        2. PKT TOO BIG (MTU=1400) ------------------------------
        2.1
        TN send Echo Request.  
        TN(A) === echo request(1/2 MTU=1400) ===> NUT
        TN(A) === echo request(2/2 MTU= 156) ===> NUT

        2.2
        NUT send Echo Reply.

        TN(A) <=== echo reply(1500) ============= NUT

        2.3
        TN send ICMPv6 Too Big Mesg include MTU (1400).
        
        TN(C) == ICMPv6 Too Big Mesg(MTU=1400) => NUT

        2.4
        TN send Echo Request.  
        TN(A) === echo request(1/2 MTU=1400) ===> NUT
        TN(A) === echo request(2/2 MTU= 156) ===> NUT

        2.5
        NUT send Echo Reply 
        << JUDGMENT 2 >>
        TN(B) <=== echo reply(1400 1/2) ========= NUT
        TN(B) <=== echo reply( 156 2/2) ========= NUT

        3. Confirm MTU for B(MTU=1500) ------------------------------
        3.1
        TN send Echo Request.  
        TN(B) ==== echo request(1500) ==========> NUT

        3.2
        NUT send Echo Reply.
        << JUDGMENT 3 >>
        TN(B) <==== echo reply(1500) ============ NUT

        4. PKT TOO BIG (MTU=1304) ------------------------------
        4.1
        TN send Echo Request.  
        TN(A) === echo request(1304 1/2) =======> NUT
        TN(A) === echo request( 154 2/2) =======> NUT

        4.2
        NUT send Echo Reply.
        TN(A) <=== echo reply(1400) ============= NUT

        4.3
        TN send ICMPv6 Too Big Mesg include MTU (1304).
        TN(C) = ICMPv6 Too Big Mesg(MTU=1304) ==> NUT

        4.4
        TN send Echo Request.  
        TN(A) === echo request(1304 1/2) =======> NUT
        TN(A) === echo request( 154 2/2) =======> NUT

        4.5
        NUT send Echo Reply 
        << JUDGMENT 4 >>
        TN(A) <=== echo reply(1304 1/2) ========= NUT
        TN(A) <=== echo reply( 154 2/2) ========= NUT


JUDGMENT

        << JUDGMENT 1 -PASS- >>
                NUT send Echo Reply

                "PASS" means that NUT recognizes Link MTU is greater equal than 1500.
                And replied packet was correct.

        << JUDGMENT 2 -PASS- >>
                NUT send Echo Reply

                "PASS" means that NUT set valid MTU in received Packet Too Big message.
                And fragmented packets are correct.

        << JUDGMENT 3 -PASS- >>
                NUT send Echo Reply

                "PASS" means that NUT treats the MTU in Packet Too Big Message independently.
                And fragmented packets are correct.

        << JUDGMENT 4 -PASS- >>
                NUT send Echo Reply

                "PASS" means that NUT re-set valid MTU in received Packet Too Big message .
                And fragmented packets are correct.


SEE ALSO

        perldoc V6evalTool
        perldoc V6evalRemote