使用TCPREPLAY添加时间戳到数据包有效负载

问题描述:

我有一个pcap文件来重放。我想重写数据包有效载荷以包含时间戳。我如何用tcpreplaytcprewrite来做到这一点?有没有默认选项,或者我应该自己实现它(修改tprep)?我一直在阅读这些网页一段时间,谷歌也没有帮助我。在此先感谢使用TCPREPLAY添加时间戳到数据包有效负载

PS:我不想修改数据包的原始大小,因为数据不重要覆盖是好的。如果只有选项是修改数据包大小,那我也没问题。

tcpreplay/tcprewrite不支持这种编辑方式,所以您必须亲自编写代码。如果你不介意破坏你的数据包数据(这听起来像你可以肯定),那么编辑tcpedit.c应该很容易。

+0

感谢您的回复。由于频繁的系统调用,它会大大伤害转发性能吗? – tartar 2012-03-29 04:13:32

+0

那么取决于... gettimeofday()在大多数系统上过去非常昂贵,但在过去的几年里情况有了很大的改进。例如,Linux已经从BIOS调用切换到HPET,速度更快。假设你只是通过memcpy()在数据包中放入一个4字节的UNIX纪元时间戳,这将会非常快速和低开销。如果你想要更高的准确性,这是更多的字节和潜在的更多的工作/开销,但它取决于你的实现。长话短说,在大多数情况下,你不应该注意到真正的表现。 – 2012-03-31 01:13:09

如果您未绑定到命令行工具,请检出netdude。它是GTK应用程序,只需点击几下鼠标即可编辑数据包跟踪。

这是一个屏幕截图,显示编辑TCP头字段的对话框。

TCP header editing http://netdude.sourceforge.net/screenshots/0.4/shot-1.gif

所附库libnetdude是netdude的核心。如果netdude提供的GUI不能满足您的需求,请使用它编写您自己的工具。

+0

感谢您的回复。我需要重播gpbs流量。我将比较libnetdude与tprep的性能。 – tartar 2012-03-29 19:51:04

+0

在这种情况下,[Click](http://www.read.cs.ucla.edu/click/click)可能是您的问题范围的更好选择。 – mavam 2012-03-29 20:08:25

+0

实际上,这将是点击路由器的流量生成器。我选择在流量生成器中添加时间戳,而不是在点击时加盖戳记,希望能够在点击机器上获得更好的点数,但我不确定我会在点击时获得时间戳的性能。 – tartar 2012-03-29 21:31:54