DPDK patches and discussions
 help / color / mirror / Atom feed
From: Adrien Mazarguil <adrien.mazarguil@6wind.com>
To: Stephen Hemminger <stephen@networkplumber.org>
Cc: Ferruh Yigit <ferruh.yigit@intel.com>, dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH v1 0/3] Introduce virtual PMD for Hyper-V/Azure platforms
Date: Mon, 18 Dec 2017 21:21:23 +0100	[thread overview]
Message-ID: <20171218202123.GD4062@6wind.com> (raw)
In-Reply-To: <20171218102304.66b2e98d@xeon-e3>

On Mon, Dec 18, 2017 at 10:23:04AM -0800, Stephen Hemminger wrote:
> On Mon, 18 Dec 2017 17:46:19 +0100
> Adrien Mazarguil <adrien.mazarguil@6wind.com> wrote:
> 
> > Virtual machines hosted by Hyper-V/Azure platforms are fitted with
> > simplified virtual network devices named NetVSC that are used for fast
> > communication between VM to VM, VM to hypervisor, and the outside.
> > 
> > They appear as standard system netdevices to user-land applications, the
> > main difference being they are implemented on top of VMBUS [1] instead of
> > emulated PCI devices.
> > 
> > While this reads like a case for a standard DPDK PMD, there is more to it.
> > 
> > To accelerate outside communication, NetVSC devices as they appear in a VM
> > can be paired with physical SR-IOV virtual function (VF) devices owned by
> > that same VM [2]. Both netdevices share the same MAC address in that case.
> > 
> > When paired, egress and most of the ingress traffic flow through the VF
> > device, while part of it (e.g. multicasts, hypervisor control data) still
> > flows through NetVSC. Moreover VF devices are not retained and disappear
> > during VM migration; from a VM standpoint, they can be hot-plugged anytime
> > with NetVSC acting as a fallback.
> > 
> > Running DPDK applications in such a context involves driving VF devices
> > using their dedicated PMDs in a vendor-independent fashion (to benefit from
> > maximum performance without writing dedicated code) while simultaneously
> > listening to NetVSC and handling the related hot-plug events.
> > 
> > This new virtual PMD (referred to as "hyperv" from this point on)
> > automatically coordinates the Hyper-V/Azure-specific management part
> > described above by relying on vendor-specific, failsafe and tap PMDs to
> > expose a single consolidated Ethernet device usable directly by existing
> > applications.
> > 
> >          .------------------.
> >          | DPDK application |
> >          `--------+---------'
> >                   |
> >            .------+------.
> >            | DPDK ethdev |
> >            `------+------'       Control
> >                   |                 |
> >      .------------+------------.    v    .------------.
> >      |       failsafe PMD      +---------+ hyperv PMD |
> >      `--+-------------------+--'         `------------'
> >         |                   |
> >         |          .........|.........
> >         |          :        |        :
> >    .----+----.     :   .----+----.   :
> >    | tap PMD |     :   | any PMD |   :
> >    `----+----'     :   `----+----'   : <-- Hot-pluggable
> >         |          :        |        :
> >  .------+-------.  :  .-----+-----.  :
> >  | NetVSC-based |  :  | SR-IOV VF |  :
> >  |   netdevice  |  :  |   device  |  :
> >  `--------------'  :  `-----------'  :
> >                    :.................:
> > 
> > Note this diagram differs from that of the original RFC [3], with hyperv no
> > longer acting as a data plane layer.
> > 
> > This initial version of the driver only works in whitelist mode. Users have
> > to provide the --vdev net_hyperv EAL option at least once to trigger it.
> > 
> > Subsequent work will add support for blacklist mode based on automatic
> > detection of the host environment.
> > 
> > [1] http://dpdk.org/ml/archives/dev/2017-January/054165.html
> > [2] https://docs.microsoft.com/en-us/windows-hardware/drivers/network/overview-of-hyper-v
> > [3] http://dpdk.org/ml/archives/dev/2017-November/082339.html
> > 
> > Adrien Mazarguil (3):
> >   net/hyperv: introduce MS Hyper-V platform driver
> >   net/hyperv: implement core functionality
> >   net/hyperv: add "force" parameter
> > 
> >  MAINTAINERS                                   |   6 +
> >  config/common_base                            |   6 +
> >  config/common_linuxapp                        |   1 +
> >  doc/guides/nics/features/hyperv.ini           |  12 +
> >  doc/guides/nics/hyperv.rst                    | 119 +++
> >  doc/guides/nics/index.rst                     |   1 +
> >  drivers/net/Makefile                          |   1 +
> >  drivers/net/hyperv/Makefile                   |  58 ++
> >  drivers/net/hyperv/hyperv.c                   | 799 +++++++++++++++++++++
> >  drivers/net/hyperv/rte_pmd_hyperv_version.map |   4 +
> >  mk/rte.app.mk                                 |   1 +
> >  11 files changed, 1008 insertions(+)
> >  create mode 100644 doc/guides/nics/features/hyperv.ini
> >  create mode 100644 doc/guides/nics/hyperv.rst
> >  create mode 100644 drivers/net/hyperv/Makefile
> >  create mode 100644 drivers/net/hyperv/hyperv.c
> >  create mode 100644 drivers/net/hyperv/rte_pmd_hyperv_version.map
> > 
> 
> Please don't call this drivers/net/hyperv/
> that name conflicts with the real netvsc PMD that I am working on.
> 
> Maybe vdev-netvsc?

