Networking

為什麼移動網路有高延遲?如何減少它們?

  • April 30, 2018

我越來越多地看到移動網路技術被用於在其他情況下無法訪問網際網路的地區。

雖然移動網路通常還不能作為主要的網際網路連接,但移動技術似乎是緊急備份的不錯選擇。

頻寬不是問題:使用 HDSPA,幾 MBit 的速度是可能的,這提供了不錯的上行鏈路。但是,我從個人經驗中知道,移動網路網際網路連結(通過 GPRS、UMTS 等)的延遲比正常 DSL 高得多(UMTS 為 200-400 毫秒,GPRS 甚至更高)。這當然使它們不適用於許多應用,例如 VoIP 和電話會議。

  • 這種延遲從何而來?
  • 是否有任何可用的技術可以緩解這個問題,使 UMTS 可用於低延遲應用程序?

我認為一定有一些內在的技術原因,但它是什麼?它與數據如何通過空中傳輸有關嗎?如果是因為無線傳輸,為什麼WLAN的延遲要低得多?

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 ms,休眠到活動<50 ms。
  2. 使用者平面延遲:設備和無線電塔之間傳輸的每個應用程序數據包的固定成本:<5 ms。
  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 算法(核心等待數據合併成更大的數據包而不是發送多個較小的數據包)尋找測試方法在https://stackoverflow.com/a/17843292/869019中。


在Velocity Conference 贊助的https://hpbn.co/上,每個人都可以選擇免費閱讀整本書。這是一本非常推薦的書,不僅適用於開發網站的人,而且對通過某些網路向客戶端提供字節的每個人都有用。

引用自:https://serverfault.com/questions/387627