當計算機科學家注意到TCP的限制性使它無法繼續支持新的、更加先進的互聯網服務時,他們對QUIC的興趣便與日俱增。作為傳輸協議,QUIC是替代TCP的最重要“候選人”,它將有可能為互聯網數據傳輸打開新的局面。
在昨天的文章中,我們討論了什么是QUIC、它的目的以及工作原理。現在我們要回答一個稍許不同的問題:它真的值得采用嗎?接下來,本文將深入探索使用QUIC的優勢和劣勢。
QUIC的優勢
QUIC的支持者指出它可以使互聯網更高效、快速、安全且不斷發展。
1∕可擴展性
更改TCP并不容易,因為其中的中間件抗拒更新,而且TCP 40字節的可選位幾乎全部填滿。
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所帶來的問題以及早期采用者所遇到的挑戰都在“鼓勵”一種觀望態度。
審核編輯 :李倩
-
互聯網
+關注
關注
54文章
11148瀏覽量
103236 -
Quic
+關注
關注
0文章
25瀏覽量
7297
原文標題:QUIC會成為互聯網傳輸的顛覆者嗎?
文章出處:【微信號:livevideostack,微信公眾號:LiveVideoStack】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論