From: "Timo Teräs" <timo.teras@iki.fi>
To: Herbert Xu <herbert@gondor.apana.org.au>
Cc: netdev@vger.kernel.org
Subject: Re: [PATCH] xfrm: cache bundle lookup results in flow cache
Date: Fri, 19 Mar 2010 09:27:57 +0200 [thread overview]
Message-ID: <4BA3277D.10609@iki.fi> (raw)
In-Reply-To: <4BA317CE.4050503@iki.fi>
Timo Teräs wrote:
> Herbert Xu wrote:
>> On Fri, Mar 19, 2010 at 07:48:57AM +0200, Timo Teräs wrote:
>>> But it always matches. The caching happens using the inner
>>> flow. Inner flow always matches with the same bundle unless
>>> the bundle expires or goes stale. What happens is that I get
>>> multiple cache entries per-inner flow each referencing to the
>>> same bundle.
>>
>> Sorry for being slow, but if it always matches, doesn't that mean
>> you'll only have a single bundle in the policy bundle list? IOW
>> why do we need this at all?
>
> No. The bundle created for specific flow, matches always later
> that flow.
Just figured that's it's easier to explain with an example.
We have SPD:
10.1.0.0/16 - 10.2.0.0/16 tunnel
1.2.3.4 - 4.3.2.1
Now we get n+1 clients to connect to server in 10.2.0.1.
They each get separate bundle, since the xfrm_dst will be
created and search using flow id's like:
src 10.1.x.x dst 10.2.0.1
So there's one xfrm_policy and xfrm_state, but n+1
xfrm_dst's.
Since the flow cache caches the result of lookups on the
inner flow "10.1.x.x->10.2.0.1" basis, it always returns
matching valid bundle in O(1) time unless the xfrm_dst
expired.
Currently it's looked up with O(n) search in find_bundle.
Same thing happens with wildcard transport mode SPD's.
E.g. SPD:
0.0.0.0/0 - 0.0.0.0/0 proto gre, transport
We are talking with gre to n+1 tunnel destinations.
We get n+1 xfrm_dst's in that xfrm_policy. Flow cache
works on inner flow using flows like:
src 1.2.3.4 dst 4.3.2.1 proto gre
And can keep in cache the right policy always, and
the bundle to use as long as it stays valid.
Hopefully this explains why I think the patch is
useful.
- Timo
next prev parent reply other threads:[~2010-03-19 7:28 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-15 12:20 [PATCH] xfrm: cache bundle lookup results in flow cache Timo Teras
2010-03-17 13:07 ` Herbert Xu
2010-03-17 14:16 ` Timo Teräs
2010-03-17 14:58 ` Herbert Xu
2010-03-17 15:56 ` Timo Teräs
2010-03-17 16:32 ` Timo Teräs
2010-03-18 19:30 ` Timo Teräs
2010-03-19 0:31 ` Herbert Xu
2010-03-19 5:48 ` Timo Teräs
2010-03-19 6:03 ` Herbert Xu
2010-03-19 6:21 ` Timo Teräs
2010-03-19 7:17 ` Herbert Xu
2010-03-19 7:27 ` Timo Teräs [this message]
2010-03-19 0:32 ` Herbert Xu
2010-03-19 7:20 ` Herbert Xu
2010-03-19 7:48 ` Timo Teräs
2010-03-19 8:29 ` Herbert Xu
2010-03-19 8:37 ` Timo Teräs
2010-03-19 8:47 ` Herbert Xu
2010-03-19 9:12 ` Timo Teräs
2010-03-19 9:32 ` Herbert Xu
2010-03-19 9:53 ` Timo Teräs
2010-03-20 15:17 ` Herbert Xu
2010-03-20 16:26 ` Timo Teräs
2010-03-21 0:46 ` Herbert Xu
2010-03-21 7:34 ` Timo Teräs
2010-03-21 8:31 ` Timo Teräs
2010-03-22 3:52 ` Herbert Xu
2010-03-22 18:03 ` Timo Teräs
2010-03-23 7:28 ` Timo Teräs
2010-03-23 7:42 ` Herbert Xu
2010-03-23 9:19 ` Timo Teräs
2010-03-23 9:41 ` Herbert Xu
2010-03-22 1:26 ` David Miller
2010-03-22 1:28 ` David Miller
2010-03-22 1:32 ` Herbert Xu
2010-03-22 1:36 ` David Miller
2010-03-22 1:40 ` Herbert Xu
2010-03-22 3:12 ` David Miller
2010-03-22 3:52 ` Herbert Xu
2010-03-22 18:31 ` Timo Teräs
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4BA3277D.10609@iki.fi \
--to=timo.teras@iki.fi \
--cc=herbert@gondor.apana.org.au \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.