Comment 19 for bug 1671951

Revision history for this message
Ryan Harper (raharper) wrote :

It seems there are some limitations to what systemd will do with IPv6BytesMTU.

1) if LinkLocalAddressing is not disabled, it will clobber any IPv6BytesMTU value set.

[Network]
LinkLocalAddressing=ipv6
Address=10.10.10.10/24
IPv6MTUBytes=1470

This results in: /proc/sys/net/ipv6/conf/<iface>/mtu having a value of 1500

if I disable LinkLocalAddressing like so:

[Network]
LinkLocalAddressing=no
Address=10.10.10.10/24
IPv6MTUBytes=1470

Then I get 1470.

This seems like a bug; do we need an upstream issue to track this?

2) systemd-networkd will not raise the device MTU limit automatically. The default device MTU is 1500. If you set IPv6BytesMTU to 1520, then systemd-networkd emits this message:

Nov 26 19:13:59 rharper-b2 systemd-networkd[593]: eth2: Cannot set IPv6 MTU for interface: Invalid argument

which is the same message you get if you: echo "1520" > /proc/sys/net/ipv6/conf/<iface>/mtu:

# echo 1520 > /proc/sys/net/ipv6/conf/eth2/mtu
bash: echo: write error: Invalid argument

If this is considered "acceptable" behavior for systemd, then it will leave netplan with a decision when it is presented with a config which sets an ipv6-mtu bytes value that is bigger than the default device value (1500), or bigger than an specified device mtu. Will it report an error with the config?

Should we file an upstream issue to see if networkd is willing to raise the device limit (or possibly emit a more helpful message to indicate that networkd cannot set an IPv6 MTU greater than the underlying device MTU?