色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

QUIC如何解決TCP性能瓶頸

Linux愛好者 ? 來源:流云IoT ? 作者:流云IoT ? 2021-11-09 10:08 ? 次閱讀

1.1 TCP 為何會有隊頭阻塞問題

HTTP/2相比HTTP/1.1 設計出的一些優秀的改進方案,大幅提高了HTTP 的網絡利用效率。HTTP/2 在應用協議層通過多路復用同一個TCP連接解決了隊頭阻塞問題,但這是以下層協議比如TCP 協議不出現任何數據包阻塞為前提的。TCP 在實際運行中,特別是遇到網絡環境不好時,數據包超時確認或丟失是常有的事,假如某個數據包丟失需要重傳時會發生什么呢?

3bc66920-3f2e-11ec-9195-dac502259ad0.jpg

TCP 采用正面確認和超時重傳機制來保證數據包的可靠交付。比如主機A 向 主機B 發送數據包,主機B 收到該數據包后會向主機A 返回確認應答報文,表示自己確實收到了該數據包,主機A 收到確認應答報文后才確定上一個數據包已經發送成功,開始發送下一個數據包。

如果超過一定時間(根據每次測量的往返時間RTT估算出的動態閾值)未收到確認應答,則主機A 判斷上一個數據包丟失了,重新發送上一個數據包,這就相當于阻塞了下一個數據包的發送。

3c099f88-3f2e-11ec-9195-dac502259ad0.png

逐個發送數據包,等待確認應答到來后再發送下一個數據包,效率太低了,TCP 采用滑動窗口機制來提高數據傳輸效率。窗口大小就是指無需等待確認應答而可以繼續發送數據的最大值,這個機制實現了使用大量的緩沖區,通過對多個數據包同時進行確認應答的功能。

當可發送數據的窗口消耗殆盡時,就需要等待收到連續的確認應答后,當前窗口才會向前滑動,為發送下一批數據包騰出窗口。假設某個數據包超時未收到確認應答,當前窗口就會阻塞在原地,重新發送該數據包,在收到該重發數據包的確認應答前,就不會有新增的可發送數據包了。也就是說,因為某個數據包丟失,當前窗口阻塞在原地,同樣阻塞了后續所有數據包的發送。

3c53d2d8-3f2e-11ec-9195-dac502259ad0.png

TCP 因為超時確認或丟包引起的滑動窗口阻塞問題,是不是有點像HTTP/1.1 管道化機制中出現的隊頭阻塞問題?HTTP/2 在應用協議層通過多路復用解決了隊頭阻塞問題,但TCP 在傳輸層依然存在隊頭阻塞問題,這是TCP 協議的一個主要性能瓶頸。該怎么解決TCP 的隊頭阻塞問題呢?

1.2 QUIC 如何解決隊頭阻塞問題?

TCP 隊頭阻塞的主要原因是數據包超時確認或丟失阻塞了當前窗口向右滑動,我們最容易想到的解決隊頭阻塞的方案是不讓超時確認或丟失的數據包將當前窗口阻塞在原地。QUIC (Quick UDP Internet Connections)也正是采用上述方案來解決TCP 隊頭阻塞問題的。

TCP 為了保證可靠性,使用了基于字節序號的 Sequence Number 及 Ack 來確認消息的有序到達。QUIC 同樣是一個可靠的協議,它使用 Packet Number 代替了 TCP 的 Sequence Number,并且每個 Packet Number 都嚴格遞增,也就是說就算 Packet N 丟失了,重傳的 Packet N 的 Packet Number 已經不是 N,而是一個比 N 大的值,比如Packet N+M。

3ca2c1ea-3f2e-11ec-9195-dac502259ad0.png

QUIC 使用的Packet Number 單調遞增的設計,可以讓數據包不再像TCP 那樣必須有序確認,QUIC 支持亂序確認,當數據包Packet N 丟失后,只要有新的已接收數據包確認,當前窗口就會繼續向右滑動。 待發送端獲知數據包Packet N 丟失后,會將需要重傳的數據包放到待發送隊列,重新編號比如數據包Packet N+M 后重新發送給接收端,對重傳數據包的處理跟發送新的數據包類似,這樣就不會因為丟包重傳將當前窗口阻塞在原地,從而解決了隊頭阻塞問題。那么,既然重傳數據包的Packet N+M 與丟失數據包的Packet N 編號并不一致,我們怎么確定這兩個數據包的內容一樣呢?

