I have a slightly complex set up and this exact setup works fine, meaning, I can ping and SSH, with DPDK 2.2. However, it fails on DPDK 16.04. Are any patches missing ?
There are two hosts (h1 and h2) connected via a VIC interface. VPP is running on both hosts and each host have one VM. VMs are assigned a vhost interface and this vhost interface and the vic interface are assigned to the same bridge ID in VPP.
With this set up, I can ping VM2 from VM1 and vice-versa. However, SSH fails. I enabled packet tracing on both VPPs. On the VPP that hosts destination VM, I say L4 checksum error. This happens on all L4 traffic. Additionally, if two VM are instantiated on the same host, eliminated any inter-host communication, SSH works fine.
I have provided the trace snippet for the following
1. Unsuccessful L4 packet using 16.04
2. Successful L3 packet using 16.04
3. Successful L4 packet using 2.2
-----------------------------------------------------------
Unsuccessful L4 packet using DPDK 16.04
----------------------------------------------------------
Packet 1
00:03:25:642633: dpdk-input
TenGigabitEthernet9/0/0 rx queue 0
buffer 0xf78e1d: current data 0, length 74, free-list 0, totlen-nifb 0, trace 0x0
PKT MBUF: port 0, nb_segs 1, pkt_len 74
buf_len 2176, data_len 74, ol_flags 0x9,
packet_type 0x111
Packet Offload Flags
PKT_RX_VLAN_PKT (0x0001) RX packet is a 802.1q VLAN packet
PKT_RX_L4_CKSUM_BAD (0x0008) L4 cksum of RX pkt. is not OK
Packet Types
RTE_PTYPE_L2_ETHER (0x0001) Ethernet packet
RTE_PTYPE_L3_IPV4 (0x0010) IPv4 packet without extension headers
RTE_PTYPE_L4_TCP (0x0100) TCP packet
IP4: 56:70:59:7a:98:91 -> 56:70:59:7a:98:90
TCP: 2.2.2.11 -> 2.2.2.10
tos 0x00, ttl 64, length 60, checksum 0xd144
fragment id 0x615f, flags DONT_FRAGMENT
00:03:25:642645: error-drop
dpdk-input: Rx L4 checksum errors
Packet 2
00:03:26:640446: dpdk-input
TenGigabitEthernet9/0/0 rx queue 0
buffer 0xf78df6: current data 0, length 74, free-list 0, totlen-nifb 0, trace 0x1
PKT MBUF: port 0, nb_segs 1, pkt_len 74
buf_len 2176, data_len 74, ol_flags 0x9,
packet_type 0x111
Packet Offload Flags
PKT_RX_VLAN_PKT (0x0001) RX packet is a 802.1q VLAN packet
PKT_RX_L4_CKSUM_BAD (0x0008) L4 cksum of RX pkt. is not OK
Packet Types
RTE_PTYPE_L2_ETHER (0x0001) Ethernet packet
RTE_PTYPE_L3_IPV4 (0x0010) IPv4 packet without extension headers
RTE_PTYPE_L4_TCP (0x0100) TCP packet
IP4: 56:70:59:7a:98:91 -> 56:70:59:7a:98:90
TCP: 2.2.2.11 -> 2.2.2.10
tos 0x00, ttl 64, length 60, checksum 0xd143
fragment id 0x6160, flags DONT_FRAGMENT
00:03:26:640448: error-drop
dpdk-input: Rx L4 checksum errors
Packet 3
00:03:28:644431: dpdk-input
TenGigabitEthernet9/0/0 rx queue 0
buffer 0xf78dcf: current data 0, length 74, free-list 0, totlen-nifb 0, trace 0x2
PKT MBUF: port 0, nb_segs 1, pkt_len 74
buf_len 2176, data_len 74, ol_flags 0x9,
packet_type 0x111
Packet Offload Flags
PKT_RX_VLAN_PKT (0x0001) RX packet is a 802.1q VLAN packet
PKT_RX_L4_CKSUM_BAD (0x0008) L4 cksum of RX pkt. is not OK
Packet Types
RTE_PTYPE_L2_ETHER (0x0001) Ethernet packet
RTE_PTYPE_L3_IPV4 (0x0010) IPv4 packet without extension headers
RTE_PTYPE_L4_TCP (0x0100) TCP packet
IP4: 56:70:59:7a:98:91 -> 56:70:59:7a:98:90
TCP: 2.2.2.11 -> 2.2.2.10
tos 0x00, ttl 64, length 60, checksum 0xd142
fragment id 0x6161, flags DONT_FRAGMENT
00:03:28:644436: error-drop
dpdk-input: Rx L4 checksum errors
-------------------------------------------------------------------------------
Successful ARP request and response using DPDK 16.04:
-------------------------------------------------------------------------------
Packet 1
00:01:15:288699: dpdk-input
TenGigabitEthernet9/0/0 rx queue 0
buffer 0xf78e44: current data 0, length 60, free-list 0, totlen-nifb 0, trace 0x0
PKT MBUF: port 0, nb_segs 1, pkt_len 60
buf_len 2176, data_len 60, ol_flags 0x1,
packet_type 0x0
Packet Offload Flags
PKT_RX_VLAN_PKT (0x0001) RX packet is a 802.1q VLAN packet
ARP: 56:70:59:7a:98:91 -> ff:ff:ff:ff:ff:ff
request, type ethernet/IP4, address size 6/4
56:70:59:7a:98:91/2.2.2.11 -> ff:ff:ff:ff:ff:ff/2.2.2.10
00:01:15:288722: ethernet-input
ARP: 56:70:59:7a:98:91 -> ff:ff:ff:ff:ff:ff
00:01:15:288728: l2-input
l2-input: sw_if_index 5 dst ff:ff:ff:ff:ff:ff src 56:70:59:7a:98:91
00:01:15:288733: l2-learn
l2-learn: sw_if_index 5 dst ff:ff:ff:ff:ff:ff src 56:70:59:7a:98:91 bd_index 1
00:01:15:288736: l2-flood
l2-flood: sw_if_index 5 dst ff:ff:ff:ff:ff:ff src 56:70:59:7a:98:91 bd_index 1
00:01:15:288740: l2-output
l2-output: sw_if_index 7 dst ff:ff:ff:ff:ff:ff src 56:70:59:7a:98:91
00:01:15:288743: VirtualEthernet0/0/1-output
VirtualEthernet0/0/1
ARP: 56:70:59:7a:98:91 -> ff:ff:ff:ff:ff:ff
request, type ethernet/IP4, address size 6/4
56:70:59:7a:98:91/2.2.2.11 -> ff:ff:ff:ff:ff:ff/2.2.2.10
00:01:15:288745: error-drop
VirtualEthernet0/0/1-output: interface is down
00:01:15:288747: l2-flood
l2-flood: sw_if_index 5 dst ff:ff:ff:ff:ff:ff src 56:70:59:7a:98:91 bd_index 1
00:01:15:288748: l2-output
l2-output: sw_if_index 6 dst ff:ff:ff:ff:ff:ff src 56:70:59:7a:98:91
00:01:15:288748: VirtualEthernet0/0/0-output
VirtualEthernet0/0/0
ARP: 56:70:59:7a:98:91 -> ff:ff:ff:ff:ff:ff
request, type ethernet/IP4, address size 6/4
56:70:59:7a:98:91/2.2.2.11 -> ff:ff:ff:ff:ff:ff/2.2.2.10
00:01:15:288749: VirtualEthernet0/0/0-tx
VirtualEthernet0/0/0 tx queue 1
buffer 0xf78e44: current data 0, length 60, free-list 0, totlen-nifb 0, trace 0x0
ARP: 56:70:59:7a:98:91 -> ff:ff:ff:ff:ff:ff
request, type ethernet/IP4, address size 6/4
56:70:59:7a:98:91/2.2.2.11 -> ff:ff:ff:ff:ff:ff/2.2.2.10
Packet 2
00:01:15:288882: dpdk-input
VirtualEthernet0/0/0 rx queue 0
buffer 0xf78e44: current data 0, length 42, free-list 0, totlen-nifb 0, trace 0x1
PKT MBUF: port 255, nb_segs 1, pkt_len 42
buf_len 2176, data_len 42, ol_flags 0x0,
packet_type 0x0
ARP: 56:70:59:7a:98:90 -> 56:70:59:7a:98:91
reply, type ethernet/IP4, address size 6/4
56:70:59:7a:98:90/2.2.2.10 -> 56:70:59:7a:98:91/2.2.2.11
00:01:15:288889: ethernet-input
ARP: 56:70:59:7a:98:90 -> 56:70:59:7a:98:91
00:01:15:288890: l2-input
l2-input: sw_if_index 6 dst 56:70:59:7a:98:91 src 56:70:59:7a:98:90
00:01:15:288890: l2-learn
l2-learn: sw_if_index 6 dst 56:70:59:7a:98:91 src 56:70:59:7a:98:90 bd_index 1
00:01:15:288890: l2-fwd
l2-fwd: sw_if_index 6 dst 56:70:59:7a:98:91 src 56:70:59:7a:98:90 bd_index 1
00:01:15:288891: l2-output
l2-output: sw_if_index 5 dst 56:70:59:7a:98:91 src 56:70:59:7a:98:90
00:01:15:288891: TenGigabitEthernet9/0/0-output
TenGigabitEthernet9/0/0
ARP: 56:70:59:7a:98:90 -> 56:70:59:7a:98:91
reply, type ethernet/IP4, address size 6/4
56:70:59:7a:98:90/2.2.2.10 -> 56:70:59:7a:98:91/2.2.2.11
00:01:15:288893: TenGigabitEthernet9/0/0-tx
TenGigabitEthernet9/0/0 tx queue 1
buffer 0xf78e44: current data 0, length 42, free-list 0, totlen-nifb 0, trace 0x1
ARP: 56:70:59:7a:98:90 -> 56:70:59:7a:98:91
reply, type ethernet/IP4, address size 6/4
56:70:59:7a:98:90/2.2.2.10 -> 56:70:59:7a:98:91/2.2.2.11
-----------------------------------------------------------
HEALTHY L4 (SSH) packet using DPDK 2.2
-----------------------------------------------------------
Packet 1
00:01:54:970597: dpdk-input
VirtualEthernet0/0/1 rx queue 0
buffer 0x3f1aac6: current data 0, length 74, free-list 0, totlen-nifb 0, trace 0x0
PKT MBUF: port 255, nb_segs 1, pkt_len 74
buf_len 2176, data_len 74, ol_flags 0x0,
packet_type 0x0
IP4: 56:70:59:7a:98:91 -> 56:70:59:7a:98:90
TCP: 2.2.2.11 -> 2.2.2.10
tos 0x00, ttl 64, length 60, checksum 0x826b
fragment id 0xb038, flags DONT_FRAGMENT
00:01:54:970613: ethernet-input
IP4: 56:70:59:7a:98:91 -> 56:70:59:7a:98:90
00:01:54:970616: l2-input
l2-input: sw_if_index 7 dst 56:70:59:7a:98:90 src 56:70:59:7a:98:91
00:01:54:970616: l2-learn
l2-learn: sw_if_index 7 dst 56:70:59:7a:98:90 src 56:70:59:7a:98:91 bd_index 1
00:01:54:970617: l2-fwd
l2-fwd: sw_if_index 7 dst 56:70:59:7a:98:90 src 56:70:59:7a:98:91 bd_index 1
00:01:54:970618: l2-output
l2-output: sw_if_index 5 dst 56:70:59:7a:98:90 src 56:70:59:7a:98:91
00:01:54:970619: TenGigabitEthernet9/0/0-output
TenGigabitEthernet9/0/0
IP4: 56:70:59:7a:98:91 -> 56:70:59:7a:98:90
TCP: 2.2.2.11 -> 2.2.2.10
tos 0x00, ttl 64, length 60, checksum 0x826b
fragment id 0xb038, flags DONT_FRAGMENT
00:01:54:970620: TenGigabitEthernet9/0/0-tx
TenGigabitEthernet9/0/0 tx queue 1
buffer 0x3f1aac6: current data 0, length 74, free-list 0, totlen-nifb 0, trace 0x0
IP4: 56:70:59:7a:98:91 -> 56:70:59:7a:98:90
TCP: 2.2.2.11 -> 2.2.2.10
tos 0x00, ttl 64, length 60, checksum 0x826b
fragment id 0xb038, flags DONT_FRAGMENT