复制如下代码。一键搞定。上部分开启fq_pie. 下部分为调优代码。可以不用。
开启BBR3
cat > /etc/sysctl.conf << EOF
net.core.default_qdisc=fq_pie
net.ipv4.tcp_congestion_control=bbr
EOF
sysctl -p
cat > /etc/sysctl.conf << EOF
fs.file-max = 6815744
net.ipv4.tcp_no_metrics_save=1
net.ipv4.tcp_ecn=0
net.ipv4.tcp_frto=0
net.ipv4.tcp_mtu_probing=0
net.ipv4.tcp_rfc1337=0
net.ipv4.tcp_sack=1
net.ipv4.tcp_fack=1
net.ipv4.tcp_window_scaling=1
net.ipv4.tcp_adv_win_scale=1
net.ipv4.tcp_moderate_rcvbuf=1
net.core.rmem_max=33554432
net.core.wmem_max=33554432
net.ipv4.tcp_rmem=4096 87380 33554432
net.ipv4.tcp_wmem=4096 16384 33554432
net.ipv4.udp_rmem_min=8192
net.ipv4.udp_wmem_min=8192
net.ipv4.ip_forward=1
net.ipv4.conf.all.route_localnet=1
net.ipv4.conf.all.forwarding=1
net.ipv4.conf.default.forwarding=1
net.core.default_qdisc=fq_pie
net.ipv4.tcp_congestion_control=bbr
net.ipv6.conf.all.forwarding=1
net.ipv6.conf.default.forwarding=1
EOF
sysctl -p && sysctl --system
sysctl -p 是分割。第一个含 sysctl -p 以上部分是 上部分。
第一次听说这个,特意查了一下
——
如果你是跑 VPS 科学(高吞吐场景): 👉 首选 net.core.default_qdisc=fq。 这是 BBR / BBR3 的“原生搭档”,性能最好,开销最小,能最完美地发挥 BBR 的带宽探测能力。
如果你是做家用路由器/软路由(多设备共享、复杂的混合流量): 👉 可以考虑 fq_pie(或 cake),但在纯 BBR 环境下通常没有必要。
为什么 BBR3 更推荐 fq?
BBR3 的改进主要在于更好地处理丢包和更公平的带宽竞争,但它依然依赖精准的 Pacing 来探测带宽。
精准度: fq 能提供最精准的 Pacing,这直接决定了 BBR3 能否准确估算带宽。
纯粹性: BBR3 已经自带了非常先进的拥塞控制逻辑,不需要 fq_pie 中的 PIE 算法再来干预丢包策略。让 BBR3 决定怎么发,让 fq 决定怎么排队,分工最明确。
@error502 #1 如果你是做家用路由器/软路由(多设备共享、复杂的混合流量);是给需要 PIE 的人准备的.毕竟我们的流量不混杂 就没了。
学习
fq_pie(Fair Queue + PIE)
核心目标:
公平 + 主动控制延迟
抑制 bufferbloat
在“有明确瓶颈”的地方控队列
机制:
fq + PIE AQM
PIE 会:
估计排队延迟
提前随机丢包
主动压低队列
👉 fq_pie 会主动“教 TCP 做人”
所以,落地机上不推荐,直接fq+bbr3绝配