== 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 OsmoBTS 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 ----