Hi Neale,

Yes, you are right.

This is the output of show ip local cmd. The IPSEC_ESP is not registered.
Hence the drop.
NOTE: -
===========
I have a working POC setup that has IKEv2 plugin enabled. In this POC
setup, I can find IPSEC_ESP in the show ip local output.
On my setup, I disabled the plugin ikev2. I only have a vnet ipsec graph
node (but no ikev2). The ike stack is running on a separate VM which is
that of Azure ike stack.


*vpp# show ip local*
Protocols handled by ip4_local
ICMP: ip4-icmp-input
IGMP: igmp-input
IP_IN_IP: ipip4-input
TCP: an_ppe_router_input
UDP: ip4-udp-lookup
IPV6: ipip4-input
VRRP: vrrp4-input
unknown 200: an_ppe_wfectrl
unknown 201: an_ppe_vppctrl_input
vpp#
vpp#

On Mon, Mar 8, 2021 at 2:08 PM Neale Ranns <ne...@graphiant.com> wrote:

> 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 <vjkumar2003=
> 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
>
> vpp# set interface state ipip0 up
> vpp# ip route add 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 (#18883): https://lists.fd.io/g/vpp-dev/message/18883
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