为何移动网络延迟较高?如何降低延迟?

为何移动网络延迟较高?如何降低延迟?

我越来越多地看到移动网络技术被用于在无法使用互联网的地区接入互联网。

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

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

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

我认为其中一定有内在的技术原因,但到底是什么原因呢?这与数据在空中的传输方式有关吗?如果是因为无线传输,为什么 WLAN 的延迟要低得多?

答案1

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.5 秒*3),正如您所见,这些数字加起来非常快。如前所述,这是假设手机不空闲。如果手机处于空闲状态,它首先必须“连接”到网络,这需要与塔台协商资源储备(简化),这在 LTE 中需要 50-100 毫秒,在 3G 中需要几秒钟,在早期网络中则需要更多时间。

图 7-12. LTE 请求流延迟

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

实际上,一旦设备处于连接状态,许多已部署的 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 算法(内核等待数据合并成更大的数据包,而不是发送多个较小的数据包),寻找在https://stackoverflow.com/a/17843292/869019


每个人都可以选择免费阅读整本书,网址为https://hpbn.co/由 Velocity Conference 赞助。这是一本非常值得推荐的书,不仅适合网站开发人员,还适合通过网络向客户端提供字节服务的所有人。

答案2

我怀疑您在使用“蜂窝宽带”技术时可能遇到的大部分延迟是多种因素的复合问题。

虽然有距离,但正如 syneticon-dj 提到的,这实际上只是往返时间的一小部分。

需要考虑的是……您作为客户(尤其是家庭或小型企业客户)所经历的延迟可能至少在某种程度上是人为造成的。有一类用于 M2M 用途、SCADA 等的 3G 和 GSM 通信,有时可以提供更高的可靠性和更低的延迟传输。因此,它们通常非常昂贵。

因此,基本上,您面临的是流量整形。要么是 ISP/电信公司这样做是为了优先考虑付费能力更强的客户,要么是您连接的蜂窝有点忙,要么是他们的整个网络有点迟缓(例如,尝试 2012 年 1 月 1 日 00:00 GMT)。

但有一种方法可以解决所有这些问题,不过有点狡猾。在您的流量通过移动 WWAN 发出之前,您基本上需要一个 TCP 连接代理。此代理实际上会向您的应用程序发送一个伪造的 ACK,因为真正的 ACK 可能会因 ISP 的流量整形而延迟。
这显然是可疑的,但许多卫星提供商都使用这种机制来使延迟看起来比实际更低。

答案3

有点晚了,但你可能想看看我的《表演日历》中关于这个主题的文章: http://calendar.perfplanet.com/2012/latency-in-mobile-networks-the-missing-link/

tl;dr - 移动延迟的主要部分是由于回程上的未优化路由造成的。

答案4

由于露天通信的性质,手机调制解调器技术存在高延迟的问题:WLAN 传输距离通常比您提到的其他技术短得多,因此这是延迟较低的原因之一。

相关内容