Looking for help with RSS IPv6 - need software hash code!
mohamed chebbi
mohamedd.chebbi at yahoo.fr
Mon Mar 9 18:48:24 UTC 2015
Hi adrian
can you please feed the link to the RSS specification.
Le 23/02/2015 21:38, Adrian Chadd a écrit :
> Hi!
>
> The last annoyingish bit for IPv6 RSS support is a full software hash
> routine to calculate an RSS hash based on the various fields in the
> IPv6 header. I'm unfortunately out of spare cycles to try and finish
> it so I'm asking for help.
>
> In order to support this in the kernel we need to not only know what
> to do with the hardware RSS, but also have a fallover path to software
> hashing if the NIC doesn't hash it for us, or doesn't hash it
> correctly. For example, if we get IPv4/IPv6 fragments (which yes, are
> a thing, don't tell me they're not), we need to reassemble the
> fragments into a single frame, and then re-calculate the RSS hash on
> the reassembled frame header to figure out where it would've gone. We
> have to do this because the RSS hash value is also used as an index
> into the PCBGROUP hash table array - so no matter whether packets in a
> flow are fragmented or not, they're correctly serialised into the same
> netisr queue and the PCB information for that flow is in the same
> PCBGROUP array bucket.
>
> For doing "correct" RSS, we need to have support for hashing various
> fields and this isn't just limited to 2-tuple / 4-tuple hashing. IPv6
> has a bunch of mobility header options and RSS has support for these
> (the TCP_EX and UDP_EX fields.)
>
> I've done the software hashing path for IPv4, but I need someone to
> help me do the IPv6 RSS hash calculation for all the variations - IPv6
> 2-tuple IPv6 TCP, IPv6 UDP, IPv6 TCP_EX (mobility), UDP_EX (mobility.)
> The microsoft RSS specification is online and freely available; it has
> all of these as examples.
>
> So, I'm asking for help. If you're able to help, please look at the
> code in -HEAD in sys/netinet/in_rss.c and sys/netinet6/in6_rss.c.
> You'll see what's missing. You don't need a NIC that has RSS enabled;
> if you enable RSS and PCBGROUPS in the kernel (and bump up the number
> of netisr queues; that still isn't auto-set at boot time) then you'll
> see that traffic will get distributed by software hashing of the
> packet headers.
>
> Thanks!
>
>
>
>
> -adrian
> _______________________________________________
> freebsd-net at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscribe at freebsd.org"
>
More information about the freebsd-net
mailing list