NetSimulyzer

A flexible 3D visualizer for displaying, debugging, presenting, and understanding ns-3 scenarios
4.38/5 (40 reviews)
Categories: Visualization

Application Screenshot

The NetSimulyzer is an offline playback tool for ns-3 that is designed to aid in understanding ns-3 scenarios at any size and using any communication technology. It not only renders the scenario's topology in 3D, but it also provides configurable charts and logging mechanisms to allow for debugging and demonstrating details that may not be evident from the topology, such as throughput or application state.

This module is the ns-3 component of the NetSimulyzer. It allows for the configuration of what is displayed for the network topology and provides the connections for charting and logging mechanisms. It generates a single output file, which is loaded into the NetSimulyzer application found here. For a quick tour of the features provided, see the Feature Overview in the README on GitHub. For more in-depth coverage of features, see the documentation provided with the most recent release.

For actually integrating the NetSimulyzer with an ns-3 scenario, see the 'Quickstart' chapter of the documentation provided with the release, or directly on GitHub, as well as the Installation section of the README. Further details about each component may be found in their corresponding sections in the documentation.

This module and the NetSimulyzer application were designed by Evan Black of the Wireless Networks Division of NIST.

Version 1.0.13

Works with ns-3.43

Latest Build :

Build History : NetSimulyzer Version 1.0.13

Release Notes

<h1>Overview</h1> <p>This is the official release of version 1.0.13 for the NetSimulyzer ns-3 module, which corresponds with the release of <a href="https://github.com/usnistgov/NetSimulyzer/releases/tag/v1.0.13">version 1.0.13 of the application</a></p> <h1>Changes</h1> <ul> <li>Add a method to the <code>AreaHelper</code> to make an area surrounding a collection of <code>Node</code>s: <code>MakeAreaSurroundingNodes()</code></li> <li>Add convenience methods to <code>LogicalLinkHelper</code> for linking groups of <code>Node</code>s together: <code>LinkAllToNode()</code> &amp; <code>LinkGroup()</code></li> <li>Add a <code>ThroughputSinkHelper</code>, which automatically creates <code>ThroughputSink</code>s for the following apps:<ul> <li><code>UdpClient</code></li> <li><code>OnOffApplication</code></li> <li><code>PacketSink</code></li> <li>From the <a href="https://apps.nsnam.org/app/publicsafetylte/">PSC Module</a>: <code>psc::McpttPttApp</code></li> </ul> </li> <li>ns-3.43 compatibility</li> </ul>
Bakefile : Link


Version 1.0.12

Works with ns-3.42

Latest Build :

Build History : NetSimulyzer Version 1.0.12

Release Notes

<h1>Overview</h1> <p>This is the official release of version 1.0.12 for the NetSimulyzer ns-3 module, which corresponds with the release of <a href="https://github.com/usnistgov/NetSimulyzer/releases/tag/v1.0.12">version 1.0.12 of the application</a></p> <h1>Changes</h1> <ul> <li>Added an <code>AreaHelper</code></li> <li>Add <code>StepFloor</code> &amp; <code>StepCeiling</code> connection types to <code>XYSeries</code> for plotting step functions</li> <li>Allow showing point icons in an <code>XYSeries</code> when the <code>Connection</code> is not <code>ConnectionType::None</code></li> <li>Added 12 point icon options to <code>XYSeries</code></li> <li>Added an attribute <code>PointColor</code> to <code>XYSeries</code> that allows changing the color of the point icons, if unset, the point icons will use <code>Color</code></li> </ul>
Bakefile : Link


Version 1.0.11

Works with ns-3.42

Latest Build :

Build History : NetSimulyzer Version 1.0.11

Release Notes

