L2TP network protocol for Linux
L2TP network protocol
L2TP is a standard network protocol for tunnelling network traffic over public IP networks. You might be using it to connect to a workplace VPN. Or it might be being used without you realising, by ISPs and network operators to tunnel user data over IP network infrastructure. We developed the L2TP implementation for the Linux kernel and we now maintain it. You'll find our code in the Linux mainline kernel here.
From the start, we worked with the Linux kernel community to design the implementation such that the data path is handled entirely by the Linux kernel and the control aspects of the L2TP protocol, handling tunnel establishment for example, are implemented in a userspace daemon.
Alongside the network data path in the kernel, a new Linux userspace L2TP implementation was needed. We chose to use an event-driven model, well established in networking applications.
Applying our extensive Linux application and Linux kernel experience, we designed the L2TP implementation to maximise the benefits of Linux.
Our L2TP code was accepted and merged into the mainline Linux kernel in version 2.6.23 back in 2007. Since then, we have contributed several improvements such as adding L2TPv3 support in version 2.6.35. We continue to actively develop and maintain it today.
For the userspace control protocol component, we developed a userspace daemon for our client, which would later become OpenL2TP. We now sell a commercial version, ProL2TP to network equipment manufacturers and network operators.
While our choice of developing a kernel component to handle the network data path resulted in more initial development effort than a pure userspace implementation, our approach has been beneficial in the long run – data throughput is optimised and it is much more scalable. The separation of the network data path (Data Plane) from the control protocol (Control plane) is now becoming more important with new cloud-based network infrastructures and Software Defined Networking too.