Hello! > After a migration, to avoid network outage, the guest must announce its new > location to the L2 layer, typically with a GARP. Otherwise requests sent to > the guest arrive to the old host until a ARP request is sent (after 30 > seconds) or the guest sends some data. > QEMU implementation of self announce after a migration with a vhost backend > is the following: > - If the VIRTIO_GUEST_ANNOUNCE feature has been negotiated the guest sends > automatically a GARP. > - Else if the vhost backend implements VHOST_USER_SEND_RARP this request is > sent to the vhost backend. When this message is received the vhost backend > must act as it receives a RARP from the guest (purpose of this RARP is to > update switches' MAC->port maaping as a GARP). This RARP is a false one, > created by the vhost backend, > - Else nothing is done and we have a network outage until a ARP is sent or > the guest sends some data.
But what is qemu_announce_self() then? It's just unconditionally triggered after migration, but indeed sends some strange thing. > VIRTIO_GUEST_ANNOUNCE feature is negotiated if: > - the vhost backend announces the support of this feature. Maybe QEMU can be > updated to support unconditionnaly this feature Wrong. I tried to unconditionally enforce it in qemu (my guest does support it), and the link stopped working at all. I don't understand why. Kind regards, Pavel Fedin Expert Engineer Samsung Electronics Research center Russia