什麽是 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 加速等領域,其中最具潛力的套用場景有:
- 即時 Web 和流動應用 :這些套用(如整合了語音和影片通訊功能的 Web 和流動應用)需要低延遲和可靠的數據傳輸。QUIC 利用相互獨立的數據流和擁塞控制機制,使其成為這些套用的理想選擇,因為它可以快速高效地發送和接收數據。在 QUIC 的多路復用模式下,同一連線內不同數據流之間的數據傳輸互不幹擾。
- 與物聯網器材通訊 :物聯網器材通常使用 TCP 和 MQTT 等協定進行通訊。然而,這些協定在受限的網絡環境中可能存在高延遲和丟包等問題。相比之下,專為高延遲和丟包的網絡環境而設計的 QUIC 可以提供更可靠和高效的替代方案。QUIC 可以實作接近零的往返時間(RTT),這對於提高網絡效能和使用者體驗至關重要。
- 車聯網和網聯汽車 :QUIC 可以極大地促進車聯網生態系的發展。這些系統需要即時的數據交換來提供諸如交通管理、車輛跟蹤和安全功能等服務。QUIC 具有低延遲、多路復用的特性,以及對封包遺失和重排序的處理能力,可以確保車輛和基礎設施元件之間可靠而高效的通訊。此外,QUIC 使用 TLS 加密保護敏感車輛數據,提供了更強的安全保障。
- 雲端運算 :雲端運算是指透過互聯網提供計算資源的服務。使用 QUIC 協定可以帶來多方面的好處,例如低延遲和端到端加密,這可以提升使用者體驗、增強系統安全。
- 支付和電子商務套用 :這些套用需要安全可靠的數據傳輸。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 TCP/TLS 具有明顯的優勢:
連線建立:
延遲和效能:
安全性:
客戶端的連線遷移:
套用和支持:
MQTT over QUIC 在車聯網中的套用場景
在車聯網場景下,MQTT over QUIC 可以帶來很多優勢,因為低延遲、可靠和安全的通訊對各種套用來說都非常重要。由於 QUIC 結合了 TCP 和 UDP 的優點,並且提供了內建的加密,因此它可以顯著提高基於 MQTT 的車聯網套用的效能和安全性。
在車聯網中使用 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 支持兩種操作模式:
使用 NanoSDK 客戶端連線 MQTT over QUIC
NanoSDK 是基於 C 語言開發的第一個支持 MQTT over QUIC 的 SDK,完全相容 EMQX 5.0。NanoSDK 的主要特點包括異步 I/O、將 MQTT 連線對映到 QUIC 流、低延遲的 0-RTT 握手以及多核並列處理等。
此外,EMQX 還為多種程式語言提供了客戶端 SDK,以支持 MQTT over QUIC,包括: