lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
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