還記得前篇博文:HTTP/2 是如何解決HTTP/1.1 性能瓶頸的?使用Stream ID 來標識當前數據流屬于哪個資源請求,這同時也是數據包多路復用傳輸到接收端后能正常組裝的依據。重傳的數據包Packet N+M 和丟失的數據包Packet N 單靠Stream ID 的比對一致仍然不能判斷兩個數據包內容一致,還需要再新增一個字段Stream Offset,標識當前數據包在當前Stream ID 中的字節偏移量。

有了Stream Offset 字段信息,屬于同一個Stream ID 的數據包也可以亂序傳輸了(HTTP/2 中僅靠Stream ID 標識,要求同屬于一個Stream ID 的數據幀必須有序傳輸),通過兩個數據包的Stream ID 與 Stream Offset 都一致,就說明這兩個數據包的內容一致。

3cd6cee0-3f2e-11ec-9195-dac502259ad0.png

上圖中數據包Packet N 丟失了,后面重傳該數據包的編號為Packet N+2,丟失的數據包和重傳的數據包Stream ID 與 Offset 都一致,說明這兩個數據包的內容一致。這些數據包傳輸到接收端后,接收端能根據Stream ID 與 Offset 字段信息正確組裝成完整的資源。

QUIC 通過單向遞增的Packet Number,配合Stream ID 與 Offset 字段信息,可以支持非連續確認應答Ack而不影響數據包的正確組裝,擺脫了TCP 必須按順序確認應答Ack 的限制(也即不能出現非連續的空位),解決了TCP 因某個數據包重傳而阻塞后續所有待發送數據包的問題(也即隊頭阻塞問題)。

QUIC 可以支持非連續的數據包確認應答Ack,自然也就要求每個數據包的確認應答Ack 都能返回給發送端(TCP 中間丟失幾個Ack 對數據包的確認應答影響不大),發送端收到該數據包的確認應答后才會釋放該數據包所占用的緩存資源,已發送但未收到確認應答的數據包會保存在緩存鏈表中等待可能的重傳。

QUIC 對確認應答Ack 丟失的容忍度比較低,自然對Ack 的傳輸能力進行了增強,Quic Ack Frame 可以同時提供 256 個 Ack Block,在丟包率比較高的網絡下,更多的 Ack Block 可以提高Ack 送達的成功率,減少重傳量。

1.3 QUIC 沒有隊頭阻塞的多路復用

QUIC 解決了TCP 的隊頭阻塞問題,同時繼承了HTTP/2 的多路復用優點,因為Stream Offset 字段的引入,QUIC 中同一Stream ID 的數據幀也支持亂序傳輸,不再像HTTP/2 要求的同一Stream ID 的數據幀必須有序傳輸那么嚴格。

3d106b50-3f2e-11ec-9195-dac502259ad0.png


從上面QUIC 的數據包結構中可以看出,同一個Connection ID 可以同時傳輸多個Stream ID,由于QUIC 支持非連續的Packet Number 確認,某個Packet N 超時確認或丟失,不會影響其它未包含在該數據包中的Stream Frame 的正常傳輸。

同一個Packet Number 可承載多個Stream Frame,若該數據包丟失,則其承載的Stream Frame 都需要重新傳輸。因為同一Stream ID 的數據幀亂序傳輸后也能正確組裝,這些需要重傳的Stream Frame 并不會影響其它待發送Stream Frame 的正常傳輸。

值得一提的是,TLS 協議加解密前需要對數據進行完整性校驗,HTTP/2 中如果TCP 出現丟包,TLS 也會因接收到的數據不完整而無法對其進行處理,也即HTTP/2 中的TLS 協議層也存在隊頭阻塞問題,該問題如何解決呢?
既然TLS 協議是因為接收數據不完整引起的阻塞,我們只需要讓TLS 加密認證過程基于一個獨立的Packet,不對多個Packet 同時進行加密認證,就能解決TLS 協議層出現的隊頭阻塞問題,某一個Packet 丟失只會影響封裝該Packet 的Record,不會讓其它Record 陷入阻塞等待的情況。

2.1 TCP連接的本質是什么?

你可能熟悉TCP 建立連接的三次握手和四次揮手過程,但你知道TCP 建立的連接本質上是什么嗎?這里的連接跟我們熟悉的物理介質連接(比如電路連接)不同,主要是用來說明如何在物理介質上傳輸數據的。

為了更直觀了解網絡連接概念,我們拿面向連接的TCP 與無連接的UDP 做對比,網絡傳輸層的兩個主流協議,他們的主要區別是什么呢?UDP 每個分組的處理都獨立于所有其他分組,TCP 每個分組的傳輸都有確認應答過程和可能的丟包重傳過程,需要為每個分組數據進行狀態信息記錄和管理(比如未發送、已發送、未確認、已確認等狀態)。

TCP 建立連接的三次握手過程都做了哪些工作呢?首先確認雙方是否能正常收發數據,通信雙方交換待發送數據的初始序列編號并作為有序確認應答的基點,通信雙方根據預設的狀態轉換圖完成各自的狀態遷移過程,通信雙方為分組數據的可靠傳輸和狀態信息的記錄管理分配控制塊緩存資源等。

下面給出TCP 連接建立、數據傳輸、連接釋放三個階段的報文交互過程和狀態遷移圖示(詳見博文:TCP協議與Transmission Control Protocol):

3d70bf28-3f2e-11ec-9195-dac502259ad0.png

從上圖可以看出,TCP 連接主要是雙方記錄并同步維護的狀態組成的。一般來說,建立連接是為了維護前后分組數據的承繼關系,維護前后承繼關系最常用的方法就是對其進行狀態記錄和管理。

TCP 的狀態管理可以分為連接狀態管理和分組數據狀態管理兩種,連接狀態管理用于雙方同步數據發送與接收狀態,分組數據狀態管理用于保證數據的可靠傳輸。涉及到狀態管理一般都有狀態轉換圖,TCP 連接管理的狀態轉換圖上面已經給出了,HTTP/2 的Stream 實際上也記錄并維護了每個Stream Frame 的狀態信息,Stream 的狀態轉換圖如下:

3dd98be8-3f2e-11ec-9195-dac502259ad0.png

2.2 QUIC 如何減少TCP 建立連接的開銷?

TCP 建立連接需要三次握手過程,第三次握手報文發出后不需要等待應答回復就可以發送數據報文了,所以TCP 建立連接的開銷為 1-RTT。既然TCP 連接主要是由雙方記錄并同步維護的狀態組成的,我們能否借鑒TLS 快速恢復簡短握手相比完整握手的優化方案呢?

TLS 簡短握手過程是將之前完整握手過程協商的信息記錄下來,以Session Ticket 的形式傳輸給客戶端,如果想恢復之前的會話連接,可以將Session Ticket 發送給服務器,就能通過簡短的握手過程重建或者恢復之前的連接,通過復用之前的握手信息可以節省 1-RTT 的連接建立開銷。

TCP 也提供了快速建立連接的方案 TFO (TCP Fast Open),原理跟TLS 類似,也是將首次建立連接的狀態信息記錄下來,以Cookie 的形式傳輸給客戶端,如果想復用之前的連接,可以將Cookie 發送給服務器,如果服務器通過驗證就能快速恢復之前的連接,TFO 技術可以通過復用之前的連接將連接建立開銷縮短為 0-RTT。

因為TCP 協議內置于操作系統中,操作系統的升級普及過程較慢,因此TFO 技術至今仍未普及(TFO 在2014年發布于RFC 7413)。

3e1e7320-3f2e-11ec-9195-dac502259ad0.png

從上圖可知,TCP 首次建立連接的開銷為 1-RTT,快速復用/打開連接的開銷為 0-RTT,這與TLS 1.3 協議首次完整握手與快速恢復簡短握手的開銷一致。

客戶端發送的第一個SYN 握手包是可以攜帶數據的,但為了防止TCP 泛洪攻擊,TCP 的實現者不允許將SYN 攜帶的數據包上傳給應用層。HTTP 協議中TCP 與TLS 常常配合使用,這里TCP 的第一個SYN 握手包可以攜帶TLS 1.3 的握手包,這就可以將TCP + TLS 總的握手開銷進一步降低。

首次建立連接時,TCP 和TLS 1.3 都只需要 1-RTT 就可以完成握手過程,由于TCP 第一個SYN 握手包可以攜帶TLS 的握手包,因此TCP + TLS 1.3 總的首次建立連接開銷為 1-RTT。當要快速恢復之前的連接時,TFO 和TLS 1.3 都只需要 0-RTT 就可以完成握手過程,因此TCP + TLS 1.3 總的連接恢復開銷為 0-RTT。

QUIC可以理解為”TCP + TLS 1.3“(QUIC 是基于UDP的,可能使用的是DTLS 1.3),QUIC 自然也實現了首次建立連接的開銷為 1-RTT,快速恢復先前連接的開銷為 0-RTT 的效率。QUIC 作為HTTP/2 的改進版,建立連接的開銷也有明顯降低,下面給出HTTP/2 和QUIC 首次連接和會話恢復過程中,HTTP 請求首個資源的RTT 開銷對比:

HTTP/2 + TLS 1.2 首次連接 HTTP/2 + TLS 1.2 會話恢復 HTTP/2 + TLS 1.3 首次連接 HTTP/2 + TLS 1.3 會話恢復 HTTP/2 + TLS 1.3 會話恢復 + TFO QUIC 首次連接 QUIC 會話恢復
DNS 解析 1-RTT 0-RTT 1-RTT 0-RTT 0-RTT 1-RTT 0-RTT
TCP 握手 1-RTT 1-RTT 1-RTT 1-RTT 0-RTT
(TCP Fast Open)
- -
TLS 握手 2-RTT 1-RTT 1-RTT 0-RTT 0-RTT - -
QUIC 握手 - - - - - 1-RTT 0-RTT
HTTP 請求 1-RTT 1-RTT 1-RTT 1-RTT 1-RTT 1-RTT 1-RTT
總計 5-RTT 3-RTT 4-RTT 2-RTT 1-RTT 3-RTT 1-RTT

從上表可以看出,QUIC 首次建立連接的開銷比"HTTP/2 + TLS 1.3"減少了 1-RTT,會話/連接恢復的開銷降低到了 0-RTT(除去HTTP 自身請求資源的開銷),顯著降低了網頁請求延遲。

值得一提的是,TCP 因為報文首部是透明傳輸的,在安全防護方便比較脆弱,容易受到網絡攻擊。QUIC 因為有TLS 對數據包首部進行加密和驗證,增加了安全防護強度,更不容易受到網絡攻擊。

2.3 QUIC 如何實現連接的無感遷移?

每個網絡連接都應該有一個唯一的標識,用來辨識并區分特定的連接。TCP 連接使用 這四個信息共同標識,在早期PC 時代,這四個元素信息可以唯一標識通信雙方的主機及端口,報文中也不需要一個專門的字段來標識連接,減少了傳輸開銷。

到了移動互聯網時代,客戶端(比如手機)的位置可能一直在變,接入不同的基站可能就會被分配不同的Source IP 和Source Port。即便在家里,客戶端可能也需要在LTE 和WIFI 之間切換,這兩個網絡分配給客戶端的Source IP 和Source Port 可能也是不同的。

TCP 用來標識連接的四個信息中的任何一個改變,都相當于TCP 連接標識改變了,也就變成了不同的連接,TCP 需要先斷開舊的連接再建立新的連接,很顯然連接切換或遷移過程不夠順暢高效。

未來移動設備越來越多,在通話或者玩游戲等對實時性要求較高的場景中,因為網絡遷移或切換導致TCP 斷開連接會大大降低網絡服務體驗,怎么解決TCP 因為網絡遷移或切換導致斷線重連的問題呢?

早期移動電話使用Mobile IP 技術來解決網絡遷移或切換過程引起的斷連問題,Mobile IP 主要是通過新建IP 隧道的方式(也即建立一個新連接來轉發數據包)保持原來的連接不斷開,但這種方式增加了數據包的傳輸路徑,也就增大了數據包的往返時間,降低了數據包的傳輸效率。Mobile IP 的工作原理如下(移動主機遷移到外部代理后,為了保持原連接不斷開,新建了一條到歸屬代理的IP 隧道,讓歸屬代理以原主機IP 轉發數據包):

3e52a014-3f2e-11ec-9195-dac502259ad0.png

TCP 為保持前向兼容性,沒法重新設計連接標識,但為了解決移動主機連接切換問題還是推出了一套解決方案MPTCP (Multipath TCP,在2013年發布于RFC 6824) 。

針對移動主機同時支持LTE 和WIFI 等多條連接鏈路的情況,設計的多路徑TCP 技術(MPTCP) 允許在一條TCP 鏈路中建立多個子通道,每個子通道都可以按照三次握手的方式建立連接,每個子通道的連接允許IP 不一致,這些子通道都會綁定到MPTCP Session(比如通過LTE 和WIFI 各建立一個子通道),發送端的數據可以選擇其中一條通道進行傳輸。MPTCP 可以讓移動主機在多個連接鏈路間順暢切換,切換過程不斷開連接。

對于移動主機跨基站連接遷移的問題,也可以在原基站與目標遷移基站之間各建立一個連接鏈路/子通道,當移動主機從一個基站遷移到另一個基站時,只是從一個鏈路子通道切換到另一個鏈路子通道,同樣能讓連接鏈路順暢遷移而不斷開連接。MPTCP 跟TFO 技術類似,需要操作系統及網絡協議棧支持,更新和部署阻力較大,目前并不適用。

3eaa9f44-3f2e-11ec-9195-dac502259ad0.png

QUIC擺脫了TCP 的諸多限制,可以重新設計連接標識,還記得前面給出的QUIC 數據包結構嗎?QUIC 數據包結構中有一個Connection ID 字段專門標識連接,Connection ID是一個64位的通用唯一標識UUID (Universally Unique IDentifier)。

借助Connection ID,QUIC 的連接不再綁定IP 與 Port 信息,即便因為網絡遷移或切換導致Source IP 和Source Port 發生變化,只要Connection ID 不變就仍是同一個連接,協議層只需要將控制塊中記錄的Source IP 和Source Port 信息更新即可,不需要像TCP 那樣先斷開連接,這就可以保證連接的順暢遷移或切換,用戶基本不會感知到連接切換過程。

3edfbf80-3f2e-11ec-9195-dac502259ad0.png

3.1 TCP 擁塞控制機制的瓶頸在哪?

計算機網絡都處于一個共享環境中,可能會因為其它主機之間的通信使得網絡擁堵,如果在通信剛開始時就突然發送大量數據,可能會導致整個網絡的擁堵阻塞。TCP為了防止該問題的出現,設計了擁塞控制機制來限制數據包的發送帶寬,實際就是控制發送窗口的大小。

TCP 發送數據的速率受到兩個因素限制:一個是目前接收窗口的大小,通過接收端的實際接收能力來控制發送速率的機制稱為流量控制機制;另一個是目前擁塞窗口的大小,通過慢啟動和擁塞避免算法來控制發送速率的機制稱為擁塞控制機制,TCP 發送窗口大小被限制為不超過接收窗口和擁塞窗口的較小值。

TCP 通信開始時,會通過慢啟動算法得出的擁塞窗口大小對發送數據速率進行控制,慢啟動階段擁塞窗口大小從1 開始按指數增大(每收到一次確認應答擁塞窗口值加1,收到一個窗口大小數量的確認應答則擁塞窗口大小翻倍),雖然擁塞窗口增長率較快,但由于初始值較小,增長到慢啟動閾值仍然需要花費不少時間。

為了防止擁塞窗口后期增長過快,當擁塞窗口大小超過慢啟動閾值(一般為發生超時重傳或重復確認應答時,擁塞窗口一半的大小)后,就變更為線性增長(每收到一個窗口大小數量的確認應答則擁塞窗口大小增加一個數據段),直到發生超時重傳或重復確認應答,擁塞窗口向下調整,擁塞窗口大小變化過程如下圖示:

3f2a22c8-3f2e-11ec-9195-dac502259ad0.jpg

從上圖可以看出,TCP 發生超時重傳時,擁塞窗口直接下調為 1,并從慢啟動階段開始逐漸增大擁塞窗口,當超過慢啟動閾值后進入擁塞避免階段,這個過程對網絡傳輸效率影響較大。

TCP 發生重復確認應答而觸發快速重傳時,判斷網絡擁堵情況更輕些,因此擁塞窗口下調為慢啟動閾值 + 3個數據段的大小,相當于直接跨過慢啟動階段進入擁塞避免階段,這個過程對網絡傳輸效率影響相對較小,這種機制稱為快速恢復機制。

現在網絡帶寬相比TCP協議剛誕生時有了明顯的改善,TCP 的擁塞控制算法也成為影響網絡傳輸效率的一個瓶頸,如果觸發超時重傳的次數比較多,對網絡傳輸效率的影響相當大。

3.2 QUIC 如何降低重傳概率?

TCP 的擁塞控制機制是被超時重傳或者快速重傳觸發的,想要提高網絡傳輸效率,容易想到兩個方案:一個是改進擁塞控制算法;另一個是降低重傳次數。這里先介紹如何降低重傳次數/概率?

降低TCP 的重傳概率有兩個方向:

降低超時重傳概率:可以通過改善網絡環境,提高重發超時閾值的計算準確度,也就是提高往返時間RTT 的測量準確度,來降低超時重傳概率;

降低丟包重傳概率:可以增加傳輸一定的冗余數據比如糾錯碼,當丟失部分數據時可以通過糾錯碼恢復丟失的數據,降低丟包重傳的概率。

由于TCP 重傳 segment 的 Sequence Number 和原始的 segment 的 Sequence Number 保持不變,當發送端觸發重傳數據包Sequence N后,接收到了該數據包,發送端無法判斷接收到的數據包是來自原始請求的響應,還是來自重傳請求的響應,這就帶來了TCP 重傳的歧義性,該問題肯定會影響采樣RTT 測量值的準確性,進而影響重發超時閾值計算的準確度,可能會增大數據包超時重傳的概率。

3f6a1216-3f2e-11ec-9195-dac502259ad0.png

QUIC 采用單向遞增的Packet Number來標識數據包,原始請求的數據包與重傳請求的數據包編號并不一樣,自然也就不會引起重傳的歧義性,采樣RTT 的測量更準確。

除此之外,QUIC 計算RTT 時除去了接收端的應答延遲時間,更準確的反映了網絡往返時間,進一步提高了RTT 測量的準確性,降低了數據包超時重傳的概率。

3fa5b0e6-3f2e-11ec-9195-dac502259ad0.png

TCP 傳輸的數據只包括校驗碼,并沒有增加糾錯碼等冗余數據,如果出現部分數據丟失或損壞,只能重新發送該數據包。沒有冗余的數據包雖然降低了傳輸開銷,但增加了丟包重傳概率,因為重傳觸發擁塞控制機制,勢必會降低網絡傳輸效率。

適當增加點冗余數據,當丟失或損壞的數據量較少時,就可以靠冗余數據恢復丟失或損壞的部分,降低丟包重傳概率。只要冗余數據比例設置得當,提高的網絡傳輸效率就可以超過增加的網絡傳輸開銷,帶來網絡利用率的正向提升。

QUIC引入了前向冗余糾錯碼(FEC: Fowrard Error Correcting),如果接收端出現少量(不超過FEC的糾錯能力)的丟包或錯包,可以借助冗余糾錯碼恢復丟失或損壞的數據包,這就不需要再重傳該數據包了,降低了丟包重傳概率,自然就減少了擁塞控制機制的觸發次數,可以維持較高的網絡利用效率。

糾錯碼的原理比較復雜,如果想對糾錯碼有更多的了解,可以參考文章:二維碼的秘密,文中簡單介紹了二維碼中的糾錯碼是如何實現信息糾錯和補全的。

3.3 QUIC 如何改進擁塞控制機制?

TCP 的擁塞控制實際上包含了四個算法:慢啟動、擁塞避免、快速重傳、快速恢復。現在網絡環境改善速度較快,TCP 的慢啟動與擁塞避免過程需要的時間較長,雖然TCP 也在不斷更新改進擁塞控制算法,但由于TCP 內置于操作系統,擁塞控制算法的更新速度太過緩慢,跟不上網絡環境改善速度,TCP 落后的擁塞控制算法自然會降低網絡利用效率。

400bac48-3f2e-11ec-9195-dac502259ad0.png

QUIC協議當前默認使用了 TCP 的 Cubic 擁塞控制算法,同時也支持 CubicBytes、Reno、RenoBytes、BBR、PCC 等擁塞控制算法,相當于將TCP 的擁塞控制算法照搬過來了,QUIC 是如何改進TCP 的擁塞控制算法的呢?

QUIC直接照搬TCP 的擁塞控制算法只是借鑒了TCP 經過驗證的成熟方案,由于QUIC 是處于應用層的,可以隨瀏覽器更新,QUIC 的擁塞控制算法就可以有較快的迭代速度,在TCP 的擁塞控制算法基礎上快速迭代,可以跟上網絡環境改善的速度,盡快提高擁塞恢復的效率。

QUIC還將擁塞控制算法設計為可插拔模塊,可以根據需要為不同的連接配置不同的擁塞控制算法,這樣可以為每個連接根據其網絡環境配置最適合的擁塞控制算法(可以根據大數據和人工智能計算結果自動精準配置),盡可能讓每個連接的網絡帶寬得到最高效的利用。

作者:流云IoT

https://blog.csdn.net/m0_37621078/article/details/106506532

編輯:jq

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

    關注

    8

    文章

    7074

    瀏覽量

    89153
  • IP
    IP
    +關注

    關注

    5

    文章

    1711

    瀏覽量

    149639
  • TCP
    TCP
    +關注

    關注

    8

    文章

    1370

    瀏覽量

    79132
  • Quic
    +關注

    關注

    0

    文章

    25

    瀏覽量

    7310

