mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-02-28 05:02:59 +00:00
76 lines
2.2 KiB
Bash
76 lines
2.2 KiB
Bash
#!/bin/bash
|
|
# lib/bbr.sh - BBR TCP congestion control management
|
|
|
|
# Include guard
|
|
[[ -n "${__X_UI_BBR_INCLUDED:-}" ]] && return 0
|
|
__X_UI_BBR_INCLUDED=1
|
|
|
|
# Source dependencies
|
|
source "${LIB_DIR}/common.sh"
|
|
|
|
bbr_menu() {
|
|
echo -e "${green}\t1.${plain} Enable BBR"
|
|
echo -e "${green}\t2.${plain} Disable BBR"
|
|
echo -e "${green}\t0.${plain} Back to Main Menu"
|
|
read -rp "Choose an option: " choice
|
|
case "$choice" in
|
|
0)
|
|
show_menu
|
|
;;
|
|
1)
|
|
enable_bbr
|
|
bbr_menu
|
|
;;
|
|
2)
|
|
disable_bbr
|
|
bbr_menu
|
|
;;
|
|
*)
|
|
echo -e "${red}Invalid option. Please select a valid number.${plain}\n"
|
|
bbr_menu
|
|
;;
|
|
esac
|
|
}
|
|
|
|
disable_bbr() {
|
|
|
|
if ! grep -q "net.core.default_qdisc=fq" /etc/sysctl.conf || ! grep -q "net.ipv4.tcp_congestion_control=bbr" /etc/sysctl.conf; then
|
|
echo -e "${yellow}BBR is not currently enabled.${plain}"
|
|
before_show_menu
|
|
fi
|
|
|
|
# Replace BBR with CUBIC configurations
|
|
sed -i 's/net.core.default_qdisc=fq/net.core.default_qdisc=pfifo_fast/' /etc/sysctl.conf
|
|
sed -i 's/net.ipv4.tcp_congestion_control=bbr/net.ipv4.tcp_congestion_control=cubic/' /etc/sysctl.conf
|
|
|
|
# Apply changes
|
|
sysctl -p
|
|
|
|
# Verify that BBR is replaced with CUBIC
|
|
if [[ $(sysctl net.ipv4.tcp_congestion_control | awk '{print $3}') == "cubic" ]]; then
|
|
echo -e "${green}BBR has been replaced with CUBIC successfully.${plain}"
|
|
else
|
|
echo -e "${red}Failed to replace BBR with CUBIC. Please check your system configuration.${plain}"
|
|
fi
|
|
}
|
|
|
|
enable_bbr() {
|
|
if grep -q "net.core.default_qdisc=fq" /etc/sysctl.conf && grep -q "net.ipv4.tcp_congestion_control=bbr" /etc/sysctl.conf; then
|
|
echo -e "${green}BBR is already enabled!${plain}"
|
|
before_show_menu
|
|
fi
|
|
|
|
# Enable BBR
|
|
echo "net.core.default_qdisc=fq" | tee -a /etc/sysctl.conf
|
|
echo "net.ipv4.tcp_congestion_control=bbr" | tee -a /etc/sysctl.conf
|
|
|
|
# Apply changes
|
|
sysctl -p
|
|
|
|
# Verify that BBR is enabled
|
|
if [[ $(sysctl net.ipv4.tcp_congestion_control | awk '{print $3}') == "bbr" ]]; then
|
|
echo -e "${green}BBR has been enabled successfully.${plain}"
|
|
else
|
|
echo -e "${red}Failed to enable BBR. Please check your system configuration.${plain}"
|
|
fi
|
|
}
|