From: Avi Kivity <avi@redhat.com>
To: Pankaj Thakkar <pthakkar@vmware.com>
Cc: linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
virtualization@lists.linux-foundation.org, pv-drivers@vmware.com,
sbhatewara@vmware.com
Subject: Re: RFC: Network Plugin Architecture (NPA) for vmxnet3
Date: Wed, 05 May 2010 20:59:51 +0300 [thread overview]
Message-ID: <4BE1B217.80600@redhat.com> (raw)
In-Reply-To: <20100504230225.GP8323@vmware.com>
On 05/05/2010 02:02 AM, Pankaj Thakkar wrote:
> 2. Hypervisor control: All control operations from the guest such as programming
> MAC address go through the hypervisor layer and hence can be subjected to
> hypervisor policies. The PF driver can be further used to put policy decisions
> like which VLAN the guest should be on.
>
Is this enforced? Since you pass the hardware through, you can't rely
on the guest actually doing this, yes?
> The plugin image is provided by the IHVs along with the PF driver and is
> packaged in the hypervisor. The plugin image is OS agnostic and can be loaded
> either into a Linux VM or a Windows VM. The plugin is written against the Shell
> API interface which the shell is responsible for implementing. The API
> interface allows the plugin to do TX and RX only by programming the hardware
> rings (along with things like buffer allocation and basic initialization). The
> virtual machine comes up in paravirtualized/emulated mode when it is booted.
> The hypervisor allocates the VF and other resources and notifies the shell of
> the availability of the VF. The hypervisor injects the plugin into memory
> location specified by the shell. The shell initializes the plugin by calling
> into a known entry point and the plugin initializes the data path. The control
> path is already initialized by the PF driver when the VF is allocated. At this
> point the shell switches to using the loaded plugin to do all further TX and RX
> operations. The guest networking stack does not participate in these operations
> and continues to function normally. All the control operations continue being
> trapped by the hypervisor and are directed to the PF driver as needed. For
> example, if the MAC address changes the hypervisor updates its internal state
> and changes the state of the embedded switch as well through the PF control
> API.
>
This is essentially a miniature network stack with a its own mini
bonding layer, mini hotplug, and mini API, except s/API/ABI/. Is this a
correct view?
If so, the Linuxy approach would be to use the ordinary drivers and the
Linux networking API, and hide the bond setup using namespaces. The
bond driver, or perhaps a new, similar, driver can be enhanced to
propagate ethtool commands to its (hidden) components, and to have a
control channel with the hypervisor.
This would make the approach hypervisor agnostic, you're just pairing
two devices and presenting them to the rest of the stack as a single device.
> We have reworked our existing Linux vmxnet3 driver to accomodate NPA by
> splitting the driver into two parts: Shell and Plugin. The new split driver is
>
So the Shell would be the reworked or new bond driver, and Plugins would
be ordinary Linux network drivers.
--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.
next prev parent reply other threads:[~2010-05-05 17:59 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-04 23:02 RFC: Network Plugin Architecture (NPA) for vmxnet3 Pankaj Thakkar
2010-05-05 0:05 ` Stephen Hemminger
2010-05-05 0:18 ` Pankaj Thakkar
2010-05-05 0:32 ` David Miller
2010-05-05 0:38 ` Pankaj Thakkar
2010-05-05 2:44 ` Stephen Hemminger
2010-05-05 0:58 ` Chris Wright
2010-05-05 19:00 ` Pankaj Thakkar
2010-05-05 17:23 ` Christoph Hellwig
2010-05-05 17:29 ` [Pv-drivers] " Dmitry Torokhov
2010-05-05 17:31 ` Christoph Hellwig
2010-05-05 17:35 ` Dmitry Torokhov
2010-05-05 17:39 ` Christoph Hellwig
2010-05-05 17:47 ` Pankaj Thakkar
2010-05-05 20:09 ` Arnd Bergmann
2010-05-05 20:36 ` Dmitry Torokhov
2010-05-05 21:53 ` Arnd Bergmann
2010-05-05 22:05 ` Shreyas Bhatewara
2010-05-06 2:03 ` Scott Feldman
2010-05-06 7:25 ` Shreyas Bhatewara
2010-05-06 7:25 ` Shreyas Bhatewara
2010-05-06 8:19 ` Gleb Natapov
2010-05-06 18:04 ` Pankaj Thakkar
2010-05-06 20:19 ` Christoph Hellwig
2010-05-06 20:17 ` Christoph Hellwig
2010-05-05 17:52 ` Stephen Hemminger
2010-05-06 20:21 ` Christoph Hellwig
2010-07-13 3:06 ` Shreyas Bhatewara
2010-07-13 5:16 ` Stephen Hemminger
2010-07-14 0:31 ` Stephen Hemminger
2010-07-14 9:49 ` Greg KH
2010-07-14 17:18 ` Pankaj Thakkar
2010-07-14 17:54 ` David Miller
2010-07-14 18:03 ` Jeremy Fitzhardinge
2010-07-14 20:20 ` Greg KH
2010-07-14 17:19 ` Shreyas Bhatewara
2010-07-14 20:42 ` Shreyas Bhatewara
2010-07-14 21:06 ` Greg KH
2010-05-05 17:59 ` Avi Kivity [this message]
2010-05-05 19:44 ` Pankaj Thakkar
2010-05-06 8:58 ` Avi Kivity
2010-05-10 20:46 ` Pankaj Thakkar
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=4BE1B217.80600@redhat.com \
--to=avi@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pthakkar@vmware.com \
--cc=pv-drivers@vmware.com \
--cc=sbhatewara@vmware.com \
--cc=virtualization@lists.linux-foundation.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).