Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 01 Jul 2002 13:31:56 +0200
From:      Andre Oppermann <oppermann@pipeline.ch>
To:        Luigi Rizzo <rizzo@icir.org>
Cc:        net@freebsd.org
Subject:   Re: ipflow_has ?
Message-ID:  <3D203DAC.B32AF1A8@pipeline.ch>
References:  <20020629053430.A70505@iguana.icir.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Luigi Rizzo wrote:
> 
> 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 ?

Routing decisions yes. But ipflow is about flows. And flows are from
one IP to another. This is why both is being hashed.

> 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.

If you change that please rename it to route_cache or so but no it
shouldn't be called ipflow anymore then.

This caching only helps in an Intranet where you have only a handful
of routes. If you do Internet routing with many destinations or you
have a full view then it'll make the routing slower because it is
busting/cycling the cache all the time.

-- 
Andre

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?3D203DAC.B32AF1A8>