DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Andrzej Ostruszka [C]" <aostruszka@marvell.com>
To: Stephen Hemminger <stephen@networkplumber.org>,
	Jerin Jacob <jerinjacobk@gmail.com>
Cc: dpdk-dev <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH 0/4] Introduce IF proxy library
Date: Thu, 16 Apr 2020 17:26:49 +0000	[thread overview]
Message-ID: <d5740592-2d4c-6767-2aaa-43947f4d5202@marvell.com> (raw)
In-Reply-To: <20200416100433.742b82eb@hermes.lan>

On 4/16/20 7:04 PM, Stephen Hemminger wrote:
> 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:
[...]
>>> 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.

Stephen, the library does not require TAP - only some DPDK port that is
visible to the system (has non-zero if_index).  As to the confusion - if
we use TAP then it has optional 'iface=...' argument, so we can name
those proxy interfaces as 'iface=proxy0' or something like that.  This
is under control of application (just call ...create_by_devarg() with
proper argument).

> 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?

No.  At the moment only Linux is supported.  I don't know much about
Windows, it would need some TAP-like driver and implementation would
probably make use of "IP Helper" library (some extra thread doing
polling?).  As for FreeBSD I'm convinced that very similar
implementation is possible by using PF_ROUTE sockets.

What the library does to help with other platforms is that it defines
following structure:

/* Every implementation should provide definition of this structure:
 * - init : called during library initialization (NULL when not needed)
 * - events : this should return bitmask of supported events (can be
 *     NULL if all defined events are supported by the implementation)
 * - listen : this function should start service listening to the
 *     network configuration events/changes,
 * - close : this function should close the service started by listen()
 * - get_info : this function should query system for current
 *     configuration of interface with index 'if_index'.  After
 *     successful initialization of listening service this function is
 *     called with 0 as an argument.  In that case configuration of all
 *     ports should be obtained - and when this procedure completes a
 *     RTE_IFPX_CFG_DONE event should be signaled via
 *     ifpx_notify_event().
 */
extern
struct ifpx_platform_callbacks {
	void (*init)(void);
	uint64_t (*events)(void);
	int (*listen)(void);
	int (*close)(void);
	void (*get_info)(int if_index);
} ifpx_platform;

With regards
Andrzej Ostruszka

  reply	other threads:[~2020-04-16 17:26 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
2020-04-16 17:26       ` Andrzej Ostruszka [C] [this message]
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=d5740592-2d4c-6767-2aaa-43947f4d5202@marvell.com \
    --to=aostruszka@marvell.com \
    --cc=dev@dpdk.org \
    --cc=jerinjacobk@gmail.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).