tft每日頭條

 > 生活

 > tcp采用幾項技術

tcp采用幾項技術

生活 更新时间:2024-08-14 04:11:59

騰訊内核團隊發布了一個名為 TCPA 的項目,官方表示這原是騰訊内部使用的産品,現在正式“OPEN”出來,個人、站長和企業均可以免費使用。

tcp采用幾項技術(騰訊内核團隊發布)1

按照官方的說法,TCPA 需要配合其定制開發的内核來使用,其提供的 TCPA 和 BBR 測試對比報告顯示,TCPA 的加速效果優于 BBR。

tcp采用幾項技術(騰訊内核團隊發布)2

tcp采用幾項技術(騰訊内核團隊發布)3

tcp采用幾項技術(騰訊内核團隊發布)4

TCPA是騰訊内部使用的單邊擁塞算法,對TCP協議棧進行了參數,代碼邏輯層的優化,以達到客戶端訪問的快速的體驗。

這個是TCPA,發送數據包和接收應答包後的處理邏輯圖。一共包括9個模塊。應用程序通過sendfile,write等發送的後,交由内核的數據包構建模塊來處理,最終生成一個個SKB并放入發送隊列中。平緩發送模塊,根據擁塞控制模塊所産生的發送速度/發送窗口值來平緩地将這些數據(無論是新數據,還是重傳數據)發送到網絡中,本身并不會決策發送的速率,隻會按照給定的速度/發送窗口來執行。超時模塊用來決策哪些數據包超時,并重傳,最終會交給平緩發送模塊來發送。Probe探測模塊,是依據網絡的特定需要,構造一些數據包來探測網絡的質量情況。發送是交給平緩發送模塊來發送,接收到的應答包,會将Probe應答包交給Probe模塊來處理。收到應答包後,如果有SACK則單獨處理SACK,SACK的處理邏輯比較複雜,需要知道哪些數據包被應答,哪些未被應答,需要對重傳隊列進行标記。并且也會根據sack中的應答來判斷哪些報文丢包了,當前網絡中的RTT值變化等。這裡會給丢包檢測模塊,擁塞控制模塊提供判斷信息。

丢包檢測模塊,用來判斷哪些數據包已經丢棄,比如快速重傳,RACK等算法。這裡隻去标記丢棄的報文,具體的重傳由重傳包處理模塊來執行。

擁塞控制算法,用來判斷當前網絡鍊接情況,并據此來決定當前發送的速度和發送窗口值。不同的擁塞算法所依賴的判斷信息不同。 窗口的增減均由這裡來判斷。這裡會依賴SACK模塊,丢包檢測模塊,RTO超時模塊,probe模塊等給予關鍵信息。

重傳數據包模塊和新數據發送模塊相對比較簡單,将數據整理好後,交給平緩發送模塊來發送。

所以,總的來說,TCPA的修改不僅僅是對擁塞算法的修改,也對收發包的整個邏輯進行了重構。對于系統已有的功能,騰訊額外還提供了可調整的參數接口,供使用。比如小表中列舉了部分調整的參數:

net.core.wmem_max = 3276800

net.ipv4.tcp_fack = 0

net.ipv4.tcp_init_cwnd = 10

net.ipv4.tcp_loss_init_cwnd = 1

net.ipv4.tcp_mem = 379479 505972 758958

net.ipv4.tcp_metrics_minrtt = 0

net.ipv4.tcp_rto_max = 120

net.ipv4.tcp_rto_min = 200

net.ipv4.tcp_timestamps = 1

net.ipv4.tcp_wmem = 4096 16384 4194304

△TCPA 簡介

官方表示定制的内核基于 RHEL7.4 源碼而開發,那麼問題來了,公告中的 "OPEN" 是什麼意思呢?

閱讀全文之後,筆者終于理解 OPEN 一詞所代表的意義了 —— 也就是不開源的另一種說法。因為通篇公告都沒提到開源,也沒看到提供了源碼,隻是提供了二進制包的下載。

但問題是,我們都知道 RHEL 使用的是 GPL 開源許可證。既然基于 RHEL 開發,那麼按照 GPL 協議,其内核是不是也應該開源?

tcp采用幾項技術(騰訊内核團隊發布)5

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved