Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,22 @@ This flags represents regular expression that match generated **data file names*

E.g. if `--metrics-filter = "cwnd/.*"`, NoNS measures only CWND values, if `--metrics-filter = ".*_link1.*"`, only metircs about link1.

## How to add new congestion control algorithm

If you want to implement TCP-like algorithm, follow these steps:

1. Create class (`YourCC` further) that implements [`ITcpCC`](source/flow/tcp/i_tcp_cc.hpp). It should be a class that contains all logic of your congestion control algorithm. See example: [`TcpTahoeCC`](source/flow/tcp/tahoe/tcp_tahoe_cc.cpp).
2. Add alias for `TcpFlow<YourCC>` (`YourTcp` further). Its is recomended to put it in the same directory with `YourCC`.
3. Add implememtation for `Parser<YourTcp>::parse_tcp_cc`. It is a function that parses `YourCC` from yaml file. See [implementation](source/parser/identifiable_parser/flow/parse_tcp_tahoe_cc.cpp) for `TchTahoe`
4. Add alias (`YourSmulator` further) for simulator class based on `YourTcp` and put it in the end of [simulator.hpp](source/simulator.hpp) file.
5. Add parsing of `YourSmulator` in [`create_simulator` function](source/simulator.cpp). The string you match `algorithm` will be used in simulation config. See [simulation config](configuration_examples/simulation_examples/tcp_simulation.yml) for `TcpTahoe` algorithm.

If your algorithm is not TCP-like (e.g. credit-based), do fillowing:
1. Create class (`YourFlow` further) that implements [`IFllow`](source/flow/i_flow.hpp). `YourFlow` should repersent all logic of sending packets. See example: [`TcpFlow`](source/flow/tcp/tcp_flow.hpp).
3. Add implememtation for `Parser<YourFlow>::parse_object`. This function should parse `YourFlow` from yaml file. See [implementation](source/parser/identifiable_parser/flow/parse_tcp_flow.hpp) for `TcpFlow`
4. Add alias (`YourSmulator` further) for simulator class based on `YourFlow` and put it in the end of [simulator.hpp](source/simulator.hpp) file.
5. Add parsing of `YourSmulator` in [`create_simulator` function](source/simulator.cpp). The string you match `algorithm` will be used in simulation config. See [simulation config](configuration_examples/simulation_examples/tcp_simulation.yml) for `TcpTahoe` algorithm.

## Resuls of simulations

Metrics and results of load testing of all simulation runs deploys to [gihub pages](https://cloud-storage-team.github.io/algnet)