Great summary!

I only respond to what I think is incorrect.

> 1. core option pmtu_discovery for IPv4
> - if MTU is found, UDP will be delivered and kernel will store the discovered MTU internally
> - further packets will use this value

no, ip(7) says for IP_PMTUDISC_DO

It is the user's responsibility to packetize the data in
MTU-sized chunks and to do the retransmits if necessary.
The kernel will reject (with EMSGSIZE) datagrams that are
bigger than the known path MTU.

unlike what it says for IP_PMTUDISC_WANT

IP_PMTUDISC_WANT will fragment a datagram if needed
according to the path MTU, or will set the don't-fragment
flag otherwise.

You can use _DO *if* you respond to EMSGSIZE, which Kamailio does
not seem to be doing. Otherwise, go for _WANT.

> 3. suggestion in this PR for IPv6
> - use IPV6_PMTUDISC_WANT as socket option
> - will fragment a datagram if needed according to the path MTU for IPv6
> - probably could be set by adding a new core option

Yes. But I wonder if there could ever be a reason to use _DO.

> 4. suggestion in this PR for IPv4
> - probably could be set by adding a new core option

Yes. And I do understand that deviation from the past needs an option for IPv4.

> My suggestion would be add a new value **2** to the pmtu_discovery core parameter, which sets then the _WANT socket option for IPv4 and IPv6.

That sounds like a good idea.

Thanks for helping to chew through this tough matter :)


Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.Message ID: <kamailio/kamailio/pull/3141/c1221504222@github.com>