原文地址:TCPReplay使用
作者:shenghuo_li
 
    TCPReplay主要功能是將PCAP包重新發(fā)送,用于性能或者功能測試。但是在測試環(huán)境與原轉包系統(tǒng)結構一般是不同的。比如被測試機的二層MAC地址與抓包機器的MAC不同,所以被測試機在二層處理時發(fā)現目的MAC不是自己,就會把packet丟棄。協(xié)議棧把目的MAC與本機的MAC匹配,才會將packet交給上層處理。為了實現測試,需要使用TCPReplay的兩個配套工具,TCPPrep和TCPRewrite。這兩個工具和TCPReplay的詳細用法可以通過MAN來查詢,這里不再細講。此處通過一個經過測試的實例來介紹他們的用法。
 
    測試拓撲圖如下圖所示:

 
其中TCPReplay機器的配置為:
OS: Ubuntu9.04
內核版本:2.6.28
TCPReplay版本:3.3.2(不同版本命令可能稍有不同,具體請通過MAN查詢)
網卡:Intel e1000e 雙千兆
PCAP文件:test.tcpdump
測試第一步:預處理生成Cache,命令為
tcpprep -a client -i test.tcpdump -o test.cache
這條命令將PCAP文件分成客戶端和服務端,默認為客戶端。發(fā)送時packet將分別從客戶端和服務端發(fā)出。
測試第二步:重寫IP地址和MAC地址,命令為:
tcprewrite -e 192.85.1.2:192.85.2.2 --enet-dmac=00:15:17:2b:ca:14,00:15:17:2b:ca:15 --enet-smac=00:10:f3:19:79:86,00:10:f3:19:79:87 -c test.cache -i test.tcpdump -o 1.pcap
這條命令將eth0設為服務端接口,eth1設為客戶端接口,重寫了IP和MAC,可通過wireshark等工具打開1.pcap,查看修改是否成功。
測試第三步:重放packet,首先為了獲取更高的發(fā)送速度,可以把文件放到/dev/shm目錄下,最高速度有1倍左右的加速。重放命令為:
tcpreplay -i eth0 -I eth1 -l 1000 -t -c /dev/shm/test.cache /dev/shm/1.pcap
這條命令將文件以最高速率循環(huán)發(fā)送1000次。
上述步驟通過測試,保證能夠通過。