當前位置: 華文星空 > 汽車

QUIC 協定:特性、套用場景及其對物聯網/車聯網的影響

2023-05-27汽車

什麽是 QUIC 協定

QUIC(Quick UDP Internet Connections)是由谷歌公司開發的一種基於使用者數據報協定(UDP)的傳輸層協定,旨在提高網絡連線的速度和可靠性,以取代當前互聯網基礎設施中廣泛使用的傳輸控制協定(TCP)。

QUIC 透過加密和多路復用技術來提供更高的安全性和更快的數據傳輸。它支持在單個連線上並列發送多個數據流,從而降低延遲並提高吞吐量。QUIC 還具有擁塞控制和流量控制等機制,以應對網絡擁塞並保證數據傳輸的穩定性。

國際互聯網工程任務組(IETF)已完成對 QUIC 的標準化,並且主流的 Web 瀏覽器和伺服器正在逐步采用它。與 TCP 相比,QUIC 在高延遲和不穩定的網絡環境中,如流動網絡,可以顯著提升網頁載入速度並減少連線中斷,使得網絡體驗更加流暢。

QUIC 協定的基本特性

相互獨立的邏輯流

相互獨立的邏輯流是 QUIC 的核心特性之一。它允許在單個連線上並列傳輸多個數據流,並且每個流可以獨立地處理。相比之下,TCP 只支持單數據流,需要按照發送順序接收和確認每個報文。透過多路復用,應用程式可以更高效地發送和接收數據,並更好地利用網絡頻寬等資源。

一致安全性

QUIC 的另一個重要特性是它提供了端到端的安全保護。所有透過 QUIC 發送的數據都是預設加密的,並且不支持明文通訊。這有助於防止數據被竊聽和其他形式的攻擊。QUIC 使用傳輸層安全協定(TLS)來建立和維護安全連線和端到端加密。

低延遲

QUIC 協定的設計目的是減少建立連線所需的延遲,以便在端點之間快速地發送和接收數據。對於流動網絡這種高延遲的網絡環境來說,這一點尤為重要。為了實作這個目標,QUIC 最小化了建立連線所需的往返次數,並且采用更小的報文來發送數據。傳統的互聯網協定通常存在延遲問題,例如美歐之間的往返時間有時可達 300 或 400 毫秒。

可靠性

QUIC 基於 UDP 但可提供可靠傳輸能力。類似於 TCP,它是一種面向連線的傳輸協定。QUIC 協定在數據傳輸過程中具有報文遺失恢復和重傳功能,這可以確保數據的完整性和準確性。此外,QUIC 可以保證封包按照發送順序到達,避免因封包亂序導致的數據錯誤。

消除 HOL 阻塞

QUIC 透過支持多個數據流來解決 HOL 阻塞問題。這使得來自不同套用的訊息可以獨立地傳遞,避免了因為等待其他套用而可能產生的延遲。

QUIC 協定常見的套用場景

隨著 HTTP/3 和 QUIC 越來越流行並被廣泛采用,湧現出多種多樣的套用場景。這些套用場景覆蓋了直播、影片、點播、下載、Web 加速等領域,其中最具潛力的套用場景有:

  1. 即時 Web 和流動應用 :這些套用(如整合了語音和影片通訊功能的 Web 和流動應用)需要低延遲和可靠的數據傳輸。QUIC 利用相互獨立的數據流和擁塞控制機制,使其成為這些套用的理想選擇,因為它可以快速高效地發送和接收數據。在 QUIC 的多路復用模式下,同一連線內不同數據流之間的數據傳輸互不幹擾。
  2. 與物聯網器材通訊 :物聯網器材通常使用 TCP 和 MQTT 等協定進行通訊。然而,這些協定在受限的網絡環境中可能存在高延遲和丟包等問題。相比之下,專為高延遲和丟包的網絡環境而設計的 QUIC 可以提供更可靠和高效的替代方案。QUIC 可以實作接近零的往返時間(RTT),這對於提高網絡效能和使用者體驗至關重要。
  3. 車聯網和網聯汽車 :QUIC 可以極大地促進車聯網生態系的發展。這些系統需要即時的數據交換來提供諸如交通管理、車輛跟蹤和安全功能等服務。QUIC 具有低延遲、多路復用的特性,以及對封包遺失和重排序的處理能力,可以確保車輛和基礎設施元件之間可靠而高效的通訊。此外,QUIC 使用 TLS 加密保護敏感車輛數據,提供了更強的安全保障。
  4. 雲端運算 :雲端運算是指透過互聯網提供計算資源的服務。使用 QUIC 協定可以帶來多方面的好處,例如低延遲和端到端加密,這可以提升使用者體驗、增強系統安全。
  5. 支付和電子商務套用 :這些套用需要安全可靠的數據傳輸。QUIC 透過 TLS 加密和可靠的 HTTP3 數據流,使其成為這些套用的理想選擇,有助於保證數據安全完整地傳輸。從終端使用者的角度來看,QUIC 協定透過保證更快、更順暢的交易,最佳化了使用者體驗。

