[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.