Hi Varun,

Pls find my inputs inline.

Regards

Ashish Mittal

On Sat, 25 Feb, 2023, 11:23 pm Varun Tewari, <tewari.va...@gmail.com> wrote:

> Hello Team,
>
> I am new to VPP and probing this technology to build an IPSec responder
> for our use-cases.
> Our initial tests do show the performance might of VPP.
> However on probing this further in depth, I noticed a few limitations and
> I am dropping this rider seeking clarification around these.
> All my observations are for VPP 23.02 and am using VPP’s Ikev2 plugin.I am
> using a linux with strongswan as the peer for my tests.
>
> My observations:
>
> 1.
> VPP seems doesn’t support multiple child-sa (phase 2 sa, ipsec sa) within
> the same tunnel.
> Single IPsec SA works fine. An interface ipip0 gets created and SPD shows
> the correct binding (show ipsec all).
> However ,when I bring up the second child-sa for a different TS, I se the
> SPD gets overwritten for the interface and the new child-sa gets installed
> overwriting the previous one.
> For sure this is leading to traffic drop for the traffic hitting the first
> TS.
>
> Q: Is this by design or have I got my config wrong in some way.
>
> Here the quick output from the VPP and strongswan
> sudo swanctl --list-sas
> net-1: #11, ESTABLISHED, IKEv2, abb046c62a60c38a_i* dc95e079629854ca_r
>   local  'roadwarrior.vpn.example.com' @ 17.17.17.1[500]
>   remote 'vpp.home' @ 17.17.17.2[500]
>   AES_CBC-256/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_2048
>   established 848s ago, reauth in 84486s
>   net-1: #16, reqid 16, INSTALLED, TUNNEL, ESP:AES_CBC-192/HMAC_SHA1_96/ESN
>     installed 848s ago, rekeying in 84690s, expires in 85552s
>     in  cec3d263,  24717 bytes,   107 packets,   687s ago
>     out a1816d8f, 179718 bytes,   778 packets,     0s ago
>     local  16.16.16.0/24
>     remote 18.18.18.0/24
>   net-2: #17, reqid 17, INSTALLED, TUNNEL, ESP:AES_CBC-192/HMAC_SHA1_96/ESN
>     installed 686s ago, rekeying in 84831s, expires in 85714s
>     in  cd14add0, 122199 bytes,   529 packets,     2s ago
>     out de989d78, 122199 bytes,   529 packets,     2s ago
>     local  16.16.15.0/24
>     remote 18.18.18.0/24
>
> vpp# show ipsec all
> [0] sa 2181038080 (0x82000000) spi 3468939875 (0xcec3d263) protocol:esp
> flags:[esn anti-replay ]
> [1] sa 3254779904 (0xc2000000) spi 2709613967 (0xa1816d8f) protocol:esp
> flags:[esn anti-replay inbound ]
> [2] sa 2181038081 (0x82000001) spi 3440684496 (0xcd14add0) protocol:esp
> flags:[esn anti-replay ]
> [3] sa 3254779905 (0xc2000001) spi 3734543736 (0xde989d78) protocol:esp
> flags:[esn anti-replay inbound ]
> SPD Bindings:
> ipip0 flags:[none]
>  output-sa:
>   [2] sa 2181038081 (0x82000001) spi 3440684496 (0xcd14add0) protocol:esp
> flags:[esn anti-replay ]
>  input-sa:
>   [3] sa 3254779905 (0xc2000001) spi 3734543736 (0xde989d78) protocol:esp
> flags:[esn anti-replay inbound ]
> IPSec async mode: off
> vpp#
>
> All 4 SAs exist, however the SPD binding shows the latest 2, that
> overwrote the SAs for the previous TS leading to traffic drop.
>
AM=> IKEv2 plugin is experimental state yet. This behaviour that you are
observing, is unfortunately current implementation. Consider it either a
bug or simplification done for experimental implementation.

>
>
> 2.
> Overlapping subnets between different Ipsec tunnel
>
> When Ikev2 completes, I see, it creates an pip interface and relevant
> Child-SAs and ties them to the interface to protect traffic.
> So far all is good.
> Now, we add an route into VPP to route the traffic via this ipip interface
> for each of the source subnet that are expected to be protected by the
> tunnel.
> This works fine as long as I keep the subnets distinct.
>
> Q: What’s the usual strategy when we have overlapping subnets in two
> distinct tunnels ?
> T1: SrcSubnet1 DestinationSubnet1
> T2: SrcSubnet1 DestinationSubnet2
>
> When T1 is brought up, we add a FIB entry for SrcSubnet1 via ipipT1 and
> things works fine.
> When T2 comes up, ipipT2 is created and now I need to add FIB entry for
> SrcSubnet1 via ipipT2 and as expected things break here.
> AM=> I am not sure but it can be done via ABF instead of FIB entries. I
> have never tried that but ABF is used for that.
>
> 3.
> IpIp vs Ipsec interface
> For Route based VPP IPsec, I see two options as per the documentation.
> The doc says, Ikev2 will create an ipsec interface, however it creates an
> ipip interface. Is this expected ?
> The interface works okay for me, but wasn’t sure why the difference.
> Further on probing the code, I do see Ikev2 plugin is creating an ipip
> interface not ipsec interface as the doc says.
> AM=> Latest implementation uses ipip tunnel instead of ipsec interface.
> You are looking at older documentation so kindly check latest one.
>
> Thank you in advance for all your comments here.
>
> *शुभ कामनाएँ*,
> Varun Tewari
>
>
> 
>
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#22637): https://lists.fd.io/g/vpp-dev/message/22637
Mute This Topic: https://lists.fd.io/mt/97230775/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/leave/1480452/21656/631435203/xyzzy 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to