consider this

Reviewed-by: Fabian Grünbichler <f.gruenbich...@proxmox.com>

haven't had time yet for in-depth tests.

the 'nets-host-mtu' name reads a bit strange, but there is precedent for
similarly named stuff in the code already, and the parameter is really
for internal use only anyway, so..

On September 4, 2025 2:40 pm, Fiona Ebner wrote:
> Changes in v3:
> * add part three - snapshot handling
> * backport full migration+start handling
> * schema description: explicitly mention that a value of 0 means to
>   not use host_mtu
> * die when host_mtu > bridge MTU also upon migration and expand error
>   message
> * less bloaty code by always mentioning migrated host_mtu value
> * move get_nets_host_mtu to network module for re-use with snapshots
> * avoid overly long line in tests
> 
> Changes in v2:
> * push make tidy change already to master
> * add part two - migration
> * move version_guard() call to outside of print_netdevice_full() call
> * add comment about why host_mtu is always set in source code
> 
> The virtual hardware is generated differently (at least for i440fx
> machines) when host_mtu is set or not set on the netdev command line
> [0]. When the MTU is the same value as the default 1500, Proxmox VE
> did not add a host_mtu parameter. This is problematic for migration
> where host_mtu is present on one end of the migration, but not on the
> other [1].
> 
> Always set the host_mtu parameter starting with machine version
> 10.0+pve1 to avoid this issue going forward. For snapshots, the
> nets-host-mtu information is recorded in the snapshot config. When the
> information is not present, this series keeps the behavior on Proxmox
> VE 8 and Proxmox VE 9 as-is, i.e. loading a Proxmox VE 8 snapshot on
> Proxmox VE 9 when the bridge MTU has a mismatch can still be
> problematic. Loading snapshots made on the same major version works.
> The VM start parameter already provides an escape hatch. We could also
> think about doing a follow-up and automatically try to fallback to
> Proxmox VE 8 default behavior when loading the snapshot fails (for
> machine verison < 10.0+pve1).
> 
> Moreover, the effective setting in the guest (state) will
> still be the host_mtu from the source side, even if a different value
> is used for host_mtu on the target instance's commandline. This will
> not lead to an error loading the migration stream in QEMU, but having
> a larger host_mtu than the bridge MTU is still problematic for certain
> network traffic like
>> iperf3 -c 10.10.10.11 -u -l 2k
> when host_mtu=9000 and bridge MTU=1500.
> 
> Add the necessary parameter for VM start and pass the values along for
> migration to preserve the values going forward.
> 
> For Proxmox VE 8, the migration handling fixes are backported.
> 
> stable-bookworm
> 
> Fiona Ebner (2):
>   api: vm start: introduce nets-host-mtu parameter for migration compat
>   migration: preserve host_mtu for virtio-net devices
> 
> 
> master:
> 
> Fiona Ebner (6):
>   virtio-net: fix migration between default/non-default MTUs starting
>     with machine version 10.0+pve1
>   api: vm start: introduce nets-host-mtu parameter for migration compat
>   migration: preserve host_mtu for virtio-net devices
>   snapshot: save vmstate: avoid using deprecated check_running()
>     function
>   snapshot: save vmstate: die when PID cannot be obtained
>   snapshot: introduce running-nets-host-mtu property
> 
>  src/PVE/API2/Qemu.pm                          | 13 ++++
>  src/PVE/QemuConfig.pm                         | 13 ++--
>  src/PVE/QemuMigrate.pm                        |  8 +++
>  src/PVE/QemuServer.pm                         | 62 +++++++++++++++++--
>  src/PVE/QemuServer/Machine.pm                 |  6 ++
>  src/PVE/QemuServer/Network.pm                 | 29 +++++++++
>  src/PVE/QemuServer/RunState.pm                |  3 +-
>  src/test/MigrationTest/QemuMigrateMock.pm     | 15 +++++
>  src/test/cfg2cmd/bootorder-empty.conf.cmd     |  4 +-
>  src/test/cfg2cmd/bootorder-legacy.conf.cmd    |  4 +-
>  src/test/cfg2cmd/bootorder.conf.cmd           |  4 +-
>  src/test/cfg2cmd/efidisk-on-rbd.conf.cmd      |  4 +-
>  src/test/cfg2cmd/ide.conf.cmd                 |  4 +-
>  .../cfg2cmd/netdev-7.1-multiqueues.conf.cmd   |  2 +-
>  src/test/cfg2cmd/netdev-7.1.conf.cmd          |  2 +-
>  src/test/cfg2cmd/netdev_vxlan.conf.cmd        |  2 +-
>  src/test/cfg2cmd/q35-ide.conf.cmd             |  4 +-
>  .../q35-linux-hostpci-mapping.conf.cmd        |  4 +-
>  .../q35-linux-hostpci-multifunction.conf.cmd  |  4 +-
>  ...q35-linux-hostpci-x-pci-overrides.conf.cmd |  4 +-
>  src/test/cfg2cmd/q35-linux-hostpci.conf.cmd   |  4 +-
>  src/test/cfg2cmd/q35-simple.conf.cmd          |  4 +-
>  src/test/cfg2cmd/seabios_serial.conf.cmd      |  4 +-
>  src/test/cfg2cmd/simple-btrfs.conf.cmd        |  4 +-
>  .../cfg2cmd/simple-disk-passthrough.conf.cmd  |  4 +-
>  src/test/cfg2cmd/simple-rbd.conf.cmd          |  4 +-
>  src/test/cfg2cmd/simple-virtio-blk.conf.cmd   |  4 +-
>  .../cfg2cmd/simple-zfs-over-iscsi.conf.cmd    |  4 +-
>  src/test/cfg2cmd/simple1.conf.cmd             |  4 +-
>  29 files changed, 177 insertions(+), 50 deletions(-)
> 
> -- 
> 2.47.2
> 
> 
> 
> _______________________________________________
> pve-devel mailing list
> pve-devel@lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
> 
> 
> 


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to