校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Packetdrill的簡明使用手冊

Packetdrill的簡明使用手冊

熱門標(biāo)簽:安陽ai電銷機(jī)器人軟件 申請400電話價格多少 涪陵商都400電話開通辦理 柳州市機(jī)器人外呼系統(tǒng)報(bào)價 廈門營銷外呼系統(tǒng)平臺 智能電話機(jī)器人坐席 云會外呼系統(tǒng) 外呼系統(tǒng)的經(jīng)營范圍 外呼系統(tǒng)不彈窗

1. Packetdrill 編譯與安裝

  1. 源碼鏈接 https://github.com/google/packetdrill.git
  2. 源碼編譯 注釋netdev.c
/* Set the offload flags to be like a typical ethernet device */
static void set_device_offload_flags(struct local_netdev *netdev)
{
#ifdef linux
// const u32 offload =
//   TUN_F_CSUM | TUN_F_TSO4 | TUN_F_TSO6 | TUN_F_TSO_ECN | TUN_F_UFO;
// if (ioctl(netdev->tun_fd, TUNSETOFFLOAD, offload) != 0)
//   die_perror("TUNSETOFFLOAD");
#endif
}

./configure && make

使用方法

./packetdrill test.pkt

test.pkt為按Packetdrill語法編寫的測試腳本。

成功:無輸出,表示腳本正確,一切都符合預(yù)期。

失敗:指出腳本的錯誤地方,以及原因。

2. Packetdrill 執(zhí)行自帶測試用例

  1. 開啟tcpdump -i any tcp port 8080抓包便于分析
  2. 這里測試快速重傳,測試環(huán)境centos7.2。
  3. 簡單說明< 表示輸入,packetdrill會構(gòu)造一個真實(shí)的數(shù)據(jù)包。>表示預(yù)期協(xié)議棧會響應(yīng)的數(shù)據(jù)包。(這個包不是由packetdrill構(gòu)造的,而是由協(xié)議棧發(fā)出的。)
// Test fast retransmit with 4 packets outstanding, receiver sending SACKs.
// In this variant the receiver supports SACK.
// Establish a connection.
0  socket(..., SOCK_STREAM, IPPROTO_TCP) = 3
+0 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
+0 bind(3, ..., ...) = 0
+0 listen(3, 1) = 0
//三次握手
+0 < S 0:0(0) win 32792 <mss 1000,sackOK,nop,nop,nop,wscale 7>
+0 > S. 0:0(0) ack 1 <...>
+.1 < . 1:1(0) ack 1 win 257
+0 accept(3, ..., ...) = 4
//系統(tǒng)調(diào)用,讓協(xié)議棧發(fā)出100個字節(jié)
// Send 1 data segment and get an ACK, so cwnd is now 4.
+0 write(4, ..., 1000) = 1000
//預(yù)期協(xié)議棧會發(fā)出psh,ack,實(shí)際上發(fā)出了ack1
//+0 > P. 1:1001(1000) ack 2
//向協(xié)議棧注入 ack
+.1 < . 1:1(0) ack 1001 win 257
// Write 4 data segments.
//系統(tǒng)調(diào)用,讓協(xié)議棧發(fā)出4000個字節(jié)
+0 write(4, ..., 4000) = 4000
//預(yù)期協(xié)議棧會發(fā)出psh,ack,實(shí)際上發(fā)出了seq 1001:2001, ack 1;seq 2001:3001, ack 1;seq 3001:4001, ack 1;[P.], seq 4001:5001, ack 1
//+0 > P. 1001:5001(4000) ack 1
// Get 3 SACKs.
//向協(xié)議棧連續(xù)發(fā)出三個ack
+.1 < . 1:1(0) ack 1001 win 257 <sack 2001:3001,nop,nop>
+0 < . 1:1(0) ack 1001 win 257 <sack 2001:4001,nop,nop>
+0 < . 1:1(0) ack 1001 win 257 <sack 2001:5001,nop,nop>
// We've received 3 duplicate ACKs, so we do a fast retransmit.
//預(yù)期協(xié)議棧會發(fā)出一次快速重傳 Seq 1001:2001,ack 1
//+0 > . 1001:2001(1000) ack 1
// Receiver ACKs all data.
//向協(xié)議棧ack,響應(yīng)所有報(bào)文的ack。
+.1 < . 1:1(0) ack 6001 win 257
4. 將fr-4pkt-sack-linux.pkt 中的修改如下。
+0 > P. 1:1001(1000) ack 2    +0 > P. 1:1001(1000) ack 1
//+0 > P. 1001:5001(4000) ack 1  
+0 > . 1001:2001(1000) ack 1
+0 > . 2001:3001(1000) ack 1
+0 > . 3001:4001(1000) ack 1
+0 > P. 4001:5001(1000) ack 1

[注解:如果執(zhí)行packetdrill自帶的用例出錯,一般是協(xié)議棧發(fā)出的包沒有達(dá)到預(yù)期的包,先將預(yù)期>那部分干掉,然后再執(zhí)行測試用例,然后通過抓包分析預(yù)期結(jié)果。通常是因?yàn)槿挝帐謒ss 的限制]

  1. 執(zhí)行: ../../../packetdrill fr-4pkt-sack-linux.pkt,無出錯。
  2. 抓包可以看到一下結(jié)果:三次重復(fù)ack,則實(shí)施快速重傳。達(dá)到預(yù)期效果。
// 自己構(gòu)造包實(shí)現(xiàn)三次重復(fù)的ack 1001.
07:57:36.469280 IP 192.0.2.1.36840 > TENCENT64.site.webcache: Flags [.], ack 1001, win 257, options [sack 1 {2001:3001},nop,nop], length 0
07:57:36.469836 IP 192.0.2.1.36840 > TENCENT64.site.webcache: Flags [.], ack 1001, win 257, options [sack 1 {2001:4001},nop,nop], length 0
07:57:36.470349 IP 192.0.2.1.36840 > TENCENT64.site.webcache: Flags [.], ack 1001, win 257, options [sack 1 {2001:5001},nop,nop], length 0
// 協(xié)議棧發(fā)起快速重傳。Seq 1001:2001,ack 1,1000
07:57:36.470376 IP TENCENT64.site.webcache > 192.0.2.1.36840: Flags [.], seq 1001:2001, ack 1, win 229, length 1000

3. Packetdrill 解讀自帶測試用例說明

這里主要說明packetdrill的基本語法。

腳本中可以包含四種語句:數(shù)據(jù)包、系統(tǒng)調(diào)用、shell命令、python語句。
每條語句都必須以時間戳開頭,指明它的執(zhí)行時間。

  • Packets

數(shù)據(jù)包分為:輸入的數(shù)據(jù)包、輸出的數(shù)據(jù)包,格式類似于tcpdump的,
支持TCP、UDP、ICMP,以及TCP的大部分選項(xiàng)。

輸入數(shù)據(jù)包(<表示輸入):packetdrill會構(gòu)造一個真實(shí)的數(shù)據(jù)包,然后注入?yún)f(xié)議棧。

例子:

0.100 < S 0:0(0) win 32792 <mss 1000, nop, nop, sackOK, nop, wscale 7>
0.250 < [1:1461(1460)] icmp unreachable frag_needed mtu 1200

輸出數(shù)據(jù)包(>表示輸出):packetdrill會檢查協(xié)議棧是不是真的發(fā)出了這樣一個包。

+0 > udp (1472)
  • System Calls

系統(tǒng)調(diào)用的格式類似于strace。
對于每個系統(tǒng)調(diào)用,packetdrill會在指定的時間給予執(zhí)行,并檢查返回值是否和預(yù)期的一樣。系統(tǒng)調(diào)用的主要是應(yīng)用于場景構(gòu)造,已經(jīng)非測試端的數(shù)據(jù)發(fā)送和接收。

常見的系統(tǒng)調(diào)用例子:
系統(tǒng)調(diào)用

connect(3, ..., ...) = -1 EINPROGRESS (Operation now in progress)  //客戶端連接服務(wù)器
getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0  //獲取scoketopt
fcntl(3, F_SETFL, O_RDWR) = 0  //Fcntl設(shè)置
ioctl(4, SIOCINQ, [1000]) = 0  //Ioctl設(shè)置
read(3, ..., 1024) = 785  //讀取數(shù)據(jù)
write(3, ..., 57) = 57 //寫入數(shù)據(jù)
close(3) = 0  //關(guān)閉連接
socket(..., SOCK_STREAM, IPPROTO_TCP) = 3  //Tcp socket
setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0 //設(shè)置地址復(fù)用
bind(3, ..., ...) = 0  //綁定端口
listen(3, 1) = 0  //監(jiān)聽端口
accept(3, ..., ...) = 4 //接受連接
  • shell腳本用法

常見用法是用shell腳本設(shè)置內(nèi)核參數(shù)或者調(diào)用shell命令統(tǒng)計(jì)tcp信息。設(shè)置

例子:

+0 `sysctl -q net.ipv4.tcp_timestamps=0`
+0 `ss -4 -n state SYN-RECV | grep 192.168.0.1:8080 > /dev/null`
  • python腳本的用法

常見用法是使用python的assert斷言tcp_info的里面的信息,是否符合預(yù)期。

例子:

0.310 %{
assert tcpi_reordering == 3
assert tcpi_unacked == 10
assert tcpi_sacked == 6
assert tcpi_ca_state == TCP_CA_Recovery
}%
  • 時間戳

每條語句都必須以時間戳開頭,指明它的執(zhí)行時間,或者預(yù)期事件的發(fā)生時間。測試case有可能是timing的問題導(dǎo)致測試case無法通過。

時間戳可以使用多種格式:

Absolute(絕對時間):0.75
Relative(相對時間):+0.2
Wildcard(任意時間):*
Range(絕對時間區(qū)間):0.750~0.900
Relative Range(相對時間區(qū)間):+0.1~+0.2
Loose(允許誤差值):--tolerance_usecs=800
Blocking(阻塞時間區(qū)間):0.750...0.900

如果在規(guī)定的時間戳,對應(yīng)的事件并沒有發(fā)生就會報(bào)錯,并告知該事件的實(shí)際發(fā)生時間。

+1.0 > S. 0:0(0) ack 1 <mss 1460,nop,nop,sackOK,nop,wscale 6>

預(yù)期在1s以后TCP應(yīng)該發(fā)送一個SYNACK包。

在實(shí)際的使用中,一般指定–tolerance_usecs=405000,也就是允許4ms的時間誤差。

4. Packetdrill 實(shí)現(xiàn)基本場景構(gòu)造測試

場景的場景構(gòu)造是客戶端場景或者是服務(wù)器場景。具體包怎么構(gòu)造,具體看packetdrill的自帶的測試用例。

1.服務(wù)端場景

構(gòu)造服務(wù)器端場景:數(shù)據(jù)包輸入端是客戶端。數(shù)據(jù)包輸出端是系統(tǒng)調(diào)用,充當(dāng)服務(wù)端。

// Establish a connection.
0.000 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3
0.000 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
0.000 bind(3, ..., ...) = 0
0.000 listen(3, 1) = 0
0.000...0.200 accept(3, ..., ...) = 4
0.100 < S 0:0(0) win 32792 <mss 1000,nop,wscale 7>
0.100 > S. 0:0(0) ack 1 <mss 1460,nop,wscale 6>
0.200 < . 1:1(0) ack 1 win 257
//服務(wù)器端調(diào)用系統(tǒng)調(diào)用,預(yù)期發(fā)出2段數(shù)據(jù)包。
0.300 write(4, ..., 2000) = 2000
//0.300 > P. 1:2001(2000) ack 1
0.300 > . 1:1001(1000) ack 1
0.300 > P. 1001:2001(1000) ack 1

1.客戶端場景構(gòu)造

構(gòu)造服務(wù)器端場景:數(shù)據(jù)包輸入端是服務(wù)端。數(shù)據(jù)包輸出端是系統(tǒng)調(diào)用,充當(dāng)客戶端。

// Create a socket and set it to non-blocking.
0.000 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3
0.000 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
0.000 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
// Establish connection and verify that there was no error.
0.100 connect(3, ..., ...) = -1 EINPROGRESS (Operation now in progress)
0.100 > S 0:0(0) <mss 1460,sackOK,TS val 100 ecr 0,nop,wscale 6>
0.200 < S. 0:0(0) ack 1 win 5792 <mss 1460,sackOK,TS val 700 ecr 100,nop,wscale 7>
0.200 > . 1:1(0) ack 1 <nop,nop,TS val 200 ecr 700>
//客戶端調(diào)用系統(tǒng)調(diào)用,預(yù)期發(fā)出http請求。
// Send the HTTP request.
0.200 write(3, ..., 57) = 57
0.200 > P. 1:58(57) ack 1 <nop,nop,TS val 200 ecr 700>
0.300 < . 1:1(0) ack 58 win 92 <nop,nop,TS val 800 ecr 200>

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

標(biāo)簽:南充 福州 撫順 綏化 晉城 蕪湖 孝感 巴中

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Packetdrill的簡明使用手冊》,本文關(guān)鍵詞  Packetdrill,的,簡明,使用手冊,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Packetdrill的簡明使用手冊》相關(guān)的同類信息!
  • 本頁收集關(guān)于Packetdrill的簡明使用手冊的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    一区二区在线观看免费视频播放| 国产精品美女一区二区三区| 亚洲日本电影在线| 久久狠狠亚洲综合| 欧美天堂亚洲电影院在线播放 | 国内不卡的二区三区中文字幕 | 成人黄色在线视频| 欧美一级高清片| 樱花草国产18久久久久| 成人午夜电影网站| 精品国产1区二区| 午夜欧美大尺度福利影院在线看| a亚洲天堂av| 精品三级av在线| 日韩精品一二区| 91免费看片在线观看| 欧美mv和日韩mv国产网站| 亚洲国产精品久久人人爱蜜臀 | 亚洲www啪成人一区二区麻豆| 国产91在线|亚洲| 精品国免费一区二区三区| 天天综合网天天综合色| 91一区在线观看| 国产精品短视频| 成人小视频免费在线观看| 精品噜噜噜噜久久久久久久久试看| 亚洲电影激情视频网站| 色国产精品一区在线观看| 中文字幕制服丝袜一区二区三区| 国产一区二区久久| 欧美成人一区二区三区片免费 | 国产精品盗摄一区二区三区| 精品影视av免费| 日韩女优av电影| 美女在线视频一区| 欧美成人三级电影在线| 欧美精品久久天天躁| 奇米精品一区二区三区在线观看| 欧美三级资源在线| 一区二区三区欧美久久| 一本一本大道香蕉久在线精品 | 成人av网址在线| 国产亚洲制服色| 激情文学综合网| 精品久久久久久综合日本欧美| 91精选在线观看| 精品一区二区久久| 久久精品国产77777蜜臀| 欧美成人伊人久久综合网| 成人精品免费网站| 蜜桃传媒麻豆第一区在线观看| 国产午夜亚洲精品理论片色戒| 96av麻豆蜜桃一区二区| 日本欧美久久久久免费播放网| 久久这里只有精品首页| 在线观看日韩电影| 99久久99久久精品免费观看| 亚洲视频免费在线观看| 91在线视频免费观看| 亚洲视频精选在线| 在线观看不卡视频| 亚洲h精品动漫在线观看| 在线不卡一区二区| 精品写真视频在线观看| 久久精品夜色噜噜亚洲a∨| 岛国一区二区三区| 亚洲欧美自拍偷拍| 欧美影院午夜播放| 蜜桃久久av一区| 久久久久国产一区二区三区四区| 成人h版在线观看| 亚洲一区在线免费观看| 91精品国产综合久久久蜜臀图片| 激情综合亚洲精品| 亚洲欧洲日产国码二区| 欧美日韩不卡视频| 国产精品亚洲午夜一区二区三区| 国产精品国产自产拍高清av王其| 91国偷自产一区二区三区观看| 日韩电影一区二区三区四区| 26uuuu精品一区二区| 色综合天天做天天爱| 五月天久久比比资源色| 国产三级欧美三级日产三级99| 色婷婷综合久久久中文一区二区 | 99re8在线精品视频免费播放| 一区二区三区毛片| 精品国产亚洲一区二区三区在线观看| 成人av电影在线网| 日韩和欧美一区二区| 国产视频一区在线播放| 欧美亚洲综合网| 国产精品一品二品| 午夜视频在线观看一区二区| 久久先锋影音av鲁色资源网| 91成人免费在线| 国产精品一区2区| 五月天视频一区| 亚洲欧洲av一区二区三区久久| 欧美人体做爰大胆视频| 成人免费的视频| 免费成人小视频| 亚洲精品国久久99热| 精品久久久久久最新网址| jlzzjlzz欧美大全| 人人超碰91尤物精品国产| 国产亚洲欧美激情| 4438成人网| 成人丝袜视频网| 美女www一区二区| 亚洲图片你懂的| 日韩亚洲欧美综合| 成人av午夜电影| 国产尤物一区二区在线| 亚洲午夜久久久久| 亚洲国产成人一区二区三区| 欧美一区二区三区公司| 一本一道久久a久久精品综合蜜臀| 久久电影网站中文字幕| 亚洲午夜av在线| 中文字幕日韩av资源站| 久久婷婷成人综合色| 欧美美女一区二区在线观看| 99久久伊人精品| 国产91精品在线观看| 美国毛片一区二区| 日日夜夜精品视频免费| 亚洲久本草在线中文字幕| 欧美激情一区二区| 精品国产第一区二区三区观看体验| 在线观看精品一区| 91在线视频18| 成人午夜免费视频| 国产在线精品视频| 蜜臀久久99精品久久久久久9| 亚洲一区二区三区四区不卡| 国产精品久久毛片a| 精品成人佐山爱一区二区| 欧美色图在线观看| 91丨porny丨户外露出| 国产成人免费视频网站| 久久精工是国产品牌吗| 日本亚洲电影天堂| 五月婷婷久久丁香| 亚洲观看高清完整版在线观看| 日韩理论片网站| 亚洲欧美综合在线精品| 国产精品久久久久久久久免费相片 | 精品嫩草影院久久| 欧美唯美清纯偷拍| 91在线播放网址| 99国产精品99久久久久久| 国产在线视视频有精品| 精油按摩中文字幕久久| 免费成人深夜小野草| 日韩高清不卡一区| 亚洲在线观看免费| 亚洲午夜av在线| 亚洲无人区一区| 亚洲成人一二三| 亚洲国产成人高清精品| 成人免费在线观看入口| 亚洲欧美在线aaa| 亚洲精品国产视频| 亚洲激情第一区| 亚洲伦理在线免费看| 一区二区三区在线免费视频| 亚洲综合清纯丝袜自拍| 亚洲三级在线免费| 亚洲国产欧美在线人成| 亚洲欧美日韩国产综合在线| 日韩一区欧美小说| 亚洲精品成人悠悠色影视| 亚洲一本大道在线| 毛片av中文字幕一区二区| 麻豆成人综合网| 国产成人在线观看免费网站| 不卡的看片网站| 在线精品视频小说1| 在线亚洲高清视频| 777奇米成人网| 久久久久国产精品麻豆ai换脸| 国产欧美久久久精品影院| 中文字幕视频一区二区三区久| 一区二区免费在线| 久久综合综合久久综合| 国产在线精品国自产拍免费| 成人ar影院免费观看视频| 在线精品亚洲一区二区不卡| 51精品秘密在线观看| 久久久久久久综合色一本| 亚洲欧美日韩中文播放| 午夜av电影一区| 国产高清亚洲一区| 色综合久久88色综合天天免费| 欧美日韩国产另类不卡| 26uuu亚洲| 一级女性全黄久久生活片免费| 蜜桃久久久久久久| 91在线一区二区三区|