From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Michael S. Tsirkin" Subject: Re: [libvirt] [RFC] Vhost-user backends cross-version migration support Date: Thu, 2 Feb 2017 20:27:18 +0200 Message-ID: <20170202202450-mutt-send-email-mst@kernel.org> References: <20170201114119.GE3232@redhat.com> <20170202150621.GQ2915@redhat.com> <20170202181827-mutt-send-email-mst@kernel.org> <20170202171028.GT2915@redhat.com> <20170202191248-mutt-send-email-mst@kernel.org> <20170202172908.GW2915@redhat.com> <20170202193041-mutt-send-email-mst@kernel.org> <20170202182155.GA30916@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: "dev-yBygre7rU0TnMu66kgdUjQ@public.gmane.org" , Flavio Leitner , "dev-VfR2kkLFssw@public.gmane.org" , Michal Privoznik , Daniele Di Proietto , "libvir-list-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org" , Maxime Coquelin To: "Daniel P. Berrange" Return-path: Content-Disposition: inline In-Reply-To: <20170202182155.GA30916-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: ovs-dev-bounces-yBygre7rU0TnMu66kgdUjQ@public.gmane.org Errors-To: ovs-dev-bounces-yBygre7rU0TnMu66kgdUjQ@public.gmane.org List-Id: dev.dpdk.org On Thu, Feb 02, 2017 at 06:21:55PM +0000, Daniel P. Berrange wrote: > On Thu, Feb 02, 2017 at 07:31:49PM +0200, Michael S. Tsirkin wrote: > > On Thu, Feb 02, 2017 at 05:29:08PM +0000, Daniel P. Berrange wrote: > > > On Thu, Feb 02, 2017 at 07:20:35PM +0200, Michael S. Tsirkin wrote: > > > > On Thu, Feb 02, 2017 at 05:10:28PM +0000, Daniel P. Berrange wrote: > > > > > On Thu, Feb 02, 2017 at 06:21:55PM +0200, Michael S. Tsirkin wrote: > > > > > > On Thu, Feb 02, 2017 at 03:06:21PM +0000, Daniel P. Berrange wrote: > > > > > > > On Thu, Feb 02, 2017 at 03:14:01PM +0100, Maxime Coquelin wrote: > > > > > > > > > > > > > > > > > > > > > > > > On 02/01/2017 12:41 PM, Daniel P. Berrange wrote: > > > > > > > > > > > > > > > > > > It depends where / how in OVS it needs to be set. The only stuff libvirt > > > > > > > > > does with OVS is to run 'add-port' and 'del-port' commands via the ovs > > > > > > > > > cli tool. We pass through arguments from the port profile stored in the > > > > > > > > > XML config. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > eg those things in get passed as cli args to the 'add-port' > > > > > > > > > command. Soo if add-port needs this new version string, then we'd need > > > > > > > > > to add the version to the openvswitch virtualport XML. > > > > > > > > > > > > > > > > > > If the version is provided to OVS in a different command, then it would > > > > > > > > > probably be outside scope of libvirt. > > > > > > > > > > > > > > > > I think it would make sense to be a parameter of the add-port command. > > > > > > > > But it would be for vhost-user related add-port command, I didn't find > > > > > > > > where/if this is managed in libvirt XML. > > > > > > > > > > > > > > For vhost-user, libvirt does not have any interaction with OVS at > > > > > > > all. If the thing that's using the vhost-user UNIX socket, in turn > > > > > > > connects to OVS, that's outside scope of libvirt. IOW, for vhost-user > > > > > > > OVS it seems like that job is for Nova / os-vif to solve. > > > > > > > > > > > > I don't think they currently understand the issues involved in > > > > > > cross-version migration though. This is a complex subject and easy to > > > > > > get wrong. It would be significantly better to figure it out at libvirt > > > > > > level since it already deals with cross-version migration issues. > > > > > > > > > > Libvirt considers vhost-user to be a blackbox though - it just exposes > > > > > a UNIX socket, and whatever is on the other end is completely opaque. > > > > > The fact that the other end might plumb the data stream into openvswitch > > > > > is not something libvirt should know, as we don't want to end up having > > > > > to add custom code to libvirt for every different vhost-user server > > > > > impl. > > > > > > > > > > IOW, if the version str can be passed to QEMU, and then onto vhost-user > > > > > backend in QEMU, then libvirt can be involved. If the version str has > > > > > to be given to openvswitch that's not for libvirt to deall with. > > > > > > > > > > Regards, > > > > > Daniel > > > > > > > > It's not just about passing it to QEMU. The following is needed: > > > > - need to query version when creating VM/device > > > > - need to query supported versions when migrating VM > > > > > > Those are both things that nova can do, since it knows what the vhost-user > > > device in question is connected to, and so can query the versions, and check > > > versions before triggering migration with libvirt > > > > It can, but then it will need to query libvirt or source for the version > > string since it's in the XML. > > No, it wouldn't be in the XML at all. Nova on the source queries what > vhostuser version it has and what the target host has, and can prevent > the migration if they're incompatible. This is not sufficient. Exactly the same as qemu machine type, this must be preserved from time of install and moved wherever VM goes. > I dont think libvirt has to be > involved at all for this, as all the info can be obtained by nova/os-vif > from the vhostuser impl it has configured. > > Regards, > Daniel Given we are already confused at libvirt level, I find it highly unlikely upper levels will do the right thing. Generally I simply don't understand why would we expose to higher levels something which is fundamentally not a policy decision. > -- > |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| > |: http://libvirt.org -o- http://virt-manager.org :| > |: http://entangle-photo.org -o- http://search.cpan.org/~danberr/ :|