[PATCH] Re: Using the argus server as a NetFlow listener

Terry Burton tez at terryburton.co.uk
Fri Oct 26 11:58:00 EDT 2007


On 10/24/07, Carter Bullard <carter at qosient.com> wrote:
> Thanks for the patches.  I'll take a look and integrated as needed.
> The -d option on radium "toggles" the daemon flag, so if the
> /etc/radium.conf file has the DAEMON variable set to "on", then
> the -d option will turn it off, so check that.

Hi Carter,

I noticed that was the case but that the behaviour differed from that of argus.

> I know you had the -X option, so I'll make sure that the
> DAEMON flag setting is cleared when you use the -X option.

Excellent, that would seem to be the best solution. Thanks.

> If you have any problems, don't hesitate to send to the list.

A short while after running radium -X -C -S 1006 I noticed that the
receive queues for the sockets bound to the NetFlow port had grew to
their maximum size without radium occupying any notable CPU resource.

Upon investigating I found that the ArgusReadStream function was
invoking ArgusReadCiscoDatagramSocket which reads via recvfrom only
one single message/packet from the NetFlow UDP socket. After this
ArgusReadStream exits and radium sleeps for some ~0.5sec interval.
Since our router generates significantly more netflow packets than
~2/sec, the incoming UDP queue is not consumed fast enough to keep up.

Presumably there ought to be a conditional loop around the either the
recvfrom or select system calls for this socket to detect the
instances when a single read is insufficient to entirely drain the
queue. Since I am unsure at what level you would think that this
conditional should be placed (ArgusReadCiscoDatagramSocket,
ArgusReadStream, or even further out) I have not attempted to fix this
myself.

Please let me know if I am thinking along the right lines and if you
would like me to provide any further information or testing for this.


Warm regards,

Tez



More information about the argus mailing list