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