QUIC會成為互聯網傳輸的顛覆者嗎?
翻譯:Alex
技術審校:劉連響
本文來自Compira Labs,作者為Ravid Hadar。
▲掃描圖中二維碼瞭解音視頻技術大會更多信息▲
影音探索 #012#
當計算機科學家注意到TCP的限制性使它無法繼續支持新的、更加先進的互聯網服務時,他們對QUIC的興趣便與日俱增。作為傳輸協議,QUIC是替代TCP的最重要“候選人”,它將有可能為互聯網數據傳輸打開新的局面。
在昨天的文章中,我們討論了什麼是QUIC、它的目的以及工作原理。現在我們要回答一個稍許不同的問題:它真的值得采用嗎?接下來,本文將深入探索使用QUIC的優勢和劣勢。
QUIC的優勢
QUIC的支持者指出它可以使互聯網更高效、快速、安全且不斷髮展。
1∕可擴展性
更改TCP並不容易,因為其中的中間件抗拒更新,而且TCP 40字節的可選位幾乎全部填滿(更多相關信息,請閲讀QUIC和互聯網傳輸的未來)。
TCP沒有任何版本協商(version negotiation)擴展位,相比之下,QUIC有32位,所以它有很多空間部署新版本,廠商也可以利用這些空間定義自己的專屬版本。
2∕用户空間實現
QUIC能夠在應用層實現,與在操作系統內核中實現的TCP相比,它可以更快地進行更新。這進一步提高了QUIC的可擴展性,使得服務可以非常快速地演進,從而新的特性每天都能得到部署。同時它還能在上下文切換時通過調用較少的開銷而實現更高的響應能力。
3∕更快建立連接
Web瀏覽特別需要快速建立連接,因為用户通常會開啟多個、短暫的連接。當使用HTTPS時,TCP在建立連接前,需要“三次握手”以及後續的TLS協議設置。
QUIC(基於UDP)不需要三次握手,加上它會在初次握手時交換安全密鑰,從而使它在建立加密連接時速度提升了一倍。
4∕降低對丟包的敏感度
使用TCP時,如果丟失一個數據包,接下來所有的數據包都會停止傳輸,直到丟失的那個數據包被髮送,這種現象被稱為“隊頭阻塞”,它會導致延遲明顯增加。
相比之下,QUIC使用的是類似HTTP/2的多路複用模式,可以同時支持多個數據流。如果一個數據流發送錯誤,導致丟包,那麼其他數據流會繼續發送數據包,而不會阻塞傳輸。
下圖的示例中顯示了包含三個數據包的擁塞窗口的連接,其中0號數據包被丟棄。在只有單一數據流的TCP連接中,後續的數據包被阻止。QUIC的多路連接擁有三個數據流,每個都能獨立操作。因此,2號和3號數據流仍然在正常傳輸,只有1號數據流中後續的數據包被阻止。
5∕切換網絡時的性能提升
切換網絡時,QUIC可以實現平穩過渡。比如,如果你使用家裏的wifi觀看手機上的視頻,然後你走出家門,家裏的wifi便切換到LTE,或者當你一直忙於觀看視頻,在不同的移動基站間移動時。
在以上這些場景中,TCP將切斷連接,並通過新的網絡創建新的連接,進而影響到你的觀看體驗。而QUIC則能夠實現無縫連接。
6∕提升的安全性和隱私保護
QUIC在傳輸層中內置了加密功能,從而驗證整個負載(包括header)。TCP在header中不包含加密,使它非常容易受到攻擊。QUIC默認支持安全的TLS,意味着端到端完全安全。
QUIC的侷限性
TCP發明時,網絡都是有線連接,而且相當可靠。但顯然,情況已經發生改變。QUIC對非可靠、無法預測的無線連接進行了改進,但並沒有改變互聯網傳輸的本質,它的侷限性導致它只能改變某些特定使用場景。下面列舉了一些額外的QUIC侷限性:
1∕遷移app面臨巨大挑戰
將app從HTTP/2遷移到HTTP/3(或者從TCP遷移到UDP)要費很大力氣。整個過程需要將整個應用層實現和傳輸層實現轉移到UDP,並在服務端和客户端構建全新的解決方案。
這對於流媒體領域中資源相對有限的小廠商而言無疑挑戰重重,同時也解釋了谷歌和微軟這樣的科技巨頭可以率先採用QUIC協議的原因。
2∕採用受限
QUIC的最大問題就是它的採用依然受限。幾乎每個瀏覽器都接受使用QUIC進行簡單的網頁瀏覽,但是除了chromium,沒有瀏覽器將它設置為默認選項。
除此之外,在流媒體領域,除了谷歌和Facebook(現更名為Meta)之外,少有公司使用QUIC。只有少數CDN提供商支持QUIC,而其中的一些也只是驗證了QUIC的實現,並沒有為大規模部署準備好。這就帶來了問題:如果你推出了使用multi-CDN並基於QUIC的新服務,那麼將只有20%的訪問使用QUIC,因為你無法向用户證明它對用户體驗的顯著影響。
3∕QUIC包含TCP回退
QUIC之所以被構建在UDP之上,部分原因是極少有中間件和網絡設備攔截UDP。但確實存在被攔截的風險,所以基於QUIC的app必須設計成能夠回退到TCP,以防萬一。
這意味着app(基於QUIC)的開發者要同時開發和維護兩個不同的版本(由於TCP回退和受到限制的採用率),導致他們的負擔很重。
好消息是,隨着最新的DEVOPS結構與HTTP的Alt-Svc標籤的使用,支持兩種協議要比以前簡單得多。
4∕無法檢查數據包
網絡防火牆無法解密QUIC流量來檢查數據包,所以潛在的惡意流量非常有可能沒有被標準安全功能檢測出來而進入網絡。因此,思科和Palo Alto Networks等安全廠商通常會在端口80(Web服務器)和443(TSL)攔截QUIC數據包(認為它們包含惡意軟件),迫使客户端回退使用HTTP/2和TCP協議。
但上述操作並不會顯著影響內容用户體驗,因為正確實現的流媒體服務會默認回退到TCP+TLS,但這種操作可能會阻止率先部署QUIC的想法。只有解決這一挑戰,QUIC才能被各大企業廣泛接受。
5∕不具備某些TCP特性
人們理所當然地使用TCP中所默認包含的一些特性(比如Throttling)。但使用QUIC,你可能需要自己構建這些特性。
除此之外,HTTP/3缺乏一些採用某些特定協議時所需的特性。比如,HTTP/3仍然不支持成塊傳輸(chunked transfer,即將視頻切片分割為小塊的能力),但HTTP1.1卻支持該特性。這就限制了用於基於QUIC的視頻傳輸的協議數量。
因此,儘管QUIC支持大部分常見傳輸協議(如HLS、MPEG-DASH),但目前它無法支持更多新的協議,這些協議主要用於降低glass-to-glass延遲,比如依賴於成塊傳輸的LL CMAF(Low Latency Common Media Format)。
glass-to-glass延遲: 指顯示器屏幕和相機鏡片之間的延遲,也可以叫做“端到端延遲”,意思是開始( 捕獲)並結束(顯示)之間整個傳輸管道上的延遲[1]。
6∕更容易被fingerprinting
惡意行為者很可能嗅探到互聯網用户與所訪問網站之間的網絡流量,並通過被發現的數據包創建與特定網站相對應的不同模式,這種操作被稱為web fingerprinting。在早期流量連接階段,TCP+HTTPS似乎更能抵禦fingerprinting。
7∕QUIC可能需要更高的CPU使用率
一些觀點認為QUIC所需的HTTP/3在客户端和服務端都佔用了更多的CPU資源。然而,谷歌卻持相反觀點,認為QUIC有助於延長電池壽命。
無論如何,一旦QUIC進入主流技術棧,這一問題預計不會有太大影響。
8∕需要實現的協議眾多
由於IETF歷經5年多才發佈第一版QUIC,所以目前市面上有60種QUIC版本實現,都開發於QUIC標準之前。因此,大部分QUIC版本或不支持完整的QUIC標準,或只支持自己版本的實現。只有當不同版本的QUIC與官方標準保持一致時,它才能被廣泛採用。
9∕互聯網依然針對TCP進行優化
TCP傳輸已經存在幾十年,多年以來,TCP應用通過在軟件(如操作系統內核)和硬件(如網絡接口和智能NIC)中構建卸載性能而徹底得到了優化。而QUIC卻不具備這一能力。它基於UDP,位於用户空間內,所以它的端點,以及一些中間件功能在現階段存在明顯的劣勢。不過,一旦QUIC被廣泛採用,就會得到這種優化,所以這對於QUIC而言只是暫時性問題。
QUIC vs TCP:對於質量體驗的影響
QUIC支持某些獨特的特性並在新的特性實現方面提供了更多靈活性。因此,對比TCP,基於QUIC的應用有望在QoE方面帶來更多優勢。
下面是兩個QUIC帶來QoE優勢的常見用例:
-
Web瀏覽: QUIC支持內置TLS,並能夠迅速建立連接。在大部分連接時長較短的情況下(如安全網站的快速下載時長),它可以提供明顯的性能優勢。谷歌聲稱運行在QUIC上的應用頁面下載時長縮短了10%。
-
視頻流: QUIC支持的某些特性有望提升視頻流的QoE。目前為止,因為QUIC的實現邏輯與TCP相似,所以可預測的影響已受到限制。但在一些情況中,還是可以體驗到QUIC所帶來的好處,比如,QUIC減少隊頭阻塞的能力為具有中高丟包率的網絡所帶來的QoE優勢。
QUIC也許是“改進者”,不是“顛覆者”
QUIC確實為互聯網用户帶來了漸進式的增益,但對於它是否是真正的“顛覆者”這一觀點還存在爭議。目前存在充分的理由採用QUIC,但QUIC所帶來的問題以及早期採用者所遇到的挑戰都在“鼓勵”一種觀望態度。
註釋:
[1]http://cloud.tencent.com/developer/article/1346159
致謝:
本文已獲得作者Ravid Hadar授權翻譯和發佈,特此感謝。
原文鏈接:
http://www.compiralabs.com/post/quic-is-it-the-game-changer-for-internet-delivery
延伸閲讀:
IETF訪談:HTTP/3全球份額持續增長,QUIC前景一片光明
IETF:QUIC Version 1 (RFC 9000) 作為標準化版本現已發佈
- 揭祕HTTP/3優先級
- 如何使用FFmpeg將AVI轉換為MP4(有損轉換和無損轉換)
- WebRTC開源項目現狀
- 端雲協同創新優化音視頻場景用户體驗
- 2022容器格式全面指南
- 對話Robin Marx:HTTP/3和QUIC將帶來重大機遇和挑戰
- QUIC會成為互聯網傳輸的顛覆者嗎?
- RealNetworks vs. 微軟:早期流媒體行業之爭
- AVOD、SVOD、TVOD、PVOD:揭祕視頻點播商業模式
- 使用FFmpeg進行HLS打包——FFmpeg簡單學
- 關於GiF動圖你不知道的9件事
- 眾説元宇宙及其實現
- 公網傳輸技術之SRT協議解析(上)
- FFmpeg 5.0 正式發佈
- 對話Justin Uberti:RTC的過去、現在和未來
- 探討視頻雲與邊緣雲平台的競爭力 ——基於Serverless的端邊雲一體化媒體網絡
- 智能視頻內容生產中專業視頻數據導出工具的研發
- 追求極致,揭祕抖音背後的RTC技術
- 【專場福利Part2】從多維度出發 保障&提升實時音視頻質量
- 【聲入人心:音頻新體驗】