Date: Mon, 22 Sep 2014 17:28:01 -0700 From: Adrian Chadd <adrian@freebsd.org> To: Jim Thompson <jim@netgate.com> Cc: "freebsd-net@freebsd.org" <freebsd-net@freebsd.org>, Elof Ofel <elofu17@hotmail.com> Subject: Re: How do I balance bandwidth over several virtual NICs? Message-ID: <CAJ-Vmon8b8Kz2xKLmnGsjX9mbvvzbuW6vy3a%2Bgt5g1TpfxYHEw@mail.gmail.com> In-Reply-To: <54200A0E-6337-40E1-B5DE-DC42F9CE8CCC@netgate.com> References: <DUB125-W13FDC584F5DF9881CF5FDEBCB30@phx.gbl> <CA%2BP_MZGA_uz_H_QsB%2BdgXEgbXNCjv7w-OToKby=ww%2BvKgnU4_Q@mail.gmail.com> <DUB125-W851F972702452D9809C8E5BCB30@phx.gbl> <CAJ-Vmo=NGGkOkPWQKZ=3gA3vYYyM2kcjd3m85ymdJY3q4ixxLw@mail.gmail.com> <DUB125-W51623651A926D99844D879BCB30@phx.gbl> <CAJ-Vmo=m9_K96BGr7GYMbEJuqb0x8NyUirKgRMZU71dCRBAGgA@mail.gmail.com> <54200A0E-6337-40E1-B5DE-DC42F9CE8CCC@netgate.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On 22 September 2014 15:35, Jim Thompson <jim@netgate.com> wrote: > >> On Sep 22, 2014, at 5:15 PM, Adrian Chadd <adrian@freebsd.org> wrote: >> >> On 22 September 2014 13:39, Elof Ofel <elofu17@hotmail.com> wrote: >>> Hi Adrian! >>> >>> Now this sounds promising! All my sensors use the ixgbe driver. >>> However, my skills in programming/compiling isn't vast. I know how to p= atch >>> and use poudriere. That's about it. >>> >>> I must admit I don't really understand what you mean with "patch it to = use a >>> symmetric RSS key", but it sounds like the functionality I'm looking fo= r is >>> not yet there in the driver. >> >> A few years ago a couple of researchers figured out you could abuse >> the toeplitz hash to do symmetric RSS hashing: >> >> http://www.ndsl.kaist.edu/~shinae/papers/TR-symRSS.pdf >> >> This means that the same RSS hash value is chosen no matter which >> direction the traffic is going on. >> This is what you need to ensure that the packets going both directions >> in a connection end up in the same NIC hardware receive ring. >> >> So, all you have to do (!) is: >> >> * grab freebsd-head, because the ixgbe driver there has some recent >> bug fixes that you need for this to completely work; >> * look at ixgbe_initialise_rss_mapping() - that's where the RSS key, >> mapping and RSS hash types are configured; >> * patch it to use the example symmetric RSS key that was provided in the= paper; > > possible that XOR-ing the values to be hashed will produce a similar resu= lt. Of course, this is software, not hardware generation of Toeplitz. > >> * patch it to only hash on IPv4 / IPv6 2-tuple, that way you don't end >> up with IPv4/IPv6 fragments in the wrong queue; > > I hope these two aren=E2=80=99t embedded in the code. The coming Intel d= evices both support the symmetric RSS key and > will correctly hash on ipv4/ipv4 4 tuple. > See section 7.1.10.1 and 7.1.10.3 in > http://www.intel.com/content/dam/www/public/us/en/documents/datasheets/xl= 710-10-40-controller-datasheet.pdf I think it'll still do the same thing - it'll not be able to 4-tuple IPv4 frames that are fragmented, as the non-first frame doesn't have the TCP/UDP information. (The support for symmetric RSS by XORing the source/destination bits is very nice - we'll have to teach freebsd's RSS code about that at some point.) -a
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-Vmon8b8Kz2xKLmnGsjX9mbvvzbuW6vy3a%2Bgt5g1TpfxYHEw>