Project

General

Profile

News

New Osmocom Cellular software versions released!

Added by laforge 17 days ago

The Osmocom project has released new version of the CNI (Cellular Network Infrastructure) software, including OsmoBTS, OsmoBSC, OsmoMGW, OsmoMSC, OsmoHLR, OsmoSGSN, OsmoGGSN.

Thosw new tagged/released versions contain half a year of work since the previous versions released in early November 2017. The primary focus was on bug-fixing and stabilization. Many bugs were introduced during the split of the NITB into individual network elements during 2017, and even more bugs exposed by our ever-growing test coverage, particularly in the Osmocom TTCN-3 test suites.

All-in-all, the post-NITB stack has gained a lot in terms of spec compliance, robustness, stability and features during this period.

You can find pew-compiled binary packages of our latest release for a variety of Debian and Ubuntu GNU/Linux versions at
Latest_Builds.

The developer performing the release related work was Pau Espin. Thanks!

List of tagged versions and link to related ChangeLog

Project Version Changelog
libosmocore 0.11.0 http://git.osmocom.org/libosmocore/plain/debian/changelog?h=0.11.0
libosmo-abis 0.5.0 http://git.osmocom.org/libosmo-abis/plain/debian/changelog?h=0.5.0
libosmo-netif 0.2.0 http://git.osmocom.org/libosmo-netif/plain/debian/changelog?h=0.2.0
OsmoTRX 0.4.0 http://git.osmocom.org/osmo-trx/plain/debian/changelog?h=0.4.0
OsmoBTS 0.8.0 http://git.osmocom.org/osmo-bts/plain/debian/changelog?h=0.8.0
OsmoBSC 1.2.0 http://git.osmocom.org/osmo-bsc/plain/debian/changelog?h=1.2.0
OsmoMSC 1.2.0 http://git.osmocom.org/osmo-msc/plain/debian/changelog?h=1.2.0
OsmoHLR 0.2.1 http://git.osmocom.org/osmo-hlr/plain/debian/changelog?h=0.2.1
osmo-mgw 1.3.0 http://git.osmocom.org/osmo-mgw/plain/debian/changelog?h=1.3.0
osmo-sip-connector 1.1.0 http://git.osmocom.org/osmo-sip-connector/plain/debian/changelog?h=1.1.0
OsmoSTP 0.9.0 http://git.osmocom.org/libosmo-sccp/plain/debian/changelog?h=0.9.0
OsmoSGSN 1.3.0 http://git.osmocom.org/osmo-sgsn/plain/debian/changelog?h=1.3.0
OsmoGGSN 1.2.1 http://git.osmocom.org/osmo-ggsn/plain/debian/changelog?h=1.2.1

Notworthy Changes

Misc

  • GnuTLS fall-back for obtaining randomness
  • support for three-digit MNC throguhout the code-base
  • add talloc introspection via VTY
  • tighter CRTL input parsing
  • stricter VTY config file parsing
  • allow to print only basename of source code file in logging
  • print log level with color-keying of the level name

OsmoTRX

  • OsmoTRX has now a VTY interface and uses Osmocom-style logging + config file
  • use GNU autotest, like other osmocom projects
  • re-introduce support for USRP1 devices
  • build multiple binaries rather than selecting UHD / USRP1 at compile time
  • EFR decoding fixes
  • fix dynamic detection/use of CPU optimization (SSE3 vs SSSE3)
  • various parsing/encoding fixes for trx-control interface
  • add example config file for USRP B200

OsmoBTS

  • higher accuracy reporting of time of arrival
  • fix LAPDm UA memory leak
  • put useful information into RTCP SDES packets
  • fix AMR DTX FSM related crash
  • many fixes related to measurement processing + reporting
  • more robust RSL message parsing + error reporting
  • implement DELETE INDICATION on AGCH overflow
  • fix crashes in IPA DLCX processing
  • fix operation without System Information Type 1

OsmoBSC

  • support all types of Cell Identifier Lists in BSSMAP PAGING
  • fix intra-BSC hand-over (used to work in NITB)
  • fix various error paths in hand-over logic
  • introduce new "handover 2" algorithm from Andreas Eversberg
  • introduce load-based hand-over to balance channel load between overlapping BTSs
  • implement SI2ter + SI2bis rest octets
  • switch to osmo-mgw for handling media/user plane (instead of old osmo-bsc_mgcp)
  • introduce osmo_fsm for subscriber_connection
  • reduce several GSM timers to more reasonable default values (T3113, T3109, T3101, ...)
  • permit codec list with both TCH/F and TCH/H channels
  • permit network supporting more than one A5 cipher
  • fix missing L2 pseudo-length in SI5/SI6 messages
  • introduce Access Control Class (ACC) ramping to deal with overload situations on network power-up
  • switch to "late assignment" by default (we used to do early / very early assignment)
  • many fixes related to 3GPP spec / protocol compliance

OsmoMSC

  • fix various use-after-free in GSUP and CC
  • fix GSM-MILENAGE in presence of 2G keys
  • cancel all paging on IMSI DETACH
  • many fixes related to 3GPP spec / protocol compliance
  • permit network supporting more than one A5 cipher
  • properly pass bearer capabilities between MNCC and CC
  • switch to osmo-mgw for handling media/user plane (instead of old osmo-bsc_mgcp)
  • use dynamic MGCP endpoint allocation using wildcard
  • migrate away from openssl to new libosmocore rand abstraction
  • fixes related to SMS validity time
  • delete expired SMS automatically
  • fix transmission of MM INFO messages
  • fix SMS to non-local subscriber

OsmoHLR

  • fix various crashes
  • fix response to PURGE_MS
  • notify GSUP clients (MSC, SGSN) when HLR subscriber information changes

OsmoMGW (and libosmo-mgcp-client)

  • Introduce osmo_fsm client API
  • various fixes of SDP parser
  • significantly improved compliance with MGCP spec
  • wildcarded endpoint allocation in CRCX

osmo-sip-connector

  • integrate libsofia-sip logging with libosmocore logging
  • add systemd service file

OsmoSTP (and libosmo-sigtran)

  • fix various memory leaks
  • introduce IPA/SCCPlite support (allows translation of SCCPlite to M3UA/SUA)

OsmoSGSN

  • fix some crashes
  • migrate away from openssl to new libosmocore rand abstraction
  • fix display of GTP addresses in VTY

OsmoGGSN (and libgtp)

  • re-introduce support for kernel GTP acceleration (was temporarily removed when migrating from OpenGGSN)
  • fix byte-order of IPCP IPv4 DNS server addresses
  • add support for IPv4v6 End User Addresses
  • Validate packet src addr from MS
  • various sgsnemu fixes

Osmocom nightly + latest feeds for Ubuntu 18.04

Added by laforge 29 days ago

As Ubuntu 18.04 (Bionic Beaver) has been released two days ago, Osmocom has enabled Binary_Packages builds for this new distribution in both nightly and latest. As a result, you can now use our binary package feeds on this most recent incarnation of Ubuntu just like on the other supported distributions.

This was relatively easy due to the openSUSE Build Service (OBS) immediately adding support for Ubuntu 18.04. so all we had to o is enable it, and fix up some minor failures. Thanks to OBS for making supporting new distributions very easy!

2017 Osmocom Cellular Infrastructure Review

Added by laforge 5 months ago

Osmocom Review 2017

This is a review of the most significant changes and events in the Osmocom Cellular Infrastructure projects in 2017

January 2017

  • announce of first ever public OsmoCon conference in April
  • osmo-bts
    • Add Abis OML failure event reporting
    • fix memory leaks in osmo-bts-{sysmo,lc15} at every channel activation
  • openbsc/osmo-bsc
    • support multiple UARFCNs in SI2quater
  • osmo-hlr
    • add test suite for 2G and 3G authentication
    • fix UMTS AKA re-sync

February 2017

  • weekly manual testing with related weekly test reports to mailing list
  • heads-up about the (lack of a )future of osmo-nitb
  • heads-up about libosmo-sccp SIGTRAN work
  • sysmo-usim-tool
  • libosmo-abis
    • unix domain socket support (for Ericsson L2TP)
  • osmo-bts
    • fix AMR HR DTX FSM logic
    • fix SACCH sending fo system information with enum value > 7
    • osmo-bts-trx: fix RXGAIN and POWER parameters on second TRX
    • fix TCH/H interleaving table bit position
    • sysmoBTS 1020/1100: slow power ramp-up on TRX enable
  • osmo-sgsn
    • fix PDP context activation memory allocation bug
    • integrate support for UMTS AKA
  • openggsn
    • fix kernel-gtp tunnel creation/removal for GTPv1
    • release 0.93

