Archived
Public Access
Add extreme BBR speedtest mode
This commit is contained in:
@@ -41,6 +41,7 @@ bash <(curl -fsSL https://raw.githubusercontent.com/byJoey/Actions-bbr-v3/main/i
|
||||
9. 卸载 BBR 内核
|
||||
10. BBR v3 智能带宽优化
|
||||
11. 清空网络优化配置
|
||||
12. BBR v3 疯批模式(极限测速挑战)
|
||||
```
|
||||
|
||||
常用流程:
|
||||
@@ -51,7 +52,8 @@ bash <(curl -fsSL https://raw.githubusercontent.com/byJoey/Actions-bbr-v3/main/i
|
||||
4. 按需选择 `4` 到 `7` 设置队列算法。
|
||||
5. 亚太线路机器可选择 `8` 写入 TCP 收发窗口与空闲慢启动调优。
|
||||
6. 不确定线路参数时可选择 `10` 自动测速并按带宽档位计算 TCP 缓冲区。
|
||||
7. 需要撤回调优时可选择 `11` 清空脚本写入的网络优化配置。
|
||||
7. 做自有链路极限测速挑战时可选择 `12` 写入激进冲速率参数。
|
||||
8. 需要撤回调优时可选择 `11` 清空脚本写入的网络优化配置。
|
||||
|
||||
## 内核与 BBR 策略
|
||||
|
||||
@@ -223,6 +225,46 @@ net.ipv4.tcp_slow_start_after_idle = 0
|
||||
/etc/sysctl.d/99-joeyblog.conf
|
||||
```
|
||||
|
||||
## BBR v3 疯批模式
|
||||
|
||||
运行脚本后选择:
|
||||
|
||||
```text
|
||||
12. BBR v3 疯批模式(极限测速挑战)
|
||||
```
|
||||
|
||||
该模式只面向自有链路的极限测速挑战,不建议日常使用。目标是尽量压榨单向吞吐和跑满带宽上限,会主动牺牲重传率、延迟抖动、排队延迟、连接稳定性、交互体验和流量公平性。
|
||||
|
||||
脚本会强制启用 `bbr` 拥塞控制和 `fq` 队列算法,并立即尝试替换当前默认路由出口网卡的 root qdisc。
|
||||
|
||||
写入参数:
|
||||
|
||||
```text
|
||||
net.core.default_qdisc=fq
|
||||
net.ipv4.tcp_congestion_control=bbr
|
||||
net.core.rmem_max = 1073741824
|
||||
net.core.wmem_max = 1073741824
|
||||
net.core.optmem_max = 1073741824
|
||||
net.core.netdev_max_backlog = 1000000
|
||||
net.core.somaxconn = 65535
|
||||
net.ipv4.tcp_wmem = 4096 1048576 1073741824
|
||||
net.ipv4.tcp_rmem = 4096 1048576 1073741824
|
||||
net.ipv4.tcp_limit_output_bytes = 268435456
|
||||
net.ipv4.tcp_slow_start_after_idle = 0
|
||||
net.ipv4.tcp_notsent_lowat = 4294967295
|
||||
net.ipv4.tcp_autocorking = 0
|
||||
net.ipv4.tcp_no_metrics_save = 1
|
||||
net.ipv4.tcp_mtu_probing = 1
|
||||
net.ipv4.tcp_fastopen = 3
|
||||
net.ipv4.tcp_window_scaling = 1
|
||||
net.ipv4.tcp_moderate_rcvbuf = 1
|
||||
net.ipv4.tcp_ecn = 0
|
||||
```
|
||||
|
||||
脚本还会把当前默认出口网卡的运行态 `txqueuelen` 拉高到 `100000`,让测速时本机发送队列更激进。该项不是 sysctl 参数,不会写入 `/etc/sysctl.d/99-joeyblog.conf`。
|
||||
|
||||
其中核心参数应用失败会中止;不同内核可能不支持部分附加参数,脚本会尽量写入,失败的附加项不会阻断整个模式。
|
||||
|
||||
## 清空网络优化配置
|
||||
|
||||
运行脚本后选择:
|
||||
@@ -235,10 +277,19 @@ net.ipv4.tcp_slow_start_after_idle = 0
|
||||
|
||||
- `net.core.default_qdisc`
|
||||
- `net.ipv4.tcp_congestion_control`
|
||||
- `net.core.rmem_max` / `net.core.wmem_max`
|
||||
- `net.core.rmem_max` / `net.core.wmem_max` / `net.core.optmem_max`
|
||||
- `net.core.netdev_max_backlog` / `net.core.somaxconn`
|
||||
- `net.ipv4.tcp_rmem` / `net.ipv4.tcp_wmem`
|
||||
- `net.ipv4.tcp_limit_output_bytes`
|
||||
- `net.ipv4.tcp_slow_start_after_idle`
|
||||
- `net.ipv4.tcp_notsent_lowat`
|
||||
- `net.ipv4.tcp_autocorking`
|
||||
- `net.ipv4.tcp_no_metrics_save`
|
||||
- `net.ipv4.tcp_mtu_probing`
|
||||
- `net.ipv4.tcp_fastopen`
|
||||
- `net.ipv4.tcp_window_scaling`
|
||||
- `net.ipv4.tcp_moderate_rcvbuf`
|
||||
- `net.ipv4.tcp_ecn`
|
||||
|
||||
同时删除:
|
||||
|
||||
|
||||
+112
-2
@@ -140,10 +140,21 @@ clean_smart_tuning_conf() {
|
||||
sudo touch "$SYSCTL_CONF"
|
||||
sudo sed -i '/net.core.rmem_max/d' "$SYSCTL_CONF"
|
||||
sudo sed -i '/net.core.wmem_max/d' "$SYSCTL_CONF"
|
||||
sudo sed -i '/net.core.optmem_max/d' "$SYSCTL_CONF"
|
||||
sudo sed -i '/net.core.netdev_max_backlog/d' "$SYSCTL_CONF"
|
||||
sudo sed -i '/net.core.somaxconn/d' "$SYSCTL_CONF"
|
||||
sudo sed -i '/net.ipv4.tcp_wmem/d' "$SYSCTL_CONF"
|
||||
sudo sed -i '/net.ipv4.tcp_rmem/d' "$SYSCTL_CONF"
|
||||
sudo sed -i '/net.ipv4.tcp_limit_output_bytes/d' "$SYSCTL_CONF"
|
||||
sudo sed -i '/net.ipv4.tcp_slow_start_after_idle/d' "$SYSCTL_CONF"
|
||||
sudo sed -i '/net.ipv4.tcp_notsent_lowat/d' "$SYSCTL_CONF"
|
||||
sudo sed -i '/net.ipv4.tcp_autocorking/d' "$SYSCTL_CONF"
|
||||
sudo sed -i '/net.ipv4.tcp_no_metrics_save/d' "$SYSCTL_CONF"
|
||||
sudo sed -i '/net.ipv4.tcp_mtu_probing/d' "$SYSCTL_CONF"
|
||||
sudo sed -i '/net.ipv4.tcp_fastopen/d' "$SYSCTL_CONF"
|
||||
sudo sed -i '/net.ipv4.tcp_window_scaling/d' "$SYSCTL_CONF"
|
||||
sudo sed -i '/net.ipv4.tcp_moderate_rcvbuf/d' "$SYSCTL_CONF"
|
||||
sudo sed -i '/net.ipv4.tcp_ecn/d' "$SYSCTL_CONF"
|
||||
}
|
||||
|
||||
# 函数:清理亚太线路调优配置
|
||||
@@ -579,6 +590,100 @@ apply_smart_bandwidth_tuning() {
|
||||
echo -e "\033[36m tcp_slow_start_after_idle:\033[1;32m $(sysctl -n net.ipv4.tcp_slow_start_after_idle)\033[0m"
|
||||
}
|
||||
|
||||
# 函数:应用极限测速挑战模式
|
||||
apply_extreme_speedtest_tuning() {
|
||||
local extreme_algo="bbr"
|
||||
local extreme_qdisc="fq"
|
||||
local buffer_bytes="1073741824"
|
||||
local output_bytes="268435456"
|
||||
local backlog="1000000"
|
||||
local txqueuelen="100000"
|
||||
local iface
|
||||
|
||||
echo -e "\033[36m正在应用 BBR v3 疯批模式...\033[0m"
|
||||
echo -e "\033[33m该模式只适合自有链路极限测速,不适合日常使用。\033[0m"
|
||||
echo -e "\033[33m它会优先压榨吞吐,可能显著增加重传、抖动、排队延迟和内存占用。\033[0m"
|
||||
|
||||
load_qdisc_module "$extreme_qdisc"
|
||||
|
||||
if sudo sysctl -w net.core.default_qdisc="$extreme_qdisc" > /dev/null \
|
||||
&& sudo sysctl -w net.ipv4.tcp_congestion_control="$extreme_algo" > /dev/null; then
|
||||
echo -e "\033[1;32m✔ 已启用 BBR + FQ\033[0m"
|
||||
else
|
||||
echo -e "\033[31m✘ BBR + FQ 启用失败,请确认当前内核支持 BBR 和 fq。\033[0m"
|
||||
return 1
|
||||
fi
|
||||
|
||||
apply_qdisc_to_active_interfaces "$extreme_qdisc" || true
|
||||
|
||||
if ensure_iproute2_tools; then
|
||||
while IFS= read -r iface; do
|
||||
[[ -z "$iface" ]] && continue
|
||||
if sudo ip link set dev "$iface" txqueuelen "$txqueuelen" 2>/dev/null; then
|
||||
echo -e "\033[1;32m✔ 当前网卡 $iface 的 txqueuelen 已拉高到 $txqueuelen\033[0m"
|
||||
else
|
||||
echo -e "\033[33m⚠ 当前网卡 $iface 设置 txqueuelen 失败,继续应用 TCP 参数\033[0m"
|
||||
fi
|
||||
done < <(get_default_route_interfaces)
|
||||
fi
|
||||
|
||||
if sudo sysctl -w net.core.rmem_max="$buffer_bytes" > /dev/null \
|
||||
&& sudo sysctl -w net.core.wmem_max="$buffer_bytes" > /dev/null \
|
||||
&& sudo sysctl -w net.ipv4.tcp_wmem="4096 1048576 $buffer_bytes" > /dev/null \
|
||||
&& sudo sysctl -w net.ipv4.tcp_rmem="4096 1048576 $buffer_bytes" > /dev/null \
|
||||
&& sudo sysctl -w net.ipv4.tcp_limit_output_bytes="$output_bytes" > /dev/null \
|
||||
&& sudo sysctl -w net.ipv4.tcp_slow_start_after_idle="0" > /dev/null; then
|
||||
echo -e "\033[1;32m✔ 核心极限测速参数已立即生效\033[0m"
|
||||
else
|
||||
echo -e "\033[31m✘ 疯批模式核心参数应用失败,请检查当前内核是否支持这些 sysctl 项。\033[0m"
|
||||
return 1
|
||||
fi
|
||||
|
||||
sudo sysctl -w net.core.netdev_max_backlog="$backlog" > /dev/null 2>&1 || true
|
||||
sudo sysctl -w net.core.optmem_max="$buffer_bytes" > /dev/null 2>&1 || true
|
||||
sudo sysctl -w net.core.somaxconn="65535" > /dev/null 2>&1 || true
|
||||
sudo sysctl -w net.ipv4.tcp_notsent_lowat="4294967295" > /dev/null 2>&1 || true
|
||||
sudo sysctl -w net.ipv4.tcp_autocorking="0" > /dev/null 2>&1 || true
|
||||
sudo sysctl -w net.ipv4.tcp_no_metrics_save="1" > /dev/null 2>&1 || true
|
||||
sudo sysctl -w net.ipv4.tcp_mtu_probing="1" > /dev/null 2>&1 || true
|
||||
sudo sysctl -w net.ipv4.tcp_fastopen="3" > /dev/null 2>&1 || true
|
||||
sudo sysctl -w net.ipv4.tcp_window_scaling="1" > /dev/null 2>&1 || true
|
||||
sudo sysctl -w net.ipv4.tcp_moderate_rcvbuf="1" > /dev/null 2>&1 || true
|
||||
sudo sysctl -w net.ipv4.tcp_ecn="0" > /dev/null 2>&1 || true
|
||||
|
||||
clean_sysctl_conf
|
||||
clean_smart_tuning_conf
|
||||
{
|
||||
echo "net.core.default_qdisc=$extreme_qdisc"
|
||||
echo "net.ipv4.tcp_congestion_control=$extreme_algo"
|
||||
echo "net.core.rmem_max = $buffer_bytes"
|
||||
echo "net.core.wmem_max = $buffer_bytes"
|
||||
echo "net.core.optmem_max = $buffer_bytes"
|
||||
echo "net.core.netdev_max_backlog = $backlog"
|
||||
echo "net.core.somaxconn = 65535"
|
||||
echo "net.ipv4.tcp_wmem = 4096 1048576 $buffer_bytes"
|
||||
echo "net.ipv4.tcp_rmem = 4096 1048576 $buffer_bytes"
|
||||
echo "net.ipv4.tcp_limit_output_bytes = $output_bytes"
|
||||
echo "net.ipv4.tcp_slow_start_after_idle = 0"
|
||||
echo "net.ipv4.tcp_notsent_lowat = 4294967295"
|
||||
echo "net.ipv4.tcp_autocorking = 0"
|
||||
echo "net.ipv4.tcp_no_metrics_save = 1"
|
||||
echo "net.ipv4.tcp_mtu_probing = 1"
|
||||
echo "net.ipv4.tcp_fastopen = 3"
|
||||
echo "net.ipv4.tcp_window_scaling = 1"
|
||||
echo "net.ipv4.tcp_moderate_rcvbuf = 1"
|
||||
echo "net.ipv4.tcp_ecn = 0"
|
||||
} | sudo tee -a "$SYSCTL_CONF" > /dev/null
|
||||
|
||||
echo -e "\033[1;32m✔ 疯批模式配置已永久写入:$SYSCTL_CONF\033[0m"
|
||||
echo -e "\033[36m 队列算法: \033[1;32m$(sysctl -n net.core.default_qdisc)\033[0m"
|
||||
echo -e "\033[36m 拥塞控制: \033[1;32m$(sysctl -n net.ipv4.tcp_congestion_control)\033[0m"
|
||||
echo -e "\033[36m tcp_wmem: \033[1;32m$(sysctl -n net.ipv4.tcp_wmem)\033[0m"
|
||||
echo -e "\033[36m tcp_rmem: \033[1;32m$(sysctl -n net.ipv4.tcp_rmem)\033[0m"
|
||||
echo -e "\033[36m tcp_limit_output_bytes: \033[1;32m$(sysctl -n net.ipv4.tcp_limit_output_bytes)\033[0m"
|
||||
echo -e "\033[36m tcp_slow_start_after_idle:\033[1;32m $(sysctl -n net.ipv4.tcp_slow_start_after_idle)\033[0m"
|
||||
}
|
||||
|
||||
# 函数:清空本脚本写入的网络优化配置
|
||||
clear_network_optimizations() {
|
||||
echo -e "\033[36m正在清空本脚本写入的网络优化配置...\033[0m"
|
||||
@@ -1036,8 +1141,9 @@ echo -e "\033[33m 8. 🌏 亚太机器 TCP 调优\033[0m"
|
||||
echo -e "\033[33m 9. 🗑️ 卸载 BBR 内核\033[0m"
|
||||
echo -e "\033[33m10. 🧠 BBR v3 智能带宽优化\033[0m"
|
||||
echo -e "\033[33m11. 🧹 清空网络优化配置\033[0m"
|
||||
echo -e "\033[33m12. 🧨 BBR v3 疯批模式(极限测速挑战)\033[0m"
|
||||
print_separator
|
||||
echo -n -e "\033[36m请选择一个操作 (1-11) (。・ω・。): \033[0m"
|
||||
echo -n -e "\033[36m请选择一个操作 (1-12) (。・ω・。): \033[0m"
|
||||
read -r ACTION
|
||||
|
||||
case "$ACTION" in
|
||||
@@ -1138,7 +1244,11 @@ case "$ACTION" in
|
||||
echo -e "\033[1;32m(๑•̀ㅂ•́)و✧ 您选择了清空网络优化配置!\033[0m"
|
||||
clear_network_optimizations
|
||||
;;
|
||||
12)
|
||||
echo -e "\033[1;32m(╯°□°)╯ 您选择了 BBR v3 疯批模式!\033[0m"
|
||||
apply_extreme_speedtest_tuning
|
||||
;;
|
||||
*)
|
||||
echo -e "\033[31m( ̄▽ ̄)ゞ 无效的选项,请输入 1-11 之间的数字哦~\033[0m"
|
||||
echo -e "\033[31m( ̄▽ ̄)ゞ 无效的选项,请输入 1-12 之间的数字哦~\033[0m"
|
||||
;;
|
||||
esac
|
||||
|
||||
Reference in New Issue
Block a user