rfc2765_3.1_fragmentation.seq - Verify IPv6 <-> IPv4 header
translation in accordance with RFC2765 [SIIT]
Router
rfc2765_3.1_fragmentation.seq [-tooloption ...]
-p rfc2765_3.1_fragmentation.def
Before this test starts, run initialize.seq.
This test verifies that NUT force fragmentation if the resulting
IPv6 package is larger than 1232 bytes + IPv6 header and
optional fragment header.
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
ICMPv4 echo request
Payload = repeat(0xff, 1224) 1.2.
<>
<===================
ICMPv6 Echo Request
IPv6 Header
src address : TN LINK1 IPv4 embedded IPv6 address
dst address : TN LINK0 IPv4 embedded IPv6 address
ICMPv6 echo request
Payload = repeat(0xff, 1224)
2.1.
<===================
ICMPv4 Echo request
IPv4 Header
src address : TN LINK1 IPv4 address
dst address : TN LINK0 IPv4 address
Don't Fragment = 1
Timestamp Option
ICMPv4 echo request
Payload = repeat(0xff, 1224) 2.2.
<>
<===================
ICMPv6 Echo Request
IPv6 Header
src address : TN LINK1 IPv4 embedded IPv6 address
dst address : TN LINK0 IPv4 embedded IPv6 address
ICMPv6 echo request
Payload = repeat(0xff, 1224)
3.1.
<===================
ICMPv4 Echo request
IPv4 Header
src address : TN LINK1 IPv4 address
dst address : TN LINK0 IPv4 address
Don't Fragment = 1
ICMPv4 echo request
Payload = repeat(0xff, 1226) 3.2.
<>
===================>
ICMPv4 Destination Unreachable
IPv4 Header
src address : NUT LINK1 IPv4 address
dst address : TN LINK1 IPv4 address
ICMPv4 Destination Unreachable
Type = 3
Code = 2
MTU = 1252
4.1.
<===================
ICMPv4 Echo request
IPv4 Header
src address : TN LINK1 IPv4 address
dst address : TN LINK0 IPv4 address
Don't Fragment = 0
ICMPv4 echo request
Payload = repeat(0xff, 1224) 4.2.
<>
<===================
ICMPv6 Echo Request
IPv6 Header
src address : TN LINK1 IPv4 embedded IPv6 address
dst address : TN LINK0 IPv4 embedded IPv6 address
Fragment Header
ICMPv6 echo request
Payload = repeat(0xff, 1224)
5.1.
<===================
ICMPv4 Echo request
IPv4 Header
src address : TN LINK1 IPv4 address
dst address : TN LINK0 IPv4 address
Don't Fragment = 0
ICMPv4 echo request
Payload = repeat(0xff, 1226) 5.2.
<>
<===================
ICMPv6 Echo Request
IPv6 Header
src address : TN LINK1 IPv4 embedded IPv6 address
dst address : TN LINK0 IPv4 embedded IPv6 address
Fragment Header
Offset = 0
More Fragments = 1
ICMPv6 echo request
Payload = repeat(0xff, 1224) 5.3.
<>
<===================
ICMPv6 Echo Request
IPv6 Header
src address : TN LINK1 IPv4 embedded IPv6 address
dst address : TN LINK0 IPv4 embedded IPv6 address
Fragment Header
Offset = 1232
More Fragments = 0
Payload = repeat(0xff, 2)
6.1.
<===================
ICMPv4 Echo request
IPv4 Header
src address : TN LINK1 IPv4 address
dst address : TN LINK0 IPv4 address
Don't Fragment = 0
FragmentOffset = 500
MF = 1
ICMPv4 echo request
Payload = repeat(0xff, 1226) 6.2.
<>
<===================
ICMPv6 Echo Request
IPv6 Header
src address : TN LINK1 IPv4 embedded IPv6 address
dst address : TN LINK0 IPv4 embedded IPv6 address
Fragment Header
Offset = 500
More Fragments = 1
ICMPv6 echo request
Payload = repeat(0xff, 1224) 6.3.
<>
<===================
ICMPv6 Echo Request
IPv6 Header
src address : TN LINK1 IPv4 embedded IPv6 address
dst address : TN LINK0 IPv4 embedded IPv6 address
Fragment Header
Offset = 1732
More Fragments = 1
Payload = repeat(0xff, 2)
<< PASS >>
NUT translates IPv4 packages smaller than 1252 bytes.
If DF flag is set on IPv4 packages larger than 1254 bytes,
an ICMPv4 Destination Unreachable (packet too big) is
returned, otherwise the packet is fragmentet prior to
translation. << FAIL >>
NUT doesn't to forced fragmentation properly.
B3.1. Translating IPv4 Headers into IPv6 Headers If the DF flag is not set and the IPv4 packet will result in an IPv6
packet larger than 1280 bytes the IPv4 packet MUST be fragmented
prior to translating it. Since IPv4 packets with DF not set will
always result in a fragment header being added to the packet the IPv4
packets must be fragmented so that their length, excluding the IPv4
header, is at most 1232 bytes (1280 minus 40 for the IPv6 header and
8 for the Fragment header).
perldoc V6evalTool