Hi Paolo,

On Sat, 13 Jun 2009, Paolo Lucente wrote:

> Good pointer. From a brief scan of the Aguri homepage, please feel free 
> to correct whether i'm wrong, i see many similarities between pmacct and 
> Aguri.

I guess so; I was thinking that Aguri seems to store its output in text 
files rather than a database, and perhaps provides more dynamic/automatic 
filtering, but seems to be a research project and not highly supported or 
maintained.

> Aguri is slightly more limited in the fact it has only a set of (4?) 
> traffic aggregation profiles whereas pmacct offers a wider range of 
> primitives. But I guess the point you wanted to make was the dynamic 
> variation of the sampling rate under increased traffic load (ie. DDoS).

OK, I didn't realise that it was just the sample rate that was varied. I 
thought it was to do with the flexible aggregation, e.g. if we have 1000 
flows with the same source IP and source port, they might be aggregated 
together as a single, more highly summarised flow.

> pmacct actually does have such feature only available to the SQL
> plugins: it's part of the SQL preprocess infrastructure (look for 
> 'sql_preprocess' in the CONFIG-KEYS document or the wiki) and is
> called 'fsrc' (Flow Sampling under Resource Constraints). It is
> an implementation i did years ago loosely based on a paper coming
> from AT&T Labs. It aims at offering to the SQL database a sort of
> stream-lined number of aggregates; aggregates are weighted, ranked
> and sampled based on probability (which gives the dynamic/adaptive
> part of the approach); the resource constraint is expressed via
> the number of flows you want to end in the database (which is in
> turn seen as the constrained resource here).

We are using this feature to filter out small flows, but the problem is 
that they are not accounted for at all, so the database contents e.g. 
SUM(bytes) no longer reflect the interface totals.

What I would ideally like to see, but I realise that it's hard is 
something like this:

Initial filter selects flows over a certain size and non-selected flows 
can either be discarded (as now) or reaggregated by zeroing a selected 
feature, e.g. the destination port, and combined into a new single record 
if there is more than one of them. These, more highly aggregated records 
then continue down the preprocess chain, and if they fail to match a later 
condition then they can be aggregated again in a different way, e.g. by 
zeroing the destination IP address, and so on, until we end up with a 
single record where all the features were aggregated.

For example, sql_preprocess might look something like this:

minb = 10000, zero_dstip, minb = 10000, zero_dstport, minb = 10000, 
zero_srcport, minb = 10000, zero_srcip

Then any flows which together do not add up to enough bytes to pass the 
minb filters, even after aggregation, end up in a record where all the 
selector fields are zeroed out. Since there is no final minb condition, 
this row would always be added to the database, never rejected, so 
SUM(bytes) would again equal the interface counters for any given time 
range.

Cheers, Chris.
-- 
Aptivate | http://www.aptivate.org | Phone: +44 1223 760887
The Humanitarian Centre, Fenner's, Gresham Road, Cambridge CB1 2ES

Aptivate is a not-for-profit company registered in England and Wales
with company number 04980791.

_______________________________________________
pmacct-discussion mailing list
http://www.pmacct.net/#mailinglists

Reply via email to