QUIC進入IETF最後徵求意見,互聯網的又一次巨大飛躍

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在 2020 年 10 月 22 日,Cloudflare 發佈一篇官方博文《 "},{"type":"link","attrs":{"href":"https:\/\/blog.cloudflare.com\/last-call-for-quic\/","title":null,"type":null},"content":[{"type":"text","text":"A Last Call for QUIC, a giant leap for the Internet"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" 》。這篇文章宣告了在 IETF(互聯網工程任務組)發展近 4 年後,描述 QUIC 和 HTTP\/3 的文件系統的草案 32 被納入 IETF 最後徵求意見。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"IETF QUIC 工作組聯合主席 Lucas Pardue 表示,“對於工作組來說,這是一個重要的里程碑。現在,我們將告訴整個 IETF 社區,我們已經幾乎完成了工作,歡迎他們的最終審覈。”"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/3f\/3f8379fecc129d9b0a8faf922118c32f.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"騰訊 TEG 雲架構平臺部專家工程師,騰訊雲CLB研發負責人羅成對 InfoQ 記者說:“last call 意味着 QUIC 在社區範圍內的公開討論即將結束。在接下來的幾周時間有可能發佈正式的 RFC。QUIC RFC 如果定稿,對於後續 QUIC 協議的工程化和開源社區的支持也將有極大的推動作用,QUIC 的使用將會越來越普及。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"如果你訪問一個啓用了 HTTP\/3 的網站,比如 "},{"type":"link","attrs":{"href":"https:\/\/cloudflare-quic.com","title":null,"type":null},"content":[{"type":"text","text":"https:\/\/cloudflare-quic.com"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" 。你會看到響應頭包含 Alt-Svc: h3-29=\"…。一旦最後徵求意見完成且RFC發佈,你就會看到網站簡單返回Alt-Svc: h3=\"…。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"QUIC 源起"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"Quic,全稱爲 quick udp internet connection,即快速 UDP 網絡連接。最初,它是一種由谷歌開發的網絡傳輸協議,2013 年實現。據悉,QUIC 使用 UDP 協議,在兩個端點間創建連線,且支持多路複用連線。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"據羅成介紹,一直以來,谷歌對用戶的 web 訪問速度非常重視,投入很大:2012 年,谷歌開始實驗性研究 QUIC 協議,目的是提升用戶使用谷歌搜索的訪問速度。當時,一起研發的還有一個協議——SPDY,即HTTP2的前身。但是,SPDY是基於TCP實現的,存在一些無法克服的缺陷。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"“所以,谷歌希望另起爐竈,完全拋開 TCP,使用 UDP 來實現一套可靠的快速的傳輸協議。”他說。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"2013 年,QUIC 協議開始在數百萬 Chrome 用戶上進行實驗;2015 年,QUIC 的收益和演進路線已經非常明確。2015 年 6 月,QUIC 的網絡草案被正式提交至互聯網工程任務組(IETF)。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"IETF 則在 2016 年正式成立 QUIC 工作組,對 QUIC 協議草案進行討論和改進。最終,2018 年 10 月,互聯網工程任務組 HTTP 及 QUIC 工作小組正式將基於 QUIC 協議的 HTTP(HTTP over QUIC)重命名爲 HTTP\/3,成爲互聯網下一代標準傳輸協議,引起業界極大的興趣。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"羅成表示,“在國內,騰訊也很早就開始了對 QUIC 的研發,2015 年,開始研發 QUIC 協議;2016 年,在內部大規模使用;2017 年,我們在騰訊雲的 CLB 負載均衡器和 CDN 產品上發佈了對 QUIC 的支持。也是繼谷歌之後,第二家這麼早大規模使用 QUIC 協議的互聯網廠商。“"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"QUIC 協議和 HTTP\/3 的影響"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在羅成看來,QUIC 的普及會對互聯網帶來三方面的影響:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"第一,提升整個互聯網的訪問速度。因爲協議本身支持 ORTT 建立連接、多路傳輸等特性。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"第二,提升互聯網的傳輸安全。因爲 QUIC 傳輸的內容默認都是加密的,這對人們的隱私保護非常重要。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"第三,由於 QUIC 基於應用層實現,減少了對操作系統內核和中間設備的依賴。QUIC 也能推動互聯網流量工程和擁塞控制算法的快速演進,進一步促進訪問速度、QOS、流量成本等方面的優化。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"據瞭解,只要在訪問速度、訪問安全以及網絡健壯性有要求的領域,QUIC 都能帶來明顯的作用,比如雲遊戲、音視頻、頁面瀏覽、搜索引擎、廣告加載等。"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/71\/7197767485c632023886c438b4f16f11.jpeg","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"具體說來,服務端和 App 在支持 QUIC 協議後,用戶訪問同樣的業務會更快、更安全、更順暢。比如,在無需任何修改的情況下,App 的訪問速度提升 15%以上;WiFi 切換到 4G 或 5G 時,你不會感覺到卡頓。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"根據羅成的解釋,QUIC 之所以能更快,原因有三:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"QUIC 協議支持 ORTT 握手建連。QUIC 基於 UDP 傳輸,不像 TCP 需要三次握手來建立連接。而在安全傳輸層面,它以前使用 QUIC crypto 協議,現在支持 TLS 1.3 協議,都能實現更高比例的 ORTT 安全建連。相比 HTTP\/2 協議,建立連接的 RTT(round trip time)從 2-3 個直接減少到 0-1 個,這意味着 QUIC 發送第一個數據包時有了幾百毫秒的優勢。此外,QUIC 的 ORTT 還能實現更多的定製。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"QUIC 改進的擁塞控制算法。一方面,協議層做了更明確的限制也能攜帶更多的信息,比如嚴格遞增的序列號、更準確的 ack delay、更大範圍的 sack 範圍等。另一方面,由於 QUIC 基於應用層實現,可以有更大的擴展性。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"QUIC 支持多路複用且減少了隊頭阻塞。HTTP\/2 雖然也支持多路複用,但是由於 TCP 協議的 head of line block(隊頭阻塞),導致多路複用的效果也打了折扣。但是,QUIC 可以避免這樣的擁塞,因爲它基於應用層實現,協議棧能允許部分已經完成的 stream 進行交互,不會因爲丟了幾個包就導致後面的 stream 也被阻塞。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在安全性上,由於 QUIC 協議默認使用了安全傳輸協議,實現了證書認證、祕鑰協商、內容加密、一致性校驗等安全功能。這對人們的隱私保護也會很徹底,而被中間者劫持的可能性也非常低。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在連接遷移方面,羅成舉了一個例子。用戶經常在移動網絡下切換,家裏用 WiFi 看直播,一出門,WiFi 就斷了,只能連上 4G。由於網絡斷了,直播一定會中斷幾秒鐘。如果使用 QUIC 的連接遷移後,用戶從 WiFi 切換到 4G,他不會感到卡頓。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"“其主要原理就是 QUIC 的連接遷移功能。連接沒有中斷,用戶的數據傳輸也沒有中斷。但是,連接中斷的概念雖然容易理解,在服務端支持上卻比較困難,比如騰訊雲CLB就需要 4 層負載均衡、7 層負載均衡以及進程間聯動,還包括進程重啓以及平滑退出時的設計。”他說。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"企業面臨的挑戰"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"無論是安全性,還是用戶體驗,QUIC 協議和 HTTP\/3 對企業都是更好的選擇。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"但是,羅成對 InfoQ 記者表示,“大規模使用 QUIC 的話,會有很多挑戰。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"挑戰一,如何實現 QUIC 協議的支持。由於 QUIC 協議非常複雜,且 RFC 尚未定稿,導致目前缺乏一個成熟通用的服務框架支持。並且,一些開源的框架也很不完善,比如 Nginx、MSQUIC 等。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"挑戰二,QUIC 非常消耗 CPU 資源,這會極大增加服務器成本。不管是默認加解密,還是 UDP 協議棧以及 QUIC 協議棧,相比傳統的基於 TCP 的協議,比如 HTTPS,要增加一倍以上的機器成本。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"挑戰三,QUIC 的運營工具非常欠缺,問題排查非常困難。QUIC 協議比較新,而類似 TCP 的 tcpdump、wireshark 等工具都不完善。另外,由於 QUIC 協議的序列號都進行了加密,協議棧也是重新在用戶態實現的,所以以前 UDP\/TCP 的一些抓包和分析工具都失效了,需要重新開發。比如,用戶丟的包,以前用 tcpdump,外加 wireshark 就能分析在哪丟的包、爲什麼丟包,但是這無法適用於 QUIC,因爲不僅傳輸層幀格式變了,而且幀的頭部是加密的,傳統工具都無法解析。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"寫在最後:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"QUIC協議不僅給互聯網用戶帶來全新的體驗,更快的訪問,而且更加安全。對於它的意義,正如IETF QUIC 工作組聯合主席 Lucas Pardue所說,“新協議是互聯網的一個巨大飛躍,因爲它帶來了新的機遇和創新。”"}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章