From: "Daniel P. Berrange" <berrange@redhat.com>
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: qemu-devel@nongnu.org, Gleb Natapov <gleb@redhat.com>,
kvm@vger.kernel.org
Subject: Re: [Qemu-devel] [PATCH] Vmchannel PCI device.
Date: Sun, 14 Dec 2008 23:33:05 +0000 [thread overview]
Message-ID: <20081214233305.GA22151@redhat.com> (raw)
In-Reply-To: <49458F31.8040208@codemonkey.ws>
On Sun, Dec 14, 2008 at 04:56:49PM -0600, Anthony Liguori wrote:
> Daniel P. Berrange wrote:
> >On Sun, Dec 14, 2008 at 01:15:42PM -0600, Anthony Liguori wrote:
> >
> >One non-QEMU backend I can see being implemented is a DBus daemon,
> >providing a simple bus for RPC calls between guests & host.
>
> The main problem with "external" backends is that they cannot easily
> participate in save/restore or live migration. If you want to have an
> RPC mechanism, I would suggest implementing the backend in QEMU and
> hooking QEMU up to dbus. Then you can implement proper save/restore.
DBus is a general purpose RPC service, which has little-to-no knowledge
of the semantics of application services running over it. Simply pushing
a backend into QEMU can't magically make sure all the application level
state is preserved across save/restore/migrate. For some protocols the
only viable option may be to explicitly give the equivalent of -EPIPE
/ POLLHUP to the guest and have it explicitly re-establish connectivity
with the host backend and re-initialize neccessary state if desired
> > Or on
> >a similar theme, perhaps a QPid message broker in the host OS. Yet
> >another backend is a clustering service providing a virtual fence
> >device to VMs.
>
> Why not use virtual networking for a clustering service (as you would in
> real machines).
It imposes a configuration & authentication burden on the guest to
use networking. When a virtual fence device is provided directly from
the host OS, you can get zero-config deployment of clustering with
the need to configure any authentication credentials in the guest.
This is a big plus over over the traditional setup for real machines.
> > All of these would live outside QEMU, and as such
> >exposing the backend using the character device infrastructure
> >is a natural fit.
>
> If you don't have QEMU as a broker, it makes it very hard for QEMU to
> virtualization all of the resources exposed to the guest. This
> complicates things like save/restore and complicates security policies
> since you now have things being done on behalf of a guest originating
> from another process. It generally breaks the model of guest-as-a-process.
This really depends on what you define the semantics of the vmchannel
protocol to be - specifically whether you want save/restore/migrate to
be totally opaque to the guest or not. I could imagine one option is to
have the guest end of the device be given -EPIPE when the backend is
restarted for restore/migrate, and choose to re-establish its connection
if so desired. This would not require QEMU to maintain any backend state.
For stateless datagram (UDP-like) application protocols there's nothing
that there's no special support required for save/restore.
> What's the argument to do these things external to QEMU?
There are many potential uses cases for VMchannel, not all are going
to be general purpose things that everyone wants to use. Forcing alot
of application specific backend code into QEMU is not a good way to
approach this from a maintenance point of view. Some backends may well
be well suited to living inside QEMU, while others may be better suited
as external services.
Daniel
--
|: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|
next prev parent reply other threads:[~2008-12-14 23:33 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-14 11:50 [Qemu-devel] [PATCH] Vmchannel PCI device Gleb Natapov
2008-12-14 12:28 ` Blue Swirl
2008-12-14 13:12 ` Gleb Natapov
2008-12-14 19:15 ` Anthony Liguori
2008-12-14 19:37 ` Gleb Natapov
2008-12-14 22:52 ` Anthony Liguori
2008-12-15 9:20 ` Avi Kivity
2008-12-15 9:25 ` Dan Kenigsberg
2008-12-15 15:43 ` Dan Kenigsberg
2008-12-14 22:13 ` Daniel P. Berrange
2008-12-14 22:56 ` Anthony Liguori
2008-12-14 23:33 ` Daniel P. Berrange [this message]
2008-12-15 1:18 ` Thiemo Seufer
2008-12-15 2:03 ` Anthony Liguori
2008-12-15 9:47 ` Daniel P. Berrange
2008-12-14 19:24 ` [Qemu-devel] " Anthony Liguori
2008-12-14 19:44 ` Gleb Natapov
2008-12-15 0:41 ` [Qemu-devel] " Paul Brook
2008-12-15 1:50 ` Anthony Liguori
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=20081214233305.GA22151@redhat.com \
--to=berrange@redhat.com \
--cc=anthony@codemonkey.ws \
--cc=gleb@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=qemu-devel@nongnu.org \
/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;
as well as URLs for NNTP newsgroup(s).