# 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