電腦網路與 Internet 通訊

單元 20 Hysteria 2 與 TUIC:QUIC 代理的取捨

學習目標與問題

先讀 QUIC 與代理分層。你應能追蹤應用 TCP/UDP 如何經 QUIC 代理,分析丟包下的語義,設計控制公平性的效能比較。不要把「基於 UDP」當成跳過可靠性與壅塞控制的捷徑。

20.1 Hysteria 2 的路徑

Hysteria 2 以 QUIC 建立安全通道,認證後把 TCP 轉送放到雙向 stream,UDP 轉送放到 QUIC 不可靠 DATAGRAM。名稱含 2 與歷史 Hysteria 1 不能當同版設定;官方文件把 2.0.0 起的規範另行定義。

C 的 TCP 在本地代理入口終止,P 向目標再開 TCP。兩者間以 QUIC stream 保序/可靠交付;應用 UDP 則有 session、目的位址及可能的 fragment 封裝。DATAGRAM 是 ack-eliciting 且受壅塞控制,但不重傳該資料報。如果 DATAGRAM 的分片之一遺失,重組資料報可能整份丟棄,QUIC 不會替該 DATAGRAM 重傳。必須看伺服器是否允許 UDP 及最大資料報條件。

認證與一般 HTTP/3 外觀是設計的一部分,但不代表所有代理資料都是普通 HTTP 請求,也不保證任何觀察者永遠無法區分。通道 TLS 的驗證仍重要;設定忽略憑證不是正常安全前提。

20.2 TUIC v5 的路徑

此處版本指規範 VER=0x05,不是任一軟體的發行版 5。TUIC 使用認證、Connect、Packet 等命令;常見 QUIC 對映以雙向 stream 承載 TCP,UDP 可經 native DATAGRAM 或可靠的單向 stream 模式。可靠承載可以恢復代理段的遺失,卻也可能令過期 UDP 內容晚到;這是不同語義,不是免費效能提升。

TUIC 的認證 token 綁定 TLS 會話材料,與只傳一個固定明文密碼不同。協定層的免等待/並行處理和 TLS 早期資料 0-RTT 又是不同問題,需分開記錄是否首次、恢復、驗證完成及重放風險。官方協定 repo 與第三方核心實作分開,不能僅以 repo 名稱判斷所有實作的維護狀態。

20.3 共用 QUIC 的收益與代價

多個獨立 stream 可以減少 TCP 串流缺口對所有代理工作造成的交付 HOL,但仍共享 cwnd、連線級 flow control、CPU 和路徑。單一 QUIC 連線斷線可影響多個轉送;並行工作過多可令互動延遲變差。datagram 模式和 stream 模式還要分開量測遺失、重排、延遲及有效內容。

UDP 在某些網路被限制,QUIC 可能遇中間設備、MTU 或 CPU 問題;TCP 模式可能更易通過,但不一定較快。埠切換(port hopping)、混淆和填充是額外設定,不改變所有傳輸服務的本質,也不能作為安全性的唯一證據。

20.4 完整比較例題

目標是低尾端延遲的互動訊息,每 50 ms 一份,100 ms 後過期。人工分布:模式 A 用 DATAGRAM,有 95%訊息最終到達,其中 99%在 100 ms 內;模式 B 用可靠 stream,全數最終到達,但只有 88%在 100 ms 內。A 的 deadline 成功率=0.95×0.99=94.05%,B=88%。這是人工情境,若過期訊息不能使用,B 的「零最終遺失」不等於更高有效成功率。

相反,下載檔案需要全部 bytes,可靠 stream 適合其需求。比較時分別計算「deadline 內完整交付率」「有效 bytes/s」「尾端延遲」,不把不同需求壓成一個最快排名。

20.5 壅塞與公平性

Hysteria 的速率設定與協商可影響發送策略。填高 tx/rx 不創造額外實體頻寬;過高可能造成排隊、遺失與競爭流受損。此次官方 client 文件列按方向用 bandwidth 選擇 Brutal;未選 Brutal 時用 congestion 選定控制器,預設 BBR,也可 Reno。Brutal 的 loss compensation 可增加發送量,設定與伺服器忽略客戶頻寬的策略會改變行為。固定目標速率不等同遺失時退讓的公平模型;應專門做競爭流實驗。設定值、控制器、補償、限速及雙向負載要明列。比較單協定獨佔和多協定競爭,可能得到不同結論。

實驗至少控制:client/server 硬體和版本、UDP 可用、RTT、遺失、path MTU、總瓶頸、工作負載、並行度、首次/恢復、warm-up;記 CPU、有效吞吐、尾端延遲、額外 bytes。L11 人工數列只練統計,不提供真實 HY2 與 TUIC 排名。

實驗、習題與檢核

L14 畫 stream 與 datagram 轉送;L11 設計 deadline 比較;Linux 延伸可用隔離多網段做受控遺失,本機必修不注入真實網路故障。

  1. QUIC stream 可靠,為何 HY2 的 UDP 仍可能遺失?
  2. TUIC 以 stream 承載 UDP 如何改變時效性?
  3. 免等待的代理命令是否等於 TLS 0-RTT?
  4. 提高設定速率為何可能損害互動延遲?

檢核:每個「快」都能寫出工作負載、指標與條件。來源:Hysteria 2 規範、TUIC v5 規範、RFC 9000、RFC 9221。Hysteria client 速率與控制器設定。查閱 2026-10-03。