Ethereal-users: Re: [Ethereal-users] writing to disk process

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 Jul 2006 15:48:24 -0700

On Jul 19, 2006, at 11:36 AM, Torres, Javier wrote:

Thanks for your answer Guy,
What I am worried about is dropping data from the time I get the packet
in tshark to the time it actually writes to disk.

If a packet is read by TShark, *that* packet will not be dropped by TShark (unless you're using the -R flag and explicitly telling it to drop the packet). It *will* be written to disk (assuming the file system doesn't fill up, of course).

Packets are dropped by the OS's packet capture mechanism *before* they're handed to the application - whether it's Wireshark or Tshark or dumpcap or tcpdump/WinDump or... - if the application isn't consuming them fast enough, so, between the time a packet is read by Tshark and the time it's written to disk, *later* packets could be dropped.

Because of this I am
trying to find a way to test and see if I received all the packets
Tshark sees on the capture.  I had thought this app was looking at the
interface so once it processed the information from the interface it
would at that point write the data to disk.

The app (whether it's tcpdump/WinDump or Wireshark or Tshark or dumpcap or...) is calling libpcap/WinPcap, which supplies it with packets. The app then processes the packet, where "processes" could mean that it dissects the packet and prints the dissection to the standard output, or that it writes the packet to a file, or both of those.

Since you are saying it is writing to disk at the same time it is
looking at it,

I'm not sure how I'm saying that, because I'm not sure what "looking at it" means. The application itself does *not* directly act on the interface. The OS's driver for the interface is what fetches packets from the interface; it then hands them to parts of the OS kernel's networking networking code, which then supplies them to libpcap/ WinPcap, which then supplies them to the app.

I was hoping to make sure the packets it is writing don't get dropped in
the time it takes them to write to disk since it is sensitive
information we are gathering.

A packet that is being written to disk won't be dropped in the time it takes to write that packet to disk.

Packets that arrive *after* that packet could be dropped by the OS code in the time it takes to write the earlier packet to disk, if the app doesn't read those packets from the OS soon enough (the buffer in which the OS stores those packets has a finite size, and if it overflows, packets will be dropped, if packets aren't removed from the buffer soon enough by the app, the buffer will fill up, and if another packet arrives, it will overflow); those dropped packets will not be seen by the app.

As Ulf says, dumpcap does less processing on the packet, so it will be able to read packets faster, reducing the chances that they'll be dropped.

_______________________________________________
Ethereal-users mailing list
Ethereal-users@xxxxxxxxxxxx
http://www.ethereal.com/mailman/listinfo/ethereal-users