rfc2765_3.1_nextheader.seq - Verify IPv6 <-> IPv4 header translation in accordance with RFC2765 [SIIT]
Router
rfc2765_3.1_nextheader.seq [-tooloption ...] -p rfc2765_3.1_nextheader.def
Before this test starts, run initialize.seq.
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 = 1 More fragments = 0 Offset = 0 Protocol = 1 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 Next Header = 58 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 More fragments = 0 Offset = 0 Protocol = 17 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 Next Header = 17 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 = 1 More fragments = 0 Offset = 0 Protocol = 6 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 Next Header = 6 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 More fragments = 0 Offset = 0 Protocol = 255 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 Next Header = 255 data = repeat(0xff,64)
<< 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.
RFC2765
3.1. Translating IPv4 Headers into IPv6 Headers
Next Header: Protocol field copied from IPv4 header
3.3. Translating ICMPv4 Headers into ICMPv6 Headers
Echo and Echo Reply (Type 8 and Type 0) Adjust the type to 128 and 129, respectively, and adjust the ICMP checksum both to take the type change into account and to include the ICMPv6 pseudo-header.
perldoc V6evalTool