QUIC加密機制與測量的使用配置

QUIC加密

QUIC使用端點到端點進行加密,這種加密是在使用者封包通訊協定(User Datagram Protocol,UDP)有效負載上執行,因此一旦在傳輸層安全性協定(Transport Layer Security,TLS)握手完成,後續的 QUIC 封包交換次數極少。

使用QUIC會暴露的是公共旗標,QUIC封包的初始部分由連結識別元(connection identifiers,連接ID)組成,允許接收方將封包與端點相接聯,而無需解密整個封包,QUIC 的版本也是公共旗標集的一部分,用於初始QUIC會話建立,過後可省略。QUIC封包的其餘部分是私有旗標和有效負載,這些是加密的,竊取者無法直接看到。此私有部分包括封包序列,其用於檢測重複和丟失的封包,包括所有流控制參數。

此部分也是傳輸控制通訊協定(Transmission Control Protocol,TCP)和QUIC之間的關鍵區別。使用 TCP協議控制是明確的,因此網路元素將能夠檢查端口位址以及連接流狀態。連接一系列的TCP資料包,即使只查看連接同一個方向流動的封包,也允許網路元素推斷往返時間和資料傳輸速率。與網路位址轉換(Network Address Translation,NAT)相同,對 ACK 流的操作將允許網路元素對連接施加限制,並以對兩個端點都不可見的方式降低傳輸速率。

QUIC與IP分片

QUIC的封包不能被分片。而不被分片的方法是將含有Client Hello的封包填充到最大的大小,一旦最大封包被分段,就不會完成初始的交握,QUIC允許的最小封包長度為1,200位元組。如果端點已通過路徑MTU探索(Path MTU Discovery)過程確認可行性,則允許端點使用更大的封包。

測量QUIC的配置

現在讓我們衡量當今網際網路中QUIC(和HTTP/3)使用狀況。我們使用APNIC labs的測量平台,嵌入在網站廣告的腳本中,廣告腳本能將用戶導向許多統一資源定位器(Uniform Resource Locator,URL),並且允許從服務端動作中測量出客戶端的能力和行為。測量方式為客戶端加載一個URL,其最小為1×1像素的斑點。每個測量用的URL域名都是唯一的。

為了測量QUIC,採取了以下步驟:

  • 使用支援QUIC的伺服器nginx v1.12.7。
  • 使用的URL域名是已定義超級文字傳輸安全協定(HyperText Transfer Protocol Secure,HTTPS)DNS資源紀錄(Resource Record)的應用層協定協商值(Application-Layer Protocol Negotiation,ALPN)為alpn=”h3″。
  •  使用了二次請求的替代服務指令:Alt-Svc: h3=”:443″。指示主機在UDP端口443提供HTTP/3服務,使客戶端使用HTTP/3進行後續檢索。

通常替代服務(Alternative Service,Alt-Svc)指令是無效的。因為每個客戶端將廣告作為單個事件接收,且腳本指示每個廣告只加載一次,因此客戶端不會執行第二次加載URL的指令。在這種情況下,我們變更腳本,指示客戶端等待兩秒鐘,然後重複加載此URL。假定此延遲足以讓客戶端實行Alt-Svc指令。我們執行此重複URL的時間,佔實驗中的五分之一。

未來將持續探討「認識QUIC」系列,本系列共五篇。(3/5)

相關連結:

Geoff Huston(2022). A look at QUIC use. APNIC.

檢自:

https://blog.apnic.net/2022/07/11/a-look-at-quic-use/ (Aug. 22, 2022)

Scroll to Top