
.\" * OpenGGSN - Gateway GPRS Support Node
.\" * Copyright (C) 2002, 2003 Mondru AB.
.\" * 
.\" * The contents of this file may be used under the terms of the GNU
.\" * General Public License Version 2, provided that the above copyright
.\" * notice and this permission notice is included in all copies or
.\" * substantial portions of the software.
.\" * 
.\" * The initial developer of the original code is
.\" * Jens Jakobsen <jj@openggsn.org>
.\" * 
.\" * Contributor(s):
.\" * 
.\" Manual page for ggsn
.\" SH section heading
.\" SS subsection heading
.\" LP paragraph
.\" IP indented paragraph
.\" TP hanging label

.TH ggsn 8 "July 2003"
.SH NAME
ggsn \- Gateway GPRS Support Node.
.SH SYNOPSIS
.B ggsn
\-\-help

.B ggsn
\-\-version

.B ggsn
[
.BI \-\-fg
] [
.BI \-\-debug
] [
.BI \-\-conf " file"
] [
.BI \-\-pidfile " file"
] [
.BI \-\-statedir " file" 
] [ 
.BI \-\-listen " host" 
] [
.BI \-\-net " net" 
] [
.BI \-\-ipup " script" 
] [
.BI \-\-ipdown " script" 
] [
.BI \-\-dynip " net" 
] [
.BI \-\-statip " net" 
] [
.BI \-\-pcodns1 " host" 
] [
.BI \-\-pcodns2 " host" 
] [
.BI \-\-timelimit " seconds" 
]
.SH DESCRIPTION
.B ggsn
is part of the 
.B OpenGGSN
project, and implements a Gateway GPRS Support Node. It is used by
mobile operators as the interface between the Internet and the rest of
the mobile network infrastructure.

The GPRS functionality and protocols has been standardised by the
Third Generation Partnership Project (3GPP). According to the 3GPP
specifications a GGSN has two interfaces: The Gn/Gp interface and the
Gi interface.

The Gn/Gp interface can be seen as the downlink interface of the
GGSN. It is used for communicating with the Serving GPRS Support Node
(SGSN) which again interfaces to the radio access network. The Gn/Gp
interface uses the GPRS tunneling protocol (GTP). User data packets
(typically IP packets) are tunneled over GTP, which again uses UDP
over IP.

The other interface can be thought of as the uplink interface, and
interfaces the GGSN to an external data network. Gi is most often an
interface to the Internet.
.B ggsn
uses the 
.B TUN/TAP driver
for the Gi interface. A tun network interface is established when the
.B ggsn
is started.

.B ggsn 
will accept incoming connections from mobile stations through the
radio access network and the SGSN. When a connection request is
received the ggsn will allocate a dynamic IP address for the mobile
station, and allow the mobile station to access the Gi
interface. Connections are terminated by either the mobile station or
the SGSN. Runtime errors are reported using the Osmocom logging
framework.

Typically 
.B ggsn
will be deployed with two Ethernet interfaces. One for the Gn/Gp
interface, and one for the Gi interface. Policy routing and firewall
rules should be used in order to separate Gi traffic from Gn/Gp
traffic.

.SH OPTIONS
.TP
.BI --help
Print help and exit.

.TP
.BI --version
Print version and exit.

.TP
.BI --fg
Run in foreground (default = off)

.TP
.BI --debug
Run in debug mode (default = off)

.TP
.BI --conf " file"
Read configuration 
.I file
(default = /etc/ggsn.conf) where each line corresponds to one command
line option, but with the leading '--' removed. Command line options
override the options given in the configuration file.

.TP
.BI --pidfile " file"
Filename of process id 
.I file
(default = /var/run/ggsn.pid)

.TP
.BI --statedir " path"
.I path
to directory of nonvolatile data (default = /var/lib/ggsn/)

.TP
.BI --listen " host"
Local interface IP address to use for the Gn/Gp interface. This option
must be specified. For security issues it is not possible to use
INADDR_ANY.

.TP
.BI --net " net"
Network address of the Gi interface (default = 192.168.0.0/24). The
network address is set during initialisation when
.B ggsn
establishes a tun device for the Gi interface.

.TP
.BI --ipup " script"
Script executed after the Gi tun network interface has been brought
up.  Executed with the following parameters: <devicename> <ip address>

.TP
.BI --ipdown " script"
Script executed after the Gi tun network interface has been taken
down.  Executed with the following parameters: <devicename> <ip
address>

.TP
.BI --dynip " net"
Dynamic IP address pool. Specifies a pool of dynamic IP addresses. If
this option is omitted the network address specified by the
.BI --net
option is used for dynamic IP address allocation.

.TP
.BI --pcodns1 " host"
PCO DNS Server 1 (default = 0.0.0.0). PCO stands for Protocol
Configuration options, and is part of the GPRS protocols. It is used
to inform the mobile station about the DNS address to use for host
name resolution.

.TP
.BI --pcodns2 " host"
PCO DNS Server 2 (default = 0.0.0.0). PCO stands for Protocol
Configuration options, and is part of the GPRS protocols. It is used
to inform the mobile station about the DNS address to use for host
name resolution.

.TP
.BI --timelimit " seconds"
Exit 
.b ggsn
after \fIseconds\fP. Used for debugging.


.SH FILES
.I /etc/ggsn.conf
.RS
The configuration file for
.B ggsn.
.RE
.I /var/run/ggsn.pid
.RS
Process ID file.
.RE
.I /var/lib/ggsn
.RS
Directory holding nonvolatile data.
.RE

.SH BUGS
Report all bugs to the OpenGGSN bug tracking list at 
.I http://sourceforge.net/projects/ggsn/

.B ggsn
has very limited management support. Currently both SNMP as well as
billing mechanisms are missing.


.SH "SEE ALSO"
.BR sgsnemu (8)

.SH NOTES 
.LP

Besides the long options documented in this man page
.B ggsn
also accepts a number of short options with the same functionality. Use
.B ggsn --help
for a full list of all the available options.

The TUN/TAP driver is required for proper operation of
.B ggsn. 
For linux kernels later than 2.4.7 the TUN/TAP driver is included in the kernel, but typically needs to be loaded manually with
.B modprobe tun.
For automatic loading the line
.B alias char-major-10-200 tun
can be added to
.B /etc/modules.conf.
For other platforms see
.I http://vtun.sourceforge.net/tun/
for information on how to install and configure the tun driver.

.B ggsn 
uses the GPRS Tunneling Protocol (GTP) as specified by the Third
Generation Partnership Project (3GPP). 3GPP protocols specifications
can be found at
.I http://www.3gpp.org

.SH COPYRIGHT

Copyright (C) 2002, 2003 by Mondru AB.

The contents of this file may be used under the terms of the GNU
General Public License Version 2, provided that the above copyright
notice and this permission notice is included in all copies or
substantial portions of the software.

.SH AUTHORS
Jens Jakobsen <jj@openggsn.org>
