NAME

        rfc2766_5.3.2_checksum_tcp_udp.seq - Verify IPv6 <-> IPv4 header 
        translation in accordance with RFC2766 [NATPT]


TARGET

        Router


SYNOPSIS

        rfc2766_5.3.2_checksum_tcp_udp.seq [-tooloption ...] 
        -p rfc2766_5.3.2_checksum_tcp_udp.def


INITIALIZATION

	Before this test starts, run initialize_natpt.seq.


TEST PROCEDURE

        This test verifies that NUT adjusts header checksum for TCP/UDP 
        packets.
        
        Network Topology
        Link0
        --------------------------
            |               |
           TN              NUT
            |               |
        --------------------------
        Link1
        TN -- (Link0) -- NUT        NUT -- (Link1) -- TN
        
        ---------------------      ------------------------

1.1. ===================> IPv6 UDP packet IPv6 Header src address : TN LINK0 IPv4 embedded IPv6 address dst address : TN LINK1 IPv4 embedded IPv6 address UDP packet Checksum including IPv6 pseudo header data = repeat(0xff,128) 1.2. <> ===================> IPv4 UDP packet IPv4 Header src address : TN LINK0 IPv4 address dst address : TN LINK1 IPv4 address DF = 1 UDP packet Checksum including IPv4 pseudo header, or zero data = repeat(0xff,128)
2.1. ===================> IPv6 UDP packet IPv6 Header src address : TN LINK0 IPv4 embedded IPv6 address dst address : TN LINK1 IPv4 embedded IPv6 address Fragment Header More fragments = 1 UDP packet Checksum including IPv6 pseudo header, or zero data = repeat(0xff,64) 2.2. <> ===================> IPv4 UDP packet IPv4 Header src address : TN LINK0 IPv4 address dst address : TN LINK1 IPv4 address MF = 1 UDP packet Checksum for full UDP packet, including pseudo header data = repeat(0xff,64)
3.1. ===================> IPv6 UDP packet IPv6 Header src address : TN LINK0 IPv4 embedded IPv6 address dst address : TN LINK1 IPv4 embedded IPv6 address Fragment Header More fragments = 0 NextHeader = 17 Payload data = repeat(0xff,64) 3.2. <> ===================> IPv4 UDP packet IPv4 Header src address : TN LINK0 IPv4 address dst address : TN LINK1 IPv4 address MF = 0 Protocol = 17 Payload data = repeat(0xff,64)
4.1. ===================> IPv6 TCP packet IPv6 Header src address : TN LINK0 IPv4 embedded IPv6 address dst address : TN LINK1 IPv4 embedded IPv6 address TCP packet Checksum including IPv6 pseudo header data = repeat(0xff,128) 4.2. <> ===================> IPv4 TCP packet IPv4 Header src address : TN LINK0 IPv4 address dst address : TN LINK1 IPv4 address DF = 1 TCP packet Checksum including IPv4 pseudo header data = repeat(0xff,128)
5.1. ===================> IPv6 TCP packet IPv6 Header src address : TN LINK0 IPv4 embedded IPv6 address dst address : TN LINK1 IPv4 embedded IPv6 address Fragment Header More fragments = 1 TCP packet Checksum including IPv6 pseudo header data = repeat(0xff,64) 5.2. <> ===================> IPv4 TCP packet IPv4 Header src address : TN LINK0 IPv4 address dst address : TN LINK1 IPv4 address MF = 1 TCP packet Checksum including IPv4 pseudo header data = repeat(0xff,64)
6.1. ===================> IPv6 TCP packet IPv6 Header src address : TN LINK0 IPv4 embedded IPv6 address dst address : TN LINK1 IPv4 embedded IPv6 address Fragment Header More fragments = 0 Payload data = repeat(0xff,64) 6.2. <> ===================> IPv4 TCP packet IPv4 Header src address : TN LINK0 IPv4 address dst address : TN LINK1 IPv4 address MF = 0 Payload data = repeat(0xff,64)


JUDGMENT

<< PASS >> NUT adjusts header checksum for UDP/TCP packets. Optionally NUT sets checksum to zero on UDP packets. << FAIL >> NUT send TCP/UDP packets with wrong checksum.


NOTE


REFERENCE

B5.3.2 TCP/UDP/ICMP Checksum Update from IPv6 to IPv4 TCP and UDP checksums SHOULD be recalculated to reflect the address change from v6 to v4. The incremental checksum adjustment algorithm may be borrowed from [NAT]. In the case of NAPT-PT, TCP/UDP checksums should be adjusted to account for the address and TCP/UDP port changes, going from V6 to V4 addresses. For UDP packets, optionally, the checksum may simply be changed to zero.


SEE ALSO

perldoc V6evalTool