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. <> <=================== 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. <> <=================== 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. <> <=================== 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. <> <=================== 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

B3.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