Project

General

Profile

OpenBSC » History » Revision 36

Revision 35 (laforge, 02/21/2016 07:55 AM) → Revision 36/45 (laforge, 02/21/2016 03:06 PM)

{{>toc}} 

 *OpenBSC* is the current name for a software project that started with the name bs11-abis. 


 h2. What is [[OpenBSC]] 

 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 
 * as [[osmobsc:|OsmoBSC]], exposing an A interface towards an external MSC, or  
 * as [[osmonitb:|OsmoNITB]] (Network In The Box), whert implements a minimal subset of the [[BSC]], [[MSC]]. [[SMSC]] and [[HLR]].  

 The goal of the project is to 
 * provide a basis for experimentation and security research with GSM from the network side 
 * provide a zero-cost alternative for hands-on experience with GSM systems in education and training 
 * learn more about GSM networks on a lower level, particularly the practical aspects with real-world equipment 
 * provide a stable/reliable network-side GSM implementation for small networks that don't need millions of subscribers or 99.99999% availability 


 h2. Requirements 


 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! 

 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 
 * sysmocom "sysmoBTS":http://www.sysmocom.de/products/sysmobts (using [[OsmoBTS]]) 
 * "fairwaves":https://fairwaves.co [[UmSITE]] and [[UmDESK]] (using [[OsmoBTS]]) 
 * Siemens [[BS11|BS-11]] microBTS 
 * [[nanoBTS|ipaccess nanoBTS]] 

 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. 


 h2. Configurations / Modes 



 h3. [[OpenBSC]] network-in-the-box (NITB) mode 


 This is _very different_ from a classic GSM network in which the BSC is only one minor element in the distributed network consisting 
 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. 

 {{graphviz_link() 
 digraph G { 
 rankdir=LR  
 bs11->OpenBSC      [ label="Abis/E1" ] 
 nanobts->OpenBSC [ label="Abis/IP" ] 
 sysmobts->OpenBSC [ label="Abis/IP" ] 
 umsite->OpenBSC [ label="Abis/IP" ] 
 osmobts->OpenBSC [ label="Abis/IP" ] 
 bs11      [ label = "Siemens\nBS-11" ] 
 nanobts [ label = "ip.access\nnanoBTS" ] 
 sysmobts [ label = "sysmocom\nsysmoBTS" ] 
 umsite [ label = "fairwaves\nUmSITE" ] 
 osmobts [ label = "osmoBTS +\nSDR hardware" ] 
 OpenBSC [ label = "OpenBSC\nNITB" ] 
 } 
 }} 

 In order to use the NITB mode, you will use the [[osmo-nitb]] program. 


 h4. Interconnecting [[OpenBSC]] with an ISDN or SIP PBX 

 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]] 
 work together to create a setup like this: 

 {{graphviz_link() 
 digraph G { 
     rankdir=LR  
     bs11->OpenBSC      [ label="Abis/E1" ] 
     nanobts->OpenBSC [ label="Abis/IP" ] 
     sysmobts->OpenBSC [ label="Abis/IP" ] 
     umsite->OpenBSC [ label="Abis/IP" ] 
     osmobts->OpenBSC [ label="Abis/IP" ] 
     OpenBSC->LCR       [ label="MNCC Socket" ] 
     LCR->ISDN          [ label="E1/PRI/BRI" ] 
     LCR->SIP           [ label="SIP/RTP" ] 
     bs11       [ label = "Siemens\nBS-11" ] 
     nanobts    [ label = "ip.access\nnanoBTS" ] 
     sysmobts [ label = "sysmocom\nsysmoBTS" ] 
     umsite     [ label = "fairwaves\nUmSITE" ] 
     osmobts    [ label = "OsmoBTS +\nSDR hardware" ] 
     OpenBSC    [ label = "OpenBSC\nNITB" ] 
 } 
 }} 

 h3. [[OpenBSC]] in BSC-only mode 


 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 
 network and a MSC that can provide an A-over-IP interface using SCCP-lite 


 {{graphviz_link() 
 digraph G { 
     rankdir=LR; 
     bs11->OpenBSC      [ label="Abis/E1" ]; 
     nanobts->OpenBSC [ label="Abis/IP" ]; 
     sysmobts->OpenBSC [ label="Abis/IP" ] 
     umsite->OpenBSC [ label="Abis/IP" ]; 
     osmobts->OpenBSC [ label="Abis/IP" ]; 
     OpenBSC->MSC       [ label="A/SCCP-Lite/IP" ]; 
     subgraph core { 
         MSC->VLR; 
         MSC->HLR; 
         HLR->AUC; 
         label = "not included"; 
         color = blue; 
     } 
     bs11      [ label = "Siemens\nBS-11" ]; 
     nanobts [ label = "ip.access\nnanoBTS" ]; 
     sysmobts [ label = "sysmocom\nsysmoBTS" ] 
     umsite [ label = "fairwaves\nUmSITE" ]; 
     OpenBSC [ label = "OpenBSC\nosmo-bsc" ]; 
     osmobts [ label = "OsmoBTS +\nSDR hardware" ] 
 } 
 }} 

 In order to use the BSC-only mode, you will use the [[osmo-bsc]] program. 

 


 h2.    Misc 

 h3. Information related to a specific BTS model 

 {{child_pages(BTS_Hardware,depth=1)}} 

 Topics related to BTSs with classic E1 interface (non-IP based): 

 {{child_pages(E1-Interface)}} 

 h3. Miscellaneous Information 

 * [[HFC-E1|HFC-E1 Evaluation Board]] -- The E1 card we use for attaching classic E1 based A-bis links 
 * [[mISDN]] -- The Linux ISDN stack 

 * [[cellular-infrastructure:GSM]] -- Some links for starting to understand GSM 
 * [[cellular-infrastructure:LegalNotes]] -- Important Legal notes on operating GSM base stations 
 * [[FieldTests]] -- The [[OpenBSC]] field tests and their reports 

 h3. Howtos 

 * Standard configuration: 
 *** [[Building_OpenBSC]] -- Getting started with [[OpenBSC]] under Debian 
 *** [[multi-BTS_with_handover]] -- Connecting 2x BTS to a single BSC/NITB and enabling handover  

 * Advanced topics: 
 *** [[OpenBSC_with_Asterisk]] -- A comprehensive tutorial on setting up [[OpenBSC]] with Asterisk 
 *** [[OpenBSC_LCR]] -- [[OpenBSC]]+LCR with Asterisk (obsolete) 
 *** [[OpenBSC_LCR_Ubuntu1204]] -- Short installation guide for [[OpenBSC]] with Asterisk on Ubuntu 12.04 
 *** [[OpenBSC_Crypto]] -- Howto add A5/x cryptography support to your [[OpenBSC]] setup 
 *** [[SDR_OsmoTRX_network_from_scratch]] -- Building everything from scratch for SDR based hardware with [[OsmoTRX]], [[OsmoBTS]] and [[OsmoNITB]]. 

 * RF Topics: 
 *** [[cable_antenna]] -- Build new antennas for your BTS 
 *** [[ethernet_dummyload]] -- Use an old ethernet terminator as dummyload 
 *** [[10db_attenuator]] -- Turn 30mW into 3 mW 



 h2. Source code 



 h3. Releases 


 The [[OpenBSC]] project does not publish official releases.    Users are recommended to use the latest git master. 


 h3. Repository 

 You can check out the source code via 
 <pre> 
 git clone git://git.osmocom.org/openbsc.git 
 </code></pre> 
 or browse it at http://cgit.osmocom.org/cgit/openbsc/ 

 


 h2. Mailing list 


 There's a *developer* mailing list called openbsc@lists.osmocom.org 
 Subscription is available at "h2. IRC (Internet Relay Chat) 


 We have an IRC channel where some developers and users hang out.    You can find it at: 
 irc.freenode.net/#osmocom 


 h2. Project status 



 h3. Things that work 

 * Housekeeping 
 ** [[OML"httplistsosmocomorgmailmanlistinfoopenbsc]] Initialization of the BTS 
 ** Support for frequency hopping channels on BTS equipment that supports it (like BS-11) 
 ** [[RSL]] bringup, channel allocation, Channel required / Immediate Assign 
 * Mobility Management 
 ** Very simplistic [[HLR]] implemented as sqlite database 
 ** Non-secure Authorization using [[IMEI]]/[[IMSI]] and regular SIM cards. 
 ** Authentication using COMP128v1 if you have SIM cards with known Ki 
 ** [[IMEI]]/[[IMSI]] skimming of all phones that try to register with [[OpenBSC]] 
 ** Transmission of MM INFO packets with operator name and local time / timezone 
 ** paging of mobiles that are registered to the BTS 
 ** keeping track of which location area a phone has last performed location updating 
 ** in-call handover between multiple cells inside one BSC 
 * SMS Support 
 ** [[SMS]] reception and [[SMS]] sending, including routing between subscribers 
 ** Sending of SMS from [[OpenBSC]] command line 
 ** Sending and receiving of SMS through SMPP 
 * Voice Call Support 
 ** MO (Mobile Originated) and MT (Mobile Terminated) calls 
 ** TCH/F support with FR and EFR codec 
 ** TCH/H support with HR and AMR codec 
 * Cell Broadcast Support 
 * USSD (only for built-in USSD commands, no external interface) 
 * E1 support 
 ** demultiplex of the four 16k sub-channels with voice data contained in one [[E1]] timeslot 
 ** support for multiple [[TRX]] in one [[BTS]] 
 ** support for multiple [[BTS]] connected to the same E1 link (multi-loop configuration) 
 * Abis/IP support 
 ** Abis/IP protocol with IPA multiplex for [[osmo-bts]] and [[nanoBTS]] 
 ** RTP gateway to interoperate E1 based BTS and IP based BTS on one BSC and switch calls between them 
 * GPRS/EDGE support 
 ** configuring the OML objects/attributes for GPRS and EDGE 
 ** setting SYSTEM INFORMATION 13 via RSL 
 ** configurable RAID/CGI/NSVCI/NSEI/BVCI 
 ** have the PCU in the BTS interoperate a SGSN with Gb (NS-over-IP) interface 
 ** beta state [[OsmoSGSN]] included along [[OpenBSC]] 


 h3. Things that are implemented but don't work yet or aren't tested yet 

 * dynamic PDCH / TCH switching 


 h3. Things that are not implemented 

 * Any type of transcoding of voice data (we leave this to the external MNCC handler / media gateway) 
 * [[CSD]] calls 
 * emergency call handling (works in [[osmo-bsc]], but not in [[osmo-nitb]]) 


 h2. Authors 


 [[OpenBSC]] was mainly developed by "Harald Welte":http://laforge.gnumonks.org/ and Holger Freyther.  

 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. 

 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.
Add picture from clipboard (Maximum size: 48.8 MB)