0.前提
- 拥有一台美西地区(常见洛杉矶、圣何塞)的VPS机器
- 本篇不探讨VPS端的TCP调参,瓦工 / 大妈 / Kirino(咸鱼/白丝/Moe/AKKO) / V.PS / VMISS 的默认TCP参数已足够优秀
- 本篇仅从理论上讨论macOS端的测速,实际情况受到所在省份和运营商的限制
- 据称电信--洛杉矶之间CN2单线程极限就是200M,圣何塞不受影响
1. 美西单线程的理论极限
1.1 物理世界限制--时延
- 洛杉矶 → 上海 约 10,400 km
- 圣何塞 → 上海 约 9,900–10,000 km
- 洛杉矶 → 北京 约 10,000 km
- 洛杉矶 → 广州 约 11,600 km
物理距离:但海底光缆不可能完全走直线,还要绕行登陆站、路由节点、海缆路径。因此实际光纤路径通常要乘以一个系数:约1.2~1.6,所以美西到中国大陆的实际单向光纤路径大概可能是:12,000~17,000km。
光缆速度:真空光速约为300,000 km/s。但光在光纤中的速度约为真空光速的 2/3,也就是约200,000 km/s。假设实际光纤路径为 12,000–17,000 km:需要60~85ms,RTT 是往返,所以约120~170ms。这还只是纯传播延迟,没有算路由器、交换机、光电转换、排队、运营商绕路等。
结论:洛杉矶/圣何塞到中国大陆,RTT 很难低于 120 ms。现实中能看到的比较优秀 RTT 通常是:140~180 ms。如果是普通绕路、拥塞、跨运营商互联,可能是:180~250+ ms。下节以160ms为默认值进行计算。
1.2 设备端限制--TCP窗口
macOS端kern.ipc.maxsockbuf优先级高于net.inet.tcp.autorcvbufmax和net.inet.tcp.autosndbufmax。而kern.ipc.maxsockbuf默认设置为4MB,其最大参数可以设置为16MB。超过16MB会触发macOS的系统保护,导致设置失败。考虑到美西到中国大陆的精品线路延迟为160ms左右(排除上海等沿海地区)。
设备端的默认速度为: 4MB/160ms=4MB/0.16s=25MB/s=200Mbps
设备端的极限速度为: 16MB/160ms=16MB/0.16s=100MB/s=800Mbps
1.3 运营商限制--千兆及以上不受限制
理所当然的,要达到800Mbps,至少需要本地宽带为800M。
2. 调节本地TCP参数
经过我的测试,12MB的窗口为较均衡的设置(兼顾TCP重传和速度),单线程理论速度为600Mbps
sudo sysctl -w kern.ipc.maxsockbuf=12582912
sudo sysctl -w net.inet.tcp.autorcvbufmax=12582912
sudo sysctl -w net.inet.tcp.autosndbufmax=8388608
sudo sysctl -w net.inet.tcp.sendspace=131072
sudo sysctl -w net.inet.tcp.recvspace=131072
sudo sysctl -w net.inet.tcp.win_scale_factor=3
如果是千兆以上的朋友,可以采用16MB窗口,单线程理论速度为800Mbps
sudo sysctl -w kern.ipc.maxsockbuf=16777216
sudo sysctl -w net.inet.tcp.autorcvbufmax=16777216
sudo sysctl -w net.inet.tcp.autosndbufmax=16777216
sudo sysctl -w net.inet.tcp.sendspace=131072
sudo sysctl -w net.inet.tcp.recvspace=131072
sudo sysctl -w net.inet.tcp.win_scale_factor=3
结论
以上设置均为临时设置,重启后会自动恢复。同时较高的TCP窗口意味着更容易触发TCP重传,表现为网页打开较慢。实际使用中8MB/12MB已经完全够用了。至于如何持久化设置,只需询问你的AI即可。
附:白丝4837在12MB窗口下的晚高峰表现


经过我的研究在南方怎么都没用,其他地方不调都能上五百
千兆限制也是200,无法突破了吧
@胖达任 #2
排除以上因素后才有可能超过200
@mxjia #1
要看地区,重庆/四川/湖北一般上500没问题,其他地区需要当地老哥自行测试了
@k2think #3 嗯嗯 之前试过 我这边突破不了了
是不是大妈的机器就不用调了
本地也需要调 大妈vps端不用