Talk: "Kernel-level GTP (Generic Tunneling Protocol) implementation" (Harald Welte & Andreas Schultz)


When users access the Internet via cellular networks from their mobile devices, all this traffic is encapsulated and tunneled through a variety of cellular-network specific protocol layers. Many of those protocol implementations run on proprietary special-purpose hardware and software.

One protocol has been in use between certain network elements ever since the advent of GPRS services. This protocol remained in use with EDGE, UMTS, HSPA and is even still in use in LTE: The GPRS Tunneling Protocol (GTP).

GTP is split in a control plane and a user plane. The user plane at todays cellular internet speeds can no longer be implemented efficiently in userspace but requires a kernel-level implementation, much the same like we have kernel-level implementations for GRE, IPIP, PPP, L2TP and others.

This presentation is about a Linux kernel level implementation of GTP-U that was started by Harald Welte and Pablo Neira within the Osmocom (Open Source Mobile Communications, project.

After being abandoned for some time, recent interest (and contributions, particularly by Andreas Schultz) to this kernel GTP code has brought it back on track, and its authors aim for Linux kernel mainline inclusion.

We will also cover some context in terms of where GTP is used in practise, and which programs are already using the kernel-level GTP code.