TCP Prague controlled RTT dependence
Implementing the Reduced RTT dependence part of the L4S Prague Requirement
Implementation
The code itself is available in the L4S Linux kernel tree, as part of the TCP Prague congestion control module, and is included in all tags following The Mar. 1 2020 testing release.
Note that you can grab pre-build kernel images in the "Actions" tab on Github, as build artifacts.
Video demonstration
Usage
You can control TCP Prague's RTT dependence using the following
module parameters, either at
load time
e.g., `
sudo modprobe tcp_prague prague_rtt_scaling=1
`
, or through the
sysfs interface
e.g., `
echo 1 | sudo tee /sys/module/tcp_prague/parameters/prague_rtt_scaling
Note that those settings will only affect
connections initialized after the change,
thus not
existing ones.
:
Parameter
Default
prague_rtt_scaling <mode>
0
Select the desired mode of RTT dependence.:
0
disables any form of RTT independence.
1
causes Prague to behave as if it was experiencing
a RTT of at least prague_rtt_target, i.e., is
RTT independent up to the target RTT.
2
extends the previous mode (1) by
providing a minimal bound on the frequency of CE marks
in steady state (currently at least 1 every 8 RTTs).
3
causes Prague to behave as if it was experiencing
a RTT of true_e2e_rtt + prague_rtt_target.
prague_rtt_target <target_us>
10000
Define the target RTT (in microseconds) that TCP Prague should aim for. Its exact meaning depends on the underlying algorithm.
prague_rtt_transition <round>
100
Delay the activation of the RTT independence algorithms by <round> RTTs after exiting slow-start.
TSVWG interim meeting presentation
The high-level approach has been described during the interim meeting that took place on Feb. 20 2020. You can also watch the recording on Youtube.
Testing
You can find the scripts used to setup the experiments and plots reported in the above slides on Github.