我越来越多地看到移动网络技术被用于在无法访问互联网的地区访问互联网。
虽然移动网络通常还不能作为主要的互联网连接,但移动技术看起来是一个不错的紧急备用选择。
带宽不是问题:使用 HDSPA,几兆比特的速度是可能的,这提供了一个不错的上行链路。但是,根据个人经验,我知道移动网络互联网链接(通过 GPRS、UMTS 等)的延迟比常规 DSL 高得多(UMTS 为 200-400 毫秒,GPRS 甚至更多)。这当然使它们不适用于许多应用程序,例如 VoIP 和电话会议。
- 这种延迟从何而来?
- 是否有任何可用的技术可以缓解此问题,使 UMTS 可用于低延迟应用程序?
我假设一定有一些内在的技术原因,但它是什么?它与数据在空中传输的方式有关吗?如果是因为无线传输,为什么 WLAN 的延迟要低得多?
Ilya Grigorik 的“高性能浏览器网络”一书正是回答了这个问题。有一整章(第 7 章)专门介绍移动网络。书中指出,高性能的问题几乎总是与延迟有关,我们通常有足够的带宽,但协议会妨碍。无论是 TCP慢启动、无线电资源控制器(RRC) 还是次优配置。如果您仅在移动网络中遇到较差的延迟,那是它们的设计方式。
书中有一张关于典型延迟的表格:
表 7-2。活动移动连接的数据速率和延迟
尽管与延迟非常相关,但 TCP 特征三向握手或慢启动并不能真正回答这个问题,因为它们同样影响有线连接。真正影响移动网络延迟的是 IP 下的层。如果 IP 下的层有半秒的延迟,则到服务器的 TCP 连接将花费大约 1.5 秒(0.5s*3),如您所见,数字加起来非常快。如前所述,假设手机没有闲置。如果手机处于空闲状态,它首先必须“连接”到网络,这需要与塔(简化)协商资源预留,这在 LTE 中需要 50-100 毫秒,在 3G 中需要几秒,甚至更多在早期的网络中。
图 7-12。LTE 请求流延迟
实际上,一旦设备处于连接状态,许多部署的 4G 网络的端到端延迟往往在 30-100 毫秒范围内。
因此,您有一个请求(图 8-2。“简单”HTTP 请求的组件):
并使用真实数据:
表 8-1。单个 HTTP 请求的延迟开销
此外,如果你有一个交互式应用程序,你想在移动网络中正常执行,你可以尝试禁用 Nagle 算法(内核等待数据合并成更大的数据包,而不是发送多个更小的数据包)寻找测试它的方法在https://stackoverflow.com/a/17843292/869019中。
每个人都可以在Velocity Conference 赞助的https://hpbn.co/上免费阅读整本书。这是一本非常值得推荐的书,不仅对开发网站的人有用,对所有通过网络向客户端提供字节服务的人也很有用。
我怀疑您在使用“蜂窝宽带”技术时可能遇到的大部分延迟是多种因素的综合问题。
有距离,但正如 syneticon-dj 所提到的,这实际上只占往返时间的一小部分。
这里有一些事情需要考虑……您作为客户(尤其是作为家庭或小型企业客户)遇到的延误可能是人为造成的,至少在某种程度上是这样。有一类用于 M2M 使用、SCADA 等的 3G 和 GSM 通信,有时可以提供更高的可靠性和更低的延迟传输。因此,它们通常非常昂贵。
所以基本上,你要对抗流量整形。ISP/Telco 这样做是为了优先考虑支付更高的客户,或者您连接的小区有点忙,或者他们的整个网络有点迟钝(请尝试在 2012 年 1 月 1 日格林威治标准时间 00:00,因为例子)。
但是有一种方法可以解决所有这些问题,尽管它有点偷偷摸摸。在您的流量通过移动 WWAN 发出之前,您基本上需要一个 TCP 连接代理。该代理实质上会向您的应用程序发送一个欺骗性的 ACK,因为真正的 ACK 可能会被 ISP 的流量整形延迟。
这显然是可疑的,但许多卫星提供商使用这种机制使延迟看起来比实际要低。
有点晚了,但你可能想看看我的性能日历关于这个主题的文章: http: //calendar.perfplanet.com/2012/latency-in-mobile-networks-the-missing-link/
tl;dr - 移动延迟的主要部分是由于回程路由未优化。
由于露天通信的性质,手机调制解调器技术具有高延迟:WLAN 传输距离通常比您提到的其他技术短得多,因此这是延迟较低的原因之一。