Feature #6504
openJuly 2024 Osmocom CNI releases
90%
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
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.
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¶
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.
- 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:- OsmoDevCon 2024 talk: High-performance I/O using io_uring via osmo_io
- Libosmocore wiki: osmo_io
Misc¶
- Systemd files have been updated to run services as
osmocom
user instead ofroot
- 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
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
- https://gerrit.osmocom.org/c/docker-playground/+/37626 ttcn3-stp-test: remove <= 1.8.x code path [NEW]
- https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37627 hnbgw: remove <= 1.5.x code paths [NEW]
- https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37628 msc: remove <= 1.11.x code path [NEW]
- https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37629 stp: remove <= 1.8.x code paths [NEW]