<h1>Overview</h1> <p>This is the official release of version 1.0.11 for the NetSimulyzer ns-3 module, which corresponds with the release of <a href="https://github.com/usnistgov/NetSimulyzer/releases/tag/v1.0.11">version 1.0.11 of the application</a></p> <h1>Changes</h1> <ul> <li>Add 'Logical Links'. A mechanism to show some arbitrary link between two configured Nodes. ``` NodeContainer nodes;<br /> nodes.Create(2);</li> </ul> <p>// With the helper netsimulyzer::LogicalLinkHelper linkHelper{orchestrator};<br /> linkHelper.Set ("Color", BLUE_VALUE); auto link = LogicalLinkHelper.Link (nodes.Get (0), nodes.Get (1));</p> <p>// If the collection only contains 2 nodes, you may just call Link () auto sameAsAbove = LogicalLinkHelper.Link (nodes);</p> <p>// Or from a configuration NodeConfigurationHelper nh{orchestrator}; auto configs = nh.Install (nodes); auto nodeConfiguration = configs.Get (0); nodeConfiguration-&gt;Link(nodes.Get(1)); ```</p>
Bakefile : Link


Version 1.0.10

Works with ns-3.41

Latest Build :

Build History : NetSimulyzer Version 1.0.10

Release Notes

<h1>Overview</h1> <p>This is the official release of version 1.0.10 for the NetSimulyzer ns-3 module, which corresponds with the release of <a href="https://github.com/usnistgov/NetSimulyzer/releases/tag/v1.0.10">version 1.0.10 of the application</a></p> <h1>Changes</h1> <ul> <li>Support ns-3.41 scoped <code>EnumValue</code><ul> <li>If you're using a version of ns-3 &lt; ns-3.41 and CMake does not detect that you need the backwards compatible version of <code>EnumValue</code>, see <a href="https://github.com/usnistgov/NetSimulyzer-ns3-module/tree/master?tab=readme-ov-file#configuration-options">The README</a> for how to enable this manually</li> </ul> </li> <li>Add a light 'crash handler' for module output in the event of a segfault</li> <li>Added some output tests</li> </ul>
Bakefile : Link


Version 1.0.9

Works with ns-3.40

Latest Build :

Build History : NetSimulyzer Version 1.0.9

Release Notes

<h1>Overview</h1> <p>This is the official release of version 1.0.9 for the NetSimulyzer ns-3 module, which corresponds with the release of <a href="https://github.com/usnistgov/NetSimulyzer/releases/tag/v1.0.9">version 1.0.9 of the application</a></p> <h1>Changes</h1> <ul> <li>Compatibility with ns-3.40</li> </ul>
Bakefile : Link


Version 1.0.8

Works with ns-3.39

Latest Build :

Build History : NetSimulyzer Version 1.0.8

Release Notes

<h1>Overview</h1> <p>This is the official release of version 1.0.8 for the NetSimulyzer ns-3 module, which corresponds with the release of <a href="https://github.com/usnistgov/NetSimulyzer/releases/tag/v1.0.8">version 1.08 of the application</a></p> <h1>Changes</h1> <ul> <li>The model for a Node may now be changed during the simulation by changing the <code>Model</code> attribute of the <code>NodeConfiguration</code>.</li> <li>The <code>Install</code> method on the <code>NodeConfigurationHelper</code> now may take a <code>const NodeContainer</code>. </li> <li>Added a convenience method to get the next sequential color from the palette: <code>NextColor3Value()</code>, see <code>color-palette.h</code> for more info.</li> </ul> <h2>Deprecations</h2> <p>The <code>Spline</code> type from <code>ConnectionType</code> from <code>XYSeries</code> has now been deprecated. Replace this: <code>cpp series-&gt;SetAttribute("Connection", EnumValue(XYSeries::ConnectionType::Spline));</code> With this: <code>cpp series-&gt;SetAttribute("Connection", EnumValue(XYSeries::ConnectionType::Line));</code></p>
Bakefile : Link


Version 1.0.7

Works with ns-3.38

Latest Build :

Build History : NetSimulyzer Version 1.0.7

Release Notes

<h1>Overview</h1> <p>This is the official release of version 1.0.7 for the NetSimulyzer ns-3 module, which corresponds with the release of <a href="https://github.com/usnistgov/NetSimulyzer/releases/tag/v1.0.7">version 1.07 of the application</a></p> <p>This is a maintenance release, following the release of ns-3.38</p> <h1>Changes</h1> <ul> <li>The module now follows the <a href="https://www.nsnam.org/docs/contributing/html/coding-style.html">new ns-3 coding style</a></li> <li>Various minor fixes</li> </ul>
Bakefile : Link


Version 1.0.6

Works with ns-3.37

Latest Build :

Build History : NetSimulyzer Version 1.0.6

Release Notes

<h1>Overview</h1> <p>This is the official release of version 1.0.6 for the NetSimulyzer ns-3 module, which corresponds with the release of <a href="https://github.com/usnistgov/NetSimulyzer/releases/tag/v1.0.6">version 1.06 of the application</a></p> <h1>Changes</h1> <h2><code>NodeConfiguration</code></h2> <ul> <li>Added <code>EnableLabel</code> attribute to show/hide the label above the Node in the application (default: <code>true</code>)</li> <li>Added <code>EnableMotionTrail</code> attribute to show/hide the motion trail for that Node in the application (default: <code>false</code>)</li> <li>Added <code>FaceForward</code> attribute to automatically adjust the <code>Orientation</code> attribute to face the Node in the direction of the last move (default: <code>false</code>)</li> <li>Added <code>LAPTOP</code>, &amp; <code>SINGLE_BOARD_COMPUTER</code> constants for the new laptop and single board computer models</li> </ul> <h2>CMake</h2> <ul> <li>Added <code>HAS_NETSIMULYZER</code> variable, which is used to test for the presence of the module in CMake (similar to the WAF variable of the same name)</li> </ul>
Bakefile : Link


Version 1.0.5

Works with ns-3.36

Build History : NetSimulyzer Version 1.0.5

Release Notes

<h1>Overview</h1> <p>This is the official release of version 1.0.5 for the NetSimulyzer ns-3 module, which corresponds with the release of <a href="https://github.com/usnistgov/NetSimulyzer/releases/tag/v1.0.5">version 1.05 of the application</a>. This is a smaller, mostly bug fix release. Building on top of <a href="https://github.com/usnistgov/NetSimulyzer-ns3-module/releases/tag/v1.0.4">version 1.0.4</a>.</p> <h1>Changes</h1> <ul> <li>Use <code>SetTimeStep()</code> instead of deprecated <code>TimeStep</code> attribute in examples</li> <li>Add convenience methods to set <code>ValueAxis</code> ranges</li> <li>Add convenience methods to set fixed/scaling ranges on trace sinks</li> </ul> <h2>Convenience Range Methods</h2> <p>There are new methods for setting ranges on a <code>ValueAxis</code> more quickly</p> <p><code>`` // Old way to set a fixed range for a</code>ValueAxis` xAxis-&gt;SetAttribute ("Minimum", DoubleValue (500.0)); xAxis-&gt;SetAttribute ("Maximum", DoubleValue (1500.0)); xAxis-&gt;SetAttribute ("BoundMode", EnumValue(ValueAxis::BoundMode::Fixed));</p> <p>// New Shorthand xAxis-&gt;FixedRange (500.0, 1500.0);</p> <p>// Also has an equilivant for scaling, <code>HighestValue</code> ranges xAxis-&gt;ScalingRange(500.0, 1500.0);</p> <p>// Leave empty, for a default [0-1] range xAxis-&gt;ScalingRange() ```</p> <p>Some new shorthand methods have also been added to some of the trace sinks</p> <h3>EcdfSink</h3> <p>``` // Fixed value range packetEcdf-&gt;SetRangeFixed (500.0, 1500.0);</p> <p>// Scaling value range packetEcdf-&gt;SetRangeScaling (500.0, 1500.0); ```</p> <h3>ThroughputSink</h3> <p>```cpp // Fixed throughput value range throughput-&gt;SetThroughputRangeFixed(0.0, 500.0);</p> <p>// Scaling throughput value range throughput-&gt;SetThroughputRangeScaling(0.0, 500.0); ```</p> <h3>StateTransitionSink</h3> <p>``` // Fixed range on the 'time' axis state-&gt;SetTimeRangeFixed(5.0, 30.0);</p> <p>// Scaling range on the 'time' axis state-&gt;SetTimeRangeScaling(5.0, 30.0); ``</p>
Bakefile : Link


