On Dec 16, 2011, at 1:51 PM, Jon Schipp wrote:

> Do the recent tcpdump releases use the shared memory functionality of
> the newer libpcap libraries?
> Basically, if I download the latest tcpdump and the latest libpcap and
> compile them on FreeBSD and on Linux, and then run the binary, will I
> get the speed advantages of mmap()?

There are no APIs in libpcap that are required in order to use the 
memory-mapped capture mechanisms, so neither tcpdump nor any other program that 
captures traffic needs to be changed in order to use that functionality, so 
*all* tcpdump releases, if either

        1) compiled and then linked with a static-library version of libpcap 
that uses the memory-mapped capture mechanism

or

        2) compiled and linked with a shared-library version of libpcap and 
then run on a system with a shared-library version of libpcap that uses the 
memory-mapped capture mechaism, *regardless* of whether the shared-library 
version with which it's linked supports the memory-mapped capture mechanism

will use it.

> Or are there other things that I have to do, tcpdump/libpcap or maybe
> OS related?

Well, one think you need to do is to have an OS version where the kernel 
supports the memory-mapped capture mechanism.

For FreeBSD, that means FreeBSD 8.0 or later.  You will also have to enable the 
memory-mapped capture mechanism, as it's disabled by default; use the sysctl 
command to set net.bpf.zerocopy_enable to 1.  If you have FreeBSD 8.0 or later, 
the version of libpcap that comes with the system supports the memory-mapped 
capture mechanism; you would not have to recompile libpcap or tcpdump in order 
to use it - you would only need to set the net.bpf.zerocopy_enable sysctl 
variable to 1.

For Linux, any 2.6 kernel and, I think, any 2.4 kernel should have that.-
This is the tcpdump-workers list.
Visit https://cod.sandelman.ca/ to unsubscribe.

Reply via email to