Project

General

Profile

Actions

Feature #6504

open

July 2024 Osmocom CNI releases

Added by osmith 9 days ago. Updated 1 day ago.

Status:
In Progress
Priority:
Normal
Assignee:
Target version:
-
Start date:
07/18/2024
Due date:
% Done:

90%

Spec Reference:

Description

Harald wrote in #6488#note-21:

I think it's been quite some time since the last libosmocore release (1.9.0 in September last year),
so it might very well be a good idea to tag a new release.

AFAICT there are no new major development efforts in libosmocore happening at this time, and we
don't know of any regressions, so it might actually be very good timing?

Pau wrote in IRC:

there's several ABI changes. Last round of releases for OsmoCNI was more than half a year ago, so I think it makes sense to do a release of the full set, also changing packages of osmo-* to require newer libosmocore

I would do it next week, unless a reason comes up to postpone it.


Checklist

  • prepare patches, review, push git tags
  • adjust openembedded (update 201705, rebase laforge/nightly)
  • write release notes
  • update docker-playground and osmo-ttcn3-hacks, drop code paths for previous latest versions
  • post release notes as news item

Related issues

Related to osmo-ePDG - VoWifi Evolved Packet Data Gateway - Bug #6488: first osmo-epdg tagged version / release / news itemFeedbacklaforge06/12/2024

Actions
Actions #1

Updated by osmith 9 days ago

  • Related to Bug #6488: first osmo-epdg tagged version / release / news item added
Actions #2

Updated by osmith 3 days ago

  • Checklist item prepare patches, review, push git tags added
  • Checklist item adjust openembedded added
  • Checklist item write release notes added
  • Tracker changed from Bug to Feature
  • Status changed from New to In Progress
  • % Done changed from 0 to 50

I've adjusted most of the repositories today and pushed patches to gerrit; some of them are already reviewed and merged and git tags are pushed. I will continue tomorrow.

Patches:
https://gerrit.osmocom.org/q/topic:rel-2024-07

Show

Actions #3

Updated by osmith 2 days ago

  • Checklist item update docker-playground and osmo-ttcn3-hacks, drop latest code paths added
Actions #4

Updated by osmith 2 days ago

  • Checklist item changed from update docker-playground and osmo-ttcn3-hacks, drop latest code paths to update docker-playground and osmo-ttcn3-hacks, drop code paths for previous latest versions
Actions #5

Updated by osmith 2 days ago

  • % Done changed from 50 to 60

Patches for all projects from above are pushed to gerrit now (except for osmo-uecups, skipped making a release since it didn't have any code changes). The patches are reviewed, and I'm merging them in batches waiting for osmocom:master to build dependencies, wait until CI passes using these packages from osmocom:master and then merging the next batch.

Now I'm working on the release notes in the style of https://osmocom.org/news/220.

I'll keep the current draft in this post:


The Osmocom project has released new version 202407 of the CNI (Cellular Network Infrastructure) software, including OsmoTRX, OsmoBTS, OsmoPCU, OsmoBSC, OsmoMGW, OsmoMSC, OsmoHLR, OsmoSGSN, OsmoGGSN, OsmoSTP, OsmoSIPConnector, and others.

Those new tagged/released versions contain 10 months of work since the previous versions released during mid September 2023.

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

Versions

Project Version Changelog
osmo-gsm-manuals 1.6.0 https://cgit.osmocom.org/osmo-gsm-manuals/plain/debian/changelog?h=1.6.0
libosmocore 1.10.0 https://cgit.osmocom.org/libosmocore/plain/debian/changelog?h=1.10.0
osmo-e1d 0.7.0 https://cgit.osmocom.org/osmo-e1d/plain/debian/changelog?h=0.7.0
libosmo-abis 1.6.0 https://cgit.osmocom.org/libosmo-abis/plain/debian/changelog?h=1.6.0
libosmo-netif 1.5.0 https://cgit.osmocom.org/libosmo-netif/plain/debian/changelog?h=1.5.0
libosmo-pfcp 0.4.0 https://cgit.osmocom.org/libosmo-pfcp/plain/debian/changelog?h=0.4.0
libosmo-sccp (+ OsmoSTP) 1.9.0 https://cgit.osmocom.org/libosmo-sccp/plain/debian/changelog?h=1.9.0
osmo-iuh 1.6.0 https://cgit.osmocom.org/osmo-iuh/plain/debian/changelog?h=1.6.0
libusrp 3.4.9 https://cgit.osmocom.org/libusrp/plain/debian/changelog?h=3.4.9
libgtpnl 1.3.0 https://cgit.osmocom.org/libgtpnl/plain/debian/changelog?h=1.3.0
libasn1c 0.9.37 https://cgit.osmocom.org/libasn1c/plain/debian/changelog?h=0.9.37
osmo-ggsn 1.12.0 https://cgit.osmocom.org/osmo-ggsn/plain/debian/changelog?h=1.12.0
osmo-hlr 1.8.0 https://cgit.osmocom.org/osmo-hlr/plain/debian/changelog?h=1.8.0
osmo-mgw 1.13.0 https://cgit.osmocom.org/osmo-mgw/plain/debian/changelog?h=1.13.0
osmo-trx 1.7.0 https://cgit.osmocom.org/osmo-trx/plain/debian/changelog?h=1.7.0
osmo-pcu 1.5.0 https://cgit.osmocom.org/osmo-bts/plain/debian/changelog?h=1.5.0
osmo-pcap 0.5.0 https://cgit.osmocom.org/osmo-pcap/plain/debian/changelog?h=0.5.0
osmo-bts 1.8.0 https://cgit.osmocom.org/osmo-bts/plain/debian/changelog?h=1.8.0
osmo-bsc 1.12.0 https://cgit.osmocom.org/osmo-bsc/plain/debian/changelog?h=1.12.0
osmo-msc 1.12.0 https://cgit.osmocom.org/osmo-msc/plain/debian/changelog?h=1.12.0
osmo-sgsn 1.12.0 https://cgit.osmocom.org/osmo-sgsn/plain/debian/changelog?h=1.12.0
osmo-gbproxy 0.5.0 https://cgit.osmocom.org/osmo-gbproxy/plain/debian/changelog?h=0.5.0
osmo-cbc 0.5.0 https://cgit.osmocom.org/osmo-cbc/plain/debian/changelog?h=0.5.0
osmo-smlc 0.3.0 https://cgit.osmocom.org/osmo-smlc/plain/debian/changelog?h=0.3.0
osmo-hnbgw 1.6.0 https://cgit.osmocom.org/osmo-hnbgw/plain/debian/changelog?h=1.6.0
osmo-hnodeb 0.2.0 https://cgit.osmocom.org/osmo-hnodeb/plain/debian/changelog?h=0.2.0
osmo-sip-connector 1.7.0 https://cgit.osmocom.org/osmo-sip-connector/plain/debian/changelog?h=1.7.0

Noteworthy Changes

Common

osmo_io and io_uring

The most notable improvement of these releases is the addition of osmo_io to libosmocore, as well as adjusting several components to use it (libosmocore, libosmogb ns2, libosmo-netif, libosmo-sigtran, libosmo-mgcp-client). osmo_io is a new way of how we do I/O operation in Osmocom projects. It moves from a raw select/poll abstraction (where every application performs its own read/write once the fd becomes readble/writable) to a submission/completion model, where the actual I/O is performed by the library, an the application just submits write requests (as struct msgb) and receives write-completion and read-completion call-backs.

Apart from having more code reuse and a cleaner split between application and I/O library, this has the added advantage that the underlying operating system I/O mechanism can be swapped out without touching each and every application. Specifically, we now have the following two back-ends implemented in libosmocore:
  • POLL: classic osmo_fd based implementation using poll(2) (default)
  • IO_URING: a backend using the Linux kernel io_uring(7) API (new)

The choice of back-end is done via setting the LIBOSMO_IO_BACKEND environment variable. If you set it to IO_URING when starting an Osmocom program, all sub-systems / interfaces ported over to the osmo_io API will make use of the io_uring(7) API (via liburing).

The main advantage of io_uring is performance. Benchmarking has shown that a classic, poll-based production osmo-bsc loaded with 400 TRX is spending about 40% of its CPU cycles in the system call overhad (sock_poll, tcp_poll and do_sys_poll) and a lot of system call entry/exit in general, due to the many small read/write/recvmsg/sendmsg/recfrom/sendto and poll calls.

For more information, see:

Misc

  • Systemd files have been updated to run services as osmocom user instead of root
  • Uniform log format in default configs
  • RPM spec files have been removed from almost all repositories (more)

libosmocore

  • core: Add software UART implementation
  • Add a GSM RLP decoder and encoder
  • libosmosim: Support Microsoft smart card discovery process
  • libosmosim: class_tables: improvements to GlobalPlatform
  • isdn: initial implementation of the V.110 TA
  • LAPD/LAPDm: Add support for RTS based polling
  • Add TW-TS specific BSSMAP IEs and BTS feature flags
  • Add the jhash implementation from the linux kernel
  • Add a VTY command to generate FSM state graphs
  • codec: make osmo_hr_check_sid() more efficient
  • socket: new API osmo_sock_sctp_get_peer_addr_info(), reimplement osmo_sock_init2_multiaddr()
  • GSUP: extend for osmo-epdg (new IE for PCO, new message type for CEAI interface)
  • coding: fix artificial bit errors for PDTCH CS2 and CS3
  • gsup: Convert PDP-Type IE to PDP-Address IE
  • logging: fix nul octets in log output
  • Lots of small fixes and improvements

libosmo-abis

  • Add support for sending and receiving Sa bits, as well as some line signals
  • Various TRAU <> RTP related fixes
  • trau_rtp_conv: add support for HRv1 in 8k format
  • TRAU->RTP: add support for TW-TS-001 & TW-TS-002
  • Build config: add --disable-ortp option
  • Logging improvements

libosmo-netif

  • Support osmo_io
  • stream: Add client-side (segmentation) support for IPA
  • Several docs improvements

osmo-e1d

  • Fix issue on truncated USB transfer
  • Add option to reset receive buffer, when clock drifts too far away
  • Support of setting and indication of Sa bits in time slot 0 of multi frames
  • LOS/AIS/RAI/LOF are indicated and sent to client
  • Fix of some memory leaks / double free
  • Add support to configure CRC4 mode for TX/RX
  • Fixes some issues at channelized mux process

OsmoSGSN

Many minor and cosmetic fixes and improvements.
Most notable new changes are:

  • Add 3k1_AUDIO and FAX_G3 bearer cap
  • Force rate adaptation mode for CSD calls to V.110
  • ASCI: Reject TERMINATION, if MS is not the originator
  • Fix VTY setting for SGs counter
  • Add section about the SGs interface
  • Fix codec mapping for GSM-HR
  • Various fixes on SDP parsing and codec matching
  • GSUP: set default ipa-name at application level
  • SMS-over-GSUP: set Source Name IE for all messages
  • SMS-over-GSUP: set log context in gsm411_gsup_rx()
  • Add LLC and HLC information forwarding to MNCC interface
  • Never page for TMSI with 'no assign-tmsi'
  • Various fixes to deb and rpm package contribution
  • Add timer X36 for delaying LU connections

OsmoHLR (and libosmo-gsup-client)

  • SMS over GSUP: implement forwarding of SMS
  • ctrl: add subscriber.by-*.imsi GET-able variable

OsmoMGW (and libosmo-mgcp-client)

  • ASCI: Add GSM-R support
  • VTY and log: Also show local port for RTP conns
  • mgcp_parse_audio_port_pt(): fix buffer overflow
  • Improve err logging
  • IuUP: Allow Initialization from any address if not yet set
  • IuUP: Allow Initialization with set rem IP address and unset remote port
  • mgcp-client: Transmit remote IP addr in CRCX if known and port=0
  • Various fixes on codec handling
  • Convert mgcp_client from osmo_wqueue to osmo_io
  • Convert RTP/RTCP/OSMUX I/O from osmo_fd to osmo_io
  • Do not fail MGCP on codec mismatch
  • Remove unused transcoding process code

OsmoTRX

  • ms: add demod test tool and data
  • ms: various small improvements
  • doc: Introduce documentation for osmo-trx-ipc and its IPC interface

OsmoBTS

  • ASCI: Add GSM-R support
  • Add GSMTAP encapsulation of RLP frames in CSD NT mode
  • common: Add RTP related rate counters
  • common: add support for TW-TS-001
  • osmo-bts-{oc2g,lc15}: signal CBCH support to BSC
  • oml: implement handling of NM_ATT_IPACC_SUPP_FEATURES
  • Transmit invalid AMR speech blocks instead of dummy FACCH
  • pcuif_proto: signal BTS model via PCUIF
  • Various small fixes and improvements for CSD and more

OsmoPCU

  • Improve User Manual:
    • List supported Gb dialects
    • Add diagram with code architecte
  • Fix potential memory leak
  • Avoid resending TXT.ind (PCU version) over PCUIF

OsmoBSC

  • ASCI: Add GSM-R support
  • recover BORKEN lchans for missing ACK scenarios
  • sccplite: Support multiple MGW in MGW pool
  • add support for RTP extensions via TW-TS-003
  • oml: ipacc: GPRS Cell attributes related improvements
  • CTRL and VTY: various new commands and other improvements
  • Many small fixes and improvements

OsmoMSC

  • ASCI: Add GSM-R support
  • manuals: add section about the SGs interface
  • Various codec handling improvements
  • CSD related fixes
  • VTY improvements
  • Many small fixes and improvements

OsmoSTP (and libosmo-sigtran)

  • Introduced support for M3UA-over-TCP
  • ipa,xua: New set of APIs to do TCP & SCTP I/O in OSMO_IO mode
  • ipa: Use pseudo-random number for SLS in IPA->M3UA direction
  • VTY: New "cs7 instance <0-15> asp NAME disconnect" command
  • VTY: rename 'sctp-role' to 'transport-role' (old naming kept for compat but deprecated)
  • Some minor logging improvements

osmo-cbc

  • cbc-apitool: Make character set configurable
  • SBcAP: Update as1nc skeleton and generated code

OsmoHNBGW

Compatibility note: OsmoHNBGW used to CRCX in loopback mode, to trigger a legacy IuUP hack. CRCX is no longer in loopback mode now, so older osmo-mgw may fail to respond to IuUP Initialization.

  • Fix several asserts being hit aborting the process
  • Fix potential use-after-free after FSM termination
  • Increase default X31 val from 5 to 15 seconds
  • VTY: New "timer hnbgw X35" command (Clean up all hNodeB persistent state after HNB disconnected for a while)
  • Fix forwarding of CS RAB Assignment Request without RTP info
  • Assume HNB's RTP IP address equals Iuh IP address when initially setting up MGW endpoint connection
  • Support forwarding RTP IP address changes between HNB and MGW.
  • Do not start MGW endpointer in loopback mode
  • Improve some RUA ctx tear down scenarios
  • Support per-HNB persistent static configuration in VTY
  • New per-HNB rate_ctr/stats: uptime, rua/ranap/dtap messages, RAB act/deact/modify, CS RAB duration, paging attempts, release causes
  • New per-HNB GTP-U traffic counters via nft
  • Avoid forwarding paging requests to HNB's not yet registered
  • Improved handling of HNBAP HNB-REGISTER-REQ errors and improved rejection.
  • Fixes for 3-digit MNC
  • Drop list of HNBAP UE Context
  • Several logging improvements
  • Several PFCP fixes/improvements:
    • Wrong FAR ID was being modified
    • Added VTY tests for PFCP
    • Implement Tx of Network Instances IEs

libgtpnl

  • Add IPv6 support
  • New QEMU tests

OsmoGGSN

  • kernel-gtp: support IPv6
  • libgtp: move includes to osmocom/include/gtp
  • set state-dir to /var/lib/osmocom/osmo-ggsn

osmo-sip-connector

  • Forward SDP between SIP and MNCC

osmo-hnodeb

  • Use 'iuh/local-ip' as local IP for RTP sockets
  • llsk: Add APIs to interact with llsk->link
  • Close LLSK during shutdown procedure
Actions #7

Updated by osmith 1 day ago

  • Checklist item changed from adjust openembedded to adjust openembedded (update 201705, rebase laforge/nightly)
  • Checklist item adjust openembedded (update 201705, rebase laforge/nightly) set to Done
Actions #8

Updated by osmith 1 day ago

  • % Done changed from 60 to 70
Actions #9

Updated by osmith 1 day ago

  • Checklist item write release notes set to Done
Actions #10

Updated by osmith 1 day ago

  • Checklist item post release notes as news item added
Actions #11

Updated by osmith 1 day ago

  • Checklist item post release notes as news item set to Done
Actions #12

Updated by osmith 1 day ago

  • % Done changed from 70 to 80
Actions #13

Updated by osmith 1 day ago

  • % Done changed from 80 to 90

update docker-playground and osmo-ttcn3-hacks, drop code paths for previous latest versions

Actions

Also available in: Atom PDF

Add picture from clipboard (Maximum size: 48.8 MB)