networkd pads interface MTU by 4 bytes for vlan even when told not to
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
curtin |
Invalid
|
Undecided
|
Unassigned | ||
systemd |
Fix Released
|
Unknown
|
|||
systemd (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Eoan |
Fix Released
|
Medium
|
Dan Streetman |
Bug Description
[impact]
vlan interface has wrong mtu, which may cause lost packets due to incorrect mtu
[test case]
configure a system using the netplan cfg similar to comment 2.
alternately, networkd config can be used, similar to:
ubuntu@
10-netplan-
10-netplan-
10-netplan-
10-netplan-
10-netplan-
10-netplan-
10-netplan-
10-netplan-
10-netplan-
10-netplan-
10-netplan-
10-netplan-
10-netplan-
10-netplan-
10-netplan-
10-netplan-
10-netplan-
10-netplan-
10-netplan-
10-netplan-
10-netplan-
10-netplan-
The reboot and check the mtus:
ubuntu@
2: ens3: <BROADCAST,
link/ether 52:54:00:12:99:1b brd ff:ff:ff:ff:ff:ff
ubuntu@
3: ens3.2667@ens3: <BROADCAST,
link/ether 52:54:00:12:99:1b brd ff:ff:ff:ff:ff:ff
The base interface should have a mtu of only 1500.
[regression potential]
As this corrects/adjusts the mtu of the interface, regressions would likely involve interface(s) being assigned incorrect mtu values, which then would lead to dropped packets and/or lowered network performance.
[scope]
this is needed only for Eoan.
disco and earlier don't have the patch that introduces this problem, commit 4b151b71320bbee
focal already has the patches that fix this, commit f6fcc1c2a41eae7
see comment 4 for more details
[other info]
original description:
---
From https:/
=======
FAIL: test_ip_output (vmtests.
-------
Traceback (most recent call last):
File "/var/lib/
routes)
File "/var/lib/
int(
AssertionError: 1500 != 1504
-------
parsed ip_a dict:
interface0:
broadcast: 10.245.175.255
group: default
inet4:
- address: 10.245.168.16
prefixlen: '21'
scope: global
valid_lft: forever
inet6:
- address: fec0::d6be:
prefixlen: '64'
scope: site
valid_lft: 86256sec
- address: fe80::d6be:
prefixlen: '64'
scope: link
valid_lft: forever
interface: interface0
loopback: false
lower_up: false
mac_address: d4:be:d9:a8:49:13
mtu: '1500'
multicast: false
qdisc: fq_codel
qlen: '1000'
running: false
state: UP
up: false
interface1:
broadcast: 10.245.188.255
group: default
inet4:
- address: 10.245.188.2
prefixlen: '24'
scope: global
valid_lft: forever
inet6:
- address: fec0::d6be:
prefixlen: '64'
scope: site
valid_lft: 86256sec
- address: fe80::d6be:
prefixlen: '64'
scope: link
valid_lft: forever
interface: interface1
loopback: false
lower_up: false
mac_address: d4:be:d9:a8:49:15
mtu: '1504'
multicast: false
qdisc: fq_codel
qlen: '1000'
running: false
state: UP
up: false
interface1.2667:
broadcast: 10.245.184.255
group: default
inet4:
- address: 10.245.184.2
prefixlen: '24'
scope: global
valid_lft: forever
inet6:
- address: fe80::d6be:
prefixlen: '64'
scope: link
valid_lft: forever
interface: interface1.2667
loopback: false
lower_up: false
mac_address: d4:be:d9:a8:49:15
mtu: '1500'
multicast: false
qdisc: noqueue
qlen: '1000'
running: false
state: UP
up: false
vlan_link: interface1
interface1.2668:
broadcast: 10.245.185.255
group: default
inet4:
- address: 10.245.185.1
prefixlen: '24'
scope: global
valid_lft: forever
inet6:
- address: fe80::d6be:
prefixlen: '64'
scope: link
valid_lft: forever
interface: interface1.2668
loopback: false
lower_up: false
mac_address: d4:be:d9:a8:49:15
mtu: '1500'
multicast: false
qdisc: noqueue
qlen: '1000'
running: false
state: UP
up: false
vlan_link: interface1
interface1.2669:
broadcast: 10.245.186.255
group: default
inet4:
- address: 10.245.186.1
prefixlen: '24'
scope: global
valid_lft: forever
inet6:
- address: fe80::d6be:
prefixlen: '64'
scope: link
valid_lft: forever
interface: interface1.2669
loopback: false
lower_up: false
mac_address: d4:be:d9:a8:49:15
mtu: '1500'
multicast: false
qdisc: noqueue
qlen: '1000'
running: false
state: UP
up: false
vlan_link: interface1
interface1.2670:
broadcast: 10.245.187.255
group: default
inet4:
- address: 10.245.187.2
prefixlen: '24'
scope: global
valid_lft: forever
inet6:
- address: fe80::d6be:
prefixlen: '64'
scope: link
valid_lft: forever
interface: interface1.2670
loopback: false
lower_up: false
mac_address: d4:be:d9:a8:49:15
mtu: '1500'
multicast: false
qdisc: noqueue
qlen: '1000'
running: false
state: UP
up: false
vlan_link: interface1
interface2:
broadcast: ff:ff:ff:ff:ff:ff
group: default
inet4: []
inet6:
- address: fec0::d6be:
prefixlen: '64'
scope: site
valid_lft: 86256sec
- address: fe80::d6be:
prefixlen: '64'
scope: link
valid_lft: forever
interface: interface2
loopback: false
lower_up: false
mac_address: d4:be:d9:a8:49:17
mtu: '1500'
multicast: false
qdisc: fq_codel
qlen: '1000'
running: false
state: UP
up: false
interface3:
broadcast: ff:ff:ff:ff:ff:ff
group: default
inet4: []
inet6:
- address: fec0::d6be:
prefixlen: '64'
scope: site
valid_lft: 86255sec
- address: fe80::d6be:
prefixlen: '64'
scope: link
valid_lft: forever
interface: interface3
loopback: false
lower_up: false
mac_address: d4:be:d9:a8:49:19
mtu: '1500'
multicast: false
qdisc: fq_codel
qlen: '1000'
running: false
state: UP
up: false
lo:
broadcast: 00:00:00:00:00:00
group: default
inet4:
- address: 127.0.0.1
prefixlen: '8'
scope: host
valid_lft: forever
inet6:
- address: ::1
prefixlen: '128'
scope: host
valid_lft: forever
interface: lo
loopback: false
lower_up: false
mtu: '65536'
multicast: false
qdisc: noqueue
qlen: '1000'
running: false
state: UNKNOWN
up: false
ip_route_show: line: 10.245.168.0/21 dev interface0 proto kernel scope link src 10.245.168.16
ip_route_show: line: 10.245.184.0/24 dev interface1.2667 proto kernel scope link src 10.245.184.2
ip_route_show: line: 10.245.185.0/24 dev interface1.2668 proto kernel scope link src 10.245.185.1
ip_route_show: line: 10.245.186.0/24 dev interface1.2669 proto kernel scope link src 10.245.186.1
ip_route_show: line: 10.245.187.0/24 dev interface1.2670 proto kernel scope link src 10.245.187.2
ip_route_show: line: 10.245.188.0/24 dev interface1 proto kernel scope link src 10.245.188.2
network_state iface: address: null
control: auto
gateway: null
index: 0
inet: inet
mac_address: d4:be:d9:a8:49:13
mode: static
mtu: 1500
name: interface0
subnets:
- address: 10.245.168.16/21
dns_
- 10.245.168.2
gateway: 10.245.168.1
type: static
type: physical
check_interface: testing ifname:interface0
iface:
{'name': 'interface0', 'type': 'physical', 'mac_address': 'd4:be:
ipcfg:
{'inet4': [{'address': '10.245.168.16', 'prefixlen': '21', 'scope': 'global', 'valid_lft': 'forever'}], 'inet6': [{'address': 'fec0::
ifname=interface0
ipcfg['
checking mac on iface: interface0
checking mtu on iface: interface0
validating subnet:
{'address': '10.245.168.16/21', 'dns_nameservers': ['10.245.168.2'], 'gateway': '10.245.168.1', 'type': 'static'}
found addresses: [{'address': '10.245.168.16', 'prefixlen': '21', 'scope': 'global', 'valid_lft': 'forever'}]
cur ip={'address': '10.245.168.16', 'prefixlen': '21', 'scope': 'global', 'valid_lft': 'forever'}
subnet={'address': '10.245.168.16/21', 'dns_nameservers': ['10.245.168.2'], 'gateway': '10.245.168.1', 'type': 'static'}
found a match!
returning inet iface
iface:interface0 configured_gws: ['10.245.168.1']
found_gws: ['default via 10.245.168.1 dev interface0 proto static ']
expected: ['10.245.168.1']
network_state iface: address: null
control: auto
gateway: null
index: 0
inet: inet
mac_address: d4:be:d9:a8:49:15
mode: static
mtu: 1500
name: interface1
subnets:
- address: 10.245.188.2/24
dns_
type: static
type: physical
check_interface: testing ifname:interface1
iface:
{'name': 'interface1', 'type': 'physical', 'mac_address': 'd4:be:
ipcfg:
{'inet4': [{'address': '10.245.188.2', 'prefixlen': '24', 'scope': 'global', 'valid_lft': 'forever'}], 'inet6': [{'address': 'fec0::
ifname=interface1
ipcfg['
checking mac on iface: interface1
checking mtu on iface: interface1
-------
summary: |
- vmtests: test_ip_output failing in vlan tests on eoan + networkd pads interface MTU by 4 bytes for vlan even when told not to |
Changed in systemd: | |
status: | Unknown → Fix Released |
Changed in systemd (Ubuntu Eoan): | |
status: | New → In Progress |
importance: | Undecided → Medium |
assignee: | nobody → Dan Streetman (ddstreet) |
Changed in systemd (Ubuntu): | |
status: | New → Fix Released |
description: | updated |
description: | updated |
tags: | added: ddstreet eoan systemd |
tags: |
added: verification-done verification-done-eoan removed: verification-needed verification-needed-eoan |
This looks to be related to networkd:
https:/ /github. com/systemd/ systemd/ pull/12574/ commits
Which is automatically added 4 bytes to base interface MTU, even though we're explicitly setting mtu to 1500 on base interface and vlan.