Project

General

Profile

OpenBSC » History » Version 17

laforge, 02/19/2016 10:47 PM
add some graphviz diagrams + text about bsc_hack vs osmo-bsc

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 13 laforge
To opertate 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
 * Siemens [wiki:BS11 BS-11] microBTS
23
 * [wiki:nanoBTS ip.access nanoBTS]
24
25 17 laforge
== Configurations / Modes ==
26
27
=== OpenBSC network-in-the-box (NITB) mode ===
28
29
This is ''very different'' from a classic GSM network in which the BSC is only one minor element in the distributed network consisting
30
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.
31
32
{{{
33
#!graphviz
34
digraph G {
35
rankdir=LR 
36
bs11->OpenBSC    [ label="Abis/E1" ]
37
nanobts->OpenBSC [ label="Abis/IP" ]
38
bs11    [ label = "Siemens\nBS-11" ]
39
nanobts [ label = "ip.access\nnanoBTS" ]
40
OpenBSC [ label = "OpenBSC\nNITB" ]
41
}
42
}}}
43
44
In order to use the NITB mode, you will use the [wiki:bsc_hack] program.
45
46
=== OpenBSC in BSC-only mode ===
47
48
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
49
network and a BSC that can provide an A-over-IP interface using SCCP-lite
50
51
{{{
52
#!graphviz
53
digraph G {
54
rankdir=LR;
55
bs11->OpenBSC    [ label="Abis/E1" ];
56
nanobts->OpenBSC [ label="Abis/IP" ];
57
OpenBSC->MSC     [ label="A/SCCP-Lite/IP" ];
58
subgraph core {
59
  label = "not included";
60
  color = blue;
61
  MSC->VLR;
62
  MSC->HLR;
63
  HLR->AUC;
64
}
65
bs11    [ label = "Siemens\nBS-11" ];
66
nanobts [ label = "ip.access\nnanoBTS" ];
67
OpenBSC [ label = "OpenBSC\nosmo-bsc" ];
68
}
69
}}}
70 1 laforge
== Source code ==
71 12 laforge
72
=== Releases ===
73 13 laforge
As we're a mostly research oriented project, we don't really have any releases yet.  This will likely change soon.
74 1 laforge
75
=== Development Version ===
76
You can check out the source code via
77
{{{
78 15 laforge
git clone git://git.osmocom.org/openbsc.git
79 1 laforge
}}}
80 13 laforge
or browse it at http://openbsc.gnumonks.org/trac/browser
81 1 laforge
82 3 laforge
== Mailing list ==
83
84 16 laforge
There's a developer mailing list called openbsc@lists.osmocom.org
85
Subscription is available at [http://lists.osmocom.org/mailman/listinfo/openbsc/]
86 1 laforge
87
== IRC (Internet Relay Chat) ==
88
89 13 laforge
We have an IRC channel where some developers and users hang out.  You can find it at:
90 1 laforge
irc.freenode.net/#openbsc
91
92
== Project status ==
93
94
=== Things that work ===
95 13 laforge
 * Housekeeping
96 1 laforge
  * [wiki:OML] Initialization of the BTS
97 14 laforge
  * Support for frequency hopping channels on BTS equipment that supports it (like BS-11)
98 13 laforge
  * [wiki:RSL] bringup, channel allocation, Channel required / Immediate Assign
99
 * Mobility Management
100
  * Very simplistic [wiki:HLR] implemented as sqlite database
101
  * Non-secure Authentication using [wiki:IMEI]/[wiki:IMSI] and regular SIM cards.
102
  * [wiki:IMEI]/[wiki:IMSI] skimming of all phones that try to register with OpenBSC
103
  * Transmission of MM INFO packets with operator name and local time / timezone
104
  * paging of mobiles that are registered to the BTS
105
  * keeping track of which location area a phone has last performed location updating
106
  * in-call handover between multiple cells inside one BSC
107
 * SMS Support
108
  * [wiki:SMS] reception and [wiki:SMS] sending, including routing between subscribers
109
  * Sending of SMS from OpenBSC commandline
110
  * Sending of SMS from external applications by writing to the SQL tables
111
 * Voice Call Support
112
  * MO (Mobile Originated) and MT (Mobile Terminated) calls
113
  * TCH/F support with FR and EFR codec
114
  * TCH/H support with AMR codec (in BSC-only configuration)
115
 * E1 support
116
  * demultiplex of the four 16k sub-channels with voice data contained in one [wiki:E1] timeslot
117
  * support for multiple [wiki:TRX] in one [wiki:BTS]
118
  * support for multiple [wiki:BTS] connected to the same E1 link (multi-loop configuration)
119
 * Abis/IP support
120
  * Abis/IP protocol for nanoBTS
121
  * RTP gateway to interoperate E1 based BTS and nanoBTS on one BSC and switch calls between them
122
 * GPRS/EDGE support
123
  * configuring the nanoBTS OML objects/attributes for GPRS and EDGE
124
  * setting SYSTEM INFORMATION 13 via RSL
125
  * configurable RAID/CGI/NSVCI/NSEI/BVCI
126 1 laforge
  * have the BTS interoperate a SGSN with Gb (NS-over-IP) interface
127 14 laforge
  * pre-alpha state [wiki:OsmoSGSN] included in OpenBSC
128 1 laforge
129 11 laforge
=== Things that are implemented but don't work yet or aren't tested yet ===
130
 * GPRS support (SGSN + GGSN inside OpenBSC)
131 2 laforge
 * Support the use of A3/A8 and A5/1 (we need SIM cards with known Ki, e.g. simulated SIM cards)
132 7 laforge
133
=== Things being worked at ===
134
 *  GPS/DCF77 disciplined quartz reference for the HFC-E1 card (via HS-Esslingen, Student Research Project)
135 2 laforge
136 1 laforge
=== Things that are missing ===
137 2 laforge
 * Cell Broadcast
138 11 laforge
 * transcoding of voice data
139 1 laforge
 * TCH/H voice calls (in standalone config)
140 2 laforge
 * [wiki:CSD] calls
141
 * emergency call handling
142 4 laforge
 * Discontinuous TX and RX ([wiki:DTX] / [wiki:DRX]) support
143 2 laforge
144 1 laforge
== Authors ==
145
146 9 laforge
OpenBSC was mainly developed by [http://laforge.gnumonks.org/ Harald Welte]. Contributions by Holger Freyther, Stefan Schmidt, Daniel Willmann, Jan Luebbe, Thomas Seiler and Andreas Eversberg.
147 1 laforge
148 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)