From: Tonghao Zhang <[email protected]>

The root cause is that the old version of openvswitch doesn't
remove the padding from packet before L3+ conntrack processing
and then packets is dropped in linux kernel stack. The patch [1]
fixes the issue. We fix this issue on gateway which running ovs-dpdk
as a quick workaround. Padding should be removed because tunnel size
+ inner size > 64B. More detailes, see [1]

[1] - 
https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/commit/?id=9382fe71c0058465e942a633869629929102843d
Signed-off-by: Tonghao Zhang <[email protected]>
---
 lib/netdev-native-tnl.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/lib/netdev-native-tnl.c b/lib/netdev-native-tnl.c
index b89dfdd52..acfbb13c4 100644
--- a/lib/netdev-native-tnl.c
+++ b/lib/netdev-native-tnl.c
@@ -149,11 +149,15 @@ void *
 netdev_tnl_push_ip_header(struct dp_packet *packet,
                const void *header, int size, int *ip_tot_size)
 {
+    int padding = dp_packet_l2_pad_size(packet);
     struct eth_header *eth;
     struct ip_header *ip;
     struct ovs_16aligned_ip6_hdr *ip6;
 
     eth = dp_packet_push_uninit(packet, size);
+    if (padding) {
+        dp_packet_set_size(packet, dp_packet_size(packet) - padding);
+    }
     *ip_tot_size = dp_packet_size(packet) - sizeof (struct eth_header);
 
     memcpy(eth, header, size);
-- 
2.14.1

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to