March 2017

  • cgit improvements (about page, change-ID hyperlinks, issue hyperlinks)
  • Add README.md files to all our repositories
  • libosmocore
    • migrate gsm 05.03 coding from OsmoBTS to libosmocore
    • fix SQN / SEQ handling in UMTS AKA
    • 3GPP AoIP message encoding/decoding
  • libosmo-abis
    • fix ever-increasing jitter buffer
  • libosmo-netif
    • handle SCTP in in stream server
    • doxygen documentation on stream an datagram modules
  • osmo-bts
    • octphy: CBCH support
    • include MS timing offset in RSL measurements
  • osmo-sgsn
    • handle IMSIs with leading zeroes
  • osmo-bsc
    • fix T3186 encoding in SI13
    • Improved Ericsson OM2000/RBS2000 support
    • new ctrl2soap proxy in python
  • osmo-hlr
    • add CTRL interface
    • fix SQN/SEQ handling in UMTS AKA

April 2017

  • update of coding style for longer line lengths
  • OsmoCon2017 and OsmoDevCon2017
  • libosmocore
  • libosmo-netif
    • fix file descriptor leak in error paths
    • work around linux kenrel SCTP bug with sender_dry_events
    • RTP marker bit support
  • libosmo-sccp
    • Add new [[libosmo-sigtran:]] library with SS7 AS/ASP Link/Linkset handling, M3UA support, new FSM based SCCP implementation
    • Add osmo-stp program
  • osmo-bts
    • inform BSC of PCU disconnect
    • fix measurement reporting period
    • exclude idle channels from uplink measurement processing
    • octphy: measurement reports

May 2017

  • libosmocore
    • fix embedded builds
    • import and generalise 'sercomm' from osmocom-bb into libosmocore
    • SSE optimized convolutional coder
    • fix wrong GSM FR codec SID frame generation
    • doxygen docs for libosmocoding
  • osmo-bsc
    • TS 04.14 mobile station side loop control
  • osmo-bts
    • consistently check all RSL and OML TLVs for minimum length value
    • fix bit-order in every HR codec parameter (spec compliance)
    • OML get/set attribute handling
    • SI2quater support
    • bypass radio link timeout for lab testing
  • osmo-bsc
    • PCU socket support for BSC-colocated PCU for Ericsson RBS2000
    • reelase 1.0.1
  • M3UA and SUA testing as part of jenkins
  • osmo-gsm-tester produces successful runs with NITB as well as new AoIP

June 2017

  • libosmocore
    • doxygen autobrief
    • doxygen documentation for libosmogb
  • osmo-bts
    • use CLOCK_MONOTONIC timer for GSM frame timer
    • PDTCH loopback support

July 2017

  • Plan for openbsc.git split and code review
  • libosmocore
    • PDP charging characteristics in GSUP
    • PRBS sequence generators
    • multicast IP related helper functions
    • 'make release' target
  • libosmo-sccp
    • SCCP address book
  • osmo-bts
    • new virtual BTS osmo-bts-virtual for testing without radio hardware
    • don't send dummy UI frames on unused BCCH slots on TC=5
    • GSMTAP: don't log/send fill frames consisting of only padding
  • osmo-hlr
    • change to default GSUP port 4222

August 2017

  • Support for SMPP Delivery Receipt / GSM03.40 Status Report
  • Jenkins now executing M3UA, SUA and GGSN testsuite
  • libosmocore
    • fix crash in lapd_est_req()
  • libosmo-abis
    • release 0.4.0
  • osmo-bts
    • osmo-bts-trx: fix MS power control loop
    • release 0.6.0
    • support sending/removing SI13 to/from PCU
  • osmo-bsc
    • indicate R99+ MSC in SI3 to enable UMTS AKA over GERAN
  • osmo-sgsn
    • properly report GERAN/UTRAN mode in PDP CTX ACT REQ to GGSN
  • osmo-msc
    • implement IuCS support
    • split openbsc.git into osmo-bsc.git, osmo-msc.git and osmo-sgsn.git
  • openggsn
    • Add IPv6 address pool and IPV6 user (inner) plane support
    • release 0.94

