4 releases (2 breaking)

0.4.0 Nov 9, 2022
0.3.0 Jul 20, 2021
0.2.1 Jul 22, 2019
0.2.0 Oct 30, 2018

#11 in #higher-level

ISC license

30KB
683 lines

CCP Algorithm: Generic Congestion Avoidance

This repository provides a higher-level API on top of CCP for the increase-decrease family of congestion control algorithms. It also implements TCP Reno and TCP Cubic using this API.

To get started using this algorithm with CCP, please see our guide.

Notes

  • In order to use this algorithm for congestion control, you also need to install a CCP datapath. If you see errors about not being able to install a datapath program, it means that you have either not installed a datapath, or the IPC mechanism between the algorithm and datapath is not configured properly.
  • For a simple example of how to use this API, see src/reno.rs.

lib.rs:

Generic Cong Avoid is a higher-level API for portus which is suitable for traditional "congestion avoidance" algorithms.

These algorithms comprise of an increase rule when new cumulative acknowledgements arrive, and a decrease rule when congestion is detected. This crate provides implementations of Reno and Cubic.

The API retains the same structure as that of portus, but it is not necessary (nor possible) to write custom datapath programs: the generic-cong-avoid layer collects a fixed set of measurements detailed in GenericCongAvoidMeasurements.

Dependencies

~5–13MB
~132K SLoC