Ethereal-users: Re: [Ethereal-users] tcpdump vs ethereal

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Guy Harris <guy@xxxxxxxxxxxx>
Date: Wed, 19 Nov 2003 13:16:17 -0800

On Nov 19, 2003, at 12:58 PM, Martin Heroux wrote:

1- why does tcpdump don't get the same amount of packets as a regular
sniffer (Dolch for instance) I am using one of the best gigabit card on the
market I should get the same result.

Is the regular sniffer dropping fewer packets? If so, that might explain it. The code path for tcpdump from the driver to the disk (which probably includes at least two copies of the packet data, and at least two user->kernel->user boundary crossings) might be longer than the code path for the Sniffer from the driver to wherever the packets are stored (the Sniffer might just store them in memory, and save them to disk only when you ask it to).

Is that the DOS-based or the Windows-based Sniffer?

2- why does ethereal which uses tcpdump

Presumably you mean "which uses libpcap" - Ethereal doesn't use tcpdump.

don't read the same amount of packets ?

Because it's dropping more packets.

For one thing, Ethereal is writing the packets to a file, not to "/dev/null", as you were doing with tcpdump in your example. Try specifying a file on "/tmp" or "/var/tmp" in your tcpdump test.

For another thing, the code path in Ethereal is even longer, as it's updating the display and checking for user input while capturing.

For still another thing, tcpdump defaults to saving only the first 68 (if built without IPv6 support) or 96 (if built with IPv6 support) bytes of a packet, which reduces the time spent in both packet copies and the number of user->kernel->user boundary crossings (as more packets would be written - although not read, as this is Linux - per system call, as less data is being written). Try running tcpdump with the option "-s 65535", and try running Ethereal with the "Limit each packet to [] bytes" option turned on, and the limit set to, for example, 68 or 96.