阿里雲新一代互聯網傳輸協議QUIC淺析

QUIC(Quick UDP Internet Connection)是谷歌制定的一種互聯網傳輸層協議,它基於UDP傳輸層協議,同時兼具TCP、TLS、HTTP/2等協議的可靠性與安全性,可以有效減少連接與傳輸延遲,更好地應對當前傳輸層與應用層的挑戰。

QUIC的由來:爲什麼是UDP而非TCP?
UDP和TCP都屬於傳輸層協議。TCP是面向連接的,更強調的是傳輸的可靠性,通過TCP連接傳送的數據,無差錯,不丟失,不重複,按序到達,但是因爲TCP在傳遞數據之前會有三次握手來建立連接,所以效率低、佔用系統的CPU、內存等硬件資源較高;而UDP的無連接的(即發送數據之前不需要建立連接),只需要知道對方地址即可發送數據,具有較好的實時性,工作效率比TCP高,佔用系統資源比TCP少,但是在數據傳遞時,如果網絡質量不好,就會很容易丟包。

我們知道,大部分Web平臺的數據傳輸都基於TCP協議。實際上,TCP在設計之初,網絡環境複雜、丟包率高、網速差,所以TCP可以完美解決可靠性的問題。而如今的網絡環境和網速都已經取得了巨大的改善,網絡傳輸可靠性已經不再是棘手的問題。另外,TCP還有一個很大的問題是更新非常困難。這是因爲:TCP網絡協議棧的實現依賴於系統內核更新,一旦系統內核更新,終端設備、中間設備的系統更新都會非常緩慢,迭代需要花費幾年甚至十幾年的時間,這顯然跟不上當今互聯網的發展速度。所以現在解法就是,拋棄TCP而使用UDP,來實現低延遲的傳輸需求。

在這裏插入圖片描述

(QUIC is very similar to TCP+TLS+HTTP/2 implemented on UDP)

爲了結合兩者優點,谷歌公司推出了QUIC,它的升級不依賴於系統內核,只需要Client和Server端更新到指定版本。如此一來,基於UDP的QUIC就能月更甚至周更,很好的解決了TCP部署和更新的困難,更靈活地實現部署和更新。

爲什麼要用QUIC?
第一,建連延遲低
網民傳統TCP三次握手+TLS12RTT握手+http數據,基於TCP的HTTPS一次建連至少需要23個RTT,而QUIC基於UDP,完整握手只需要1RTT乃至0RTT,可以顯著降低延遲。
在這裏插入圖片描述
(握手比對)

第二,安全又可靠
QUIC具備TCP、TLS、HTTPS/2等協議的安全、可靠性的特點,通過提供安全功能(如身份驗證和加密)來實現加密傳輸,這些功能由傳輸協議本身的更高層協議(如TLS)來實現。

第三,改造靈活
QUIC在應用程序層面就能實現不同的擁塞控制算法,不需要操作系統和內核支持,這相比於傳統的TCP協議改造靈活性更好。

第四,改進的擁塞控制
QUIC主要實現了TCP的慢啓動、擁塞避免、快重傳、快恢復。在這些擁塞控制算法的基礎上改進,例如單調遞增的 Packet Number,解決了重傳的二義性,確保RTT準確性,減少重傳次數。

第五,無隊頭阻塞的多路複用
HTTP2實現了多路複用,可以在一條TCP流上併發多個HTTP請求,但基於TCP的HTTP2在傳輸層卻有個問題,TCP無法識別不同的HTTP2流,實際收數據仍是一個隊列,當後發的流先收到時,會因前面的流未到達而被阻塞。QUIC一個connection可以複用傳輸多個stream,每個stream之間都是獨立的,一個stream的丟包不會影響到其他stream的接收和處理。

在這裏插入圖片描述

綜上所述,QUIC具有衆多優點,它融合了UDP協議的速度、性能與TCP的安全與可靠,大大優化了互聯網傳輸體驗。

作爲提升終端用戶訪問效率的CDN服務,其節點之間存在大量數據互通,節點之間的網絡連接、傳輸架構等因素都會對CDN服務質量產生影響。而將QUIC應用在CDN系統中,CDN用戶開啓QUIC功能後,系統將遵循QUIC協議進行用戶IP請求處理,既能滿足安全傳輸的需求,也能提升傳輸效率。目前,阿里雲CDN除了在資源部署、智能調度等方面進行提升之外,也在網絡傳輸協議優化上不斷鑽研演進,以此確保爲用戶提供更低延遲、更高性能的內容分發加速服務。

早在2018年杭州雲棲大會上,阿里雲率先提出AliQUIC的概念,它是基於QUIC協議而推出的一種CDN last mile和middle mile的網絡傳輸解決方案。在這個網絡方案裏,AliQUIC不僅僅針對Web類應用,它在遊戲,實時音視頻通信,互動直播和IM彈幕等各種場景中,延伸出針對性地算法和技術,以達到最佳的加速效果。點擊閱讀詳情。
在這裏插入圖片描述
阿里雲CDN全面支持QUIC協議
阿里雲CDN全面支持QUIC協議,適用的產品包含靜態內容分發(圖片小文件、大文件下載、視音頻點播)和 動態內容分發(全站加速)。QUIC基於UDP協議,可以爲用戶提供更高的弱網性能、更低的握手延遲、更好的多路複用和更靈活的擁塞算法。

用戶只需在CDN、全站加速控制檯對域名開啓【QUIC協議開關】功能,支持QUIC協議的客戶端即可通過QUIC協議與阿里雲CDN節點通信。
在這裏插入圖片描述
(在阿里雲CDN中使用QUIC的工作原理)

QUIC對客戶端的要求
如果您使用Chrome瀏覽器,則只支持QUIC協議Q43版本。當前阿里雲CDN的QUIC協議是Q39版本,不支持直接對阿里雲CDN發起QUIC請求。
如果您使用自研App,則App必須集成支持QUIC協議的網絡庫,例如:lsquic-client或cronet網絡庫。
QUIC應用場景
一、圖片小文件:明顯降低文件下載總耗時,提升效率
二、視頻點播:提升首屏秒開率,降低卡頓率,提升用戶觀看體驗
三、動態請求:適用於動態請求,提升訪問速度,如網頁登錄、交易等交互體驗提升
四、弱網環境:在丟包和網絡延遲嚴重的情況下仍可提供可用的服務,並優化卡頓率、請求失敗率、秒開率、提高連接成功率等傳輸指標
五、大併發連接:連接可靠性強,支持頁面資源數較多、併發連接數較多情況下的訪問速率提升
六、加密連接:具備安全、可靠的傳輸性能

如何開通使用QUIC
目前QUIC對外開放處於公測階段,請您掃下方二維碼進入釘釘羣,進羣后按羣公告提供域名信息,由後臺工程師幫您開啓QUIC協議。當您在阿里雲CDN開啓QUIC協議功能時,阿里雲CDN將會處理通過QUIC協議發起的用戶請求。

Tips:QUIC協議屬於增值服務,會對QUIC請求數進行額外計費,詳情請參見CDN詳細價格信息的QUIC部分。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章