]> git.proxmox.com Git - pve-common.git/commitdiff
Network : veth pair : fix mtu
authorAlexandre Derumier <aderumier@odiso.com>
Wed, 21 Nov 2018 16:34:29 +0000 (17:34 +0100)
committerWolfgang Bumiller <w.bumiller@proxmox.com>
Thu, 22 Nov 2018 09:27:41 +0000 (10:27 +0100)
The ip link set command which create the veth pair is not setting mtu on both peers

example:
vm 106 is on a bridge with mtu 9000

222: tap160i1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 9000 qdisc pfifo_fast master fwbr160i1 state UNKNOWN group default qlen 1000
223: fwbr160i1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
224: fwpr160p1@fwln160i1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc noqueue state UP group default qlen 1000
225: fwln160i1@fwpr160p1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000

fwpr160p1@fwln160i1 is correctly created with mtu 9000
but
fwln160i1@fwpr160p1 is created with mtu 1500.
(and then vmbr106i1 is lowered to 1500 too).

This is doing network problem, as tap160i1 is mtu9000.

After this patch:

222: tap160i1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 9000 qdisc pfifo_fast master fwbr160i1 state UNKNOWN group default qlen 1000
223: fwbr160i1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc noqueue state UP group default qlen 1000
224: fwpr160p1@fwln160i1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc noqueue state UP group default qlen 1000
225: fwln160i1@fwpr160p1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc noqueue state UP group default qlen 1000

src/PVE/Network.pm

index 342153233bd580442f1a2a695e4b6f21a7a56ab7..8dfc9c2fd063de88defd70b05c85635c6ed02333 100644 (file)
@@ -291,7 +291,7 @@ sub veth_create {
 
     # create veth pair
     if (! -d "/sys/class/net/$veth") {
 
     # create veth pair
     if (! -d "/sys/class/net/$veth") {
-       my $cmd = "/sbin/ip link add name $veth type veth peer name $vethpeer mtu $bridgemtu";
+       my $cmd = "/sbin/ip link add name $veth mtu $bridgemtu type veth peer name $vethpeer mtu $bridgemtu";
        $cmd .= " addr $mac" if $mac;
        system($cmd) == 0 || die "can't create interface $veth\n";
     }
        $cmd .= " addr $mac" if $mac;
        system($cmd) == 0 || die "can't create interface $veth\n";
     }