https://github.com/cn-tu/cocoa-qdisc

Cocoa is a qdisc which maximizes throughput for each flow while keeping the buffer minimal. Contact: Maximilian Bachl.

https://github.com/cn-tu/cocoa-qdisc

Science Score: 23.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
  • .zenodo.json file
  • DOI references
    Found 1 DOI reference(s) in README
  • Academic publication links
    Links to: arxiv.org, acm.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (10.0%) to scientific vocabulary

Keywords

active-queue-management aqm congestion-control fair-queuing kernel-module qdisc
Last synced: 5 months ago · JSON representation

Repository

Cocoa is a qdisc which maximizes throughput for each flow while keeping the buffer minimal. Contact: Maximilian Bachl.

Basic Info
Statistics
  • Stars: 8
  • Watchers: 4
  • Forks: 5
  • Open Issues: 0
  • Releases: 0
Topics
active-queue-management aqm congestion-control fair-queuing kernel-module qdisc
Created over 6 years ago · Last pushed over 5 years ago

https://github.com/CN-TU/cocoa-qdisc/blob/master/

# cocoa-qdisc
Contact: Maximilian Bachl

Cocoa is a qdisc which maximizes throughput for each flow while keeping the buffer minimal. For a more detailed description check out the paper presented at the [Buffer Sizing Workshop 2019](https://dl.acm.org/doi/abs/10.1145/3375235.3375236) ([arxiv](https://arxiv.org/abs/1910.10604)).
## Building
To compile the kernel module run 

    make

to install it and load it into the kernel run

    sudo make install
    
Next, to make ``tc`` aware of the module, change into the iproute2 folder ```cd iproute2``` and run

    make
    sudo make install

## Deploying
Finally, you can use the qdisc on an interface: 

    sudo tc qdisc replace dev  root cocoa
    
```tc``` also allows you to specify options like this: 

    sudo tc qdisc replace dev  root cocoa initial_quantum 3028 quantum 3028
    
## Experimenting
To run experiments, make sure you have [```py-virtnet```](https://pypi.org/project/py-virtnet/) ([GitHub repository](https://github.com/CN-TU/py-virtnet)) installed and then run

    sudo bash -c 'echo > /sys/kernel/debug/tracing/trace' && sudo bash -c 'echo 1 > /sys/kernel/debug/tracing/tracing_on' && sudo python3 test.py --path_to_tc_module /cocoa-qdisc/iproute2/tc --rate 100 --delay_to_add 100 --time 240 --qdisc cocoa --change 1 --cc cubic
    
After running experiments with cocoa, you can look at detailed output in the kernel tracing file at ```/sys/kernel/debug/tracing/trace```.

## Analyzing
To create plots of a run and show further statistics, first compile ```wintracker```:

    go build -o wintracker wintracker.go
    
Then, if you have a file called ```sender_fq_codel_cubic_1_20_120_1.0_bw_1571822805075.pcap``` in the ```pcaps``` directory you can run the plotting script:

    ./plot_rtt_and_bandwidth.py sender_fq_codel_cubic_1_20_120_1.0_bw_1571822805075.pcap

All tests were performed on kernel ```4.19.0-6-amd64``` on Debian Buster. We use Python 3.7.2. Our go version is ```go1.10.2 linux/amd64```.

Owner

  • Name: CN Group, Institute of Telecommunications, TU Wien
  • Login: CN-TU
  • Kind: organization
  • Location: Vienna, Austria

Communication Networks Group, TU Wien

GitHub Events

Total
Last Year