[ovs-dev] ovs 2.4 vxlan udp csum isn't working
Zang MingJie
zealot0630 at gmail.com
Mon Nov 23 11:17:04 UTC 2015
Hi
I have set up an environment using ovs 2.4 with ovs shipped datapath
and kernel 3.14.
When perfing vxlan performance with csum enabled, I found checksum of
most udp packets are zero, but some are correct value not zero.
This is my vsctl on sender end:
Port "vxlan-0ab49c21"
Interface "vxlan-0ab49c21"
type: vxlan
options: {csum="true", df_default="true", in_key=flow,
local_ip="10.180.156.34", out_key=flow, remote_ip="10.180.156.33"}
and its dp-flow when doing perf:
$ sudo ovs-dpctl dump-flows
recirc_id(0),in_port(3),eth(src=fa:16:3e:d8:06:a8,dst=fa:16:3e:7b:22:c1),eth_type(0x0800),ipv4(tos=0/0x3,frag=no),
packets:11587, bytes:192152422, used:0.001s, flags:P.,
actions:set(tunnel(tun_id=0x190,src=10.180.156.34,dst=10.180.156.33,ttl=64,flags(df,csum,key))),1
recirc_id(0),tunnel(tun_id=0x190,src=10.180.156.33,dst=10.180.156.34,ttl=64,flags(-df+csum+key)),in_port(1),skb_mark(0),eth(src=fa:16:3e:7b:22:c1,dst=fa:16:3e:d8:06:a8),eth_type(0x0800),ipv4(frag=no),
packets:32832, bytes:2332180, used:0.001s, flags:., actions:3
After some investment, finally I found the bug. All udp gso packet
doesn't have checksum. Here is the patch to fix it:
commit df4620805747bb7065eebe5b432b16b01973202c
Author: Zang MingJie <zealot0630 at gmail.com>
Date: Mon Nov 23 19:15:02 2015 +0800
Fix vxlan udp csum of gso packet
Signed-off-by: Zang MingJie <zealot0630 at gmail.com>
diff --git a/datapath/linux/compat/udp_tunnel.c
b/datapath/linux/compat/udp_tunnel.c
index a3223fd..19a1ea5 100644
--- a/datapath/linux/compat/udp_tunnel.c
+++ b/datapath/linux/compat/udp_tunnel.c
@@ -133,7 +133,7 @@ void ovs_udp_csum_gso(struct sk_buff *skb)
/* csum segment if tunnel sets skb with csum. The cleanest way
* to do this just to set it up from scratch. */
skb->ip_summed = CHECKSUM_NONE;
- udp_set_csum(true, skb, iph->saddr, iph->daddr,
+ udp_set_csum(false, skb, iph->saddr, iph->daddr,
skb->len - udp_offset);
}
EXPORT_SYMBOL_GPL(ovs_udp_csum_gso);
More information about the dev
mailing list