Skip to content

CN-TU/PCC-Uspace

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Optimizing Congestion Control Through Fair Queuing Detection

Building

To build the code run the following:

cd src
sunifdef -r -UQUIC_PORT -UQUIC_PORT_LOCAL ./pcc/\*
make

If you change the code and want to rebuild it, it is important you have to run make clean && make.

Please also compile our utility to analyze TCP congestion windows, which is called wintracker using go build -o wintracker wintracker.go. It is required for the evaluation of results. Our go version is 1.10.2.

Experimenting

We use the network emulation library py-virtnet (GitHub repository) for our experiments. Our python version is 3.7.3.

To run an experiment, use test.py. For example, it can be used as follows:

sudo python3 test.py --qdisc pfifo --buffer_size 50 --delay 25 --rate 50 --time 30

--qdisc pfifo means that no Fair Queuing is used while --qdisc fq uses it.

Use the --store_pcaps option to write pcaps of each flow, which can be used to create plots of bandwidth and delay.

Accuracy

To see how accurate our mechanism to detect the presence of Fair Queuing is, run

sudo python3 test.py --run_scenario accuracy

Systematic evaluation

To do a systematic evalution of loss-based congestion control (Cubic), run

sudo python3 test.py --run_scenario evaluation --only_iperf --competing_flow 

For a systematic evalution of our algorithm, run

sudo python3 test.py --run_scenario evaluation

Plotting

To create plots of bandwidth/delay run

ls pcaps/sender*.pcap | xargs -L 1 ./plot_rtt_and_bandwidth.py

About

Fair Queuing Detection and Delay based Congestion Control. Forked userspace implementation of PCC. Contact: Maximilian Bachl

Topics

Resources

License

Stars

Watchers

Forks

Languages

  • C++ 65.7%
  • TeX 27.3%
  • Go 3.1%
  • Python 3.0%
  • C 0.4%
  • Makefile 0.4%
  • Shell 0.1%