Skip to content

Commit 257334e

Browse files
author
Valentin Obst
committed
net/tcp: add Rust implementation of CUBIC
CUBIC is the default CCA since 2.6.18. Missing features compared to the C implementation: - configuration via module parameters, - exporting callbacks to BPF programs as kfuncs. Changes compared to the C implementation: - uses only SI units for time, i.e., no jiffies and `BICTCP_HZ`, Signed-off-by: Valentin Obst <kernel@valentinobst.de>
1 parent 3f552bd commit 257334e

File tree

3 files changed

+529
-0
lines changed

3 files changed

+529
-0
lines changed

net/ipv4/Kconfig

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -527,6 +527,15 @@ config TCP_CONG_CUBIC
527527
among other techniques.
528528
See http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/cubic-paper.pdf
529529

530+
config TCP_CONG_CUBIC_RUST
531+
tristate "CUBIC TCP (Rust rewrite)"
532+
depends on RUST_TCP_ABSTRACTIONS
533+
help
534+
Rust rewrite of the original implementation of TCP CUBIC congestion
535+
control.
536+
537+
If unsure, say N.
538+
530539
config TCP_CONG_WESTWOOD
531540
tristate "TCP Westwood+"
532541
default m
@@ -720,6 +729,9 @@ choice
720729
config DEFAULT_CUBIC
721730
bool "Cubic" if TCP_CONG_CUBIC=y
722731

732+
config DEFAULT_CUBIC_RUST
733+
bool "Cubic (Rust)" if TCP_CONG_CUBIC_RUST=y
734+
723735
config DEFAULT_HTCP
724736
bool "Htcp" if TCP_CONG_HTCP=y
725737

@@ -760,6 +772,7 @@ config DEFAULT_TCP_CONG
760772
default "bic" if DEFAULT_BIC
761773
default "bic_rust" if DEFAULT_BIC_RUST
762774
default "cubic" if DEFAULT_CUBIC
775+
default "cubic_rust" if DEFAULT_CUBIC_RUST
763776
default "htcp" if DEFAULT_HTCP
764777
default "hybla" if DEFAULT_HYBLA
765778
default "vegas" if DEFAULT_VEGAS

net/ipv4/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ obj-$(CONFIG_TCP_CONG_BIC) += tcp_bic.o
4949
obj-$(CONFIG_TCP_CONG_BIC_RUST) += tcp_bic_rust.o
5050
obj-$(CONFIG_TCP_CONG_CDG) += tcp_cdg.o
5151
obj-$(CONFIG_TCP_CONG_CUBIC) += tcp_cubic.o
52+
obj-$(CONFIG_TCP_CONG_CUBIC_RUST) += tcp_cubic_rust.o
5253
obj-$(CONFIG_TCP_CONG_DCTCP) += tcp_dctcp.o
5354
obj-$(CONFIG_TCP_CONG_WESTWOOD) += tcp_westwood.o
5455
obj-$(CONFIG_TCP_CONG_HSTCP) += tcp_highspeed.o

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy