Extending MPTCP with BPF is clearly something we want.
It looks like extending the Upstream MPTCP kernel to allow taking some packet scheduling decisions with BPF will be needed and would be needed in priority to #74.
I think the implementation would be similar to what is done in the kernel with BPF TCP CC: the ability to write a congestion control protocol in BPF with BPF_STRUCT_OPS
, see: https://linuxplumbersconf.org/event/7/contributions/687/
Or check these file:
net/ipv4/bpf_tcp_ca.c
tools/testing/selftests/bpf/progs/bpf_cubic.c
From what I saw, the kernel side is a bit tricky. Here, it looks like this solution with TCP CC is designed like that because adding a new TCP CC is done by adding a new TCP CC kernel module. For BPF TCP CC, this module can be controlled via BPF.
On our side with MPTCP, we currently don't have the ability to create other packet schedulers (or path managers).
Issues:
Linked to #350:
Note: this task is currently in progress. The new BPF schedulers in our git repository are only there to validate the WIP development, and NOT recommended for production. If you are interested to participate in the development, you can test them by compiling the export
branch, then loading them with bpftool
, e.g.:
cd tools/testing/selftests/bpf/progs
clang -O2 -target -bpf -g -c mptcp_bpf_burst.c -o mptcp_bpf_burst.bpf.o ## or another one, or "make"
bpftool struct_ops register mptcp_bpf_burst.bpf.o
sysctl net.mptcp.scheduler=bpf_burst
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4