From: Stephen Hemminger <stephen@networkplumber.org>
To: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Cc: Ferruh Yigit <ferruh.yigit@intel.com>, dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH v2 0/5] Introduce virtual PMD for Hyper-V/Azure platforms
Date: Fri, 22 Dec 2017 18:06:58 -0800 [thread overview]
Message-ID: <CAOaVG17BfgrEhU3aDfC1T+WSSiUm5=DfM3-HaK-4FTK4KGyH3w@mail.gmail.com> (raw)
In-Reply-To: <20171222173846.20731-1-adrien.mazarguil@6wind.com>
Why does this need to be a PMD?
Maybe we need some platform infrastructure?
My definition of PMD is it can send and receive
On Dec 22, 2017 10:01, "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 "vdev_netvsc" 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 +---------+ vdev_netvsc 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
> vdev_netvsc 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_vdev_netvsc 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
>
> v2 changes:
>
> - Renamed driver from "hyperv" to "vdev_netvsc". This change covers
> documentation and symbols prefix.
> - Driver is now tagged EXPERIMENTAL.
> - Replaced ether_addr_from_str() with a basic sscanf() call.
> - Removed debugging code (memset() poisoning).
> - Fixed hyperv_iface_is_netvsc()'s buffer allocation according to comments.
> - Removed hyperv_basename().
> - Discarded unused variables through __rte_unused.
> - Added separate but necessary free() bugfix for failsafe PMD.
> - Added file descriptor input support to failsafe PMD.
> - Replaced temporary bash execution; failsafe now reads device definitions
> directly through a pipe without an intermediate bash one-liner.
> - Expanded DEBUG/INFO/WARN/ERROR() macros as PMD_DRV_LOG().
> - Added dynamic log type (pmd.vdev_netvsc).
> - Modified initialization code to probe devices immediately during startup.
> - Fixed several snprintf() return value checks ("ret >= sizeof(foo)" is
> more
> appropriate than "ret >= sizeof(foo) - 1").
>
> Adrien Mazarguil (5):
> net/failsafe: fix invalid free
> net/failsafe: add "fd" parameter
> net/vdev_netvsc: introduce Hyper-V platform driver
> net/vdev_netvsc: implement core functionality
> net/vdev_netvsc: add "force" parameter
>
> MAINTAINERS | 6 +
> config/common_base | 5 +
> config/common_linuxapp | 1 +
> doc/guides/nics/fail_safe.rst | 9 +
> doc/guides/nics/features/vdev_netvsc.ini | 12 +
> doc/guides/nics/index.rst | 1 +
> doc/guides/nics/vdev_netvsc.rst | 116 +++
> drivers/net/Makefile | 1 +
> drivers/net/failsafe/failsafe_args.c | 88 ++-
> drivers/net/failsafe/failsafe_private.h | 3 +
> drivers/net/vdev_netvsc/Makefile | 58 ++
> .../vdev_netvsc/rte_pmd_vdev_netvsc_version.map | 4 +
> drivers/net/vdev_netvsc/vdev_netvsc.c | 722 +++++++++++++++++++
> mk/rte.app.mk | 1 +
> 14 files changed, 1025 insertions(+), 2 deletions(-)
> create mode 100644 doc/guides/nics/features/vdev_netvsc.ini
> create mode 100644 doc/guides/nics/vdev_netvsc.rst
> create mode 100644 drivers/net/vdev_netvsc/Makefile
> create mode 100644 drivers/net/vdev_netvsc/rte_
> pmd_vdev_netvsc_version.map
> create mode 100644 drivers/net/vdev_netvsc/vdev_netvsc.c
>
> --
> 2.11.0
>
next prev parent reply other threads:[~2017-12-23 2:07 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
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 ` Stephen Hemminger [this message]
2017-12-23 14:28 ` [dpdk-dev] [PATCH v2 0/5] Introduce virtual PMD for Hyper-V/Azure platforms 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='CAOaVG17BfgrEhU3aDfC1T+WSSiUm5=DfM3-HaK-4FTK4KGyH3w@mail.gmail.com' \
--to=stephen@networkplumber.org \
--cc=adrien.mazarguil@6wind.com \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@intel.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 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).