如何彻底解决「网络延迟」这个问题?

作者:韦易笑
链接:https://www.zhihu.com/question/34689035/answer/59675675
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

延迟(RTT)主要是链路层的时钟和令牌(不管是分时还是分频分码,都存在抢占),设备间的 buffer time和设备处理时间,中转次数,等几个要素决定的。

上面说的这些都可以通过钱来解决的问题,比如最简单的换设备,增加信道容量,用更好的传输介质都可以解决,包括架设新的海底光缆。

上面这些是最直接影响速率的东西,但是有个上限就是光速,光速一秒钟绕地球七圈半,数据从中国到美国往返一次,差不多是绕了地球一圈了,和 1000毫秒 / 7.5 = 133毫秒。

所以 ping 美国 rtt 的理论下限是 133ms,不可能突破的。不过大部分美国服务器到中国的 ping 值都差不多是 250ms 左右,远远高于这个值,说明还有很大的提升空间。

再说卡的问题,卡大分是中间设备丢包,为什么中间设备会丢包呢?因为你告诉设备需要发送的包超过设备可以往外发的能力了。丢包又和信道拥挤程度有很大关系,忙的时候,每秒数据传输量接近信道容量限制,丢包就会指数上升。

有少部分情况是由于链路太长,中间节点过多,某些时候中间一个环节出问题(比如某个点遭受到其他方向的流量侵占),由于设备投资不够,缺乏优质的备选路由,所以会瞬断个几秒钟。

不过还有一大半情况的卡是属于胖管道(fat-pipe),即带宽很高,延迟和丢包率同样也很高,比如带宽有余,但中间设备短时间内被其他方向的流量侵占,异或设备太旧 kps很低,就只能丢包,典型的情况是美国到中国,所以还有很多人黑tcp协议栈,每个往外发的包都发两遍,丢失了就用另外一个,然后从试验上看起来提高了美国到中国的数据传输速度,但其实就是在耍流氓。

上面这些丢包造成的卡 ,随着设备更新换代,都会得到改善。然而可悲的是骨干网建设大大落后于时代发展,大部分提速都是再提用户接入端的速度,不愿意投钱,又想卖给更多用户,就只能让更多人挤在一些便宜的窄窄的 “省道” “国道” 上了。你如果自己愿意花钱,租用更好的专线,或者自己从深圳拉一根线到香港 IDC 出国,那么你相当于花钱走了高速公路,能获得比别人更好的服务质量。

想等着电信联通来升级骨干网?对不起,他们还在处于比谁更流氓的时代呢,还没进化到比谁服务更好的阶段,只能想开点了,早两年电信联通还在互相剪光缆呢,这两年他们已经文明了很多了。

说了那么多,其实总结下来只有三个字:钱!钱!钱!