Skip to content

Commit 2ab4219

Browse files
committed
WHATSNEW updated for inet-4.7
1 parent 1abbbcb commit 2ab4219

1 file changed

Lines changed: 340 additions & 0 deletions

File tree

WHATSNEW

Lines changed: 340 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,346 @@
11
Recent changes in the INET Framework
22
====================================
33

4+
INET-4.7 (July 2026) — feature release
5+
--------------------------------------
6+
7+
This is a new feature release in the INET 4.x branch. The central theme of this
8+
release is the maturation of the IPv6 protocol family, bringing it substantially
9+
closer to feature parity with IPv4. Highlights include a new declarative IPv6
10+
network configurator, IPv6 multicast routing (MLD, and PIM-DM/PIM-SM over IPv6),
11+
node lifecycle support, Duplicate Address Detection, a modernized Mobile IPv6
12+
(MIPv6) model with new Proxy Mobile IPv6 (PMIPv6) support, and IPv6 support in
13+
BGP (MP-BGP) and IPsec. Outside the IPv6 area, the release brings satellite and
14+
GNSS track mobility models with geographic visualization, a substantial overhaul
15+
of the STP and RSTP spanning tree models, major BGP improvements, TCP Path MTU
16+
Discovery, and a configurable RNG grouping mechanism. The release also contains
17+
numerous smaller improvements and bug fixes. Requires OMNeT++ 6.4 or later.
18+
19+
For a complete list of all added, removed, and changed folders, NED modules,
20+
packet chunks, packet tags, statistics, C++ classes, and signals, please refer to
21+
the ChangeLog file in the src folder.
22+
23+
Notable backward incompatible changes are the following:
24+
25+
1. Mobile IPv6 (MIPv6) modernization
26+
27+
The Mobile IPv6 model was substantially modernized and aligned with the rest of
28+
the IPv6 stack. The module previously named xMIPv6 was renamed to Mipv6, and the
29+
xMIPv6Support wrapper was flattened into Ipv6NetworkLayer, with Mobile IPv6 now
30+
enabled by a hasMipv6 switch.
31+
32+
IPv6 tunneling was reworked to follow the same model as IPv4: a tunnel is now
33+
represented as a virtual network interface rather than a dedicated mechanism,
34+
and the former Ipv6Tunneling module was removed. MIPv6-specific per-interface
35+
state was moved out of Ipv6InterfaceData into a separate Mipv6InterfaceData
36+
class.
37+
38+
Several new roaming scenarios were added, and a number of latent correctness
39+
bugs in binding management, return routability, and route optimization were
40+
fixed along the way.
41+
42+
This change requires the modification of simulation models that reference the
43+
xMIPv6 module type, the Ipv6Tunneling module, or the xMIPv6Support submodule
44+
path, as well as C++ code that accesses MIPv6 fields through Ipv6InterfaceData.
45+
46+
2. STP and RSTP overhaul
47+
48+
The Spanning Tree Protocol (STP) and Rapid Spanning Tree Protocol (RSTP) models
49+
were substantially reworked for correctness and standards compliance. RSTP now
50+
implements the full Proposal/Agreement handshake for rapid, timer-free
51+
transition to the forwarding state. Several long-standing defects were fixed,
52+
including a topology-change (TCN) BPDU storm, a hold-timer violation, and
53+
incorrect timer interval assignments. The nonstandard ALTERNATE port role, which
54+
had been backported from RSTP, was removed from STP.
55+
56+
A number of NED parameters and packet types were renamed for clarity and
57+
consistency. Notably, the RSTP helloTime parameter was renamed to helloInterval,
58+
and the STP maxAge parameter was renamed to configuredMaxAge (with the former
59+
currentMaxAge becoming maxAge). The BPDU packet type names were also reworked
60+
(e.g. stp-hello, rstp-hello).
61+
62+
In addition, when the port path cost is not explicitly configured,
63+
L2NetworkConfigurator now derives the default from the link speed, following
64+
the recommendation of IEEE 802.1D-2004.
65+
66+
This change requires the modification of simulation models that configure the
67+
renamed parameters, and it may significantly change the statistical results of
68+
spanning tree simulations due to the corrected protocol behavior.
69+
70+
3. IPv6 Router Advertisement interval defaults
71+
72+
The default Router Advertisement interval was changed to follow RFC 4861.
73+
Previously, the minIntervalBetweenRAs and maxIntervalBetweenRAs parameters
74+
defaulted to very short, Mobile-IPv6-tuned values (30 ms and 70 ms) and were
75+
additionally overridden for wireless interfaces. They now default to the
76+
standard RFC 4861 values, and the wireless special-casing was removed.
77+
78+
This change doesn't require the modification of simulation models, but it may
79+
significantly change the statistical results of IPv6 simulations that relied on
80+
the previous fast Router Advertisement timing, particularly those involving
81+
wireless or mobile nodes.
82+
83+
4. IPsec generalization to IPv6
84+
85+
The IPsec model, introduced in the previous release for IPv4, was generalized
86+
to be address family independent, and now supports IPv6 as well. Traffic
87+
selectors and the security association and policy databases operate on
88+
generic L3 addresses, each IPsec instance serves the address family of its
89+
enclosing network layer, and Ipv6NetworkLayer gained a hasIpsec switch
90+
analogous to the IPv4 one. AH and ESP headers are treated as terminal headers
91+
in the IPv6 extension header chain. Two latent bugs in AH protection (a
92+
zero-length header on egress, and a double header removal on ingress) were
93+
fixed, and a new example demonstrates ESP over IPv6.
94+
95+
As part of this change, the model was moved from the networklayer/ipv4/ipsec
96+
folder to networklayer/ipsec, with the NED package changing accordingly. This
97+
change requires the modification of simulation models and C++ code that
98+
reference the old package or include paths.
99+
100+
5. BGP timer configuration
101+
102+
The BGP timers, previously configured via the <TimerParams> element of the
103+
bgpConfig XML file, are now parameters of the Bgp module (connectRetryTime,
104+
holdTime, keepAliveTime, startDelay). A <TimerParams> element in the XML
105+
configuration is now rejected with an error message that explains how to
106+
migrate.
107+
108+
This change requires the modification of simulation models that configure
109+
BGP timers in the XML configuration file.
110+
111+
6. ICMP error indication refactoring
112+
113+
The handling of ICMP error indications was refactored into a properly layered
114+
architecture in which each protocol layer processes only its own header. As part
115+
of this, the IcmpErrorInd indication and the IcmpErrorTag tag were each split
116+
into IPv4-specific and IPv6-specific variants (Icmpv4ErrorInd / Icmpv6ErrorInd
117+
and Icmpv4ErrorTag / Icmpv6ErrorTag).
118+
119+
These changes are backward incompatible for C++ code that directly references
120+
the old combined ICMP error indication or tag types.
121+
122+
Notable backward compatible changes are the following:
123+
124+
1. IPv6 network configurator
125+
126+
A new Ipv6NetworkConfigurator, with a companion Ipv6NodeConfigurator, was added,
127+
bringing the declarative, IPv4-style network configuration approach to IPv6.
128+
Like its IPv4 counterpart, it assigns addresses and sets up routing tables
129+
automatically based on the network topology, while allowing fine-grained control
130+
through an XML configuration. Explicit per-interface addresses can be assigned
131+
(e.g. using a prefix::interface-id form), overriding the default EUI-64 interface
132+
identifier. Both the IPv4 and IPv6 configurators now also accept CIDR
133+
"address/prefixlen" notation in static route specifications, and gained
134+
addRemoteRoutes and addManualRoutes parameters that allow the individual
135+
route generation steps to be enabled or disabled separately. The simpler
136+
Ipv6FlatNetworkConfigurator remains available.
137+
138+
2. IPv6 lifecycle and multicast forwarding
139+
140+
The IPv6 protocol stack gained node lifecycle support, so that IPv6 nodes now
141+
correctly handle shutdown, restart, and crash operations the same way IPv4 nodes
142+
do. In addition, IPv6 multicast packet forwarding was implemented, including a
143+
multicast routing information base and forwarding information base with reverse
144+
path forwarding (RPF) checks. Together with the multicast routing protocols
145+
described below, this enables IPv6 multicast scenarios that were previously only
146+
possible with IPv4.
147+
148+
3. Multicast Listener Discovery (MLD)
149+
150+
IPv6 multicast group membership is now managed using the Multicast Listener
151+
Discovery protocol. The MLDv1 router-side behavior was completed, and a new Mldv2
152+
module implementing MLDv2 (RFC 3810) was added, including the corresponding
153+
message set, serializer, packet dissector, and printer; the MLD version is
154+
selected by module typename. Source-specific multicast (SSM) membership state was
155+
added to Ipv6InterfaceData. The IPv4 IGMPv3 model was brought to lockstep parity
156+
with MLDv2 (query and report retransmission, interoperation with older versions),
157+
so that the IPv4 and IPv6 multicast membership implementations now mirror each
158+
other.
159+
160+
4. PIM over IPv6
161+
162+
The PIM-DM and PIM-SM multicast routing protocols were generalized to be address
163+
family independent, operating on generic L3 addresses, and can now run over IPv6
164+
in addition to IPv4, while the existing IPv4 PIM behavior is preserved unchanged.
165+
The new MulticastRouter6 node type provides a ready-to-use pure-IPv6 multicast
166+
router. PIM-SM can also derive the rendezvous point per group from embedded-RP
167+
IPv6 addresses (RFC 3956). Source-specific multicast (SSM, RFC 4607) is now
168+
fully supported on both address families: source-list memberships from
169+
IGMPv3 (IPv4) and MLDv2 (IPv6) drive PIM-SM to build RP-less, source-rooted
170+
(S,G) trees for groups in the SSM range, using INCLUDE-only semantics and
171+
requiring no rendezvous point. The PIM packet serializer was extended to support
172+
the IPv6 encoded-address forms.
173+
174+
5. IPv6 Neighbor Discovery
175+
176+
IPv6 Neighbor Discovery was extended in several backward compatible ways.
177+
Duplicate Address Detection (DAD) is now performed for autoconfigured global
178+
addresses in accordance with RFC 4862, and ICMPv6 Redirect message sending and
179+
processing was implemented (RFC 4861). Further Router Advertisement and Neighbor
180+
Discovery parameters were exposed as NED parameters and XML configuration
181+
attributes, and node bootstrap delays became configurable. A new sendRedirects
182+
parameter on the Ipv6 module allows suppressing Redirect messages, which is
183+
useful on wireless ad-hoc networks.
184+
185+
6. Proxy Mobile IPv6
186+
187+
Support for Proxy Mobile IPv6 (PMIPv6, RFC 5213) was added. PMIPv6 provides
188+
network-based mobility management: the network tracks the movements of a
189+
mobile node and keeps its IPv6 address stable across handovers, without
190+
requiring any mobility support in the mobile node itself. The new Pmipv6
191+
module implements both the Local Mobility Anchor (LMA) and the Mobile Access
192+
Gateway (MAG) roles, using Proxy Binding Update / Acknowledgement signaling
193+
based on the Mobile IPv6 message formats, and tunneling between the MAGs and
194+
the LMA. A new example demonstrates a handover in a PMIPv6 domain, with the
195+
mobile node keeping its address across the move.
196+
197+
7. IPv6 netfilter hooks
198+
199+
The Ipv6 module now provides the same set of netfilter-style hooks as its
200+
IPv4 counterpart: the LOCALIN hook is now invoked on local delivery, the
201+
FORWARD hook was added, and packets can be reinjected at all five hook points
202+
after asynchronous processing. This allows C++ modules such as reactive
203+
routing protocols to interpose on the IPv6 datapath in the same way as with
204+
IPv4.
205+
206+
8. BGP improvements
207+
208+
The BGP model received major improvements in several areas. BGP now supports
209+
IPv6: sessions can be established over IPv6 TCP connections, and IPv6 routes
210+
are exchanged using the multiprotocol extensions (MP-BGP, RFC 4760),
211+
including multiprotocol capability negotiation in the OPEN message (RFC 5492)
212+
and serialization of the MP_REACH_NLRI and MP_UNREACH_NLRI path attributes.
213+
Related fixes make iBGP work over a multi-hop IGP with IPv6, and new examples
214+
demonstrate EBGP over IPv6 and BGP running on top of an OSPFv3-based IGP.
215+
216+
BGP is now lifecycle-aware: node shutdown, restart, and crash operations are
217+
handled properly, with sessions re-established and routes re-learned after a
218+
restart. A new Adj-RIB-In data structure stores all routes learned from
219+
peers, and the decision process is re-run when a route is withdrawn, so that
220+
an alternative route can take its place. New examples demonstrate route
221+
withdrawal and failover scenarios.
222+
223+
Session management robustness was also improved: routers now use a single
224+
shared listening socket, connection collision detection was implemented
225+
according to RFC 4271, several errors in connection retry and reconnection
226+
handling were fixed, and BGP sessions are shut down gracefully on node
227+
shutdown.
228+
229+
The BGP lifecycle support and the Adj-RIB-In extension were contributed by
230+
Giovanni Nardini.
231+
232+
9. Satellite mobility and geographic visualization
233+
234+
New mobility models and visualizers support simulating satellite networks
235+
and other scenarios placed on the Earth's surface. The new SatelliteMobility
236+
module computes satellite positions from standard TLE (two-line element)
237+
orbital data using the SGP4 propagation model, and GnssTrackMobility replays
238+
position tracks recorded by GNSS (GPS) receivers. The underlying geometry
239+
library was extended with WGS84 geodesy, Earth-centered (ECEF) coordinate
240+
systems, and an equirectangular map projection.
241+
242+
On the visualization side, the new GeoMapCanvasVisualizer draws a world map
243+
with a graticule as the scene background, GeoHorizonCanvasVisualizer draws
244+
the visibility footprint of satellites on the map, and
245+
GeoSkyViewCanvasVisualizer displays an azimuth/elevation sky view plot next
246+
to observer nodes. The mobility visualizer was extended with 3D orientation
247+
display and direction projection modes, movement trails handle the
248+
antimeridian correctly, and several visualizers now clip their drawings to
249+
the map area. Mobile nodes can display their geographic position using the
250+
{geo_position} directive of displayStringTextFormat. A new example
251+
demonstrates satellites moving above a map of the Earth.
252+
253+
10. TCP Path MTU Discovery
254+
255+
The TCP model now implements Path MTU Discovery (RFC 1191 and RFC 1981), allowing
256+
connections to discover and adapt to the largest packet size that can traverse
257+
the path without fragmentation. In addition, TCP now forwards ICMPv4 and ICMPv6
258+
error indications to the application as soft notifications, and aborts
259+
connections in the SYN_SENT state on hard ICMP errors.
260+
261+
11. RNG grouping
262+
263+
A new GroupedRngManager was added, providing a flexible way to share random
264+
number generators among simulation components. It supports grouping components by
265+
module (the default, one RNG set per module), by node (a node-wide shared RNG
266+
set), or network-wide (a single global RNG set), selectable via the rng-grouping
267+
configuration option.
268+
269+
12. OSPFv3 packet serializer
270+
271+
A packet serializer was added for OSPFv3, enabling OSPFv3 packets to be
272+
recorded into PCAP files, sent through emulation interfaces, and verified
273+
byte by byte in fingerprint tests. Several packet format errors (incorrect
274+
packet and LSA length fields) were fixed in the process, and the Ospfv3
275+
module gained a checksumMode parameter for RFC-correct checksums.
276+
277+
13. STP/RSTP tutorial
278+
279+
A new tutorial introduces the Spanning Tree Protocol and Rapid Spanning Tree
280+
Protocol through a progression of examples, demonstrating root bridge election,
281+
port roles and states, topology change handling, and the rapid transitions
282+
provided by RSTP.
283+
284+
14. Documentation refinements
285+
286+
The IPv6 chapter of the User's Guide was substantially rewritten to reflect the
287+
modernized IPv6 stack, including documentation of the new Ipv6NetworkConfigurator
288+
and the XML routing configuration format. New User's Guide chapters describe
289+
satellite mobility and geographic visualization, and the BGP documentation
290+
was extended with the configuration file format and the new IPv6 (MP-BGP)
291+
support. NED documentation for many IPv6 and Mobile IPv6 modules was expanded
292+
and brought up to date, and several example simulations (e.g. the PIM
293+
examples) received README files.
294+
295+
15. Notable bug fixes and other changes
296+
297+
Most modules were migrated to the displayStringTextFormat mechanism for their
298+
Qtenv display strings, replacing custom refreshDisplay() overrides; the old
299+
WATCH_xxx() macros were replaced with the unified WATCH() macro, and additional
300+
watches were added for computed values. This affects only the graphical runtime
301+
and has no effect on results.
302+
303+
The LdpMplsRouter and RsvpMplsRouter modules were refactored to share a common
304+
MplsRouterBase base, eliminating duplicated code. This changes the module
305+
initialization order and therefore the random number draw order, so MPLS
306+
simulation results may change.
307+
308+
Fixed two IPsec ESP correctness bugs: an incorrect block size unit in payload
309+
padding, and an incorrect total length computation during decryption.
310+
311+
Fixed a UDP payload padding removal bug that could misdetect trailing data, and a
312+
crash that occurred when combining multicast traffic with VLANs.
313+
314+
Fixed a memory leak in MessageDispatcher that occurred when packet delivery
315+
failed.
316+
317+
Standardized many internal integer types in the SCTP model and across the
318+
codebase, improving consistency.
319+
320+
A new STAGE_NETWORK_INTERFACE_CONFIGURATION stage was inserted into the
321+
lifecycle start and stop operations, so that network interfaces are
322+
configured before IPv6 addresses are assigned. This fixes network interfaces
323+
not re-obtaining their global IPv6 address after a node restart.
324+
325+
Fixed L2NetworkConfigurator to configure all ports in the network instead of
326+
just the first one, and added a dumpConfiguration parameter for debugging.
327+
328+
Fixed visualizers to subscribe to the signals of their subject module rather
329+
than the visualization target module, so that the two can be fully decoupled.
330+
The InfoVisualizer now supports the %N directive for displaying the display
331+
name of a module.
332+
333+
Fixed crashes that occurred when running GPSR over IPv6.
334+
335+
IPv6 Neighbor Discovery packets are now created with descriptive names,
336+
making logs and packet traces easier to read.
337+
338+
Removed several low-value or redundant IPv6 example simulations (demonetworketh,
339+
ipv6bulk, and ipv6nclients).
340+
341+
Several additional issues reported on GitHub have also been fixed.
342+
343+
4344
INET-4.6 (February 2026) — feature release
5345
------------------------------------------
6346

0 commit comments

Comments
 (0)