[libvirt] [PATCH 0/3] support setting MTU of libvirt networks

Michal Privoznik mprivozn at redhat.com
Mon Jan 23 16:44:19 UTC 2017


On 23.01.2017 16:35, Laine Stump wrote:
> This has been requested several times in #virt on IRC, and on
> libvirt-users, and a comment posted to
> https://bugzilla.redhat.com/1224348 reminded me that there's even an
> open BZ for it, so I finally sat down and wrote the patches for it.
> 
> The idea of the patches is that an *empty* bridge device can't have
> its MTU directly set to anything higher than 1500, but once there are
> any devices on the bridge, its MTU is limited to the smallest of the
> MTUs of any attached devices. However, when the very first device is
> attached to the bridge, the bridge will *increase* its own MTU to
> match if needed. So the trick to setting a high MTU is to set the MTU
> of every device to the desired value before it is added (especially
> the first). libvirt already sets the MTU of every device to the MTU of
> the bridge, so all we need to do is make it so the first device is set
> from the network config's "mtu" attribute instead - the bridge will
> get the larger MTU, and all future devices added will get the higher
> MTU as well.
> 
> This doesn't take care of setting the MTU on the guest side of the tap
> device; for now that must be done manually, but qemu has recently
> added a commandline parameter to send the desired MTU to the guest,
> and the virtio-net guest driver at least honors this. An upcoming
> patch to libvirt will automatically set this qemu commandline option
> so that no intervention will be required (beyond setting the MTU once
> in the network config).
> 
> 
> 
> Laine Stump (3):
>   util: add MTU arg to virNetDevTapCreateInBridgePort()
>   conf: support mtu attribute in a network's <bridge> element
>   network: honor mtu setting when creating network
> 
>  docs/formatnetwork.html.in          |  8 +++++++-
>  docs/news.xml                       |  6 +++++-
>  docs/schemas/network.rng            |  6 ++++++
>  src/bhyve/bhyve_command.c           |  2 +-
>  src/conf/network_conf.c             | 20 ++++++++++++++++++--
>  src/conf/network_conf.h             |  1 +
>  src/network/bridge_driver.c         |  1 +
>  src/qemu/qemu_interface.c           |  2 +-
>  src/uml/uml_conf.c                  |  2 +-
>  src/util/virnetdevtap.c             | 20 +++++++++++++++-----
>  src/util/virnetdevtap.h             |  1 +
>  tests/bhyvexml2argvmock.c           |  1 +
>  tests/networkxml2xmlin/set-mtu.xml  | 11 +++++++++++
>  tests/networkxml2xmlout/set-mtu.xml | 11 +++++++++++
>  tests/networkxml2xmltest.c          |  1 +
>  15 files changed, 81 insertions(+), 12 deletions(-)
>  create mode 100644 tests/networkxml2xmlin/set-mtu.xml
>  create mode 100644 tests/networkxml2xmlout/set-mtu.xml
> 

ACK series. I've given it some basic testing and it worked just fine.
Incidentally, I've started working on this very same feature. But from
the other side - from domain's POV.

Michal




More information about the libvir-list mailing list