Version 1.0.4

Works with ns-3.36

Build History : NetSimulyzer Version 1.0.4

Release Notes

<h1>Overview</h1> <p>This is the official release of version 1.0.4 for the NetSimulyzer ns-3 module, which corresponds with the release of <a href="https://github.com/usnistgov/NetSimulyzer/releases/tag/v1.0.4">version 1.04 of the application</a></p> <h1>Changes</h1> <ul> <li>Granularity down to the nanosecond for all events &amp; durations (previously only milliseconds)</li> <li>Added <code>MotionTrailColor</code> to <code>NodeConfiguration</code>, to manually set the color of the motion trail in the application.</li> <li>Added a method to the <code>NodeConfiguration</code> to indicate a transmission of some kind has occurred. This is displayed as a 'bubble' animation in the application. The duration of the animation, the size of the bubble, and the color are configurable per animation. Call the method below to trigger the animation</li> </ul> <p><code>void NodeConfiguration::Transmit (Time duration, double targetSize, Color3 color = GRAY_30)</code></p> <ul> <li>CMake is now supported as a build system (Waf still is too)</li> <li>Added <code>KeepRatio</code>, <code>Width</code>, &amp; <code>Depth</code> attributes to <code>NodeConfiguration</code> &amp; <code>Decoration</code></li> <li><code>Width</code>, <code>Depth</code> function like <code>Height</code>, they allow for scaling the 3D model in ns-3 units</li> <li><code>KeepRatio</code>,  If set to <code>true</code> (the default) makes sure when your models are scaled, they maintain their aspect ratio, so they do not appear stretched. Set this attribute to <code>false</code> to disable this check</li> <li>Also added the <code>ScaleAxes</code> attribute  to <code>Decoration</code> &amp; <code>NodeConfiguration</code>. This allows for specifying a fixed scale multiplier for each axis (in x, y, z order)</li> <li>The <code>COLOR_PALETTE</code> constant, a <code>std::vector</code> of all the colors, was added to <code>color-palette.h</code></li> </ul> <h2>Deprications</h2> <p>The <code>TimeStep</code> attribute for the <code>Orchestrator</code> has been replaced by the <code>SetTimeStep()</code> method. To upgrade, replace this:</p> <p><code>orchestrator-&gt;SetAttribute ("TimeStep", OptionalValue&lt;int&gt;(10));</code></p> <p>with this</p> <p><code>orchestrator-&gt;SetTimeStep (MilliSeconds (10), Time::MS);</code></p>
Bakefile : Link


1.0.3

Works with ns-3.35

Latest Build :

Build History : NetSimulyzer 1.0.3

Release Notes

<h1>Overview</h1> <p>This is the official release of version 1.0.3 for the <em>NetSimulyzer</em> <em>ns-3</em> module, which corresponds with the release of <a href="https://github.com/usnistgov/NetSimulyzer/releases/tag/v1.0.3">version 1.03 of the application</a></p> <h1>Changes</h1> <ul> <li>The <code>AutoColor</code> attribute was added to <code>SeriesCollection</code>. When this attribute is enabled (by default it is disabled), when a series is assigned to the collection, it is assigned a color from the internal color palette.</li> <li>Added constants for the new cell tower, quadcopter UAV, router, &amp; car models now included in the application</li> <li>Added the <code>EcdfSink</code> trace sink. This sink generates an empirical CDF from the provided data points.</li> </ul>
Bakefile : Link


1.0.2

Works with ns-3.33

Latest Build :

Build History : NetSimulyzer 1.0.2

Release Notes

