laforge, 09/06/2017 11:26 AM
@sgsnemu@ is part of the [[OsmoGGSN:]] project and implements a Serving GPRS Support Node (SGSN) emulator. It can be used for testing Gateway GPRS Support Nodes (GGSNs), GPRS core networks as well as GPRS roaming connections.
For more information abou the role of SGSNs and GGSNs, see https://en.wikipedia.org/wiki/GPRS_core_network
The GPRS functionality and protocols has been standardized by the Third Generation Partnership Project (3GPP). According to the 3GPP specificaitons, an SGSN has several interfaces. @sgsnemu@ emulates the GN/Gp interface which is used towards GGSNs.
The Gn/Gp inteface can be seen as the uplink interface of the SGSN. It is used for communicating with a GGSN which is typically connceted to the Internet (or any other private IP 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 as underlaying transport.
@sgsnemu@ will establish a number of tunnels (aka _PDP Contexts_) to the GGSN. An internal ping facility will transmit ping requests through the established tunnels. Alternatively, a local network interface can be created. In this case, @sgsnemu@ will forward packets between the local network interface and the established tunnels on the Gn/Gp interface.
@sgsnemu@ uses the TUN/TAP driver for the local interface. A tun network interface is established for each tunnel established to the GGSN.
@sgsnemu@ errors are reported using the Osmocom logging framework.
For detailed syntax, please see the sgsnemu man page included in the [[OsmoGGSN:]] distribution. You can also access the man page at http://git.osmocom.org/openggsn/plain/doc/sgsnemu.8