diff options
Diffstat (limited to '2016')
-rw-r--r-- | 2016/netdevconf-osmocom/running-foss-gsm.adoc | 185 |
1 files changed, 6 insertions, 179 deletions
diff --git a/2016/netdevconf-osmocom/running-foss-gsm.adoc b/2016/netdevconf-osmocom/running-foss-gsm.adoc index 53be318..dadfdfd 100644 --- a/2016/netdevconf-osmocom/running-foss-gsm.adoc +++ b/2016/netdevconf-osmocom/running-foss-gsm.adoc @@ -12,9 +12,8 @@ Running FOSS Cellular Networks on Linux [role="incremental"] * Implementing GSM/GPRS network elements as FOSS -* Applied Protocol Archeology +* Applied Protocol Archaeology * Doing all of that on top of Linux (in userspace) -* If you expeccted kernel stuff, you'll be disappointed == Running your own Internet-style network @@ -216,10 +215,11 @@ image::osmo-bts.svg[] ** `osmo-bts-octphy`: Octasic OCTBTS hardware / OCTSDR-2G PHY ** `osmo-bts-litecell15`: Nutaq Litecell 1.5 hardware/PHY +See separate talk about BTS hardware options later today. == Configuring Osmocom software -* all Osmo* GSM infrastructure programs share common architecture, as +* all _native_ Osmo* GSM infrastructure programs share common architecture, as defined by various libraries 'libosmo{core,gsm,vty,abis,netif,...}' * part of this is configuration handling ** interactive configuration via command line interface (*vty*), similar @@ -260,6 +260,7 @@ BTS settings are configured in the BSC/NITB configuration file. source tree / git repository * just your usual `git clone && autoreconf -fi && ./configure && make install` ** (in reality, the `libosmo*` dependencies are required first...) +* nightly packages for Debian 8, Ubuntu 16.04 and 16.10 available * 'OsmoNITB' runs on any Linux system, like your speakers' laptop ** you can actually also run it on the ARM/Linux of the 'sysmoBTS' itself, having a literal 'Network In The Box' with power as only external @@ -445,7 +446,7 @@ digraph G { PCU->SGSN [label="Gb"] SGSN->GGSN [label="GTP"] } -} + ---- * 'PCU': Packet Control Unit. Runs RLC+MAC @@ -517,168 +518,6 @@ digraph G { We need to configure those additional components to provide GPRS services. -== Simplified OsmoNITB network with GPRS - -image::osmocom-gprs.svg[width=750] - -//* show IP addresses at nodes -//* show GSM functional elements, Osmocom programs and hardware - - -== Configuring OsmoPCU - -We assume we have obtained and compiled the `osmo-pcu` from -git://git.osmocom.org/osmo-pcu - -* 'OsmoPCU' runs co-located with 'OsmoBTS' to access/share the same PHY + Radio -* 'OsmoPCU' is primarily configured from 'OsmoBTS' -* 'OsmoBTS' receives relevant config via A-bis OML -* 'OsmoNITB' sends those OML messages to OsmoBTS -** we thus need to set the PCU configuration in the NITB config file! - - -== BTS config for GPRS (in OsmoNITB) - ----- - bts 0 - gprs mode gprs <1> - gprs nsei 1234 <2> - gprs nsvc 0 nsvci 1234 <3> - gprs nsvc 0 local udp port 23000 <4> - gprs nsvc 0 remote ip 192.168.1.11 <5> - gprs nsvc 0 remote udp port 23000 <6> ----- -<1> enable `gprs` or `egprs` mode -<2> NSEI for the NS protocol layer (unique for each PCU in SGSN) -<3> NSVCI for the NS protocol layer (unique for each PCU in SGSN) -<4> UDP port on PCU side of Gb connection -<5> IP address of SGSN side of Gb connection -<6> UDP port on SGSN side of Gb connection - - -== Configuring OsmoSGSN (Gb and GTP) - ----- -ns - encapsulation udp local-ip 192.168.100.11 <1> - encapsulation udp local-port 23000 <2> -sgsn - gtp local-ip 127.0.0.2 <3> - ggsn 0 remote-ip 127.0.0.1 <4> - ggsn 0 gtp-version 1 <5> - apn * ggsn 0 <6> ----- -<1> SGSN-local IP address for Gb connection from PCUs -<2> SGSN-local UDP port number for Gb connection from PCUs -<3> SGSN-local IP address for GTP connection to GGSN -<4> remote IP address for GTP connection to GGSN -<5> GTP protocol version for this GGSN -<6> route all APN names to GGSN 0 - - -== Configuring OsmoSGSN (subscribers) - -'OsmoSGSN' (still) has no access to the 'OsmoNITB' HLR, thus all IMSIs -permitted to use GPRS services need to be explicitly configured. - ----- -sgsn - auth-policy closed <1> - imsi-acl add 262778026147135 <2> ----- -<1> only allow explicitly authorized/white-listed subscribers -<2> add given IMSI to the white-list of subscribers - - -== Setting up OpenGGSN - -In `ggsn.cfg` we need to set: - ----- -listen 172.0.0.1 <1> -net 10.23.24.0/24 <2> -dynip 10.23.42.0/24 <3> -pcodns1 8.8.8.8 <4> ----- -<1> IP address to bind GSN to. -<2> network/mask of `tun` device -<3> pool of dynamic IP addresses allocated to PDP contexts -<4> IP address of DNS server (communicated to MS via signalling) - - -== Testing GPRS - -* Check if `osmo-pcu`, `osmo-sgsn`, `openggsn` are running -* Check if NS and BSSGP protocols are UNBLOCKED at SGSN -** If not, check your NS/BSSGP configuration -* Check for GPRS registration using `logging level mm info` in SGSN - - -== Osmocom beyond GSM/GPRS RAN + NITB - -* Smalltalk implementation of SIGTRAN + TCAP/MAP -* Erlang implementation of SIGTRAN + TCAP/MAP -* Lots of special-purpose protocol mangling -** `bsc-nat` to introduce NAT-like functionality on A (BSSAP/BSSMAP) -** `mgw-nat` to transparently re-write MAP/ISUP/SCCP -* GSMTAP pseudo-header for feeding non-IP protocols into wireshark -* SIM card protocol tracer hardware + software -* Lots of non-GSM projects from hardware to protocol stacks (TETRA, GMR, DECT, OP25) -* check http://git.osmocom.org/ for full project list - - -== So... I heard about OpenBTS? - -* OpenBTS is completely unrelated to the Osmocom stack -* was independently developed by David Burgess & Harvind Simra -** Kestrel Signal Processing -> Range Networks -* doesn't follow GSM system architecture at all -** no Abis, BSC, PCU, SGSN, GGSN -* is a bridge of the GSM air interface (Um) to SIP -* Osmocom follows classic GSM interfaces / system architecture -* 'OsmoTRX' forked 'OpenBTS' SDR code to use 'OsmoBTS' with SDR hardware - - -== Outlook on FOSS 2.75G (EDGE) - -* EDGE extends GPRS with higher data rates -** 8PSK instead of GMSK modulation -** lots of new MAC/RLC features (larger windows, incremental redundancy) -** No changes required in 'OmsoSGSN' and 'OsmoGGSN' -* 'OsmoPCU' is extended with EDGE support -* First working minimal subset published last week - - -== Outlook on FOSS 3G (UMTS/WCDMA) - -* UMTS very similar to GSM/GPRS in principle -** still, almost every interface and protocol stack has changed -** all elements have been renamed -> more acronyms to learn -* UMTS is ridiculously complex, particular PHY + Layer 2 -** however, control plane L3 (MM/CC/CM/SM/GMM) mostly the same -* Implementing all of that from scratch is a long journey -* We've already reached 'Peak 3G' -* Osmocom 3G support strategy -** Implement Iu interface in NITB and SGSN -** Implement HNB-GW to offer Iuh interface -** Use existing femtocell / small cell hardware with proprietary PHY, RLC and MAC -** Status: Started in October 2015, WIP. Overall completion > 50%. - - -== Outlook on FOSS 4G (LTE) - -* LTE has nothing in common with 2G/3G -* various FOSS activities -** 'OpenAirInterface' has some code for a software eNodeB -*** but they switched from GPLv3 to 'non-free' license :( -** 'srsLTE' (main focus on UE side, but large parts usable for eNodeB side) -** 'OpenLTE' is another active FOSS project -* No Osmocom involvement so far -** team is small, project scope of cellular infrastructure is gigantic -** most customer funding currently still on GSM/GPRS/EDGE -** if we'd start, we'd start implementing MME + S-GW and use existing LTE cells - - == The End * so long, and thanks for all the fish @@ -688,16 +527,4 @@ pcodns1 8.8.8.8 <4> * have fun exploring mobile technologies using Osmocom * interested in working with more acronyms? Come join the project! -* Check out http://openbsc.osmocom.org/ and openbsc@lists.osmocom.org - -== Thanks to - -* Pablo for running netdevconf and inviting me -* the entire Osmocom team for what they have achieved -** notably Dieter Spaar, Holger Freyther, Andreas Eversberg, Sylvain Munaut -* last but not least: CEPT for making the GSM specs English -** (who'd want to read French specs anyway?) - - - - +* Check out https://osmocom.org/ and openbsc@lists.osmocom.org |