[Oisf-devel] Linux af-packet::mmap enhancement
chetan loke
loke.chetan at gmail.com
Thu Jun 23 16:30:58 UTC 2011
On Thu, Jun 23, 2011 at 11:59 AM, Victor Julien <victor at inliniac.net> wrote:
> On 06/23/2011 05:35 PM, chetan loke wrote:
>
>> But let's say if we don't implement FANOUT then user-space can infact
>> achieve both HASH+LB.
>> If it's not present already, I can export the pre-computed 'rx_hash'
>> in the libpcap-descriptor/pkt-header.
>> Once the packet hits suricata, we can steer it an old-thread(who
>> already is working on this flow)
>> or round-robin it to the next available thread to achieve load-balance.
>
> Suricata can do this. Currently it's internal (and optional) load
> balancing is just as "blind" the rxhash approach (probably less even
> balanced even :). Actual load of the threads is not taken into account.
> But it would be possible it Suricata's architecture to improve this
> without too much effort I think.
>
> The disadvantage is that multiple threads/cpu's/cores will suddenly be
> handling the same packet, instead of just the one dealing with the
> FANOUT socket.
>
My description wasn't so clear. Actually what I meant was:
lookup_table : <rx_hash> <thread_id>;
thread_id = get_worker_th_id (pkt_hdr->rx_hash);
if (thread_id) {
/* This flow is HOT. steer this flow to the same thread */
enqueue_pkt_to_thread(thread_id);
} else {
/* This flow is COLD.No thread is handling this flow yet.*/
/* So queue it to the next thread */
enqueue_pkt_to_thread(GET_NEXT_THREAD(ROUND_ROBIN_POLICY));
update lookup_table;
}
So no two threads will work on the same flow.
> Cheers,
> Victor
regards
Chetan Loke
More information about the Oisf-devel
mailing list