igb/ixgbe RSS/RX queues for non-IP traffic
John Baldwin
jhb at freebsd.org
Fri Sep 9 12:22:41 UTC 2011
On Wednesday, September 07, 2011 10:52:17 am Alexander V. Chernikov wrote:
> Hello list!
>
> (CC'in Jack Vogel since this is intel drivers/hardware specific question)
>
> There are some techniques for assigning network traffic to different NIC
> RX queues (bound to different CPUs/cores).
> The main problem for all techniques is avoiding any possible packet
> reordering in single flow.
>
> Most obvious (and most used) are described in Microsoft NDIS driver
> specification:
> Hashing is done on various tuples like:
> * IPv46 src/dst + TCP/UDP src/dst port for TCP/UDP
> * IPv46 src/dst for general IPv46 traffic
>
> igb's have a bit more options like assigning selected ethertype or TCP
> SYN to different queue (See section 7.1.1 of 82576EB datasheet)
> ixgbe (82599) goes even more far: flow director functionality permits 8K
> 'perfect match' filters allowing to select any subset in:
> * vlan
> * IPv46 src/dst
> * L4 proto
> * TCP/UDP/SCTP protocol ports
> and even 'flexible 2-byte tuple anywhere in the first 64 bytes of the
> packet'
>
> There are other possibilities to assign traffic to different queues in
> ixbge like using .1q priority filed (DCB functionality)
> More information can be found in sections 7.1.2 (RX queues assignment),
> 7.1.2.7(Flow Director), 7.7.1 (DCB) of 82599 datasheet
>
> However, there are many setups where PC can be used as platform for
> routing/dispatching non-IP traffic.
> PPPoE server is a typical example.
>
> People have to do some tricks (link aggregation, non-direct ISR) to get
> traffic dispatched by more than single CPU/core, but this much less
> efficient.
> I'm a bit curious: why some generic hashing mechanism based on something
> like 'flexible 2-byte tuple anywhere in the first 64 bytes of the
> packet' were not added?
> It can be (at least from my point of view) easily based on (for example)
> flow director functionality.
>
> Particularly I'm trying to figure out how can I use all this variety of
> filters to get MPLS traffic split to different RX queues.
>
> Maybe someone can point me to the right direction?
There is another thread on net@ currently talking a good bit about this. It
started with a post with a patch to support the traffic steering on ixgbe
adapters using sysctls.
--
John Baldwin
More information about the freebsd-net
mailing list