Project

General

Profile

OpenBSC » History » Version 36

laforge, 02/21/2016 03:06 PM

1 33 ahuemer
{{>toc}}
2 1 laforge
3 34 laforge
*OpenBSC* is the current name for a software project that started with the name bs11-abis.
4 1 laforge
5 34 laforge
6 33 ahuemer
h2. What is [[OpenBSC]]
7 1 laforge
8 33 ahuemer
It started as a [[BSC]] (Base Station Controller) side implementation of the A-bis protocol, as implemented in the GSM Technical Specification 08.5x and 12.21.  It can run either
9 34 laforge
* as [[osmobsc:|OsmoBSC]], exposing an A interface towards an external MSC, or 
10
* as [[osmonitb:|OsmoNITB]] (Network In The Box), whert implements a minimal subset of the [[BSC]], [[MSC]]. [[SMSC]] and [[HLR]]. 
11 1 laforge
12 30 laforge
The goal of the project is to
13 33 ahuemer
* provide a basis for experimentation and security research with GSM from the network side
14
* provide a zero-cost alternative for hands-on experience with GSM systems in education and training
15
* learn more about GSM networks on a lower level, particularly the practical aspects with real-world equipment
16
* provide a stable/reliable network-side GSM implementation for small networks that don't need millions of subscribers or 99.99999% availability
17 1 laforge
18
19 33 ahuemer
h2. Requirements
20 1 laforge
21
22 33 ahuemer
While [[OpenBSC]] is mainly written in portable C99 code, there are is one non-portable part: The E1 input driver requires a Linux kernel with mISDN support and an [[E1]] interface card compatible with [[mISDN]].  You only need this if you have an E1 based BTS!
23 1 laforge
24 33 ahuemer
To operate a GSM network, you not only need [[OpenBSC]] but of course also some kind of GSM [[BTS]].  The only currently tested configurations are with a
25
* sysmocom "sysmoBTS":http://www.sysmocom.de/products/sysmobts (using [[OsmoBTS]])
26
* "fairwaves":https://fairwaves.co [[UmSITE]] and [[UmDESK]] (using [[OsmoBTS]])
27
* Siemens [[BS11|BS-11]] microBTS
28
* [[nanoBTS|ipaccess nanoBTS]]
29 30 laforge
30 33 ahuemer
IF you feel geeky, you could also build a BTS yourself, using full-duplex capable SDR (Software Defined Radio) hardware and a usual PC with [[OsmoTRX]] and [[OsmoBTS]] software. The software installation is described at the [[network_from_scratch]] page.
31 17 laforge
32
33 33 ahuemer
h2. Configurations / Modes
34
35
36
37
h3. [[OpenBSC]] network-in-the-box (NITB) mode
38
39
40
This is _very different_ from a classic GSM network in which the BSC is only one minor element in the distributed network consisting
41
of many different elements like BSC, MSC, HLR, etc.  Nonetheless, it is the _classic_ mode to operate [[OpenBSC]].  In this configuration, you only need (at least) one BTS and [[OpenBSC]].  There is no need for a MSC, HLR, VLR, AuC or any other traditional GSM network components.
42
43 35 laforge
{{graphviz_link()
44 17 laforge
digraph G {
45
rankdir=LR 
46 1 laforge
bs11->OpenBSC    [ label="Abis/E1" ]
47 23 ipse
nanobts->OpenBSC [ label="Abis/IP" ]
48 17 laforge
sysmobts->OpenBSC [ label="Abis/IP" ]
49 27 ipse
umsite->OpenBSC [ label="Abis/IP" ]
50 26 ipse
osmobts->OpenBSC [ label="Abis/IP" ]
51 17 laforge
bs11    [ label = "Siemens\nBS-11" ]
52
nanobts [ label = "ip.access\nnanoBTS" ]
53 1 laforge
sysmobts [ label = "sysmocom\nsysmoBTS" ]
54
umsite [ label = "fairwaves\nUmSITE" ]
55
osmobts [ label = "osmoBTS +\nSDR hardware" ]
56 35 laforge
OpenBSC [ label = "OpenBSC\nNITB" ]
57 1 laforge
}
58 35 laforge
}}
59 1 laforge
60 33 ahuemer
In order to use the NITB mode, you will use the [[osmo-nitb]] program.
61 17 laforge
62 33 ahuemer
63
h4. Interconnecting [[OpenBSC]] with an ISDN or SIP PBX
64 1 laforge
65
If you want to connect calls outside of your [[OpenBSC]] based GSM network, you can have "Linux Call Router":http://isdn.eversberg.eu/ and [[OpenBSC]]
66 18 laforge
work together to create a setup like this:
67 33 ahuemer
68 35 laforge
{{graphviz_link()
69 22 laforge
digraph G {
70 35 laforge
    rankdir=LR 
71
    bs11->OpenBSC    [ label="Abis/E1" ]
72
    nanobts->OpenBSC [ label="Abis/IP" ]
73
    sysmobts->OpenBSC [ label="Abis/IP" ]
74
    umsite->OpenBSC [ label="Abis/IP" ]
75
    osmobts->OpenBSC [ label="Abis/IP" ]
76
    OpenBSC->LCR     [ label="MNCC Socket" ]
77
    LCR->ISDN        [ label="E1/PRI/BRI" ]
78
    LCR->SIP         [ label="SIP/RTP" ]
79
    bs11     [ label = "Siemens\nBS-11" ]
80
    nanobts  [ label = "ip.access\nnanoBTS" ]
81
    sysmobts [ label = "sysmocom\nsysmoBTS" ]
82
    umsite   [ label = "fairwaves\nUmSITE" ]
83
    osmobts  [ label = "OsmoBTS +\nSDR hardware" ]
84
    OpenBSC  [ label = "OpenBSC\nNITB" ]
85 33 ahuemer
}
86 35 laforge
}}
87 1 laforge
88 33 ahuemer
h3. [[OpenBSC]] in BSC-only mode
89
90
91
If you want to use [[OpenBSC]] as a classic GSM BSC, you can do that as well.  However, you will need all other parts of the GSM
92 1 laforge
network and a MSC that can provide an A-over-IP interface using SCCP-lite
93
94 35 laforge
95
{{graphviz_link()
96 1 laforge
digraph G {
97 35 laforge
    rankdir=LR;
98
    bs11->OpenBSC    [ label="Abis/E1" ];
99
    nanobts->OpenBSC [ label="Abis/IP" ];
100
    sysmobts->OpenBSC [ label="Abis/IP" ]
101
    umsite->OpenBSC [ label="Abis/IP" ];
102
    osmobts->OpenBSC [ label="Abis/IP" ];
103
    OpenBSC->MSC     [ label="A/SCCP-Lite/IP" ];
104
    subgraph core {
105
        MSC->VLR;
106
        MSC->HLR;
107
        HLR->AUC;
108
        label = "not included";
109
        color = blue;
110
    }
111
    bs11    [ label = "Siemens\nBS-11" ];
112
    nanobts [ label = "ip.access\nnanoBTS" ];
113
    sysmobts [ label = "sysmocom\nsysmoBTS" ]
114
    umsite [ label = "fairwaves\nUmSITE" ];
115
    OpenBSC [ label = "OpenBSC\nosmo-bsc" ];
116
    osmobts [ label = "OsmoBTS +\nSDR hardware" ]
117 1 laforge
}
118 35 laforge
}}
119 1 laforge
120 33 ahuemer
In order to use the BSC-only mode, you will use the [[osmo-bsc]] program.
121 17 laforge
122 36 laforge
h2.  Misc
123 18 laforge
124 36 laforge
h3. Information related to a specific BTS model
125
126
{{child_pages(BTS_Hardware,depth=1)}}
127
128
Topics related to BTSs with classic E1 interface (non-IP based):
129
130
{{child_pages(E1-Interface)}}
131
132
h3. Miscellaneous Information
133
134
* [[HFC-E1|HFC-E1 Evaluation Board]] -- The E1 card we use for attaching classic E1 based A-bis links
135
* [[mISDN]] -- The Linux ISDN stack
136
137
* [[cellular-infrastructure:GSM]] -- Some links for starting to understand GSM
138
* [[cellular-infrastructure:LegalNotes]] -- Important Legal notes on operating GSM base stations
139
* [[FieldTests]] -- The [[OpenBSC]] field tests and their reports
140
141
h3. Howtos
142
143
* Standard configuration:
144
*** [[Building_OpenBSC]] -- Getting started with [[OpenBSC]] under Debian
145
*** [[multi-BTS_with_handover]] -- Connecting 2x BTS to a single BSC/NITB and enabling handover 
146
147
* Advanced topics:
148
*** [[OpenBSC_with_Asterisk]] -- A comprehensive tutorial on setting up [[OpenBSC]] with Asterisk
149
*** [[OpenBSC_LCR]] -- [[OpenBSC]]+LCR with Asterisk (obsolete)
150
*** [[OpenBSC_LCR_Ubuntu1204]] -- Short installation guide for [[OpenBSC]] with Asterisk on Ubuntu 12.04
151
*** [[OpenBSC_Crypto]] -- Howto add A5/x cryptography support to your [[OpenBSC]] setup
152
*** [[SDR_OsmoTRX_network_from_scratch]] -- Building everything from scratch for SDR based hardware with [[OsmoTRX]], [[OsmoBTS]] and [[OsmoNITB]].
153
154
* RF Topics:
155
*** [[cable_antenna]] -- Build new antennas for your BTS
156
*** [[ethernet_dummyload]] -- Use an old ethernet terminator as dummyload
157
*** [[10db_attenuator]] -- Turn 30mW into 3 mW
158
159
160
161 18 laforge
h2. Source code
162 12 laforge
163 33 ahuemer
164
165
h3. Releases
166
167
168
The [[OpenBSC]] project does not publish official releases.  Users are recommended to use the latest git master.
169
170
171
h3. Repository
172 18 laforge
173 33 ahuemer
You can check out the source code via
174 3 laforge
<pre>
175 33 ahuemer
git clone git://git.osmocom.org/openbsc.git
176 18 laforge
</code></pre>
177 1 laforge
or browse it at http://cgit.osmocom.org/cgit/openbsc/
178
179 33 ahuemer
h2. Mailing list
180 13 laforge
181 1 laforge
182 33 ahuemer
There's a *developer* mailing list called openbsc@lists.osmocom.org
183
Subscription is available at "h2. IRC (Internet Relay Chat)
184
185
186 13 laforge
We have an IRC channel where some developers and users hang out.  You can find it at:
187 1 laforge
irc.freenode.net/#osmocom
188
189 14 laforge
190 33 ahuemer
h2. Project status
191 13 laforge
192
193 30 laforge
194 33 ahuemer
h3. Things that work
195 13 laforge
196 33 ahuemer
* Housekeeping
197
** [[OML"httplistsosmocomorgmailmanlistinfoopenbsc]] Initialization of the BTS
198
** Support for frequency hopping channels on BTS equipment that supports it (like BS-11)
199
** [[RSL]] bringup, channel allocation, Channel required / Immediate Assign
200
* Mobility Management
201
** Very simplistic [[HLR]] implemented as sqlite database
202
** Non-secure Authorization using [[IMEI]]/[[IMSI]] and regular SIM cards.
203
** Authentication using COMP128v1 if you have SIM cards with known Ki
204
** [[IMEI]]/[[IMSI]] skimming of all phones that try to register with [[OpenBSC]]
205
** Transmission of MM INFO packets with operator name and local time / timezone
206
** paging of mobiles that are registered to the BTS
207
** keeping track of which location area a phone has last performed location updating
208
** in-call handover between multiple cells inside one BSC
209
* SMS Support
210
** [[SMS]] reception and [[SMS]] sending, including routing between subscribers
211
** Sending of SMS from [[OpenBSC]] command line
212
** Sending and receiving of SMS through SMPP
213
* Voice Call Support
214
** MO (Mobile Originated) and MT (Mobile Terminated) calls
215
** TCH/F support with FR and EFR codec
216
** TCH/H support with HR and AMR codec
217
* Cell Broadcast Support
218
* USSD (only for built-in USSD commands, no external interface)
219
* E1 support
220
** demultiplex of the four 16k sub-channels with voice data contained in one [[E1]] timeslot
221
** support for multiple [[TRX]] in one [[BTS]]
222
** support for multiple [[BTS]] connected to the same E1 link (multi-loop configuration)
223
* Abis/IP support
224
** Abis/IP protocol with IPA multiplex for [[osmo-bts]] and [[nanoBTS]]
225
** RTP gateway to interoperate E1 based BTS and IP based BTS on one BSC and switch calls between them
226
* GPRS/EDGE support
227
** configuring the OML objects/attributes for GPRS and EDGE
228
** setting SYSTEM INFORMATION 13 via RSL
229
** configurable RAID/CGI/NSVCI/NSEI/BVCI
230
** have the PCU in the BTS interoperate a SGSN with Gb (NS-over-IP) interface
231
** beta state [[OsmoSGSN]] included along [[OpenBSC]]
232 1 laforge
233 33 ahuemer
234
h3. Things that are implemented but don't work yet or aren't tested yet
235
236
* dynamic PDCH / TCH switching
237
238
239
h3. Things that are not implemented
240
241
* Any type of transcoding of voice data (we leave this to the external MNCC handler / media gateway)
242
* [[CSD]] calls
243
* emergency call handling (works in [[osmo-bsc]], but not in [[osmo-nitb]])
244
245
246
h2. Authors
247
248
249
[[OpenBSC]] was mainly developed by "Harald Welte":http://laforge.gnumonks.org/ and Holger Freyther. 
250
251 1 laforge
Contributions (in no specific order) by Dieter Spaar, Stefan Schmidt, Daniel Willmann, Jan Luebbe, Thomas Seiler, Andreas Eversberg, Sylvain Munaut, Ciaby, Alexander Chemeris, Neels Hofmeyr, Nico Golde, Pablo Neira.
252
253 33 ahuemer
Special thanks to Dieter Spaar for [[BS11-Init]] and tons of feedback and comments, without which we would not have been able to make progress as quickly as we did.
Add picture from clipboard (Maximum size: 48.8 MB)