DPDK patches and discussions
 help / color / mirror / Atom feed
From: Stephen Hemminger <stephen@networkplumber.org>
To: Jerin Jacob <jerinjacobk@gmail.com>
Cc: Andrzej Ostruszka <aostruszka@marvell.com>, dpdk-dev <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH 0/4] Introduce IF proxy library
Date: Thu, 16 Apr 2020 10:04:33 -0700	[thread overview]
Message-ID: <20200416100433.742b82eb@hermes.lan> (raw)
In-Reply-To: <CALBAE1NKKbpE=SAFkCRuAxKrGa877pAVz3SfSpUD-ce5e=bD5w@mail.gmail.com>

On Thu, 16 Apr 2020 22:19:05 +0530
Jerin Jacob <jerinjacobk@gmail.com> wrote:

> On Thu, Apr 16, 2020 at 9:41 PM Stephen Hemminger
> <stephen@networkplumber.org> wrote:
> >
> > On Fri, 6 Mar 2020 17:41:00 +0100
> > Andrzej Ostruszka <aostruszka@marvell.com> wrote:
> >  
> > > What is this useful for
> > > =======================
> > >
> > > Usually, when an ethernet port is assigned to DPDK it vanishes from the
> > > system and user looses ability to control it via normal configuration
> > > utilities (e.g. those from iproute2 package).  Moreover by default DPDK
> > > application is not aware of the network configuration of the system.
> > >
> > > To address both of these issues application needs to:
> > > - add some command line interface (or other mechanism) allowing for
> > >   control of the port and its configuration
> > > - query the status of network configuration and monitor its changes
> > >
> > > The purpose of this library is to help with both of these tasks (as long
> > > as they remain in domain of configuration available to the system).  In
> > > other words, if DPDK application has some special needs, that cannot be
> > > addressed by the normal system configuration utilities, then they need
> > > to be solved by the application itself.
> > >
> > > The connection between DPDK and system is based on the existence of
> > > ports that are visible to both DPDK and system (like Tap, KNI and
> > > possibly some other drivers).  These ports serve as an interface
> > > proxies.
> > >
> > > Let's visualize the action of the library by the following example:
> > >
> > >               Linux             |            DPDK
> > > ==============================================================
> > >                                 |
> > >                                 |   +-------+       +-------+
> > >                                 |   | Port1 |       | Port2 |
> > > "ip link set dev tap1 mtu 1600" |   +-------+       +-------+
> > >                           |     |       ^              ^ ^
> > >                           |  +------+   | mtu_change   | |
> > >                           `->| Tap1 |---' callback     | |
> > >                              +------+                  | |
> > > "ip addr add 198.51.100.14 \    |                      | |
> > >                   dev tap2"     |                      | |
> > >                           |  +------+                  | |
> > >                           +->| Tap2 |------------------' |
> > >                           |  +------+  addr_add callback |
> > > "ip route add 198.0.2.0/24 \    |  |                     |
> > >                   dev tap2"     |  | route_add callback  |
> > >                                 |  `---------------------'  
> >
> > Has anyone investigated solving this in the kernel rather than
> > creating the added overhead of more Linux devices?
> >
> > What I am thinking of is a netlink to userspace interface.
> > The kernel already has File-System-in-Userspace (FUSE) to allow
> > for filesystems. What about having a NUSE (Netlink in userspace)?  
> 
> IMO, there is no issue with the Linux Netlink _userspace_ interface.
> The goal of IF proxy to abstract the OS differences so that it can
> work with Linux, FreeBSD, and Windows(if needed).
> 
> 
> >
> > Then DPDK could have a daemon that is a provider to NUSE.
> > This solution would also benefit other non-DPDK projects like VPP
> > and allow DPDK to integrate with devlink etc.  

With the wider use of tap devices like this, it may be a problem
for other usages of TAP. If nothing else, having to figure out which
tap is which would be error prone.

Also, TAP on Windows is only available as an out-of-tree driver
from OpenVPN. And the TAP on Windows is quite, limited, deprecated,
poorly supported and buggy. There is no standard TAP like interface
in Windows.

TAP on BSD is different than Linux and has different control functions.
Don't remember what the interface notification mechanism is on BSD,
it is not netlink.

