rfc2766_5.3.1_checksum_icmp.seq - Verify IPv6 <-> IPv4 header translation in accordance with RFC2766 [NATPT]
Router
rfc2766_5.3.1_checksum_icmp.seq [-tooloption ...] -p rfc2766_5.3.1_checksum_icmp.def
Before this test starts, run initialize_natpt.seq.
This test verifies that NUT adjusts header checksum for ICMP packets. Network Topology
Link0 -------------------------- | | TN NUT | | -------------------------- Link1
TN -- (Link0) -- NUT NUT -- (Link1) -- TN --------------------- ------------------------
1.1. <=================== IPv4 ICMP packet IPv4 Header src address : TN LINK1 IPv4 address dst address : TN LINK0 IPv4 address DF = 1 ICMPv4 Destination Unreachable Type = 3 Code = 1 Payload (28 bytes) IPv4 Header (20 bytes) src address : TN LINK0 IPv4 address dst address : TN LINK1 IPv4 address DF = 1 Protocol = 17 UDP packet (first 8 bytes) Checksum including IPv4 pseudo header data = repeat(0xff,1422) 1.2. <<JUDGMENT>> <=================== IPv6 ICMP packet IPv6 Header src address : TN LINK1 IPv4 embedded IPv6 address dst address : TN LINK0 IPv4 embedded IPv6 address ICMPv6 Destination Unreachable Type = 1 Code = 0 Payload (48 bytes) IPv6 Header (40 bytes) src address : TN LINK0 IPv4 embedded IPv6 address dst address : TN LINK1 IPv4 embedded IPv6 address NextHeader = 17 UDP packet (first 8 bytes) Checksum including IPv6 pseudo header data = repeat(0xff,1422)
<< PASS >> NUT will translate ICMPv4 Destination Unreachable to ICMPv6 Destination Unreachable. NUT will translate the inner IPv4 UDP packet to the equivalent IPv6 UDP packet. NUT will update checksums for the inner and outer IP headers. << FAIL >> NUT does not translate correctly.
RFC2766
5.3.1 TCP/UDP/ICMP Checksum Update from IPv4 to IPv6
ICMPv6, unlike ICMPv4, uses a pseudo-header, just like UDP and TCP during checksum computation. As a result, when the ICMPv6 header checksum is computed [SIIT], the checksum needs to be adjusted to account for the additional pseudo-header. Note, there may also be adjustments required to the checksum due to changes in the source and destination addresses (and changes in TCP/UDP/ICMP identifiers in the case of NAPT-PT) of the payload carried within ICMP.
perldoc V6evalTool