qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [Qemu-discuss] qemu-kvm: -netdev user: Parameter 'id' i


From: Stefan Hajnoczi
Subject: Re: [Qemu-devel] [Qemu-discuss] qemu-kvm: -netdev user: Parameter 'id' is missing
Date: Wed, 25 Jul 2012 16:00:08 +0100

On Tue, Jul 24, 2012 at 8:02 PM, anatoly techtonik <address@hidden> wrote:
> On Tue, Jul 24, 2012 at 1:23 PM, Stefan Hajnoczi <address@hidden> wrote:
>> On Mon, Jul 23, 2012 at 10:41 PM, anatoly techtonik <address@hidden> wrote:
>>> Forwarding per discussion in qemu-discuss.
>>> Please CC.
>>>
>>> ---------- Forwarded message ----------
>>> From: Mike Lovell <address@hidden>
>>> Date: Mon, Jul 23, 2012 at 10:58 PM
>>> Subject: Re: [Qemu-discuss] qemu-kvm: -netdev user: Parameter 'id' is 
>>> missing
>>> To: address@hidden
>>>
>>>
>>> On 07/20/2012 04:10 PM, anatoly techtonik wrote:
>>>>
>>>> The documentation at http://wiki.qemu.org/Documentation/Networking
>>>> makes people think that 'id' parameter for -netdev user is optional,
>>>> which doesn't appear to be true:
>>>>
>>>>      $ qemu-kvm -hda image.img -netdev user
>>>>      qemu-kvm: -netdev user: Parameter 'id' is missing
>>
>> I have updated the wiki page.
>
> Even with -net nic considered obsolete (is the whole -net family
> obsolete?), it looks like there is no complete replacement for it. For
> example, there is no equivalent for -net nic,model=? (referenced from
> wiki). It is also strange to read proposal to "see the qemu man page
> for the various options that you can pass to -net nic". Unfortunately,
> -netdev is completely undocumented in man and there is no info that
> -net nic and -net user are obsolete there. All this stuff is
> confusing.

You are right that this is underdocumented and confusing.  Answers to
your points:

1. -device ? lists all device models built into QEMU.  This includes
NICs but they are not grouped in an easy-to-find way.  Here is an
example of the output:
name "e1000", bus PCI, desc "Intel Gigabit Ethernet"

2. -netdev is undocumented on the man page.  I'm fixing this and will
send the patch to qemu-devel.

3. There is a little bit of -netdev/-device documentation in
docs/qdev-device-use.txt.

>> A -netdev needs to be paired with a NIC -device.  That's why the
>> identifier is essential, it allows you to say -netdev
>> <type>,id=netdev0 -device <type>,netdev=netdev0.
>
> It still says "The id option can be used with the -device...", where
> "can be" looks like it should be replaced by "must".

Strictly speaking "can be" is correct because -device id= is optional.
 You can also do:
-net user -device virtio-net-pci,vlan=0

This is basically equivalent to:
-net user -net nic,model=virtio

What's going on here is that -device is used but with the legacy QEMU
"VLAN" feature that can be used to connect NICs and backends.

Things aren't as simple as they should be but I think the problem here
is really the documentation.  We can try to improve it so that it
doesn't leave open questions like this, maybe without going into every
nasty detail.

> Why is it impossible for -netdev to create NIC device automatically if
> not explicitly set? As a user I don't really know which net device do
> I need. This would greatly simplify user experience (and lower Qemu
> bounce rate).

There was a similar discussion about -drive for block devices just the
other day.  I don't think there's a good answer except that QEMU
command-line has historic baggage and that everyone has a different
use case so it can be hard to come up with a good simplified
command-line option set.

The area where I think we can fix things easily is by offering better
documentation.

> There is also a question about user mode. It is said "the guest is not
> directly accessible from the host or the external network" and also
> "You can isolate the guest from the host (and broader network) using
> the restrict option". ??? Guest is already not directly accessible -
> why use the restrict?

You are correct that the guest is not directly accessible from the
host.  I think what the line about isolation means to say is that you
can prevent the guest from communicating with anything besides the
emulated network inside QEMU.

restricted=on means:
 * No gateway or DNS fields in the DHCP reply - guest has no external
connectivity
 * No TCP connections to external host:port unless explicitly allowed
 * No UDP except for the built-in DHCP/TFTP server

You could use this if you don't want software inside the guest to
phone home, for example, but still want some basic network services
(like TFTP boot).

Stefan



reply via email to

[Prev in Thread] Current Thread [Next in Thread]