[ovs-dev] XDP/AF_XDP checksum use case in OVS

William Tu u9012063 at gmail.com
Tue Dec 17 01:55:38 UTC 2019


Hi,

We are measuring the performance of OVS using AF_XDP, and
have the following use case for XDP checksum:

High level Topology, two physical machines (PM1,2):
  VM1 -> OVS encap with Geneve (PM1) -> physical NIC
  -> network ->
  physical NIC -> OVS decap (PM2) -> VM2

When running an iperf TCP client/tx in a VM1, a tcp packet goes
through:
VM1
  1) VM's virtio net device
  2) by default, tx offload is on
PM1 Hypervisor
  3) OVS receives the tcp packet (no checksum)
  4) OVS encap outer Geneve header (no inner, no outer checksum)
  5) AF_XDP sends this frame to network (no inner, no outer checksum)
PM2 Hypervisor
  6) OVS receives using af_xdp port
  7) OVS removes Geneve UDP header, send to VM port
VM2
  8) VM2 kernel drops the TCP packet

A software work around is at 2) disable tx offload by using
ethtool -K tx off. This cause VM1 vcpu calculates inner tcp
csum but drops performance.

If XDP hints can somehow support TX checksum offload at 5),
this overhead can be avoided.

Thanks!
William



More information about the dev mailing list