From owner-freebsd-net@FreeBSD.ORG Mon Mar 9 18:48:24 2015 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 18B88525 for ; Mon, 9 Mar 2015 18:48:24 +0000 (UTC) Received: from nm50-vm5.bullet.mail.ne1.yahoo.com (nm50-vm5.bullet.mail.ne1.yahoo.com [98.138.121.149]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id D162679E for ; Mon, 9 Mar 2015 18:48:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.fr; s=s2048; t=1425926723; bh=a7qUoyhYPBLfjVWA3pAQuwG0sT+p3399KfFFl8EDduo=; h=Date:From:To:Subject:References:In-Reply-To:From:Subject; b=tyWMiMSS5JYHLIYbcFYI76KLSeq2l2VL1A2dcn20A4it7MBs9cE+20a/1zBAG8McV8pZOwINgJRvNir1jvk8EMwwlRupaqAljctQskGqPUQ0oRoJiGu21C4JBDEhFdtWhtI9s6h3jokuo/LOQvJ6psY9ti2yzs2mrKBlfAgo2KsSBSR0URAdGpszDFMiJ0HV/AwSLFddFNVbpugLVpoC/JfM+9arnyW+xUvbKAd5rDCdRO0//By+w/31tn3OLgSp+PjYchDeZVfcC0jNiTLd4abgBiuoSvn4jHwEUfoNcoZ3l/e60PtWyD7gbLeyAejLmduNCNU4DCqrkXVYzWbDuQ== Received: from [127.0.0.1] by nm50.bullet.mail.ne1.yahoo.com with NNFMP; 09 Mar 2015 18:45:23 -0000 Received: from [98.138.226.178] by nm50.bullet.mail.ne1.yahoo.com with NNFMP; 09 Mar 2015 18:42:23 -0000 Received: from [212.82.98.52] by tm13.bullet.mail.ne1.yahoo.com with NNFMP; 09 Mar 2015 18:42:23 -0000 Received: from [46.228.39.68] by tm5.bullet.mail.ir2.yahoo.com with NNFMP; 09 Mar 2015 18:42:22 -0000 Received: from [127.0.0.1] by smtp105.mail.ir2.yahoo.com with NNFMP; 09 Mar 2015 18:42:22 -0000 X-Yahoo-Newman-Id: 896027.5125.bm@smtp105.mail.ir2.yahoo.com X-Yahoo-Newman-Property: ymail-4 X-YMail-OSG: gaARFDEVM1mVLb_Nm2xayWUIyXvN0W81ttlKPt.X_iw81yu lP4pTdeWqF.Ac_m4dZhXYA4t3A7TjseEXw435x.LRvnEj8zA8jDwwy7OBFGH oYylx6.Jkp2kfOKKd1uLVSITnthXqHl6PmZ3UREVlKHmTPihrGQwmqGQdYdw SuadS6EUOaexLpFEwT5qTG86D1EuuukA6.pJ87UVmeM3kyDXKlbTDFfTpurd cYijfst_JsI7LzxCvbJ.ut.Z1h0r837CZbfRm6TUNbZPJqUOkvSjkoaZZOk4 a7_jRUMKwTxcMxQa.F0VpEw4X1x82oweZS1VMIFROaA10YhNA6_iJVeXbdff M6tVA4CwlAHzCN965H5Sq1pUuNBDfYMpwkxPxN25ztUbWhcO2tBtmaUbGeCU Z8.Z2sU3VtaiTjO2obJdOcbqoxXjMeQ2BiMJknm5W4TFvQO.MOkOG5cGyco. fyoJyoQomZLNAo.SzHJTEgDNlm0m5uebnOZWfPkL4kqxQ0mtkJf7TyFi_Jsu phB8U6DOmVgzB3X3uGoRHzXmkCQ-- X-Yahoo-SMTP: jZMnUUWswBBeJFVzzFDPPf5Hjv6RGVDA8l5fyw-- Message-ID: <54FDE98B.8030309@yahoo.fr> Date: Mon, 09 Mar 2015 19:42:19 +0100 From: mohamed chebbi User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 MIME-Version: 1.0 To: freebsd-net@freebsd.org Subject: Re: Looking for help with RSS IPv6 - need software hash code! References: In-Reply-To: Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 8bit X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 Mar 2015 18:48:24 -0000 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@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-net > To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org" >