Skip to content

Commit

Permalink
Merge tag 'ns-3.42' into unison
Browse files Browse the repository at this point in the history
ns-3.42 release
  • Loading branch information
F5Soft committed Sep 7, 2024
2 parents 1f5b064 + ab4cce0 commit a43bb99
Show file tree
Hide file tree
Showing 1,023 changed files with 29,393 additions and 13,118 deletions.
1 change: 1 addition & 0 deletions .clang-tidy
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ Checks: >
-*,
bugprone-argument-comment,
bugprone-bool-pointer-implicit-conversion,
bugprone-branch-clone,
bugprone-inaccurate-erase,
bugprone-move-forwarding-reference,
bugprone-redundant-branch-condition,
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/per_commit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,8 @@ jobs:
./ns3 build coverage_gcc
cd ./build/coverage
bash <(curl -s https://codecov.io/bash) -f ns3.info || echo "Codecov did not collect coverage reports"
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
Windows_MinGW:
runs-on: windows-latest
defaults:
Expand Down
6 changes: 1 addition & 5 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,7 @@ version.cache

.gitlab-ci-local/
.idea/
cmake-cache/
cmake-build-debug/
cmake-build-relwithdebinfo/
cmake-build-minsizerel/
cmake-build-release/
cmake-*/
vcpkg/

.vs/
Expand Down
10 changes: 10 additions & 0 deletions .ns3.supp
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# This is the valgrind suppression file for ns-3.

# libucs is included by openMPI. Added Feb 2024.
# Errors generated by openucx 1.15.0-2
{
ignore_libucs_init_memory_leak
Memcheck:Leak
...
obj:*/libucs.so.*
}
2 changes: 1 addition & 1 deletion .vscode/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,4 @@
}
}
]
}
}
9 changes: 9 additions & 0 deletions AUTHORS
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
Rami Abdallah <abdallah.rami@gmail.com>
Eduardo Abinader (eduardo.abinader@gmail.com)
John Abraham (john.abraham.in@gmail.com)
Danilo Abrignani (dabrignani@gmail.com)
Expand Down Expand Up @@ -43,6 +44,7 @@ Matthew Bradbury (matt-bradbury@live.co.uk)
Dan Broyles (muxman@sbcglobal.net)
Jonathan Brugge (j.d.brugge@student.utwente.nl)
Junling Bu (linlinjavaer@gmail.com)
Alessio Bugetti (alessiobugetti98@gmail.com)
Elena Buchatskaia (borovkovaes@iitp.ru)
Alessio Bugetti (alessiobugetti98@gmail.com)
Nuno Cardoso (nunopcardoso@gmail.com)
Expand All @@ -56,6 +58,7 @@ Aditya Chaudhary (adityach2002@gmail.com)
Shobhit Chaurasia (000shobhitchaurasia@gmail.com)
Luciano Jerez Chaves (ljerezchaves@gmail.com)
Eugene Chemeritskiy (echemeritskiy@arccn.ru)
Rui Chen (rui@chenrui.dev)
Yufei Cheng (yfcheng@ittc.ku.edu)
Aditya Chirania (adityachirania97@gmail.com)
Zhao Wen Chow (shu@mos.ics.keio.ac.jp)
Expand Down Expand Up @@ -136,6 +139,7 @@ Atishay Jain (atishayjain25@gmail.com)
Sourabh Jain (jainsourabh679@gmail.com)
Vivek Jain (jain.vivek.anand@gmail.com)
Sam Jansen (sam.jansen@gmail.com)
Jacob Janzen (jacob.a.s.janzen@gmail.com)
Chandrakant Jena (chandrakant.barcelona@gmail.com)
Liu Jian (liujatp@gmail.com)
Sascha Alexander Jopen (jopen@informatik.uni-bonn.de)
Expand All @@ -151,6 +155,7 @@ Nils Kattenbeck (nils.kattenbeck@rwth-aachen.de)
Morteza Kheirkhah (m.kheirkhah@sussex.ac.uk)
Jörg Christian Kirchhof (christian.kirchhof@rwth-aachen.de)
Ohad Klausner
Wojtek Kosior (koszko@koszko.org)
Katarina Koutlia (katerina.koutlia@cttc.es)
Shravya Ks (shravya.ks0@gmail.com)
Flavio Kubota (flaviokubota@gmail.com)
Expand Down Expand Up @@ -193,6 +198,7 @@ Andrey Mazo (mazo@iitp.ru)
Jonathan McCrohan (jmccroha@tcd.ie)
Andrew McGregor (andrewmcgr@gmail.com)
Miralem Mehic (miralemmehic@gmail.com)
Zili Meng (zilim@ieee.org)
Levente Mészáros (levy@omnetpp.org)
Vedran Miletić (rivanvx@gmail.com)
Saswat Mishra (clicksaswat@gmail.com)
Expand Down Expand Up @@ -270,11 +276,13 @@ Karsten Roscher (sfx@rocktale.de)
Ali Rostami (a.rostami@rutgers.edu)
Bill Roome (wdr@bell-labs.com)
David Rua (david.rua@gmail.com)
Chan Ruihua (chenrh20@mails.tsinghua.edu.cn)
Andrea Sacco (andrea.sacco85@gmail.com)
Richard Sailer (richard_sailer@systemli.org)
Lynne Salameh (l.salameh@cs.ucl.ac.uk)
Providence Salumu Munga (Providence.Salumu@gmail.com, Providence.Salumu_Munga@it-sudparis.eu)
Francisco Javier Sánchez-Roselly (fnavarro@ujaen.es)
Mattia Sandri (sandrimatt@dei.unipd.it)
Charitha Sangaraju (charitha29193@gmail.com)
Siddharth Santurkar (siddharth.santurkar@ieee.org)
Gaurav Sathe (gaurav.sathe@tcs.com)
Expand All @@ -288,6 +296,7 @@ Ioannis Selinis (selinis.g@gmail.com)
Tomasz Seweryn (tomasz.seweryn7@gmail.com)
Dmitrii Shakshin (d.shakshin@gmail.com)
Kulin Shah (m.kulin@gmail.com)
Muyuan Shen (shmy315@gmail.com)
Guowang Shi (shiguowang2007@gmail.com)
Phillip Sitbon (phillip.sitbon@gmail.com)
Pedro Silva (pmms@inesctec.pt)
Expand Down
46 changes: 46 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,50 @@ Note that users who upgrade the simulator across versions, or who work directly

This file is a best-effort approach to solving this issue; we will do our best but can guarantee that there will be things that fall through the cracks, unfortunately. If you, as a user, can suggest improvements to this file based on your experience, please contribute a patch or drop us a note on ns-developers mailing list.

Changes from ns-3.41 to ns-3.42
-------------------------------

### New API
* (antenna) Added `CircularApertureAntennaModel` class which characterizes the antenna gain pattern of the reflector antenna with circular aperture described in 3GPP TR 38.811 v15.4.0, Section 6.4.1
* (core) Objects now can be aggregated to multiple objects though the `Object::UnidirectionalAggregateObject` function. Objects aggregated in such a way can not use `GetObject` to access the objects they are aggregated to.
* (core) Added `TestVector` iterators and dot product operator for `Vector2D` and `Vector3D` types
* (mobility) Added a new mobility model `GeocentricConstantPositionMobilityModel` for orbital and/or aerial nodes, and coordinate conversion methods between geocentric and topocentric coordinate systems
* (propagation, spectrum) Added 3GPP 38.811 Non-Terrestrial Networks (NTNs) channel model. Specifically, the large-scale phenomena have been implemented by extending `ThreeGppPropagationLossModel` with classes representing the various NTN propagation scenarios (Dense Urban, Urban, Rural and Suburban), while the frequency-dependent phenomena have been implemented by defining the corresponding scenarios in `ThreeGppChannelModel`.
* (network) Added `ApplicationHelper` helper class to create and install applications, removing redundant code in existing helpers and reducing the burden to add yet another helper when a new application model is added.
* (wifi) Added a new **SingleRtsPerTxop** attribute to `WifiDefaultProtectionManager`, which, if set to true, prevents to use protection mechanisms (RTS or MU-RTS) more than once in a TXOP (unless required for specific purposes, such as transmitting an Initial Control Frame to an EMLSR client).
* (wifi) Added a new **RtsCtsTxDurationThresh** to `WifiRemoteStationManager` to enable RTS/CTS protection based on the TX duration of the data frame. Both the value of this attribute and the value of the existing **RtsCtsThreshold** attribute are evaluated: if either of the thresholds (or both) is exceeded, RTS/CTS is used.
* (wifi) New trace helper `WifiPhyRxTraceHelper` for detailed tracing of Wi-Fi Phy reception events
* (wifi) New trace sources `WifiPhy::SignalTransmission`, `SpectrumWifiPhy::SignalArrival`, and `YansWifiPhy::SignalArrival`
* (wifi) New trace sources `WifiPhyStateHelper::RxOutcome` and`WifiPhy::PhyRxPpduDrop`, to support additional tracing.

