Skip to content

Commit f9dcb93

Browse files
committed
WHATSNEW updated, version upped to 1.4.3
1 parent dae6590 commit f9dcb93

2 files changed

Lines changed: 117 additions & 1 deletion

File tree

Version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.4.2
1+
1.4.3

WHATSNEW.md

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,121 @@
11
# What's New in Simu5G
22

3+
## v1.4.3 (2026-02-18)
4+
5+
This release represents a major milestone in the complete overhaul of the Simu5G
6+
codebase to make it architecturally more compliant with the 3GPP
7+
specifications, modernize the code, and adopt the best practices of the INET
8+
Framework on which it is based. The goal is to pave the way for a clean
9+
implementation of new protocol features such as TSN support.
10+
11+
Tested with INET-4.5.4 and OMNeT++ 6.3, updated for INET-4.6.0 compatibility.
12+
13+
Key achievements in this release:
14+
15+
- **More explicit Control Plane modeling**: Simu5G is advertised as a User Plane
16+
simulator, but since it was also used to model dynamic scenarios such as
17+
handovers, it always contained elements of the Control Plane distributed across
18+
various modules. The new direction is to make these elements more explicit and
19+
centralized, such as creating dedicated RRC (Radio Resource Control) and
20+
Session Management Function (SMF) implementations. It is an explicit non-goal
21+
to simulate Control Plane messaging -- its functionality will be implemented
22+
with C++ method calls across modules. Thus, Simu5G remains a User Plane
23+
simulator, but with the possibility to more faithfully model dynamic
24+
scenarios with heavy Control Plane involvement. While this goal is not fully
25+
realized in this release, many changes point into that direction.
26+
27+
- **Control info refactoring**: Cleaned up `UserControlInfo` and
28+
`FlowControlInfo` by removing 5+ unused fields and splitting out smaller,
29+
focused tags. For example, IPv4 addresses, only used between `Ip2Nic` and PDCP,
30+
have been factored out into an `IpFlowInd` tag. This improves modularity,
31+
reduces coupling between protocol layers, and makes the code easier to
32+
maintain and extend.
33+
34+
- **Added vital missing fields to PDCP and MAC headers**: Protocol layers now
35+
use proper header fields instead of "tunnelling" information via
36+
`UserControlInfo` and `FlowControlInfo` packet tags that would not exist in a
37+
real implementation. For example, PDCP sequence numbers are now carried in
38+
PDCP headers, and LCIDs are stored in MAC PDU subheaders. This makes the
39+
simulation more realistic and packet contents more inspectable in Qtenv.
40+
41+
- **Explicit setup of logical connections instead of on-the-fly discovery**:
42+
This is a key architectural change, which also largely motivated the
43+
previous items. In previous iterations of Simu5G, data structures associated
44+
with logical connections / bearers were created in each protocol layer as they
45+
encountered packets that belonged to new connections. Moreover, part of the
46+
connection state was carried along by the packets in `FlowControlInfo` tags
47+
instead of stored inside the protocol. While this modeling approach still
48+
allowed for faithful simulation of the traffic while keeping the
49+
implementation simple, it has become a roadblock for implementing complex
50+
dynamic scenarios where connections come and go. In this iteration,
51+
centralized session and bearer management (SMF-like functionality) was added
52+
to the `Binder` module, and RRC modules were added to NICs to carry out local
53+
configuration. This brings the architecture closer to the 3GPP control/user
54+
plane separation, making it easier to implement features like handovers
55+
correctly. This is work in progress: SMF is still part of `Binder` and not a
56+
separate module, and connection setup is still triggered by the first packet
57+
of the connection hitting PDCP on the way out. However, moving the SMF code
58+
into its own module will be trivial, and the single `Binder` method call in
59+
PDCP can now be easily replaced with static configuration or with calls from a
60+
more detailed Control Plane implementation.
61+
62+
- **Removed incomplete MIMO support**: Removed MIMO-related code and parameters.
63+
The existing MIMO code was incomplete (e.g., PMI values were computed but
64+
never used). Removing it simplifies the codebase and model parameterization,
65+
and avoids confusion about capabilities. MIMO support will be added in a future
66+
release, with a different approach.
67+
68+
- **Initialization cleanup**: Reorganized module initialization into well-defined,
69+
Simu5G-specific init stages. This eliminates hidden cross-module dependencies,
70+
makes the initialization order explicit and verifiable, and prevents subtle bugs
71+
caused by modules accessing uninitialized data in other modules.
72+
73+
Further notable changes:
74+
75+
- In UE models, `masterId` and `nrMasterId` were renamed to `servingNodeId` and
76+
`nrServingNodeId`. The old names were confusing because "Master" has a
77+
specific meaning in Dual Connectivity (Master eNB vs Secondary gNB), unrelated
78+
to the UE's serving node.
79+
80+
- In UE models, the `macCellId`, `nrMacCellId` parameters were removed. In
81+
practice, the code already used the serving node ID as cell ID.
82+
83+
- `macNodeId` assignment was moved to NED, and now it is based on the new
84+
`simu5g_seq()` NED function that generates an integer sequence. This replaces
85+
the earlier approach where node IDs were assigned by `Ip2Nic` during
86+
initialization, and stored back into the module parameters for other modules to
87+
use.
88+
89+
- `LteRlcPduNewData` and `LteRlcSdu` packet chunks were converted to packet
90+
tags, as they represent internal metadata rather than actual protocol data.
91+
92+
- In the C++ code, merged the `ENODEB` and `GNODEB` node type enum values into a
93+
single `NODEB` value, with a separate `isNr` flag where needed. This change
94+
simplified a large number of "if" conditions throughout the codebase.
95+
96+
To port your existing Simu5G simulations to this version, apply the following
97+
changes to the ini files:
98+
99+
- Change `masterId` to `servingNodeId` (and `nrMasterId` to `nrServingNodeId`),
100+
unless it refers to the Master/Secondary distinction in a Dual Connectivity
101+
setup.
102+
103+
- Remove `macCellId` and `nrMacCellId` parameter assignments for UE modules.
104+
105+
- Delete ini entries that set the following removed MIMO-related parameters:
106+
`numRus`, `ruRange`, `ruStartingAngle`, `ruTxPower`, `antennaCws`,
107+
`muMimo`, `pmiWeight`, `lambdaMinTh`, `lambdaMaxTh`, `lambdaRatioTh`,
108+
`feedbackGeneratorType`.
109+
110+
- For `initialTxMode`, the following values are no longer valid:
111+
`SINGLE_ANTENNA_PORT5`, `OL_SPATIAL_MULTIPLEXING`, `CL_SPATIAL_MULTIPLEXING`,
112+
`MULTI_USER`. Remove the parameter assigment to use the default.
113+
114+
There are many more changes that potentially affect existing simulations, and
115+
projects extending, or built on top of, Simu5G. They cannot all be covered here
116+
in detail - see the git history for details.
117+
118+
3119
## v1.4.2 (2025-11-27)
4120

5121
This is primarily a bugfix release.

0 commit comments

Comments
 (0)