qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 0/6] Add netmap backend offloadings support


From: Barak Wasserstrom
Subject: Re: [Qemu-devel] [PATCH v2 0/6] Add netmap backend offloadings support
Date: Wed, 15 Jan 2014 08:49:53 +0200

Vincenzo,
I'm using a tap interface and in the guest virtual device i see all offloading features are disabled, even though they are enabled in the physical device.
Perhaps you can help? See below related information:

Bridge to the physical interface in the host:
---------------------------------------------------------------------------
brctl addbr br0
brctl  addif br0 eth3
---------------------------------------------------------------------------

/etc/qemu-ifup:
---------------------------------------------------------------------------
#!/bin/sh
set -x

switch=br0

if [ -n "$1" ];then
        /usr/bin/sudo /usr/sbin/tunctl -u `whoami` -t $1
        /usr/bin/sudo /sbin/ip link set $1 up
        sleep 0.5s
        /usr/bin/sudo /sbin/brctl addif $switch $1
        exit 0
else
        echo "Error: no interface specified"
        exit 1
fi
---------------------------------------------------------------------------

Activation command:
---------------------------------------------------------------------------
qemu-system-arm -enable-kvm  -M vexpress-a15  -serial /dev/ttyS1 -append 'root=/dev/vda rw console=ttyAMA0 rootwait earlyprintk' -nographic -kernel /guest/zImage_vexpress -dtb /guest/vexpress-v2p-ca15_a7.dtb -drive if=none,file=/guest/arm-wheezy.img,id=foo -device virtio-blk-device,drive=foo -device virtio-net-device,netdev=net0,mac=DE:AD:BE:EF:F4:E5 -netdev tap,id=net0
---------------------------------------------------------------------------

Physical interface features (ethtool -k eth3):
---------------------------------------------------------------------------
Features for eth3:
rx-checksumming: on
tx-checksumming: on
tx-checksum-ipv4: on
tx-checksum-ip-generic: off [fixed]
tx-checksum-ipv6: on
tx-checksum-fcoe-crc: off [fixed]
tx-checksum-sctp: off [fixed]
scatter-gather: on
tx-scatter-gather: on
tx-scatter-gather-fraglist: off [fixed]
tcp-segmentation-offload: on
tx-tcp-segmentation: on
tx-tcp-ecn-segmentation: on
tx-tcp6-segmentation: on
udp-fragmentation-offload: off [fixed]
generic-segmentation-offload: on
generic-receive-offload: on
large-receive-offload: off [fixed]
rx-vlan-offload: off [fixed]
tx-vlan-offload: off [fixed]
ntuple-filters: on
receive-hashing: on
highdma: on
rx-vlan-filter: off [fixed]
vlan-challenged: off [fixed]
tx-lockless: off [fixed]
netns-local: off [fixed]
tx-gso-robust: off [fixed]
tx-fcoe-segmentation: off [fixed]
tx-gre-segmentation: off [fixed]
tx-udp_tnl-segmentation: off [fixed]
fcoe-mtu: off [fixed]
tx-nocache-copy: on
loopback: off [fixed]
rx-fcs: off [fixed]
rx-all: off [fixed]
tx-vlan-stag-hw-insert: off [fixed]
rx-vlan-stag-hw-parse: off [fixed]
rx-vlan-stag-filter: off [fixed]
---------------------------------------------------------------------------

Virtual device features in the guest (ethtool -k eth0):
---------------------------------------------------------------------------
Features for eth0:                                                              
rx-checksumming: off [fixed]                                                    
tx-checksumming: off                                                            
        tx-checksum-ipv4: off [fixed]                                           
        tx-checksum-ip-generic: off [fixed]                                     
        tx-checksum-ipv6: off [fixed]                                           
        tx-checksum-fcoe-crc: off [fixed]                                       
        tx-checksum-sctp: off [fixed]                                           
scatter-gather: off                                                             
        tx-scatter-gather: off [fixed]                                          
        tx-scatter-gather-fraglist: off [fixed]                                 
tcp-segmentation-offload: off                                                   
        tx-tcp-segmentation: off [fixed]                                        
        tx-tcp-ecn-segmentation: off [fixed]                                    
        tx-tcp6-segmentation: off [fixed]                                       
