NAME

        rfc2765_3.1_nextheaderfrag.seq - Verify IPv6 <-> IPv4 header 
        translation in accordance with RFC2765 [SIIT]


TARGET

        Router


SYNOPSIS

        rfc2765_3.1_nextheaderfrag.seq [-tooloption ...] 
        -p rfc2765_3.1_nextheaderfrag.def


INITIALIZATION

	Before this test starts, run initialize.seq.


TEST PROCEDURE

        This test verifies that NUT can translates IPv4 Protocol field 
        to IPv6 Next Header field.
        
        Network Topology

        Link0
        --------------------------
            |               |
           TN              NUT
            |               |
        --------------------------
        Link1

        TN -- (Link0) -- NUT        NUT -- (Link1) -- TN
        
        ---------------------      ------------------------

        1.1.
                                   <===================
        ICMPv4 Echo request
                IPv4 Header
                        src address : TN LINK1 IPv4 address
                        dst address : TN LINK0 IPv4 address
                        Don't Fragment = 0
                        Protocol = 1
                        Identifier = 10000
                ICMPv4 echo request

        1.2.
        <<JUDGMENT>>
        <===================
        ICMPv6 Echo Request
                IPv6 Header
                        src address : TN LINK1 IPv4 embedded IPv6 address
                        dst address : TN LINK0 IPv4 embedded IPv6 address
                Fragment Header
                        Next Header = 58
                        Identification = 10000
                ICMPv6 echo request

        2.1.
                                   <===================
        IPv4 UDP packet
                IPv4 Header
                        src address : TN LINK1 IPv4 address
                        dst address : TN LINK0 IPv4 address
                        Don't Fragment = 1
                        Protocol = 17
                        Identifier = 20000
                UDP packet
                        Checksum including IPv4 pseudo header
                        data = repeat(0xff,64)
        2.2.
        <<JUDGMENT>>
        <===================
        IPv6 UDP packet
                IPv6 Header
                        src address : TN LINK1 IPv4 embedded IPv6 address
                        dst address : TN LINK0 IPv4 embedded IPv6 address
                Fragment Header
                        Next Header = 17
                        Identification = 20000
                UDP packet
                        Checksum including IPv6 pseudo header
                        data = repeat(0xff,64)

        3.1.
                                   <===================
        IPv4 TCP packet
                IPv4 Header
                        src address : TN LINK1 IPv4 address
                        dst address : TN LINK0 IPv4 address
                        Don't Fragment = 0
                        Protocol = 6
                        Identifier = 30000
                TCP packet
                        Checksum including IPv4 pseudo header
                        data = repeat(0xff,64)

        3.2.
        <<JUDGMENT>>
        <===================
        IPv6 UDP packet
                IPv6 Header
                        src address : TN LINK1 IPv4 embedded IPv6 address
                        dst address : TN LINK0 IPv4 embedded IPv6 address
                Fragment Header
                        Next Header = 6
                        Identification = 30000
                TCP packet
                        Checksum including IPv6 pseudo header
                        data = repeat(0xff,64)

        4.1.
                                   <===================
        IPv4 unknown protocol(255) packet
                IPv4 Header
                        src address : TN LINK1 IPv4 address
                        dst address : TN LINK0 IPv4 address
                        Don't Fragment = 1
                        Protocol = 255
                        Identifier = 40000
                data = repeat(0xff,64)

        4.2.
        <<JUDGMENT>>
        <===================
        IPv6 unknown protocol(255) packet
                IPv6 Header
                        src address : TN LINK1 IPv4 embedded IPv6 address
                        dst address : TN LINK0 IPv4 embedded IPv6 address
                Fragment Header
                        Next Header = 255
                        Identification = 40000
                data = repeat(0xff,64)
         


JUDGMENT

        << PASS >>
                NUT translates ICMPv4 to ICMPv6, recalculates header
                checksum for UDP and TCP, and let other protocols
                pass through unchanged.
                
        << FAIL >>      
                TN (Link0) does not receive an ICMPv6, an UDP, a TCP
                and an IPv6 packet with Next Header = 255.


NOTE


REFERENCE

RFC2765

3.1. Translating IPv4 Headers into IPv6 Headers

   If there is need to add a fragment header (the DF bit is not set or
   the packet is a fragment) the header fields are set as above with the
   following exceptions:

      Fragment header fields:

          Next Header:
                  Protocol field copied from IPv4 header.

          Identification:
                  The low-order 16 bits copied from the Identification
                  field in the IPv4 header.  The high-order 16 bits set
                  to zero.


SEE ALSO

        perldoc V6evalTool