[Bro-Dev] 0MQ security considerations

Matthias Vallentin vallentin at icir.org
Thu Jul 28 12:05:28 PDT 2011


> That said, keep in mind that some libraries (e.g. DataSeries) actually 
> spawn additional worker threads.  

Is it possible to configure the number of threads DataSeries uses?

> I don't understand this bit.  Say we have 10 things to log: {A, B, C, 
> ... J}, and we queue 8 messages before we flush + rotate (for the sake 
> of argument)
> 
> Log+Flush+Rotate task = {A, B, C, D}      ---> Thread 1
> Log+Flush task = {E, F, G, H}   ---> Thread 2
> Log+Flush+Finish task = {I, J}   ---> Thread 3
> 
> In this case, it seems possible that thread 3 could complete before 
> threads 1 and 2, unless we forced tasks to lock the log file upon 
> execution. . . but if we did that, I think the locking order would 
> become less predictable as the system's load increased, leading to oddly 
> placed chunks of log data and / or dropped messages if the file were to 
> be closed before a previous rotate message made it to the logger.

This is a good example of hot to not use task-based parallelism. As
there exist inter-task dependencies, they have to be processed
sequentially. For example, say these 10 things to log are generated for
18 http_reply events. What I was saying is that you have one task for
all dependent actions/messages/steps:

    Event  1: Log+Flush+Rotate+Log+Flush+Finish task = {A, ..., J}
    ...
    Event 18: Log+Flush+Rotate+Log+Flush+Finish task = {A, ..., J}

Say the Log Manager component has 3 threads associated, then each thread
would process 6 events, assuming a simple uniform scheduling strategy.

> Kind of.  Let me throw together a diagram and send it out; it's 
> something that should probably end up in the documentation anyway :)

Sounds good. This stuff is much better to comprehend with a visual aid!

> I was more attempting to illustrate the parallel between bro's existing 
> cluster architecture and a more traditional task-oriented model (as I 
> understand it) than I was trying to argue that packets should 
> necessarily be classifiable as "tasks" in the strictest sense of the word.

Yup, I understood it that way and think it's a nice analogy.

    Matthias


More information about the bro-dev mailing list