在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

什么是QUIC和HTTP/3呢?

LiveVideoStack ? 來源:LiveVideoStack ? 作者:LiveVideoStack ? 2020-11-02 10:04 ? 次閱讀

隨著IETF很快完成QUIC標準定稿,越來越多的企業和開發者投入到QUIC開發實現與部署中。阿里巴巴實現了XQUIC;B站、快手在2019年就公開了QUIC的應用實踐;Akamai等CDN服務商則很早就開始擁抱QUIC,并提供相應的支持。本文來自Facebook的工程博客,詳細介紹了Facebook是如何將其3/4的流量切換到QUIC上的。

Facebook正在使用QUIC取代互聯網幾十年來一直沿用的默認協議,這是我們最新的網絡協議優化策略,同時也是最激進的一步,目的還是為了進一步提高我們的服務的用戶體驗。

今天,QUIC和HTTP/3在我們的互聯網通信中使用率超過75%(我們將QUIC和HTTP/3統稱為QUIC)。QUIC已經顯著地改善多個指標,包括請求錯誤、尾延遲(Tail Latency)、響應頭大小以及各種其他影響我們應用程序用戶體驗相關的參數。 互聯網工程任務組(IETF)目前正在為QUIC和HTTP/3開發標準。

什么是QUIC和HTTP/3呢?

從廣義上講,QUIC替代了傳輸控制協議(TCP),后者是互聯網通信的主要協議之一。QUIC最初由谷歌公司內部研發,稱為GoogleQUIC,或gQUIC,于2015年提交給IETF。從那之后,更廣大的IETF社區對其進行了重新設計與改進,形成了一個新的協議,也就是我們現在所說的QUIC。

HTTP/3是HTTP的新一代迭代,它是基于網絡的應用程序和服務器之間通信的標準協議。綜合Facebook、谷歌和IETF社區數十年來在互聯網上運行協議獲得的最佳實踐經驗和教訓,QUIC和HTTP/3共同代表了最新且最強大的以互聯網為中心的協議。

QUIC和HTTP/3整體優于TCP和HTTP/2,后者則跑贏了TCP和HTTP/1.1。TCP和HTTP/2首先引入了流多路復用的概念,在同一進程中,允許單個網絡連接服務多個數據流。QUIC和HTTP / 3在此基礎上更進一步,通過避免TCP可怕的隊頭阻塞 (隊頭阻塞時,丟失的數據包發生阻塞同時導致連接上的所有流變慢),從而使得流真正獨立。 QUIC采用了最先進的丟失恢復技術,在惡劣的網絡條件下,這能使得它在大多數情況下性能跑贏TCP協議實現。TCP也容易僵化,因為防火墻等網絡中間件對數據包的格式做了假設,TCP協議很難進行升級,QUIC通過完全加密功能避免了這個問題,使得協議的可擴展性走向最佳,同時保證將來可以進行改進。QUIC還可以通過QLOG(一種專門為QUIC設計的基于JSON的跟蹤格式)來檢測、觀察和可視化展示傳輸行為。

以經驗為導向的協議開發

Facebook開發了自己的QUIC實現,我們稱之為mvfst,以便在我們自己的系統上快速測試和部署QUIC。我們有編寫和部署自己的協議實現的經驗,首先部署我們的HTTP客戶機/服務器庫Proxygen,緊接著是Zero協議,最后是Fizz(我們的TLS1.3實現)。

Facebook應用程序運用Fizz和Proxygen通過Proxygen Mobile與服務器進行通信。我們還為TLS開發了一個名為delegated credentials的擴展程序,提供兩方面安全解決方案,一方面可用于保護TLS上的證書和DNS,另一方面也可用于加密和驗證TLS上的web流量。

從頭開始開發和部署新的傳輸協議

我們希望新協議能夠與現有的軟件無縫集成,并且幫助Facebook的開發人員更高效地工作。作為一個試驗場,我們決定將QUIC部署在Facebook的相當一部分網絡流量上,尤其包括指向Facebook的公共代理流量在內的內部網絡流量。假如QUIC不能很好地處理內部流量,我們便可以確定它在更廣闊的互聯網上效果也不會太好。