<h1>Overview</h1> <p>This is the official release of version 1.0.2 for the <em>NetSimulyzer</em> <em>ns-3</em> module, which corresponds with the release of <a href="https://github.com/usnistgov/NetSimulyzer/releases/tag/v1.0.2">version 1.02 of the application</a></p> <h1>Changes</h1> <ul> <li>Point-to-point links are now automatically captured if both of the connected <code>Node</code>s have <code>NodeConfiguration</code>s aggregated on them</li> <li><code>XYSeries</code> May now have a <code>vector</code> of points appended at once. This option is much more efficient if many points are known at once</li> <li><code>XYSeries</code> May also be cleared. This erases all the points shown on the graph at the simulation time <code>clear()</code> is called</li> <li>The scenario end time is now captured</li> <li>Convenience constants of colors wrapped in <code>OptionalValue</code> are provided. <a href="https://github.com/usnistgov/NetSimulyzer-ns3-module/blob/v1.0.2/model/color-palette.h#L120-L154">See color-palette.h for the full list</a></li> </ul>
Bakefile : Link


1.0.1

Works with ns-3.33

Build History : NetSimulyzer 1.0.1

Release Notes

<h1>Overview</h1> <p>This is the official release of version 1.0.1 for the <em>NetSimulyzer</em> <em>ns-3</em> module, which corresponds with the release of <a href="https://github.com/usnistgov/NetSimulyzer/releases/tag/v1.0.1">version 1.01 of the application</a></p> <h1>Changes</h1> <ul> <li>Series point labels are now hidden by default (#22)</li> <li>The <code>ThroughputSink</code> now also may accept a <code>ns3::Packet</code> instead of just a packet's size in bytes, see <a href="https://github.com/usnistgov/NetSimulyzer-ns3-module/blob/master/examples/throughput-sink-example-netsimulyzer.cc">the new ThroughoutSink example for more details</a></li> <li>The server &amp; cell tower models now appear in the documentation</li> <li>The new basic shape models from the application now have constants (#23)</li> <li><code>models::CUBE</code>/<code>models::CUBE_VALUE</code></li> <li><code>models::DIAMOND</code>/<code>models::DIAMOND_VALUE</code></li> <li><code>models::SPHERE</code>/<code>models::SPHERE_VALUE</code></li> <li><code>models::SQUARE_PYRAMID</code>/<code>models::SQUARE_PYRAMID_VALUE</code></li> <li>Changing the <code>BaseColor</code> &amp; <code>HighlightColor</code> attributes during the simulation is now supported. If either of these values are changed, it'll be reflected during playback at the same time it occurred.</li> <li>Fixed a crash if <code>PollMobility</code> was enabled and a <code>Node</code> with no <code>MobilityModel</code> was configured</li> <li><code>LogStream</code>s may now be created during the simulation (#10)</li> <li>Series are now blue by default</li> <li>The devices in the WiFi Bianchi example are no longer stacked on top of one another and have had their colors adjusted</li> <li>The Lena Radio Link Failure example now uses the 'Land Drone' model, and it has been made much bigger</li> <li><em>ns-3</em> function logging is now supported (#19)</li> </ul>
Bakefile : Link


1.0.0

Works with ns-3.33

Build History : NetSimulyzer 1.0.0

Release Notes

<p>This is the first public release of the NetSimulyzer ns-3 module.</p>
Bakefile : Link


Installation requires a C++17 compiler (minimum of g++7.3 or clang-6). This contributed module is installed in the usual way for ns-3 (in the contrib directory). Ensure that the module is named `netsimulyzer`. ## Installation from source archive See the Release History tab, or use the blue Download button, to download a released version of this module. ## Installation from git Development code for the project can be fetched with git from one of the below URLs: ### HTTPS (Choose this one if you're uncertain) ``` git clone https://github.com/usnistgov/NetSimulyzer-ns3-module netsimulyzer ``` ### SSH ``` git clone git@github.com:usnistgov/NetSimulyzer-ns3-module.git netsimulyzer ```

This module is maintained by Evan Black at NIST. Please open an issue on the module's [GitHub](https://github.com/usnistgov/NetSimulyzer-ns3-module/issues/new) page.

This ns-3 extension is one or more contributed modules.

Version Version 1.0.13

Released Nov. 13, 2024

Works with ns-3.43

Bake bakeconf.xml