日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

tcp协议栈优化1-增加TCP初始拥塞窗口 ===》流氓的方式

發布時間:2023/12/18 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tcp协议栈优化1-增加TCP初始拥塞窗口 ===》流氓的方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
看linux3.0 network代碼,發現TCP initcwd(初始擁塞窗口)默認已經調為10,同時,TCP rcvwnd初始接收窗口也已調為10。
? ? ? ?tcp initcwd初始化函數---函數tcp_init_cwnd(),宏TCP_INIT_CWND
? ? ? ?tcp rcvwnd初始化函數 ---函數tcp_select_initial_window(),宏TCP _DEFAULT_ I NIT_RCVWND
? ? ?(注:tcp允許發送包個數由 發送端擁塞窗口 和 接收端接收窗口 決 定, 接收 端通過tcp頭部window字段通知發送端接收窗口大小)
? ? ? ?linux為什么要調大tcp initcwnd,請參見http://lwn.net/Articles/427104/ 和 http://tools.ietf.org/html/draft-hkchu-tcpm-initcwnd-01;
? ? ?(注:wf和我在09年已經進行了研究,并在線上業務中調大initcwnd,當時覺得該參數適用場景不具普遍性;沒想到google能對其進行量化的研究,并推動IETF接受該調整,值得我們學習)

? ? ? ? ?國內外 互聯網公司(google/baidu/taobao等)已在合適業務中調大了TCP初始擁塞窗口,調大有2種方法:
? ? ? ?1. ip route方式, ip route?change default via <gateway> dev eth0?initcwnd?<iw>(記得2.6.32版本以上支持),該方式僅對通過該路由的TCP連接有效;
????2. sysctl參數,自己在內核中增加一個控制initcwnd的proc參數,該方式對于所有tcp連接有效;(我們當年采用了該方式)
? ? ?
? ? ? ? 適用場景 :短連接+發送數據量小(擁塞控制尚處于slowstart階段,傳輸就完 畢了)
? ? ? ? 效果 :我知道的幾個應用效果為傳輸速度可以提高10%~20%;但有好處也有壞處,TCP重傳率會增加(初始擁塞窗口越大,重傳率越高)

? ? ? ? 代碼研究:
? ? ? ?我們將分析“tcp三次握手”過程中,客戶端和服務端 擁塞窗口(snd_cwnd)的變化 ;,。
? ? ? ? 客戶端
? ? ? ? ? ? ? ? 創建soc ket - 函數tcp_v4_init_sock - snd_cwnd=2;
? ? ? ? ? ? ? ?發送syn - 函數tcp_v4_connect - snd_cwnd=2? 沒有變化;
? ? ? ? ? ? ? ?收到syn_ack發送ack - 函數tcp_rcv_synsent_state_process 調用 函數tcp_init_metrics 調用 snd_cwnd = tcp_init_cwnd(tp, dst);
? ? ? ? ? 服務端:
? ? ? ? ? ? ? ?linux tcp/ip協議棧中 服務端收到三次握手的最后一個ack,才會創建socket;
? ? ? ? ? ? ? ?收到ack - 函數tcp_create_openreq_child中創建socket,snd_cwnd=2 - 函數tcp_rcv_state_process,當前socket狀態為TCP_SYN_RECV,調用 函數tcp_init_metrics 調用 snd_cwnd = tcp_init_cwnd(tp, dst);
? ? ? ?
? ?? ? ?注:函數tcp_init_metrics根據socket所在路由中設置的tcp參數 初始化 該socket;同時,該路由條目所在socket在關閉時,會通過函數tcp_update_metrics,更新路由中的tcp參數(sysctl_tcp_nometrics_save為是否更新的開關);路由條目中所有的tcp參數在rtnetlink.h中定義,如RTAX_RTT/RTAX_REORDERING等。

總結

以上是生活随笔為你收集整理的tcp协议栈优化1-增加TCP初始拥塞窗口 ===》流氓的方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。