2013-02-08 62 views
0

我想用tcpreplay来重放由TCP和UPD数据包组成的数据包跟踪。tcpreplay和时间戳

有没有办法附上时间戳每个传出包,这样我就能够计算出往返时间一旦所有回复已收到(后弃)?

否则,我应该使用哪个其他工具?

回答

1

如果您使用tcpdump或Wireshark同时嗅探流量,它将在出路和回复时为每个数据包添加时间戳。

虽然只是一个警告,但tcpreplay通常不支持将TCP流重放到服务器,因为它不跟踪TCP流的状态。通常你会得到的是重置数据包的回复。 UDP通常应该可以。 ICMP经常起作用。如果您想了解更多信息,请务必检查出Tcpreplay FAQ:

http://tcpreplay.synfin.net/wiki/FAQ#Doestcpreplaysupportsendingtraffictoaserver

+0

谢谢。我所要做的就是用小的ttl值发送数据包跟踪。我不需要在两个方向重新创建任何TCP流。对于这个“预览”就够了吗?我的目标是测量每个发送数据包的往返时间。到目前为止,我一直在使用'scapy',但它在尊重输入数据包速率(速度较慢)和跟踪请求/响应数据包对的时间戳方面不太可靠(延迟有时很大,每一次在一段时间甚至负面!!) – 2013-02-11 09:47:28

+0

好吧,我不太清楚。我将每个数据包的TTL值伪造成一个小值,以便它触发一个ICMP数据包,并用它来计算RTT。这就是为什么我不需要保持/维护任何TCP连接。 – 2013-02-11 14:29:58

+1

老实说,我不确定为什么你只是不使用ping,如果你想要做的就是衡量RTT。 tprep的问题在于,它不会从网络上“读取”,因此它永远不会看到回复。你需要做其他事情,所以我建议使用tcpdump/Wireshark。但是,如果您想要编写代码,则可以使用libpcap观察两个方向发送的数据包,以计算RTT。 – 2013-02-11 18:59:01