mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-02-28 21:23:01 +00:00
77 lines
2.2 KiB
Bash
77 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
|
||
|
|
}
|