我有外部硬件,可以通过指定的端口连续发送 UDP 数据段。我想将最后几个接收到的数据包连续存储在一个文件中(也可以是基于时间的)。
如果我使用tcpdump
with-G
或-C
,则要么创建一个新文件,要么在达到限制后覆盖旧文件。然而,这不是我需要的。我想要一个连续旋转的文件:当一个新的数据包进来时,最旧的数据包应该被删除,为新的数据包腾出空间。
通过这种方式,我知道我将始终(当然,在缓冲区填满之后)有足够大的样本(而不是 0 到 N 个数据包/字节/秒之间的随机大小)。
经过一些网络搜索,我发现曾经有一个名为pcapture的工具,它使用循环缓冲区来实现类似的功能,但它的生命周期很短,甚至在 Linux 下都不支持。
使用现代工具实现这种循环的最佳方法是什么?