[[chapter_introduction]]
== Overview

[[intro_overview]]
=== About OsmoGGSN

OsmoGGSN is a Free / Open Source Software implementation of the GPRS
GGSN (Gateway GPRS support node) element in side the packet switched
core network of 2G and 3G cellular networks.

The GGSN function is the tunnel endpoint on the core network side,
from where the external (IP) packet data network

=== Software Components

==== GTP Implementation (libgtp)

The OsmoGGSN source code includes a shared library implementation of
the GTP protocol used on the GGSN-SGSN interface.  This library
and associated header files are installed system-wide and are
available to other programs/applications.

In fact, libgtp is what the OsmoSGSN also uses for its use of GTP.

==== sgsnemu

In order to test OsmoGGSN without running a SGSN and other elements
of a cellular network, there is a small command-line utility called
*sgsnemu* which is able to simulate the customary operations of a SGSN
towards the GGSN, such as a PDP Context Activation.

*sgsnemu* can even be used for testing against other GGSNs, as the GTP
protocol is standardized across implementations.

==== osmo-ggsn

*osmo-ggsn* is the actual name of the OsmoGGSN executable program.  It
implements the GGSN functionality.  All parameters are set using the
configuration file, by default located in *./osmo-ggsn.cfg*

==== systemd service file

In *contrib/osmo-ggsn.service* you can find a sample service file for
OsmoGGSN which can be used with systemd.

=== Limitations

OsmoGGSN supports both GTP0 (GSM 09.60) and GTP1 (3GPP 29.060). In the
following tables the support of each individual message type is
detailed. The numbers before each feature indicates the relevant
section in the standard.

==== GSM 09.60 (GTPv0)

[options="header",cols="50%,15%,15%,15%,5%"]
|===
| Feature                | gtplib      | osmo-ggsn   | sgsnemu     | notes
5+<|*7.4 Path Management Messages*
|7.4.1 Echo Request      |Supported   |Supported   |Supported   |
|7.4.2 Echo Response     |Supported   |Supported   |Supported   |
|7.4.3 Version Not Supported      |Supported   |Supported   |Supported   |
5+<| *7.5 Tunnel Management Messages*
|7.5.1 Create PDP Context Request|Supported   |Supported   |Supported   |
|7.5.2 Create PDP Context Response|Supported   |Supported   |Supported   |
|7.5.3 Update PDP Context Request|Supported   |Supported   |Not         |
|7.5.4 Update PDP Context Response|Supported   |Supported   |Not         |
|7.5.5 Delete PDP Context Request|Supported   |Supported   |Supported   |
|7.5.6 Delete PDP Context Response|Supported   |Supported   |Supported   |
|7.5.7 Create AA PDP Context Request|Unsupported |Unsupported |Unsupported |
|7.5.8 Create AA PDP Response|Unsupported |Unsupported |Unsupported |
|7.5.9 Delete AA PDP Context Request|Unsupported |Unsupported |Unsupported |
|7.5.10 Delete AA PDP Context Response|Unsupported |Unsupported |Unsupported |
|7.5.11 Error Indication |Supported   |Supported   |Supported   |
|7.5.12 PDU Notification Request|Unsupported |Unsupported |Unsupported |
|7.5.13 PDU Notification Response|Unsupported |Unsupported |Unsupported |
|7.5.14 PDU Notification Reject Request|Unsupported |Unsupported |Unsupported |
|7.5.15 PDU Notification Reject Response|Unsupported |Unsupported |Unsupported |
5+<| *7.6 Location Management Messages*
|7.6.1 Send Routeing Information for GPRS Request|Unsupported |Unsupported |Not applicable  |
|7.6.2 Send Routeing Information for GPRS Response|Unsupported |Unsupported |Not applicable  |
|7.6.3 Failure Report Request|Unsupported |Unsupported |Not applicable |
|7.6.3 Failure Report Response|Unsupported |Unsupported |Not applicable |
|7.6.5 Note MS GPRS Present Request|Unsupported |Unsupported |Not applicable|
|7.6.6 Note MS GPRS Present Response|Unsupported |Unsupported |Not applicable|
5+<| *7.5 Mobility Management Messages*
|7.5.1 Identification Request|Unsupported |Not applicable|Not applicable|
|7.5.2 Identification Response|Unsupported |Not applicable|Not applicable |
|7.5.3 SGSN Context Request|Unsupported |Not applicable|Not applicable|
|7.5.4 SGSN Context Response|Unsupported |Not applicable|Not applicable|
|7.5.5 SGSN Context Acknowledge|Unsupported |Not applicable|Not applicable|
|===

==== 3GPP 29.060 (GTPv1)

[options="header",cols="50%,15%,15%,15%,5%"]
|===
|Feature                 |gtplib      |osmo-ggsn   |sgsnemu     |notes
5+<|*7.2 Path Management Messages*
|7.2.1 Echo Request      |Supported   |Supported   |Supported   |
|7.2.2 Echo Response     |Supported   |Supported   |Supported   |
|7.2.3 Version Not Supported|Supported   |Supported   |Supported   |
|7.2.4 Extension Headers Notification|Supported   |Supported   |Supported   |
5+<|*7.3 Tunnel Management Messages*
|7.3.1 Create PDP Context Request|Supported   |Supported   |Supported   |1
|7.3.2 Create PDP Context Response|Supported   |Supported   |Supported   |
|7.3.3 Update PDP Context Request|Supported   |Supported   |Not applicable|1
|7.3.4 Update PDP Context Response|Supported   |Supported   |Not applicable|
|7.3.5 Delete PDP Context Request|Supported   |Supported   |Supported   |
|7.3.6 Delete PDP Context Response|Supported   |Supported   |Supported   |
|7.3.7 Error Indication  |Supported   |Supported   |Supported   |
|7.3.8 PDU Notification Request|Unsupported |Unsupported |Unsupported |
|7.3.9 PDU Notification Response|Unsupported |Unsupported |Unsupported |
|7.3.10 PDU Notification Reject Request|Unsupported |Unsupported |Unsupported |
|7.3.10 PDU Notification Reject Response|Unsupported |Unsupported |Unsupported |
5+<|*7.4 Location Management Messages*
|7.4.1 Send Routeing Information for GPRS Request|Unsupported |Unsupported |Not applicable  |
|7.4.2 Send Routeing Information for GPRS Response|Unsupported |Unsupported |Not applicable  |
|7.4.3 Failure Report Request|Unsupported |Unsupported |Not applicable|
|7.4.3 Failure Report Response|Unsupported |Unsupported |Not applicable|
|7.4.5 Note MS GPRS Present Request|Unsupported |Unsupported |Not applicable|
|7.4.6 Note MS GPRS Present Response|Unsupported |Unsupported |Not applicable|
5+<|*7.5 Mobility Management Messages*
|7.5.1 Identification Request|Unsupported |Not applicable|Not applicable|
|7.5.2 Identification Response|Unsupported |Not applicable |Not applicable|
|7.5.3 SGSN Context Request|Unsupported |Not applicable|Not applicable|
|7.5.4 SGSN Context Response|Unsupported |Not applicable |Not applicable|
|7.5.5 SGSN Context Acknowledge|Unsupported |Not applicable|Not applicable|
|7.5.6 Forward Relocation Request|Unsupported |Not applicable|Not applicable|
|7.5.7 Forward Relocation Response|Unsupported |Not applicable|Not applicable|
|7.5.8 Forward Relocation Complete|Unsupported |Not applicable|Not applicable|
|7.5.9 Relocation Cancel Request|Unsupported |Not applicable|Not applicable|
|7.5.10 Relocation Cancel Response|Unsupported |Not applicable|Not applicable|
|7.5.11 Forward Relocation Complete     |Unsupported |Not applicable |Not applicable  |
|7.5.12 Forward SRNS Context Acknowledge|Unsupported |Not applicable|Not applicable|
|7.5.13 Forward SRNS Context|Unsupported |Not applicable|Not applicable|
|===

Notes

1) The "Secondary PDP Context Activation Procedure" is not supported.
