QUIC連結識別元與多串流支持

QUIC連結識別元

關於網路位址轉換(Network Address Translation,NAT)遍歷,QUIC使用連結識別元(connection identifiers,連接ID),每個端點都會生成連接ID,這些連接ID允許接收到具有連接ID的資料包路由到使用該連接ID的過程。在QUIC 版本協商過程中,連接ID會被交換,此後每個發送的QUIC資料包都包含遠程的當前連接 ID。

這種與端點連接身分的方式與QUIC使用當前IP位址和連接埠之間的語意區別形式,類似於主機標識協議 ( Host Identity Protocol ,HIP)。QUIC 的恆定端點標識符允許在端點IP位址和端口的變化中儲存。如果傳入的QUIC資料包使用相同的連接ID,則可將其識別為現有的一部分,即使來源IP位址和以使用者封包通訊協定(User Datagram Protocol,UDP)連接埠可能已更改。

QUIC 多流支持

單個QUIC會話可支援多個配置文件,例如:雙向流將客戶端和服務器置於匹配的上下文中,這是HTTP/1的請求與回應。期望客戶端使用服務器的雙向流,然後在流中發出請求,該請求將從服務器生成匹配的回應。服務器可藉此向客戶端推送雙向流,其中包含沒有初始請求的回應。若使用單向控制流支援控制訊息,其中一方可以盡快將消息傳遞給另一方,而底層單向流用於支援控制流的連接埠也因此暴露給應用程式。

QUIC不僅可以支援許多不同的串流配置文件,還可以在已發起的單一QUIC會話中端到端進行傳輸,支持不同的串流配置文件。雖然這不是新技術,在HTTP/2協定就添加了多工傳輸和串流訊框(Stream Frames),以便在單一個資料流上承載多個資料。但是,HTTP/2使用的單一TCP傳輸,可能會遇到隊頭阻塞問題,如果其中一個數據流停止傳輸,那麼所有排列的數據流都可能會受到影響並且停止。

QUIC使用一種略有不同的多工傳輸形式,每個數據流可以使用端到端狀態傳輸,因此一個資料流如果停止傳輸,其他正在傳輸的資料流並不會受到影響。

在HTTP/2中兩個端點之間使用多工傳輸多個資料流,一部分原因是為了減少每個TCP會話設置TLS安全關聯(security association)的間接費用。還有一個主要問題,當各串流都發送一個小物件時,TCP和TLS同時交握會佔據總下載時間和數據量,影響傳輸效能。

QUIC將安全關聯以UDP實現端到端資料串流,因此各個串流可以以非常輕量級的方式啟動,因為這些串流實質上已經建立了安全會話。

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

相關連結:

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

檢自:

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

Scroll to Top