September 2017

  • libosmocore.git
  • osmo-hlr
    • CTRL interface tests
  • openggsn
    • various cleanups and conversion to osmocom style/apis
    • fork osmo-ggsn from openggsn; obsolete openggsn
  • osmo-ggsn
    • release 1.0.0
    • allow enable/disable of G-PDU sequence numbers on ggsn and sgsnemu
    • sgsnemu: Add IPv6 PDP context support

October 2017

  • new 'osmocom:latest' package feed
  • libosmocore.git
  • libosmo-netif.git
    • release 0.1.0 and 0.1.1
  • libosmo-sccp.git
    • release 0.8.0 and 0.8.1
  • osmo-bts
    • don't require gsm_data_shared.[ch] from openbsc.git anymore
    • fix multiple subsequent SI1quater BCCH FILLING from BSC
    • fix AMR DTX FSM name to avoid invalid characters in name/identifier
    • release 0.7.0
  • osmo-bsc
    • release 1.1.0, 1.1.1 and 1.1.2
  • osmo-hlr
    • replace/reimplement CTRL interface commands
    • release 0.1.0
  • osmo-sgsn
    • release 1.2.0
  • osmo-msc
    • release 1.1.0, 1.1.1 and 1.1.2
    • ensure we default to enable TMSI allocation
  • osmo-ggsn
    • release 1.1.0

November 2017

  • LimeSDR support in osmocom package feeds
  • Add SPDX License identifiers in library projects
  • libosmocore
    • fix SSE3 optimization on non-SSSE3 machines
    • fix memory leaks in various unit tests for memory leak ebugging
    • add counter group introspection via CTRL
    • release 0.10.2
  • libosmo-netif
    • fix another file descriptor leak in stream server implementation
  • libosmo-sccp.git
  • osmo-bts
    • don't abort if oversized RTP packets are received
  • osmo-bsc
    • migrate from osmo-bsc_mgcp to osmo-mgw for switching user plane
    • more SI2quater fixes
    • report per-BTS connection state and uptime in VTY + CTRL
  • osmo-ggsn
    • various improvements in kernel GTP support

December 2017

  • libosmocore
    • improvements of XML export for VTY command reference generation
  • osmo-bts
    • put useful information in RTCP SDES
  • osmo-bsc
    • move lots of counters / KPIs from BSC level down to per-BTS granularity
    • reduce T3101 default from 10s to 3s
    • generate mandatory SI2bis and SI2ter rest octets (on RSL; Um was always fine)
    • reduce T3113 from 60s to 10s
    • various new per-BTS counters
  • osmo-msc
    • SMS database related fixes
    • properly set permitted ciphering algorithms in BSSMAP Cipher Mode Command
    • fix GSM-Milenage in presence of 2G keys
  • osmo-ggsn
    • fix byte order in IPCP IPV4 DNS server addresses

Osmocom operates GSM/UMTS network at 34C3 (5 comments)

Added by laforge 5 months ago

A team of Osmocom volunteers has continued the tradition of operating an experimental test network at the annual Chaos Communication Congress 34C3 held in Leipzig (Germany) from December 27 through December 30, 2017.

You can find some more information about this network at the GSM page in the 34C3 wiki and the report by tsaitgaist as part of the 34C3 infrastructure review (from minute 35 onwards of http://live.dus.c3voc.de/relive//34c3/8911/muxed.mp4)

Osmocom thanks
  • Deutsche Telekom for providing us with 3 ARFCN in the 1800 MHz band
  • Bundesnetzagentur for providing the experimental license for UMTS in the 850 MHz band
  • The team of volunteers working on the setup and operation of the network

Outreachy project selects Osmocom Debian Packaging (7 comments)

Added by laforge 7 months ago

The Outreachy project has selected work on Debian packaging for Osmocom for the Dec 2017 to Mar 2018 Outreachy Interns

You can read the related announcement at the outreachy announce mailing list

Kira "kobr" Obrezkova will be working on this, with Debian developer Thorsten Alteholz as mentor.

Congratulations, Kira! Thanks to Thorsten Alteholz for mentoring as well as to Outreachy and its sponsors!

In Osmocom, we have made tremendous progress during 2016 and 2017 in re-structuring our code base, with a proper 3GPP AoIP interface between BSC and MSC, the split-up of OsmoNITB, the externalization of the HLR and full 3G integration. This has had lots of fall-out in terms of packaging, and it's important to have the new post-NITB architecture packaged properly in upstream Debian.

Outreachy provides three-month internships for people from groups traditionally underrepresented in tech. Interns are paid a stipend of $5,500 and have a $500 travel stipend available to them. Interns work remotely with mentors from Free and Open Source Software (FOSS) communities on projects ranging from programming, user experience, documentation, illustration and graphical design, to data science.

Osmocom "latest" binary packages for Debian + Ubuntu

Added by laforge 7 months ago

Starting today, Osmocom offers an osmocom:latest package feed with Ubuntu + Debian packages of the latest tagged releases of all Osmocom cellular infrastructure software.

Since early 2016, Osmocom has already been offering Nightly_Builds of the master-of-the-day of each individual projects git repository to enable users to utilize Osmocom software without having to build from source. However, by their very nature, nightly builds are volatile as they track each indiviudal development step. This is interesting for users who are testing latest developments or who need to track fixes introduced only very recently.

The new Latest_Builds only change whenever a new release tag is set in the respective source code repository, i.e. every few weeks to months for a given project. While this is not a long-terms supported release, osmocom:latest is a much more suitable choice for deployments.

Virtual Um layer between BTS and MS (1 comment)

Added by laforge 10 months ago

During the last couple of days, I've been working on completing, cleaning up and merging a Virtual Um interface (i.e. virtual radio layer) between OsmoBTS and OsmocomBB. After I started with the implementation and left it in an early stage in January 2016, Sebastian Stumpf has been completing it around early 2017, with now some subsequent fixes and improvements by me. The combined result allows us to run a complete GSM network with 1-N BTSs and 1-M MSs without any actual radio hardware, which is of course excellent for all kinds of testing scenarios.

The Virtual Um layer is based on sending L2 frames (blocks) encapsulated via GSMTAP UDP multicast packets. There are two separate multicast groups, one for uplink and one for downlink. The multicast nature simulates the shared medium and enables any simulated phone to receive the signal from multiple BTSs via the downlink multicast group.

In OsmoBTS, this is implemented via the new osmo-bts-virtual BTS model.

In OsmocomBB, this is realized by adding virtphy virtual L1, which speask the same L1CTL protocol that is used between the real OsmcoomBB Layer1 and the Layer2/3 programs such as Mobile and the like.

Now many people would argue that GSM without the radio and actual handsets is no fun. I tend to agree, as I'm a hardware person at heart and I am not a big fan of simulation.

Nevertheless, this forms the basis of all kinds of possibilities for automatized (regression) testing in a way and for layers/interfaces that osmo-gsm-tester cannot cover as it uses a black-box proprietary mobile phone (modem). It is also pretty useful if you're travelling a lot and don't want to carry around a BTS and phones all the time, or get some development done in airplanes or other places where operating a radio transmitter is not really a (viable) option.

If you're curious and want to give it a shot, I've put together some setup instructions at Virtual Um.

Upcoming Osmocom talks at OpenCellular Workshop in Nairobi (3 comments)

Added by laforge about 1 year ago

We're happy to announce that there will be two talks related to the Osmocom cellular infrastructure projects at the upcoming OpenCellular Workshop held in Nairobi, Kenya on June 19 and June 20.

At the OpenCellular workshop hosted by iHub, technology and business leaders will share their insights and drive discussions around radio design, site planning, business models and many other topics on rural connectivity.

The two talks about Osmocom will be on:

  • Osmocom: Open-source cellular stack for 2G and 3G by Harald Welte, Osmocom and sysmocom co-founder
  • End to end testing of the Osmocom stack by Pau Espin Pedrol, engineer at sysmocom

You can learn more about the event (including venue, schedule, etc.) at https://www.opencellular.ihub.co.ke/

We're looking forward to meeting all parties involved in providing rural communications, as we consider the Osmocom cellular protocol stack a key factor in driving cost and innovation in connecting the next billion mobile subscribers.

Osmocom 3G and 2G Now Support Milenage Authentication (2 comments)

Added by neels about 1 year ago

The Osmocom core network landscape is transforming. Adding full UMTS Authentication support, paired with the 3G developments of the past year, has rocked the boat of the good old OsmoNITB. Here is why:

From previous 3G announcements1, you may already know that the OsmoNITB, the Network-In-The-Box, combines BSC, MSC and HLR (among other things), which has drawbacks. Our MSC code was nicely placed in a separate libmsc, but libmsc never stood on its own. From the start it always had its fingers deep in libbsc data structures. In 3G core networks, there no longer is a BSC, so we needed a clear interface to talk to libmsc, and make it not depend on libbsc. We do have a standalone OsmoBSC, so technically, it could talk to a standalone MSC implementation, instead of having both in the same program. Thus, on the 3G branch, we basically killed off the BSC part of OsmoNITB: the first step towards our brand new standalone OsmoMSC.

But what is a 3G core network without full 3G authentication? UMTS AKA2 was published in Release 1999 of the 3GPP technical specifications (R99) and provides the means for mutual authentication, usually using the Milenage algorithm. Since R99, SIM cards (USIM) not only verify their authenticity to the core network, they also expect the core network to verify its own authenticity, hence the term mutual authentication. 3G USIMs may fall back to pre-R99 authentication, but in general, 3G is expected to be synonymous with UMTS AKA. So far, Osmocom fell short of that.

We have had the Milenage algorithms implemented in libosmocore for years, but our stock OsmoNITB is unable to use it. The main reason: the subscriber database is incapable of managing UMTS AKA tokens. Another shortcoming of this database is that it runs synchronously in the OsmoNITB process: if it is locked or needs a bit longer, our entire core network stalls until the request is completed. And a third clumsy fact is that the OsmoSGSN cannot use OsmoNITB's subscriber database, duplicating the authorization configuration.

It made sense to solve all of these subscriber database problems in one effort, again trimming OsmoNITB, but this time at the other end. Enter stage the brand new OsmoHLR, a separate process managing the subscriber database:

  • OsmoHLR has full UMTS AKA support.
  • It serves GSUP to both our MSC and SGSN.
  • As a separate process, the HLR now runs fully asynchronously.

Of course, the MSC needs to act as a GSUP client to use the separate OsmoHLR server. We needed to teach libmsc to handle GSUP requests asynchronously. In the 3GPP TS specifications, this is handled by the VLR, the Visitor Location Register. So far the VLR existed implicitly within OsmoNITB, basically as an in-RAM storage of subscriber data read directly from the database storage. But the VLR is more than that: it is specified to follow detailed state machines interacting with MSC and HLR, which allow, you guessed it, asynchronous handling of subscriber data. With the HLR moving to a separate process, we needed to implement a VLR proper. A generic finite state machine implementation has been added to libosmocore, and the specs' state machine definitions for the VLR have been implemented, supporting UMTS AKA right from the start.

Adding the new feature set had the logical consequence of profound code changes. In the 3G developments, we have for some time called the OsmoNITB-without-BSC a Circuit-Switched Core Network (OsmoCSCN). As it turns out, OsmoCSCN was merely a working title, it is already gone from code and documentation. Because, what do you get when you also strip from it the HLR? You get an OsmoMSC! (Technically, to accurately call it "OsmoMSC", we would also need to externalize the SMS storage3. It's on the todo list!)

By now it may be clear to you that OsmoNITB will not be around for long. But the transition away from OsmoNITB is not trivial: users have to get familiar with the new OsmoHLR. OsmoNITB's VTY configuration commands for subscriber management no longer exist. And, of course, our OsmoMSC cannot talk to OsmoBSC yet: to fully replace OsmoNITB with OsmoBSC + OsmoMSC + OsmoHLR, we also need a proper A-interface implementation on the OsmoMSC side. Even though OsmoNITB will stick around as a 2G solution until then, the move to an external HLR process in itself is a profound change in admin processes.

In consequence, we have taken yet another profound decision: we will not merge these new developments to openbsc.git's master branch. To clearly mark the move to the new Osmocom core network topology with the VLR-HLR separation and support for 3G by the new OsmoMSC program, we will create a brand new git repository that will be the focus of ongoing development. The current openbsc.git repository will remain as it is; it may see backports in urgent cases, but in essence it will be laid to rest and clearly marked as legacy4. Before we can flip that switch, we still need to sort out some petty details of what should move where, and then agree on a good name for the new repository. Until then, 2G with UMTS AKA support will live on the openbsc.git vlr_2G branch, while 3G with UMTS AKA support will live on the vlr_3G branch. The vlr_2G branch still features an OsmoNITB, but with an external OsmoHLR. The vlr_3G (previously sysmocom/iu) extends the vlr_2G branch to transform OsmoNITB to OsmoMSC and support the IuCS interface.

What about UMTS AKA on packet-switched connections? OsmoSGSN has had a GSUP client for quite some time now5. In fact GSUP was initially named "GPRS Subscriber Update Protocol" -- the G now re-coined to "Generic". Adding UMTS AKA to the OsmoSGSN was a breeze. You don't even need a special branch for that, it's already merged to master.

UMTS AKA is not limited to 3G. Any 2G network that indicates compliance with Release 1999 in the System Information bits can benefit from mutual authentication, and so does Osmocom, now.

Here is an overview of the current landscape:

Legacy 2G without UMTS AKA
openbsc.git master

                   ┌────────────────────────┐
                   │ OsmoNITB               │
  ┌─────┐          ├╌╌╌╌╌┐ ╔═════╤════════╗ │
  │ BTS │ <-Abis-> │ BSC ┆ ║ SMS ┆ subscr ║ │
  │     │          └─────┴─╨─────┴────────╨─┘
  │     │
  │     │          ┌──────────┐         ┌──────────┐
  │ PCU │ <-Gb---> │ OsmoSGSN │ <-GTP-> │ OpenGGSN │
  └─────┘          └──────────┘         └──────────┘

2G with UMTS AKA
openbsc.git vlr_2G

                   ┌─────────────────────┐
                   │ OsmoNITB            │
  ┌─────┐          ├╌╌╌╌╌┐ ╔═════╗ ┌╌╌╌╌╌┤          ┌────────────┐
  │ BTS │ <-Abis-> │ BSC ┆ ║ SMS ║ ┆ VLR │ <-GSUP-> │ OsmoHLR    │
  │     │          └─────┴─╨─────╨─┴─────┘          │            │
  │     │                                           │            │
  │     │          ┌─────────────────────┐          │ ╔════════╗ │
  │ PCU │ <-Gb---> │ OsmoSGSN            │ <-GSUP-> │ ║ subscr ║ │
  └─────┘          │                     │          └─╨────────╨─┘
                   │                     │          ┌──────────┐
                   │                     │ <-GTP--> │ OpenGGSN │
                   └─────────────────────┘          └──────────┘

3G with UMTS AKA
openbsc.git vlr_3G

                                               ┌─────────────────────┐
                                               │ OsmoMSC             │
  ┌───────────┐         ┌───────────┐          │       ╔═════╗ ┌╌╌╌╌╌┤          ┌────────────┐
  │ 3G hNodeB │ <-Iuh-> │ OsmoHNBGW │ <-IuCS-> │       ║ SMS ║ ┆ VLR │ <-GSUP-> │ OsmoHLR    │
  └───────────┘         │           │          └───────╨─────╨─┴─────┘          │            │
                        │           │                                           │            │
                        │           │          ┌─────────────────────┐          │ ╔════════╗ │
                        │           │ <-IuPS-> │ OsmoSGSN            │ <-GSUP-> │ ║ subscr ║ │
                        └───────────┘          │                     │          └─╨────────╨─┘
                                               │                     │          ┌──────────┐
                                               │                     │ <-GTP--> │ OpenGGSN │
                                               └─────────────────────┘          └──────────┘

2G with UMTS AKA and 3G support are not packaged yet. To use them, you need to build the software from source.

  • For OsmoNITB with 2G UMTS AKA, you need to build openbsc.git using the vlr_2G branch.
  • For 3G including UMTS AKA support, refer to the 3G wiki page.

To get assistance, you may ask on the mailing list, or contact for example sysmocom for professional support and development services.

With the help of Osmocom's sponsors and supporters, including but not limited to NLnet and sysmocom, we were able to invest due time and effort and have reached a remarkable milestone: UMTS AKA is now supported on Osmocom 3G as well as 2G networks, using Free Software all the way. Thank you for making this possible!


1 News post: 3G Voice Works


2 Universal Mobile Telecommunications System, Authentication and Key Agreement protocol


3 So far our OsmoMSC has a local sqlite database to manage SMS persistently, which is still a potential source of stalling due to synchronism.


4 Another reason for moving to a new repository: OpenBSC was the early name of the project, but by now the lack of "Osmo" in its name is a source of confusion among new users, since "OpenBSC" wrongly suggests affiliation with the unrelated OpenBTS project.


5 See config item auth-policy remote.

(1-10/22)

Also available in: Atom