The goal is to simulate the NDN traffic on LEO satellites with accurate delays and mobility. Core simulation is based on a modified ndnSIM version of ns-3 (https://github.com/named-data-ndnSIM/ns-3-dev & https://github.com/named-data-ndnSIM/ndnSIM). Satellite topologies, net devices, and channels are currently taken from Hypatia (https://github.com/snkas/hypatia). However, putting ndnSIM's and Hypatia's components together needs a bit more work because:
- Both act as modules of different versions of ndnSIM. Several patches are needed for compatibility.
- Current ndnSIM implementation on top of NFD and ndn-cxx do not support the multicast nature of satellite topology.
- Replace routing coomponents (e.g., Arbiter, ARP Cache, and other IP congestion controls) with custom NDN forwarding strategy. Basic-sim module is still used for utility functions (e.g., exp-util.cc).
- Fully adopt GSL and ISL channels.
- Require a small patch for GSL and ISL net devices, such as adding the NDN protocol number.
- Adopt most of the import functions, including forwarding state and topology data.
- Install and fix missing dependencies caused by different versions of external modules and ns-3.
- Implement a custom ns-3's Transport to support GSL multicast.
- Implement a custom NDN StackHelper class to support different types of net devices and channels.
- Apply Hypatia's mobility model to the NDN Stack for calculating delays.
- Extends some of the NFD and ndnSIM components to add functionalities for satellite topology.
- Internal modules are modified for compatibility issues.
git submodule update --recursive --init
./waf configure --enable-mpi
cd ns3-dev-leo/experiments/a_b
python step_1_generate_runs.py
python step_2_run.py
The run list is located at experiments/a_b/run_list.py
. Due to the recent major change to the code base, only a_b scenario is currently provided, meaning that the multiple consumers scenarios are temporary disabled.
You can change the following:
- Dynamic states and GSL generation algorithm
- NDN scenarios (Consumer/Producer nodes, Ping, Window, Multiple Consumers)
- Set the loss rate, link bandwidth and packet queue size
- Set the simulation time
Additional parameters such as frequency, window size, and consumers/producer pairs can be adjusted in the corresponding file
- Ping -
experiments/scenarios/runs/a_b_ping.cc
: one client sendsFrequency
interest per second with no retransmission timer. Segment number is unique, and is incrementing by one per interest transmission. Use vanillabest-route
forwarding strategy and modified `ConsumerPing' application (disabled retransmission) - PingInstantRetx -
experiments/scenarios/runs/a_b_ping_instant_retx.cc
: one client sendsFrequency
interest per second with no retransmission timer. The client will do instant retransmission on every pending interest when it detects a satellite handover. Use vanillabest-route
forwarding strategy and modified `ConsumerPing' application (disable retransmission timer) - PingNackRetx -
experiments/scenarios/runs/a_b_ping_nack_retx.cc
: one client sendsFrequency
interest per second with no retransmission timer. The cleint will do instant retransmission after it detects a satellite handover. Use customnack-retx
forwarding strategy and modified `ConsumerPing' application (disable retransmission timer). The satellites in the network will react to NACK to find the alternative path. - FixedWindow -
experiments/scenarios/runs/a_b_fixed_window.cc
: one client sends interests, allowing fixed-window pending interests. Use default rtt estimator for retransmission timer. Use customConsumerFixedWindow
client - FixedWindowRetx -
experiments/scenarios/runs/a_b_fixed_window_retx.cc
: just like Fixed window but withnack-retx
strategy.
- Reimplementing the forwarding hint mechanism
- Add additional
ConsumerPingNoRetx
client instead of modifying the existingConsumerPing
client - Improve the forwarding strategy to allow more cases of synchronous multi-path forwarding
- Implement and evaluate proposed hop-by-hop congestion control schemes
ndnSIM is an NDN simulation framework that serves as a foundation to implement satellite network specifics. A few patches are needed for compability. Copyright © 2011-2023 University of California, Los Angeles ndnSIM is licensed under conditions of GNU General Public License version 3.0 or later with permission to be linked with NS-3 codebase (GPL 2.0). ndnSIM uses a number of third-party software and libraries, licensed under the following licenses:
- The Boost libraries are licensed under the Boost Software License 1.0
- any-lite by Martin Moene is licensed under the Boost Software License 1.0
- optional-lite by Martin Moene is licensed under the Boost Software License 1.0
- variant-lite by Martin Moene is licensed under the Boost Software License 1.0
- SQLite is in the public domain
- The waf build system is licensed under the terms of the BSD license
- NDN Forwarding Daemon (NFD) licensed under conditions of GNU GPL 3.0+ ndnSIM also relies on several other third-party libraries with non-GPL compatible license. These library fall into category of “System Libraries” under GPL license definitions and are used in accordance with GPL license exception for “System Libraries”: The GPL license is provided below in this file. For more information about these licenses, see https://www.gnu.org/licenses/
Hypatia provides useful libraries and ns-3's network models to contribute to our simulator.
Hypatia uses a number of third-party software and libraries, licensed under the following licenses:
- ns3-sat-sim/ is licensed under the GNU GPL version 2 license.
- satgenpy/ is licensed under the MIT license.
- satviz/ is license under the MIT license.
- paper/ is licensed under the MIT license.
This material is based upon work supported by Cisco and the National Science Foundation. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the sponsors.