From 96fed81e57e3123598db1db1ec962cc5d058830b Mon Sep 17 00:00:00 2001 From: Lukas Prause Date: Fri, 27 Mar 2026 14:52:29 +0100 Subject: [PATCH] Update the README file to reflect the current state of the project. --- README.md | 64 ++++++++++++++++++++++++------------------------------- 1 file changed, 28 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index 84e13db..3dbae77 100644 --- a/README.md +++ b/README.md @@ -1,34 +1,40 @@ # TCP ROCCET :rocket: (RTT Oriented CUBIC Congestion control ExTension) -TCP ROCCET is a new TCP congestion control -algorithm suited for current cellular 5G NR beyond networks. -It extends the kernel default congestion control CUBIC -and improves its performance, and additionally solves -unwanted side effects of CUBIC’s implementation. -ROCCET uses its own Slow Start, called LAUNCH, where loss -is not considered as a congestion event. -The congestion avoidance phase, called ORBITER, uses -CUBIC's window growth function and adds, based on RTT -and ACK rate, congestion events. +TCP ROCCET is a new TCP congestion control algorithm that reduces latency by detecting queuing. +Additionally, it is specially suited for 4G/5G cellular networks. -A peer-reviewed paper on TCP ROCCET will be presented at the WONS 2026 conference. -A draft of the paper is available here: - https://arxiv.org/abs/2510.25281 +A peer-reviewed [paper on TCP ROCCET](https://opendl.ifip-tc6.org/db/conf/wons/wons2026/1571217211.pdf) was presented at the WONS 2026 conference. +## Install with apt +Add tcp-roccet-dkms to your source lists and install: +``` +echo "deb [trusted=yes] https://apt.fury.io/timfuchs/ /" | sudo tee /etc/apt/sources.list.d/tcp-roccet.list +sudo apt update +sudo apt install tcp-roccet-dkms +``` -## Setup +### Loading and using the congestion control +Note: This change is not persistent, the module will not be loaded at boot. +``` +sudo modprobe tcp_roccet +sudo sysctl net.ipv4.tcp_congestion_control=roccet +``` +## Build from source + +### Setup +Kernel headers are required: * Debian: `sudo apt install linux-headers-generic` * Fedora: `sudo dnf install kernel-devel` (`sudo reboot`) -## Build +### Build `make` ## Loading & Unloading the Module **1.** Insert into Kernel: `sudo insmod tcp_roccet.ko` -In case you get the "Invalid module Format" error, it can help reinstalling the kernel-headers. +In case you get the "Invalid module Format" error, it can help to reinstall the kernel-headers. **2.** Use the Algorithm: * Either via globally loading it: `sudo sysctl net.ipv4.tcp_congestion_control=roccet` @@ -38,12 +44,12 @@ In case you get the "Invalid module Format" error, it can help reinstalling the ## Debugging (Using kprobe) -In order to debug the `tcp_roccet` congestion control algorithm, there exists a Kprobe module (`roccet_kprobe.c`). Using this it is possible to inspect events generated by the algorithm. +In order to debug the `tcp_roccet` congestion control algorithm, there exists a Kprobe module (`roccet_kprobe.c`). Using this, it is possible to inspect events generated by the algorithm. -In order to use the Kprobe module the following steps are necessary: +In order to use the Kprobe module, the following steps are necessary: **1. Specify the event to inspect** -For this head into the `tcp_roccet.c` source code and find the function the Kprobe should attach to. +For this, head into the `tcp_roccet.c` source code and find the function the Kprobe should attach to. For Example: ``` @@ -68,7 +74,7 @@ Required files for this are: * `tcp_roccet.c` (Optional; Need to remove corresponding entry in Makefile if missing) **3. Load Kprobe module** -To then load the Module use +To then load the module use `sudo insmod roccet_kprobe.ko` If you are seeing the error "Unknown symbol in module" you need to first load the roccet algorithm. @@ -77,21 +83,7 @@ To see the trace output use `sudo cat /sys/kernel/tracing/trace_pipe` **5. Unload Kprobe module** -To remove the module again use +To remove the module again, use `sudo rmmod roccet_kprobe` -_See more info at_ https://docs.kernel.org/trace/kprobes.html and https://www.kernel.org/doc/Documentation/trace/kprobetrace.rst - -## Further Info -* On TCP-CC Ops: - * https://www.yonch.com/tech/linux-tcp-congestion-control-internals - * https://docs.ebpf.io/linux/program-type/BPF_PROG_TYPE_STRUCT_OPS/tcp_congestion_ops/ - -# Setup Development Environment -For specific Kernel: -1. Download linux source (the version you want to develop for) -2. Create Config via `make defconfig` -3. Compile kernel via `make` -4. Generate clangd Config via `python scripts/clang-tools/gen_compile_commands.py` -5. Copy `compile_commands.json` to development directory - +_See more info at_ https://docs.kernel.org/trace/kprobes.html and https://www.kernel.org/doc/Documentation/trace/kprobetrace.rst \ No newline at end of file