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