From: Vijay Kumar <vjkumar2...@gmail.com> Date: Monday, 22 February 2021 at 16:50 To: Neale Ranns <ne...@graphiant.com> Cc: vpp-dev <vpp-dev@lists.fd.io> Subject: Re: [vpp-dev] Why does ipsec plugin create ipip interface for each IPSec SA installed by ikev2 plugin Hi Neale,
Please find my comments inline. On Mon, Feb 22, 2021 at 8:41 PM Neale Ranns <ne...@graphiant.com<mailto:ne...@graphiant.com>> wrote: Hi Vijsy, From: vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io> <vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io>> on behalf of Vijay Kumar via lists.fd.io<http://lists.fd.io> <vjkumar2003=gmail....@lists.fd.io<mailto:gmail....@lists.fd.io>> Date: Monday, 22 February 2021 at 12:59 To: vpp-dev <vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io>> Subject: [vpp-dev] Why does ipsec plugin create ipip interface for each IPSec SA installed by ikev2 plugin Hi, I configured VPP as a responder while Strongswan was the initiator. I configured ikev2 profile and tested IPSec. While testing with VPP as responder, I found that for every IPSec created, a logical interface "ipipx" is created in vpp As the peer network route is added via ipip0 interface, this creates an routing extra hop for every pkt that goes out of VPP in the sense that for all IPSec packets the first route entry would have ipipx as outgoing interface while the 2nd lookup for the ipipx would have another route entry with the physical interface as the outgoing interface. When there are thousands of tunnels, say 100K or more IPSec SAs, I think this would cause performance issues due to the extra route lookup for each packet? there is no second lookup, the forwarding to the tunnel’s destination is ‘cached’ when it is created and used in the data-plane. >>>> Ok clear. But where is the route lookup result cached? Is this cache in >>>> SPD entry or SAD entry? It’s in the tunnel’s midchain adjacency. If there are 1K IPSEC SAs with 1K different peers, does it mean that there are 1K ipipx interfaces cre ated in VPP? Yes. Please clarify why the "ipip" tunnel interface creation is required? How can this be avoided for the case where there are many SAs? I think it is better to alter the code to prevent creation of this logical interface and allow IPSec plugin to just do encryption and allow the next node "IP4-lookup" to do the routing (via phy interface) How would you choose which SA to use? Are you referring to route v. policy based VPNs? https://wiki.fd.io/view/VPP/IPSec >>>>> I am referring to policy based VPNs (where one configures ACL/pkt filters and action) Finding an SA based on an ACL/policy is not as efficient as routing and tunneling, since it requires as tuple based lookup. VPP’s implementation of this search, in the SPD, is linear, so scales very poorly. If you want to address interface scale, then maybe you could look at how the IKE plugin could use multipoint tunnels instead. /neale /neale Regards, Vijay Kumar N
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#18785): https://lists.fd.io/g/vpp-dev/message/18785 Mute This Topic: https://lists.fd.io/mt/80822509/21656 Group Owner: vpp-dev+ow...@lists.fd.io Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-