Date: Fri, 9 Sep 2011 08:22:39 -0400 From: John Baldwin <jhb@freebsd.org> To: freebsd-net@freebsd.org Cc: "Alexander V. Chernikov" <melifaro@yandex-team.ru>, jfvogel@gmail.com, melifaro@ipfw.ru Subject: Re: igb/ixgbe RSS/RX queues for non-IP traffic Message-ID: <201109090822.39325.jhb@freebsd.org> In-Reply-To: <4E678521.7080006@yandex-team.ru> References: <4E678521.7080006@yandex-team.ru>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201109090822.39325.jhb>