Traffic is currently experimenting with IPIP encapsulation on IPVS using tcp-mss-clamper to perform MSS clamping and handling inbound IPIP traffic using the Linux networking stack IPIP and IP6IP6 support.
We should analyze the viability of this approach for realservers running on Kubernetes
To summarize the discussion in all the comments below, here is what we settled on for services running on kubernetes:
- We lower the MTU for POD's veth's from 1500 to 1460 bytes to account for the encapsulation overhead (calculation)
- We enable IPIP but disable MSS clamping and we keep the default rp_filter strict (1) so that this still applies to calico interfaces (example patch)
What we did not account for is the fact that the kubernetes apiservers are low-traffic LVS services as well, so we do have a similar transition to do there. The main difference is ofc. that the apiserver components are running on the node itself, so we would have to lower the MTU of the physical interface(s) rather than the calico ones.