### Changes to existing API

* (applications) Applications have a new Attribute to set the IPv4 ToS field.
* (core) Deprecated enum `TestDuration` in `TestCase` class. It has been replaced by enum class `Duration`.
* (core) In `TestSuite` class, deprecated `ALL`, `UNIT`, `SYSTEM`, `EXAMPLE` and `PERFORMANCE`. They have been replaced by `Type::ALL`, `Type::UNIT`, `Type::SYSTEM`, `Type::EXAMPLE` and `Type::PERFORMANCE`, respectively.
* (core) Deprecated `EventId::IsRunning()`. It has been replaced with `EventId::IsPending()`.
* (energy) The model library code of the energy module now uses the nested namespace `energy`.
* (lr-wpan) `MacPibAttributeIdentifier` attribute ids are now standard compliant.
* (lr-wpan) Multiple new identifiers added to `MacPibAttributeIdentifier`.
* (lr-wpan) Adds standard version comments to `MLME-GET.request` function.
* (lr-wpan) In the MAC layer, renamed `m_selfExt` to the variable `m_macExtendedAddress` to make it consistent with the standard specification.
* (lr-wpan) The Lr-wpan module now uses the namespace `lrwpan`.
* (lr-wpan) The model library code of the lr-wpan module now uses the nested namespace `lrwpan`.
* (lr-wpan) The `LrWpan` prefix of variables, structs and enumerations in the PHY and MAC was shorten to reflect the recent namespace change.
* (wifi) Deprecated `WIFI_TID_TO_LINK_MAPPING_{NOT_SUPPORTED,SAME_LINK_SET,ANY_LINK_SET}`. They have been replaced by `WifiTidToLinkMappingNegSupport::{NOT_SUPPORTED,SAME_LINK_SET,ANY_LINK_SET}`, respectively.
* (wifi) Deprecated `{IDLE, CCA_BUSY, TX, RX, SWITCHING, SLEEP, OFF}`. They have been replaced by `WifiPhyState::{IDLE, CCA_BUSY, TX, RX, SWITCHING, SLEEP, OFF}`, respectively.
* (wifi) Obsoleted **Txop** attributes `MinCw`, `MaxCw`, `Aifsn` and `TxopLimit`. The corresponding attributes for multi-link devices (`MinCws`, `MaxCws`, `Aifsns` and `TxopLimits`) can be used instead.

### Changes to build system

* Removed support of the `experimental/filesystem` library, in favor of the official `filesystem` library.
* Fixed static and monolib builds when linking to a non ns-3 module library.

### Changed behavior

* (mobility) Fixed the corner rebound direction in `RandomWalk2d[Outdoor]MobilityModel` and the initial direction in case of node starting from a border or corner.
* (tcp) TcpCubic and TcpLinuxReno will no longer grow their congestion window when application-limited, now matching Linux behavior

Changes from ns-3.40 to ns-3.41
-------------------------------

Expand Down Expand Up @@ -41,6 +85,7 @@ Changes from ns-3.40 to ns-3.41
```cpp
MakeEnumAccessor<Test_e>(&AttributeObjectTest::m_enum),
```