udp-fragmentation-offload: off [fixed]                                          
generic-segmentation-offload: off [requested on]                                
generic-receive-offload: on                                                     
large-receive-offload: off [fixed]                                              
rx-vlan-offload: off [fixed]                                                    
tx-vlan-offload: off [fixed]                                                    
ntuple-filters: off [fixed]                                                     
receive-hashing: off [fixed]                                                    
highdma: on [fixed]                                                             
rx-vlan-filter: off [fixed]                                                     
vlan-challenged: off [fixed]                                                    
tx-lockless: off [fixed]                                                        
netns-local: off [fixed]                                                        
tx-gso-robust: off [fixed]                                                      
tx-fcoe-segmentation: off [fixed]                                               
tx-gre-segmentation: off [fixed]                                                
tx-ipip-segmentation: off [fixed]                                               
tx-sit-segmentation: off [fixed]                                                
tx-udp_tnl-segmentation: off [fixed]                                            
tx-mpls-segmentation: off [fixed]                                               
fcoe-mtu: off [fixed]                                                           
tx-nocache-copy: off                                                            
loopback: off [fixed]                                                           
rx-fcs: off [fixed]                                                             
rx-all: off [fixed]                                                             
tx-vlan-stag-hw-insert: off [fixed]                                             
rx-vlan-stag-hw-parse: off [fixed]                                              
rx-vlan-stag-filter: off [fixed]                                                
l2-fwd-offload: off [fixed]                                                     
---------------------------------------------------------------------------

Regards,
Barak



On Tue, Jan 14, 2014 at 12:59 PM, Vincenzo Maffione <address@hidden> wrote:
The purpose of this patch series is to add offloadings support
(TSO/UFO/CSUM) to the netmap network backend, and make it possible
for the paravirtual network frontends (virtio-net and vmxnet3) to
use it.
In order to achieve this, these patches extend the existing
net.h interface to add abstract operations through which a network
frontend can manipulate backend offloading features, instead of
directly calling TAP-specific functions.

Guest-to-guest performance before this patches for virtio-net + netmap:

    TCP_STREAM                  5.0 Gbps
    TCP_RR                      12.7 Gbps
    UDP_STREAM (64-bytes)       790 Kpps

Guest-to-guest performance after this patches for virtio-net + netmap:

    TCP_STREAM                  21.4 Gbps
    TCP_RR                      12.7 Gbps
    UDP_STREAM (64-bytes)       790 Kpps

Experiment details:
    - Processor: Intel i7-3770K CPU @ 3.50GHz (8 cores)
    - Memory @ 1333 MHz
    - Host O.S.: Archlinux with Linux 3.11
    - Guest O.S.: Archlinux with Linux 3.11

    - QEMU command line:
        qemu-system-x86_64 archdisk.qcow -snapshot -enable-kvm -device virtio-net-pci,ioeventfd=on,mac=00:AA:BB:CC:DD:01,netdev=mynet -netdev netmap,ifname=vale0:01,id=mynet -smp 2 -vga std -m 3G


******** Changes against the previous version ***********
(1) The first two commits were not included into the previous version. They
    are used to clean the TAP interface before the offloadings manipulation
    API is introduced.

(2) The fifth commit merges two commits from the previous version: 3/5 "virtio-net and
    vmxnet3 use offloading API" and 5/5 "virtio-net and vmxnet3 can use netmap offloadings".
    This because of (3).

(3) There is actually an important problem. In the previous patch version, TCP/UDP traffic was
    supported between two guests attached to a VALE switch if and only if both guests use (or
    don't) the same offloadings: e.g. two virtio-net guests or two e1000 guests. This is why
    in this version I put the commit which adds the support for netmap as the last one and
    I temporarily disable the offloading feature (e.g. netmap_has_vnet_hdr() returns false).
    We are working at adding proper support also in the general case in which there is
    a mismatch between the NIC offloadings capabilities. As soon as we have proper support,
    we can enable it in net/netmap.c.
    What do you think about that? What's the best way to manage this temporary lack of
    support?


Vincenzo Maffione (6):
  net: change vnet-hdr TAP prototypes
  net: removing tap_using_vnet_hdr() function
  net: extend NetClientInfo for offloading manipulations
  net: TAP uses NetClientInfo offloading callbacks
  net: virtio-net and vmxnet3 use offloading API
  net: add offloadings support to netmap backend

 hw/net/virtio-net.c | 18 +++++-----------
 hw/net/vmxnet3.c    | 12 ++++-------
 include/net/net.h   | 17 +++++++++++++++
 include/net/tap.h   |  5 ++---
 net/net.c           | 46 +++++++++++++++++++++++++++++++++++++++++
 net/netmap.c        | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
 net/tap-win32.c     | 12 ++++-------
 net/tap.c           | 22 ++++++++------------
 8 files changed, 145 insertions(+), 46 deletions(-)

--
1.8.5.2




reply via email to

[Prev in Thread] Current Thread [Next in Thread]