Skip to content

Commit

Permalink
Merge tag 'ns-3.38' into unison
Browse files Browse the repository at this point in the history
ns-3.38 release
  • Loading branch information
F5Soft committed Nov 14, 2023
2 parents daba77e + 392e368 commit 0df9cb6
Show file tree
Hide file tree
Showing 1,315 changed files with 42,637 additions and 20,100 deletions.
7 changes: 6 additions & 1 deletion .clang-tidy
Original file line number Diff line number Diff line change
Expand Up @@ -29,17 +29,22 @@ Checks: >
performance-inefficient-vector-operation,
performance-trivially-destructible,
readability-braces-around-statements,
readability-container-size-empty,
readability-duplicate-include,
readability-isolate-declaration,
readability-make-member-function-const,
readability-misleading-indentation,
readability-misplaced-array-index,
readability-redundant-control-flow,
readability-redundant-function-ptr-dereference,
readability-redundant-smartptr-get,
readability-redundant-string-cstr,
readability-simplify-subscript-expr,
readability-static-accessed-through-instance,
readability-static-definition-in-anonymous-namespace,
readability-string-compare,
readability-uppercase-literal-suffix,
FormatStyle: "file"
HeaderFilterRegex: ".*h$"
HeaderFilterRegex: ".*(ns|NS).*/(contrib|examples|src|scratch|utils)/*/.*h"
UseColor: true
4 changes: 4 additions & 0 deletions .codespellrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[codespell]
skip = .git,.gitlab-ci-local,*.eps,*.pdf,*.css_t,AUTHORS
ignore-words = ./utils/codespell-ignored-words
exclude-file = ./utils/codespell-ignored-lines
8 changes: 4 additions & 4 deletions .github/workflows/per_commit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
run: |
sudo apt-get update
sudo apt-get -y install apt-utils
sudo apt-get -y install git gcc g++ cmake python make ninja-build
sudo apt-get -y install git gcc g++ cmake python3 make ninja-build
sudo apt-get -y install tcpdump libgsl-dev libxml2-dev
sudo apt-get -y install curl unzip tar
sudo apt-get -y install ccache
Expand Down Expand Up @@ -65,7 +65,7 @@ jobs:
run: |
sudo apt-get update
sudo apt-get -y install apt-utils
sudo apt-get -y install git gcc g++ cmake python make ninja-build
sudo apt-get -y install git gcc g++ cmake python3 make ninja-build
sudo apt-get -y install tcpdump libgsl-dev libxml2-dev
sudo apt-get -y install curl unzip tar
sudo apt-get -y install ccache
Expand All @@ -77,8 +77,8 @@ jobs:
uses: actions/cache@v3
with:
path: .ccache
key: ubuntu-ci-${{env.time}}
restore-keys: ubuntu-ci-
key: ubuntu-codeql-${{env.time}}
restore-keys: ubuntu-codeql-
- name: Setup ccache
run: |
ccache --set-config=cache_dir="$GITHUB_WORKSPACE/.ccache"
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ coverity
TAGS

.lock-ns3_*
.ns3rc

build-dir/
build/
Expand Down
23 changes: 19 additions & 4 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"name": "(gdb) Launch from scratch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/${relativeFileDirname}/ns3-dev-${fileBasenameNoExtension}-default",
"program": "${workspaceFolder}/build/${relativeFileDirname}/ns3-dev-${fileBasenameNoExtension}-${input:buildType}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
Expand All @@ -33,7 +33,7 @@
"name": "(lldb) Launch from scratch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/${relativeFileDirname}/ns3-dev-${fileBasenameNoExtension}-default",
"program": "${workspaceFolder}/build/${relativeFileDirname}/ns3-dev-${fileBasenameNoExtension}-${input:buildType}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
Expand All @@ -51,7 +51,7 @@
"name": "(gdb) Launch testrunner",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/utils/ns3-dev-test-runner-debug",
"program": "${workspaceFolder}/build/utils/ns3-dev-test-runner-${input:buildType}",
"args": [
"--suite=${selectedText}"
],
Expand All @@ -78,7 +78,7 @@
"name": "(lldb) Launch testrunner",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/utils/ns3-dev-test-runner-debug",
"program": "${workspaceFolder}/build/utils/ns3-dev-test-runner-${input:buildType}",
"args": [
"--suite=${selectedText}"
],
Expand All @@ -94,5 +94,20 @@
"externalConsole": false,
"MIMode": "lldb"
}
],
"inputs": [
{
"type": "pickString",
"id": "buildType",
"description": "What is the build option?",
"options": [
"debug",
"default",
"optimized",
"release",
"minsizerel"
],
"default": "default"
}
]
}
10 changes: 6 additions & 4 deletions AUTHORS
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ Zhiheng Dong (dzh2077@gmail.com)
Christoph Döpmann (doepmanc@informatik.hu-berlin.de)
Jordan Dorham (dorham1@llnl.gov)
Craig Dowell (craigdo@ee.washington.edu)
Matteo Drago (matteo.drago1994@gmail.com)
Gilaras Drakeson (gilaras@gmail.com)
Jared Dulmage (jared.dulmage@wpli.net)
Mathias Ettinger (mettinger@toulouse.viveris.com)
Expand Down Expand Up @@ -209,13 +210,13 @@ Michael Nowatkowski (nowatkom@gmail.com)
Anh Nguyen (annguyen@ittc.ku.edu)
Duy Nguyen (duy@soe.ucsc.edu)
Alfonso Oliveira (af.oliveira.16@gmail.com)
Wouter Overmeire (lodagro@gmail.com)
Luis Pacheco (luisbelem@gmail.com)
Matteo Pagin (mattpagg@gmail.com)
Jendaipou Palmei (jendaipoupalmei@gmail.com)
Lluís Parcerisa (parcerisa@gmail.com)
Parth Pandya (parthpandyappp@gmail.com)
Lluís Parcerisa (parcerisa@gmail.com)
Mingyu Park (darkpmg@naver.com)
Jendaipou Palmei (jendaipoupalmei@gmail.com)
Parth Pandya (parthpandyappp@gmail.com)
Harsh Patel (thadodaharsh10@gmail.com)
Natale Patriciello (natale.patriciello@gmail.com)
Pavinberg (pavin0702@gmail.com)
Expand Down Expand Up @@ -295,10 +296,11 @@ Rohit P. Tahiliani (tahiliar@tcd.ie)
Dave Taht (dave.taht@bufferbloat.net)
Marcos Talau (talau@users.sourceforge.net)
Adrian S. W. Tam (adrian.sw.tam@gmail.com)
Bill Tao (toyjet8@gmail.com)
Cristiano Tapparello (cristiano.tapparello@rochester.edu)
Hajime Tazaki (tazaki@sfc.wide.ad.jp)
Wilson Thong (wilsonwk@ee.cityu.edu.hk)
Lars Toenning (lars.toenning@gmail.com)
Lars Toenning (dev@ltoenning.de)
Omer Topal (omer.topal@airties.com)
Mauro Tortonesi (mauro.tortonesi@unife.it)
Quincy Tse (quincy.tse@gmail.com)
Expand Down
54 changes: 48 additions & 6 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,48 @@ 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.37 to ns-3.38
-------------------------------

### New API

* (core) Added new template classes `ValArray` and `MatrixArray` to represent efficiently 1D, 2D and 3D arrays. `ValArray` implements basic efficient storage of such structures and the basic operations, while `MatrixArray` allows to represent 3D arrays as arrays of mathematical matrices and invoke different mathematical operations on the arrays of matrices: multiplication, transpose, hermitian transpose, etc. `MatrixArray` can use Eigen to perform computationally complex operations.
* (core) Added several macros in **warnings.h** to silence compiler warnings in specific sections of code. Their use is discouraged, unless really necessary.
* (lr-wpan) Added beacon payload handle support (MLME-SET.request) in **LrWpanMac**.
* (lr-wpan) `LrWpanPhy::SetRxSensitivity` now supports the setting of Rx sensitivity.
* (lr-wpan) `LrWpanNetDevice::SetPanAssociation` is introduced to create more complex topologies (multi-hop) using a manual association.
* (netanim) Added a helper function to update the size of a node
* (network) Added class `TimestampTag` for associating a timestamp with a packet.
* (spectrum) A new fast-fading model `TwoRaySpectrumPropagationLossModel` has been added. This model serves as a performance-oriented alternative to the `ThreeGppSpectrumPropagationLossModel` and `ThreeGppChannelModel` classes, and it has been designed with the goal of providing end-to-end channel samples which are statistically close to the ones generated by the latter.
* (wifi) Added a new attribute **NMaxInflights** to QosTxop to set the maximum number of links on which an MPDU can be simultaneously in-flight.
* (wifi) New API has been introduced to support 802.11be Multi-Link Operations (MLO)
* (wifi) New API has been introduced to support 802.11ax dual NAV, UL MU CS, and MU-RTS/CTS features

### Changes to existing API

* (antenna, spectrum) `ComplexVector` definition has changed. Its API is implemented in `MatrixArray`. Some functions such as `push_back` and `resize` are not supported any more. On the other hand, the size initialization through constructor and access operator[] are maintained. Instead of `size ()` users can call `GetSize()`.
* (internet) TCP Westwood model has been removed due to a bug in BW estimation documented in <https://gitlab.com/nsnam/ns-3-dev/-/issues/579>. The TCP Westwood+ model is now named **TcpWestwoodPlus** and can be instantiated like all the other TCP flavors.
* (internet) `TcpCubic` attribute `HyStartDetect` changed from `int` to `enum HybridSSDetectionMode`.
* (internet-apps) Added class `Ping` for a ping model that works for both IPv4 and IPv6. Classes `v4Ping` and `Ping6` will be deprecated and removed in the future, replaced by the new `Ping` class.
* (lr-wpan) Added file `src/lr-wpan/model/lr-wpan-constants.h` with common constants of the LR-WPAN module.
* (lr-wpan) Removed the functions `LrWpanCsmaCa::GetUnitBackoffPeriod()` and `LrWpanCsmaCa::SetUnitBackoffPeriod()`, and moved the constant `m_aUnitBackoffPeriod` to `src/lr-wpan/model/lr-wpan-constants.h`.
* (lr-wpan) `LrWpanHelper::CreateAssociatedPan` replace `LrWpanHelper::AssociateToPan` and is able to create an associated PAN of the devices with both short addresses (16-bits) and extended addresses (EUI-64 bits).

### Changes to build system

* Added NinjaTracing support.
* Check if the ccache version is equal or higher than 4.0 before enabling precompiled headers.
* Improved bindings search for linked libraries and their include directories.
* Added `./ns3 distclean` option. It removes the same build artifacts as `./ns3 clean`, along with documentation, python and test artifacts.

### Changed behavior

* (applications) **UdpClient** and **UdpEchoClient** MaxPackets attribute is aligned with other applications, in that the value zero means infinite packets.
* (network) **Ipv4Address** and **Ipv6Address** now do not raise an exception if built from an invalid string. Instead the address is marked as not initialized.
* (tests) The test runner test.py will exit if no TestSuite is specified.
* (wifi) Control frames (specifically, BlockAckRequest and MU-BAR Trigger Frames) are stored in the wifi MAC queue and no longer in a dedicated BlockAckManager queue
* (wifi) BSSIDs are no longer hashed by the ApInfo comparator because it may lead to different results on different platforms

Changes from ns-3.36 to ns-3.37
-------------------------------

Expand Down Expand Up @@ -379,7 +421,7 @@ Changes from ns-3.29 to ns-3.30
* It is now possible to know the size of the SpectrumValue underlying std::vector, as well as accessing read-only every element of it.
* The `GetClosestSide` method of the Rectangle class returns the correct closest side also for positions outside the rectangle.
* The trace sources `BackoffTrace` and `CwTrace` were moved from class QosTxop to base class Txop, allowing these values to be traced for DCF operation. In addition, the trace signature for BackoffTrace was changed from TracedValue to TracedCallback (callback taking one argument instead of two). Most users of CwTrace for QosTxop configurations will not need to change existing programs, but users of BackoffTrace will need to adjust the callback signature to match.
* New trace sources, namely `DrbCreated`, `Srb1Created` and `DrbCreated` have beed implemented in LteEnbRrc and LteUeRrc classes repectively. These new traces are used to improve the connection of the RLC and PDCP stats in the RadioBearerStatsConnector API.
* New trace sources, namely `DrbCreated`, `Srb1Created` and `DrbCreated` have been implemented in LteEnbRrc and LteUeRrc classes respectively. These new traces are used to improve the connection of the RLC and PDCP stats in the RadioBearerStatsConnector API.
* `TraceFadingLossModel` has been moved from lte to spectrum module.

### Changes to build system
Expand Down Expand Up @@ -407,10 +449,10 @@ Changes from ns-3.29 to ns-3.30
* New `ATTACH_REQUEST` state to wait for finalization of the S1 signalling with the core network.
* New InitialContextSetupRequest primitive of the S1 SAP that is received by the eNB RRC when the S1 signalling from the core network is finished.

* A new buffer has been introduced in the LteEnbRrc class. This buffer will be used by a target eNB during handover to buffer the packets comming from a source eNB on X2 inteface. The target eNB will buffer this data until it receives RRC Connection Reconfiguration Complete from a UE.
* A new buffer has been introduced in the LteEnbRrc class. This buffer will be used by a target eNB during handover to buffer the packets coming from a source eNB on X2 interface. The target eNB will buffer this data until it receives RRC Connection Reconfiguration Complete from a UE.
* The default qdisc installed on single-queue devices (such as PointToPoint, Csma and Simple) is now `FqCoDel` (instead of PfifoFast). On multi-queue devices (such as Wifi), the default root qdisc is now `Mq` with as many FqCoDel child qdiscs as the number of device queues. The new defaults are motivated by the willingness to align with the behavior of major Linux distributions and by the need to preserve the effectiveness of Wifi EDCA Functions in differentiating Access Categories (see issue #35).
* LTE RLC TM mode does not report anymore the layer-to-layer delay, as it misses (by standard) an header to which attach the timestamp tag. Users can switch to the PDCP layer delay measurements, which must be the same.
* Token Bank Fair Queue Scheduler (`ns3::FdTbfqFfMacScheduler`) will not anymore schedule a UE, which does not have any RBG left after removng the RBG from its allocation map if the computed TB size is greater than the "budget" computed in the scheduler.
* Token Bank Fair Queue Scheduler (`ns3::FdTbfqFfMacScheduler`) will not anymore schedule a UE, which does not have any RBG left after removing the RBG from its allocation map if the computed TB size is greater than the "budget" computed in the scheduler.
* LTE module now supports the **Radio Link Failure (RLF)** functionality. This implementation introduced following key behavioral changes:
* The UE RRC state will not remain in `CONNECTED_NORMALLY` state if the DL control channel SINR is below a set threshold.
* The LTE RRC protocol APIs of UE i.e., LteUeRrcProtocolIdeal, LteUeRrcProtocolReal have been extended to send an ideal (i.e., using SAPs instead to transmitting over the air) UE context remove request to the eNB. Similarly, the eNB RRC protocol APIs, i.e, LteEnbRrcProtocolIdeal and LteEnbRrcProtocolReal have been extended to receive this ideal UE context remove request.
Expand Down Expand Up @@ -906,7 +948,7 @@ Changes from ns-3.18.1 to ns-3.19
* For the TapBridge device, in UseLocal mode there is a MAC learning function. TapBridge has been waiting for the first packet received from tap interface to set the address of the bridged device to the source address of the first packet. This has caused problems with WiFi. The new behavior is that after connection to the tap interface, ns-3 learns the MAC address of that interface with a system call and immediately sets the address of the bridged device to the learned one. See [bug 1777](https://www.nsnam.org/bugzilla/show_bug.cgi?id=1777) for more details.
* TapBridge device now correctly implements IsLinkUp() method.
* IPv6 addresses and routing tables are printed like in Linux `route -A inet6` command.
* A change in `Ipv[4,6]Interface` enforces the correct behaviour of IP when a device do not support the minimum MTU requirements. This is set to 68 and 1280 octects respectively. IP simulations that may have run over devices with smaller MTUs than 68 or 1280, respectively, will no longer be able to use such devices.
* A change in `Ipv[4,6]Interface` enforces the correct behaviour of IP when a device do not support the minimum MTU requirements. This is set to 68 and 1280 octets respectively. IP simulations that may have run over devices with smaller MTUs than 68 or 1280, respectively, will no longer be able to use such devices.
Changes from ns-3.18 to ns-3.18.1
---------------------------------
Expand Down Expand Up @@ -947,7 +989,7 @@ Changes from ns-3.17 to ns-3.18
* A new standard value has been added that enables the new 11n data rates.
* New 11n preambles has been added (Mixed format and greenfield). To be able to change Tx duration according to the preamble used, a new class TxVector has been added to carry the transmission parameters (mode, preamble, stbc,..). Several functions have been updated to allow the passage of TxVector instead of WifiMode in MacLow, WifiRemoteStationManager, WifiPhy, YansWifiPhy,..
* A new information element has been added: HTCapabilities. This information element is added to the MAC frame header if the node is an HT node. This HTCapabilites information element is used to advertise the HT capabilities of the node to other nodes in the network
* InternetStackHelper has two new functions:SetIpv4ArpJitter (bool enable) and SetIpv6NsRsJitter (bool enable) to enable/disable the random jitter on the tranmission of IPv4 ARP Request and IPv6 NS/RS.
* InternetStackHelper has two new functions:SetIpv4ArpJitter (bool enable) and SetIpv6NsRsJitter (bool enable) to enable/disable the random jitter on the transmission of IPv4 ARP Request and IPv6 NS/RS.
* Bounds on valid time inputs for time attributes can now be enabled. See attribute-test-suite.cc for an example.
* New generic hash function interface provided in the simulation core. Two hash functions are provided: murmur3 (default), and the venerable FNV1a. See the Hash Functions section in the ns-3 manual.
* New Mac16Address has been added. It can be used with IPv6 to make an Autoconfigured address.
Expand Down Expand Up @@ -1516,7 +1558,7 @@ Changes from ns-3.7 to ns-3.8
* **MPI Interface for distributed simulation:** Enables access to necessary MPI information such as MPI rank and size.
* **Point-to-point remote channel:** Enables point-to-point connection between net-devices on different simulators, for use with distributed simulation.
* **GetSystemId in simulator:** For use with distributed simulation, GetSystemId returns zero by non-distributed simulators. For the distributed simulator, it returns the MPI rank.
* **Enhancements to src/core/random-variable.cc/h:** New Zeta random variable generator. The Zeta random distribution is tightly related to the Zipf distribution (already in ns-3.7). See the documentation, especially because sometimes the Zeta distribution is called Zipf and viceversa. Here we conform to the Wikipedia naming convention, i.e., Zipf is bounded while Zeta isn't.
* **Enhancements to src/core/random-variable.cc/h:** New Zeta random variable generator. The Zeta random distribution is tightly related to the Zipf distribution (already in ns-3.7). See the documentation, especially because sometimes the Zeta distribution is called Zipf and vice-versa. Here we conform to the Wikipedia naming convention, i.e., Zipf is bounded while Zeta isn't.
* **Two-ray ground propagation loss model:** Calculates the crossover distance under which Friis is used. The antenna height is set to the nodes z coordinate, but can be added to using the model parameter SetHeightAboveZ, which will affect ALL stations
* **Pareto random variable** has two new constructors to specify scale and shape:
Expand Down
Loading

0 comments on commit 0df9cb6

Please sign in to comment.