• T
    vxlan: Remote checksum offload · dfd8645e
    Tom Herbert 提交于
    Add support for remote checksum offload in VXLAN. This uses a
    reserved bit to indicate that RCO is being done, and uses the low order
    reserved eight bits of the VNI to hold the start and offset values in a
    compressed manner.
    
    Start is encoded in the low order seven bits of VNI. This is start >> 1
    so that the checksum start offset is 0-254 using even values only.
    Checksum offset (transport checksum field) is indicated in the high
    order bit in the low order byte of the VNI. If the bit is set, the
    checksum field is for UDP (so offset = start + 6), else checksum
    field is for TCP (so offset = start + 16). Only TCP and UDP are
    supported in this implementation.
    
    Remote checksum offload for VXLAN is described in:
    
    https://tools.ietf.org/html/draft-herbert-vxlan-rco-00
    
    Tested by running 200 TCP_STREAM connections with VXLAN (over IPv4).
    
    With UDP checksums and Remote Checksum Offload
      IPv4
          Client
            11.84% CPU utilization
          Server
            12.96% CPU utilization
          9197 Mbps
      IPv6
          Client
            12.46% CPU utilization
          Server
            14.48% CPU utilization
          8963 Mbps
    
    With UDP checksums, no remote checksum offload
      IPv4
          Client
            15.67% CPU utilization
          Server
            14.83% CPU utilization
          9094 Mbps
      IPv6
          Client
            16.21% CPU utilization
          Server
            14.32% CPU utilization
          9058 Mbps
    
    No UDP checksums
      IPv4
          Client
            15.03% CPU utilization
          Server
            23.09% CPU utilization
          9089 Mbps
      IPv6
          Client
            16.18% CPU utilization
          Server
            26.57% CPU utilization
           8954 Mbps
    Signed-off-by: NTom Herbert <therbert@google.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    dfd8645e
if_link.h 14.0 KB