婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

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

Packetdrill的簡明使用手冊

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

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語法編寫的測試腳本。

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

失?。褐赋瞿_本的錯誤地方,以及原因。

2. Packetdrill 執行自帶測試用例

  1. 開啟tcpdump -i any tcp port 8080抓包便于分析
  2. 這里測試快速重傳,測試環境centos7.2。
  3. 簡單說明< 表示輸入,packetdrill會構造一個真實的數據包。>表示預期協議棧會響應的數據包。(這個包不是由packetdrill構造的,而是由協議棧發出的。)
// 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
//系統調用,讓協議棧發出100個字節
// Send 1 data segment and get an ACK, so cwnd is now 4.
+0 write(4, ..., 1000) = 1000
//預期協議棧會發出psh,ack,實際上發出了ack1
//+0 > P. 1:1001(1000) ack 2
//向協議棧注入 ack
+.1 < . 1:1(0) ack 1001 win 257
// Write 4 data segments.
//系統調用,讓協議棧發出4000個字節
+0 write(4, ..., 4000) = 4000
//預期協議棧會發出psh,ack,實際上發出了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.
//向協議棧連續發出三個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.
//預期協議棧會發出一次快速重傳 Seq 1001:2001,ack 1
//+0 > . 1001:2001(1000) ack 1
// Receiver ACKs all data.
//向協議棧ack,響應所有報文的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

[注解:如果執行packetdrill自帶的用例出錯,一般是協議棧發出的包沒有達到預期的包,先將預期>那部分干掉,然后再執行測試用例,然后通過抓包分析預期結果。通常是因為三次握手mss 的限制]

  1. 執行: ../../../packetdrill fr-4pkt-sack-linux.pkt,無出錯。
  2. 抓包可以看到一下結果:三次重復ack,則實施快速重傳。達到預期效果。
// 自己構造包實現三次重復的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
// 協議棧發起快速重傳。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的基本語法。

腳本中可以包含四種語句:數據包、系統調用、shell命令、python語句。
每條語句都必須以時間戳開頭,指明它的執行時間。

  • Packets

數據包分為:輸入的數據包、輸出的數據包,格式類似于tcpdump的,
支持TCP、UDP、ICMP,以及TCP的大部分選項。

輸入數據包(<表示輸入):packetdrill會構造一個真實的數據包,然后注入協議棧。

例子:

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

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

+0 > udp (1472)
  • System Calls

系統調用的格式類似于strace。
對于每個系統調用,packetdrill會在指定的時間給予執行,并檢查返回值是否和預期的一樣。系統調用的主要是應用于場景構造,已經非測試端的數據發送和接收。

常見的系統調用例子:
系統調用

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

常見用法是用shell腳本設置內核參數或者調用shell命令統計tcp信息。設置

例子:

+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的里面的信息,是否符合預期。

例子:

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

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

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

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

如果在規定的時間戳,對應的事件并沒有發生就會報錯,并告知該事件的實際發生時間。

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

預期在1s以后TCP應該發送一個SYNACK包。

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

4. Packetdrill 實現基本場景構造測試

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

1.服務端場景

構造服務器端場景:數據包輸入端是客戶端。數據包輸出端是系統調用,充當服務端。

// 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
//服務器端調用系統調用,預期發出2段數據包。
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.客戶端場景構造

構造服務器端場景:數據包輸入端是服務端。數據包輸出端是系統調用,充當客戶端。

// 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>
//客戶端調用系統調用,預期發出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>

總結

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

標簽:南充 福州 撫順 綏化 晉城 蕪湖 孝感 巴中

巨人網絡通訊聲明:本文標題《Packetdrill的簡明使用手冊》,本文關鍵詞  Packetdrill,的,簡明,使用手冊,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Packetdrill的簡明使用手冊》相關的同類信息!
  • 本頁收集關于Packetdrill的簡明使用手冊的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产精选一区二区三区| 亚洲视频电影在线| 欧美军同video69gay| 久久综合精品国产一区二区三区| 亚洲精品中文字幕乱码三区| 国产美女精品人人做人人爽| 欧美日韩高清不卡| 日本sm残虐另类| 欧美成人女星排名| 精品一区二区三区在线视频| 久久久久久一二三区| 国产一区二区剧情av在线| 久久精品一区二区三区四区| 不卡视频一二三| 国产视频一区二区在线| 91在线观看视频| 亚洲国产精品嫩草影院| 国产精品99久久久久久有的能看| 久久精子c满五个校花| 成人永久看片免费视频天堂| 日韩欧美中文字幕一区| 国产91精品一区二区| 国产女人18水真多18精品一级做 | 偷拍日韩校园综合在线| 亚洲黄色小视频| 在线亚洲免费视频| 国产三级三级三级精品8ⅰ区| 狠狠色2019综合网| 一区二区三区在线不卡| 精品久久人人做人人爰| 国产福利精品导航| 成人高清在线视频| 久久一二三国产| av男人天堂一区| 国产一区 二区 三区一级| 亚洲黄色免费网站| 亚洲欧美日韩国产手机在线| 2021中文字幕一区亚洲| 欧美精品国产精品| 欧美精品xxxxbbbb| 欧美人与禽zozo性伦| 国产一区999| 欧美日本韩国一区二区三区视频| 欧美精品 国产精品| 91免费版在线| 风间由美中文字幕在线看视频国产欧美| 夜夜嗨av一区二区三区中文字幕| 国产日韩欧美a| 国产精品欧美一级免费| 国产精品久久久久久亚洲伦| 国产精品视频在线看| 国产免费久久精品| 欧美激情一区二区三区不卡 | 久久这里都是精品| 亚洲欧洲一区二区三区| 亚洲女同一区二区| 蜜臀久久99精品久久久画质超高清| **性色生活片久久毛片| 国产精品免费网站在线观看| 国产精品国产三级国产普通话蜜臀| 欧美午夜电影网| 老司机一区二区| 色哟哟国产精品| hitomi一区二区三区精品| 日韩激情av在线| 精品在线你懂的| 99久久久无码国产精品| 精品视频一区二区三区免费| 欧美三级电影精品| 91精品国产一区二区| 欧美日本一道本在线视频| 久久婷婷久久一区二区三区| 日韩欧美一区中文| 欧美在线视频全部完| 国产suv一区二区三区88区| 国产盗摄女厕一区二区三区| 国产成人免费高清| 色94色欧美sute亚洲13| 欧美一区二区网站| 亚洲欧美国产毛片在线| 久久精品免费观看| 欧美亚洲精品一区| 3d动漫精品啪啪一区二区竹菊| 久久女同互慰一区二区三区| 亚洲制服丝袜在线| 成人午夜看片网址| 精品日韩欧美在线| 亚洲综合激情另类小说区| 国产成人免费av在线| 日韩一二三区视频| 亚洲一区二区三区中文字幕| 成人黄色大片在线观看| 久久综合久色欧美综合狠狠| 天天av天天翘天天综合网色鬼国产| av电影在线观看完整版一区二区| 久久先锋资源网| 美女脱光内衣内裤视频久久网站| 欧美日韩一区二区欧美激情| 欧美国产成人精品| 国产精品888| 久久精品亚洲麻豆av一区二区 | 有码一区二区三区| 国产一区免费电影| 色老头久久综合| 国产精品麻豆网站| 国产一本一道久久香蕉| 精品国产亚洲在线| 亚洲电影一级黄| 欧美精品亚洲一区二区在线播放| 亚洲三级小视频| aa级大片欧美| 亚洲免费在线观看视频| 在线观看欧美日本| 亚洲成av人影院在线观看网| 欧美色网一区二区| 欧美日韩国产在线观看| 26uuu国产日韩综合| 懂色中文一区二区在线播放| 日韩毛片精品高清免费| 91免费国产视频网站| 亚洲亚洲精品在线观看| 91精品国产一区二区三区蜜臀 | 精一区二区三区| 国产亚洲精久久久久久| 精品一区二区三区在线播放 | 亚洲日本一区二区| 丁香婷婷综合激情五月色| 欧美一区日韩一区| 韩国女主播成人在线| 337p日本欧洲亚洲大胆色噜噜| 国产在线播放一区三区四| 精品久久久久久久久久久久久久久 | 欧美精彩视频一区二区三区| 成人精品鲁一区一区二区| 亚洲精品福利视频网站| 欧美人妇做爰xxxⅹ性高电影 | 欧美一区二区三区在线电影| 国产高清精品网站| 亚洲在线免费播放| 在线区一区二视频| 国产美女在线精品| 亚州成人在线电影| 制服丝袜亚洲网站| 91视频观看视频| 欧美一区二区三区不卡| 成人的网站免费观看| 日本亚洲视频在线| 欧美v日韩v国产v| 中文字幕一区二区三区乱码在线| 91美女片黄在线观看91美女| 亚洲激情图片一区| 91网站最新地址| 久久久久久毛片| 国产99久久久国产精品潘金网站| 性做久久久久久免费观看欧美| 久久婷婷国产综合国色天香| 色综合欧美在线视频区| 黄页视频在线91| 婷婷综合久久一区二区三区| 中文字幕五月欧美| 欧美一区二区三区在线观看| 在线视频欧美精品| 日本在线播放一区二区三区| youjizz国产精品| 日本欧美加勒比视频| 欧美日韩成人高清| 91免费看视频| 26uuu欧美| 99久久国产综合精品女不卡| 日韩av在线播放中文字幕| 欧美日韩国产综合草草| 99久久综合国产精品| 欧美bbbbb| 亚洲精品国产无天堂网2021 | 欧美性猛交xxxxxx富婆| 日韩福利电影在线| 日韩国产欧美三级| 国产精品青草久久| 国产午夜精品理论片a级大结局| 精品少妇一区二区三区免费观看| 日韩午夜激情视频| 欧美三级蜜桃2在线观看| 欧美中文字幕一区二区三区亚洲| 精品亚洲aⅴ乱码一区二区三区| 亚洲成a人v欧美综合天堂下载| 亚洲特黄一级片| 欧美一级理论片| 91免费视频观看| 不卡的av电影| 精品一区二区三区欧美| 久久成人羞羞网站| 裸体健美xxxx欧美裸体表演| 亚洲国产精品视频| 日本午夜精品视频在线观看| 免费在线看成人av| 麻豆91精品91久久久的内涵| 亚洲v日本v欧美v久久精品| 亚洲国产中文字幕| 视频一区在线视频| 亚洲va欧美va人人爽|