Hi Vijay,

Before establishing the ike session please enable ikev2 dataplane logging:
ikev2 logging
event-logger trace api disable
event-logger clear
ikev2 set logging level 5

Once the ike session was established, please share the output of:
show event-logger
show ipsec all
show ikev2 profile

Best
Ben

> -----Original Message-----
> From: vpp-dev@lists.fd.io <vpp-dev@lists.fd.io> On Behalf Of Neale Ranns
> Sent: lundi 8 mars 2021 09:38
> To: vjkumar2...@gmail.com; vpp-dev <vpp-dev@lists.fd.io>
> Subject: Re: [vpp-dev] Traffic is not put on IPSec tunnel intf ipip0
> 
> Hi Vijay,
> 
> 
> 
> 'unknown IP protocol' means there is no registered handler for ESP. From
> the info you gave I am assuming you are using ip-ip tunnel protection with
> the SAs in transport mode. In that case the incoming packet should
> classify to the ip-ip tunnel. The fact that it doesn't, and the fact that
> the per through the tunnel is unreachable, suggests that the src,dst
> addresses on this tunnel are incorrect. The VPP IKE plugin would have set
> these addresses correctly for you based on the IKE session end point.
> 
> 
> 
> /neale
> 
> 
> 
> 
> 
> From: vpp-dev@lists.fd.io <vpp-dev@lists.fd.io> on behalf of Vijay Kumar
> via lists.fd.io <vjkumar2003=gmail....@lists.fd.io>
> Date: Monday, 8 March 2021 at 08:44
> To: vpp-dev <vpp-dev@lists.fd.io>
> Subject: Re: [vpp-dev] Traffic is not put on IPSec tunnel intf ipip0
> 
> Hi,
> 
> 
> 
> Below is the trace output for "unknown ip protocol" related drops for the
> ESP pkts coming from the strongswan to VPP.
> 
> Let me know If I need to add some ip4-punt related config.
> 
> 
> 
> show trace o/p
> 
> ===============
> 
> 00:08:29:451365: dpdk-input
>   VirtualFuncEthernet0/7/0 rx queue 0
>   buffer 0x4c2d69: current data 0, length 170, buffer-pool 0, ref-count 1,
> totlen-nifb 0, trace handle 0x1000001
>                    ext-hdr-valid
>                    l4-cksum-computed l4-cksum-correct
>   PKT MBUF: port 0, nb_segs 1, pkt_len 170
>     buf_len 2176, data_len 170, ol_flags 0x180, data_off 128, phys_addr
> 0x4ecb5ac0
>     packet_type 0x691 l2_len 0 l3_len 0 outer_l2_len 0 outer_l3_len 0
>     rss 0x0 fdir.hi 0x0 fdir.lo 0x0
>     Packet Offload Flags
>       PKT_RX_IP_CKSUM_GOOD (0x0080) IP cksum of RX pkt. is valid
>       PKT_RX_L4_CKSUM_GOOD (0x0100) L4 cksum of RX pkt. is valid
>     Packet Types
>       RTE_PTYPE_L2_ETHER (0x0001) Ethernet packet
>       RTE_PTYPE_L3_IPV4_EXT_UNKNOWN (0x0090) IPv4 packet with or without
> extension headers
>       RTE_PTYPE_L4_NONFRAG (0x0600) Non-fragmented IP packet
>   IP4: fa:16:3e:4b:6b:42 -> fa:16:3e:c2:b4:f4 802.1q vlan 1556
>   IPSEC_ESP: 20.20.99.215 -> 20.20.99.99
>     tos 0x00, ttl 64, length 152, checksum 0xbe54 dscp CS0 ecn NON_ECN
>     fragment id 0x8c7d, flags DONT_FRAGMENT
> 00:08:29:451372: ethernet-input
>   frame: flags 0x3, hw-if-index 3, sw-if-index 3
>   IP4: fa:16:3e:4b:6b:42 -> fa:16:3e:c2:b4:f4 802.1q vlan 1556
> 00:08:29:451377: ip4-input
>   IPSEC_ESP: 20.20.99.215 -> 20.20.99.99
>     tos 0x00, ttl 64, length 152, checksum 0xbe54 dscp CS0 ecn NON_ECN
>     fragment id 0x8c7d, flags DONT_FRAGMENT
> 00:08:29:451380: ip4-lookup
>   fib 1 dpo-idx 27 flow hash: 0x00000000
>   IPSEC_ESP: 20.20.99.215 -> 20.20.99.99
>     tos 0x00, ttl 64, length 152, checksum 0xbe54 dscp CS0 ecn NON_ECN
>     fragment id 0x8c7d, flags DONT_FRAGMENT
> 00:08:29:451382: ip4-local
>     IPSEC_ESP: 20.20.99.215 -> 20.20.99.99
>       tos 0x00, ttl 64, length 152, checksum 0xbe54 dscp CS0 ecn NON_ECN
>       fragment id 0x8c7d, flags DONT_FRAGMENT
> 00:08:29:451383: ip4-punt
>     IPSEC_ESP: 20.20.99.215 -> 20.20.99.99
>       tos 0x00, ttl 64, length 152, checksum 0xbe54 dscp CS0 ecn NON_ECN
>       fragment id 0x8c7d, flags DONT_FRAGMENT
> 00:08:29:451384: error-punt
>   rx:VirtualFuncEthernet0/7/0.1556
> 00:08:29:451386: punt
>   ip4-local: unknown ip protocol
> 
> 
> 
> On Mon, Mar 8, 2021 at 2:00 AM Vijay Kumar via lists.fd.io
> <http://lists.fd.io>  <vjkumar2003=gmail....@lists.fd.io
> <mailto:gmail....@lists.fd.io> > wrote:
> 
>       Hi,
> 
> 
> 
>       Strongswan   <======================> [VPP IPSec] +  [Azure IKE
> stack]
> 
> 
> 
>       I have a use case like above. Strongswan is the peer while VPP is
> the responder. On the right hand side, I am not showing VPP ikev2 plugin
> because we have disabled the plugin but rather using the Microsoft Azure
> ike stack. In our case the ike stack and vpp run on different pods. We
> have written a new plugin for IKE pkt forwarding to the pod where IKE
> stack is running. The new plugin registers for udp port 500 and 4500 and
> thus fwds all the received IKE traffic to IKE stack (to be precise, the
> new VPP plugin forwards IKE packets to the application process via memif.
> The application process in turn uses REST API to forward the IKE pkts to
> the pods that runs the IKE stack). Once SA is established, the IKE stack
> would install the SA on to the VPP IPSec plugin using VPP APIs (we would
> use the vl_api_rpc_call_main_thread function call to execute the REST API
> SA information).
> 
> 
> 
>       The IPSec SA is established fine as displayed below but ping to the
> host on the strongswan side is failing as "blackholed packets"
> 
> 
> 
>       CLIs logs
> 
>       ================
> 
>       vpp# show ipsec sa
>       [0] sa 256349522 (0xf479552) spi 3475331116 (0xcf25582c)
> protocol:esp flags:[anti-replay ]
>       [1] sa 256349523 (0xf479553) spi 305419899 (0x1234567b) protocol:esp
> flags:[anti-replay inbound ]
>       vpp#
> 
>       NOTE
> 
>       =============
> 
>       20.200.75.1 is the host on the strongswan side, while
> VirtualFuncEthernet0/7/0.1556 is the interface that is connected to the
> Strongswan (this interface is pingable with the SS interface)
> 
> 
> 
>       vpp# show interface
>             Name               Idx    State  MTU (L3/IP4/IP6/MPLS)
> Counter          Count
>       VirtualFuncEthernet0/7/0          3      up          1500/0/0/0
> rx packets                    12
> 
> rx bytes                    2432
> 
> tx packets                    12
> 
> tx bytes                    2408
> 
> drops                          8
>       VirtualFuncEthernet0/7/0.1556     14     up          1500/0/0/0
> rx packets                    30
> 
> rx bytes                  647112
> 
> tx packets                    12
> 
> tx bytes                    2408
> 
> drops                          8
> 
> ip4                            8
>       VirtualFuncEthernet0/9/0          4     down         9000/0/0/0
>       ipip0                             18    down         9000/0/0/0
>       local0                            0     down          0/0/0/0
> 
> 
> 
> 
> 
>       vpp# set interface ip address ipip0 20.200.76.2/32
> <http://20.200.76.2/32>
> 
>       vpp# set interface state ipip0 up
>       vpp# ip route add 20.200.75.1/32 <http://20.200.75.1/32>  via ipip0
>       vpp# set interface unnumbered ipip0 use
> VirtualFuncEthernet0/7/0.1556
> 
> 
> 
>       vpp# show interface
>                     Name               Idx    State  MTU (L3/IP4/IP6/MPLS)
> Counter          Count
>       VirtualFuncEthernet0/7/0          3      up          1500/0/0/0
> rx packets                    14
> 
> rx bytes                    2618
> 
> tx packets                    14
> 
> tx bytes                    2594
> 
> drops                          9
>       VirtualFuncEthernet0/7/0.1556     14     up          1500/0/0/0
> rx packets                    34
> 
> rx bytes                  711766
> 
> tx packets                    14
> 
> tx bytes                    2594
> 
> drops                          9
> 
> ip4                            9
>       VirtualFuncEthernet0/9/0          4     down         9000/0/0/0
>       ipip0                             18     up          9000/0/0/0
>       local0                            0     down          0/0/0/0
> 
> 
> 
> 
> 
>       ISSUE
> 
>       =========
> 
>       All the ping traffic from SS are coming to VPP as ESP packets but
> the VPP is dropping them as "unknown ip protocol". Also, for all the ping
> packets triggered from VPP side are not being put onto the ipip0 IPSec
> tunnel but they are dropped as "blackholed packets"
> 
> 
> 
>       NOTE: -
> 
>       ==============
> 
>       On the VPP, after adding a route to the destination 20.200.75.1, the
> show ip FIB output shows dpo-drop rather than send via
> "VirtualFuncEthernet0/7/0.1556" as shown below.
> 
> 
> 
> 
> 
>       vpp# show if fib
> 
>       20.200.75.1/32 <http://20.200.75.1/32>
>         unicast-ip4-chain
>         [@0]: dpo-load-balance: [proto:ip4 index:81 buckets:1 uRPF:109
> to:[0:0]]
>           [0] [@6]: ipv4 via 0.0.0.0 ipip0: mtu:9000 next:16
> 450000000000000040048b9814146363141463d7
>               stacked-on entry:78:
>                 [@1]: dpo-drop ip4
> 
> 
> 
> 
> 
>       vpp# show node counters
>          Count                    Node                  Reason
>               10                null-node               blackholed packets
>               81               memif-input              not ip packet
>             2731             an_ppe_wfectrl             wfectrl packets
> received
>             2731             an_ppe_wfectrl             wfectrl replies
> sent
>             2181             an_ppe_wfectrl             session stat
> request received
>                1             an_ppe_wfectrl             service construct
> config request received
>                1             an_ppe_wfectrl             service construct
> config request success
>                1             an_ppe_wfectrl             service config
> request received
>                1             an_ppe_wfectrl             service config
> request success
>              453             an_ppe_wfectrl             dpi stats request
> received
>              453             an_ppe_wfectrl             dpi stats request
> success
>               19             an_ppe_wfectrl             nat stats request
> received
>               19             an_ppe_wfectrl             nat stats request
> success
>               58                arp-reply               ARP replies sent
>               81             ip4-udp-lookup             No error
>               14                ip4-local               unknown ip
> protocol
>       vpp#
>       vpp#
> 
> 
> 
> 
> 
>       NOTE
> 
>       =============
> 
>       When I did a POC using VPP ikev2 plugin and VPP IPSec, I did not
> face this issue. The ping traffic from SS would be successfully decrypted
> at VPP and also the reply sent back to SS. In the POC, the route entry of
> the destination was fine. It was not dpo-drop.
> 
> 
> 
> 
> 
>       Please suggest if there is any way to debug the traffic drops as
> "Unknown ip protocol" for incoming ESP traffic and traffic drops as
> "blackholed packets" for outgoing traffic
> 
> 
> 
>       Any help is highly appreciated.
> 
> 
> 
> 
> 
>       Regards,
> 
>       Vijay Kumar N
> 
> 
> 
> 

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#18882): https://lists.fd.io/g/vpp-dev/message/18882
Mute This Topic: https://lists.fd.io/mt/81158278/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to