Ubuntu 22.04
RFC8200
concerning Fragment Header specifies the next:
o If the primary fragment doesn't embrace all headers by means of an
Higher-Layer header, then that fragment must be discarded and
an ICMP Parameter Downside, Code 3, message must be despatched to
the supply of the fragment, with the Pointer discipline set to zero.
Does it imply that if I ship a fraction consisting of the next headers:
IPv6 Header -- next_header --> Fragment header -- next_header --> No Subsequent Header
The ICMP Parameter Downside, Code 3 must be anticipated? The difficulty is I couldn’t reproduce it on Ubuntu 22.04
. Contemplate 2 instances:
I. Sending fragment with no payload
scapy
:
ip6 = IPv6(src = "xxxx::xxxx", dst = "yyyy::yyyy")
frag1 = IPv6ExtHdrFragment(id=0x333, m = 1)
ship(ip6 / frag1)
tcpdump
:
01:58:33.859135 IP6 (hlim 64, next-header Fragment (44) payload size: 8)
xxxx::xxxx > yyyy::yyyy: frag (0x00000333:0|0)
I see neither ICMP Parameter Downside
, nor ICMP6, time exceeded in-transit (reassembly)
which appears to be like prefer it’s silently discarded.
II. Sending fragment with 8 octet uncooked payload
When sending a fraction with 8 octet uncooked payload I see it is being time-outed after 60 seconds (as described within the RFC).
scapy
:
ip6 = IPv6(src = "xxxx::xxxx", dst = "yyyy::yyyy")
frag1 = IPv6ExtHdrFragment(id = 0x543, m = 1)
ship(ip6 / frag1 / Uncooked("12345678"))
tcpdump
:
02:07:21.246081 IP6 (hlim 64, next-header Fragment (44) payload size: 16)
xxxx::xxxx > yyyy::yyyy: frag (0x00000543:0|8) no subsequent header
02:08:22.170257 IP6 (flowlabel 0x11111, hlim 64, next-header ICMPv6 (58) payload size: 64)
xxxx::xxxx > yyyy::yyyy: [icmp6 sum ok] ICMP6, time exceeded in-transit (reassembly)
Is silently discarding a packet with no first fragment payload anticipated habits or I lacking one thing?