Project

General

Profile

OpenBSC » History » Version 29

ipse, 02/19/2016 10:47 PM
fairwaves.ru -> fairwaves.co

1 13 laforge
[[PageOutline]]
2 1 laforge
'''OpenBSC''' is the current name for a software program that started with the name bs11-abis.
3
4
== What is OpenBSC ==
5 2 laforge
It is a [wiki:BSC] (Base Station Controller) side implementation of the A-bis protocol, as implemented in the GSM Technical Specification 08.5x and 12.21.  It implements a minimal subset of the [wiki:BSC], [wiki:MSC] and [wiki:HLR].  It does not implement ant of the interfaces (like the A and B interfaces) between the higher-order GSM network components.
6 1 laforge
7
The goal of the project is to
8
 * provide a basis for experimentation and security research with GSM from the network side
9
 * document, publicized and point out any security related issues that we find as part of that
10
 * learn more about GSM networks on a lower level, particularly the practical aspects with real-world equipment
11
12 17 laforge
We '''are not primarily interested''' in
13 14 laforge
 * building a stable/reliable BSC/MSC for deployment in networks requiring high-9 (99.999....) availability
14 1 laforge
 * building something that follows the GSM spec to the last detail
15
 * disrupting actual commercial GSM network
16
17
== Requirements ==
18 13 laforge
19 17 laforge
While OpenBSC is mainly written in portable C99 code, there are is one non-portable parts: The E1 input driver requires a Linux kernel with mISDN support and an [wiki:E1] interface card compatible with [wiki:mISDN].  You only need this if you have an E1 based BTS.
20 1 laforge
21 25 ipse
To operate a GSM network, you not only need OpenBSC but of course also some kind of GSM [wiki:BTS].  The only currently tested configurations are with a
22 1 laforge
 * sysmocom [http://www.sysmocom.de/products/sysmobts sysmoBTS] (by means of [wiki:OsmoBTS])
23 29 ipse
 * [https://fairwaves.co fairwaves] UmSITE and UmDESK (using [wiki:OsmoBTS])
24 1 laforge
 * Siemens [wiki:BS11 BS-11] microBTS
25
 * [wiki:nanoBTS ip.access nanoBTS]
26 25 ipse
27
IF you feel geeky, you could also build a BTS yourself, using [http://code.google.com/p/umtrx/ UmTRX] SDR (Software Defined Radio) hardware and a usual PC with [wiki:OsmoBTS] software. The software installation is described at the [wiki:network_from_scratch] page.
28 1 laforge
29 17 laforge
== Configurations / Modes ==
30
31
=== OpenBSC network-in-the-box (NITB) mode ===
32
33
This is ''very different'' from a classic GSM network in which the BSC is only one minor element in the distributed network consisting
34
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.
35
36
{{{
37
#!graphviz
38
digraph G {
39
rankdir=LR 
40
bs11->OpenBSC    [ label="Abis/E1" ]
41
nanobts->OpenBSC [ label="Abis/IP" ]
42 22 laforge
sysmobts->OpenBSC [ label="Abis/IP" ]
43 27 ipse
umsite->OpenBSC [ label="Abis/IP" ]
44 23 ipse
osmobts->OpenBSC [ label="Abis/IP" ]
45 17 laforge
bs11    [ label = "Siemens\nBS-11" ]
46
nanobts [ label = "ip.access\nnanoBTS" ]
47 22 laforge
sysmobts [ label = "sysmocom\nsysmoBTS" ]
48 27 ipse
umsite [ label = "fairwaves\nUmSITE" ]
49 26 ipse
osmobts [ label = "osmoBTS +\nSDR hardware" ]
50 17 laforge
OpenBSC [ label = "OpenBSC\nNITB" ]
51
}
52
}}}
53
54 19 laforge
In order to use the NITB mode, you will use the [wiki:osmo-nitb] program.
55 1 laforge
56 24 ipse
==== Interconnecting OpenBSC with an ISDN or SIP PBX ====
57
If you want to connect calls outside of your OpenBSC based GSM network, you can have [http://isdn.eversberg.eu/ Linux Call Router] and OpenBSC
58 18 laforge
work together to create a setup like this:
59
60
{{{
61
#!graphviz
62
digraph G {
63
rankdir=LR 
64
bs11->OpenBSC    [ label="Abis/E1" ]
65
nanobts->OpenBSC [ label="Abis/IP" ]
66 22 laforge
sysmobts->OpenBSC [ label="Abis/IP" ]
67 27 ipse
umsite->OpenBSC [ label="Abis/IP" ]
68 23 ipse
osmobts->OpenBSC [ label="Abis/IP" ]
69 1 laforge
OpenBSC->LCR     [ label="MNCC Socket" ]
70 18 laforge
LCR->ISDN        [ label="E1/PRI/BRI" ]
71 24 ipse
LCR->SIP         [ label="SIP/RTP" ]
72 18 laforge
bs11    [ label = "Siemens\nBS-11" ]
73
nanobts [ label = "ip.access\nnanoBTS" ]
74 22 laforge
sysmobts [ label = "sysmocom\nsysmoBTS" ]
75 27 ipse
umsite [ label = "fairwaves\nUmSITE" ]
76 26 ipse
osmobts [ label = "osmoBTS +\nSDR hardware" ]
77 18 laforge
OpenBSC [ label = "OpenBSC\nNITB" ]
78
}
79
}}}
80
81 17 laforge
=== OpenBSC in BSC-only mode ===
82 1 laforge
83 17 laforge
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
84 18 laforge
network and a MSC that can provide an A-over-IP interface using SCCP-lite
85 17 laforge
86
{{{
87
#!graphviz
88
digraph G {
89
rankdir=LR;
90
bs11->OpenBSC    [ label="Abis/E1" ];
91
nanobts->OpenBSC [ label="Abis/IP" ];
92 22 laforge
sysmobts->OpenBSC [ label="Abis/IP" ]
93 27 ipse
umsite->OpenBSC [ label="Abis/IP" ]
94 23 ipse
osmobts->OpenBSC [ label="Abis/IP" ]
95 17 laforge
OpenBSC->MSC     [ label="A/SCCP-Lite/IP" ];
96 1 laforge
subgraph core {
97
  MSC->VLR;
98 17 laforge
  MSC->HLR;
99
  HLR->AUC;
100 18 laforge
  label = "not included";
101
  color = blue;
102 17 laforge
}
103
bs11    [ label = "Siemens\nBS-11" ];
104 1 laforge
nanobts [ label = "ip.access\nnanoBTS" ];
105 22 laforge
sysmobts [ label = "sysmocom\nsysmoBTS" ]
106 27 ipse
umsite [ label = "fairwaves\nUmSITE" ]
107 1 laforge
OpenBSC [ label = "OpenBSC\nosmo-bsc" ];
108 26 ipse
osmobts [ label = "osmoBTS +\nSDR hardware" ]
109 1 laforge
}
110 17 laforge
}}}
111 18 laforge
112
In order to use the BSC-only mode, you will use the [wiki:osmo-bsc] program.
113
114 12 laforge
== Source code ==
115 13 laforge
116 1 laforge
=== Releases ===
117
As we're a mostly research oriented project, we don't really have any releases yet.  This will likely change soon.
118
119
=== Development Version ===
120
You can check out the source code via
121 15 laforge
{{{
122 1 laforge
git clone git://git.osmocom.org/openbsc.git
123
}}}
124 18 laforge
or browse it at http://cgit.osmocom.org/cgit/openbsc/
125 1 laforge
126 3 laforge
== Mailing list ==
127 16 laforge
128 18 laforge
There's a '''developer''' mailing list called openbsc@lists.osmocom.org
129 1 laforge
Subscription is available at [http://lists.osmocom.org/mailman/listinfo/openbsc/]
130
131
== IRC (Internet Relay Chat) ==
132 13 laforge
133 1 laforge
We have an IRC channel where some developers and users hang out.  You can find it at:
134
irc.freenode.net/#openbsc
135
136
== Project status ==
137
138 13 laforge
=== Things that work ===
139 1 laforge
 * Housekeeping
140
  * [wiki:OML] Initialization of the BTS
141 14 laforge
  * Support for frequency hopping channels on BTS equipment that supports it (like BS-11)
142 13 laforge
  * [wiki:RSL] bringup, channel allocation, Channel required / Immediate Assign
143
 * Mobility Management
144
  * Very simplistic [wiki:HLR] implemented as sqlite database
145
  * Non-secure Authentication using [wiki:IMEI]/[wiki:IMSI] and regular SIM cards.
146 18 laforge
  * Authentication using COMP128v1 if you have SIM cards with known Ki
147 1 laforge
  * [wiki:IMEI]/[wiki:IMSI] skimming of all phones that try to register with OpenBSC
148 13 laforge
  * Transmission of MM INFO packets with operator name and local time / timezone
149
  * paging of mobiles that are registered to the BTS
150
  * keeping track of which location area a phone has last performed location updating
151
  * in-call handover between multiple cells inside one BSC
152
 * SMS Support
153
  * [wiki:SMS] reception and [wiki:SMS] sending, including routing between subscribers
154 18 laforge
  * Sending of SMS from OpenBSC command line
155 28 laforge
  * Sending of SMS through SMPP
156 13 laforge
 * Voice Call Support
157
  * MO (Mobile Originated) and MT (Mobile Terminated) calls
158
  * TCH/F support with FR and EFR codec
159
  * TCH/H support with AMR codec (in BSC-only configuration)
160
 * E1 support
161
  * demultiplex of the four 16k sub-channels with voice data contained in one [wiki:E1] timeslot
162
  * support for multiple [wiki:TRX] in one [wiki:BTS]
163
  * support for multiple [wiki:BTS] connected to the same E1 link (multi-loop configuration)
164 1 laforge
 * Abis/IP support
165 13 laforge
  * Abis/IP protocol for nanoBTS
166
  * RTP gateway to interoperate E1 based BTS and nanoBTS on one BSC and switch calls between them
167
 * GPRS/EDGE support
168
  * configuring the nanoBTS OML objects/attributes for GPRS and EDGE
169
  * setting SYSTEM INFORMATION 13 via RSL
170
  * configurable RAID/CGI/NSVCI/NSEI/BVCI
171 1 laforge
  * have the BTS interoperate a SGSN with Gb (NS-over-IP) interface
172 18 laforge
  * beta state [wiki:OsmoSGSN] included along OpenBSC
173 1 laforge
174 11 laforge
=== Things that are implemented but don't work yet or aren't tested yet ===
175 20 laforge
 * dynamic PDCH / TCH switching
176 7 laforge
177
=== Things being worked at ===
178 1 laforge
 *  GPS/DCF77 disciplined quartz reference for the HFC-E1 card (via HS-Esslingen, Student Research Project)
179
180 20 laforge
=== Things that are not implemented ===
181 2 laforge
 * Cell Broadcast
182 20 laforge
 * Any type of transcoding of voice data
183
 * TCH/H voice calls (they work in [wiki:osmo-bsc], but not in [wiki:osmo-nitb])
184 2 laforge
 * [wiki:CSD] calls
185 20 laforge
 * emergency call handling (works in [wiki:osmo-bsc], but not in [wiki:osmo-nitb])
186 4 laforge
 * Discontinuous TX and RX ([wiki:DTX] / [wiki:DRX]) support
187 2 laforge
188 1 laforge
== Authors ==
189
190 19 laforge
OpenBSC was mainly developed by [http://laforge.gnumonks.org/ Harald Welte] and Holger Freyther. Contributions by Dieter Spaar, Stefan Schmidt, Daniel Willmann, Jan Luebbe, Thomas Seiler and Andreas Eversberg.
191 1 laforge
192 11 laforge
Special thanks to Dieter Spaar for [wiki: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)