Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 16 Jan 2014 16:02:37 +0000
From:      Nikolay Denev <nike_d@cytexbg.com>
To:        Adrian Chadd <adrian@freebsd.org>
Cc:        "Alexander V. Chernikov" <melifaro@freebsd.org>, "freebsd-net@freebsd.org" <freebsd-net@freebsd.org>
Subject:   Re: ECMP hash keys?
Message-ID:  <CA%2BP_MZGZtvqiAQEayz3nh1kN=RYHfoU%2BfsqCCrjqGikH1kMZWw@mail.gmail.com>
In-Reply-To: <CAJ-VmomP-JaVopS0aneeV82OFtM1Pvb=qKn__mn=ooDXOdgmQw@mail.gmail.com>
References:  <52D5138B.8050100@fsn.hu> <CA%2BP_MZFQU4%2B05Pk5cZ4NMZujD9vXDrV=mehN7_vz1OZ6r2-f1Q@mail.gmail.com> <52D6525D.50102@FreeBSD.org> <CAJ-VmomP-JaVopS0aneeV82OFtM1Pvb=qKn__mn=ooDXOdgmQw@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Jan 15, 2014 at 3:22 PM, Adrian Chadd <adrian@freebsd.org> wrote:
> On 15 January 2014 01:18, Alexander V. Chernikov <melifaro@freebsd.org> wrote:
>> On 14.01.2014 23:15, Nikolay Denev wrote:
>>>
>>> Hi,
>>>
>>> Currently it's implemented using Modulo-N Hash (RFC2991), see
>>> radix_mpath.c:rtalloc_mpath_fib()
>>
>> Yup. I'm going to change this to use flowid.
>>
>>>
>>> And as hash the xor of source and destination IP is supplied, look for
>>> rtalloc_mpath_fib() in ip_output.c :
>>>
>>>     ...
>>>     #ifdef RADIX_MPATH
>>>                          rtalloc_mpath_fib(ro,
>>>                              ntohl(ip->ip_src.s_addr ^ ip->ip_dst.s_addr),
>>>                              inp ? inp->inp_inc.inc_fibnum : M_GETFIB(m));
>>>     #else
>>>     ...
>>>
>>> I've tried to hack this to use m_pkthdr.flowid if it exists, but in my
>>> case my network cards were not setting this (vr(4) on soekris) so I
>>
>> You can try http://static.ipfw.ru/patches/netisr_ip_flowid.diff to get
>> flowid values generated by netisr.
>
> Hm, this is interesting. I wonder if we should (finally) add in the
> toeplitz hash here and then make sure we are hashing the frame based
> on the right header contents and direction (so transmit and receive
> path frames hash to the same value.)
>
> What do you think?
>
>
> -a

Hi Adrian,

Probably a stupid question, but I'm trying to understand more about this,
so basically the benefit of using essentially an additive hash function would be
that both directions of the same flow/connection would end up for
processing on the same core?

--Nikolay



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CA%2BP_MZGZtvqiAQEayz3nh1kN=RYHfoU%2BfsqCCrjqGikH1kMZWw>