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

Reply via email to