On Tue, Apr 30, 2024 at 6:02 AM, Steffen Klassert <
steffen.klass...@secunet.com> wrote:

> Hi,
>
> thanks for your review!
>
> On Fri, Apr 26, 2024 at 02:38:27PM -0700, Warren Kumari via Datatracker
> wrote:
>
> Warren Kumari has entered the following ballot position for
> draft-ietf-ipsecme-multi-sa-performance-06: Discuss
>
> When responding, please keep the subject line intact and reply to all
> email addresses included in the To and CC lines. (Feel free to cut this
> introductory paragraph, however.)
>
> Please refer to https://www.ietf.org/about/groups/iesg/statements/
> handling-ballot-positions/ for more information about how to handle
> DISCUSS and COMMENT positions.
>
> The document, along with other ballot positions, can be found here:
> https://datatracker.ietf.org/doc/draft-ietf-ipsecme-multi-sa-performance/
>
> ----------------------------------------------------------------------
> DISCUSS:
> ----------------------------------------------------------------------
>
> Be ye not afraid -- see
> https://www.ietf.org/about/groups/iesg/statements/
> handling-ballot-positions/ on handling ballots, especially DISCUSS
> ballots...
>
> A DISCUSS is a request to have a discussion, and this is especially true
> in this case, because my mental model is somewhat hazy here...
>
> The document talks about negotiating multiple "Child SAs with the same
> Traffic Selectors". In my mental model, this looks sort of analogous to
> multiple parallel paths. The document doesn't seem to discuss how
> implementations should share traffic across these "paths" -- should it do
> something like ECMP and hash
> <something, e.g 5-tuple> to try and keep packets in a flow tied to the
> same CPU?
>
> Yes, packets of the same flow are tied to the same CPU. Modern NICs do a
> 'RSS hash' (RSS - Receive Side Scaling) over the headers and pin packets to
> CPUs based on the hash. Usually the NIC does this hashing based on L3/L4
> headers by default. Until now, IPsec implementations had to disable this
> feature because this creates reorder if different inner flows match the
> same Child SA. With this draft, each CPU has its own Child SA, so that
> reorder problem goes away and we can use the RSS hash for IPsec.
>
> Also in the other direction, when receiving IPsec we had before just one
> Child SA per Traffic Selector. So all packets had the same SPI and could
> not be parallelized using a RSS hash. Now, each CPU has its own Child SA
> and with that its own SPI what makes RSS hasing possible.
>


Excellent, thank you. This is a nice, and helpful, explanation….


> We were asked to leave out 'implementation details', so the draft does not
> say much about that.
>

That makes me sad, but Ok….




> Or is this something that is done automatically by the OS already (e.g
> because the existing L3 logic would just view these as parallel links) and
> it already knows what to do? Or is this something that IPSEC
> implementations handle themselves? Or is my mental model so broken that my
> question doesn't even make sense?
>
> Your mental model seems to be quite OK.
>
> The document also says that "if an implementation finds it needs to
> encrypt a packet but the current CPU does not have the resources to encrypt
> this packet, it can relay that packet to a specific CPU that does have the
> capability to encrypt the packet, although this will come with a
> performance penalty.". Cool... but does this lead to the potential of out
> of order packets? Is that what the "this will come with a performance
> penalty" is implying (in which case I'd suggest being a bit more explicit).
>
> The cited sentence has to be reworded, it is missleading. 'Not having the
> resources' means here 'there is currently no Chlid SA installed on that
> particular CPU'. To avoid packet loss, packets can be redirected to a
> different CPU until the SA comes up. Just move packets to a different CPU
> if the current CPU is overloaded would indeed introduce uncontrolled
> reorder.
>
> Maybe the sentence can be reworded like this:
>
> "if an implementation finds it needs to encrypt a packet but the current
> CPU does not have a CPU specific Child SA to encrypt this packet, it can
> relay that packet to another CPU that does have a Child SA in place to
> encrypt the packet, although this will come with a performance penalty."
>


Ah, yes, this makes sense now — I had understood it as "if the current CPU
does not have any spare resources (e.g because it is super busy being a
Quake server or trying to render a picture of a kitten)...". Your proposed
changes fixes this…

I will go clear my DISCUSS, and thank you very much for the tutorial.
W



> Steffen
>
_______________________________________________
IPsec mailing list
IPsec@ietf.org
https://www.ietf.org/mailman/listinfo/ipsec

Reply via email to