public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Fiona Ebner <f.ebner@proxmox.com>
To: Thomas Lamprecht <t.lamprecht@proxmox.com>,
	Proxmox VE development discussion <pve-devel@lists.proxmox.com>
Subject: Re: [pve-devel] [PATCH qemu-server v3 stable-bookworm 8/8] migration: preserve host_mtu for virtio-net devices
Date: Fri, 5 Sep 2025 11:17:04 +0200	[thread overview]
Message-ID: <4a9a4b8d-16cd-4d74-9ef5-bd010412cf2c@proxmox.com> (raw)
In-Reply-To: <cba0c42d-5644-4656-a170-fa46a1f8663a@proxmox.com>

Am 05.09.25 um 11:09 AM schrieb Thomas Lamprecht:
> Am 05.09.25 um 10:54 schrieb Fiona Ebner:
>> Am 04.09.25 um 8:11 PM schrieb Thomas Lamprecht:
>>> Am 04.09.25 um 14:42 schrieb Fiona Ebner:
>>>> 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]. 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.
>>>>
>>>> Pass the values from the source to the target during migration to be
>>>> able to preserve them.
>>>
>>> Which breaks migration from new to old, which can be fine, but seems
>>> avoidable given that we got a tunnel that we can query stuff over.
>>
>> How can we query? The old tunnel only supports very specific commands
>> like 'quit' and 'resume $vmid'. Note that remote migration using the new
>> tunnel version is not broken - an old node will just ignore the
>> additional parameter in the passed-along JSON.
> 
> The absence of a command gives you also information.

Okay, so you mean adding a new command and using that to detect that the
node is recent enough? What should that command be? The capabilities one
you suggest below?

>>
>> We could do something like
>>
>> ssh ... qm start 0 --nets-host-mtu
>>
>> and match for "Unknown option: nets-host-mtu" for detection.
> 
> Yeah, that's exactly what I wrote later in my reply.

I thought you meant matching the error for the actual command. My
suggestion is using a dummy command for early detection and guard using
the new option for the actual command based on that.

>> Alternatively, we could bump the pve-manager version and guard adding
>> the option via the pmxcfs 'version-info' node kv. That mechanism wasn't
>> super reliable in the past though.
> 
> FWIW, we now re-broadcast that periodically and IIRC even on pmxcfs
> start up though.

Yes, and if we really can't get the info we can err on the side of
"assume it's recent enough".

>>> Maybe we could at least catch the "Unknown option: nets-host-mtu"
>>> error explicitly and add some context that the target likely just
>>> needs to be updated to make the migration work.
>>
>> If we don't want to go for either of the above or if there isn't an
>> other way to query, I'll go for that?
> 
> Would be fine for me, it's the simplest thing to do for now.
> 
> Adding some more fleshed out general approach for such things might
> be nice to have available for the future. That could be some
> versioning or a more structured capabilities query, that is split
> into required ones (which block the migration) and hints, that are
> for best-effort stuff, probably also including some basic version
> info like qemu-server, as that often is needed to know if a
> capability is required or not, like here, when migrating to a
> another 8.x node it won't matter, but for a 9.x target node we
> should enforce an e.g. nets-host-mtu to be available.

Sounds sensible.


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


  reply	other threads:[~2025-09-05  9:17 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-04 12:40 [pve-devel] [PATCH-SERIES qemu-server v3 0/8] virtio-net: fix migration between default/non-default MTUs Fiona Ebner
2025-09-04 12:40 ` [pve-devel] [PATCH qemu-server v3 1/8] virtio-net: fix migration between default/non-default MTUs starting with machine version 10.0+pve1 Fiona Ebner
2025-09-04 12:40 ` [pve-devel] [PATCH qemu-server v3 2/8] api: vm start: introduce nets-host-mtu parameter for migration compat Fiona Ebner
2025-09-04 12:40 ` [pve-devel] [PATCH qemu-server v3 3/8] migration: preserve host_mtu for virtio-net devices Fiona Ebner
2025-09-04 12:40 ` [pve-devel] [PATCH qemu-server v3 4/8] snapshot: save vmstate: avoid using deprecated check_running() function Fiona Ebner
2025-09-04 12:40 ` [pve-devel] [PATCH qemu-server v3 5/8] snapshot: save vmstate: die when PID cannot be obtained Fiona Ebner
2025-09-04 12:40 ` [pve-devel] [PATCH qemu-server v3 6/8] snapshot: introduce running-nets-host-mtu property Fiona Ebner
2025-09-04 12:40 ` [pve-devel] [PATCH qemu-server v3 stable-bookworm 7/8] api: vm start: introduce nets-host-mtu parameter for migration compat Fiona Ebner
2025-09-04 12:40 ` [pve-devel] [PATCH qemu-server v3 stable-bookworm 8/8] migration: preserve host_mtu for virtio-net devices Fiona Ebner
2025-09-04 18:11   ` Thomas Lamprecht
2025-09-05  8:54     ` Fiona Ebner
2025-09-05  9:09       ` Thomas Lamprecht
2025-09-05  9:17         ` Fiona Ebner [this message]
2025-09-04 13:06 ` [pve-devel] [PATCH-SERIES qemu-server v3 0/8] virtio-net: fix migration between default/non-default MTUs Fabian Grünbichler
2025-09-04 18:16 ` [pve-devel] applied: " Thomas Lamprecht

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4a9a4b8d-16cd-4d74-9ef5-bd010412cf2c@proxmox.com \
    --to=f.ebner@proxmox.com \
    --cc=pve-devel@lists.proxmox.com \
    --cc=t.lamprecht@proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal