On Tue, 9 Sep 2025 12:10:45 +0200
Volker Diels-Grabsch
David Gibson wrote:
Looks good to me. It would be nice to also send an Neighbour Discovery request to accomplish the same thing for IPv6 only guests, but that could be a separate patch.
Good point! I'd prefer to do it in the same patch, as I'd also like fix another minor detail in this one.
Just for the sake of clarity: I had a look at RFC4861 and there are many types of Neighbour Discovery requests. For our purpose, I believe that we want to send a "Neighbor Solicitation Message" described in section 4.3:
https://datatracker.ietf.org/doc/html/rfc4861#section-4.3
Do you agree, or did you have something else in mind?
I was about to comment on this, but from the new patch you sent, I see you already figured out it's a Neighbour Solicitation and that we already have some bits of code for that. :)
Note that even with this patch, active TCP connections (and in some cases UDP flows) will be broken by a passt restart.
Indeed, that is unavoidable for a user-space tool opening TCP and UDP connections, I guess, unless "passt" itself is wrapped into another process or system tool that keeps those connections open. But let's not go into that.
Actually, it's not really unavoidable, in the sense that we recently added (see migrate.c, repair.c, passt-repair.c, and passt-repair(1)) support for migration of live TCP connections triggered by vhost-user commands: https://qemu-project.gitlab.io/qemu/interop/vhost-user.html#migrating-back-e... which is based on the TCP_REPAIR socket option in the Linux kernel, which was in turn added to support a similar feature in CRIU: https://criu.org/TCP_connection and while this was done with KubeVirt in mind: https://github.com/kubevirt/enhancements/blob/main/veps/sig-network/passt/pa... that is, migration between two different nodes / hosts, there's nothing that really prevents migration between two instances of passt via, for example, load/dump from/to a binary file. Actually, we initially wanted to add the file option for testing purposes, but we skipped it eventually and went straight ahead for the direct implementation. Some bits of "documentation": git log migrate.c test/migrate/basic ...yes, a new website with some space for this stuff is in (infinitesimally slow) progress. -- Stefano