[prads-devel] pcaps for testing and setup
Kacper Wysocki
kwy at redpill-linpro.com
Tue Feb 2 11:23:42 CET 2010
Edward Bjarte Fjellskål wrote:
> Edward Bjarte Fjellskål wrote:
>> Edward Bjarte Fjellskål wrote:
>>> Hi List,
>>> I also downloaded the Outside tcpdump data from:
>>> 2000 DARPA Intrusion Detection Scenario Specific Data Sets
>>> http://www.ll.mit.edu/mission/communications/ist/corpora/ideval/data/2000data.html
>>> http://www.ll.mit.edu/mission/communications/ist/corpora/ideval/data/2000/NT_dataset/outside.tcpdump.gz
>> I ran the pcap 20 times, so this is more or less what is in there:
[snip]
>> -- Total assets detected : 479
>> -- Total TCP service assets detected : 1424
>> -- Total TCP client assets detected : 797
>> -- Total UDP service assets detected : 1
>> -- Total UDP client assets detected : 2
> I did some refactoring, implemented some new features, and now
> prads is running much much better. After one pass:
> -- Total assets detected : 707
> -- Total TCP service assets detected : 1374
> -- Total TCP client assets detected : 760
> -- Total UDP service assets detected : 2
> -- Total UDP client assets detected : 1
>
>
> Night!
[snip]
Coolness! Here are some impactful changes :-)
The goal is to get prads to snap up everything, of course, but that may
not be possible when libpcap is working slower. On high-throughput links
we will need either pcap_mmap functionality, PF_RING capturing or
another gulp[*] methods.
When I say "gulp" I mean we're trying to do the same - drinking from a
fire hydrant.
There are a number of things we can do in prads to make it scale -
strategies include threading, stages, processes, async io, memory
management, zero-copy, mmap, locking, zero-locking and more
optimalization, but there are pros and cons to all of them.
Specifically for cxtracker, and for scalability in general, recommended
reading includes "The C10K problem" : http://www.kegel.com/c10k.html
... yep, hardware is not an issue anymore but oldschool programming
doesn't cut it either.
A real good approach to scalability is to take a look at what kind of
system calls are worth avoiding due to the latency one can expect from
them. Pretty graphs can be seen here: http://bulk.fefe.de/scalability/
however one can make these graphs oneself, or think about when the
computer isn't just executing code but also doing oh so expensive I/O.
As I mentioned there are cons to these approaches as well - for example,
with threading it's very easy to get into races and/or lock contention
problems. A good survey can be found at
http://pl.atyp.us/content/tech/servers.html
0K
Gulp and other interesting links: http://staff.washington.edu/corey/gulp/
More information about the prads-devel
mailing list