127 lines
4.0 KiB
Plaintext
127 lines
4.0 KiB
Plaintext
== Running OsmoGGSN
|
|
|
|
The OsmoGGSN executable (`osmo-ggsn`) offers the following command-line
|
|
arguments:
|
|
|
|
=== SYNOPSIS
|
|
|
|
*osmo-ggsn* [-h|-V] [-D] [-c 'CONFIGFILE']
|
|
|
|
=== OPTIONS
|
|
|
|
*-h, --help*::
|
|
Print a short help message about the supported options
|
|
*-V, --version*::
|
|
Print the compile-time version number of the program
|
|
*-D, --daemonize*::
|
|
Fork the process as a daemon into background.
|
|
*-c, --config-file 'CONFIGFILE'*::
|
|
Specify the file and path name of the configuration file to be
|
|
used. If none is specified, use `osmo-ggsn.cfg` in the current
|
|
working directory.
|
|
|
|
=== Routing
|
|
|
|
Operating the OpenGGSN tun device naturally creates a network setup with
|
|
multiple interfaces. Consider:
|
|
|
|
* Typical Linux setups prevent forwarding of packets between separate
|
|
interfaces by default. To let subscribers reach the internet uplink from the
|
|
tun device, it may be required to enable IP forwarding.
|
|
|
|
* Having a locally defined address range assigned to the tun device requires
|
|
either sensible routing for this address range, or that masquerading is
|
|
enabled to allow your single uplink IP address to "proxy" for the tun.
|
|
|
|
These are decisions to be made on a network administration level.
|
|
|
|
In a trivial case where you have a single box serving GPRS to few subscribers
|
|
on an arbitrary IP address range not known in the larger network, the easiest
|
|
way to enable GPRS uplink would be to enable IP forwarding and masquerading.
|
|
|
|
To manually enable IPv4 forwarding and masquerading ad-hoc, you can do:
|
|
|
|
----
|
|
sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
|
|
iptables -t nat -A POSTROUTING -o '*' -j MASQUERADE
|
|
----
|
|
|
|
(You may want to replace `*` with the network device name, like `-o eth0`)
|
|
|
|
There are various ways to enable these settings persistently, please refer to
|
|
your distribution's documentation -- e.g. look for @net.ipv4.ip_forward=1@ in
|
|
@/etc/sysctl.d/@, and https://wiki.debian.org/iptables for masquerading.
|
|
|
|
=== Multiple instances
|
|
|
|
Running multiple instances of `osmo-ggsn` is possible if all GGSN instances
|
|
are binding to different local IP addresse and all other interfaces (VTY,
|
|
OML) are separated using the appropriate configuration options. The IP based
|
|
interfaces are binding to local host by default. In order to separate the
|
|
processes, the user has to bind those services to specific but different
|
|
IP addresses.
|
|
|
|
The VTY and the control interface can be bound to IP addresses from the loopback
|
|
address range.
|
|
|
|
.Example: Binding VTY and control interface to a specific ip-address
|
|
----
|
|
line vty
|
|
bind 127.0.0.2
|
|
ctrl
|
|
bind 127.0.0.2
|
|
----
|
|
|
|
Also make sure to place each instance's GTP bind on a separate IP address (GTP
|
|
uses a port number that is fixed in the GTP specifications, so it will not be
|
|
possible to pick differing ports on the same IP address), like:
|
|
|
|
----
|
|
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
|
|
----
|