#Eden-sim ## Description This repository contains a ns-3 library implementation to simulate embedded TSN networks. In addition to the implementation, this library comes with examples and non-regression tests for the implemented TSN mechanisms. This library is a result of the EDEN2 project and is **still under development**. ## Prerequisites - A ns-3 3.40 installation. See [ns-3 GitLab](https://gitlab.com/nsnam/ns-3-dev). - Clone the Git repository and checkout `ns-3.40` - Note that ns-3 doesn't need to be build at this step as this will be done when adding the simulator add-ons (cf. next subsection). ## Installation ```console git clone https://sahara.irt-saintexupery.com/embedded-systems/eden-sim.git cp -r eden-sim/contrib/* /contrib/ cd ./ns3 clean ./ns3 configure --enable-tests --enable-examples ./ns3 build ``` ## Usage To test the installation : ```console cd ./test.py ``` or to run a specific test suite (e.g ethernet) or test example (e.g. ethernet-point2point-withPropagationDelay) : ```console cd ./test.py --list ./test.py --suite ethernet --text test-logs ./test.py --example ethernet-point2point-withPropagationDelay ``` Note that with version 3.40 of ns-3, the “neighbor-cache” test fails without any connection or consequence to our library. However, the “mobility-trace,” “attributes,” “data-rate,” and “time” tests fail because of our library. Indeed, in order to simulate communications at over 1Gb/s, the “ethernet-test-suite.cc” test sets the time resolution to picoseconds instead of nanoseconds, thus causing side effects in other tests. Line 996 (i.e. “Time::SetResolution(Time::PS);”) can be commented out to resolve this issue. To run an example (e.g. "ethernet-point2point.cc") : ```console cd mkdir output cp contrib/ethernet/examples/ethernet-point2point.cc scratch/ ./ns3 run scratch/ethernet-point2point.cc --cwd output/ ``` Note that ns-3 examples can be run with "./ns3 run \" but we recommand to use the above method in order to modify/experiment with the example. To run a simulation script you have written : ```console cd mkdir output ./ns3 run scratch/ --cwd output/ ``` To run a simulation script with gdb : ```console cd mkdir output ./ns3 run scratch/ --cwd output/ --command-template="gdb --args %s" ``` ## Documentation Before attempting to understand this library, we recommend reading the [ns-3 documentation](https://www.nsnam.org/releases/ns-3-40/documentation/). A very good entry point is the [ns-3 tutorial](https://www.nsnam.org/docs/release/3.40/tutorial/html/index.html). Next, a set of commented simulation scripts illustrating the use of the libraries can be found at the following paths : - contrib/ethernet/examples/ - contrib/traffic-generator/examples/ - contrib/tsn/examples/ ## Contact Contact: embedded-systems@irt-saintexupery.com