About OpenBSC
=============

OpenBSC started as a minimalistic all-in-one implementation of the GSM Network,
with particular emphasis on the functionality typically provided by the BSC,
MSC, HLR, VLR and SMSC.  Today it is a growing suite of libraries and programs,
implementing protocol stacks and functional elements, including

 * OsmoBSC - a pure GSM BSC, speaking Abis/IP to the BTS and A/IP to the MSC
 * OsmoBSC-MGCP - MGCP helper to the OsmoBSC software
 * OsmoNITB - a BSC+MSC+VLR+HLR+SMSC "Network in the box".
 * OsmoMSC - a voice CN with A/IP and IuCS/IP towards the BSC and/or HNB-GW
 * OsmoSGSN - a GPRS SGSN with Gb/IP and IuPS/IP towards the PCU and/or HNB-GW
 * Osmo-GbProxy - a Proxy to aggregate many Gb links as one Gb link to the SGSN
 * OsmoBSCNAT - a gateway aggregating many A links as one A link to the MSC
 * OsmoGTPHUB - a hub aggregating many GTP links (between SGSN and GGSN)
 * ipaccess-utils - some tools to discover + configure ip.access nanoBTS
 * bs11_config - a tool to configure the Siemens BS-11 microBTS

Various interfaces towards the BTS are supported, among which are:

 * Classic A-bis over E1 using a mISDN based E1 interface. In other
   words, you can connect existing GSM Base Transceiver Station (BTS)
   through E1 to OpenBSC.  So far, we have made it work with the Siemens BS-11,
   various Ericsson RBS2xxx BTS models and the Nokia MetroSite.

 * A-bis over IP as used by the ip.access nanoBTS product family as well as
   the Open Source OsmoBTS software (by the same authors as OpenBSC).  OsmoBTS
   in turn supports various transceiver hardware, including the sysmoBTS
   product family, as well as SDR transceivers supported by OsmoTRX, such as
   the UmTRX or USRP boardss.

 * IuCS and IuPS over IP towards an HNB-GW (see osmo-iuh) for UMTS (3G)
   voice and data links.

Find OpenBSC online at
http://openbsc.osmocom.org/

	Harald Welte <laforge@gnumonks.org>
