为什么移动网络延迟高?如何减少它们?

sle*_*ske 41 networking mobile-devices latency gprs

我越来越多地看到移动网络技术被用于在原本无法访问的地区访问互联网。

虽然移动网络通常还不能作为主要的互联网连接,但移动技术看起来是紧急后备的一个不错的选择。

带宽不是问题:使用 HDSPA,数 MBit 的速度是可能的,这提供了不错的上行链路。但是,我从个人经验中了解到,移动网络互联网链接(通过 GPRS、UMTS 等)的延迟比常规 DSL 高得多(UMTS 为 200-400 毫秒,GPRS 甚至更长)。这当然使它们不适合许多应用,例如 VoIP 和电话会议。

  • 这个延迟从何而来?
  • 是否有任何可用的技术可以缓解此问题,使 UMTS 可用于低延迟应用程序?

我认为一定有一些内在的技术原因,但它是什么?它与数据如何通过空中传输有关吗?如果是因为无线传输,为什么 WLAN 的延迟要低得多?

Jor*_*rín 48

Ilya Grigorik 的“高性能浏览器网络”一书正是回答了这个问题。有一整章(第 7 章)专门介绍移动网络。这本书指出,高性能的问题几乎总是与延迟有关,我们通常有足够的带宽,但协议会阻碍。无论是 TCP慢启动无线电资源控制器(RRC) 还是次优配置。如果您仅在移动网络中遇到较差的延迟,那就是它们的设计方式。

书中有一张关于典型延迟的表格:

表 7-2。活动移动连接的数据速率和延迟

一代 | 数据速率 | 潜伏
2G | 100–400 Kbit/s | 300–1000 毫秒
3G | 0.5–5 Mbit/s | 100–500 毫秒
4G | 1–50 Mbit/s | < 100 毫秒

尽管与延迟非常相关,但 TCP 特征的三向握手或慢启动并不能真正回答问题,因为它们同样影响有线连接。真正影响移动网络延迟的是 IP 层。如果 IP 下的层有半秒的延迟,到服务器的 TCP 连接将需要大约 1.5 秒 (0.5s*3),正如您看到的数字加起来非常快。如前所述,假设移动设备没有空闲。如果手机空闲,它首先必须“连接”到网络,这需要与塔(简化)协商资源储备,在 LTE 中需要 50-100 毫秒,在 3G 中需要几秒钟,等等在早期的网络中。

图 7-12。LTE 请求流延迟

  1. 控制平面延迟:RRC 协商和状态转换产生的固定的一次性延迟成本:空闲到活动 <100 毫秒,休眠到活动 <50 毫秒。
  2. 用户平面延迟:设备和无线电塔之间传输的每个应用程序数据包的固定成本:<5 毫秒。
  3. 核心网络延迟:将数据包从无线电塔传输到数据包网关的运营商相关成本:实际上,30-100 毫秒。
  4. Internet 路由延迟:运营商的数据包网关和公共 Internet 上的目标地址之间的可变延迟成本。

在实践中,一旦设备处于连接状态,许多已部署的 4G 网络的端到端延迟往往在 30-100 毫秒范围内。

因此,对于一个请求(图 8-2。“简单”HTTP 请求的组成部分):

  1. RRC 协商 50-2500 毫秒
  2. DNS 查找 1 RTT
  3. TCP 握手 1 RTT(预先存在的连接)或 3 RTT(新连接)
  4. TLS 握手 1-2 个 RTT
  5. HTTP 请求 1-n 个 RTT

并使用真实数据:

表 8-1。单个 HTTP 请求的延迟开销

                       | 3G | 4G
控制平面 | 200–2,500 毫秒 | 50–100 毫秒
DNS查找| 200 毫秒 | 100 毫秒
TCP握手| 200 毫秒 | 100 毫秒
TLS 握手 | 200–400 毫秒 | 100–200 毫秒
HTTP 请求 | 200 毫秒 | 100 毫秒
总延迟开销 | 200–3500 毫秒 | 100–600 毫秒

此外,如果您有一个交互式应用程序,您希望在移动网络中正常执行,您可以尝试禁用 Nagle 算法(内核等待数据合并成更大的数据包,而不是发送多个更小的数据包)寻找测试它的方法在/sf/answers/1249030471/ 中


每个人都可以在Velocity Conference 赞助的https://hpbn.co/ 上免费阅读整本书。这是一本非常推荐的书,不仅对开发网站的人有用,而且对通过某些网络向客户端提供字节服务的每个人都很有用。

  • 自我注意:另一篇关于延迟的有趣论文:[HSPA 数据网络中的延迟](http://www.qualcomm.com/media/documents/files/latency-in-hspa-data-networks.pdf),高通。 (2认同)