From: Terry <zenghao...@163.com> Date: Tuesday 7 January 2020 at 13:12 To: "Neale Ranns (nranns)" <nra...@cisco.com> Cc: "vpp-dev@lists.fd.io" <vpp-dev@lists.fd.io> Subject: Re:Re: [vpp-dev] vpp19.08 ipsec issue
Hi Neale, My understanding is that the interface GigabitEthernet2/1/0 should only protect traffic from 100.0.0.0/24 and 172.168.1.0/24 and let other traffic getting throuth. # ipsec policy add spd 1 inbound priority 10 action protect sa 20 local-ip-range 100.0.0.1 - 100.0.0.3 remote-ip-range 172.168.1.1 - 172.168.1.3 # ipsec policy add spd 1 outbound priority 10 action protect sa 10 local-ip-range 100.0.0.1 - 100.0.0.3 remote-ip-range 172.168.1.1 - 172.168.1.3 These two lines define the rules to pretect 100.0.0.0/24 and 172.168.1.0/24 with SA 10 and and SA 20. # ipsec policy add spd 1 inbound priority 100 protocol 50 action bypass local-ip-range 0.0.0.0 - 255.255.255.255 remote-ip-range 0.0.0.0 - 255.255.255.255 # ipsec policy add spd 1 outbound priority 100 protocol 50 action bypass local-ip-range 0.0.0.0 - 255.255.255.255 remote-ip-range 0.0.0.0 - 255.255.255.255 These two lines define the rules to let all ESP traffic get throuth. The packet TRACE information shows that there are no rules for other traffic to get throuth. There are four action for IPSec policy: bypass, discard, resolve, protect In this scene, if I want the traffic to access public network, I think the action should be BYPASS, and the rule form should be like follows: # ipsec policy add spd 1 outbound priority 90 protocol 0 action bypass local-ip-range 0.0.0.0 - 255.255.255.255 remote-ip-range 0.0.0.0 - 255.255.255.255 That’s correct. The ‘default’ action, in the absence of a hit in the SPD, is to drop. When I add the rule for VPP1 and VPP2, user1 and user2 can ping each other. But the tunnel is still not working. The VPP1 trace information is as follows(user1 ping user 2): vpp# show trace ------------------- Start of thread 0 vpp_main ------------------- No packets in trace buffer ------------------- Start of thread 1 vpp_wk_0 ------------------- Packet 1 14:10:17:029929: dpdk-input GigabitEthernet2/0/0 rx queue 0 buffer 0x9829a: 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 0x2f40a700 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:0c:29:70:bd:60 -> 00:0c:29:34:7e:8f ICMP: 100.0.0.3 -> 172.168.1.3 tos 0x00, ttl 64, length 84, checksum 0x685b fragment id 0xc09f, flags DONT_FRAGMENT ICMP echo_request checksum 0xe0b8 14:10:17:029953: ethernet-input frame: flags 0x3, hw-if-index 1, sw-if-index 1 IP4: 00:0c:29:70:bd:60 -> 00:0c:29:34:7e:8f 14:10:17:029958: ip4-input-no-checksum ICMP: 100.0.0.3 -> 172.168.1.3 tos 0x00, ttl 64, length 84, checksum 0x685b fragment id 0xc09f, flags DONT_FRAGMENT ICMP echo_request checksum 0xe0b8 14:10:17:029961: nat44-in2out-worker-handoff NAT44_IN2OUT_WORKER_HANDOFF : next-worker 2 trace index 0 Packet 2 14:10:18:055696: dpdk-input GigabitEthernet2/0/0 rx queue 0 buffer 0x982e8: current data 0, length 98, buffer-pool 0, ref-count 1, totlen-nifb 0, trace han dle 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 0x2f40ba80 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:0c:29:70:bd:60 -> 00:0c:29:34:7e:8f ICMP: 100.0.0.3 -> 172.168.1.3 tos 0x00, ttl 64, length 84, checksum 0x684e fragment id 0xc0ac, flags DONT_FRAGMENT ICMP echo_request checksum 0xe650 14:10:18:055719: ethernet-input frame: flags 0x3, hw-if-index 1, sw-if-index 1 IP4: 00:0c:29:70:bd:60 -> 00:0c:29:34:7e:8f 14:10:18:055723: ip4-input-no-checksum ICMP: 100.0.0.3 -> 172.168.1.3 tos 0x00, ttl 64, length 84, checksum 0x684e fragment id 0xc0ac, flags DONT_FRAGMENT ICMP echo_request checksum 0xe650 14:10:18:055726: nat44-in2out-worker-handoff NAT44_IN2OUT_WORKER_HANDOFF : next-worker 2 trace index 1 ------------------- Start of thread 2 vpp_wk_1 ------------------- Packet 1 14:10:17:029967: handoff_trace HANDED-OFF: from thread 1 trace index 0 14:10:17:029967: nat44-in2out NAT44_IN2OUT_FAST_PATH: sw_if_index 1, next index 3, session -1 14:10:17:029971: nat44-in2out-slowpath NAT44_IN2OUT_SLOW_PATH: sw_if_index 1, next index 0, session 12 14:10:17:029976: ip4-lookup fib 0 dpo-idx 5 flow hash: 0x00000000 ICMP: 192.168.1.1 -> 172.168.1.3 tos 0x00, ttl 64, length 84, checksum 0x0ab5 fragment id 0xc09f, flags DONT_FRAGMENT ICMP echo_request checksum 0x2123 14:10:17:029979: ip4-arp ICMP: 192.168.1.1 -> 172.168.1.3 tos 0x00, ttl 64, length 84, checksum 0x0ab5 fragment id 0xc09f, flags DONT_FRAGMENT ICMP echo_request checksum 0x2123 14:10:17:029982: GigabitEthernet2/1/0-output GigabitEthernet2/1/0 ARP: 00:0c:29:34:7e:99 -> ff:ff:ff:ff:ff:ff request, type ethernet/IP4, address size 6/4 00:0c:29:34:7e:99/192.168.1.1 -> 00:00:00:00:00:00/192.168.2.2 14:10:17:029984: error-drop rx:GigabitEthernet2/0/0 14:10:17:029985: GigabitEthernet2/1/0-tx GigabitEthernet2/1/0 tx queue 2 buffer 0x98273: current data -14, length 42, buffer-pool 0, ref-count 1, trace handle 0x2000000 PKT MBUF: port 65535, nb_segs 1, pkt_len 42 buf_len 2176, data_len 42, ol_flags 0x0, data_off 114, phys_addr 0x2f409d40 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 ARP: 00:0c:29:34:7e:99 -> ff:ff:ff:ff:ff:ff request, type ethernet/IP4, address size 6/4 00:0c:29:34:7e:99/192.168.1.1 -> 00:00:00:00:00:00/192.168.2.2 14:10:17:029996: drop ip4-arp: ARP requests sent Packet 2 14:10:18:057039: handoff_trace HANDED-OFF: from thread 1 trace index 1 14:10:18:057039: nat44-in2out NAT44_IN2OUT_FAST_PATH: sw_if_index 1, next index 3, session -1 14:10:18:057044: nat44-in2out-slowpath NAT44_IN2OUT_SLOW_PATH: sw_if_index 1, next index 0, session 12 14:10:18:057048: ip4-lookup fib 0 dpo-idx 5 flow hash: 0x00000000 ICMP: 192.168.1.1 -> 172.168.1.3 tos 0x00, ttl 64, length 84, checksum 0x0aa8 fragment id 0xc0ac, flags DONT_FRAGMENT ICMP echo_request checksum 0x26bb 14:10:18:057051: ip4-arp ICMP: 192.168.1.1 -> 172.168.1.3 tos 0x00, ttl 64, length 84, checksum 0x0aa8 fragment id 0xc0ac, flags DONT_FRAGMENT ICMP echo_request checksum 0x26bb 14:10:18:057054: GigabitEthernet2/1/0-output GigabitEthernet2/1/0 ARP: 00:0c:29:34:7e:99 -> ff:ff:ff:ff:ff:ff request, type ethernet/IP4, address size 6/4 00:0c:29:34:7e:99/192.168.1.1 -> 00:00:00:00:00:00/192.168.2.2 14:10:18:057056: error-drop rx:GigabitEthernet2/0/0 14:10:18:057058: GigabitEthernet2/1/0-tx GigabitEthernet2/1/0 tx queue 2 buffer 0x9829a: current data -14, length 42, buffer-pool 0, ref-count 1, trace handle 0x2000001 PKT MBUF: port 65535, nb_segs 1, pkt_len 42 buf_len 2176, data_len 42, ol_flags 0x0, data_off 114, phys_addr 0x2f40a700 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 ARP: 00:0c:29:34:7e:99 -> ff:ff:ff:ff:ff:ff request, type ethernet/IP4, address size 6/4 00:0c:29:34:7e:99/192.168.1.1 -> 00:00:00:00:00:00/192.168.2.2 14:10:18:058737: drop ip4-arp: ARP requests sent The ARP request is dropped. The ARP request was sent. If the other end dropped it, it’s probably because the sender in not on the same subnet. Your config has one end as a /22 the other as a /24. /neale Best regards, Terry 在 2020-01-07 05:30:14,"Neale Ranns (nranns)" <nra...@cisco.com> 写道: From: Terry <zenghao...@163.com> Date: Monday 6 January 2020 at 23:51 To: "Neale Ranns (nranns)" <nra...@cisco.com> Cc: "vpp-dev@lists.fd.io" <vpp-dev@lists.fd.io> Subject: Re:Re:Re: [vpp-dev] vpp19.08 ipsec issue [trim] And when I ping 192.168.1.2 from 100.0.0.3(user1), the TRACE packet information is as follows: Packet 1 00:38:45:983763: handoff_trace HANDED-OFF: from thread 1 trace index 0 00:38:45:983763: nat44-in2out NAT44_IN2OUT_FAST_PATH: sw_if_index 1, next index 3, session -1 00:38:45:983767: nat44-in2out-slowpath NAT44_IN2OUT_SLOW_PATH: sw_if_index 1, next index 0, session 6 00:38:45:983772: ip4-lookup fib 0 dpo-idx 3 flow hash: 0x00000000 ICMP: 192.168.1.1 -> 192.168.1.2 which SPD policy does/should this packet match ? /neale tos 0x00, ttl 64, length 84, checksum 0x080c fragment id 0xaf49, flags DONT_FRAGMENT ICMP echo_request checksum 0x8943 00:38:45:983775: ip4-rewrite tx_sw_if_index 2 dpo-idx 3 : ipv4 via 192.168.1.2 GigabitEthernet2/1/0: mtu:9000 000c29f77626000c29347e990800 flow hash: 0x00000000 00000000: 000c29f77626000c29347e99080045000054af4940003f01090cc0a80101c0a8 00000020: 010208008943ad4e00095427135e000000008f0c0c00000000001011 00:38:45:983778: ipsec4-output-feature spd 1 policy -1 00:38:45:983780: error-drop rx:GigabitEthernet2/0/0 00:38:45:983783: drop dpdk-input: no error Packet 2 00:38:47:007175: handoff_trace HANDED-OFF: from thread 1 trace index 1 00:38:47:007175: nat44-in2out NAT44_IN2OUT_FAST_PATH: sw_if_index 1, next index 3, session -1 00:38:47:007184: nat44-in2out-slowpath NAT44_IN2OUT_SLOW_PATH: sw_if_index 1, next index 0, session 6 00:38:47:007193: ip4-lookup fib 0 dpo-idx 3 flow hash: 0x00000000 ICMP: 192.168.1.1 -> 192.168.1.2 tos 0x00, ttl 64, length 84, checksum 0x07f5 fragment id 0xaf60, flags DONT_FRAGMENT ICMP echo_request checksum 0xc1e4 00:38:47:007197: ip4-rewrite tx_sw_if_index 2 dpo-idx 3 : ipv4 via 192.168.1.2 GigabitEthernet2/1/0: mtu:9000 000c29f77626000c29347e990800 flow hash: 0x00000000 00000000: 000c29f77626000c29347e99080045000054af6040003f0108f5c0a80101c0a8 00000020: 01020800c1e4ad4e000a5527135e00000000556a0c00000000001011 00:38:47:007202: ipsec4-output-feature spd 1 policy -1 00:38:47:007206: error-drop rx:GigabitEthernet2/0/0 00:38:47:007209: drop dpdk-input: no error It looks like there are no rules for the traffic get throuth. When I config this command: # set interface ipsec spd GigabitEthernet2/1/0 1 All the packets can not get throuth GigabitEthernet2/1/0 interface. How can I config the IPSec policy to only protect the IPSec traffic and leave other traffic to the normal forwarding? In general, the user1 can access user2 with IPSec tunnel and can also access the public network with NAT in VPP1.
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#15068): https://lists.fd.io/g/vpp-dev/message/15068 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] -=-=-=-=-=-=-=-=-=-=-=-