* (internet) Deprecated `Ipv4::WeakEsModel` and `Ipv4::GetWeakEsModel()`, `Ipv4::SetWeakEsModel(bool)` methods. Moved `Ipv6L3Protocol::StrongEndSystemModel` to `Ipv6::StrongEndSystemModel` and added `Ipv4::StrongEndSystemModel` with corresponding `GetStrongEndSystemModel()` and `SetStrongEndSystemModel(bool)` methods to improve end system model configuration options.
* (lr-wpan) Change the CapabilityField parameter in `LrWpanMac::MlmeAssociateRequest` and `LrWpanMac::MlmeAssociateIndication` to a standard bitmap.
* (lr-wpan) Change the MAC SuperframeField usage to a standard bitmap, this change impact parameters in the `BeaconPayloadHeader`.
Expand Down Expand Up @@ -68,6 +113,7 @@ Changes from ns-3.40 to ns-3.41
* Added guard rails for scratch targets missing or containing more than one `main` function.

### Changed behavior

* (sixlowpan) Now uses RFC 7973 Ethertype by default
* (spectrum) SpectrumChannel objects and the loss/delay models attached are now automatically initialized (Object::Initialize) at time zero
* (tcp) TCP Cubic (the default congestion control in ns-3) now supports TCP-friendliness by default (see RFC 9438 Section 4.3), making the congestion window growth somewhat more aggressive. This follows the default Linux behavior.
Expand Down
32 changes: 16 additions & 16 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ file(STRINGS VERSION NS3_VER)
# minimum compiler versions
set(AppleClang_MinVersion 11.0.0)
set(Clang_MinVersion 10.0.0)
set(GNU_MinVersion 9.0.0)
set(GNU_MinVersion 9.1.0)

# common options
option(NS3_ASSERT "Enable assert on failure" OFF)
Expand Down Expand Up @@ -108,21 +108,6 @@ set(NS3_FILTER_MODULE_EXAMPLES_AND_TESTS
"List of modules that should have their examples and tests built (e.g. lte;wifi)"
)

if(${NS3_CCACHE})
# Use ccache if available
mark_as_advanced(CCACHE)
find_program(CCACHE ccache)
if(NOT ("${CCACHE}" STREQUAL "CCACHE-NOTFOUND"))
message(STATUS "CCache is enabled.")
set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE})
execute_process(
COMMAND
${CCACHE} --set-config
sloppiness=pch_defines,time_macros,include_file_mtime,include_file_ctime
)
endif()
endif()

# Include macros used below
include(build-support/macros-and-definitions.cmake)

Expand All @@ -144,6 +129,21 @@ filter_enabled_and_disabled_modules(
ns3rc_enabled_modules ns3rc_disabled_modules
)

if(${NS3_CCACHE})
# Use ccache if available
mark_as_advanced(CCACHE)
find_program(CCACHE ccache)
if(NOT ("${CCACHE}" STREQUAL "CCACHE-NOTFOUND"))
message(STATUS "CCache is enabled.")
set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE})
execute_process(
COMMAND
${CCACHE} --set-config
sloppiness=pch_defines,time_macros,include_file_mtime,include_file_ctime
)
endif()
endif()

