TCP ROCCET 🚀 (RTT Oriented CUBIC Congestion control ExTension)
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 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
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
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 to reinstall the kernel-headers.
2. Use the Algorithm:
- Either via globally loading it:
sudo sysctl net.ipv4.tcp_congestion_control=roccet - Or via using it in specific measurements:
sudo iperf3 -c <Server-IP> -C roccet
3. Unload the Module: sudo rmmod tcp_roccet
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 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 Example:
__bpf_kfunc static void roccettcp_cong_avoid(struct sock *sk, u32 ack, u32 acked);
Specify this function name in the field symbol_name of the kprobe struct in roccet_kprobe.c
Obtain the arguments in the kprobe using the regs field.
(See the System V ABI for Linux under https://en.wikipedia.org/wiki/X86_calling_conventions#List_of_x86_calling_conventions)
2. Build Kprobe module
Use the provided Makefile to build the roccet_kprobe.c module for the local machine. (make)
For this the adequate linux-headers are required
- Debian:
sudo apt install linux-headers-generic - Fedora:
sudo dnf install kernel-devel
Required files for this are:
Makefileroccet_kprobe.ctcp_roccet.htcp_roccet.c(Optional; Need to remove corresponding entry in Makefile if missing)
3. Load Kprobe module
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.
4. See the trace output
To see the trace output use
sudo cat /sys/kernel/tracing/trace_pipe
5. Unload Kprobe module
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