logo NodeSeekbeta

记录一次 BBR 调优:9929到日本软银 启动爆重传/偶发断流

环境:北京联通 9929 1G 宽带 ↔ 日本BestVM软银 1G 口 VPS
系统:Alpine
测试:Windows iperf3 对拉(多次重复验证)


现象对比

原先参数(高速度)

这里贴一下原先使用参数:

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=67108864
net.core.wmem_max=67108864
net.ipv4.tcp_rmem=4096 87380 67108864
net.ipv4.tcp_wmem=4096 16384 67108864
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
net.ipv4.tcp_congestion_control=bbr
net.ipv6.conf.all.forwarding=1
net.ipv6.conf.default.forwarding=1
EOF
sysctl -e -p /etc/sysctl.conf

特点:整体能跑到接近千兆,但启动阶段爆重传,且偶发“断流/卡死”

  • 速度:后半程稳定接近 940~960 Mbps
  • 问题:前 1 秒 Retr 爆炸(上万级),有时触发 RTO 退避导致连续 0bits/sec,体验就是“有时候拉得动,有时候直接断”

image


现在参数(质量优先)

目标:速度可以慢一点,但要 稳定不断流 + 重传尽可能低

结果(多次测试一致):

  • Retr:0
  • 不再出现连续 0bits/sec 的断流/卡死
  • 吞吐:稳定在 ~730–800 Mbps(牺牲峰值换稳定)

image

核心思路:

  • 收敛发送缓冲上限(避免把启动突发放大)
  • 适度 TSQ(tcp_limit_output_bytes)
  • 开启 tcp_mtu_probing
  • 不引入太“激进”的参数

最终参数

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=1
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.ipv4.tcp_limit_output_bytes=524288
net.ipv4.tcp_slow_start_after_idle=0
net.core.rmem_max=8388608
net.core.wmem_max=8388608
net.core.rmem_default=262144
net.core.wmem_default=262144
net.ipv4.tcp_rmem=4096 262144 8388608
net.ipv4.tcp_wmem=4096 262144 8388608
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
net.ipv4.tcp_congestion_control=bbr
net.ipv6.conf.all.forwarding=1
net.ipv6.conf.default.forwarding=1
EOF
sysctl -e -p /etc/sysctl.conf
12
  • 简化 给最大缓冲观察0重传的速度 比如850M重传200 800 0 限制tc在800 重新观察 直到稳定0重传后锁定你的参数 晚高峰调

  • 技术贴帮顶 ac08

  • 不想大力飞砖的话只求稳定可以搞个 bpftune 变成自动挡 xhj003

  • @qq82348074 #3 明白了大佬,感谢讲解。我没采用tc限制有一点是,这台机主要来跑hy2协议的,所以没有去加tc限制,纯在原有参数上进行了改动

  • @lhordez #4 建议直接用tc放进rc.local文件中 添加默认开机启动 直接用参数的话 debian系统少数重启后有bug不起作用 我测试是这样 不知道适合你不

  • 技术贴帮顶

  • @qq82348074 #8 都还挺不错的。best好的一点是可以跑hy2协议,之前测试ak的貌似有阻断,跑一会儿就断了

  • @lhordez #9 哦哦 我也正研究拉软银方案呢

12

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有72745位seeker

🎉欢迎新用户🎉