>> On 19 May 2015, at 16:27, Jeffrey Altman <[email protected]> 
>> wrote:
>> 
>>> On 5/19/2015 8:54 AM, Harald Barth wrote:
>>> 
>>> 1444 is the number of octets after subtracting the ip/ip6 and udp/udp6
>>> headers for a network with MTU of 1500.
>> 
>> Yes but here I was on localhost and that has a loopback does have an
>> MTU of 16436. If the MTU detection code does the right thing(TM).
> 
> Unlike IPv6 when using IPv4 there is no reliable path mtu detection for
> UDP.

Things are a little bit more complex than this. At the protocol level, UDP can 
use the same path MTU discovery mechanisms as TCP does. It's just that most 
operating systems make it very hard to do so. Linux is the notable exception 
here - you can query the path MTU for a given endpoint, and be notified if and 
when that MTU changes. Probing is left up to the application.

>  Nor is there a reliable method of delivering fragmented packets.

In theory fragmented packets are delivered. In practice, they often aren't. 
However, the fundamental difference between v4 and v6 is that with v4 any 
router may fragment a packet. With v6, only the sender may perform 
fragmentation. With both v4 and v6 a router may end up dropping fragments, 
sadly.

> Rx doesn't even know which interface the packet is going to be sent
> over.  

This isn't universally true. Linux provides a mechanism of determining this, as 
do most BSD derived stacks - although it often involves querying the machine's 
routing tables, and so is decidedly non-portable.

> An Rx packet is never larger than 1500 - Header Sizes.  

There is support in the code for packets larger than 1500. They're put together 
by joining multiple buffers together, but are not jumbo grams. The issue with 
these is that RX can only fragment its input stream once - after a packet has 
been sent with a given amount of data, there is no opportunity to split it if 
it is too big for the path. So, if your MTU drops, your only choice is to abort 
the call and begin again.

We never usually see packets of this size because RX has a few places in which 
the MTU is clamped to 1500, and to the lowest MTU listed for the machines 
interfaces.

S.

Reply via email to