Description
openedon Sep 6, 2024
Feature request description
By default pasta uses an MTU of 65520 bytes in containers it backs. This is an important strategy to improve TCP throughput and reduce load, by reducing the number of system calls. pasta is able to coalesce individual TCP packets, allowing it to take advantage of the large local MTU, even if the full path has a lower MTU (which will be typical across the internet).
However, when pasta is used for a rootless custom network, a Linux bridge sits between pasta and the container(s) it's supporting. Unless overridden in the podman configuration this bridge will have the default MTU of 1500, negating this performance strategy of pasta.
Increasing the MTU of the custom network (e.g. with podman network create -o mtu=65520
) can significantly improve performance in some situations.
Suggest potential solution
When creating a custom network which uses pasta for external connectivity, podman should default to configuring an MTU of 65520.
This won't help in all cases: if traffic is not coming directly from the container, but from (for example) a tunnel running in the container, the TCP MSS will still be constrained by the tunnel's MTU. Nonetheless a different default will help the common case of TCP traffic originating directly in the container.
Have you considered any alternatives?
The end user can, of course, manually set a large MTU, but that's extra inconvenience.
While, of course, we endeavour to keep performance of pasta good even with smaller MTUs, the large MTU strategy is an important tool which it seems unwise to discard.
Additional context
This limitation came to light amidst discussion of a number of issues occuring in this ticket.