Discussion:
IP fragments
(too old to reply)
Mark
2013-03-20 16:25:49 UTC
Permalink
Hello,

I've encountered the following statement somewhere in the net: "Although
theoretically only 8 bytes of L4 info may be guaranteed in a fragment,
assume complete L4 info is available...". I don't understand how possible
that only 8 bytes of a transport are guaranteed in a fragment, as the IP
fragment can't be less than 46 bytes (minimum payload size for Ethernet
frame), and this includes 20 bytes of IP header and 20bytes of TCP header
(not considering variable-lngth options), UDP will be less.

Thus for the first IP fragment we always can expect IP header at tcp header,
while other fragments will carry only IP header + payload.

I believe I'm missing something, but I still can't understand why only 8
bytes can be guaranteed in a fragment? I would appreaciate if someone helps
to clarify this issue. Thanks !

Mark
Robert Wessel
2013-03-20 18:51:08 UTC
Permalink
On Wed, 20 Mar 2013 12:25:49 -0400, "Mark"
Post by Mark
Hello,
I've encountered the following statement somewhere in the net: "Although
theoretically only 8 bytes of L4 info may be guaranteed in a fragment,
assume complete L4 info is available...". I don't understand how possible
that only 8 bytes of a transport are guaranteed in a fragment, as the IP
fragment can't be less than 46 bytes (minimum payload size for Ethernet
frame), and this includes 20 bytes of IP header and 20bytes of TCP header
(not considering variable-lngth options), UDP will be less.
Thus for the first IP fragment we always can expect IP header at tcp header,
while other fragments will carry only IP header + payload.
I believe I'm missing something, but I still can't understand why only 8
bytes can be guaranteed in a fragment? I would appreaciate if someone helps
to clarify this issue. Thanks !
Why do you think the minimum Ethernet payload is relevant?
glen herrmannsfeldt
2013-03-20 19:24:11 UTC
Permalink
Post by Robert Wessel
On Wed, 20 Mar 2013 12:25:49 -0400, "Mark"
(snip)
Post by Robert Wessel
Post by Mark
I've encountered the following statement somewhere in the net: "Although
theoretically only 8 bytes of L4 info may be guaranteed in a fragment,
assume complete L4 info is available...". I don't understand how possible
that only 8 bytes of a transport are guaranteed in a fragment, as the IP
fragment can't be less than 46 bytes (minimum payload size for Ethernet
frame), and this includes 20 bytes of IP header and 20bytes of TCP header
(not considering variable-lngth options), UDP will be less.
(snip)
Post by Robert Wessel
Why do you think the minimum Ethernet payload is relevant?
More specifically, IP can have other transport layers, and
even when it is ethernet, it is up to ethernet to pad the
frame before sending it, and for IP to remove the padding
on receiving.

-- glen
Dick Wesseling
2013-03-20 20:26:04 UTC
Permalink
Post by Mark
Hello,
I've encountered the following statement somewhere in the net: "Although
theoretically only 8 bytes of L4 info may be guaranteed in a fragment,
assume complete L4 info is available...". I don't understand how possible
that only 8 bytes of a transport are guaranteed in a fragment, as the IP
fragment can't be less than 46 bytes (minimum payload size for Ethernet
frame), and this includes 20 bytes of IP header and 20bytes of TCP header
(not considering variable-lngth options), UDP will be less.
Thus for the first IP fragment we always can expect IP header at tcp header,
while other fragments will carry only IP header + payload.
I believe I'm missing something, but I still can't understand why only 8
bytes can be guaranteed in a fragment? I would appreaciate if someone helps
to clarify this issue. Thanks !
L4 = Layer 4, i.e. the layer above IP (L1=physical layer, L2=datalink layer,
L3=IP itself). So we're talking about 8 bytes of _payload_.

The IP fragmentation offset in in 8-byte units. So a well-formed IP fragment
- other than the last one - should start at an 8-byte boundary and end at
an 8-byte boundary and its size is therefore a multiple of 8 bytes.
The last fragment may be smaller than that.
Mark
2013-03-21 20:59:47 UTC
Permalink
Post by Dick Wesseling
L4 = Layer 4, i.e. the layer above IP (L1=physical layer, L2=datalink layer,
L3=IP itself). So we're talking about 8 bytes of _payload_.
That's what I was missing out. Thank you.

Mark

Rick Jones
2013-03-21 00:00:32 UTC
Permalink
"Although theoretically only 8 bytes of L4 info may be guaranteed in
a fragment, assume complete L4 info is available...". I don't
understand how possible that only 8 bytes of a transport are
guaranteed in a fragment, as the IP fragment can't be less than 46
bytes (minimum payload size for Ethernet frame), and this includes
20 bytes of IP header and 20bytes of TCP header (not considering
variable-lngth options), UDP will be less.
Thus for the first IP fragment we always can expect IP header at tcp
header, while other fragments will carry only IP header + payload.
I believe I'm missing something, but I still can't understand why
only 8 bytes can be guaranteed in a fragment? I would appreaciate if
someone helps to clarify this issue. Thanks !
I seem to recall something about the minimum IPv4 MTU being something
like 68 bytes. IP MTU is IP header + IP payload and does not include
layer2 stuff. And while the IP header is 20 bytes, I think there can
be some number of IP options - perhaps 40 bytes worth. Thus, after a
68 byte minimum IPv4 MTU, 20 bytes of IP header and 40 bytes of IP
options, there are 8 bytes left for the L4 headers and data.

From RFC 791 we have:

Every internet module must be able to forward a datagram of 68
octets without further fragmentation. This is because an internet
header may be up to 60 octets, and the minimum fragment is 8 octets.

rick jones
--
web2.0 n, the dot.com reunion tour...
these opinions are mine, all mine; HP might not want them anyway... :)
feel free to post, OR email to rick.jones2 in hp.com but NOT BOTH...
Mark
2013-03-21 20:58:51 UTC
Permalink
"Rick Jones" <***@hp.com> wrote in message news:kidij0$tii$***@usenet01.boi.hp.com...

[skip]
Post by Rick Jones
I seem to recall something about the minimum IPv4 MTU being something
like 68 bytes. IP MTU is IP header + IP payload and does not include
layer2 stuff. And while the IP header is 20 bytes, I think there can
be some number of IP options - perhaps 40 bytes worth. Thus, after a
68 byte minimum IPv4 MTU, 20 bytes of IP header and 40 bytes of IP
options, there are 8 bytes left for the L4 headers and data.
Every internet module must be able to forward a datagram of 68
octets without further fragmentation. This is because an internet
header may be up to 60 octets, and the minimum fragment is 8 octets.
Thanks, this clarifies a lot.

Mark
Jorgen Grahn
2013-03-21 18:50:17 UTC
Permalink
Post by Mark
Hello,
I've encountered the following statement somewhere in the net: "Although
theoretically only 8 bytes of L4 info may be guaranteed in a fragment,
assume complete L4 info is available...".
Do you have an URL for this claim or suggestion? It's suboptimal to
discuss a quote from an unknown source taken out of context.

/Jorgen
--
// Jorgen Grahn <grahn@ Oo o. . .
\X/ snipabacken.se> O o .
Continue reading on narkive:
Loading...