New L2TP kernel drivers have been merged upstream and should be available from mainline kernel releases from 2.6.35. Below is a summary of the changes.
Code:
This patch series adds L2TPv3 support. It splits the existing pppol2tp
driver to separate its L2TP and PPP parts, then adds new L2TPv3
functionality. The patches implement a new socket family for L2TPv3 IP
encapsulation, expose virtual netdevices for each L2TPv3 ethernet
pseudowire and add a netlink interface.
The following drivers are provided:-
l2tp_core - L2TP driver core. Always required.
l2tp_ppp - L2TP PPP (PPPoL2TP). L2TPv2 and L2TPv3.
l2tp_eth - L2TPv3 ethernet pseudowire.
l2tp_ip - L2TPv3 IP encapsulation.
l2tp_netlink - L2TPv3 netlink API.
l2tp_debugfs - L2TP debugfs files.
The combination of l2tp_core and l2tp_ppp provides
backwards-compatible L2TPv2 pppol2tp functionality. Userspace L2TPv2
applications using the existing pppol2tp driver should not need to
change.
The implementation is as I described in a previous posting to netdev,
archived at
http://marc.info/?l=linux-netdev&m=120845482320143&w=4. Unfortunately,
splitting the existing pppol2tp driver into l2tp_core and l2tp_ppp
makes the changes difficult to review. The split is needed to separate
PPP from L2TP, since in L2TPv3, protocols other than PPP can be
carried. I have organised the patches so that the split is done first,
with new features added in separate patches.
Relevant RFCs are:-
- http://www.ietf.org/rfc/rfc3931.txt (L2TPv3)
- http://www.ietf.org/rfc/rfc4719.txt (L2TPv3 ethernet pseudowire)
A patchset is available to iproute2 which adds a number of commands
for unmanaged L2TPv3 tunnels. This will be submitted separately.
TODO:-
- Add L2TP tunnel switching.
- Add IP pseudowires. These carry only IP frames (no L2 header).
- Add VLAN pseudowires.
- Add ATM pseudowires - RFC3355 and RFC4454.
The main change affecting users of the old pppol2tp driver is the splitting of that driver to separate the L2TP and PPP parts. If the driver was loaded with
Code:
modprobe pppol2tp
it should now be loaded with
Code:
modprobe l2tp_ppp
or
Code:
insmod l2tp_core.ko
insmod l2tp_ppp.ko
before starting openl2tpd.
This change is already handled by the openl2tp-1.7 startup scripts.
To try out the new drivers before 2.6.35 is released, you can checkout the Linux netdev kernel development source tree.
Code:
git clone git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6.git
The original patches are available at
http://marc.info/?l=linux-netdev&m=127022509620463&w=1If you encounter problems with the new drivers, please post info here.