TCP 網(wǎng)絡(luò)測(cè)試工具

最近做了一些網(wǎng)絡(luò)性能測(cè)試的工作,對(duì)測(cè)試工作有所了解鸠信。本文簡(jiǎn)單記錄下用到的工具及使用方法纵寝,工具的詳細(xì)原理日后有機(jī)會(huì)再做剖析總結(jié)。

一星立、iperf3

iperf 3 是一個(gè)網(wǎng)絡(luò)性能測(cè)試工具爽茴。可以測(cè)試udp 和 tcp 網(wǎng)絡(luò)性能绰垂。

安裝

帶寬測(cè)試

iperf3 是C/S 架構(gòu)模式室奏,測(cè)試時(shí),需同時(shí)在 server 端和 client 端分別啟動(dòng)劲装。

1. 啟動(dòng) server 端
iperf3 -s -p 5201
2. 啟動(dòng) client 端
iperf3 -c 192.168.1.1 -p 5201 -t 30 -i 0.1 -f K
3. 查看結(jié)果
Connecting to host 9.134.117.252, port 5002
[  4] local 9.134.14.225 port 60744 connected to 9.134.117.252 port 5002
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-0.10   sec   301 KBytes  3004 KBytes/sec    3   29.0 KBytes       
[  4]   0.10-0.20   sec   185 KBytes  1847 KBytes/sec    1   19.3 KBytes       
[  4]   0.20-0.30   sec  99.3 KBytes   993 KBytes/sec    3   6.89 KBytes       
[  4]   0.30-0.40   sec  62.1 KBytes   620 KBytes/sec    3   2.76 KBytes       
[  4]   0.40-0.50   sec  49.6 KBytes   496 KBytes/sec    0   9.65 KBytes       
[  4]   0.50-0.60   sec  66.2 KBytes   662 KBytes/sec    1   9.65 KBytes       
[  4]   0.60-0.70   sec  71.7 KBytes   717 KBytes/sec    1   9.65 KBytes       
[  4]   0.70-0.80   sec  56.5 KBytes   565 KBytes/sec    4   4.14 KBytes       
[  4]   0.80-0.90   sec  57.9 KBytes   579 KBytes/sec    0   9.65 KBytes       
[  4]   0.90-1.00   sec  86.9 KBytes   869 KBytes/sec    1   6.89 KBytes       
[  4]   1.00-1.10   sec  75.8 KBytes   758 KBytes/sec    2   4.14 KBytes       
[  4]   1.10-1.20   sec  70.3 KBytes   703 KBytes/sec    0   11.0 KBytes       
4. 修改擁塞算法(linux only)

4.1 查看系統(tǒng)可用的擁塞算法

[root@VM_14_225_centos ~]# cat /proc/sys/net/ipv4/tcp_allowed_congestion_control
reno cubic

或者

[root@VM_14_225_centos ~]# sysctl net.ipv4.tcp_available_congestion_control
net.ipv4.tcp_available_congestion_control = reno cubic

4.2 查看當(dāng)前使用的擁塞算法

[root@VM_14_225_centos ~]# cat /proc/sys/net/ipv4/tcp_congestion_control
cubic

4.3 修改擁塞算法

[root@VM_14_225_centos ~]# sysctl net.ipv4.tcp_congestion_control=reno 
net.ipv4.tcp_congestion_control = reno

或者使用 iperf3 -C 參數(shù)指定

-C, --congestion <algo>   set TCP congestion control algorithm (Linux and FreeBSD only)

二胧沫、Traffic Control (TC)

tc 為流控工具,可以控制數(shù)據(jù)流的loss占业、BindWidth绒怨、rtt等。
流控腳本如下:

TC=tc
INTERFACE=eth1
FILTER_IP=192.168.0.3
TOTAL_BAND_WIDTH=400Mbit
BAND_WIDTH=40Mbit
DELAY=100ms
LOSS_RATE=0.01%

tc_start() {
    # add htb queue
    $TC qdisc add dev $INTERFACE root handle 1: htb default 30
    # add root class
    $TC class add dev $INTERFACE parent 1: classid 1:1 htb rate $TOTAL_BAND_WIDTH ceil $TOTAL_BAND_WIDTH
    $TC class add dev $INTERFACE parent 1:1 classid 1:10 htb rate $BAND_WIDTH ceil $BAND_WIDTH
    $TC class add dev $INTERFACE parent 1:1 classid 1:20 htb rate $TCP_BAND_WIDTH ceil $TCP_BAND_WIDTH
    $TC class add dev $INTERFACE parent 1:1 classid 1:30 htb rate $TOTAL_BAND_WIDTH ceil $TOTAL_BAND_WIDTH

    $TC filter add dev $INTERFACE parent 1: prio 4 protocol ip u32 match ip dst $FILTER_IP flowid 1:10
    $TC filter add dev $INTERFACE parent 1: prio 4 protocol ip u32 match ip dst $TCP_FILTER_IP flowid 1:20
    $TC qdisc add dev $INTERFACE parent 1:10 netem delay $DELAY loss $LOSS_RATE
    $TC qdisc add dev $INTERFACE parent 1:20 netem delay $TCP_DELAY loss $TCP_LOSS_RATE
}

tc_stop() {
    $TC qdisc del dev $INTERFACE root
}

tc_restart() {
    tc_stop
    sleep 1
    tc_start
}

tc_show() {
    echo ""
    echo -n "Qdisc:"
    #$TC qdisc show dev $INTERFACE
    $TC -s qdisc show dev $INTERFACE
    echo -n "Class:"
    #$TC class show dev $INTERFACE
    $TC -s class show dev $INTERFACE
    echo -n "Filter:"
    #$TC filter show dev $INTERFACE
    $TC -s filter show dev $INTERFACE
    echo ""
}

case "$1" in
  start)
    echo -n "Starting bandwidth shaping: "
    tc_start
    echo "done"
    ;;

  stop)
    echo -n "Stopping bandwidth shaping: "
    tc_stop
    echo "done"
    ;;

  restart)
    echo -n "Restarting bandwidth shaping: "
    tc_restart
    echo "done"
    ;;

  show)
    tc_show
    ;;

  *)
    echo "Usage: tc.sh {start|stop|restart|show}"
    ;;
esac

三谦疾、nat 表

TODO

四南蹂、wireshark

抓包工具

手機(jī)連接調(diào)試

使用wireshark 連接手機(jī)抓包由兩種方式

  1. 手機(jī)連電腦熱點(diǎn)后啟動(dòng)wireshark 抓包
  2. 通過數(shù)據(jù)線聯(lián)電腦后,映射虛擬網(wǎng)卡進(jìn)行抓包
    mac 平臺(tái)映射命令如下念恍,'uuid' 為 iphone 手機(jī) uuid六剥,可在 iTunes 中查到。執(zhí)行命令后峰伙,可以看到 'rvi0' 即為我們需要抓包的虛擬網(wǎng)卡疗疟。
?  ~ rvictl -s uuid

Starting device uuid [SUCCEEDED] with interface rvi0

如果遇到

rvictl: command not found

原因是新系統(tǒng)將rvictl移到了/Library/Apple/usr/bin/rvictl目錄。
解決方案

打開paths 文件词爬,`sudo vim /etc/paths`

在最后添加一行  `/Library/Apple/usr/bin/`
保存退出秃嗜,重啟命令行即可

自定義 lua 腳本解析私有協(xié)議

wireshark 支持自定義腳本解析私有協(xié)議。以 mac 平臺(tái)為例顿膨。

  1. 編寫 lua 腳本
  2. 放到 init.lua 同級(jí)目錄下锅锨,mac 平臺(tái)路徑如下
/Applications/Wireshark.app/Contents/Resources/share/wireshark/
  1. 打開 init.lua,在最后加載解析腳本
dofile(DATA_DIR.."dtd_gen.lua")
  1. 保存并重啟 wireshark 即可

五、tcpdump

參考文檔

TC 流量控制
流量控制工具TC詳細(xì)說明
Linux流量控制工具TC
Wireshark使用入門
Wireshark抓包iOS入門教程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末恋沃,一起剝皮案震驚了整個(gè)濱河市必搞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌囊咏,老刑警劉巖恕洲,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件塔橡,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡霜第,警方通過查閱死者的電腦和手機(jī)葛家,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來泌类,“玉大人癞谒,你說我怎么就攤上這事∪姓ィ” “怎么了弹砚?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長枢希。 經(jīng)常有香客問我桌吃,道長,這世上最難降的妖魔是什么苞轿? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任茅诱,我火速辦了婚禮,結(jié)果婚禮上呕屎,老公的妹妹穿的比我還像新娘让簿。我一直安慰自己敬察,他們只是感情好秀睛,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著莲祸,像睡著了一般蹂安。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上锐帜,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天田盈,我揣著相機(jī)與錄音,去河邊找鬼缴阎。 笑死允瞧,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蛮拔。 我是一名探鬼主播述暂,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼建炫!你這毒婦竟也來了畦韭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤肛跌,失蹤者是張志新(化名)和其女友劉穎艺配,沒想到半個(gè)月后察郁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡转唉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年皮钠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赠法。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鳞芙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出期虾,到底是詐尸還是另有隱情原朝,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布镶苞,位于F島的核電站喳坠,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏茂蚓。R本人自食惡果不足惜壕鹉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望聋涨。 院中可真熱鬧晾浴,春花似錦、人聲如沸牍白。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽茂腥。三九已至狸涌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間最岗,已是汗流浹背帕胆。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留般渡,地道東北人懒豹。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像驯用,于是被迫代替她去往敵國和親脸秽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • 標(biāo)簽(空格分隔): Wireshark Lua 參考:http://yoursunny.com/t/2008/Wi...
    natsumi閱讀 24,306評(píng)論 1 15
  • 個(gè)人認(rèn)為晨汹,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記豹储,這雖然只是...
    貳零壹柒_fc10閱讀 5,051評(píng)論 0 8
  • 初中散記 青春里有一群人。她們陪伴我走過幾年的校園時(shí)光淘这,在瘋癲和無奈中廝打剥扣。當(dāng)所有的愛恨在時(shí)間的隧道里消失殆盡巩剖,只...
    斷臂_哪吒閱讀 268評(píng)論 0 1
  • 風(fēng)景美的凄涼 表皮的傷已結(jié)咖 可深處還在流血 鄉(xiāng)音依舊縈繞在夢(mèng)里 故鄉(xiāng)越來越美好 但卻已回不去的故鄉(xiāng) 那里有父老鄉(xiāng)...
    日月之明angel閱讀 206評(píng)論 0 2
  • 第三章 浪子北歸終回頭 教育本身就意味著:一棵樹搖動(dòng)另一顆樹佳魔,一朵云推動(dòng)另一朵云,一個(gè)靈魂喚醒另一個(gè)靈魂晦炊。要實(shí)現(xiàn)真...
    聽說此子乃墨君閱讀 228評(píng)論 0 0