No problem with that, if vdev-netvsc is good for you, I can update it in v2
if needed.

I'm just curious, I was under the impression both drivers would remain kind
of complementary pending various API updates, in which case wouldn't it make
sense to use "netvsc" as the better name for the NetVSC PMD? ("hyperv" being
more a use case than a true PMD)

Otherwise I also don't mind overwriting the current "hyperv" PMD code base
with yours as soon as it's ready, this will most likely make it redundant
anyway.

-- 
Adrien Mazarguil
6WIND

  parent reply	other threads:[~2017-12-18 20:21 UTC|newest]

Thread overview: 112+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20171124160801.GU4062@6wind.com>
     [not found] ` <20171124164812.GV4062@6wind.com>
2017-11-24 17:21   ` [dpdk-dev] [RFC] " Adrien Mazarguil
2017-12-18 16:46     ` [dpdk-dev] [PATCH v1 0/3] " Adrien Mazarguil
2017-12-18 16:46       ` [dpdk-dev] [PATCH v1 1/3] net/hyperv: introduce MS Hyper-V platform driver Adrien Mazarguil
2017-12-18 18:28         ` Stephen Hemminger
2017-12-18 19:54           ` Thomas Monjalon
2017-12-18 21:17             ` Stephen Hemminger
2017-12-19 10:01               ` Adrien Mazarguil
2017-12-19 11:15                 ` Thomas Monjalon
2017-12-19 13:13                   ` Adrien Mazarguil
2017-12-18 16:46       ` [dpdk-dev] [PATCH v1 2/3] net/hyperv: implement core functionality Adrien Mazarguil
2017-12-18 17:04         ` Wiles, Keith
2017-12-18 17:59           ` Adrien Mazarguil
2017-12-18 18:43             ` Wiles, Keith
2017-12-19  8:25               ` Nelio Laranjeiro
2017-12-18 18:26         ` Stephen Hemminger
2017-12-18 20:21           ` Adrien Mazarguil
2017-12-18 21:03             ` Thomas Monjalon
2017-12-18 21:19               ` Stephen Hemminger
2017-12-18 18:34         ` Stephen Hemminger
2017-12-18 20:23           ` Adrien Mazarguil
2017-12-19  9:53             ` Bruce Richardson
2017-12-19 10:15               ` Adrien Mazarguil
2017-12-19 15:31                 ` Stephen Hemminger
2017-12-18 23:59         ` Stephen Hemminger
2017-12-19 10:01           ` Adrien Mazarguil
2017-12-19 15:37             ` Stephen Hemminger
2017-12-19  1:54         ` Ferruh Yigit
2017-12-19 15:06           ` Adrien Mazarguil
2017-12-19 20:44             ` Ferruh Yigit
2017-12-20 14:13               ` Thomas Monjalon
2017-12-21 16:19               ` Adrien Mazarguil
2017-12-18 16:46       ` [dpdk-dev] [PATCH v1 3/3] net/hyperv: add "force" parameter Adrien Mazarguil
2017-12-18 18:23       ` [dpdk-dev] [PATCH v1 0/3] Introduce virtual PMD for Hyper-V/Azure platforms Stephen Hemminger
2017-12-18 20:13         ` Thomas Monjalon
2017-12-19  0:40           ` Stephen Hemminger
2017-12-18 20:21         ` Adrien Mazarguil [this message]
2017-12-22 18:01       ` [dpdk-dev] [PATCH v2 0/5] " Adrien Mazarguil
2017-12-22 18:01         ` [dpdk-dev] [PATCH v2 1/5] net/failsafe: fix invalid free Adrien Mazarguil
2017-12-22 18:01         ` [dpdk-dev] [PATCH v2 2/5] net/failsafe: add "fd" parameter Adrien Mazarguil
2017-12-22 18:01         ` [dpdk-dev] [PATCH v2 3/5] net/vdev_netvsc: introduce Hyper-V platform driver Adrien Mazarguil
2017-12-22 18:01         ` [dpdk-dev] [PATCH v2 4/5] net/vdev_netvsc: implement core functionality Adrien Mazarguil
2017-12-22 18:01         ` [dpdk-dev] [PATCH v2 5/5] net/vdev_netvsc: add "force" parameter Adrien Mazarguil
2017-12-23  2:06         ` [dpdk-dev] [PATCH v2 0/5] Introduce virtual PMD for Hyper-V/Azure platforms Stephen Hemminger
2017-12-23 14:28           ` Thomas Monjalon
2018-01-09 14:47         ` [dpdk-dev] [PATCH v3 0/8] Introduce virtual driver " Matan Azrad
2018-01-09 14:47           ` [dpdk-dev] [PATCH v3 1/8] net/failsafe: fix invalid free Matan Azrad
2018-01-16 10:24             ` Gaëtan Rivet
2018-01-09 14:47           ` [dpdk-dev] [PATCH v3 2/8] net/failsafe: add "fd" parameter Matan Azrad
2018-01-16 10:54             ` Gaëtan Rivet
2018-01-16 11:19               ` Gaëtan Rivet
2018-01-16 16:17                 ` Matan Azrad
2018-01-09 14:47           ` [dpdk-dev] [PATCH v3 3/8] net/failsafe: support probed sub-devices getting Matan Azrad
2018-01-16 11:09             ` Gaëtan Rivet
2018-01-16 12:27               ` Matan Azrad
2018-01-16 14:40                 ` Gaëtan Rivet
2018-01-16 16:15                   ` Matan Azrad
2018-01-16 16:54                     ` Gaëtan Rivet
2018-01-16 17:20                       ` Matan Azrad
2018-01-16 22:31                         ` Gaëtan Rivet
2018-01-17  8:40                           ` Matan Azrad
2018-01-09 14:47           ` [dpdk-dev] [PATCH v3 4/8] net/vdev_netvsc: introduce Hyper-V platform driver Matan Azrad
2018-01-09 14:47           ` [dpdk-dev] [PATCH v3 5/8] net/vdev_netvsc: implement core functionality Matan Azrad
2018-01-09 18:49             ` Stephen Hemminger
2018-01-10 15:02               ` Matan Azrad
2018-01-17 16:51                 ` Thomas Monjalon
2018-01-09 14:47           ` [dpdk-dev] [PATCH v3 6/8] net/vdev_netvsc: skip routed netvsc probing Matan Azrad
2018-01-09 18:51             ` Stephen Hemminger
2018-01-10 15:07               ` Matan Azrad
2018-01-10 16:43                 ` Stephen Hemminger
2018-01-11  9:00                   ` Matan Azrad
2018-01-17 16:59                     ` Thomas Monjalon
2018-01-09 14:47           ` [dpdk-dev] [PATCH v3 7/8] net/vdev_netvsc: add "force" parameter Matan Azrad
2018-01-09 14:47           ` [dpdk-dev] [PATCH v3 8/8] net/vdev_netvsc: add automatic probing Matan Azrad
2018-01-18  8:43           ` [dpdk-dev] [PATCH v4 0/8] Introduce virtual driver for Hyper-V/Azure platforms Matan Azrad
2018-01-18  8:43             ` [dpdk-dev] [PATCH v4 1/8] net/failsafe: fix invalid free Matan Azrad
2018-01-18  8:43             ` [dpdk-dev] [PATCH v4 2/8] net/failsafe: add "fd" parameter Matan Azrad
2018-01-18  8:51               ` Gaëtan Rivet
2018-01-18  8:43             ` [dpdk-dev] [PATCH v4 3/8] net/failsafe: add probed etherdev capture Matan Azrad
2018-01-18  9:10               ` Gaëtan Rivet
2018-01-18  9:33                 ` Matan Azrad
2018-01-18  8:43             ` [dpdk-dev] [PATCH v4 4/8] net/vdev_netvsc: introduce Hyper-V platform driver Matan Azrad
2018-01-18  8:43             ` [dpdk-dev] [PATCH v4 5/8] net/vdev_netvsc: implement core functionality Matan Azrad
2018-01-18 18:25               ` Stephen Hemminger
2018-01-18 18:28                 ` Matan Azrad
2018-01-18  8:43             ` [dpdk-dev] [PATCH v4 6/8] net/vdev_netvsc: skip routed netvsc probing Matan Azrad
2018-01-18 18:26               ` Stephen Hemminger
2018-01-18 18:47                 ` Thomas Monjalon
2018-01-18  8:43             ` [dpdk-dev] [PATCH v4 7/8] net/vdev_netvsc: add "force" parameter Matan Azrad
2018-01-18 18:27               ` Stephen Hemminger
2018-01-18 18:30                 ` Matan Azrad
2018-01-18  8:43             ` [dpdk-dev] [PATCH v4 8/8] net/vdev_netvsc: add automatic probing Matan Azrad
2018-01-18 10:01             ` [dpdk-dev] [PATCH v5 0/8] Introduce virtual driver for Hyper-V/Azure platforms Matan Azrad
2018-01-18 10:01               ` [dpdk-dev] [PATCH v5 1/8] net/failsafe: fix invalid free Matan Azrad
2018-01-18 10:01               ` [dpdk-dev] [PATCH v5 2/8] net/failsafe: add "fd" parameter Matan Azrad
2018-01-18 10:01               ` [dpdk-dev] [PATCH v5 3/8] net/failsafe: add probed etherdev capture Matan Azrad
2018-01-18 10:08                 ` Gaëtan Rivet
2018-01-18 10:01               ` [dpdk-dev] [PATCH v5 4/8] net/vdev_netvsc: introduce Hyper-V platform driver Matan Azrad
2018-01-18 10:01               ` [dpdk-dev] [PATCH v5 5/8] net/vdev_netvsc: implement core functionality Matan Azrad
2018-01-18 10:01               ` [dpdk-dev] [PATCH v5 6/8] net/vdev_netvsc: skip routed netvsc probing Matan Azrad
2018-01-18 10:01               ` [dpdk-dev] [PATCH v5 7/8] net/vdev_netvsc: add "force" parameter Matan Azrad
2018-01-18 10:01               ` [dpdk-dev] [PATCH v5 8/8] net/vdev_netvsc: add automatic probing Matan Azrad
2018-01-18 13:51               ` [dpdk-dev] [PATCH v6 0/8] Introduce virtual driver for Hyper-V/Azure platforms Matan Azrad
2018-01-18 13:51                 ` [dpdk-dev] [PATCH v6 1/8] net/failsafe: fix invalid free Matan Azrad
2018-01-18 13:51                 ` [dpdk-dev] [PATCH v6 2/8] net/failsafe: add "fd" parameter Matan Azrad
2018-01-18 13:51                 ` [dpdk-dev] [PATCH v6 3/8] net/failsafe: add probed etherdev capture Matan Azrad
2018-01-18 22:34                   ` Thomas Monjalon
2018-01-18 13:51                 ` [dpdk-dev] [PATCH v6 4/8] net/vdev_netvsc: introduce Hyper-V platform driver Matan Azrad
2018-01-18 13:51                 ` [dpdk-dev] [PATCH v6 5/8] net/vdev_netvsc: implement core functionality Matan Azrad
2018-01-18 13:51                 ` [dpdk-dev] [PATCH v6 6/8] net/vdev_netvsc: skip routed netvsc probing Matan Azrad
2018-01-18 13:51                 ` [dpdk-dev] [PATCH v6 7/8] net/vdev_netvsc: add "force" parameter Matan Azrad
2018-01-18 13:51                 ` [dpdk-dev] [PATCH v6 8/8] net/vdev_netvsc: add automatic probing Matan Azrad
2018-01-20  1:15                 ` [dpdk-dev] [PATCH v6 0/8] Introduce virtual driver for Hyper-V/Azure platforms Ferruh Yigit

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=20171218202123.GD4062@6wind.com \
    --to=adrien.mazarguil@6wind.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=stephen@networkplumber.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).