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