So is IF proxy even going to work on these other OS?




  reply	other threads:[~2020-04-16 17:04 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-06 16:41 Andrzej Ostruszka
2020-03-06 16:41 ` [dpdk-dev] [PATCH 1/4] lib: introduce IF Proxy library Andrzej Ostruszka
2020-03-31 12:36   ` Harman Kalra
2020-03-31 15:37     ` Andrzej Ostruszka [C]
2020-04-01  5:29   ` Varghese, Vipin
2020-04-01 20:08     ` Andrzej Ostruszka [C]
2020-04-08  3:04       ` Varghese, Vipin
2020-04-08 18:13         ` Andrzej Ostruszka [C]
2020-03-06 16:41 ` [dpdk-dev] [PATCH 2/4] if_proxy: add library documentation Andrzej Ostruszka
2020-03-06 16:41 ` [dpdk-dev] [PATCH 3/4] if_proxy: add simple functionality test Andrzej Ostruszka
2020-03-06 16:41 ` [dpdk-dev] [PATCH 4/4] if_proxy: add example application Andrzej Ostruszka
2020-03-06 17:17 ` [dpdk-dev] [PATCH 0/4] Introduce IF proxy library Andrzej Ostruszka
2020-03-10 11:10 ` [dpdk-dev] [PATCH v2 " Andrzej Ostruszka
2020-03-10 11:10   ` [dpdk-dev] [PATCH v2 1/4] lib: introduce IF Proxy library Andrzej Ostruszka
2020-07-02  0:34     ` Stephen Hemminger
2020-07-07 20:13       ` Andrzej Ostruszka [C]
2020-07-08 16:07         ` Morten Brørup
2020-07-09  8:43           ` Andrzej Ostruszka [C]
2020-07-22  0:40             ` Thomas Monjalon
2020-07-22  8:45               ` Jerin Jacob
2020-07-22  8:56                 ` Thomas Monjalon
2020-07-22  9:09                   ` Jerin Jacob
2020-07-22  9:27                     ` Thomas Monjalon
2020-07-22  9:54                       ` Jerin Jacob
2020-07-23 14:09                         ` [dpdk-dev] [EXT] " Andrzej Ostruszka [C]
2020-03-10 11:10   ` [dpdk-dev] [PATCH v2 2/4] if_proxy: add library documentation Andrzej Ostruszka
2020-03-10 11:10   ` [dpdk-dev] [PATCH v2 3/4] if_proxy: add simple functionality test Andrzej Ostruszka
2020-03-10 11:10   ` [dpdk-dev] [PATCH v2 4/4] if_proxy: add example application Andrzej Ostruszka
2020-03-25  8:08   ` [dpdk-dev] [PATCH v2 0/4] Introduce IF proxy library David Marchand
2020-03-25 11:11     ` Morten Brørup
2020-03-26 17:42       ` Andrzej Ostruszka
2020-04-02 13:48         ` Andrzej Ostruszka [C]
2020-04-03 17:19           ` Thomas Monjalon
2020-04-03 19:09             ` Jerin Jacob
2020-04-03 21:18               ` Morten Brørup
2020-04-03 21:57                 ` Thomas Monjalon
2020-04-04 10:18                   ` Jerin Jacob
2020-04-10 10:41                     ` Morten Brørup
2020-04-04 18:30             ` Andrzej Ostruszka [C]
2020-04-04 19:58               ` Thomas Monjalon
2020-04-10 10:03                 ` Morten Brørup
2020-04-10 12:28                   ` Jerin Jacob
2020-03-26 12:41     ` Andrzej Ostruszka
2020-03-30 19:23       ` Andrzej Ostruszka
2020-04-03 21:42   ` Thomas Monjalon
2020-04-04 18:07     ` Andrzej Ostruszka [C]
2020-04-04 19:51       ` Thomas Monjalon
2020-04-16 16:11 ` [dpdk-dev] [PATCH " Stephen Hemminger
2020-04-16 16:49   ` Jerin Jacob
2020-04-16 17:04     ` Stephen Hemminger [this message]
2020-04-16 17:26       ` Andrzej Ostruszka [C]
2020-04-16 17:27       ` Jerin Jacob
2020-04-16 17:12     ` Andrzej Ostruszka [C]
2020-04-16 17:19       ` Stephen Hemminger
2020-05-04  8:53 ` [dpdk-dev] [PATCH v3 " Andrzej Ostruszka
2020-05-04  8:53   ` [dpdk-dev] [PATCH v3 1/4] lib: introduce IF Proxy library Andrzej Ostruszka
2020-05-04  8:53   ` [dpdk-dev] [PATCH v3 2/4] if_proxy: add library documentation Andrzej Ostruszka
2020-05-04  8:53   ` [dpdk-dev] [PATCH v3 3/4] if_proxy: add simple functionality test Andrzej Ostruszka
2020-05-04  8:53   ` [dpdk-dev] [PATCH v3 4/4] if_proxy: add example application Andrzej Ostruszka
2020-06-22  9:21 ` [dpdk-dev] [PATCH v4 0/4] Introduce IF proxy library Andrzej Ostruszka
2020-06-22  9:21   ` [dpdk-dev] [PATCH v4 1/4] lib: introduce IF Proxy library Andrzej Ostruszka
2020-06-22  9:21   ` [dpdk-dev] [PATCH v4 2/4] if_proxy: add library documentation Andrzej Ostruszka
2020-06-22  9:21   ` [dpdk-dev] [PATCH v4 3/4] if_proxy: add simple functionality test Andrzej Ostruszka
2020-06-22  9:21   ` [dpdk-dev] [PATCH v4 4/4] if_proxy: add example application Andrzej Ostruszka

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=20200416100433.742b82eb@hermes.lan \
    --to=stephen@networkplumber.org \
    --cc=aostruszka@marvell.com \
    --cc=dev@dpdk.org \
    --cc=jerinjacobk@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 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).