5G-LENA v5.1 is available
New release available from August 2026 (v5.1)
5G-LENA v5.1 (compatible with ns-3.48)
Hi all,
We are happy to announce the v5.1 release of 5G-LENA. This release is compatible with ns-3.48.
Even though it is compatible with ns-3.48, we recommend cherry-picking the upcoming ns-3.49 3GPP spectrum channel fixes from ns-3 MR2929 and the performance patches from ns-3 MR2883.
Highlights of this release
Following the mobility overhaul of v5.0, this release focuses on making handover work in FDD deployments and on calibrating mobility performance against 3GPP TR 36.839. It includes several new features, such as:
- FDD cells now advertise their UL carrier in SIB1 (the equivalent of
frequencyInfoULin TS 38.331), and the UE derives its primary UL BWP and bandwidth-part routing from it automatically. ManualNrUeNetDevice::PrimaryUlIndexandSetOutputLink()configuration is no longer needed for cells with a single DL/UL carrier pair. - Handover between FDD cells, including cells with inverted UL/DL carrier roles and different per-carrier numerologies: the handover command carries the target cell’s UL carrier and RACH configuration, and the UE re-tunes and re-synchronizes its UL BWP to the target cell. The bandwidth-part configurations and the QoS flow mapping are now also advertised in the dedicated RRC configuration delivered to the UE.
- Mobility state estimation in
NrUeRrc(TR 36.839): the UE counts its recent handovers over a sliding window, classifies itself as normal, medium or high mobility, and scales the A3 time-to-trigger accordingly (disabled by default). - An optional TR 36.839 handover failure model, so that the handover failure rate can be
calibrated against the TR 36.839 reference curves, plus simulation-level handover metrics:
a
RadioLinkFailureCausetrace recording why every radio link failure happened, and aHandoverTotalTimetrace reporting the total handover time from the A3 trigger at the source gNB to completion. - Optional handover admission and ping-pong guards: minimum target RSRP/RSRQ floors in
NrA3RsrpHandoverAlgorithm, and aHandoverMinTimeOfStaythat suppresses a handover back to the cell the UE just left. Also, MIB-wait cell reselection for force-camped UEs. - New deployment and mobility tooling: a
RandomDirectionDisc2dMobilityModelbounded by a circle,HexagonalGridScenarioHelper::SetUeDiscRadius(),HexagonalGridScenarioHelper::SetRingOneOnlyPicos()for the TR 36.839 no-wraparound dense-A layout, and theNrHelper::AttachWindowattribute to stagger the initial UE attachment and de-synchronise the RACH thundering herd. CQI_CSI_RSis now accepted alone as aCsiFeedbackFlagvalue, so CSI feedback no longer depends on PDSCH data traffic being present.- The RLC was reworked towards TS 38.322 conformance: AM status, polling and window handling, UM receive-window behaviour and re-establishment resets were fixed, and every PDU is now stamped with a transmitting-entity identity so that stale PDUs still in flight after a handover are discarded instead of corrupting reassembly.
- The CI pipeline gained weekly valgrind memcheck and MemorySanitizer jobs, and a lizard-based linting check that fails a merge request raising the maximum cyclomatic complexity or adding duplicate code blocks.
This release also includes important fixes, such as:
- Fixed a permanent uplink stall when the bootstrap BSR transport blocks are lost. The
scheduling request is now re-armed whenever new buffer status arrives while the UE is
backlogged, is tracked as a pending bootstrap grant instead of fake buffer in every uplink
logical channel group (which used to flatten the uplink priorities of the QoS schedulers),
is rate-bounded by the new
NrUeMac::SrProhibitTimerattribute, and falls back to a random access procedure afterSrTransMaxunanswered transmissions. - Fixed
NrRlcUmandNrRlcTmstopping their buffer status report timer whenever a new SDU arrived from PDCP, which left the buffer status held by the gNB stale once the uplink stalled. - Fixed several handover-related failures: the scheduler dereferencing an invalid UE map entry on a CQI report from a released UE, MIMO SINR chunks being matched by RNTI alone across cells, an abort on a data signal misaligned with a reception in progress, the handover command not applying the target cell’s RACH configuration, RLC reassembly aborting on aliased sequence numbers, and an abort on a stray RRC connection request after radio link failure.
- Fixed receivers permanently misreporting interference after a saturating signal expired, and a new transmission being combined with stale HARQ history.
- Fixed TDMA schedulers and OFDMA uplink scheduling starving a cell when the number of active UEs at MCS 0 reached the schedulable resources of a slot, and the DCI RBG bitmask being validated against the RB count instead of the RBG count.
- Fixed a reference cycle keeping the whole UE stack alive for the lifetime of the process, and uses of uninitialised memory reported by MemorySanitizer.
You can find the full list of changes in the release notes, and an at-a-glance view of everything supported in the features and roadmap pages.
As always, remember to follow the instructions in the README.md file, i.e., to check out
the correct release branch of both ns-3 and the NR module.
We would like to thank all 5G-LENA users who contribute continuously to the 5G-LENA community by opening issues, proposing solutions, and answering on the 5G-LENA users list.
Thank you for your support!
To cite this NR 5.1 5G-LENA release, please use the reference on GitLab (in addition to the reference papers listed in https://5g-lena.cttc.es/papers/).
The 5G-LENA team