MQTT 與 MQTT over QUIC

MQTT 是一種適用於低頻寬、高延遲或不穩定網絡環境的輕量級訊息協定。它執行在套用層,主要用於機器對機器(M2M)通訊和物聯網場景。MQTT 采用釋出/訂閱模型,器材將訊息發送到 Broker(即釋出),其他器材根據主題接收這些訊息(即訂閱)。

對於 Web 套用而言,QUIC 專註於提高其效能和安全性,而 MQTT 則專為資源受限的網絡環境提供輕量級和高效的訊息傳遞解決方案。基於 QUIC 的 MQTT 可以顯著提高效能並降低延遲,同時無需額外的 TLS 開銷。由於大多數 QUIC 棧實作是在使用者空間完成的,因此可以根據套用層的要求,自訂 QUIC 的數據傳輸,以適應不同的網絡環境。

MQTT over QUIC 與 MQTT over TCP/TLS 對比

MQTT over TCP/TLS 指的是使用 TCP 作為傳輸層的 MQTT 協定。TCP 是一種可靠的、面向連線的協定,可確保封包在器材之間的正確傳遞。 TLS 是一種加密協定,透過加密兩個端點之間傳輸的數據,為網絡提供安全通訊。通常情況下,TLS 作為 TCP 的上層協定使用,它使用 TCP 在兩個端點之間建立和維護連線,並加密在該連線上傳輸的數據。

MQTT over QUIC

MQTT over QUIC 相比 MQTT over TCP/TLS 具有明顯的優勢:

