Argus with PF_RING DNA clusters

Carter Bullard carter at qosient.com
Sun Jul 15 20:16:08 EDT 2012


Hey Chris,
More than likely the select() that is used to read the interface is not blocking for any amount of time.  We call it with a timeout value, which should give us some idle time if there aren't any packets.

Are these virtual interfaces selectable?

Carter 

On Jul 15, 2012, at 4:48 PM, Chris Wakelin <c.d.wakelin at reading.ac.uk> wrote:

> Hi,
> 
> I've been trying to get Argus working with the more advanced versions of
> PF_RING. In many ways this is similar to proprietary capture cards
> except for being a software solution.
> 
> There's details of PF_RING DNA and a zero-copy mechanism called libzero
> at http://www.ntop.org/products/pf_ring/libzero-for-dna/.
> 
> What it basically does is provide virtual interfaces dnacluster:X at Y
> which each get a subset of the traffic. I'm hoping to use something like
> -i ind:dnacluster:1 at 0,dnacluster:1 at 1,...,dnacluster:1 at 7 to run a
> multithreaded ARGUS.
> 
> I needed to make a similar change to that suggested for the Napatech cards:-
> 
>> --- ArgusSource.c.orig  2012-06-20 14:11:43.000000000 +0100
>> +++ ArgusSource.c       2012-07-09 20:17:17.820122121 +0100
>> @@ -4182,7 +4182,7 @@
>>    if (device == NULL)
>>       return;
>> 
>> -   if (strstr(device->name, "dag") || strstr(device->name, "nap")) {
>> +   if (strstr(device->name, "dag") || strstr(device->name, "nap") || strstr(device->name, "dna")) { /*CDW* add "dna" */
>>       for (i = 0; i < src->ArgusInterfaces; i++) {
>>          if (src->ArgusInterface[i].ArgusPd && (pcap_fileno(src->ArgusInterface[i].ArgusPd) > 0))
>>             bzero ((char *)&src->ArgusInterface[i].ifr, sizeof(ifr));
>> @@ -4223,6 +4223,7 @@
>>             }
>>          }
>> #else
>> +
>>          src->ArgusInterface[i].ifr.ifr_flags |= IFF_UP;
>>          setArgusInterfaceStatus(src, 1);
>> #endif
> 
> and it works so far as capturing traffic is concerned.
> 
> However each thread uses 100% CPU, even with no traffic, whereas with
> "ordinary" PF_RING (which needs no special tweaks), the usage is normal.
> 
> Any idea where to start looking for a cause? Debug output isn't leaving
> me any the wiser:
> 
> (-D6 with no traffic)
> 
>> ArgusOutputProcess() looping
>> ArgusOutputProcess() checking for remotes
>> ArgusOutputProcess() done checking for remotes
>> ArgusOutputProcess() waiting for input list
>> ArgusOutputProcess() checking out clients
>> ArgusOutputProcess() done with clients
>> ArgusOutputProcess() looping
> 
> (with traffic)
> 
>> ArgusOutputProcess() looping
>> ArgusOutputProcess() checking for remotes
>> ArgusOutputProcess() done checking for remotes
>> ArgusOutputProcess() waiting for input list
>> ArgusCalloc (1, 1680) returning 0x7f77a007aad0
>> ArgusAddHashEntry (0x7f77a007aad0) returning 0x7f77a007ab10
>> ArgusCalloc (1, 1680) returning 0x7f77a007b170
>> ArgusAddHashEntry (0x7f77a007b170) returning 0x7f77a007b1b0
>> ArgusCalloc (34, 4) returning 0x7f77a007b810
>> ArgusCalloc (34, 4) returning 0x7f77a007b8a0
>> ArgusCalloc (1, 1680) returning 0x7f77a007b930
>> ArgusAddHashEntry (0x7f77a007b930) returning 0x7f77a007b970
>> ArgusCalloc (34, 4) returning 0x7f77a007bfd0
>> ArgusCreateESPFlow(0xb1e27012) returning 0xb9d460
> ...
>> ArgusOutputProcess() checking out clients
>> ArgusOutputProcess() done with clients
>> ArgusOutputProcsss() looping
> 
> Best Wishes,
> Chris
> 
> -- 
> --+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+-
> Christopher Wakelin,                           c.d.wakelin at reading.ac.uk
> IT Services Centre, The University of Reading,  Tel: +44 (0)118 378 8439
> Whiteknights, Reading, RG6 2AF, UK              Fax: +44 (0)118 975 3094
> 
> 



More information about the argus mailing list