Performance-oriented Congestion Control.
This is a Linux kernel module implementing the PCC Allegro and PCC Vivace.
master branch is for PCC Allegro, the first version of PCC, introduced in NSDI15.
vivace branch is for PCC Vivace, the second version of PCC, introduced in NSDI18.
Until recently, this mechanism did not exist in the Linux kernel.
2014 - Implementation of PCC using UDT by Mo Dong - https://github.com/modong/pcc
2016 - Google publishes their BBR congestion algorithm (CA) - an algorithm with similar goals to PCC but slightly different, as a Linux kernel module.
2016 - Google adds pacing mechanism to the Linux kernel in order to support their BBR CA approach.
2017 - Google's BRR team adds more changes - allowing internal timers to implement pacing and multiple bug fixes.
2018 - PCC Vivace released with userspace implementation over UDT - https://github.com/PCCproject/PCC-Uspace
git
and clone this repository.cd src
make
sudo insmod tcp_pcc.ko
Now you can use pcc
as a congestion algorithm:
import socket
TCP_CONGESTION = getattr(socket, 'TCP_CONGESTION', 13)
s = socket.socket()
s.setsockopt(socket.IPPROTO_TCP, TCP_CONGESTION, 'pcc')
# Use s
src/tcp_pcc.c