Around emacs, linux, etc.
用tcpreplay对网络程序进行压力测试
以前tcpdump用的比较多,主要用在诊断的时候。tcpreplay则是把tcpdump记录下来的包原样发回去
这样tcpreplay就可以用来以极快的速度复现记录下来的数据从而实现压力测试,好处在于数据比较真实
先是在实际环境中用tcpdump记录数据用于复现
例如记录发往某ip某端口的报文一百万个
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预处理下
tcpprep -p --pcap=log.pcap --cachefile=input.cache
先修改mac地址使之有效
tcprewrite --enet-dmac="cc:cc:cc:cc:cc:cc" --enet-smac="bb:bb:bb:bb:bb:bb" --infile=log.pcap --outfile=pcap.tmp
然后修改ip地址使之有效
tcprewrite --cachefile=input.cache --endpoints="cc.cc.cc.cc:bb.bb.bb.bb" --infile=pcap.tmp --outfile=replay.pcap
然后就可以用来复现了 -l参数是说循环多少次 -p参数是说每秒发多少个包 -i是说从那个网卡发
tcpreplay -l 10 -p 1000 -i eth0 replay.pcap
| Print article | This entry was posted by Jay Xie on 2008/10/16 at 4:52 pm, and is filed under Programming. Follow any responses to this post through RSS 2.0. You can leave a response or trackback from your own site. |