NAME

        acceptTooBigMesg - Verify changing Path MTU w/ received Too Big Message 


TARGET

        Host


SYNOPSIS

        acceptTooBigMesg.seq [-tooloption ...] -p acceptTooBigMesg.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

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

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


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

        "acceptTooBigMesg" verify NUT's behavior when it receives 
         ICMP Packet Too Big Mesg.

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

        1. PKT TOO BIG (MTU=1400) ------------------------------
        1.1
        TN send Echo Request.  
        TN(A) === echo request(1500) ===> NUT

        1.2
        NUT send Echo Reply.

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

        1.3
        TN send ICMPv6 Too Big Mesg include MTU (1400).
        
        TN(A) === ICMPv6 Too Big Mesg(MTU=1400) ===> NUT

        1.4
        TN send Echo Request.  
        TN(A) === echo request(1500) ===> NUT

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

        2. PKT TOO BIG (MTU=1280) ------------------------------
        2.1
        TN send Echo Request.  
        TN(B) === echo request(1500) ===> NUT

        2.2
        NUT send Echo Reply.

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

        2.3
        TN send ICMPv6 Too Big Mesg include MTU (1280).
        
        TN(B) === ICMPv6 Too Big Mesg(MTU=1280) ===> NUT

        2.4
        TN send Echo Request.  
        TN(B) === echo request(1500) ===> NUT

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

        3. PKT TOO BIG (MTU=1304) ------------------------------
        3.1
        TN send Echo Request.  
        TN(A) === echo request(1400) ===> NUT

        3.2
        NUT send Echo Reply.

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

        3.3
        TN send ICMPv6 Too Big Mesg include MTU (1304).
        
        TN(A) === ICMPv6 Too Big Mesg(MTU=1304) ===> NUT

        3.4
        TN send Echo Request.  
        TN(A) === echo request(1400) ===> NUT

        3.5
        NUT send Echo Reply 
        << JUDGMENT 3 >>
        TN(A) <=== echo reply(1304 1/2) === NUT
        TN(A) <=== echo reply( 152 2/2) === NUT

        4. PKT TOO BIG (MTU=1400 INCREASE) ------------------------------
        4.1
        TN send Echo Request.  
        TN(B) === echo request(1280) ===> NUT

        4.2
        NUT send Echo Reply.

        TN(B) <=== echo reply(1280) === NUT

        4.3
        TN send ICMPv6 Too Big Mesg include MTU (1400).
        
        TN(B) === ICMPv6 Too Big Mesg(MTU=1400) ===> NUT

        4.4
        TN send Echo Request.  
        TN(B) === echo request(1400) ===> NUT

        4.5
        NUT send Echo Reply 
        << JUDGMENT 4 >>
        TN(B) <=== echo reply(1280 1/2) === NUT
        TN(B) <=== echo reply( 176 2/2) === NUT

        5. PKT TOO BIG (MTU=1272) ------------------------------
        5.1
        TN send Echo Request.  
        TN(C) === echo request(1500) ===> NUT

        5.2
        NUT send Echo Reply.

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

        5.3
        TN send ICMPv6 Too Big Mesg include MTU (1272).
        
        TN(C) === ICMPv6 Too Big Mesg(MTU=1272) ===> NUT

        5.4
        TN send Echo Request.  
        TN(C) === echo request(1492) ===> NUT

        5.5
        NUT send Echo Reply 
        << JUDGMENT 5 >>
        TN(C) <=== echo reply(1280 1/2) === NUT
        TN(C) <=== echo reply( 268 2/2) === NUT

        5.6
        TN send Echo Request.  
        TN(C) === echo request(1000) ===> NUT

        5.7
        NUT send Echo Reply 
        TN(C) <=== echo reply(1008 w/ FH) === NUT


JUDGMENT

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

                "PASS" means that NUT set valid MTU in received Packet Too Big message.
                And fragmented packets are 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 set decreased size of valid MTU in received Packet Too Big message.
                And fragmented packets are correct.

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

                "PASS" means that NUT doesn't set increased size of valid MTU in received Packet Too Big message.
                And fragmented packets are correct.

        << JUDGMENT 5 -PASS- >>
                NUT send Echo Reply
                "PASS" means that NUT set Minimum MTU, rather than MTU in received Packet Too Big Message, that is smaller than Minimum MTU.
                And NUT add Fragment header even though the packet is smaller than Minimu MTU.


SEE ALSO

        perldoc V6evalTool
        perldoc V6evalRemote