On Thu, Jun 9, 2016 at 1:14 AM, Jesse Gross <je...@kernel.org> wrote: > On Wed, Jun 8, 2016 at 7:33 PM, Alexander Duyck > <alexander.du...@gmail.com> wrote: >> Agreed, but what are we really getting by adding the port value? In >> the case of the Intel hardware it isn't much as I can take advantage >> of checksum offload if I just turn on the outer headers. Then I don't >> even need to enable the Rx offloads based on port number and I don't >> pollute the VFs by offloading traffic that might be passing over them >> that may or may not be offloaded. > > Honestly, the use of UDP checksums is a nice trick but it's not really > an answer outside of Linux-only environments. In particular, > considering that VXLAN-GPE is coming from Cisco one of the main use > cases will be physical switches that can't compute the checksum. (And, > of course, any other vendors in that ecosystem are also likely to > follow that pattern even if they are software based.) Port based > offloads are necessary to get reasonable performance in these > situations.
I agree port based offloads are necessary under those circumstances, the same way a spare tire is needed in a car since tires go flat sometimes. I would prefer to not have to rely on a port based offload unless the ecosystem has forced us into it. This way we can move away from using tunnel offloads as a "feature", and essentially show that it is more of an interoperability crutch so that we can work with switch vendors. We don't have to require the checksum on Rx, and the other end always has the option of ignoring the checksum if it needs to as per the RFC for VXLAN. We just should make sure it is included with the Tx. The cost for adding a Tx checksum is extremely low at this point so there really is no argument for not including it. On the NICs I have enabled GSO_PARTIAL for I can show there there is effectively no difference in cost between having that checksum enabled or not in the case of both VXLAN and NVGRE. Any other NICs/drivers out there that can support tunnels offloads can probably support GSO_PARTIAL as well. It is just a matter of getting them updated. What it gives us is that we can show Linux <-> Linux performance is very good. If Linux <-> Other OS or Linux <-> Cisco Switch is not that is not on us, and perhaps it places an impetus on them to take actions so that they can show better performance in the future. We should be doing all we can do to improve the performance of the tunnel without having to rely on hardware offloads. I have provided a way to easily add outer checksum via software for tunnel segmentation. All I am arguing for is that we should default to a configuration for new UDP tunnels that will provide the biggest gain for all. Especially since it usually takes several years for new hardware to show up to provide the offloads needed to get that performance otherwise. If somebody wants to disable the checksum because they have some new NIC they bought that has broken offloads then they can do that, I am not against it. I am just saying we should default the Tx checksum for all UDP tunnels to being enabled as that allows us best performance until such devices come onto the market. - Alex _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev