同一台服务器,同一个域名,有人访问延迟 30ms,有人却要等 300ms。这不是玄学,是网络路由的现实。IP 优选这件事,本质上是在和互联网的物理结构博弈。
这篇文章从底层讲清楚三件事:网络延迟从哪里来、IP 优选在优化什么、以及怎么做才有实际效果。
延迟的来源:不只是距离
很多人以为网络延迟就是信号传播的时间,距离近就快。这个直觉对了一半。光在光纤里的传播速度大约是 20 万公里/秒,北京到美西的直线距离约 9000 公里,理论上单程只需 45ms。但现实中你看到的往往是 150ms 甚至更多。
多出来的那 100ms 去哪了?主要有三个去处:路由跳数(数据包每经过一个路由器就增加几毫秒)、拥塞排队(骨干网出口带宽不足时数据包在队列里等待)、以及BGP 路由策略(运营商之间的商业协议决定流量走哪条路,不一定是最短路径)。
「互联网的路由不是按物理距离最优设计的,而是按商业利益妥协出来的。」
Cloudflare 的 Anycast:IP 优选的基础
Cloudflare 使用的是 Anycast 技术:同一个 IP 地址,同时在全球数百个数据中心宣告。你的请求发出去,网络会自动把它路由到距离你最近、或者路由最优的那个节点。
这就是 IP 优选存在的意义:Cloudflare 有几千万个 IP 地址分布在不同的 ASN(自治系统)和数据中心,对于特定的用户群体,某些 IP 段的路由质量显著优于其他。
怎么找到真正优质的 IP?
理论上,你需要从 Cloudflare 的 IP 段(约 1500 万个地址)里,找出对你的用户群延迟最低、丢包率最低的那批地址。方法是批量测速。
常用工具是 CloudflareSpeedTest,它会并发测试大量 IP 的延迟和下载速度,按质量排序输出。核心参数:-tl 200(延迟上限 200ms)、-sl 5(下载速度下限 5MB/s)、-dn 10(每个 IP 测 10 次取平均)。
但有一个关键认知很多人忽略:优选结果是有时效性的。早上测出来的最优 IP,到了晚上高峰期可能变成最差。BGP 路由会动态变化,运营商的负载也在实时波动。所以真正有效的做法是建立一套自动化的周期测速和 DNS 更新机制,而不是手动测一次然后用半年。
PROXYIP 的作用:解决回源问题
如果你在用 Cloudflare Workers 或 Pages 做代理类服务,还会遇到另一个问题:Workers 本身无法主动发起对第三方服务的 TCP 连接,需要一个中间节点(PROXYIP)来转发流量。
PROXYIP 的选择逻辑和优选 IP 类似,但更在意的是稳定性而非极致速度:节点不能频繁宕机,不能限速,需要对目标服务的访问质量稳定。常见的可用地址如 icook.tw、time.cloudflare.com 等,本质上都是流量稳定的 Cloudflare 节点。
「IP 优选不是一次性的工作,而是一套需要持续运行的系统。」
优化的边界在哪里?
有几个地方是 IP 优选改变不了的:运营商在骨干网出口的总带宽上限、目标服务器本身的性能瓶颈、以及 TLS 握手和 HTTP/2 协议本身的开销。
优选能做的是:在现有网络条件下,找到质量最好的那条路。路本身的宽度,不是它能改变的。理解这个边界,才能对优化效果有合理预期,也才不会在错误的方向上浪费时间。
网络优化这件事,本质是对不确定性的管理。你无法控制运营商的路由决策,但你可以持续测量、持续调整,让大概率走到最优路径上。够了。