Hi,

Yes.

* grab an ixgbe NIC and the -HEAD driver; (or cxgbe - I haven't gone
and written RSS programming code for that just yet);
* patch it to use a symmetric RSS key;
* configure up N queues;
* run an instance of snort on each TX/RX ring from the NIC.

The last step requires that you have snort use netmap rather than just
straight bpf - or maybe somehow there's a way to glue bpf into a
single netmap ring.

I haven't wrapped all of this up and thrown it into FreeBSD-HEAD yet,
but i know that a symmetric RSS key works fine on 82599 hardware with
a fixed driver.


-a


On 22 September 2014 12:06, Elof Ofel <elof...@hotmail.com> wrote:
> Hi Nikolay.
>
> Unfortunetly no, that's not a solution.
> mon0 could in theory be a bridge0 with four 10 GE interfaces = 40 Gbps 
> theoretical input that need to be distributed over multiple virtual NICs. 
> Also, I have no control of the mirrored traffic, so it would be hard for me 
> to build and maintain bpf filters that tries to roughly balance the bandwidth 
> load.
>
> Any other suggestions?
>
> /Elof
>
>> Date: Mon, 22 Sep 2014 18:45:28 +0200
>> Subject: Re: How do I balance bandwidth over several virtual NICs?
>> From: nik...@cytexbg.com
>> To: elof...@hotmail.com
>> CC: freebsd-net@freebsd.org
>>
>> On Mon, Sep 22, 2014 at 5:12 PM, Elof Ofel <elof...@hotmail.com> wrote:
>> > I have a single NIC, mon0, that constantly receive 800 Mbps of mirrored 
>> > traffic.
>> > I want to split these 800 Mbps into smaller chunks and feed them to a 
>> > couple of virtual interfaces.
>> > Each virtual interface can then have instance of 'snort' inspecting its 
>> > traffic.
>> >
>> > Say approximately 200 Mbps per interface = four interfaces.
>> > That way, each of the four snort processes only get 200 Mbps of data to 
>> > inspect instead of having *one* single snort process (single-threaded) 
>> > trying to cope with 800 Mbps.
>> >
>> > (the problem I'm trying to solve is utilizing all cpu's. Currently one cpu 
>> > runs snort at 100% while all the other cpu's idle.)
>> >
>> >
>> > The important thing though is that all packets in the connection need to 
>> > be diverted to the same virtual NIC. You can't send the SYN to NIC0 and 
>> > the SYN-ACK to NIC1, 'cause then neither snort-process-0 nor 
>> > snort-process-1 see the other side of the connection.
>> > The loadbalancing must be based on a hash built from at least the 
>> > mac-addresses+IP-addresses.
>> >
>> >
>> > So, what I think I'm looking for is a way to configure a lagg0 interface 
>> > in loadbalance mode, that take all the incoming traffic on mon0 and 
>> > distribute it over four virtual member NICs. (these four NICs would then 
>> > probably be configured to run in monitor mode.)
>> >
>> >
>> > Do FreeBSD support what I'm looking for? How do I do it? Where should I 
>> > look?
>> >
>> > /Elof
>> >
>> > _______________________________________________
>> > freebsd-net@freebsd.org mailing list
>> > http://lists.freebsd.org/mailman/listinfo/freebsd-net
>> > To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"
>>
>> Since this is below one Gig, would running separate snort processes on
>> mon0 and using a BPF filter to split traffic work?
>>
>> --Nikolay
>
> _______________________________________________
> freebsd-net@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"
_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Reply via email to