rfc2765_4.1_options.seq - Verify IPv6 <-> IPv4 header translation in accordance with RFC2765 [SIIT]
Router
rfc2765_4.1_options.seq [-tooloption ...] -p rfc2765_4.1_options.def
Before this test starts, run initialize.seq.
This test verifies that NUT ignores IPv6 header options (except unexpired Routing Headers, which are not tested here.) Network Topology
Link0 -------------------------- | | TN NUT | | -------------------------- Link1
TN -- (Link0) -- NUT NUT -- (Link1) -- TN --------------------- ------------------------
1.1. ===================> ICMPv6 Echo Request IPv6 Header src address : TN LINK0 IPv4 embedded IPv6 address dst address : TN LINK1 IPv4 embedded IPv6 address Hop-By-Hop option header PadN (3 bytes) Pad1 (1 bytes) Pad1 (1 bytes) Pad1 (1 bytes) ICMPv6 echo request
1.2. <<JUDGMENT>> ===================> ICMPv4 Echo request IPv4 Header src address : TN LINK0 IPv4 address dst address : TN LINK1 IPv4 address ICMPv4 echo request
2.1. ===================> ICMPv6 Echo Request IPv6 Header src address : TN LINK0 IPv4 embedded IPv6 address dst address : TN LINK1 IPv4 embedded IPv6 address Routing option header RoutingType = 0; SegmentsLeft = 0; Address = "::" ICMPv6 echo request
2.2. <<JUDGMENT>> ===================> ICMPv4 Echo request IPv4 Header src address : TN LINK0 IPv4 address dst address : TN LINK1 IPv4 address ICMPv4 echo request
3.1. ===================> ICMPv6 Echo Request IPv6 Header src address : TN LINK0 IPv4 embedded IPv6 address dst address : TN LINK1 IPv4 embedded IPv6 address Fragment option header NextHeader = 58; // ICMPv6 ICMPv6 echo request
3.2. <<JUDGMENT>> ===================> ICMPv4 Echo request IPv4 Header src address : TN LINK0 IPv4 address dst address : TN LINK1 IPv4 address DF = 1 ICMPv4 echo request
4.1. ===================> ICMPv6 Echo Request IPv6 Header src address : TN LINK0 IPv4 embedded IPv6 address dst address : TN LINK1 IPv4 embedded IPv6 address Destination option header PadN (3 bytes) Pad1 (1 bytes) Pad1 (1 bytes) Pad1 (1 bytes) ICMPv6 echo request
4.2. <<JUDGMENT>> ===================> ICMPv4 Echo request IPv4 Header src address : TN LINK0 IPv4 address dst address : TN LINK1 IPv4 address ICMPv4 echo request
5.1. ===================> ICMPv6 Echo Request IPv6 Header src address : TN LINK0 IPv4 embedded IPv6 address dst address : TN LINK1 IPv4 embedded IPv6 address Hop-By-Hop option header PadN (3 bytes) Pad1 (1 bytes) Pad1 (1 bytes) Pad1 (1 bytes) Routing option header RoutingType = 0; SegmentsLeft = 0; Address = "::" Fragment option header NextHeader = 60; // Destination option header Destination option header PadN (3 bytes) Pad1 (1 bytes) Pad1 (1 bytes) Pad1 (1 bytes) ICMPv6 echo request
5.2. <<JUDGMENT>> ===================> ICMPv4 Echo request IPv4 Header src address : TN LINK0 IPv4 address dst address : TN LINK1 IPv4 address DF = 1 ICMPv4 echo request
6.1. ===================> ICMPv6 Echo Request IPv6 Header src address : TN LINK0 IPv4 embedded IPv6 address dst address : NUT LINK0 global IPv6 address Routing option header RoutingType = 0; SegmentsLeft = 1; Address = TN LINK1 IPv4 embedded IPv6 address ICMPv6 echo request
6.2. <<JUDGMENT>> ===================> ICMPv4 Echo request IPv4 Header src address : TN LINK0 IPv4 address dst address : TN LINK1 IPv4 address ICMPv4 echo request
<< PASS >> NUT ignores all options and translates the echo requests.
<< FAIL >> NUT doesn't translate the ICMPv6 echo requests to ICMPv4 echo requests.
RFC2765
4.1. Translating IPv6 Headers into IPv4 Headers
If any of an IPv6 hop-by-hop options header, destination options header, or routing header with the Segments Left field equal to zero are present in the IPv6 packet, they are ignored i.e., there is no attempt to translate them. However, the Total Length field and the Protocol field would have to be adjusted to "skip" these extension headers.
perldoc V6evalTool