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. |