广域网链路优化杂论之 TCP 中继

2025年7月19日 0 条评论 197 次阅读 0 人点赞

一、前言

我曾在一款 ToC 网盘产品线呆过,市面上大部分网盘产品在网页端点击文件下载时,都会提示用户下载指定的客户端软件,而我们当时的产品为了提高用户体验,主打浏览器所见即所得,剔除了强制用户下载客户端软件这一步。

但用户的文件足够大时,下载中途总会出现 0 速、网络异常,总而言之就是下载中断。

二、问题产生的原因

2.1. 浏览器自身限制

在网页上下载,若发生网络拥塞、丢包导致的中断异常,大部分浏览器是不会进行二次重试。部分浏览器的重试机制还只是依赖于 TCP 传输协议自身的超时重传。

2.2. 地理位置限制

此外,网盘真实存储机房位于辽宁省本溪市,也就意味用户要与存储机房直连下载时,网络数据包在最极端的情况下将会横跨整个中国。

为什么静态 CDN 加速缓存技术不能完全解决?

因为网盘上的文件大多为用户的私人文件,二次命中概率极低。导致许多 CDN 节点的上下行带宽比 1:1 ,缓存磁盘反复被擦写,影响物理硬件寿命。

因此在考虑运营成本的情况下,全国设有的 CDN 点位极少。

2.3. 不同运营商之间的限制

相较云厂商提供的 BGP 网络不同,云盘存储机房采用的是单运营商专线。(PS:没记错的话是 IDC 机房 电信专线)。

但毕竟云盘是 ToC 产品,用户所属运营商是五花八门的。因此会造成数据包即跨省、又跨运营商的情况。

跨运营商访问是造成不稳定的根源。表现就是移动用户访问电信机房时,晚高峰总是丢包。

用通俗的例子来讲 A市电信机房与A市电信用户互相访问时可以不出城域网。

但A市移动用户和A市电信机房在一定程度上就需要出城域网,极端情况下需要去别的省份中转再进来。

各运营商物理链路互不相通,只允许在指定的互联网交换点进行转发,因此在中转线路上会时不时发生拥塞与丢包。

2.4 同运营商之间的限制

近两年运营商内部的跨省流量结算问题比较重。相同运营商 (例如:中国电信) 采用分省运营的模式,各省独立进行网络建设、计费和营销。当 A 省用户漫游到 B 省使用网络时,占用了 B 省的网络资源,但营收归属于 A 省,这对 B 省不公平。

因此在相同运营商下,也会有恶意丢包和限速的问题。关注我B站的粉丝之前发来一张截图,说的就是这个事情。

三、如何解决?

从上述问题总结而来,根因无非三点。

  1. 大部分浏览器在应用层没有有效的重试机制
  2. 访问物理链路过于遥远,骨干网链路拥塞和省份间因跨省结算的问题人为恶意限速或丢包。
  3. 跨运营商 互联网交换点 内部的拥塞。

那么因此采用距离用户最近的节点进行 TCP 中继是一个不错的策略

如何中继? 如下图所示

需要用户在 同省/同市 地域就近接入相同运营商的 TCP 代理转发节点 ,用户与转发节点在相同的城域网内不存在跨省结算问题,因此限流限速会得以缓解。

TCP 代理转发节点内部自带重试机制、弱网协议优化,就能保证用户在网页终端的下载成功率。

由于用户与动态加速节点之间物理链路很短, TCP 窗口能在最快的时间内进行打开,优化慢启动问题。发生丢包延迟时,由于物理链路短,数据包往返的 RTT 小。窗口能在最快时间进行恢复。

这在 SD-WAN 、 CDN 动态加速领域也属于常见操作。

兰陵美酒郁金香

大道至简 Simplicity is the ultimate form of sophistication.

文章评论(0)

你必须 登录 才能发表评论