# Not Overcomplicated Network Simulator
Not Overcomplicated Network Simulator (NoNS) is a free open source project aiming to build a discrete-event network simulator targeted at easy testing of congestion control algorithms.
NoNS uses CMake build manager, so project builds in this way:
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build./build/nons
--config path
[--output-dir output-dir-name]
[--no-logs]
[--no-plots]
[--metrics-filter]
Options:
-c, --config arg Path to the simulation configuration file
--output-dir arg Output directory for metrics and plots
(default: metrics)
--no-logs Output without logs
--no-plots Disables plots generation
--metrics-filter arg Fiter for collecting metrics pathes
(default: .*)
-h, --help Print usage
Examples of simulation configs placed in configuration_examples/simulation_examples
These flags represent regular expression that match generated data file names under metrics output directory. Plots generates accordingly to collected data.
E.g. if --metrics-filter = "cwnd/.*", NoNS measures only CWND values, if --metrics-filter = ".*_link1.*", only metircs about link1.
If you want to implement TCP-like algorithm, follow these steps:
- Create class (
YourCCfurther) that implementsITcpCC. It should be a class that contains all logic of your congestion control algorithm. See example:TcpTahoeCC. - Add implementation of parsing
YourCCand put it to directory with tcp congestion control parsers and call it fromcommon TCP congestion control parser - Create configuration files for testing and running your algorithm. See simulation config for
TcpTahoealgorithm.
If your algorithm is not TCP-like (e.g. credit-based), do following:
- Create class (
YourFlowfurther) that implementsIFlow.YourFlowshould represent all logic of sending packets. See example:TcpFlow. - Add implementation of parsing
YourFlowand put it to directory with flow parsers and call it fromcommon flow parser - Create configuration files for testing and running your algorithm. See simulation config for
TcpTahoealgorithm.
Metrics and results of load testing of all simulation runs are deployed to GitHub Pages