> >> > >>I am not sure why Windows kernel doesn't compute UDP checksum for all > >>tunnels. I added Nithin to the thread to see if he has some idea. My > >>wild guess is that it tries to save some computational workload. > > > >My guess is that it is because VXLAN originally specified that > >checksums should not be used. However, my expectation is the checksums > >will be more common with Geneve and in all cases the request of > >userspace should be honored. It also seemed like GRE was allocating > >space for the checksum but not actually computing/verifying it, which > >is odd. However, it's definitely possible that I'm missing something. > > Yes indeed. For VXLAN, UDP checksum was optional and we got by without > calculating it. We seem to be parsing the OVS_TUNNEL_KEY_ATTR_CSUM > attribute. So, might as well add the code to request NDIS to calculate UDP > checksum if OVS_TNL_F_CSUM is set. > > For GRE, you are right Jesse. Looks like we are punting on calculating > checksum even though we reserved space for it. On the sending side there¹s > no validation either so, that make Hyper-V to Hyper-V case work. KVM to > Hyper-V interop would probably fail. In the case for VXLAN indeed originally it was specified that udp checks should be set to zero.
In the case of GRE I only implemented and tested (KVM to Hyper-V) minimal support for it (GRE_KEY) as used by OpenStack. GRE_CSUM is an optional field so I skimmed on it. I wanted to add support for checksums when I had time to add GRE_SEQ but I will send out a patch for VXLAN and GRE checksums this evening. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev