国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 服務器 > Web服務器 > 正文

Packetdrill的簡明使用手冊

2024-09-01 13:56:04
字體:
來源:轉載
供稿:網友

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 執(zhí)行自帶測試用例

  1. 開啟tcpdump -i any tcp port 8080抓包便于分析
  2. 這里測試快速重傳,測試環(huán)境centos7.2。
  3. 簡單說明< 表示輸入,packetdrill會構造一個真實的數(shù)據(jù)包。>表示預期協(xié)議棧會響應的數(shù)據(jù)包。(這個包不是由packetdrill構造的,而是由協(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)調用,讓協(xié)議棧發(fā)出100個字節(jié)// Send 1 data segment and get an ACK, so cwnd is now 4.+0 write(4, ..., 1000) = 1000//預期協(xié)議棧會發(fā)出psh,ack,實際上發(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)調用,讓協(xié)議棧發(fā)出4000個字節(jié)+0 write(4, ..., 4000) = 4000//預期協(xié)議棧會發(fā)出psh,ack,實際上發(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.//預期協(xié)議棧會發(fā)出一次快速重傳 Seq 1001:2001,ack 1//+0 > . 1001:2001(1000) ack 1// Receiver ACKs all data.//向協(xié)議棧ack,響應所有報文的ack。+.1 < . 1:1(0) ack 6001 win 2574. 將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ā)出的包沒有達到預期的包,先將預期>那部分干掉,然后再執(zhí)行測試用例,然后通過抓包分析預期結果。通常是因為三次握手mss 的限制]

  1. 執(zhí)行: ../../../packetdrill fr-4pkt-sack-linux.pkt,無出錯。
  2. 抓包可以看到一下結果:三次重復ack,則實施快速重傳。達到預期效果。
// 自己構造包實現(xiàn)三次重復的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 007: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 007: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,100007: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)調用、shell命令、python語句。 
每條語句都必須以時間戳開頭,指明它的執(zhí)行時間。

  • Packets

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

輸入數(shù)據(jù)包(<表示輸入):packetdrill會構造一個真實的數(shù)據(jù)包,然后注入協(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)調用的格式類似于strace。 
對于每個系統(tǒng)調用,packetdrill會在指定的時間給予執(zhí)行,并檢查返回值是否和預期的一樣。系統(tǒng)調用的主要是應用于場景構造,已經非測試端的數(shù)據(jù)發(fā)送和接收。

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

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

常見用法是用shell腳本設置內核參數(shù)或者調用shell命令統(tǒng)計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 == 3assert tcpi_unacked == 10assert tcpi_sacked == 6assert tcpi_ca_state == TCP_CA_Recovery}%
  • 時間戳

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

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

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

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

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

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

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

4. Packetdrill 實現(xiàn)基本場景構造測試

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

1.服務端場景 

構造服務器端場景:數(shù)據(jù)包輸入端是客戶端。數(shù)據(jù)包輸出端是系統(tǒng)調用,充當服務端。

// Establish a connection.0.000 socket(..., SOCK_STREAM, IPPROTO_TCP) = 30.000 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 00.000 bind(3, ..., ...) = 00.000 listen(3, 1) = 00.000...0.200 accept(3, ..., ...) = 40.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//服務器端調用系統(tǒng)調用,預期發(fā)出2段數(shù)據(jù)包。0.300 write(4, ..., 2000) = 2000//0.300 > P. 1:2001(2000) ack 10.300 > . 1:1001(1000) ack 10.300 > P. 1001:2001(1000) ack 1

1.客戶端場景構造

構造服務器端場景:數(shù)據(jù)包輸入端是服務端。數(shù)據(jù)包輸出端是系統(tǒng)調用,充當客戶端。

// Create a socket and set it to non-blocking.0.000 socket(..., SOCK_STREAM, IPPROTO_TCP) = 30.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>//客戶端調用系統(tǒng)調用,預期發(fā)出http請求。// Send the HTTP request.0.200 write(3, ..., 57) = 570.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>

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到服務器教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
国产精品xxx电影| 国产黄色免费| 国产网站av| 中文字幕日本三级| 五月婷婷视频在线观看| 1区不卡电影| 国产午夜视频| 在线国产福利网站| 狠狠综合久久久综合| 国产偷激情在线| 国产成人无吗| 天天干天天摸| 国产一级又黄| 在线黄色国产电影| 天天干天天摸| 国产黄色高清在线| 免费av不卡在线观看| 五月婷婷开心综合| a视频免费看| 国产视频福利在线| eeuss影院网站免费观看| 午夜在线小视频| 四虎精品成人a在线观看| 中文字幕网站视频在线| 亚洲精品天堂在线观看| 99热在线免费播放| а√资源新版在线天堂| 国产激情视频一区二区三区| 狠狠狠狠狠狠操| 国产女主播在线观看| 亚洲精品男人| 国产黄色免费网站| 国产精品亚洲色图| 欧美亚洲天堂| 亚洲国产日韩成人综合天堂| 中文字幕成人乱码在线电影| 日韩欧美中文字幕不卡| 2019中文字幕在线视频| √天堂8资源中文在线| www.香蕉视频在线观看| 国产白浆在线| 91在线网址| 国产三级视频在线看| 午夜视频在线| 免费午夜一级| 久久香蕉一区| 国产免费福利| 国产亚洲精品一区二区在线观看| 欧美色欧美亚洲另类二区精品| 天天操夜夜添| eeuss在线观看| 阿v免费在线观看| 免费在线高清av| 高潮毛片在线观看| 国产区在线看| 日本视频一二三区中文字幕| 毛片在线视频| 国产免费一级片| 国产激情在线观看| 国产二区三区在线| 91国内精品在线视频| 97在线超碰| 天天干天天摸| 国产在线视频福利| 最近免费中文字幕大全免费第三页| 国产香蕉尹人视频在线| 精品一二三四| 欧美性猛交xxxx免费看蜜桃| 国产精品一卡二卡三卡| 国产亚av手机在线观看| 精品一区二区三区高清免费不卡| 四虎中文字幕| 国产污污在线观看| www.91在线播放| 国产精品㊣新片速递bt| 中文字幕2019第三页| 黄色片免费在线| 91中文字幕| 国产三级av在线| 超碰免费在线观看| 国产激情在线观看| 九九热视频精品在线观看| 国产精品秘入口| 欧美精品se| 伊人春色在线| 国产国语**毛片高清视频| 国产毛片视频| 色吊丝av中文字幕| 国产高清视频在线播放| 天堂中文在线观看| 国产精品冒白浆免费视频| 交视频在线观看国产| av在线播放国产| 69视频在线| 国产wwww| 国产黄色免费网站| 国产香蕉免费精品视频| 国产剧情在线一区| 狠狠操视频网| 蜜桃视频网站在线| www狠狠操| 久久国产综合视频| 免费日本黄色| 日本高清不卡中文字幕| 精品美女在线观看视频在线观看 | 一本大道久久a久久精品| 国产三级视频在线播放线观看| 国产主播福利在线| www亚洲天堂| 超碰在线影院| 黄色国产在线| 成网站在线观看人免费| 丁香在线视频| 国产精品欧美韩国日本久久| 国产网站av| 亚洲第一区视频| 另类综合图区| 天天操天天操天天色天天要| 国产在线免费观看| 国产对白国语对白| 在线视频二区| 日本中文字幕在线视频| 中文字幕在线看精品乱码| 国产女人在线观看| 国产美女被遭强高潮免费网站| 国产中文在线观看| 最好看更新中文字幕| 最近中文字幕mv免费高清在线| 88av在线| 色中文字幕在线| 国产美女一区视频| 国产精品美女一区二区三区四区| 2020中文字幕在线播放| 白浆爆出在线观看| 国产黄色高清在线| 九九热在线视频观看| 国产高清视频在线| 国产中文字幕第一页| 91精品专区| 国产美女视频一区二区二三区| 国产精品欧美韩国日本久久| a视频免费看| 国产午夜三区视频在线| а√天堂www在线а√天堂视频| 国产日产一区二区| 国产资源在线看| 热99re久久精品精品免费| 91这里只有精品| 国产精品视频一区麻豆| 黄网址在线永久免费观看| 亚洲精品男人| 一区二区三区四区在线免费视频| 中文字幕高清av| 成人欧美日韩| 人xxxx性xxxxx欧美| 6699久久国产精品免费| 国产视频青青| 国产午夜视频| 国产精品国精产品一二| 国产二区三区四区| 国产成人精品实拍在线| 国产精品第八页| 国产精品自产拍在线网站| 免费国产阿v视频在线观看| av在线中文| 亚洲欧洲成人| 老鸭窝av在线| 丁香视频五月| 国产小视频免费在线网址| 国产偷倩在线播放| 国产精品入口麻豆完整版| 中文字幕欧美日韩在线不卡| 国产免费永久在线观看| 国产精品自产拍在线网站| 国产一级二级在线| 精品欧美不卡一区二区在线观看| 精品乱码一区二区三四区视频| 777电影在线观看| www.99av| 国产网站在线播放| 亚洲综合在线不卡| www狠狠操| 自拍亚洲国产| 99热99re6国产在线播放| jlzzjlzz欧美大全| 国产69精品久久app免费版 | 久草视频国产| 中文字幕视频在线观看| 国产导航在线| 久热免费在线视频| 国产激情三区| 黄污在线观看| 国产福利在线| 午夜在线小视频| 亚洲wwwwww| 午夜免费福利在线观看| 亚洲www色| 中文在线视频观看| 国产特级嫩嫩嫩bbb| 在线观看精品一区二区三区|