Verified VLANs on Eoan using systemd 242-7ubuntu3.7 from -proposed correctly set the MTU to 1500 when specified in the netplan config.
** Attachment added: "curtin vmtest logs for vlan mtu verification" https://bugs.launchpad.net/curtin/+bug/1846232/+attachment/5326388/+files/bug-1846232-curtin-vmtest-verification-v2.tar.gz -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to systemd in Ubuntu. https://bugs.launchpad.net/bugs/1846232 Title: networkd pads interface MTU by 4 bytes for vlan even when told not to Status in curtin: Invalid Status in systemd: Fix Released Status in systemd package in Ubuntu: Fix Released Status in systemd source package in Eoan: Fix Committed 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@lp1846232-e:/run/systemd/network$ grep . * 10-netplan-ens3.2667.netdev:[NetDev] 10-netplan-ens3.2667.netdev:Name=ens3.2667 10-netplan-ens3.2667.netdev:MTUBytes=1500 10-netplan-ens3.2667.netdev:Kind=vlan 10-netplan-ens3.2667.netdev:[VLAN] 10-netplan-ens3.2667.netdev:Id=2667 10-netplan-ens3.2667.network:[Match] 10-netplan-ens3.2667.network:Name=ens3.2667 10-netplan-ens3.2667.network:[Network] 10-netplan-ens3.2667.network:LinkLocalAddressing=ipv6 10-netplan-ens3.2667.network:Address=1.2.3.4/32 10-netplan-ens3.2667.network:ConfigureWithoutCarrier=yes 10-netplan-ens3.link:[Match] 10-netplan-ens3.link:OriginalName=ens3 10-netplan-ens3.link:[Link] 10-netplan-ens3.link:WakeOnLan=off 10-netplan-ens3.link:MTUBytes=1500 10-netplan-ens3.network:[Match] 10-netplan-ens3.network:Name=ens3 10-netplan-ens3.network:[Network] 10-netplan-ens3.network:LinkLocalAddressing=ipv6 10-netplan-ens3.network:VLAN=ens3.2667 The reboot and check the mtus: ubuntu@lp1846232-e:~$ ip l show ens3 2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1504 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:12:99:1b brd ff:ff:ff:ff:ff:ff ubuntu@lp1846232-e:~$ ip l show ens3.2667 3: ens3.2667@ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000 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 4b151b71320bbee1549afcbad5554a40d90d63b4 focal already has the patches that fix this, commit f6fcc1c2a41eae749467de58453174296b635a69 (and the commit before it) see comment 4 for more details [other info] original description: --- From https://jenkins.ubuntu.com/server/job/curtin-vmtest-devel- amd64/916/console: ====================================================================== FAIL: test_ip_output (vmtests.test_network_vlan.EoanTestNetworkVlan) ---------------------------------------------------------------------- Traceback (most recent call last): File "/var/lib/jenkins/servers/server/workspace/curtin-vmtest-devel-amd64/curtin-916/tests/vmtests/test_network.py", line 311, in test_ip_output routes) File "/var/lib/jenkins/servers/server/workspace/curtin-vmtest-devel-amd64/curtin-916/tests/vmtests/test_network.py", line 337, in check_interface int(ipcfg[key])) AssertionError: 1500 != 1504 -------------------- >> begin captured stdout << --------------------- 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:d9ff:fea8:4913 prefixlen: '64' scope: site valid_lft: 86256sec - address: fe80::d6be:d9ff:fea8:4913 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:d9ff:fea8:4915 prefixlen: '64' scope: site valid_lft: 86256sec - address: fe80::d6be:d9ff:fea8:4915 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:d9ff:fea8:4915 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:d9ff:fea8:4915 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:d9ff:fea8:4915 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:d9ff:fea8:4915 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:d9ff:fea8:4917 prefixlen: '64' scope: site valid_lft: 86256sec - address: fe80::d6be:d9ff:fea8:4917 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:d9ff:fea8:4919 prefixlen: '64' scope: site valid_lft: 86255sec - address: fe80::d6be:d9ff:fea8:4919 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_nameservers: - 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:d9:a8:49:13', 'inet': 'inet', 'mode': 'static', 'mtu': 1500, 'address': None, 'gateway': None, 'subnets': [{'address': '10.245.168.16/21', 'dns_nameservers': ['10.245.168.2'], 'gateway': '10.245.168.1', 'type': 'static'}], 'index': 0, 'control': 'auto'} ipcfg: {'inet4': [{'address': '10.245.168.16', 'prefixlen': '21', 'scope': 'global', 'valid_lft': 'forever'}], 'inet6': [{'address': 'fec0::d6be:d9ff:fea8:4913', 'prefixlen': '64', 'scope': 'site', 'valid_lft': '86256sec'}, {'address': 'fe80::d6be:d9ff:fea8:4913', 'prefixlen': '64', 'scope': 'link', 'valid_lft': 'forever'}], 'interface': 'interface0', 'broadcast': '10.245.175.255', 'loopback': False, 'lower_up': False, 'multicast': False, 'running': False, 'up': False, 'mtu': '1500', 'qdisc': 'fq_codel', 'state': 'UP', 'group': 'default', 'qlen': '1000', 'mac_address': 'd4:be:d9:a8:49:13'} ifname=interface0 ipcfg['interface']=interface0 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_nameservers: [] type: static type: physical check_interface: testing ifname:interface1 iface: {'name': 'interface1', 'type': 'physical', 'mac_address': 'd4:be:d9:a8:49:15', 'inet': 'inet', 'mode': 'static', 'mtu': 1500, 'address': None, 'gateway': None, 'subnets': [{'address': '10.245.188.2/24', 'dns_nameservers': [], 'type': 'static'}], 'index': 0, 'control': 'auto'} ipcfg: {'inet4': [{'address': '10.245.188.2', 'prefixlen': '24', 'scope': 'global', 'valid_lft': 'forever'}], 'inet6': [{'address': 'fec0::d6be:d9ff:fea8:4915', 'prefixlen': '64', 'scope': 'site', 'valid_lft': '86256sec'}, {'address': 'fe80::d6be:d9ff:fea8:4915', 'prefixlen': '64', 'scope': 'link', 'valid_lft': 'forever'}], 'interface': 'interface1', 'broadcast': '10.245.188.255', 'loopback': False, 'lower_up': False, 'multicast': False, 'running': False, 'up': False, 'mtu': '1504', 'qdisc': 'fq_codel', 'state': 'UP', 'group': 'default', 'qlen': '1000', 'mac_address': 'd4:be:d9:a8:49:15'} ifname=interface1 ipcfg['interface']=interface1 checking mac on iface: interface1 checking mtu on iface: interface1 --------------------- >> end captured stdout << ---------------------- To manage notifications about this bug go to: https://bugs.launchpad.net/curtin/+bug/1846232/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp