我们每天在许多不同的多播组上捕获许多 pcap 文件。出于测试和基准测试的目的,我们希望在隔离环境中以受控方式重放这些文件。这些 pcap 文件是同时捕获的,但位于不同的多播组和端口上。
我想按照数据包的记录顺序和不同的(和指定的)多播组将这些文件重播回网络(可能使用 ttl=0 或 1)。此排序必须在所有正在播放的文件中同步。
例如,假设我们有两个捕获文件,foo.pcap
以及bar.pcap
. 我们想foo.pcap
在 mcast 组 239.255.0.1:30001 上重放数据包,并且bar.pcap
应该在 239.255.0.2:30002 上重放数据包。
foo.pcap
在时间偏移量 0、1 和 5 处 bar.pcap
记录数据包。在时间偏移量(相对于foo.pcap
)3、4 和 5处记录数据包。
所以,我正在寻找的是重播这些数据包的方式在翻过两个同步的顺序foo.pcap
和bar.pcap
。换句话说,从第2包foo.pcap
应该走出去到239.255.0.1:30001,然后从第一个两包bar.pcap
应该出去239.255.0.2:30002,然后从过去的数据包foo.pcap
应该走出去的同时(或接近它)作为来自bar.pcap
.
我们还需要能够调整数据包的重放速率。例如,以记录的速度;10 倍记录速度;1 GB/秒;等等。
我怎样才能做到这一点?
我已经研究过诸如tcpreplay和bittwist 之类的工具,但这些工具要么不会在不同的组上发送,要么不会在所有文件中同步出口顺序。
我将只在 Linux 上工作(主要是 RHEL 6.5 和 Ubuntu 12.04)