Skip to content

Add BBR3#4

Open
eiffel-fl wants to merge 6208 commits intomicrosoft:azlinux-6.6.yfrom
eiffel-fl:francis/mariner-6.6-bbr3
Open

Add BBR3#4
eiffel-fl wants to merge 6208 commits intomicrosoft:azlinux-6.6.yfrom
eiffel-fl:francis/mariner-6.6-bbr3

Conversation

@eiffel-fl
Copy link
Copy Markdown

Hi,

This contribution ports Google BBR3 to Azure Linux kernel 6.6.35.1:

# Get a Mariner 3 VM and ssh to it.
francis-mariner3-bbr3@francis-mariner3-bbr3vm [ ~ ]$ cat /etc/os-release
NAME="Microsoft Azure Linux"
VERSION="3.0.20240727"
ID=azurelinux
VERSION_ID="3.0"
PRETTY_NAME="Microsoft Azure Linux 3.0"
ANSI_COLOR="1;34"
HOME_URL="https://aka.ms/azurelinux"
BUG_REPORT_URL="https://aka.ms/azurelinux"
SUPPORT_URL="https://aka.ms/azurelinux"
francis-mariner3-bbr3@francis-mariner3-bbr3vm [ ~ ]$ uname -a
Linux francis-mariner3-bbr3vm 6.6.35.1-5.azl3 #3 SMP PREEMPT_DYNAMIC Tue Aug 27 09:36:31 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
git clone https://github.com/eiffel-fl/CBL-Mariner-Linux-Kernel.git
...
francis-mariner3-bbr3@francis-mariner3-bbr3vm [ ~ ]$ cd CBL-Mariner-Linux-Kernel/
francis-mariner3-bbr3@francis-mariner3-bbr3vm [ ~ ]$ git checkout francis/mariner-6.6-bbr3
francis-mariner3-bbr3@francis-mariner3-bbr3vm [ ~/CBL-Mariner-Linux-Kernel ]$ ./gtests/net/tcp/bbr/nsperf/configure.sh
...
francis-mariner3-bbr3@francis-mariner3-bbr3vm [ ~/CBL-Mariner-Linux-Kernel ]$ cp Microsoft/config .config
francis-mariner3-bbr3@francis-mariner3-bbr3vm [ ~/CBL-Mariner-Linux-Kernel ]$ make -j$(nproc)
...
francis-mariner3-bbr3@francis-mariner3-bbr3vm [ ~/CBL-Mariner-Linux-Kernel ]$ kexec -l arch/x86_64/boot/bzImage --reuse-cmdline
francis-mariner3-bbr3@francis-mariner3-bbr3vm [ ~/CBL-Mariner-Linux-Kernel ]$ kexec -e
# This kexec the built kernel and will close the ssh connection.
# Wait a bit and connect again.
francis-mariner3-bbr3@francis-mariner3-bbr3vm [ ~/CBL-Mariner-Linux-Kernel ]$ uname -a
Linux francis-mariner3-bbr3vm 6.6.35.1-5.azl3.bbr3+ #3 SMP PREEMPT_DYNAMIC Tue Aug 27 09:36:31 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
francis-mariner3-bbr3@francis-mariner3-bbr3vm [ ~/CBL-Mariner-Linux-Kernel ]$ sysctl net.ipv4.tcp_available_congestion_control
net.ipv4.tcp_available_congestion_control = reno bbr3 bbr1 cubic dctcp
# You now run the BBR3 kernel, BBR3 and BBR1 are built-in.
# You can now run the tests.
francis-mariner3-bbr3@francis-mariner3-bbr3vm [ ~/CBL-Mariner-Linux-Kernel ]$ tmux bash
francis-mariner3-bbr3@francis-mariner3-bbr3vm [ ~/CBL-Mariner-Linux-Kernel ]$ ./gtests/net/tcp/bbr/nsperf/run_tests.sh
^B d
# Come back later to check the results

Actually, I cannot draw correctly the figures, because the output of the ss, ip and netperf do not match what is expected.
But the tests are running and the kernel does not oops or panic while running them.

Sorry for the 5000 commits, only the 30 lasts are of interested, but I cannot open a PR against a tag.

Best regards.

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.