aboutsummaryrefslogtreecommitdiffstats
path: root/README
blob: 18a989844f484d2144f049be5a1b7bac5403e5a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
*** QuickStart ***

REQUIREMENTS

Linux
OpenGGSN was developed and tested using Redhat 7.1 and Redhat
7.2. It should run also on other Linux distributions as well as
FreeBSD and Solaris, but this is untested. Please tell me of any
testing results.

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:
mkdir /dev/net
mknod /dev/net/tun c 10 200
Add the following line to /etc/modules.conf: alias char-major-10-200 tun 
depmod -a


COMPILATION and INSTALLATION
./configure
cd gtp
make
make install
cd ..
make
make install
Add /usr/local/lib to /etc/ld.so.conf
Run ldconfig

RUNNING

sgsnemu
Edit the configuration file sgsnemu.conf found under
openggsn/examples. Use sgsnemu -h for a list of available options.
Start the emulator using the command:

  sgsnemu -c examples/sgsnemu.conf -l 10.20.30.50 -r 10.20.30.40

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
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.

ggsn
Edit the configuration file ggsn.conf found under
openggsn/examples. Use sgsnemu -h for a list of available options.
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


*** Features ***

OpenGGSN is an open source implementation of GPRS Support Nodes
(GSNs). It implements the GPRS tunneling protocol (GTP) version 0.

OpenGGSN provides 3 components:
* gtplib
* ggsn
* sgsnemu

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.

ggsn
The ggsn implements a Gateway GPRS Support Node. The GGSN is a small
application which is provided in order to test and demonstrate the use
of gtplib. It is fully compliant to the 3GPP standards, but lacks
important functionality such as charging and management. Use this
application as a starting point if you want to build your own GGSN
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
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/ 

Both ggsn and sgsnemu uses the tun package. You need at least tun
version 1.1. See the above web page for instructions on
installation. Tun is included in the kernel from early version 2.4, so
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 
depmod -a


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.

To use gengetopt for the ggsn do the following:
cd ggsn
gengetopt < cmdline.ggo --conf-parser

To use gengetopt for the sgsnemu do the following:
cd sgsnemu
gengetopt < cmdline.ggo --conf-parser


*** Compilation and Installation ***

To generate everything:
See http://sources.redhat.com/autobook/autobook/autobook_25.html#SEC25
 1 edit configure.in
 2 run aclocal
 3 run autoheader
   (run automake --add-missing)
 4 run automake
 5 run autoconf
 6 run ./configure
 7 rin make clean
 8 run make
   (First time you run make it will complain that it can not find gtp.
    Ignore the warning, gtp will get installed when you run make install)
 9 run make install
10 Add /usr/local/lib to /etc/ld.so.conf
11 run ldconfig


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.

*** Running sgsnemu ***
Use sgsnemu -h for a list of available options.