# 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