連線建立:

  • MQTT over TCP/TLS:MQTT over TCP/TLS 遵循 TLS1.2 規範,需要在 TCP 層和 TLS 層各進行一次握手。這意味著在套用層開始交換數據之前,需要進行兩到三次往返通訊。
  • MQTT over QUIC:MQTT over QUIC 遵循 TLS1.3 規範,可以利用零或一次往返(0-RTT 或 1-RTT)握手快速建立連線,降低連線建立時的延遲。
  • 延遲和效能:

  • MQTT over TCP/TLS:提供可靠的數據傳輸,但 TCP 的 HOL 阻塞問題和擁塞控制機制可能導致延遲增加和效能降低,尤其是在不可靠的網絡環境下。
  • MQTT over QUIC:將 TCP 的可靠性與 UDP 的低延遲特性相結合。QUIC 的多路復用特性有助於最小化 HOL 阻塞問題,從而在有丟包或高延遲的網絡環境下提高效能。
  • 安全性:

  • MQTT over TCP/TLS:為了保證 MQTT 通訊的安全,通常將其與 TLS 結合使用,TLS 提供了加密和認證功能。但是,這需要在連線建立和數據傳輸過程中增加額外的開銷。
  • MQTT over QUIC:QUIC 使用 TLS1.3 實作了內建加密,提供了安全的通訊,無需額外的設定或開銷。
  • 客戶端的連線遷移:

  • MQTT over TCP/TLS:如果 MQTT 客戶端或伺服器更換了 IP 地址或網絡,那麽現有的 TCP 連線就必須斷開並重新建立,這會增加套用對例外處理的難度,容易出現各種因處理異常導致的 Bug。
  • MQTT over QUIC:支持連線平滑遷移,允許客戶端或伺服器在不影響正在進行的通訊的情況下更換 IP 地址、埠或網絡。
  • 套用和支持:

  • MQTT over TCP/TLS:已經得到了廣泛的套用和支持,很多平台和程式語言都有 MQTT broker、客戶端和庫的實作。
  • MQTT over QUIC:到目前為止,由於 QUIC 仍然是一種新興的協定,因此 MQTT over QUIC 還沒有得到廣泛的套用和支持。
  • MQTT over QUIC 在車聯網中的套用場景

    在車聯網場景下,MQTT over QUIC 可以帶來很多優勢,因為低延遲、可靠和安全的通訊對各種套用來說都非常重要。由於 QUIC 結合了 TCP 和 UDP 的優點,並且提供了內建的加密,因此它可以顯著提高基於 MQTT 的車聯網套用的效能和安全性。

    在車聯網中使用 MQTT over QUIC 的場景包括:

  • 車對基礎設施(V2I)通訊 :QUIC 的低延遲和可靠的數據傳輸可以提高車輛與基礎設施元件(如交通訊號燈、收費系統或智能停車系統等)之間的通訊效率。
  • 車對車(V2V)通訊 :快速和安全的數據交換對於諸如碰撞避免、協同自適應巡航控制和編隊等套用非常關鍵。MQTT over QUIC 可以為這些套用提供必要的速度和安全保障。
  • 車聯網(V2X)通訊 :V2X 通訊將車輛、基礎設施和其他道路使用者組合起來,旨在提高道路安全和交通效率。MQTT over QUIC 可以提供可靠的通訊,並減少延遲,確保關鍵資訊的及時交換。
  • 車載資訊娛樂和遠端診斷系統 :MQTT over QUIC 可以提高資訊娛樂系統的效能,實作更快的媒體流、導航更新和即時交通資訊,同時確保通訊安全。
  • 車隊管理和跟蹤 :即時跟蹤和管理車隊需要車輛和管理系統之間的高效通訊。MQTT over QUIC 可以提供可靠和安全的通訊,實作車輛位置、診斷和駕駛行為的即時更新。
  • OTA 更新 :安全可靠的 OTA 更新對更新車輛固件和軟件至關重要。MQTT over QUIC 可以提供必要的安全性和可靠性,無需中斷車輛操作就可以傳送這些更新。
  • 應急響應 :在緊急情況下,可靠和快速的通訊非常重要。MQTT over QUIC 可以確保及時安全地在應急車輛、響應團隊和控制中心之間交換資訊。
  • EMQX:首個實作 MQTT over QUIC 的 MQTT Broker

    EMQX 是全球領先的開源 MQTT Broker,擁有高效能的即時訊息處理引擎,為海量的物聯網器材事件流處理提供動力。EMQX 從 5.0 版本開始支持 MQTT over QUIC,成為首個支持 MQTT over QUIC 的 MQTT Broker。不僅為現代復雜網絡的 MQTT 訊息傳輸提供了一種更高效安全的新方式,同時可以在某些場景下顯著提高 MQTT 效能。

    EMQX 支持將傳輸層替換為 QUIC 流,客戶端可發起連線並建立雙向流,從而實作更加高效可靠的通訊。EMQX 支持兩種操作模式:

  • 單流模式 是一種基本模式,它將 MQTT 報文封裝在一個雙向的 QUIC 流中。該模式提供了快速握手、有序數據傳輸、連線恢復、0-RTT、客戶端地址遷移以及增強的丟包檢測和恢復等功能。這種模式使得客戶端和 Broker 之間的通訊更加快速和高效,同時保持有序,還能夠快速恢復連線,並支持在不影響客戶端通訊的情況下遷移其本地地址。
  • 多流模式 利用了 QUIC 的多路復用特性,允許 MQTT 報文在多個流中傳輸。這使得單個 MQTT 連線可以並列傳輸多個主題的數據且互不幹擾。該模式還提供了多項最佳化,例如解耦連線控制和 MQTT 數據交換、避免 HOL 阻塞、分離上行和下行數據、優先處理不同類別的數據、提高並行性、增強魯棒性、允許對數據流進行流量控制以及降低訂閱延遲等。
  • 單流模式與多流模式

    使用 NanoSDK 客戶端連線 MQTT over QUIC

    NanoSDK 是基於 C 語言開發的第一個支持 MQTT over QUIC 的 SDK,完全相容 EMQX 5.0。NanoSDK 的主要特點包括異步 I/O、將 MQTT 連線對映到 QUIC 流、低延遲的 0-RTT 握手以及多核並列處理等。

    NanoSDK

    此外,EMQX 還為多種程式語言提供了客戶端 SDK,以支持 MQTT over QUIC,包括:

  • NanoSDK-Python:NanoSDK 的 Python binding。
  • NanoSDK-Java:NanoSDK 的 Java JNA binding。
  • emqtt - Erlang MQTT 客戶端:使用 Erlang 開發的支持 QUIC 的 MQTT 客戶端。