On Mon, 21 Sep 2020, Rav Ya wrote:

I have been referring to this page (https://libreswan.org/wiki/XFRM_pCPU) and 
it doesn't say that XFRM is only supported for ikev2. I
am setting up a shared VTI for 500 Remote Clients IPSec (xAUTH using PAM, 
IKEv1) tunnels. I have attached my ipsec.conf at the
bottom of this email.

The goal of pCPU is to use more than 1 CPU for a single IPsec SA. If you
have 500 clients you have 500 IPsec SA's, which get roughly load
balanced over your CPUs already. It should not help your case.

What I understand from your response: Please correct me
1. Lbreswan experimental versions only support pCPU with IKEv2. (Lod balancing 
one big IPSec flow over multiple vCPUs.)

Question: For my use case (500 Clients, xAUTH using PAM, IKEv1 ) the SAs per 
client will be created per vCPU.
 *  The vCPU will be picked randomly (How will the 500 SAs be distributed?) 
500/6 = 82 SAs per CPU. 
 *  There shall be no duplicate SAs for a single connection over multiple vCPU 
because there is no pCPU XFRM. Correct?
 *  Is there a way fro me to check how any SAs got allocated to a vCPU on my 
system?

I don't know the answers for these.

My Observation: When I start pushing traffic across all the 500 SAs 
 *  Some times the load isn't distributed evenly and I see some vCPUs geting 
overutilized and start slowing down the Libreswan packet
    processing rate. 

Most CPU should be going into IPsec packets inside the kernel, not IKE
packets inside libreswan.

 *  The Libreswan server itn't able to process packets fast enough and the TAP 
interface (tx queue) on the KVM virtulization host
    starts dropping packets.

Clarify "dropping packets". If it is not IKE packets, than libreswan is
not involved. It is the kernel.

Currently, my ipsec clients are using: ( Any advice?) vCPU is Intel(R) Xeon(R) 
Gold 6126 CPU @ 2.60GHz passthrough Host VM
ike=3des-sha1-modp1024

3des is 8x more cpu intensive compared to aes. Use ike=aes-sha1-modp1536
modp1024 is too weak and recent libreswan has removed support for this.

esp=aes256-md5-modp1024

If your clients support it, use esp=aes_gcm256. It is much faster than
aes+md5/sha1/sh2

It seems you problem might be more related to libreswan speed
optimializations with NSS in the last few versions. Are you at
least running 3.32 ?

You can benchmark the libreswan cpu usage using:

        sudo ipsec whack --debug cpu-usage

Note that switching your clients to IKEv2 will also greatly improve your
speed:

- Less (encrypted) IKE packets to setup conneections
- less retransmits because initiator is responsible in IKEv2
  (in IKEv1, both ends retransmit)

certificate handling has also greatly improved in 3.32 leading to a 5 to
10 times better performance due to certificate caching and expiration,
making the nss lookups faster. it also caches the (encrypted) private
key which is useful for busy servers.

I don't think pCPU is a fix for what your problem is really is. Upgrade
to latest libreswan on the server, and if possible switch to IKEv2.

Paul
_______________________________________________
Swan mailing list
Swan@lists.libreswan.org
https://lists.libreswan.org/mailman/listinfo/swan

Reply via email to