2012年2月15日 星期三

用tcpreplay對網路程式進行壓力測試


以前tcpdump用的比較多,主要用在診斷的時候。tcpreplay則是把tcpdump記錄下來的包原樣發回去這樣tcpreplay就可以用來以極快的速度複現記錄下來的資料從而實現壓力測試,好處在於資料比較真實

先是在實際環境中用tcpdump記錄資料用於複現
例如記錄發往某ip某埠的報文一百萬個
1
tcpdump 'dst aa.aa.aa.aa and dst port xxx' -c 1000000 -w log.pcap
假設這些報文要在機器bb.bb.bb.bb上複現然後發給cc.cc.cc.cc,從bb.bb.bb.bb發往cc.cc.cc.cc的源mac地址為bb:bb:bb:bb:bb:bb 目的mac位址為cc:cc:cc:cc:cc:cc
首先tcpprep預處理下
1
tcpprep -p --pcap=log.pcap --cachefile=input.cache
先修改mac位址使之有效
1
tcprewrite --enet-dmac="cc:cc:cc:cc:cc:cc" --enet-smac="bb:bb:bb:bb:bb:bb" --infile=log.pcap --outfile=pcap.tmp
然後修改ip位址使之有效
1
tcprewrite --cachefile=input.cache --endpoints="cc.cc.cc.cc:bb.bb.bb.bb" --infile=pcap.tmp --outfile=replay.pcap
然後就可以用來複現了 -l參數是說迴圈多少次 -p參數是說每秒發多少個包 -i是說從那個網卡發
1
tcpreplay -l 10 -p 1000 -i eth0 replay.pcap

沒有留言: