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 <zealot0...@gmail.com> Date: Mon Nov 23 19:15:02 2015 +0800 Fix vxlan udp csum of gso packet Signed-off-by: Zang MingJie <zealot0...@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); _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev