Project

General

Profile

OpenGGSN

OpenGGSN is an implementation of the Gateway GPRS Support Node (GGSN) element in the GPRS core network.

OpenGGSN was developed in 2002 to 2004 by Mondru AB and was abandoned for some years before adopted by the Osmocom project around 2010.

Source Code / git repository

The source code is maintained in the osmcoom git at http://git.osmocom.org/openggsn/

Binary packages

OpenGGSN packages are created as part of the Osmocom nightly debian builds, see NightlyBuilds

Support / mailing lists

Please direct any questions regarding use, configuration or development of OpenGGSN to the mailing list, to which you can subscribe at https://lists.osmocom.org/mailman/listinfo/osmocom-net-gprs

Building OpenGGSN with kernel which has GTP-U support

At the time of writing (2017-01-09) of this wiki, below listed distributions have support of GTP kernels :

  • Debian 4.9.1-1~exp1 - Debian's latest experimental build
  • Ubuntu 16.10 kernel 4.8
  • OpenSUSE Tumbleweed (stable) 4.8 (.12)
  • Fedora 25 kernel 4.8

Following two Debian kernels do not activate GTP kernel module during build: 4.8.0 and 4.9.0.

It is expected that complete openbsc project and related dependencies are pre-installed.

Check if package libc-ares-dev is installed and if not please add it.

Ubuntu 16.10, kernel 4.8.0-30-generic is used.

  • Installing dependencies and build library libgtpnl

You can install those packages with:

sudo apt install libtalloc-dev libpcsclite libmnl-dev

Please follow instructions provided at Build from source in order to install following library and projects :

Information about dependencies between Osmocom projects is given at the above link:

  • libgtpnl
  sudo make install
  sudo ldconfig
  • libosmocore
  • openggsn
./configure --enable-gtp-linux
make 
sudo make install
sudo ldconfig

Following message is shown at end of the command: ./configure --enable-gtp-linux

openggsn Configuration:
  GTP Linux kernel support:            yes

This means that appropriate header files are available.

Using OpenGGSN with kernel which has GTP-U support

In order to find out whether gtp.ko module is available we can enter following command:

find /lib/modules/`uname -r` -name gtp.ko

Output below shows that gtp.ko module is present:

/lib/modules/4.8.0-30-generic/kernel/drivers/net/gtp.ko

We are loading module gtp from kernel issuing command:

sudo modprobe gtp 

when you enter:

lsmod | grep gtp

then more information about gtp and related udp tunnel can be obtained:

gtp                    28672  0
udp_tunnel             16384  1 gtp

Some helpful tools are available in: libgtpnl/tools

you can get more details about gtp-tunnel, entering command from the OpenGGSN shell:


sudo ./gtp-tunnel list

Output will be similar to:


version 1 tei 1/0 ms_addr 192.168.0.2 sgsn_addr 127.0.0.2

Furthermore we can use:

 sudo starce ggsn --gtp-linux -c ggsn.conf -f -d 
to determine if Ubuntu 16.10, kernel 4.8.0-30 is in use.

Next two cases shall be considered as an indication whether gtp kernel module is active:

  • If gtp kernel module is active then we can see the strace output just when PDP context activation or deactivation is done.
  • If gtp kernel module is not active then we can see the strace output constantly running on the screen.

Note: OpenGGSN is started by:

sudo  ggsn --gtp-linux -c ggsn.conf -f -d

-d option is useful for debugging purposes.

Related output should be similar to the one shown below:

conf: ggsn.conf
fg: 1
debug: 1
qos: 0x0b921f
apn: internet
net: 192.168.0.0/24
pidfile: /var/run/ggsn.pid
statedir: /var/lib/ggsn/
gtp_linux: 1
timelimit: 0
cmdline_parser_configfile
listen: 127.0.0.1
conf: ggsn.conf
fg: 1
debug: 1
qos: 0x0b921f
apn: internet
net: 192.168.0.0/24
pidfile: /var/run/ggsn.pid
statedir: /var/lib/ggsn/
gtp-linux: 1
timelimit: 0
<000c> gtp.c:701 GTP: gtp_newgsn() started
<0002> gtp-kernel.c:123 Using the GTP kernel mode (genl ID is 27)

<0002> gtp-kernel.c:156 GTP kernel configured

<000b> control_if.c:693 CTRL at 127.0.0.1 4257

osmosgsn can be started with:

sudo osmo-sgsn -c sgsn.cfg    

- d option is also available ins osmo-sgsn command.

Additional information related to setup of openbsc and GPRS setup is available OpenBSC GPRS

For clarity purposes configuration files of openbsc, OpenGGSN, osmosgsn and sysmoBTS are added.

openbsc1.cfg - openbsc configuration (2.55 KB) wirelesss, 12/16/2016 09:10 AM

ggsn.conf Magnifier - ggsn configuration (441 Bytes) wirelesss, 12/16/2016 09:12 AM

sgsn.cfg - sgsn configuration (2.28 KB) wirelesss, 12/16/2016 09:12 AM

osmo-bts.cfg - sysmoBTS configuration (1.65 KB) wirelesss, 12/16/2016 09:15 AM

osmo-pcu.cfg - osmo puc configuration (79 Bytes) wirelesss, 12/16/2016 11:06 AM