Project

General

Profile

OpenBSC » History » Version 43

fixeria, 08/05/2018 04:40 PM

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