OpenBSC » History » Version 34
laforge, 02/20/2016 09:14 PM
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 | <pre> |
||
44 | <code class="graphviz"> |
||
45 | 17 | laforge | digraph G { |
46 | rankdir=LR |
||
47 | 1 | laforge | bs11->OpenBSC [ label="Abis/E1" ] |
48 | 23 | ipse | nanobts->OpenBSC [ label="Abis/IP" ] |
49 | 17 | laforge | sysmobts->OpenBSC [ label="Abis/IP" ] |
50 | 27 | ipse | umsite->OpenBSC [ label="Abis/IP" ] |
51 | 26 | ipse | osmobts->OpenBSC [ label="Abis/IP" ] |
52 | 17 | laforge | bs11 [ label = "Siemens\nBS-11" ] |
53 | nanobts [ label = "ip.access\nnanoBTS" ] |
||
54 | 1 | laforge | sysmobts [ label = "sysmocom\nsysmoBTS" ] |
55 | umsite [ label = "fairwaves\nUmSITE" ] |
||
56 | osmobts [ label = "osmoBTS +\nSDR hardware" ] |
||
57 | 33 | ahuemer | [[OpenBSC]] [ label = "OpenBSC\nNITB" ] |
58 | 1 | laforge | } |
59 | 33 | ahuemer | </code></pre> |
60 | 1 | laforge | |
61 | 33 | ahuemer | In order to use the NITB mode, you will use the [[osmo-nitb]] program. |
62 | 17 | laforge | |
63 | 33 | ahuemer | |
64 | h4. Interconnecting [[OpenBSC]] with an ISDN or SIP PBX |
||
65 | |||
66 | 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]] |
||
67 | 18 | laforge | work together to create a setup like this: |
68 | 1 | laforge | |
69 | 33 | ahuemer | <pre> |
70 | <code class="graphviz"> |
||
71 | 18 | laforge | digraph G { |
72 | 22 | laforge | rankdir=LR |
73 | 23 | ipse | bs11->OpenBSC [ label="Abis/E1" ] |
74 | 18 | laforge | nanobts->OpenBSC [ label="Abis/IP" ] |
75 | sysmobts->OpenBSC [ label="Abis/IP" ] |
||
76 | 22 | laforge | umsite->OpenBSC [ label="Abis/IP" ] |
77 | 26 | ipse | osmobts->OpenBSC [ label="Abis/IP" ] |
78 | 33 | ahuemer | [[OpenBSC]]->LCR [ label="MNCC Socket" ] |
79 | 1 | laforge | LCR->ISDN [ label="E1/PRI/BRI" ] |
80 | 17 | laforge | LCR->SIP [ label="SIP/RTP" ] |
81 | 1 | laforge | bs11 [ label = "Siemens\nBS-11" ] |
82 | nanobts [ label = "ip.access\nnanoBTS" ] |
||
83 | sysmobts [ label = "sysmocom\nsysmoBTS" ] |
||
84 | umsite [ label = "fairwaves\nUmSITE" ] |
||
85 | osmobts [ label = "osmoBTS +\nSDR hardware" ] |
||
86 | 33 | ahuemer | [[OpenBSC]] [ label = "OpenBSC\nNITB" ] |
87 | 1 | laforge | } |
88 | 33 | ahuemer | </code></pre> |
89 | 1 | laforge | |
90 | |||
91 | 33 | ahuemer | h3. [[OpenBSC]] in BSC-only mode |
92 | |||
93 | |||
94 | 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 |
||
95 | 1 | laforge | network and a MSC that can provide an A-over-IP interface using SCCP-lite |
96 | |||
97 | 33 | ahuemer | <pre> |
98 | <code class="graphviz"> |
||
99 | 1 | laforge | digraph G { |
100 | rankdir=LR; |
||
101 | bs11->OpenBSC [ label="Abis/E1" ]; |
||
102 | nanobts->OpenBSC [ label="Abis/IP" ]; |
||
103 | sysmobts->OpenBSC [ label="Abis/IP" ] |
||
104 | umsite->OpenBSC [ label="Abis/IP" ] |
||
105 | osmobts->OpenBSC [ label="Abis/IP" ] |
||
106 | 33 | ahuemer | [[OpenBSC]]->MSC [ label="A/SCCP-Lite/IP" ]; |
107 | 1 | laforge | subgraph core { |
108 | MSC->VLR; |
||
109 | MSC->HLR; |
||
110 | HLR->AUC; |
||
111 | label = "not included"; |
||
112 | color = blue; |
||
113 | } |
||
114 | bs11 [ label = "Siemens\nBS-11" ]; |
||
115 | nanobts [ label = "ip.access\nnanoBTS" ]; |
||
116 | sysmobts [ label = "sysmocom\nsysmoBTS" ] |
||
117 | umsite [ label = "fairwaves\nUmSITE" ] |
||
118 | 33 | ahuemer | [[OpenBSC]] [ label = "OpenBSC\nosmo-bsc" ]; |
119 | 1 | laforge | osmobts [ label = "osmoBTS +\nSDR hardware" ] |
120 | } |
||
121 | 33 | ahuemer | </code></pre> |
122 | 1 | laforge | |
123 | 33 | ahuemer | In order to use the BSC-only mode, you will use the [[osmo-bsc]] program. |
124 | 17 | laforge | |
125 | 18 | laforge | |
126 | 33 | ahuemer | h2. Source code |
127 | 18 | laforge | |
128 | 12 | laforge | |
129 | 33 | ahuemer | |
130 | h3. Releases |
||
131 | |||
132 | |||
133 | The [[OpenBSC]] project does not publish official releases. Users are recommended to use the latest git master. |
||
134 | |||
135 | |||
136 | h3. Repository |
||
137 | |||
138 | 18 | laforge | You can check out the source code via |
139 | 33 | ahuemer | <pre> |
140 | 3 | laforge | git clone git://git.osmocom.org/openbsc.git |
141 | 33 | ahuemer | </code></pre> |
142 | 18 | laforge | or browse it at http://cgit.osmocom.org/cgit/openbsc/ |
143 | 1 | laforge | |
144 | |||
145 | 33 | ahuemer | h2. Mailing list |
146 | 13 | laforge | |
147 | 1 | laforge | |
148 | 33 | ahuemer | There's a *developer* mailing list called openbsc@lists.osmocom.org |
149 | Subscription is available at "h2. IRC (Internet Relay Chat) |
||
150 | |||
151 | |||
152 | 13 | laforge | We have an IRC channel where some developers and users hang out. You can find it at: |
153 | 1 | laforge | irc.freenode.net/#osmocom |
154 | |||
155 | 14 | laforge | |
156 | 33 | ahuemer | h2. Project status |
157 | 13 | laforge | |
158 | |||
159 | 30 | laforge | |
160 | 33 | ahuemer | h3. Things that work |
161 | 13 | laforge | |
162 | 33 | ahuemer | * Housekeeping |
163 | ** [[OML"httplistsosmocomorgmailmanlistinfoopenbsc]] Initialization of the BTS |
||
164 | ** Support for frequency hopping channels on BTS equipment that supports it (like BS-11) |
||
165 | ** [[RSL]] bringup, channel allocation, Channel required / Immediate Assign |
||
166 | * Mobility Management |
||
167 | ** Very simplistic [[HLR]] implemented as sqlite database |
||
168 | ** Non-secure Authorization using [[IMEI]]/[[IMSI]] and regular SIM cards. |
||
169 | ** Authentication using COMP128v1 if you have SIM cards with known Ki |
||
170 | ** [[IMEI]]/[[IMSI]] skimming of all phones that try to register with [[OpenBSC]] |
||
171 | ** Transmission of MM INFO packets with operator name and local time / timezone |
||
172 | ** paging of mobiles that are registered to the BTS |
||
173 | ** keeping track of which location area a phone has last performed location updating |
||
174 | ** in-call handover between multiple cells inside one BSC |
||
175 | * SMS Support |
||
176 | ** [[SMS]] reception and [[SMS]] sending, including routing between subscribers |
||
177 | ** Sending of SMS from [[OpenBSC]] command line |
||
178 | ** Sending and receiving of SMS through SMPP |
||
179 | * Voice Call Support |
||
180 | ** MO (Mobile Originated) and MT (Mobile Terminated) calls |
||
181 | ** TCH/F support with FR and EFR codec |
||
182 | ** TCH/H support with HR and AMR codec |
||
183 | * Cell Broadcast Support |
||
184 | * USSD (only for built-in USSD commands, no external interface) |
||
185 | * E1 support |
||
186 | ** demultiplex of the four 16k sub-channels with voice data contained in one [[E1]] timeslot |
||
187 | ** support for multiple [[TRX]] in one [[BTS]] |
||
188 | ** support for multiple [[BTS]] connected to the same E1 link (multi-loop configuration) |
||
189 | * Abis/IP support |
||
190 | ** Abis/IP protocol with IPA multiplex for [[osmo-bts]] and [[nanoBTS]] |
||
191 | ** RTP gateway to interoperate E1 based BTS and IP based BTS on one BSC and switch calls between them |
||
192 | * GPRS/EDGE support |
||
193 | ** configuring the OML objects/attributes for GPRS and EDGE |
||
194 | ** setting SYSTEM INFORMATION 13 via RSL |
||
195 | ** configurable RAID/CGI/NSVCI/NSEI/BVCI |
||
196 | ** have the PCU in the BTS interoperate a SGSN with Gb (NS-over-IP) interface |
||
197 | ** beta state [[OsmoSGSN]] included along [[OpenBSC]] |
||
198 | 1 | laforge | |
199 | 33 | ahuemer | |
200 | h3. Things that are implemented but don't work yet or aren't tested yet |
||
201 | |||
202 | * dynamic PDCH / TCH switching |
||
203 | |||
204 | |||
205 | h3. Things that are not implemented |
||
206 | |||
207 | * Any type of transcoding of voice data (we leave this to the external MNCC handler / media gateway) |
||
208 | * [[CSD]] calls |
||
209 | * emergency call handling (works in [[osmo-bsc]], but not in [[osmo-nitb]]) |
||
210 | |||
211 | |||
212 | h2. Authors |
||
213 | |||
214 | |||
215 | [[OpenBSC]] was mainly developed by "Harald Welte":http://laforge.gnumonks.org/ and Holger Freyther. |
||
216 | |||
217 | 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. |
218 | |||
219 | 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. |