From: Christophe Gouault <christophe.gouault@6wind.com>
To: netdev@vger.kernel.org
Subject: Re: IPsec: Why do pfkey_getspi and xfrm_alloc_userspi call xfrm_find_acq_byseq?
Date: Thu, 19 Aug 2010 14:55:21 +0200 [thread overview]
Message-ID: <4C6D29B9.5070403@6wind.com> (raw)
Dear netdev developers,
The call to xfrm_find_acq_byseq() by the pfkey_getspi() and
xfrm_alloc_userspi() functions is quite costly and proves to entail
scalability issues when performing thousands of IKE negotiations with
racoon (from ipsec-tools distribution) or charon (from strongswan
distribution).
Removing this call in the kernel drastically accelerates the processing
and does not seem to entail functional problems.
For now, I don't see the point of this call. I need to understand its
purpose, because I'm highly tempted to simply remove it.
Regards,
Christophe
> Dear netdev developers,
>
> I would like to understand why the pfkey_getspi and xfrm_alloc_userspi
> functions call xfrm_find_acq_byseq() and try to find an reuse an SA in
> state XFRM_STATE_ACQ with the same sequence number and destination
> address as the GETSPI request.
>
> As far as I understand, SAs in state XFRM_STATE_ACQ can only be created
> as a result of a user call to GETSPI or a kernel ACQUIRE message.
> - GETSPI is invoked by an application in order to create a temporary SA
> with a unique SPI, typically during an IKE negotiation, to create the
> inbound SA of the pair. No later GETSPI will be done on this SA.
> - An acquire message is triggered by the kernel and creates a temporary
> outbound SA whose SPI will be chosen by the remote IKE peer.
> No later GETSPI will be done on this SA.
>
> In which case can GETSPI find and reuse an SA that matches the message
> sequence number and destination address?
> A second lookup is done just after, with xfrm_find_acq (this function
> uses a hash table). Wouldn't this lookup find this SA too?
>
> The call to xfrm_find_acq_byseq is quite costly (the whole SAD is looked
> up every time GETSPI is called), so I'd like to understand what its
> purpose is.
>
> Thanks in advance,
>
> Christophe
next reply other threads:[~2010-08-19 12:57 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-08-19 12:55 Christophe Gouault [this message]
2010-08-22 7:53 ` IPsec: Why do pfkey_getspi and xfrm_alloc_userspi call xfrm_find_acq_byseq? David Miller
2010-08-23 13:30 ` Christophe Gouault
2010-08-23 14:47 ` Christophe Gouault
2010-09-12 18:47 ` David Miller
-- strict thread matches above, loose matches on Subject: below --
2010-08-17 8:46 Christophe Gouault
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=4C6D29B9.5070403@6wind.com \
--to=christophe.gouault@6wind.com \
--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.