OpenBSC » History » Version 45
laforge, 11/02/2023 08:35 AM
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 | 45 | laforge | * sysmocom "sysmoBTS":http://sysmocom.de/products/sysmobts (using [[OsmoBTS]]) |
30 | 33 | ahuemer | * "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 | 44 | laforge | irc.libera.chat/#osmocom |
190 | 1 | laforge | |
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. |