tcprewrite - 截断的数据包错误

时间:2015-02-09 01:29:51

标签: pcap tcpreplay

我使用tcprewrite从CAIDA数据集重写我的原始pcap文件(更改MAC地址,然后更改IP)。我遇到了这个问题。 命令使用如下:

sudo tcprewrite --infile=xxx.pcap --dlt=enet --outfile=yyy.pcap --enet-dmac=00:00:00:03 --enet-smac=00:00:00:1f 

错误

pcap was captured using a snaplen of 65000 bytes.  This may mean you have truncated packets.

我试图从网上搜索解决方案,但遗憾的是我无法解决。根据这个帖子 http://sourceforge.net/p/tcpreplay/mailman/tcpreplay-users/?viewmonth=201201 错误上升是因为从一开始就没有捕获数据包。

有没有人知道如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

  

pcap was captured using a snaplen of 65000 bytes. This may mean you have truncated packets.

或者它可能没有,事实上,它可能并不意味着您已经截断了数据包。

某些系统上的数据包捕获机制要求指定一些最大数据包长度,但它可能足够大,实际上,没有数据包会大于最大数据包,因此没有数据包将被截断。

65535经常被用作这样的最大值 - Wireshark在重命名为Wireshark之​​前就这样做了,并且tcpdump首先被改变,以便" -s 0"将使用65535然后更改为默认值为65535.tcpreplay正在处理任何最大数据包长度< 65535 as"没有尝试捕获整个数据包",但警告,例如65534有点傻。

Tcpdump和Wireshark最近将限制提升至262144以处理一些USB捕获。

(选择的限制不是大 - pcap和pcap-ng文件格式允许最多2 ^ 32-1,但是某些软件在阅读这样的文件时可能会尝试分配一个2 ^ 32-1字节的缓冲区并失败。)

所以,不要担心,但也不要明确指定65000的快照长度 - 显式快照长度仅在您想要仅捕获部分数据包或者如果你有一个旧的tcpdump(或 ANCIENT Ethereal)默认为68或96字节,在后一种情况下,你可能会选择值> = 65535。