On 06/08/2015 06:01 PM, Thibaut Collet wrote: > Hi, > > I agree that my patch is OK only for recent drivers. To have a simple > patch with only few modifications I do not implement a solution for > old driver but I can be done later. >
This makes sense. > For legacy guest without VIRTIO_NET_F_GUEST_ANNOUNCE the problem is > more complex. The RARP must be sent by the vhost client/backend. This > component is outside QEMU (the reference implementation is > snabbswitch: > http://www.virtualopensystems.com/en/solutions/guides/snabbswitch-qemu/). > To do that: > - a receive function must be defined for the vhost user. > - a message must be added between QEMU and vapp. This message will be > sent only for old guest driver to avoid GARP duplication. > - the added self_announce_disabled must be removed (decision to send > or not the RARP is done later by the backend and not by the generic > migration method) > > Do you agree with this solution ? > > Sounds ok. > Regards. > > On Mon, Jun 8, 2015 at 11:14 AM, Jason Wang <jasow...@redhat.com > <mailto:jasow...@redhat.com>> wrote: > > > > On 06/08/2015 04:21 PM, Thibaut Collet wrote: > > Hi, > > > > My understanding of gratuitous packet with virtio for any backend > > (vhost user or other): > > - When the VM is loaded (first start or migration) the virtio net > > interfaces are loaded ( virtio_net_load_device function in > > hw/net/virtio-net.c) > > - If the guest has the VIRTIO_NET_F_GUEST_ANNOUNCE capability, > request > > to send gratuitous packet is done. > > > > 1. To enable gratuitous packet through this mechanism I have > > added VIRTIO_NET_F_GUEST_ANNOUNCE capability to > hw/net/vhost_net.c. So > > host and guest can negotiate this feature when vhost-user is used. > > > > 2. self announce occurs in case of live migration. During a live > > migration a GARP is sent to all net backend through a queue > dedicated > > to the net backend. > > But for vhost-user: > > - this operation is not possible (vhost-user has no queue) > > - it is already done with the previous mechanism. > > Rather to define a queue to vhost user and notify twice the guest > > to send gratuitous packet I have disable GARP from self announce and > > use only the first mechanism for that. > > > > I have tested my modifications with guest that supports > > VIRTIO_NET_F_GUEST_ANNOUNCE and vhost-user on the host. After a live > > migration I have the GARP from the guest. > > Yes, your patch works well for recent drivers. But the problem is > legacy > guest/driver without VIRTIO_NET_F_GUEST_ANNOUNCE. In this case there > will be no GARP sent after migration. > > Thanks > >