Project

General

Profile

OpenBSC » History » Version 33

ahuemer, 02/19/2016 10:48 PM
irc: #openbsc -> #osmocom

1 33 ahuemer
{{>toc}}
2
*OpenBSC* is the current name for a software program that started with the name bs11-abis.
3 1 laforge
4 33 ahuemer
5
h2. What is [[OpenBSC]]
6
7
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
8 1 laforge
* as a classic BSC, exposing an A interface towards an external MSC, or 
9 33 ahuemer
* as NITB (Network In The Box), whert implements a minimal subset of the [[BSC]], [[MSC]]. [[SMSC]] and [[HLR]]. 
10 1 laforge
11 30 laforge
The goal of the project is to
12 33 ahuemer
* provide a basis for experimentation and security research with GSM from the network side
13
* provide a zero-cost alternative for hands-on experience with GSM systems in education and training
14
* learn more about GSM networks on a lower level, particularly the practical aspects with real-world equipment
15
* provide a stable/reliable network-side GSM implementation for small networks that don't need millions of subscribers or 99.99999% availability
16 1 laforge
17
18 33 ahuemer
h2. Requirements
19 1 laforge
20
21 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!
22 1 laforge
23 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
24
* sysmocom "sysmoBTS":http://www.sysmocom.de/products/sysmobts (using [[OsmoBTS]])
25
* "fairwaves":https://fairwaves.co [[UmSITE]] and [[UmDESK]] (using [[OsmoBTS]])
26
* Siemens [[BS11|BS-11]] microBTS
27
* [[nanoBTS|ipaccess nanoBTS]]
28 30 laforge
29 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.
30 17 laforge
31
32 33 ahuemer
h2. Configurations / Modes
33
34
35
36
h3. [[OpenBSC]] network-in-the-box (NITB) mode
37
38
39
This is _very different_ from a classic GSM network in which the BSC is only one minor element in the distributed network consisting
40
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.
41
42
<pre>
43
<code class="graphviz">
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 33 ahuemer
[[OpenBSC]] [ label = "OpenBSC\nNITB" ]
57 1 laforge
}
58 33 ahuemer
</code></pre>
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
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 1 laforge
68 33 ahuemer
<pre>
69
<code class="graphviz">
70 18 laforge
digraph G {
71 22 laforge
rankdir=LR 
72 23 ipse
bs11->OpenBSC    [ label="Abis/E1" ]
73 18 laforge
nanobts->OpenBSC [ label="Abis/IP" ]
74
sysmobts->OpenBSC [ label="Abis/IP" ]
75 22 laforge
umsite->OpenBSC [ label="Abis/IP" ]
76 26 ipse
osmobts->OpenBSC [ label="Abis/IP" ]
77 33 ahuemer
[[OpenBSC]]->LCR     [ label="MNCC Socket" ]
78 1 laforge
LCR->ISDN        [ label="E1/PRI/BRI" ]
79 17 laforge
LCR->SIP         [ label="SIP/RTP" ]
80 1 laforge
bs11    [ label = "Siemens\nBS-11" ]
81
nanobts [ label = "ip.access\nnanoBTS" ]
82
sysmobts [ label = "sysmocom\nsysmoBTS" ]
83
umsite [ label = "fairwaves\nUmSITE" ]
84
osmobts [ label = "osmoBTS +\nSDR hardware" ]
85 33 ahuemer
[[OpenBSC]] [ label = "OpenBSC\nNITB" ]
86 1 laforge
}
87 33 ahuemer
</code></pre>
88 1 laforge
89
90 33 ahuemer
h3. [[OpenBSC]] in BSC-only mode
91
92
93
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
94 1 laforge
network and a MSC that can provide an A-over-IP interface using SCCP-lite
95
96 33 ahuemer
<pre>
97
<code class="graphviz">
98 1 laforge
digraph G {
99
rankdir=LR;
100
bs11->OpenBSC    [ label="Abis/E1" ];
101
nanobts->OpenBSC [ label="Abis/IP" ];
102
sysmobts->OpenBSC [ label="Abis/IP" ]
103
umsite->OpenBSC [ label="Abis/IP" ]
104
osmobts->OpenBSC [ label="Abis/IP" ]
105 33 ahuemer
[[OpenBSC]]->MSC     [ label="A/SCCP-Lite/IP" ];
106 1 laforge
subgraph core {
107
  MSC->VLR;
108
  MSC->HLR;
109
  HLR->AUC;
110
  label = "not included";
111
  color = blue;
112
}
113
bs11    [ label = "Siemens\nBS-11" ];
114
nanobts [ label = "ip.access\nnanoBTS" ];
115
sysmobts [ label = "sysmocom\nsysmoBTS" ]
116
umsite [ label = "fairwaves\nUmSITE" ]
117 33 ahuemer
[[OpenBSC]] [ label = "OpenBSC\nosmo-bsc" ];
118 1 laforge
osmobts [ label = "osmoBTS +\nSDR hardware" ]
119
}
120 33 ahuemer
</code></pre>
121 1 laforge
122 33 ahuemer
In order to use the BSC-only mode, you will use the [[osmo-bsc]] program.
123 17 laforge
124 18 laforge
125 33 ahuemer
h2. Source code
126 18 laforge
127 12 laforge
128 33 ahuemer
129
h3. Releases
130
131
132
The [[OpenBSC]] project does not publish official releases.  Users are recommended to use the latest git master.
133
134
135
h3. Repository
136
137 18 laforge
You can check out the source code via
138 33 ahuemer
<pre>
139 3 laforge
git clone git://git.osmocom.org/openbsc.git
140 33 ahuemer
</code></pre>
141 18 laforge
or browse it at http://cgit.osmocom.org/cgit/openbsc/
142 1 laforge
143
144 33 ahuemer
h2. Mailing list
145 13 laforge
146 1 laforge
147 33 ahuemer
There's a *developer* mailing list called openbsc@lists.osmocom.org
148
Subscription is available at "h2. IRC (Internet Relay Chat)
149
150
151 13 laforge
We have an IRC channel where some developers and users hang out.  You can find it at:
152 1 laforge
irc.freenode.net/#osmocom
153
154 14 laforge
155 33 ahuemer
h2. Project status
156 13 laforge
157
158 30 laforge
159 33 ahuemer
h3. Things that work
160 13 laforge
161 33 ahuemer
* Housekeeping
162
** [[OML"httplistsosmocomorgmailmanlistinfoopenbsc]] Initialization of the BTS
163
** Support for frequency hopping channels on BTS equipment that supports it (like BS-11)
164
** [[RSL]] bringup, channel allocation, Channel required / Immediate Assign
165
* Mobility Management
166
** Very simplistic [[HLR]] implemented as sqlite database
167
** Non-secure Authorization using [[IMEI]]/[[IMSI]] and regular SIM cards.
168
** Authentication using COMP128v1 if you have SIM cards with known Ki
169
** [[IMEI]]/[[IMSI]] skimming of all phones that try to register with [[OpenBSC]]
170
** Transmission of MM INFO packets with operator name and local time / timezone
171
** paging of mobiles that are registered to the BTS
172
** keeping track of which location area a phone has last performed location updating
173
** in-call handover between multiple cells inside one BSC
174
* SMS Support
175
** [[SMS]] reception and [[SMS]] sending, including routing between subscribers
176
** Sending of SMS from [[OpenBSC]] command line
177
** Sending and receiving of SMS through SMPP
178
* Voice Call Support
179
** MO (Mobile Originated) and MT (Mobile Terminated) calls
180
** TCH/F support with FR and EFR codec
181
** TCH/H support with HR and AMR codec
182
* Cell Broadcast Support
183
* USSD (only for built-in USSD commands, no external interface)
184
* E1 support
185
** demultiplex of the four 16k sub-channels with voice data contained in one [[E1]] timeslot
186
** support for multiple [[TRX]] in one [[BTS]]
187
** support for multiple [[BTS]] connected to the same E1 link (multi-loop configuration)
188
* Abis/IP support
189
** Abis/IP protocol with IPA multiplex for [[osmo-bts]] and [[nanoBTS]]
190
** RTP gateway to interoperate E1 based BTS and IP based BTS on one BSC and switch calls between them
191
* GPRS/EDGE support
192
** configuring the OML objects/attributes for GPRS and EDGE
193
** setting SYSTEM INFORMATION 13 via RSL
194
** configurable RAID/CGI/NSVCI/NSEI/BVCI
195
** have the PCU in the BTS interoperate a SGSN with Gb (NS-over-IP) interface
196
** beta state [[OsmoSGSN]] included along [[OpenBSC]]
197 1 laforge
198 33 ahuemer
199
h3. Things that are implemented but don't work yet or aren't tested yet
200
201
* dynamic PDCH / TCH switching
202
203
204
h3. Things that are not implemented
205
206
* Any type of transcoding of voice data (we leave this to the external MNCC handler / media gateway)
207
* [[CSD]] calls
208
* emergency call handling (works in [[osmo-bsc]], but not in [[osmo-nitb]])
209
210
211
h2. Authors
212
213
214
[[OpenBSC]] was mainly developed by "Harald Welte":http://laforge.gnumonks.org/ and Holger Freyther. 
215
216 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.
217
218 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)