aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjjako <jjako>2003-01-06 21:21:03 +0000
committerjjako <jjako>2003-01-06 21:21:03 +0000
commitbcbfb41a18d8f5c94d45f0ea85e3aed85b697607 (patch)
tree1dd45e5b0fa650c45a8b5c32574a9efd67884cee
parent0ac82a12e7abd3d285fcef81f47b0a53158fe67e (diff)
Small HOWTO on roaming testing in README file
-rw-r--r--README141
1 files changed, 124 insertions, 17 deletions
diff --git a/README b/README
index 18a9898..d142e91 100644
--- a/README
+++ b/README
@@ -12,11 +12,11 @@ Tun
Both ggsn and sgsnemu uses the tun package. You need at least tun
version 1.1. See http://vtun.sourceforge.net/tun/ for instructions on
installation. Tun is included in the kernel from early version 2.4, so
-you will not normall need to install it. You do however need to do the
-following:
+you will not normally need to install it. For Redhat 7.1 and 7.2 you
+do however need to do the following:
mkdir /dev/net
mknod /dev/net/tun c 10 200
-Add the following line to /etc/modules.conf: alias char-major-10-200 tun
+Add this line to /etc/modules.conf: alias char-major-10-200 tun
depmod -a
@@ -31,6 +31,7 @@ make install
Add /usr/local/lib to /etc/ld.so.conf
Run ldconfig
+
RUNNING
sgsnemu
@@ -42,7 +43,7 @@ Start the emulator using the command:
This will cause the sgsn emulator to bind to local address 10.20.30.50
and connect to the ggsn found at 10.20.30.40. It will first send off
-an ECHO_REQUEST message. After this it will attemt to establish a pdp
+an ECHO_REQUEST message. After this it will attempt to establish a pdp
context. If successful it will create a local interface and set up
routing. Now you should be able to ping through the connection. Use a
network analysator such as ethereal to monitor the traffic.
@@ -55,7 +56,11 @@ Start the ggsn using the command:
ggsn --fg -c examples/ggsn.conf -l 10.20.30.40 --statedir .
This will run the ggsn in foreground using the local interface
-10.20.30.40
+10.20.30.40. Of cause you can use sgsnemu to test the GGSN.
+
+
+SUPPORT
+If you have any questions drop me a line at jj@openggsn.org.
*** Features ***
@@ -71,7 +76,8 @@ OpenGGSN provides 3 components:
gtplib
This library contains all functionality relating to the GTP
protocol. Use this libraty if you want to implement your own
-GSN. Currently gtplib supports GTPv0.
+GSN. Currently gtplib supports GTPv0. At the moment no interface
+documentation is available for download.
ggsn
The ggsn implements a Gateway GPRS Support Node. The GGSN is a small
@@ -83,15 +89,14 @@ with your own fancy VPN, management and charging functionality.
sgsnemu
This application emulates a Serving GPRS Support Node (SGSN). sgsnemu
-enable you to test your 3GPP core network without the need to invest
+enables you to test your 3GPP core network without the need to invest
in a 3G radio access network. An important application of sgsnemu is
the testing of roaming connectivity through a GPRS roaming exchange.
*** Required software ***
-TUN
-http://vtun.sourceforge.net/tun/
+TUN (http://vtun.sourceforge.net/tun/)
Both ggsn and sgsnemu uses the tun package. You need at least tun
version 1.1. See the above web page for instructions on
@@ -104,14 +109,11 @@ Add the following line to /etc/modules.conf: alias char-major-10-200 tun
depmod -a
-GENGETOPT
-http://www.gnu.org/software/gengetopt/gengetopt.html
+GENGETOPT (http://www.gnu.org/software/gengetopt/gengetopt.html)
Gengetopt is required if you want to change the options defined in the
-cmdline.ggo source file. You need at least gengetopt version 2.8.
-
-If you are just going to compile the programs you don't need
-gengetopt.
+cmdline.ggo source file. You need at least gengetopt version 2.8. If
+you are just going to compile the programs you don't need gengetopt.
To use gengetopt for the ggsn do the following:
cd ggsn
@@ -146,8 +148,113 @@ On RedHat add /usr/local/lib to /etc/ld.so.conf
http://www.dwheeler.com/program-library/Program-Library-HOWTO/shared-libraries.html
*** Running ggsn ***
-Use ggsn -h for a list of available options.
+
+Use ggsn -h for a list of available options. All options available on
+the command line can also be given in a configuration file. See
+examples/ggsn.conf for the format of this file.
*** Running sgsnemu ***
-Use sgsnemu -h for a list of available options.
+
+Use sgsnemu -h for a list of available options. All options available
+on the command line can also be given in a configuration file. See
+examples/sgsnemu.conf for the format of this file.
+
+If you want to test a GRX roaming connection you will need to do the
+following:
+
+1) Install sgsnemu on a Linux Box. See under installation above.
+
+2) Connect your Linux box with sgsnemu installed to the GPRS core
+network. Use the same LAN switch as the one your SGSN is connected
+to. You also need a free IP address that can be used by sgsnemu.
+
+3) You need to configure networking in terms of interface address,
+subnet mask and default route. See the Linux Networking HOWTO for
+details.
+
+4) Launch sgsnemu with something like:
+
+ sgsnemu --fg --listen 10.20.30.50 --remote 10.20.30.40 --dns 10.20.38.51 --timelimit 10 --contexts 0
+
+sgsnemu will print something like the following on the screen:
+
+ Using DNS server: 10.20.38.51 (10.20.38.51)
+ Local IP address is: 10.20.30.50 (10.20.30.50)
+ Remote IP address is: 10.20.30.40 (10.20.30.40)
+ IMSI is: 240011234567890 (0x98765432110042)
+ Using APN: internet
+ Using MSISDN: 46702123456
+
+ Initialising GTP library
+ OpenGGSN[1823]: GTP: gtp_newgsn() started
+ Done initialising GTP library
+
+ Sending off echo request
+ Waiting for response from ggsn........
+
+ Received echo response. Cause value: 0
+
+This is quite good. It means that you managed to send off an echo
+request to a remote GGSN, and it was friendly enough to answer you. If
+you did not get an echo response it means that something is wrong
+either with your setup OR with the GRX connection OR with your roaming
+partners connection.
+
+If the above went well you might want to try to establish a PDP
+context to the remote GGSN. Note that you should be carefull when
+establishing PDP contexts using sgsnemu as each established PDP
+context will result in a Charge Detail Record (CDR) being generated by
+the GGSN. You should use real IMSI and MSISDN from a valid test SIM
+card. Otherwise some poor customer might get charged for your
+testing. Also note that you are establishing a connection to the Gi
+netowrk, so please be carefull not to route internet traffic onto the
+GPRS core network! Assuming you know what you are doing:
+
+ sgsnemu --fg --listen 10.20.30.50 --remote 10.20.30.40 --dns 10.20.38.51 --timelimit 10 --contexts 1 --apn internet --imsi 240011234567890 --msisdn 46702123456 --net 192.168.0.0 --mask 255.255.255.0
+
+sgsnemu will print something like the following on the screen:
+
+ Using DNS server: 10.20.38.51 (10.20.38.51)
+ Local IP address is: 10.20.30.50 (10.20.30.50)
+ Remote IP address is: 10.20.30.40 (10.20.30.40)
+ IMSI is: 240011234567890 (0x98765432110042)
+ Using APN: internet
+ Using MSISDN: 46702123456
+
+ Initialising GTP library
+ OpenGGSN[1838]: GTP: gtp_newgsn() started
+ Done initialising GTP library
+
+ Sending off echo request
+ Setting up PDP context #0
+ Waiting for response from ggsn........
+
+ Received echo response. Cause value: 0
+ Received create PDP context response. Cause value: 128
+ Setting up interface and routing
+ /sbin/ifconfig tun0 192.168.0.1
+ /sbin/route add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.0.1
+
+
+Now a context is established to the remote GGSN. The IP address of the
+context is 192.168.0.1. If you specified the correct --net and --mask
+you should be able to ping a known address on the Gi network of the
+roaming partner. You should even be able to do web browsing through
+the PDP context.
+
+Note however that you probably need to adjust your routing tables, so
+that you make sure that all GRX traffic is routed to the GPRS core
+network and everything else through the PDP context. The proper way to
+do this is to use policy routing. Also note that you are effectively
+connecting the same computer to both the Gn and Gi network, so please
+be carefull not to route internet traffic onto the GPRS core network
+and please protect yourself against hackers! For this reason it is
+advised to always use --contexts 0 when testing a live network.
+
+After --timelimit seconds the PDP context is disconnected with the
+following messages from sgsnemu:
+
+ Disconnecting PDP context #0
+ Received delete PDP context response. Cause value: 128
+ Deleting tun interface