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