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

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

debug 吞吐量的辦法

lhl545545 ? 來源:良許Linux ? 作者:良許Linux ? 2022-09-02 09:36 ? 次閱讀

Debug 網(wǎng)絡(luò)質(zhì)量的時(shí)候,我們一般會(huì)關(guān)注兩個(gè)因素:延遲和吞吐量(帶寬)。延遲比較好驗(yàn)證,Ping 一下或者mtr[1]一下就能看出來。這篇文章分享一個(gè) debug 吞吐量的辦法。

看重吞吐量的場(chǎng)景一般是所謂的長肥管道(Long Fat Networks, LFN,rfc7323[2]). 比如下載大文件。吞吐量沒有達(dá)到網(wǎng)絡(luò)的上限,主要可能受 3 個(gè)方面的影響:

發(fā)送端出現(xiàn)了瓶頸

接收端出現(xiàn)了瓶頸

中間的網(wǎng)絡(luò)層出現(xiàn)了瓶頸

發(fā)送端出現(xiàn)瓶頸一般的情況是 buffer 不夠大,因?yàn)榘l(fā)送的過程是,應(yīng)用調(diào)用 syscall,將要發(fā)送的數(shù)據(jù)放到 buffer 里面,然后由系統(tǒng)負(fù)責(zé)發(fā)送出去。如果 buffer 滿了,那么應(yīng)用會(huì)阻塞住(如果使用 block 的 API 的話),直到 buffer 可用了再繼續(xù) write,生產(chǎn)者和消費(fèi)者模式。

fc83cbec-2a4e-11ed-ba43-dac502259ad0.png

發(fā)送端出現(xiàn)瓶頸一般都比較好排查,甚至通過應(yīng)用的日志看何時(shí)阻塞住了即可。大部分情況都是第 2,3 種情況,比較難以排查。這種情況發(fā)生在,發(fā)送端的應(yīng)用已經(jīng)將內(nèi)容寫入到了系統(tǒng)的 buffer 中,但是系統(tǒng)并沒有很快的發(fā)送出去。

TCP 為了優(yōu)化傳輸效率(注意這里的傳輸效率,并不是單純某一個(gè) TCP 連接的傳輸效率,而是整體網(wǎng)絡(luò)的效率),會(huì):

保護(hù)接收端,發(fā)送的數(shù)據(jù)不會(huì)超過接收端的 buffer 大小 (Flow control)。數(shù)據(jù)發(fā)送到接受端,也是和上面介紹的過程類似,kernel 先負(fù)責(zé)收好包放到 buffer 中,然后上層應(yīng)用程序處理這個(gè) buffer 中的內(nèi)容,如果接收端的 buffer 過小,那么很容易出現(xiàn)瓶頸,即應(yīng)用程序還沒來得及處理就被填滿了。那么如果數(shù)據(jù)繼續(xù)發(fā)過來,buffer 存不下,接收端只能丟棄。

保護(hù)網(wǎng)絡(luò),發(fā)送的數(shù)據(jù)不會(huì) overwhelming 網(wǎng)絡(luò) (Congestion Control, 擁塞控制), 如果中間的網(wǎng)絡(luò)出現(xiàn)瓶頸,會(huì)導(dǎo)致長肥管道的吞吐不理想;

對(duì)于接收端的保護(hù),在兩邊連接建立的時(shí)候,會(huì)協(xié)商好接收端的 buffer 大小 (receiver window size, rwnd), 并且在后續(xù)的發(fā)送中,接收端也會(huì)在每一個(gè) ack 回包中報(bào)告自己剩余和接受的 window 大小。這樣,發(fā)送端在發(fā)送的時(shí)候會(huì)保證不會(huì)發(fā)送超過接收端 buffer 大小的數(shù)據(jù)。(意思是,發(fā)送端需要負(fù)責(zé),receiver 沒有 ack 的總數(shù),不會(huì)超過 receiver 的 buffer.)

fc9ec8d4-2a4e-11ed-ba43-dac502259ad0.png

對(duì)于網(wǎng)絡(luò)的保護(hù),原理也是維護(hù)一個(gè) Window,叫做 Congestion window,擁塞窗口,cwnd, 這個(gè)窗口就是當(dāng)前網(wǎng)絡(luò)的限制,發(fā)送端不會(huì)發(fā)送超過這個(gè)窗口的容量(沒有 ack 的總數(shù)不會(huì)超過 cwnd)。

怎么找到這個(gè) cwnd 的值呢?

這個(gè)就是關(guān)鍵了,默認(rèn)的算法是 cubic, 也有其他算法可以使用,比如 Google 的BBR[3].

主要的邏輯是,慢啟動(dòng)(Slow start), 發(fā)送數(shù)據(jù)來測(cè)試,如果能正確收到 receiver 那邊的 ack,說明當(dāng)前網(wǎng)絡(luò)能容納這個(gè)吞吐,將 cwnd x 2,然后繼續(xù)測(cè)試。直到下面一種情況發(fā)生:

發(fā)送的包沒有收到 ACK

cwnd 已經(jīng)等于 rwnd 了

第 2 點(diǎn)很好理解,說明網(wǎng)絡(luò)吞吐并不是一個(gè)瓶頸,瓶頸是在接收端的 buffer 不夠大。cwnd 不能超過 rwnd,不然會(huì) overload 接收端。

對(duì)于第 1 點(diǎn),本質(zhì)上,發(fā)送端是用丟包來檢測(cè)網(wǎng)絡(luò)狀況的,如果沒有發(fā)生丟包,表示一切正常,如果發(fā)生丟包,說明網(wǎng)絡(luò)處理不了這個(gè)發(fā)送速度,這時(shí)候發(fā)送端會(huì)直接將 cwnd 減半。

但實(shí)際造成第 1 點(diǎn)的情況并不一定是網(wǎng)絡(luò)吞吐瓶頸,而可能是以下幾種情況:

網(wǎng)絡(luò)達(dá)到了瓶頸

網(wǎng)絡(luò)質(zhì)量問題丟包

中間網(wǎng)絡(luò)設(shè)備延遲了包的送達(dá),導(dǎo)致發(fā)送端沒有在預(yù)期時(shí)間內(nèi)收到 ACK

2 和 3 原因都會(huì)造成 cwnd 下降,無法充分利用網(wǎng)絡(luò)吞吐。

以上就是基本的原理,下面介紹如何定位這種問題。

rwnd 查看方式

這個(gè) window size 直接就在 TCP header 里面,抓下來就能看這個(gè)字段。

fcaf21c0-2a4e-11ed-ba43-dac502259ad0.png

但是真正的 window size 需要乘以 factor, factor 是在TCP 握手節(jié)點(diǎn)通過 TCP Options 協(xié)商的[4]。所以如果分析一條 TCP 連接的 window size,必須抓到握手階段的包,不然就不可以知道協(xié)商的 factor 是多少。

fcd64ff2-2a4e-11ed-ba43-dac502259ad0.png

cwnd 查看方式

Congestion control 是發(fā)送端通過算法得到的一個(gè)動(dòng)態(tài)變量,會(huì)試試調(diào)整,并不會(huì)體現(xiàn)在協(xié)議的傳輸數(shù)據(jù)中。所以要看這個(gè),必須在發(fā)送端的機(jī)器上看。

Linux 中可以使用ss -i選項(xiàng)將 TCP 連接的參數(shù)都打印出來。

fcfa4da8-2a4e-11ed-ba43-dac502259ad0.png

這里展示的單位是TCP MSS.[5]即實(shí)際大小是 1460bytes * 10.

Wireshark 分析

Wireshark 提供了非常使用的統(tǒng)計(jì)功能,可以讓你一眼就能看出當(dāng)前的瓶頸是發(fā)生在了哪里。但是第一次打開這個(gè)圖我不會(huì)看,一臉懵逼,也沒查到資料要怎么看。好在我同事[6]會(huì),他把我教會(huì)了,我在這里記錄一下,把你也教會(huì)。

首先,打開的方式如下:

fd1ef158-2a4e-11ed-ba43-dac502259ad0.png

然后你會(huì)看到如下的圖。

fd3ab708-2a4e-11ed-ba43-dac502259ad0.png

首先需要明確,tcptrace 的圖表示的是單方向的數(shù)據(jù)發(fā)送,因?yàn)?tcp 是雙工協(xié)議,兩邊都能發(fā)送數(shù)據(jù)。其中最上面寫了你當(dāng)前在看的圖數(shù)據(jù)是從 10.0.0.1 發(fā)送到 192.168.0.1 的,然后按右下角的按鈕可以切換看的方向。

X 軸表示的是時(shí)間,很好理解。

然后理解一下 Y 軸表示的 Sequence Number, 就是 TCP 包中的 Sequence Number,這個(gè)很關(guān)鍵。圖中所有的數(shù)據(jù),都是以 Sequence Number 為準(zhǔn)的。

所以,你如果看到如上圖所示,那么說明你看反了,因?yàn)閿?shù)據(jù)的 Sequence Number 并沒有增加過,說明幾乎沒有發(fā)送過數(shù)據(jù),需要點(diǎn)擊 Switch Direction。

fd5cec38-2a4e-11ed-ba43-dac502259ad0.png

這就對(duì)了,可以看到我們傳輸?shù)?Sequence Number 在隨著時(shí)間增加而增加。

這里面有 3 條線,含義如下:

fd72b4fa-2a4e-11ed-ba43-dac502259ad0.png

除此之外,另外還有兩種線:

fd911242-2a4e-11ed-ba43-dac502259ad0.png

需要始終記住的是 Y 軸是 Sequence Number,紅色的線表示 SACK 的線表示這一段 Sequence Number 我已經(jīng)收到了,然后配合黃色線表示 ACK 過的 Sequence Number,那么發(fā)送端就會(huì)知道,在中間這段空擋,包丟了,紅色線和黃色線縱向的空白,是沒有被 ACK 的包。所以,需要重新傳輸。而藍(lán)色的線就是表示又重新傳輸了一遍。

學(xué)會(huì)了看這些圖,我們可以認(rèn)識(shí)幾種常見的 pattern:

丟包

fda60e7c-2a4e-11ed-ba43-dac502259ad0.png

很多紅色 SACK,說明接收端那邊重復(fù)在說:中間有一個(gè)包我沒有收到,中間有一個(gè)包我沒有收到。

吞吐受到接收 window size 限制

fdc81dbe-2a4e-11ed-ba43-dac502259ad0.png

從這個(gè)圖可以看出,黃色的線(接收端一 ACK)一上升,藍(lán)色就跟著上升(發(fā)送端就開始發(fā)),直到填滿綠色的線(window size)。說明網(wǎng)絡(luò)并不是瓶頸,可以調(diào)大接收端的 buffer size.

吞吐受到網(wǎng)絡(luò)質(zhì)量限制

fdd7c354-2a4e-11ed-ba43-dac502259ad0.png

從這張圖中可以看出,接收端的 window size 遠(yuǎn)遠(yuǎn)不是瓶頸,還有很多空閑。

fdf4cfc6-2a4e-11ed-ba43-dac502259ad0.png

放大可以看出,中間有很多丟包和重傳,并且每次只發(fā)送一點(diǎn)點(diǎn)數(shù)據(jù),這說明很有可能是 cwnd 太小了,受到了擁塞控制算法的限制。

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7139

    瀏覽量

    89576
  • 帶寬
    +關(guān)注

    關(guān)注

    3

    文章

    953

    瀏覽量

    41077
  • 吞吐量
    +關(guān)注

    關(guān)注

    0

    文章

    47

    瀏覽量

    12354
  • TCP
    TCP
    +關(guān)注

    關(guān)注

    8

    文章

    1378

    瀏覽量

    79301

原文標(biāo)題:如何使用 Wireshark 分析 TCP 吞吐瓶頸

文章出處:【微信號(hào):良許Linux,微信公眾號(hào):良許Linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何提高CYBT-243053-02吞吐量

    你好我們一直在使用“EZ-Serial Firmware: v1.4.13.13 Sep 22 2023 10:24:41”測(cè)試“CYBT-243053-02”,我們得到的吞吐量比 PUART 高
    發(fā)表于 02-27 06:56

    網(wǎng)卡吞吐量測(cè)試解決方案

    隨著互聯(lián)網(wǎng)的迅速發(fā)展,計(jì)算機(jī)日益成為人們生活中不可或缺的部分。伴隨著網(wǎng)絡(luò)業(yè)務(wù)的豐富,用戶對(duì)計(jì)算機(jī)網(wǎng)卡的要求也越來也高。如何對(duì)計(jì)算機(jī)網(wǎng)卡吞吐量進(jìn)行合理的測(cè)試,已越來越成為眾多計(jì)算機(jī)網(wǎng)卡生產(chǎn)廠家日益關(guān)注
    發(fā)表于 12-23 11:07

    無線測(cè)試之吞吐量測(cè)試

    無線網(wǎng)絡(luò)測(cè)試之無線吞吐量測(cè)試方法、步驟
    發(fā)表于 06-25 08:40

    iperf固定吞吐量測(cè)試如何設(shè)置

    我有兩個(gè)CYW43907演示,并下載控制臺(tái)項(xiàng)目。我想使用IpFF命令來測(cè)試固定的UDP吞吐量。示例:IPEF-C 192.1680.1-P 5001 -I 2 -T 30 -U-B 60M,但客戶端
    發(fā)表于 11-06 14:09

    如何計(jì)算延遲和吞吐量

    如何計(jì)算延遲和吞吐量?在ISE時(shí)序報(bào)告中,我們發(fā)現(xiàn)一個(gè)名為“最大組合路徑延遲”的參數(shù)是否與最大時(shí)鐘頻率有關(guān)?
    發(fā)表于 03-19 08:55

    提高BLE吞吐量的可行辦法

    提高BLE吞吐量的可行辦法如何實(shí)現(xiàn)更快的BLE吞吐量
    發(fā)表于 01-18 06:26

    如何通過觸發(fā)模型提高吞吐量

    如何通過觸發(fā)模型提高吞吐量
    發(fā)表于 05-11 07:00

    防火墻術(shù)語-吞吐量

    防火墻術(shù)語-吞吐量  術(shù)語名稱:吞吐量 術(shù)語解釋:網(wǎng)絡(luò)中的數(shù)據(jù)是由一個(gè)個(gè)數(shù)據(jù)包組成,防火
    發(fā)表于 02-24 11:06 ?1548次閱讀

    MIMO天線增益不同引起的吞吐量波動(dòng)

    近期在對(duì)一款2×2 MIMO無線產(chǎn)品的測(cè)試中,發(fā)現(xiàn)了一件有意思的事情,當(dāng)兩只天線的增益不一致時(shí),會(huì)導(dǎo)致吞吐量波動(dòng)
    發(fā)表于 06-16 09:22 ?2956次閱讀
    MIMO天線增益不同引起的<b class='flag-5'>吞吐量</b>波動(dòng)

    debug 吞吐量辦法

    Debug 網(wǎng)絡(luò)質(zhì)量的時(shí)候,我們一般會(huì)關(guān)注兩個(gè)因素:延遲和吞吐量(帶寬)。延遲比較好驗(yàn)證,Ping 一下或者 mtr[1] 一下就能看出來。這篇文章分享一個(gè) debug 吞吐量
    的頭像 發(fā)表于 08-23 09:17 ?1001次閱讀

    iperf吞吐量的測(cè)試流程

    iperf吞吐量測(cè)試指南
    發(fā)表于 04-03 15:40 ?2次下載

    兆易創(chuàng)新GD32W51x吞吐量及場(chǎng)景功耗測(cè)試指南

    兆易創(chuàng)新GD32W51x吞吐量及場(chǎng)景功耗測(cè)試指南GD32W51x吞吐量及場(chǎng)景功耗測(cè)試指南
    發(fā)表于 10-19 17:26 ?5次下載

    如何顯著提高ATE電源吞吐量

    作為一名測(cè)試工程師,你的工作并不容易。降低成本和提高系統(tǒng)吞吐量的壓力一直存在。本文中,我們將討論影響系統(tǒng)吞吐量的關(guān)鍵因素以及如何降低ATE測(cè)試成本。
    的頭像 發(fā)表于 11-08 14:59 ?756次閱讀
    如何顯著提高ATE電源<b class='flag-5'>吞吐量</b>?

    影響ATE電源系統(tǒng)吞吐量的關(guān)鍵因素

    從串行設(shè)備測(cè)試改變?yōu)椴⑿性O(shè)備測(cè)試可以顯著地增加測(cè)試系統(tǒng)吞吐量。測(cè)試執(zhí)行活動(dòng)的大部分可能涉及使用DC電源設(shè)置條件和進(jìn)行測(cè)量。配置測(cè)試系統(tǒng),使其能夠使用多個(gè)直流電源同時(shí)對(duì)多個(gè)設(shè)備執(zhí)行測(cè)試,是顯著提高測(cè)試吞吐量的一種經(jīng)濟(jì)有效的方法。
    發(fā)表于 11-29 12:36 ?476次閱讀
    影響ATE電源系統(tǒng)<b class='flag-5'>吞吐量</b>的關(guān)鍵因素

    TMS320VC5510 HPI吞吐量和優(yōu)化

    電子發(fā)燒友網(wǎng)站提供《TMS320VC5510 HPI吞吐量和優(yōu)化.pdf》資料免費(fèi)下載
    發(fā)表于 10-16 09:35 ?0次下載
    TMS320VC5510 HPI<b class='flag-5'>吞吐量</b>和優(yōu)化
    主站蜘蛛池模板: 狠狠色96视频 | 日本三级香港三级人妇99视 | 激情三级视频 | 美女国产在线观看免费观看 | 在线免费视频一区二区 | 女人被狂躁视频免费网站 | 天天看片中文字幕 | 神马影院午夜在线 | 男人j进入女人j在线视频 | 九九精品在线 | 亚洲天堂网站 | 东京毛片| 国产精品嫩草影院在线播放 | 在线观看高清视频 | 欧美一级精品 | 欧洲性freefree大白屁股 | 波多野结衣久久国产精品 | 天天色天天射天天操 | 明日花绮罗snis-862在线播放 | 优优国产在线视频 | 日本bt| 久久国产乱子伦精品免费看 | 激情综合网色播五月 | 在线国产高清 | 亚洲1314| 欧美一区福利 | 欧美色综合高清免费 | 亚洲综合激情另类专区 | 国产精品高清一区二区三区 | 69pao强力打造免费高速 | 特级无码毛片免费视频尤物 | 日本黄色站 | 黄色大片毛片 | 靓装爱神12丝袜在线播放 | 男人j进入女人j视频大全 | 激情九月婷婷 | 欧美高清在线播放 | 天堂8资源在线官网资源 | 免费看欧美一级特黄a大片 免费看欧美一级特黄a大片一 | 久久青草免费免费91线频观看 | 欧美456|