Skip to content
master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
bbr
 
 
ccp
 
 
 
 
 
 
 
 
ipc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

This repository is an older experimental implementation of CCP, and is longer maintained. Please see https://github.com/ccp-project/portus.

Congestion Control Plane

The congestion control plane allows out-of-the-loop control over congestion control events in various datapaths. There is one included datapath, in udpDataplane, which implements reliable delivery.

There are 4 main parts of this repository:

  • An IPC layer (ipc) allowing for different IPC backends (ipcBackend package interface). Currently unix sockets (unixsocket) and netlink sockets (netlinkipc) are implented
  • A sample UDP datapath with reliable delivery (udpDataplane)
    • Note: the UDP datapath does not have full functionality.
  • An executable congestion control plane (ccp), and interface for defining congestion control schemes (ccpFlow)
  • Various congestion control schemes (reno, cubic, vegas, etc).

How to run

  • go get ./...
  • make
  • ./ccpl --datapath=<udp|kernel> --congAlg=<...>

How to write a new congestion control algorithm

  • Make a new sub-package: mkdir <my_alg>
  • Define an exported type in your subpackage which implements ccpFlow.Flow
  • Export a function with signature func Init(); which calls ccpFlow.Register(). It takes:
    • A name for your algorithm (used by the --congAlg flag)
    • A closure which returns an instance of your type.
  • In ccp/ccp.go:
    • Import your package: import "ccp/<my_alg>"
    • Call Init() at the top of main(): <my_alg>.Init()

Dependencies

About

DEPRECATED. see github.com/ccp-project/portus

Resources

License

Releases

No releases published

Packages

No packages published

Languages