AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 387627
Accepted
sleske
sleske
Asked: 2012-05-10 12:23:44 +0800 CST2012-05-10 12:23:44 +0800 CST 2012-05-10 12:23:44 +0800 CST

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

  • 772

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

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

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

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

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

networking mobile-devices latency gprs
  • 4 4 个回答
  • 49387 Views

4 个回答

  • Voted
  1. Best Answer
    Jorge Nerín
    2014-02-07T15:31:48+08:002014-02-07T15:31:48+08:00

    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 兆比特/秒 | < 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. 互联网路由延迟:运营商的分组网关与公共互联网上的目标地址之间的可变延迟成本。

    实际上,一旦设备处于连接状态,许多部署的 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中。


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

    • 49
  2. Tom O'Connor
    2012-05-15T02:52:27+08:002012-05-15T02:52:27+08:00

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

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

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

    所以基本上,你要对抗流量整形。ISP/Telco 这样做是为了优先考虑支付更高的客户,或者您连接的小区有点忙,或者他们的整个网络有点迟钝(请尝试在 2012 年 1 月 1 日格林威治标准时间 00:00,因为例子)。

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

    • 4
  3. r0u1i
    2012-12-18T07:04:04+08:002012-12-18T07:04:04+08:00

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

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

    • 2
  4. Isaac Butt
    2012-05-10T12:31:22+08:002012-05-10T12:31:22+08:00

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

    • 1

相关问题

  • 谁能指出我的 802.11n 范围扩展器?

  • 我怎样才能得到一个网站的IP地址?

  • 在一个 LAN 中使用两台 DHCP 服务器

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve