From: Roman Bolshakov <roman@roolebo.dev>
To: Vladislav Yaroshchuk <yaroshchuk2000@gmail.com>
Cc: jasowang@redhat.com, phillip.ennen@gmail.com,
qemu-devel@nongnu.org, armbru@redhat.com, r.bolshakov@yadro.com,
phillip@axleos.com, akihiko.odaki@gmail.com, hsp.cat7@gmail.com,
hello@adns.io, eblake@redhat.com
Subject: Re: [PATCH v10 0/7] Add vmnet.framework based network backend
Date: Wed, 12 Jan 2022 10:50:04 +0300 [thread overview]
Message-ID: <Yd6ILKV75g4jll46@roolebo.dev> (raw)
In-Reply-To: <20220111211422.21789-1-yaroshchuk2000@gmail.com>
On Wed, Jan 12, 2022 at 12:14:15AM +0300, Vladislav Yaroshchuk wrote:
> macOS provides networking API for VMs called 'vmnet.framework':
> https://developer.apple.com/documentation/vmnet
>
> We can provide its support as the new QEMU network backends which
> represent three different vmnet.framework interface usage modes:
>
> * `vmnet-shared`:
> allows the guest to communicate with other guests in shared mode and
> also with external network (Internet) via NAT. Has (macOS-provided)
> DHCP server; subnet mask and IP range can be configured;
>
> * `vmnet-host`:
> allows the guest to communicate with other guests in host mode.
> By default has enabled DHCP as `vmnet-shared`, but providing
> network unique id (uuid) can make `vmnet-host` interfaces isolated
> from each other and also disables DHCP.
>
> * `vmnet-bridged`:
> bridges the guest with a physical network interface.
>
> This backends cannot work on macOS Catalina 10.15 cause we use
> vmnet.framework API provided only with macOS 11 and newer. Seems
> that it is not a problem, because QEMU guarantees to work on two most
> recent versions of macOS which now are Big Sur (11) and Monterey (12).
>
> Also, we have one inconvenient restriction: vmnet.framework interfaces
> can create only privileged user:
> `$ sudo qemu-system-x86_64 -nic vmnet-shared`
>
> Attempt of `vmnet-*` netdev creation being unprivileged user fails with
> vmnet's 'general failure'.
>
> This happens because vmnet.framework requires `com.apple.vm.networking`
> entitlement which is: "restricted to developers of virtualization software.
> To request this entitlement, contact your Apple representative." as Apple
> documentation says:
> https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_vm_networking
>
> One more note: we still have quite useful but not supported
> 'vmnet.framework' features as creating port forwarding rules, IPv6
> NAT prefix specifying and so on.
>
> Nevertheless, new backends work fine and tested within `qemu-system-x86-64`
> on macOS Bir Sur 11.5.2 host with such nic models:
> * e1000-82545em
> * virtio-net-pci
> * vmxnet3
>
> The guests were:
> * macOS 10.15.7
> * Ubuntu Bionic (server cloudimg)
>
>
> This series partially reuses patches by Phillip Tennen:
> https://patchew.org/QEMU/20210218134947.1860-1-phillip.ennen@gmail.com/
> So I included them signed-off line into one of the commit messages and
> also here.
>
> v1 -> v2:
> Since v1 minor typos were fixed, patches rebased onto latest master,
> redundant changes removed (small commits squashed)
> v2 -> v3:
> - QAPI style fixes
> - Typos fixes in comments
> - `#include`'s updated to be in sync with recent master
> v3 -> v4:
> - Support vmnet interfaces isolation feature
> - Support vmnet-host network uuid setting feature
> - Refactored sources a bit
> v4 -> v5:
> - Missed 6.2 boat, now 7.0 candidate
> - Fix qapi netdev descriptions and styles
> (@subnetmask -> @subnet-mask)
> - Support vmnet-shared IPv6 prefix setting feature
> v5 -> v6
> - provide detailed commit messages for commits of
> many changes
> - rename properties @dhcpstart and @dhcpend to
> @start-address and @end-address
> - improve qapi documentation about isolation
> features (@isolated, @net-uuid)
> v6 -> v7:
> - update MAINTAINERS list
> v7 -> v8
> - QAPI code style fixes
> v8 -> v9
> - Fix building on Linux: add missing qapi
> `'if': 'CONFIG_VMNET'` statement to Netdev union
> v9 -> v10
> - Disable vmnet feature for macOS < 11.0: add
> vmnet.framework API probe into meson.build.
> This fixes QEMU building on macOS < 11.0:
> https://patchew.org/QEMU/20220110034000.20221-1-jasowang@redhat.com/
>
Hi Vladislav,
What symbols are missing on Catalina except VMNET_SHARING_BUSY?
It'd be great to get the feature working there.
Thanks,
Roman
> Vladislav Yaroshchuk (7):
> net/vmnet: add vmnet dependency and customizable option
> net/vmnet: add vmnet backends to qapi/net
> net/vmnet: implement shared mode (vmnet-shared)
> net/vmnet: implement host mode (vmnet-host)
> net/vmnet: implement bridged mode (vmnet-bridged)
> net/vmnet: update qemu-options.hx
> net/vmnet: update MAINTAINERS list
>
> MAINTAINERS | 5 +
> meson.build | 16 +-
> meson_options.txt | 2 +
> net/clients.h | 11 ++
> net/meson.build | 7 +
> net/net.c | 10 ++
> net/vmnet-bridged.m | 111 ++++++++++++
> net/vmnet-common.m | 330 ++++++++++++++++++++++++++++++++++
> net/vmnet-host.c | 105 +++++++++++
> net/vmnet-shared.c | 92 ++++++++++
> net/vmnet_int.h | 48 +++++
> qapi/net.json | 132 +++++++++++++-
> qemu-options.hx | 25 +++
> scripts/meson-buildoptions.sh | 3 +
> 14 files changed, 894 insertions(+), 3 deletions(-)
> create mode 100644 net/vmnet-bridged.m
> create mode 100644 net/vmnet-common.m
> create mode 100644 net/vmnet-host.c
> create mode 100644 net/vmnet-shared.c
> create mode 100644 net/vmnet_int.h
>
> --
> 2.23.0
>
>
next prev parent reply other threads:[~2022-01-12 7:53 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-11 21:14 [PATCH v10 0/7] Add vmnet.framework based network backend Vladislav Yaroshchuk
2022-01-11 21:14 ` [PATCH v10 1/7] net/vmnet: add vmnet dependency and customizable option Vladislav Yaroshchuk
2022-01-11 21:14 ` [PATCH v10 2/7] net/vmnet: add vmnet backends to qapi/net Vladislav Yaroshchuk
2022-01-11 21:14 ` [PATCH v10 3/7] net/vmnet: implement shared mode (vmnet-shared) Vladislav Yaroshchuk
2022-01-11 21:14 ` [PATCH v10 4/7] net/vmnet: implement host mode (vmnet-host) Vladislav Yaroshchuk
2022-01-11 21:14 ` [PATCH v10 5/7] net/vmnet: implement bridged mode (vmnet-bridged) Vladislav Yaroshchuk
2022-01-11 21:14 ` [PATCH v10 6/7] net/vmnet: update qemu-options.hx Vladislav Yaroshchuk
2022-01-11 21:14 ` [PATCH v10 7/7] net/vmnet: update MAINTAINERS list Vladislav Yaroshchuk
2022-01-12 7:50 ` Roman Bolshakov [this message]
2022-01-12 8:22 ` [PATCH v10 0/7] Add vmnet.framework based network backend Roman Bolshakov
2022-01-12 13:23 ` Vladislav Yaroshchuk
2022-01-12 16:15 ` Roman Bolshakov
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=Yd6ILKV75g4jll46@roolebo.dev \
--to=roman@roolebo.dev \
--cc=akihiko.odaki@gmail.com \
--cc=armbru@redhat.com \
--cc=eblake@redhat.com \
--cc=hello@adns.io \
--cc=hsp.cat7@gmail.com \
--cc=jasowang@redhat.com \
--cc=phillip.ennen@gmail.com \
--cc=phillip@axleos.com \
--cc=qemu-devel@nongnu.org \
--cc=r.bolshakov@yadro.com \
--cc=yaroshchuk2000@gmail.com \
/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.