[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <34026662-1db6-c9b4-f523-e1a9cc869c80@katalix.com>
Date: Thu, 1 Oct 2020 09:59:26 +0100
From: James Chapman <jchapman@...alix.com>
To: Tom Parkin <tparkin@...alix.com>, netdev@...r.kernel.org
Subject: Re: [PATCH net-next 0/6] l2tp: add ac/pppoe driver
On 30/09/2020 22:07, Tom Parkin wrote:
> L2TPv2 tunnels are often used as a part of a home broadband connection,
> using a PPP link to connect the subscriber network into the Internet
> Service Provider's network.
>
> In this scenario, PPPoE is widely used between the L2TP Access
> Concentrator (LAC) and the subscriber. The LAC effectively acts as a
> PPPoE server, switching PPP frames from incoming PPPoE packets into an
> L2TP session. The PPP session is then terminated at the L2TP Network
> Server (LNS) on the edge of the ISP's IP network.
>
> This patchset adds a driver to the L2TP subsystem to support this mode
> of operation.
>
> The new driver, l2tp_ac_pppoe, adds support for the existing pseudowire
> type L2TP_PWTYPE_PPP_AC, and is instantiated using the existing L2TP
> netlink L2TP_CMD_SESSION_CREATE. It is expected to be used as follows:
>
> * A userspace PPPoE daemon running on the LAC handles the PPPoE
> discovery process up to the point of assigning a PPPoE session ID and
> sending the PADS packet to the PPPoE peer to establish the PPPoE
> session.
> * Userspace code running on the LAC then instantiates an L2TP tunnel
> and session with the LNS using the L2TP control protocol.
> * Finally, the data path for PPPoE session frames through the L2TP
> session to the LAC is instantiated by sending a genetlink
> L2TP_CMD_SESSION_CREATE command to the kernel, including
> the PPPoE-specific metadata required for L2TP_PWTYPE_PPP_AC sessions
> (this is documented in the patch series commit comments).
>
> Supporting this driver submission we have two examples of userspace
> projects which use L2TP_PWTYPE_PPP_AC:
>
> * https://github.com/katalix/l2tp-ktest
>
> This is a unit-test suite for the kernel L2TP subsystem which has
> been updated to include basic lifetime and datapath tests for
> l2tp_ac_pppoe.
>
> The new tests are automatically enabled when l2tp_ac_pppoe
> availability is detected, and hence support for l2tp_ac_pppoe is on
> the master branch of the git repository.
>
> * https://github.com/katalix/go-l2tp
>
> This is a Go library for building L2TP applications on Linux, and
> includes a suite of example daemons which utilise the library.
>
> The daemon kpppoed implements the PPPoE discovery protocol, and spawns
> an instance of a daemon kl2tpd which handles the L2TP control protocol
> and instantiates the kernel data path.
>
> The code utilising l2tp_ac_pppoe is on the branch tp_002_pppoe_1
> pending merge of this patchset in the kernel.
>
> Notes on the patchset itself:
>
> * Patches 1-4 lay groundwork for the addition of the new driver, making
> tweaks to the l2tp netlink code to allow l2tp_ac_pppoe to access the
> netlink attributes it requires.
> * Patch 5 adds the new driver itself and hooks it into the kernel
> configuration and build system.
> * Patch 6 updates the l2tp documentation under Documentation/ to
> include information about the new driver.
>
> Tom Parkin (6):
> l2tp: add netlink info to session create callback
> l2tp: tweak netlink session create to allow L2TPv2 ac_pppoe
> l2tp: allow v2 netlink session create to pass ifname attribute
> l2tp: add netlink attributes for ac_ppp session creation
> l2tp: add ac_pppoe pseudowire driver
> docs: networking: update l2tp.rst to document PPP_AC pseudowires
>
> Documentation/networking/l2tp.rst | 69 +++--
> include/uapi/linux/l2tp.h | 2 +
> net/l2tp/Kconfig | 7 +
> net/l2tp/Makefile | 1 +
> net/l2tp/l2tp_ac_pppoe.c | 446 ++++++++++++++++++++++++++++++
> net/l2tp/l2tp_core.h | 4 +-
> net/l2tp/l2tp_eth.c | 3 +-
> net/l2tp/l2tp_netlink.c | 20 +-
> net/l2tp/l2tp_ppp.c | 3 +-
> 9 files changed, 527 insertions(+), 28 deletions(-)
> create mode 100644 net/l2tp/l2tp_ac_pppoe.c
>
Reviewed-by: James Chapman <jchapman@...alix.com>
Powered by blists - more mailing lists