doc/manuals: describe GTP-U kernel module

Related: OS#3209
Change-Id: Ib45cbfe03077960f216a83cf500ab3203d02cb3b
diff --git a/doc/manuals/chapters/running.adoc b/doc/manuals/chapters/running.adoc
index 51b8ae2..e3f6bbc 100644
--- a/doc/manuals/chapters/running.adoc
+++ b/doc/manuals/chapters/running.adoc
@@ -80,3 +80,47 @@
 ggsn ggsn0
  gtp bind-ip 127.0.0.2
 ----
+
+=== GTP-U kernel module
+
+WARNING: As of writing, the kernel module does not support IPv6.
+
+OsmoGGSN has support to use the Linux kernel GTP-U tunnel driver to accelerate
+the data/user plane while still implementing the control plane (GTP-C) in
+userspace in OsmoGGSN. The kernel module is included in Linux 4.7.0 and higher.
+Notably the Debian GNU/Linux distribution has it enabled by default.
+
+In order to use this feature, make sure that your Linux kernel was configured
+to support it (`CONFIG_GTP=m` or `=y`). Furthermore, `osmo-ggsn` must have been
+built with `./configure` argument `--enable-gtp-linux` (which requires libgtpnl
+to be installed).
+
+Load the kernel module with:
+
+----
+$ sudo modprobe gtp
+----
+
+Then start OsmoGGSN with a configuration file that uses `gtpu-mode kernel-gtp`.
+
+A full example configuration is in `osmo-ggsn-kernel-gtp.cfg`.
+
+----
+$ sudo osmo-ggsn -c /usr/share/doc/osmo-ggsn/examples/osmo-ggsn-kernel-gtp.cfg
+----
+
+.Example: APN with kernel-gtp
+----
+ggsn ggsn0
+ gtp state-dir /tmp
+ gtp bind-ip 127.0.0.2
+ apn internet
+  gtpu-mode kernel-gtp
+  tun-device tun4
+  type-support v4
+  ip prefix dynamic 172.16.222.0/24
+  ip dns 0 8.8.8.8
+  ip dns 1 8.8.4.4
+  ip ifconfig 172.16.222.0/24
+  no shutdown
+----