Here is a simple setup to test GTPHub operations. The IP addresses picked will
work well only on a system that creates local addresses (127.0.0.123) on the
fly (like linux) -- you may pick of course different IP addresses.

Overview of the example setup:

    sgsnemu               gtphub             ggsn
    127.0.0.1 <--> 127.0.0.3  127.0.0.4 <--> 127.0.0.2

Prerequisites: openggsn.

Have a local directory where you store config files and from which you launch
the GSNs and the hub (they will store restart counter files in that dir).
In it, have these config files:

ggsn.conf:

    # GGSN local address
    listen 127.0.0.2

    # End User Addresses are picked from this range
    net 10.23.42.0/24

    pcodns1 8.8.8.8

    logfile /tmp/foo

gtphub.conf:

    gtphub
     bind-to-sgsns 127.0.0.3
     bind-to-ggsns 127.0.0.4
     ggsn-proxy 127.0.0.2
    end


(
You may omit the ggsn-proxy if GRX ares is working, or if you add the GRX
address and GGSN IP address to /etc/hosts something like:

    127.0.0.2 internet.mnc070.mcc901.gprs

)


Once the config files are in place, start the programs, in separate terminals.
GGSN and SGSN need to be started with root priviliges to be able to create tun
interfaces. GTPHub may run as unprivileged user.

The LD_LIBRARY_PATH below may be needed if OpenGGSN installed to /usr/local.


1. GGSN:

    sudo -s
    cd <your-test-dir>
    LD_LIBRARY_PATH=/usr/local/lib /usr/local/bin/ggsn -f -c ./ggsn.conf

2. GTPHub:

    cd <your-test-dir>
    path/to/openbsc/openbsc/src/gprs/osmo-gtphub -c gtphub.conf #-e 1 #for DEBUG level

3. SGSN tests:

    sudo -s
    cd <your-test-dir>
    /usr/local/bin/sgsnemu --createif -l 127.0.0.1 -r 127.0.0.3 --imsi 420001214365100 --contexts=3

Add more SGSNs using different IMSIs and local ports (if the same IMSI is used,
the GGSN will reuse TEIs and tunnels will be discarded automatically):

    /usr/local/bin/sgsnemu --createif -l 127.0.0.11 -r 127.0.0.3 --imsi 420001214365300 --contexts=3

This shows the basic setup of GTPHub. Testing internet traffic via sgsnemu
still needs some effort to announce a mobile subscriber or the like (I have
used a real BTS, osmo-sgsn and a testing SIM in a web phone, instead).

The core capability of GTPHub is to manage more than two GSNs, e.g. an SGSN
contacting various GGSNs over the single GTPHub link. You would configure the
SGSN to use one fixed GGSN (sending to gtphub) and gtphub will resolve the
GGSNs once it has received the messages. So the SGSN may be behind NAT (add
"sgsn-use-sender" to gtphub.conf) and communicate to various GGSNs over a
single link to gtphub.

I hope this helps to get you going.
Any suggestions/patches are welcome!

~Neels

