Dear VPP Team,
I'm trying to config ipsec tunnel in vpp19.08. The configuration of 'ikev2' and 'create ipsec tunnel ...' both works fine, but it's difficult for me to config ipsec tunnel via 'ipsec sa...'. There are a lot of issue about ipsec in vpp-dev mail-list, I still not find the right answer. My test topology is as follow: The configuration of each device are as follows: user1: ipv4 address: 100.0.0.3/24 gateway address: 100.0.0.1 vpp1: # basic network set interface state GigabitEthernet2/0/0 up set interface state GigabitEthernet2/1/0 up set interface ip address GigabitEthernet2/0/0 100.0.0.1/24 set interface ip address GigabitEthernet2/1/0 192.168.1.1/24 set interface promiscuous on GigabitEthernet2/0/0 set interface promiscuous on GigabitEthernet2/1/0 # ispec configuration ipsec sa add 10 spi 1001 esp crypto-key 2b7e151628aed2a6abf7158809cf4f3d crypto-alg aes-cbc-128 tunnel-src 192.168.1.1 tunnel-dst 192.168.1.2 ipsec sa add 20 spi 1000 esp crypto-key 2b7e151628aed2a6abf7158809cf4f3d crypto-alg aes-cbc-128 tunnel-src 192.168.1.2 tunnel-dst 192.168.1.1 ipsec spd add 1 set interface ipsec spd GigabitEthernet2/1/0 1 ipsec policy add spd 1 inbound priority 100 protocol 50 action bypass ipsec policy add spd 1 outbound priority 100 protocol 50 action bypass ipsec policy add spd 1 inbound priority 10 action protect sa 20 local-ip-range 100.0.0.3 - 100.0.0.3 remote-ip-range 172.168.1.3 - 172.168.1.3 ipsec policy add spd 1 outbound priority 20 action protect sa 10 local-ip-range 100.0.0.3 - 100.0.0.3 remote-ip-range 172.168.1.3 - 172.168.1.3 ip route add 172.168.1.0/24 via 192.168.1.2 GigabitEthernet2/1/0 vpp2: # basic network set interface state GigabitEthernet2/1/0 up set interface state GigabitEthernet2/2/0 up set interface ip address GigabitEthernet2/1/0 172.168.1.1/24 set interface ip address GigabitEthernet2/2/0 192.168.1.2/24 set interface promiscuous on GigabitEthernet2/1/0 set interface promiscuous on GigabitEthernet2/2/0 # ipsec configuration ipsec sa add 10 spi 1001 esp crypto-key 2b7e151628aed2a6abf7158809cf4f3d crypto-alg aes-cbc-128 tunnel-src 192.168.1.1 tunnel-dst 192.168.1.2 ipsec sa add 20 spi 1000 esp crypto-key 2b7e151628aed2a6abf7158809cf4f3d crypto-alg aes-cbc-128 tunnel-src 192.168.1.2 tunnel-dst 192.168.1.1 ipsec spd add 1 set interface ipsec spd GigabitEthernet2/2/0 1 ipsec policy add spd 1 inbound priority 100 protocol 50 action bypass ipsec policy add spd 1 outbound priority 100 protocol 50 action bypass ipsec policy add spd 1 inbound priority 10 action protect sa 10 local-ip-range 172.168.1.3 - 172.168.1.3 remote-ip-range 100.0.0.3 - 100.0.0.3 ipsec policy add spd 1 outbound priority 20 action protect sa 20 local-ip-range 172.168.1.3 - 172.168.1.3 remote-ip-range 100.0.0.3 - 100.0.0.3 ip route add 100.0.0.0/24 via 192.168.1.1 GigabitEthernet2/2/0 user2: ipv4 address: 172.168.1.3/24 gateway address: 172.168.1.1 After configuration, I tried ping from user1 to user2, the packet dropped by vpp1, here is the trace info: DBGvpp# show trace ------------------- Start of thread 0 vpp_main ------------------- No packets in trace buffer ------------------- Start of thread 1 vpp_wk_0 ------------------- Packet 1 00:08:35:264577: dpdk-input GigabitEthernet2/0/0 rx queue 0 buffer 0x9e330: current data 0, length 98, buffer-pool 0, ref-count 1, totlen-nifb 0, trace handle 0x1000000 ext-hdr-valid l4-cksum-computed l4-cksum-correct PKT MBUF: port 0, nb_segs 1, pkt_len 98 buf_len 2176, data_len 98, ol_flags 0x0, data_off 128, phys_addr 0x7298cc80 packet_type 0x0 l2_len 0 l3_len 0 outer_l2_len 0 outer_l3_len 0 rss 0x0 fdir.hi 0x0 fdir.lo 0x0 IP4: 00:50:56:aa:70:e3 -> 00:50:56:aa:53:75 ICMP: 100.0.0.3 -> 172.168.1.3 tos 0x00, ttl 64, length 84, checksum 0x15f0 fragment id 0x130b, flags DONT_FRAGMENT ICMP echo_request checksum 0x5609 00:08:35:264631: ethernet-input frame: flags 0x3, hw-if-index 1, sw-if-index 1 IP4: 00:50:56:aa:70:e3 -> 00:50:56:aa:53:75 00:08:35:264650: ip4-input-no-checksum ICMP: 100.0.0.3 -> 172.168.1.3 tos 0x00, ttl 64, length 84, checksum 0x15f0 fragment id 0x130b, flags DONT_FRAGMENT ICMP echo_request checksum 0x5609 00:08:35:264673: ip4-lookup fib 0 dpo-idx 2 flow hash: 0x00000000 ICMP: 100.0.0.3 -> 172.168.1.3 tos 0x00, ttl 64, length 84, checksum 0x15f0 fragment id 0x130b, flags DONT_FRAGMENT ICMP echo_request checksum 0x5609 00:08:35:264694: ip4-rewrite tx_sw_if_index 2 dpo-idx 2 : ipv4 via 192.168.1.2 GigabitEthernet2/1/0: mtu:9000 000c29c781b0005056aa5d190800 flow hash: 0x00000000 00000000: 000c29c781b0005056aa5d19080045000054130b40003f0116f064000003aca8 00000020: 01030800560911580013c609ee5d0000000012510b00000000001011 00:08:35:264701: ipsec4-output-feature spd 1 policy 3 00:08:35:264711: esp4-encrypt esp: sa-index 0 spi 1001 (0x000003e9) seq 19 sa-seq-hi 0 crypto aes-cbc-128 integrity none 00:08:35:264731: ip4-load-balance fib 2 dpo-idx 2 flow hash: 0x00000000 IPSEC_ESP: 192.168.1.1 -> 192.168.1.2 tos 0x00, ttl 254, length 140, checksum 0x38ec fragment id 0x0000 00:08:35:264746: ip4-rewrite tx_sw_if_index 2 dpo-idx 2 : ipv4 via 192.168.1.2 GigabitEthernet2/1/0: mtu:9000 000c29c781b0005056aa5d190800 flow hash: 0x00000000 00000000: 000c29c781b0005056aa5d1908004500008c00000000fd3239ecc0a80101c0a8 00000020: 0102000003e900000013a34fd952bf3f07e1bf7d014e70cb41a41909 00:08:35:264748: ipsec4-output-feature spd 1 policy -1 00:08:35:264750: error-drop rx:GigabitEthernet2/0/0 00:08:35:264758: drop dpdk-input: no error Packet 2 00:08:36:265009: dpdk-input GigabitEthernet2/0/0 rx queue 0 buffer 0x9e309: current data 0, length 98, 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 98 buf_len 2176, data_len 98, ol_flags 0x0, data_off 128, phys_addr 0x7298c2c0 packet_type 0x0 l2_len 0 l3_len 0 outer_l2_len 0 outer_l3_len 0 rss 0x0 fdir.hi 0x0 fdir.lo 0x0 IP4: 00:50:56:aa:70:e3 -> 00:50:56:aa:53:75 ICMP: 100.0.0.3 -> 172.168.1.3 tos 0x00, ttl 64, length 84, checksum 0x15b3 fragment id 0x1348, flags DONT_FRAGMENT ICMP echo_request checksum 0xa006 00:08:36:265040: ethernet-input frame: flags 0x3, hw-if-index 1, sw-if-index 1 IP4: 00:50:56:aa:70:e3 -> 00:50:56:aa:53:75 00:08:36:265058: ip4-input-no-checksum ICMP: 100.0.0.3 -> 172.168.1.3 tos 0x00, ttl 64, length 84, checksum 0x15b3 fragment id 0x1348, flags DONT_FRAGMENT ICMP echo_request checksum 0xa006 00:08:36:265069: ip4-lookup fib 0 dpo-idx 2 flow hash: 0x00000000 ICMP: 100.0.0.3 -> 172.168.1.3 tos 0x00, ttl 64, length 84, checksum 0x15b3 fragment id 0x1348, flags DONT_FRAGMENT ICMP echo_request checksum 0xa006 00:08:36:265082: ip4-rewrite tx_sw_if_index 2 dpo-idx 2 : ipv4 via 192.168.1.2 GigabitEthernet2/1/0: mtu:9000 000c29c781b0005056aa5d190800 flow hash: 0x00000000 00000000: 000c29c781b0005056aa5d19080045000054134840003f0116b364000003aca8 00000020: 01030800a00611580014c709ee5d00000000c7520b00000000001011 00:08:36:265089: ipsec4-output-feature spd 1 policy 3 00:08:36:265099: esp4-encrypt esp: sa-index 0 spi 1001 (0x000003e9) seq 20 sa-seq-hi 0 crypto aes-cbc-128 integrity none 00:08:36:265119: ip4-load-balance fib 2 dpo-idx 2 flow hash: 0x00000000 IPSEC_ESP: 192.168.1.1 -> 192.168.1.2 tos 0x00, ttl 254, length 140, checksum 0x38ec fragment id 0x0000 00:08:36:265135: ip4-rewrite tx_sw_if_index 2 dpo-idx 2 : ipv4 via 192.168.1.2 GigabitEthernet2/1/0: mtu:9000 000c29c781b0005056aa5d190800 flow hash: 0x00000000 00000000: 000c29c781b0005056aa5d1908004500008c00000000fd3239ecc0a80101c0a8 00000020: 0102000003e9000000141d6285d7364ced8543ec6f97aff2744800fb 00:08:36:265137: ipsec4-output-feature spd 1 policy -1 00:08:36:265139: error-drop rx:GigabitEthernet2/0/0 00:08:36:265147: drop dpdk-input: no error The ipsec information in vpp1 are as follows: DBGvpp# show ipsec all [0] sa 10 (0xa) spi 1001 (0x000003e9) protocol:esp flags:[tunnel ] [1] sa 20 (0x14) spi 1000 (0x000003e8) protocol:esp flags:[tunnel ] spd 1 ip4-outbound: [1] priority 100 action bypass type ip4-outbound protocol IPSEC_ESP local addr range 0.0.0.0 - 0.0.0.0 port range 0 - 65535 remote addr range 0.0.0.0 - 0.0.0.0 port range 0 - 65535 packets 0 bytes 0 [3] priority 20 action protect type ip4-outbound protocol any sa 10 local addr range 100.0.0.3 - 100.0.0.3 port range 0 - 65535 remote addr range 172.168.1.3 - 172.168.1.3 port range 0 - 65535 packets 340 bytes 28560 ip6-outbound: ip4-inbound-protect: [2] priority 10 action protect type ip4-inbound-protect protocol any sa 20 local addr range 100.0.0.3 - 100.0.0.3 port range 0 - 65535 remote addr range 172.168.1.3 - 172.168.1.3 port range 0 - 65535 packets 0 bytes 0 ip6-inbound-protect: ip4-inbound-bypass: [0] priority 100 action bypass type ip4-inbound-bypass protocol IPSEC_ESP local addr range 0.0.0.0 - 0.0.0.0 port range 0 - 65535 remote addr range 0.0.0.0 - 0.0.0.0 port range 0 - 65535 packets 0 bytes 0 ip6-inbound-bypass: SPD Bindings: 1 -> GigabitEthernet2/1/0 Tunnel interfaces Are there any errors in my configuration? Are the sa id orders applied to 'ipsec policy' right? It looks like the packet can't find the right policy in spd 1. Could you please give me some suggestion to get it working? Your reply will be higly appreciated! Best regards, Arvin
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#14849): https://lists.fd.io/g/vpp-dev/message/14849 Mute This Topic: https://lists.fd.io/mt/67970551/21656 Group Owner: vpp-dev+ow...@lists.fd.io Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-