除開能暴露錯誤及其他有問題的行為之外,通過這種策略,我們可以設計一種方法,使我們的網絡負載均衡器對QUIC深度了解,并使得負載均衡器的零停機釋放得到保證。 有了這個堅實的基礎,我們開始向互聯網上的用戶部署QUIC。基于mvfst的設計,我們能夠將QUIC支持平穩地集成到Proxygen Mobile中。

Facebook應用程序

部署到Facebook應用程序是我們在互聯網上使用QUIC的第一個目標。Facebook擁有成熟的基礎架構,可以讓我們在向數十億人發布應用程序之前,以有限的方式安全地推出應用程序的更新。

我們從一個實驗入手,在Facebook應用程序的動態GraphQL請求中啟用了QUIC。在這些請求的響應中,沒有圖像和視頻之類的靜態內容。 我們的測試表明,運用QUIC使得多個指標有所提升。Facebook用戶的請求錯誤率下降了6%,尾延遲下降了20%,響應頭大小相較于HTTP/2縮小了5%。同時這也對其他指標產生了級聯效應,可以說QUIC極大地提高了用戶的體驗。 然而,QUIC的應用相較TCP也有倒退之處。最令人費解的是,盡管僅在動態請求時啟用QUIC,然而我們發現使用TCP下載的靜態內容的錯誤率卻增加了。其根本原因是我們在將流量轉換到QUIC時遇到的一個常見問題:應用程序的邏輯是,根據不同類型內容的請求的速度和可靠性,切換請求的類型和數量以處理相應的類型內容。于是乎,改進一種請求類型可能會對其他類型產生糟糕的副作用。 再如,QUIC帶來的另一些麻煩,適應應用程序從服務器請求新靜態內容的積極性的啟發式算法將隨著QUIC的使用而發生改變,當應用程序發出一個請求時,比方說,當加載News Feed的文本內容時,需要觀察這個請求耗時多久,然后再決定發出多少圖像/視頻請求。 我們發現啟發式算法策略可能對TCP比較有效,它是用任意閾值進行調整的。但是當我們切換到QUIC時,這些閾值變得不準確,應用程序可能一次發送請求過多,最終導致News Feed的加載時間進一步加長。

擴大使用范圍

下一步是為Facebook應用中的靜態內容部署QUIC(如:圖片和視頻)。然而,在此之前,我們必須解決兩個重點問題:mvfst的CPU效率以及我們的主要擁塞控制實現的有效性與BBR。

到目前為止,mvfst的設計初衷是幫助開發人員靈活開發并跟上不斷變化的QUIC草案。與靜態請求相比,動態請求的響應相對較小,它不需要占用大量的CPU,也不需要擁塞控制器來控制其進度。 為了解決這些問題,我們開發了性能測試工具,用以幫助我們評估CPU的使用情況并有效地運用擁塞控制器來管理網絡資源。 我們在負載均衡器中綜合使用了QUIC的負載測試和這些性能測試工具,取得了一些成果。一個重要的方向——例如——優化我們調整UDP數據包的效率,以保證數據傳輸更加平滑。為了提高CPU的使用率,我們采用了不少技術,諸如使用通用分段延后處理(GSO)來一次高效地發送多個UDP包。我們還對處理未確認的QUIC數據使用的數據結構和算法進行了優化。

QUIC針對所有內容

在為Facebook應用程序中的所有內容啟用QUIC之前,我們先與包括我們的視頻工程師在內的幾個利益相關者展開合作。他們對重要的產品指標有著深刻的理解,能夠在我們啟用QUIC時幫助我們分析Facebook應用程序中的實驗性結果。

實驗表明,QUIC對Facebook應用中的視頻相關的指標有著革命性的影響。根據平臺的不同,體現出緩沖事件間隔耗時指標的平均重新緩沖時間(MTBR)總體上提高了22%。視頻請求的總體錯誤量減少了8%。視頻卡頓率降低了20%。 包括元指標在內的其他幾個指標,考慮到各種因素,特別是異常情況,也得到了顯著改善。QUIC改善了視頻觀看體驗,對網絡條件相對較差的地區,尤其是新興市場,產生了巨大的影響。 然而,能達到這樣的成就,一路上也是困難重重。一如我們在動態內容方面的經歷,我們在應用程序中發現了針對TCP行為進行調整的啟發式方法。例如,iOSAndroid上的應用程序有不同的機制來估計可用的下載帶寬。當使用QUIC時,這些估計器有時會高估可用帶寬,導致應用程序播放的視頻質量高于網絡所能支持的質量,從而引起視頻卡頓。 我們還需要調整流控制參數并繼續迭代它。流控制限制了接收者期望從發送者那里緩存到的數據量。Facebook應用程序對HTTP/2有一個靜態定義的流控制限制,該限制是針對TCP進行的隱藏式優化,不過在QUIC中表現不太好。為了找到新的最優流量控制值,我們需要進行一些實驗性迭代。

QUIC和TCP視頻加載時間之間的個體差異

Instagram及其他

即使是在Facebook這樣豐富復雜的應用程序上,QUIC也被證明能夠有效改善人們在互聯網上的體驗。在未來,我們計劃繼續利用更多QUIC的已有功能,比如連接遷移和真正的0-RTT連接創建,并致力于改善擁塞控制和損失恢復。

我們也在Instagram中部署了QUIC,使用了與Facebook部署相同的策略——先在Instagram的一小部分流量上進行測試,然后進一步大規模使用。 如今,QUIC已經部署到了Instagram的iOS和安卓版本上。Instagram的兩個版本的相關指標的優化成果都達到甚至超越了我們先前在Facebook應用程序上取得的收獲。 Facebook和Instagram的網頁版上也啟用了QUIC,隨著更多的web瀏覽器開始支持QUIC——如最近谷歌對Chrome和蘋果對Safari beta所做的改進——越來越多的用戶將從中受益。 除了Instagram之外,我們相信我們有能力將QUIC的優勢帶到Facebook應用家族中的所有應用的每一次體驗中去,QUIC最終將不僅代表Facebook的大部分互聯網流量,而是代表Facebook的所有互聯網流量。 IETF有望在2021年某個時間點完成對QUIC協議的征求意見文檔(RFC)的定稿。到那時候,會有更多的網站、應用程序和網絡庫提供通用的QUIC。在不久的將來,像QUIC這樣的新協議將是解鎖互聯網應用創新的關鍵。對我們來說,QUIC則是一個起點,我們將繼續提升人們在Facebook上的用戶體驗。 在Facebook內外,有太多的人共同努力促成了QUIC的成功部署。我們要感謝在過去幾年中參與IETF QUIC工作組的所有成員,感謝他們對QUIC不懈地探討與設計。IETF QUIC工作組由許多不同背景的成員組成,他們在相對較短的時間內制定出了一項真正稱得上卓越的網絡協議。

責任編輯:lq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • HTTP
    +關注

    關注

    0

    文章

    513

    瀏覽量

    31843
  • 應用程序
    +關注

    關注

    38

    文章

    3305

    瀏覽量

    58213
  • Quic
    +關注

    關注

    0

    文章

    25

    瀏覽量

    7339

原文標題:Facebook如何將QUIC應用于數十億流量傳輸

文章出處:【微信號:livevideostack,微信公眾號:LiveVideoStack】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何使用 cURL 測試 HTTP 協議

    cURL是一個強大的命令行工具,用于傳輸數據,支持多種協議,包括HTTP、HTTPS、FTP等。使用cURL測試HTTP協議可以幫助你理解HTTP請求和響應的工作原理,以及調試和驗證你的HTT
    的頭像 發表于 12-30 09:26 ?476次閱讀

    HTTP 1.1 和 HTTP 2.0 的區別

    HTTP(超文本傳輸協議)是互聯網上應用最為廣泛的協議之一,用于在客戶端和服務器之間傳輸數據。隨著技術的發展,HTTP協議也在不斷地更新和優化。HTTP/1.1是1999年發布的,而HTTP
    的頭像 發表于 12-30 09:25 ?493次閱讀

    HTTP 協議的工作原理

    HTTP協議的工作原理 1. HTTP協議概述 HTTP是一個應用層協議,它定義了客戶端與服務器之間請求和響應的格式。HTTP協議基于TCP/IP模型,通常使用80端口進行通信。
    的頭像 發表于 12-30 09:21 ?450次閱讀

    HTTP 和 HTTPS 的區別

    在互聯網時代,數據傳輸安全變得越來越重要。HTTP 和 HTTPS 是兩種廣泛使用的網絡協議,它們在數據傳輸方面扮演著關鍵角色。盡管它們的名字相似,但它們在安全性和用途上有著顯著的區別。 HTTP
    的頭像 發表于 12-30 09:19 ?489次閱讀

    HTTP 協議的基本概念

    HTTP(HyperText Transfer Protocol,超文本傳輸協議)是一種用于分布式、協作式、超媒體信息系統的網絡協議。HTTP 是互聯網上應用最為廣泛的協議之一,它定義了客戶端(比如
    的頭像 發表于 12-29 15:12 ?633次閱讀

    合宙Air780EP模塊AT開發-HTTP應用指南

    /article/937)2、初始化HTTP服務3、設置HTTP會話參數4、如果要支持SSL,配置SSL參數5、如果使用POST命令,輸入POST數據6、發起HTTP
    的頭像 發表于 08-01 17:15 ?982次閱讀
    合宙Air780EP模塊AT開發-<b class='flag-5'>HTTP</b>應用指南

    講解HTTP代理類別,使用設置,測試HTTP代理方法

    HTTP
    jf_62215197
    發布于 :2024年07月19日 07:03:46

    幫助讀者更深入地了解IP代理領域,并掌握與HTTP相關的知識

    HTTP
    jf_62215197
    發布于 :2024年07月12日 07:06:12

    ESP32-C3播放http音頻文件消耗RAM空間怎么解決?

    主芯片:ESP32-C3-WROOM-02模組 問題描述: 在ESP-ADF下的play_http_mp3例程項目基礎上修改:從mqtt服務接收要播放的音頻地址,傳入
    發表于 06-28 07:21

    為什么使用MQTT而不是HTTP

    為什么使用MQTT而不是HTTP? 在探討為何在某些場景下選擇MQTT(Message Queuing Telemetry Transport)而非HTTP(Hypertext Transfer
    的頭像 發表于 06-19 14:26 ?585次閱讀
    為什么使用MQTT而不是<b class='flag-5'>HTTP</b>?

    使用ESP32-S3開發板http post請求發送SD卡上的大文件,如何循環邊讀取文件邊分塊發送文件

    您和,我準備使用ESP32-S3開發板http post請求發送SD卡上的大文件,但是使用esp_http_client_set_post_field的buffer太小,內存不能一次性申請太大,請問
    發表于 06-06 06:19

    使用http代理究竟什么原因?

    HTTP
    jf_62215197
    發布于 :2024年05月13日 07:42:55

    鴻蒙網絡開發學習:【ylong_http

    ylong_http 構建了完整的 HTTP 能力,支持用戶使用 HTTP 能力完成通信場景的需求。 ylong_http 使用 Rust 編寫,為 OpenHarmony 的
    的頭像 發表于 03-25 16:36 ?823次閱讀
    鴻蒙網絡開發學習:【ylong_<b class='flag-5'>http</b>】
    主站蜘蛛池模板: 超级碰碰青草免费视频92 | 狠狠做久久深爱婷婷97动漫 | 中文字幕一区2区 | 久久五月女厕所一区二区 | 国产成人高清精品免费5388密 | 天天干天天操天天操 | 国产三级在线观看免费 | 亚洲黄网免费 | 88av免费观看 | 天天干影院 | 色偷偷成人 | 四虎国产精品免费观看 | 一级特黄aa大片一又好看 | 韩国理论片2023现在观看 | 国内一区二区三区精品视频 | 理论片午午伦夜理片影院99 | 在线www 天堂网在线 | 高清一级毛片一本到免费观看 | 一级毛片在线播放 | a一级视频| 天天噜日日噜夜夜噜 | 国产在线视频你懂得 | www.激情五月.com| 午夜视频免费在线 | 日本加勒比高清一本大道 | 99国产成人精品2021 | 久久刺激| 亚洲国产精品网站久久 | 国内亚州视频在线观看 | 国产做a爰片久久毛片a | 久久伊人精品青青草原高清 | 天堂在线www在线资源 | 色综合久久98天天综合 | 伊人网站在线 | 欧美性极品高清 | 欧美精品1 | 视频在线观看高清免费大全 | 四虎东方va私人影库在线观看 | 人人艹在线观看 | 天天干小说 | 黄色尤物 |