# ##############################################################################
# Process options #
# ##############################################################################
Expand Down
61 changes: 61 additions & 0 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,67 @@ a [GitLab.com issue tracker](https://gitlab.com/nsnam/ns-3-dev/-/issues) number,
and references prefixed by '!' refer to a
[GitLab.com merge request](https://gitlab.com/nsnam/ns-3-dev/-/merge_requests) number.

Release 3.42
------------

In this release, we have introduced pedantic compiler warnings to enhance C++ standard conformance and improve portability. Also, model library code in the lr-wpan and energy modules has been moved into a nested C++ namespace.

### Availability

This release is available from:
<https://www.nsnam.org/release/ns-allinone-3.42.tar.bz2>

### Supported platforms

This release is intended to work on systems with the following minimal
requirements (Note: not all ns-3 features are available on all systems):

- g++-9 or later, or LLVM/clang++-10 or later
- Python 3.6 or later
- CMake 3.13 or later
- (macOS only) Xcode 11 or later
- (Windows only) Msys2/MinGW64 toolchain or WSL2

Python API requires [Cppyy](https://cppyy.readthedocs.io/en/latest/installation.html) and has only
been tested on Linux. As of this release, the latest known version to work with ns-3 is cppyy==3.1.2.

### New user-visible features

- (antenna) !1517 - Added `CircularApertureAntennaModel`, which mimics the reflector antenna with circular aperture described in 3GPP TR 38.811 v15.4.0, Section 6.4.1
- (core) !1517 - Added `TestVector` iterators and dot product operator for `Vector2D` and `Vector3D` types
- (energy) !1948 - Adds C++ namespace 'energy'
- (lr-wpan) !1915 - Use MAC and PHY standard attribute ids
- (lr-wpan) !1924 - Adds MAC attribute identifiers
- (lr-wpan) !1927 - Adds standard version comments to MLME-GET.request function
- (lr-wpan) !1926 - Adds C++ namespace 'lrwpan' and prefix shortening
- (mobility) !1986 - Adds simple constant-mobility-example
- (mobility) !1517 - Added the `GeocentricConstantPositionMobilityModel` mobility model and coordinate conversion methods between geocentric and topocentric coordinate systems
- (propagation, spectrum) !1517 - Added 3GPP 38.811 Non-Terrestrial Networks channel model
- (network) !1828 - Added a common helper to create and install applications
- (wifi) - The `WifiMacHelper` provides a `SetDcf` and a `SetEdca` methods to configure attributes of `Txop` and `QosTxop` objects, respectively
- (wifi) - The `ApWifiMac` provides new attributes (`CwMinsForSta`, `CwMaxsForSta`, `AifsnsForSta` and `TxopLimitsForSta`) to define the EDCA access parameters to include in the EDCA Parameter Set advertised to associated stations
- (wifi) - The `WifiMacHelper` provides a `SetChannelAccessManager` and a `SetFrameExchangeManager` methods to configure attributes of `ChannelAccessManager` and `FrameExchangeManager` objects, respectively
- (wifi) - Simulation duration and data rate parameters of existing wifi examples changed to use Time and DataRate types
- (wifi) 1901! - Added WifiPhyRxTraceHelper for Wi-Fi Phy tracing

### Bugs fixed

- (bindings) - Preventing module namespace collision by checking if namespace exists before injecting it.
- (bindings, core) #1059 - Resolved potential initialization issues in TimerImpl and ensured compatibility with Cppyy3.
- (bindings, core) - Introduced a helper class to manage static initialization of Time as a workaround for Cppyy3 static initialization problems.
- (bindings, lte, wifi) - Relocated statically initialized variables from header files to source files for Cppyy3 compatibility.
- (build) #1048 - Resolved an issue with static and monolithic builds incorrectly linking to non-ns-3 libraries.
- (build) #1058 - Corrected the behavior of the ./ns3 clean command in symlinked directories.
- (build) #1065 - Rolled back the -Os optimization setting as the default on MacOS to address lld compatibility issues.
- (core) #1060 - Addressed a stack overflow problem in MakeEvent.
- (tests) - Enhanced error handling in test.py to avoid attempts to open non-existent XML files following early test termination by sanitizers.
- (tcp) #735 - BBR fails to discard invalid samples
- (tcp) #966 - Tcp Cubic (and LinuxReno) cwnd should not grow during application-limited phase
- (tcp) #1085 - Do not reset Cubic W_max upon timeout
- (wifi) #1072 - Support configuration of custom EDCA parameters via Txop attributes before device installation
- (wifi) - Fix operation in 6 GHz band (added support for FILS Discovery frames and HE 6GHz Band Capabilities information element, fixed HE Operation information element, fixed NSS selection, fixed HT and VHT not supported on 6GHz links).
- (wifi, spectrum) - Fix negative power when channel is switched during the propagation delay period (after TX started but before the signal reached RX).

Release 3.41
------------

Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.41
3.42
Loading

0 comments on commit a43bb99

Please sign in to comment.