原文標題:QUIC 是如何解決TCP 性能瓶頸的?

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    TCP三次握手如何影響網絡性能

    在計算機網絡中,TCP是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。它通過三次握手過程來建立兩個網絡實體之間的連接,確保數據傳輸的可靠性和順序性。 TCP三次握手的過程 SYN(同步
    的頭像 發表于 01-06 09:13 ?145次閱讀

    TCP協議是什么

    在網絡通信的廣闊領域中,TCP(Transmission Control Protocol,傳輸控制協議)扮演著舉足輕重的角色。作為TCP/IP協議族中的核心協議之一,TCP位于網絡層(IP層)之上
    的頭像 發表于 10-09 13:54 ?711次閱讀

    MODBUS TCP 轉 CANOpen

    產品概述 SG-TCP-COE-210 網關可以實現將 CANOpen 接口設備連接到 MODBUS TCP 網絡中。用戶不需要了解具體的 CANOpen 和 Modbus TCP 協議即可實現
    的頭像 發表于 09-24 13:59 ?286次閱讀
    MODBUS <b class='flag-5'>TCP</b> 轉 CANOpen

    EtherCAT轉Modbus TCP協議網關(JM-ECT-TCP

    JM-ECT-TCP網關實現EtherCAT網絡與Modbus TCP網絡之間的數據通訊,即將Modbus TCP設備轉換為EtherCAT設備。
    的頭像 發表于 09-07 17:05 ?355次閱讀
    EtherCAT轉Modbus <b class='flag-5'>TCP</b>協議網關(JM-ECT-<b class='flag-5'>TCP</b>)

    何解決工字電感噪音大的問題

    電子發燒友網站提供《如何解決工字電感噪音大的問題.docx》資料免費下載
    發表于 09-04 11:46 ?0次下載

    何解決電感的漏感問題

    電子發燒友網站提供《如何解決電感的漏感問題.docx》資料免費下載
    發表于 09-02 14:48 ?0次下載

    labview實現tcp通訊

    labview實現tcp通訊
    發表于 08-19 14:26 ?15次下載

    tcp和udp的區別和聯系

    揮著重要作用。然而,它們在設計、功能和性能方面存在顯著差異。 二、TCP與UDP的定義 傳輸控制協議(TCPTCP是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。它由IETF
    的頭像 發表于 08-16 11:06 ?622次閱讀

    Modbus(TCP)轉Profinet從總線協議轉換網關(JM-TCP-PN)

    如何實現Profinet網絡與Modbus TCP網絡的連接互通,這是很多朋友都感到困惑的問題。接下來,將為大家集中進行解答。實際上,捷米特JM-TCP-PN這一設備能夠出色地解決這個難題。下面,為
    的頭像 發表于 08-16 10:14 ?362次閱讀
    Modbus(<b class='flag-5'>TCP</b>)轉Profinet從總線協議轉換網關(JM-<b class='flag-5'>TCP</b>-PN)

    舊款泰克TCP202和當前款TCP202A之間有何區別?

    泰克(Tektronix)是一家知名的電子測量儀器制造商,其電流探頭在電子工程和測試領域中廣泛使用。TCP202和TCP202A是泰克公司生產的兩種電流探頭,它們在設計和性能上有所不同。以下是關于
    的頭像 發表于 08-12 10:49 ?490次閱讀
    舊款泰克<b class='flag-5'>TCP</b>202和當前款<b class='flag-5'>TCP</b>202A之間有何區別?

    TCP IP協議屬性設置中的IP配置

    在現代網絡中,TCP/IP協議是基礎架構的重要組成部分。掌握TCP/IP協議屬性設置中的IP配置對于確保網絡的穩定性、性能和安全至關重要。本文將深入探討TCP/IP協議中的IP配置,包
    的頭像 發表于 07-23 10:10 ?537次閱讀

    esp8266讀取模擬數據并記錄到eeprom,發送tcp包時無法讀取模擬如何解決?

    嗨,esp8266 讀取模擬數據并記錄到 eeprom,我正在將存儲在 eeprom 中的數據作為 tcp 包發送,但在發送 tcp 包時無法讀取模擬,如何解決它? 如何將線程用于這些作業?
    發表于 07-11 07:22

    如何同時在ESP8266上運行TCP客戶端和TCP服務?

    客戶端無法連接到 TCP 服務器。如果不將 TCP 客戶端從 ESP 連接到云服務器,則 ESP 上的 TCP 服務器可以很好地接受 TCP 客戶端連接。
    發表于 07-08 08:26

    如何處理SoC中的性能瓶頸呢?

    SoC 中不斷添加處理核心,但它們不會都得到充分利用,因為真正的瓶頸沒有得到解決。
    的頭像 發表于 05-01 09:33 ?827次閱讀
    如何處理SoC中的<b class='flag-5'>性能</b><b class='flag-5'>瓶頸</b>呢?

    煤氣柜泄漏問題如何解

    電子發燒友網站提供《煤氣柜泄漏問題如何解決.docx》資料免費下載
    發表于 03-05 17:49 ?0次下載
    主站蜘蛛池模板: 久久精品热99看二| 香港成人社区| 最新精品国产| 蜜桃色欲AV久久无码精品| 99热这里只有精品6| 全球真实小U女视频合集| 国产1000部成人免费视频 | 日本xxx片免费高清在线| 国产精品成人影院| 伊人国产在线播放| 秋霞午夜一级理论片久久| 国产午夜婷婷精品无码A片| 影音先锋电影资源av| 欧美性受xxxx狂喷水| 国产毛片视频网站| 20岁αsrian男同志免费| 777久久人妻少妇嫩草AV| 青青草久久| 黄色片中文| 亚洲 日韩 欧美 国产专区| 动漫美女和男人下载| 亚洲精品国偷拍电影自产在线 | 美女脱了内裤张开腿让男人爽| 成人片免费看| 中文字幕视频在线免费观看| 肉肉的各种姿势高H细文| 久久精品国产免费| 国产 日韩 欧美 高清 亚洲| 中文成人在线| 午夜视频在线瓜伦| 男污女XO猛烈的动态图| 国产在线一区二区三区四区| HEYZO无码中文字幕人妻| 亚洲色偷偷偷网站色偷一区人人藻 | 看免费人成va视频全| 国产精品久久久久影院| 97视频视频人人碰视频| 亚洲区 bt下载| 手机在线成人精品视频网| 毛片无码免费无码播放| 国产一区二区三区内射高清|