MCPcopy Index your code
hub / github.com/ccp-project/portus

github.com/ccp-project/portus @v0.8.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.8.0 ↗ · + Follow
471 symbols 968 edges 50 files 60 documented · 13%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Portus Build Status

Portus is an implementation of a congestion control plane (CCP). It is a library that can be used to write new congestion control algorithms in user-space.

Congestion control algorithm implementations live in independent crates which use this library for common functionality. Each algorithm crate provides a binary which runs a CCP with that algorithm activated.

Further documentation is available on docs.rs.

Setup

  1. Install rust. See http://rust-lang.org/ for details.
  2. make. This will build and lint the portus library and bundled algorithm libraries and binaries, and run unit tests.

Notes

  • The ipc::netlink and ipc::kp modules will only compile on Linux. If the CCP kernel module (github.mit.edu/nebula/ccp-kernel) is loaded, the test will refuse to run.

Run

There are no algorithm binaries in this repository: it is just a library and runtime for CCP algorithms. You may be interested in https://github.com/ccp-project/generic-cong-avoid, which provides implementations of Reno and Cubic, or https://github.com/ccp-project/bbr, a BBR implementation.

Extension points exported contracts — how you extend this code

AsRawMsg (Interface)
Types that can be serialized. Message types wanting to become "predefined" (and as such take advantage of `get_u32s()` a [10 …
src/serialize/mod.rs
Ipc (Interface)
IPC mechanisms must implement this trait. This API enables both connection-oriented (send/recv) and connectionless (sen [7 …
src/ipc/mod.rs
Flow (Interface)
Implement this trait, [`portus::CongAlg`](./trait.CongAlg.html), and [`portus::CongAlgBuilder`](./trait.CongAlgBuilder.h [4 …
src/lib.rs
IntegrationTest (Interface)
(no doc) [6 implementers]
tests/libccp_integration/mod.rs
Pick (Interface)
(no doc) [4 implementers]
src/run.rs
CongAlg (Interface)
implement this trait, [`portus::CongAlgBuilder`](./trait.CongAlgBuilder.html) and [`portus::Flow`](./trait.Flow.html) to [4 …
src/lib.rs
CollectDps (Interface)
(no doc) [4 implementers]
src/run.rs
DatapathTrait (Interface)
A collection of methods to interact with the datapath. [1 implementers]
src/lib.rs

Core symbols most depended-on inside this repo

clone
called by 93
src/ipc/mod.rs
u32_to_u8s
called by 23
src/serialize/mod.rs
into_iter
called by 22
src/lang/datapath.rs
get
called by 21
src/lang/datapath.rs
insert
called by 12
src/lang/datapath.rs
get_field
called by 10
src/lib.rs
wait
called by 10
src/run.rs
log_error
called by 9
src/bin/ccp.rs

Shape

Method 206
Function 162
Class 85
Enum 9
Interface 9

Languages

Rust85%
Python13%
C3%

Modules by API surface

src/lang/datapath.rs38 symbols
src/lang/ast.rs35 symbols
src/serialize/mod.rs28 symbols
src/run.rs27 symbols
integration_tests/algorithms/compare.py26 symbols
src/lang/prog.rs18 symbols
src/ipc/mod.rs16 symbols
python/src/lib.rs16 symbols
src/lib.rs14 symbols
src/ipc/test-nl-kernel/nltest.c12 symbols
src/bin/ccp.rs12 symbols
src/ipc/netlink.rs11 symbols

For agents

$ claude mcp add portus \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact