Hochwasser/contrib/setup_bbr.sh

33 lines
1.1 KiB
Bash
Executable File

#!/bin/sh
# sets up BBR congestion control (https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/commit/?id=0f8782ea14974ce992618b55f0c041ef43ed0b78)
# for the given interface
DEV=${$1:=eth0}
MODE=${$2:="temporary"}
echo pre-run state:
echo `sysctl net.ipv4.tcp_congestion_control`
echo qdisc on $DEV: `tc qdisc show dev $DEV`
# set required "fair queueing" queuing discipline (man tc-fq)
echo "qdisc on $DEV was: `tc qdisc show dev $DEV`"
tc qdisc replace dev $DEV root fq
echo "qdisc on $DEV now is: `tc qdisc show dev $DEV`"
# (permanently) configure BBR
if [[ mode == "temporary" ]]; then
echo -e 'net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr' | sysctl -p-
elif [[ mode == "permanent"]]; then
echo -e 'net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr' >> /etc/sysctl.d/20-net-bbr.conf
sysctl -p /etc/sysctl.d/20-net-bbr.conf
algo=`sysctl net.ipv4.tcp_congestion_control`
if [[ "$algo" != 'net.ipv4.tcp_congestion_control = bbr' ]]; then
echo "couldn't apply changes at runtime, you should reboot."
fi
else
echo "unknown mode, congestion control algo unchanged"
fi