From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48832) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fO2yY-00025i-Tn for qemu-devel@nongnu.org; Wed, 30 May 2018 11:25:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fO2yS-00062M-2O for qemu-devel@nongnu.org; Wed, 30 May 2018 11:25:22 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:48826 helo=mx1.redhat.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fO2yR-00061s-Qt for qemu-devel@nongnu.org; Wed, 30 May 2018 11:25:15 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 649D2BB41F for ; Wed, 30 May 2018 15:25:15 +0000 (UTC) From: Thomas Huth Date: Wed, 30 May 2018 17:25:12 +0200 Message-Id: <1527693912-32378-1-git-send-email-thuth@redhat.com> Subject: [Qemu-devel] [qemu-web PATCH v2] Add a blog post about the new -nic parameter List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Jason Wang QEMU v2.12 features a new, useful parameter called "-nic". Let's throw some light on this new parameter with a new blog post. Signed-off-by: Thomas Huth --- Paolo, I tried to address your feedback from v1 here. But I guess there is still a lot of my bad English in here ... so please free to take over the patch, fix the bad language and commit the patch to the repository. I think that's likely the easiest way to get this blog post finally out... _posts/2018-05-30-nic-parameter.md | 156 +++++++++++++++++++++++++++++ screenshots/2018-05-30-qemu-cli-net.png | Bin 0 -> 24020 bytes screenshots/2018-05-30-qemu-cli-netdev.png | Bin 0 -> 13553 bytes 3 files changed, 156 insertions(+) create mode 100644 _posts/2018-05-30-nic-parameter.md create mode 100644 screenshots/2018-05-30-qemu-cli-net.png create mode 100644 screenshots/2018-05-30-qemu-cli-netdev.png diff --git a/_posts/2018-05-30-nic-parameter.md b/_posts/2018-05-30-nic-parameter.md new file mode 100644 index 0000000..1c9691f --- /dev/null +++ b/_posts/2018-05-30-nic-parameter.md @@ -0,0 +1,156 @@ +--- +layout: post +title: "QEMU's new -nic command line option" +date: 2018-05-30 17:00:00 +0200 +author: Thomas Huth +categories: [features, options, 'qemu 2.12'] +--- +If you used QEMU in the past, you are probably familiar with the `-net` +command line option, which can be used to configure a network connection +for the guest, or with with the `-netdev` option, which configures a network +back-end. Yet, QEMU v2.12 introduces a third way to configure NICs, the +`-nic` option. + +The [ChangeLog of QEMU +v2.12](https://wiki.qemu.org/ChangeLog/2.12#Network) says that `-nic` +can "quickly create a network front-end (emulated NIC) and a host +back-end". But why did QEMU need yet another way to configure the +network, and how does it compare with `-net` and `-netdev`? To answer +these questions, we need to look at the model behind network virtualization +in QEMU. + +As hinted by the ChangeLog entry, a network interface consists of two +separate entities: + +1. The emulated hardware that the guest sees, i.e. the so-called NIC (network +interface controller). On systems that support PCI cards, these typically +could be an e1000 network card, a rtl8139 network card or a virtio-net device. +This entity is also called the "front-end". + +2. The network back-end on the host side, i.e. the interface that QEMU uses +to exchange network packets with the outside (like other QEMU instances +or other real hosts in your intranet or in the internet). The common host +back-ends are the "user" (a.k.a. SLIRP) back-end which provides access to +the host's network via NAT, the "tap" back-end which allows the guest to +directly access the host's network, or the "socket" back-end which can be +used to connect multiple QEMU instances to simulate a shared network for +the their guests. + +Based on this, it is already possible to define the most obvious difference +between `-net`, `-netdev` and `-nic`: The `-net` option can create _either_ +a front-end or a back-end (and also does other things); `-netdev` can only +create a back-end; while a single occurrence of `-nic` will create _both_ a +front-end and a back-end. But for the non-obvious differences, we also need +to have a detailed look at the `-net` and `-netdev` option first ... + +The legacy -net option +---------------------- + +QEMU's initial way of configuring the network for the guest was the `-net` +option. The emulated NIC hardware can be chosen with the +`-net nic,model=xyz,...` parameter, and the host back-end with the +`-net ,...` parameter (e.g. `-net user` for the SLIRP back-end). +However, the emulated NIC and the host back-end are not directly connected +here, but via an emulated hub (called "vlan" in older versions of QEMU), so +if you start QEMU with `-net nic,model=e1000 -net user -net nic,model=virtio +-net tap` for example, you get a setup where all the front-ends and back-ends +are connected together via a hub: + +![Networking with -net](/screenshots/2018-05-30-qemu-cli-net.png) + +That means the e1000 NIC also gets the network traffic from the virtio-net +NIC and both host back-ends... this is probably not what the users expected; +it's more likely that they wanted two separate networks in the guest, one +for each NIC. +Because `-net` always connects its NIC to a hub, you would have to tell +QEMU to use _two separate hubs_, using the "vlan" parameter. For example +`-net nic,model=e1000,vlan=0 -net user,vlan=0 -net nic,model=virtio,vlan=1 +-net tap,vlan=1` moves the virtio-net NIC and the "tap" back-end to a second +hub (with ID #1). + +Please note that the "vlan" parameter will be dropped in QEMU v3.0 since the term +was rather [confusing](https://bugs.launchpad.net/qemu/+bug/658904) (it's not +related to IEEE 802.1Q for example) and caused a lot of misconfigurations in +the past. Additional hubs can still be instantiated with `-netdev` (or `-nic`) +and the special "hubport" back-end. The `-net` option itself will still stay +around since it is still useful if you only want to use one front-end and +one back-end together, or if you want to tunnel the traffic of multiple +NICs through one back-end only (something like `-net nic,model=e1000 +-net nic,model=virtio -net l2tpv3,...` for example). + + +The modern -netdev option +------------------------- + +Beside the confusing "vlan" parameter of the `-net` option, there is one more +major drawback with `-net`: The emulated hub between the NIC and the +back-end gets in the way when the NIC front-end has to work closely together +with the host back-end. For example, vhost acceleration can not be enabled +if you create a virtio-net device with `-net nic,model=virtio`. + +To configure a network connection where the emulated NIC is directly connected +to a host network back-end, without a hub in between, you should use the +`-netdev` option for the back-end, together with `-device` for the front-end. +Assuming that you want to configure the same devices as in the `-net` example +above, you could use `-netdev user,id=n1 -device e1000,netdev=n1 -netdev +tap,id=n2 -device virtio-net,netdev=n2` for example. This will give you +straight 1:1 connections between the NICs and the host back-ends: + +![Networking with -netdev](/screenshots/2018-05-30-qemu-cli-netdev.png) + +Note that you can also still connect the devices to a hub with the special +`-netdev hubport` back-end, but in most of the normal use cases, the use +of a hub is not required anymore. + +Now while `-netdev` together with `-device` provide a very flexible and +extensive way to configure a network connection, there are still two +drawbacks with this option pair which prevented us from deprecating the +legacy `-net` option completely: + +1. The `-device` option can only be used for pluggable NICs. Boards +(e.g. embedded boards) which feature an on-board NIC can not be configured +with `-device` yet, so `-net nic,netdev=` must be used here instead. + +2. In some cases, the `-net` option is easier to use (less to type). +For example, assuming you want to set up a "tap" network connection and +you've got the default scripts /etc/qemu-ifup and -down already in place, +it's enough to type `-net nic -net tap` to start your guest. To do the +same with `-netdev`, you always got to specify an ID here, too, for +example like this: `-netdev tap,id=n1 -device e1000,netdev=n1`. + +The new -nic option +------------------- + +Looking at the disadvantages listed above, it should be clear that there +is a need for a convenience option that is + + * easier to use (i.e. less to type) than `-netdev ,id= + -device ,netdev=` + * can be used to configure on-board / non-pluggable NICs, too + * does not place a hub between the NIC and the host back-end. + +This is where the new `-nic` option kicks in: This option can be used +to configure both the guest's NIC hardware and the host back-end in +one go. For example, instead of `-netdev tap,id=n1 -device e1000,netdev=n1` +you can simply type `-nic tap,model=e1000`. If you don't care about the +exact NIC model type, you can even omit the `model=...` parameter and type +`-nic tap`. This is even shorter and more convenient than the previous +shortest way of typing `-net nic -net tap`. To get a list of NIC models +that you can use with this option, you can simply run QEMU with +`-nic model=help`. + +Beside being easier to use, the `-nic` option can be used to configure +on-board NICs, too (just like the `-net` option). For machines that have +on-board NICs, the first `-nic` option configures the first on-board NIC, +the second `-nic` option configures the second on-board NIC, and so forth. + +Conclusion +---------- + + * The new `-nic` option gives you an easy and quick way to configure + the networking of your guest. + * For more detailed configuration, e.g. when you need to tweak the details + of the emulated NIC hardware, you can use `-device` together with `-netdev`. + * The `-net` option should rather be avoided these days unless you really + want to configure a set-up with a hub between the front-ends and back-ends. + diff --git a/screenshots/2018-05-30-qemu-cli-net.png b/screenshots/2018-05-30-qemu-cli-net.png new file mode 100644 index 0000000000000000000000000000000000000000..32f05da022528c78ac6e11f59e7e4fae3b93200b GIT binary patch literal 24020 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 literal 0 HcmV?d00001 diff --git a/screenshots/2018-05-30-qemu-cli-netdev.png b/screenshots/2018-05-30-qemu-cli-netdev.png new file mode 100644 index 0000000000000000000000000000000000000000..96589304b4e7afa3b9d29bfa4bc7f4392a1689fe GIT binary patch literal 13553 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 literal 0 HcmV?d00001 -- 1.8.3.1