Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 29 Jun 2002 05:34:30 -0700
From:      Luigi Rizzo <rizzo@icir.org>
To:        net@freebsd.org
Subject:   ipflow_has ?
Message-ID:  <20020629053430.A70505@iguana.icir.org>

next in thread | raw e-mail | index | archive | help
Hi,
looking at the code in ip_flow.c, i notice that the hash
function ipflow_hash() uses both the source and destination
address as parameters, and additionally, it never considers
the lower two bits of the destination addres. The code is below,
IPFLOW_HASHBITS is 6:

        unsigned hash = tos;
        int idx;
        for (idx = 0; idx < 32; idx += IPFLOW_HASHBITS)
                hash += (dst.s_addr >> (32 - idx)) + (src.s_addr >> idx);
        return hash & (IPFLOW_HASHSIZE-1);

Of course it is just an optimization, but shouldn't routing
decisions be based on the dst address only ?

Just using the dst address would slightly simplify the function,
and especially has the potential of collapsing a lot of information
in the ipflow cache -- consider the case of a router box in front
of a busy web server.

Comments ?

	cheers
	luigi


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020629053430.A70505>