Thread (1 message) 1 message, 1 author, 2022-03-14

PROBLEM: When MTU is changed on the main interface that has an IPVLAN interface, the change of MTU is announced via netlink on the main interface but not on the IPVLAN interface.

From: Kirill Zats <hidden>
Date: 2022-03-14 12:53:08

[1.] One line summary of the problem:
When MTU is changed on the main interface that has an IPVLAN interface, 
the change of MTU is announced via netlink on the main interface but not 
on the IPVLAN interface.

[2.] Full description of the problem/report:

The bug can be reproduced with a monitor written on libnl (see 
on_11733_libnl.c in the attachment). It listens to the changes of 
network configuration and
prints names of the interfaces where MTU is changed and the updated MTU 
values.

Steps to reproduce:

1. Initial state:

kirillz@durin:~$ ip li
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode 
DEFAULT group default qlen 1000
     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 7152 qdisc mq state UP 
mode DEFAULT group default qlen 1000
     link/ether 50:9a:4c:79:7c:c1 brd ff:ff:ff:ff:ff:ff
     altname enp3s0f0
3: eno2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode 
DEFAULT group default qlen 1000
     link/ether 50:9a:4c:79:7c:c2 brd ff:ff:ff:ff:ff:ff
     altname enp3s0f1
4: enp2s0f0np0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN 
mode DEFAULT group default qlen 1000
     link/ether 00:0f:53:2b:9a:20 brd ff:ff:ff:ff:ff:ff
5: enp2s0f1np1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN 
mode DEFAULT group default qlen 1000
     link/ether 00:0f:53:2b:9a:21 brd ff:ff:ff:ff:ff:ff
6: eno1.70@eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 7152 qdisc 
noqueue state UP mode DEFAULT group default qlen 1000
     link/ether 50:9a:4c:79:7c:c1 brd ff:ff:ff:ff:ff:ff

2. Create IPVLAN on enp2s0f0np0

kirillz@durin:~$ sudo ip link add ipv1 link enp2s0f0np0 type ipvlan mode 
l2
kirillz@durin:~$ sudo ip link set dev ipv1 up
kirillz@durin:~$ ip li
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode 
DEFAULT group default qlen 1000
     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 7152 qdisc mq state UP 
mode DEFAULT group default qlen 1000
     link/ether 50:9a:4c:79:7c:c1 brd ff:ff:ff:ff:ff:ff
     altname enp3s0f0
3: eno2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode 
DEFAULT group default qlen 1000
     link/ether 50:9a:4c:79:7c:c2 brd ff:ff:ff:ff:ff:ff
     altname enp3s0f1
4: enp2s0f0np0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN 
mode DEFAULT group default qlen 1000
     link/ether 00:0f:53:2b:9a:20 brd ff:ff:ff:ff:ff:ff
5: enp2s0f1np1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN 
mode DEFAULT group default qlen 1000
     link/ether 00:0f:53:2b:9a:21 brd ff:ff:ff:ff:ff:ff
6: eno1.70@eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 7152 qdisc 
noqueue state UP mode DEFAULT group default qlen 1000
     link/ether 50:9a:4c:79:7c:c1 brd ff:ff:ff:ff:ff:ff
7: ipv1@enp2s0f0np0: <NO-CARRIER,BROADCAST,MULTICAST,UP,M-DOWN> mtu 1500 
qdisc noqueue state LOWERLAYERDOWN mode DEFAULT group default qlen 1000
     link/ether 00:0f:53:2b:9a:20 brd ff:ff:ff:ff:ff:ff

3. Build and run monitor (on_11733_libnl.c)

4. Change MTU on enp2s0f0np0:

kirillz@durin:~$ sudo ip link set dev enp2s0f0np0 mtu 8900
kirillz@durin:~$ ip li
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode 
DEFAULT group default qlen 1000
     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 7152 qdisc mq state UP 
mode DEFAULT group default qlen 1000
     link/ether 50:9a:4c:79:7c:c1 brd ff:ff:ff:ff:ff:ff
     altname enp3s0f0
3: eno2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode 
DEFAULT group default qlen 1000
     link/ether 50:9a:4c:79:7c:c2 brd ff:ff:ff:ff:ff:ff
     altname enp3s0f1
4: enp2s0f0np0: <BROADCAST,MULTICAST> mtu 8900 qdisc noop state DOWN 
mode DEFAULT group default qlen 1000
     link/ether 00:0f:53:2b:9a:20 brd ff:ff:ff:ff:ff:ff
5: enp2s0f1np1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN 
mode DEFAULT group default qlen 1000
     link/ether 00:0f:53:2b:9a:21 brd ff:ff:ff:ff:ff:ff
6: eno1.70@eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 7152 qdisc 
noqueue state UP mode DEFAULT group default qlen 1000
     link/ether 50:9a:4c:79:7c:c1 brd ff:ff:ff:ff:ff:ff
7: ipv1@enp2s0f0np0: <NO-CARRIER,BROADCAST,MULTICAST,UP,M-DOWN> mtu 8900 
qdisc noqueue state LOWERLAYERDOWN mode DEFAULT group default qlen 1000
     link/ether 00:0f:53:2b:9a:20 brd ff:ff:ff:ff:ff:ff

5. See output of the monitor.
     It reports receiving message for changing MTU on enp2s0f0np0 but not 
on ipv1@enp2s0f0np0

kirillz@durin:~/ON-11733_mtu$ ./on_11733_libnl
create socket
read event
new msg. msg_type = 16
msg_handler: RTM_NEWLINK: ifi enp2s0f0np0
        ifname = enp2s0f0np0
        mtu = 8900

[3.] Keywords (i.e., modules, networking, kernel):
netdev
[4.] Kernel information
[4.1.] Kernel version (from /proc/version):

kirillz@durin:~/onload_dev/onload$ cat /proc/version
Linux version 5.16.12-200.fc35.x86_64 
(mockbuild@bkernel01.iad2.fedoraproject.org) (gcc (GCC) 11.2.1 20220127 
(Red Hat 11.2.1-9), GNU ld version 2.37-10.fc35) #1 SMP PREEMPT Wed Mar 
2 19:06:17 UTC 2022

The bug appeared on all other kernels that I used, e.g. 
5.4.0-100-generic.

[4.2.] Kernel .config file
See file kernel_5.16.12-200.fc35.x86_64_.config in the attacment.
[5.] Most recent kernel version which did not have the bug:
[7.] A small shell script or example program which triggers the
      problem (if possible)
      See files on_11733_libnl.c and Makefile in the attacment.
[8.] Environment
     See file env.txt in the attacment.
[8.1.] Software (add the output of the ver_linux script here)
     See file ver_linux_output.txt in the attacment.
[8.2.] Processor information (from /proc/cpuinfo):
     See file proc_cpuinfo.txt in the attacment.
[8.3.] Module information (from /proc/modules):
     See file proc_modules.txt in the attacment.
[8.4.] Loaded driver and hardware information (/proc/ioports, 
/proc/iomem)
     See files proc_ioports.txt and proc_mem.txt in the attacment.
[8.5.] PCI information ('lspci -vvv' as root)
     See file lspci.txt in the attacment.
[8.6.] SCSI information (from /proc/scsi/scsi)
     See file proc_scsi_scsi.txt in the attacment.
[8.7.] Other information that might be relevant to the problem
        (please look in /proc and include all information that you
        think to be relevant):
     See file proc_net_netstat.txt in the attacment.

Regards,
Kirill

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help