From: "Michael S. Tsirkin" <mst@redhat.com>
To: Anthony Liguori <aliguori@linux.vnet.ibm.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] Re: Planning for 0.13
Date: Wed, 6 Jan 2010 15:55:27 +0200 [thread overview]
Message-ID: <20100106135527.GE2248@redhat.com> (raw)
In-Reply-To: <4B449162.9040107@linux.vnet.ibm.com>
On Wed, Jan 06, 2010 at 07:34:26AM -0600, Anthony Liguori wrote:
> On 01/06/2010 07:20 AM, Michael S. Tsirkin wrote:
>>> We can use helpers for more than just tun/tap. My current thinking for
>>> helpers is that they would give qemu an fd and then tell qemu how to
>>> work with it. Basically, use read/write vs. send/recv, whether to use a
>>> virtio-net header or not, etc.
>>>
>> Frankly I think this is too ambitious for 0.13, and I would like to
>> avoid typing features that users need today to this effort.
>>
>> Note that management still needs ability to hand fd to qemu, so we can
>> not require use of helpers for everyone.
>
> It's the same mechanism, no?
>
> I want to move to a single net backend that would be something like -net
> fd. Here are some possible invocations:
>
> -net fd,fd=3,type=tun,vnet=off
> -net fd,helper="/usr/libexec/qemu-net-vepa --arg-if=eth0"
> -net fd,fd=3,type=socket,vnet=off
We currently don't let users control whether vnet header
is activated in tap and IMO we are better off this way,
let qemu find out support itself.
> -net fd,fd=3,type=vhost
>
> It's really a simple thing to do and it means that we can always
> implement any backend outside of qemu.
Look at existing backends, each of them has some quirks in qemu. It's
not realistic to expect that future backends won't need any more.
> As part of this, I would like:
>
> -net vepa,if=eth0
>
> To automatically translate to:
>
> -net fd,helper="/usr/libexec/qemu-net-vepa --arg-if=eth0"
>
> I'm also open to the idea of using shared libraries if people really
> think it's a good idea.
What does all of this buy us? The helpers will still need to be shipped
with qemu.
>> If the helpers are part of
>> qemu itself, we do not gain anything from them besides (limited)
>> security. But if not, we also get a protocol qemu<->helpers to
>> maintain. Ugh.
>>
>
> There really isn't much a protocol here. Helpers get handed a domain
> socket, then connect and send an fd via SCM_RIGHTS. They pass a string
> as part of that message that just happens to be equivalent to the arg
> string that would normally be passed to -net fd.
How do helpers know which arguments are legal? Also, e.g. with
vhost-net you can open it in a helper script but you must do the rest of
the set up in qemu.
>> What I think is reasonable for 0.13, is what you posted: just allow
>> helper script as an alternative way to get device fd, and have qemu do
>> all the querying and feature negotiation exactly the way it already
>> does. No protocol to maintain, command line users get some extra
>> security, management is not affected at all. The only risk is that a new
>> suid binary is installed.
>>
>
> The whole suid binary thing is someone orthogonal to my goal here. The
> observation is that 99% of what people want in terms of network backends
> really just boils down to, here's a file descriptor, interact with it in
> one of a very small number of ways.
Each new backend seems to have its own quirks. Nothing seems
gained by moving handling them around.
>>> That would allow a helper to open a raw socket, configure macvlan, and
>>> then hand the fd over to qemu and tell qemu how to use it.
>>>
>> Note binding to macvlan in a script buys you zero extra security
>> as compared to opening socket and binding in qemu.
>>
>
> It's not about security, it's about not making qemu the gateway to
> implementing arbitrarily complex network mechanisms. There's no reason
> qemu should have to know anything about vepa, for instance.
>
> Regards,
>
> Anthony Liguori
We'll still need to write all the scripts and bundle them
with qemu. So ... I fail to see
--
MST
next prev parent reply other threads:[~2010-01-06 13:58 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-05 12:43 [Qemu-devel] Planning for 0.13 Anthony Liguori
2010-01-05 12:44 ` [Qemu-devel] " Anthony Liguori
2010-01-05 20:50 ` [Qemu-devel] " Stefan Weil
2010-01-05 21:33 ` [Qemu-devel] " Michael S. Tsirkin
2010-01-06 0:32 ` Anthony Liguori
2010-01-06 10:49 ` Michael S. Tsirkin
2010-01-06 12:36 ` Anthony Liguori
2010-01-06 13:20 ` Michael S. Tsirkin
2010-01-06 13:34 ` Anthony Liguori
2010-01-06 13:55 ` Michael S. Tsirkin [this message]
2010-01-06 15:10 ` Anthony Liguori
2010-01-06 15:16 ` Michael S. Tsirkin
2010-01-06 15:24 ` Anthony Liguori
2010-01-06 15:41 ` Michael S. Tsirkin
2010-01-06 17:19 ` Jamie Lokier
2010-01-06 18:19 ` Michael S. Tsirkin
2010-01-06 22:49 ` Jamie Lokier
2010-01-06 23:59 ` Michael S. Tsirkin
2010-01-06 19:48 ` Paolo Bonzini
2010-01-06 19:54 ` Michael S. Tsirkin
2010-01-06 19:59 ` Paolo Bonzini
2010-01-06 20:07 ` Michael S. Tsirkin
2010-01-06 23:00 ` Jamie Lokier
2010-01-07 0:05 ` Michael S. Tsirkin
2010-01-05 22:31 ` [Qemu-devel] " Aurelien Jarno
2010-01-06 2:46 ` Roy Tam
2010-01-06 9:37 ` Gerd Hoffmann
2010-01-06 15:34 ` Adam Litke
2010-01-12 13:43 ` Pasi Kärkkäinen
2010-01-12 15:07 ` Stefano Stabellini
2010-02-09 14:50 ` Artyom Tarasenko
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=20100106135527.GE2248@redhat.com \
--to=mst@redhat.com \
--cc=aliguori@linux.vnet.ibm.com \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.