[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: The IPv4 Internet MTU
On 12-okt-2007, at 13:52, Magnus Westerlund wrote:
Are we talking about IPv4 here? In that case, path MTU discovery is
pretty much impossible because the applications would have to receive
the ICMP messages and adjust their behavior = every UDP app needs to
implement PMTUD itself.
Yes IPv4, but I don't know if things are better in the IPv6 world.
What
you write about requiring each app to do it itself is basically the
state of things today as I understand them.
No, the state of things today for UDP is that no PMTUD happens. This
is suboptimal, but I'm not sure if there is a reasonable way to do
better.
But the only reliable way of determining MTU is to probe how big
packets
the network will deliver with DF bit set. And this obviously doesn't
work unless you have a feedback and can ACK which packets that was
delivered so that one can know if a particular size successfully was
delivered.
And, more importantly, you can adjust your packet sizes as required.
This isn't something all UDP applications can do. The IP layer can do
it for them by sending out fragments but although this is normal
behavior for IPv6 if there are "too big" messages, I have never seen
IPv4 do this.
No way. Application developers don't run networks, they tend to
get this
stuff wrong and then you'll forever supporting applications with
broken
network behavior that won't be upgraded for a decade.
Well, then we stop using UDP.
:-)
Maybe the notion of implementing protocols such as RTP in the
application isn't such a smart one after all.
Protocols built on top of UDP needs to
take care of this as ICMP clearly does not work.
ICMP isn't the issue. The issue is that any kind of PMTUD in
applications is just a very bad idea.
For IPv4, an obvious method would be to send packets with DF=0 and
hear from the other side how big the fragments are but that's not
possible with IPv4.
(That last IPv4 should be an IPv6.)
Yes, that would probably work. The question is how we get a feedback
channel that works.
It has to be in-band because the out-of-band method (ICMP) is
filtered in a small but significant number of all cases.
Unfortunately, UDP doesn't support options and inserting IPv6 option
headers or IPv4 options will almost certainly trigger the same
filtering that makes using ICMP problematic. So the only choice would
be adding something to the next higher protocol on top of UDP.