Giter Club home page Giter Club logo

pcc-kernel's Introduction

PCC

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.

History

PCC heavily relies on the pacing mechanism.
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

Using PCC

Environment

This module was tested and developed on kernel version 4.15

Compilation

Install git and clone this repository.
cd src
make
sudo insmod tcp_pcc.ko

Usage

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

Code

All PCC code resides under src/tcp_pcc.c

pcc-kernel's People

Contributors

nathanhjay avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.