From: Tore Anderson <tore@fud.no>
To: Eric Dumazet <eric.dumazet@gmail.com>
Cc: netdev <netdev@vger.kernel.org>
Subject: Re: [RFC] ipv6: dst_allfrag() not taken into account by TCP
Date: Wed, 18 Jan 2012 15:43:02 +0100 [thread overview]
Message-ID: <9903c7bcb83314b495e7378dae23e703@localhost> (raw)
In-Reply-To: <1326895569.2316.14.camel@edumazet-HP-Compaq-6005-Pro-SFF-PC>
* Eric Dumazet
> Now I wonder if some RFC can allow us to send small frames without a
> frag header, since this frag header forces us to perform tx checksum in
> software.
Yes. In my opinion, the most correct thing to do would be to keep track
of the actual IPv6 Path MTU (the value indicated in the ICMPv6 Packet
Too Big message received) as a separate property that is added to the
routing cache, and to include the Fragment header only if you transmit
a packet that is larger than the PMTU.
So, let's say you get an ICMPv6 PTB with MTU=800. Then the resulting
host route added to the routing cache should contain both "mtu 1280"
as well as "pmtu 800". You can then safely omit the Fragmentation
header from any packet smaller than 800 bytes. You might of course then
get another ICMPv6 PTB with an even smaller MTU originated from an IPv4
router even further out in the path, which should then result in
lowering the cached pmtu value further, of course.
> > I guess 576 should be safe ?
I have difficulty determining whether or not the minimum permitted IPv4
MTU is 576 or 68 bytes, actually. Assuming it's the latter, by hard-
coding the former, you may end up in a situation where you'll be stuck
in a PMTUD loop - you'll be re-transmitting 576 bytes large packets
over and over again, while getting back ICMPv6 PTBs with an even lower
MTU value for each of the packets you transmit.
That said, you can add 20 bytes to whatever value you hard-code, as the
IPv6 header is 20 bytes larger than the IPv4 header. In other words,
596- and 88-byte large IPv6 packets will be translated into 576- or
68-byte large IPv4 packets.
Another way of solving it and avoiding the Fragmentation headers
altogether would be to allow the "route MTU" to drop below 1280 as a
result of Path MTU Discovery. I opened an enchancement bug report
requesting this:
https://bugzilla.kernel.org/show_bug.cgi?id=42599
Best regards,
--
Tore Anderson
next prev parent reply other threads:[~2012-01-18 14:43 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-17 16:28 [RFC] ipv6: dst_allfrag() not taken into account by TCP Eric Dumazet
2012-01-17 17:34 ` David Miller
2012-01-17 18:15 ` Eric Dumazet
2012-01-17 18:25 ` David Miller
2012-01-17 20:03 ` Tore Anderson
2012-01-17 20:25 ` Eric Dumazet
2012-01-18 12:42 ` Tore Anderson
2012-01-18 14:06 ` Eric Dumazet
2012-01-18 14:43 ` Tore Anderson [this message]
2012-01-18 14:59 ` Eric Dumazet
2012-01-18 15:14 ` Tore Anderson
2012-01-18 15:40 ` Eric Dumazet
2012-01-18 17:01 ` David Miller
2012-01-17 23:43 ` Bugzilla 42595 Eric Dumazet
2012-01-18 10:58 ` Eric Dumazet
2012-01-18 13:44 ` Eric Dumazet
2012-01-18 14:20 ` Tore Anderson
2012-01-18 14:42 ` Eric Dumazet
2012-01-18 15:42 ` Eric Dumazet
2012-01-18 19:26 ` Tore Anderson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=9903c7bcb83314b495e7378dae23e703@localhost \
--to=tore@fud.no \
--cc=eric.dumazet@gmail.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).