From KVM
Revision as of 16:55, 21 September 2010 by Mst (Talk | contribs)

This page should cover all networking related activity in KVM, currently most info is related to virtio-net.

Stabilization is highest priority currently. DOA test matrix (all combinations should work):

       vhost: test both on and off, obviously
       test: hotplug/unplug, vlan/mac filtering, netperf,
            file copy both ways: scp, NFS, NTFS
       guests: linux: release and debug kernels, windows
       conditions: plain run, run while under migration,
               vhost on/off migration
       networking setup: simple, qos with cgroups
       host configuration: host-guest, external-guest

vhost-net driver projects

  • iovec length limitations
      Developer: Jason Wang <>
      Testing: guest to host file transfer on windows.
  • mergeable buffers: fix host->guest BW regression
      Testing: netperf host to guest default flags
  • scalability tuning: threading for guest to guest
      Developer: MST
     Testing: netperf guest to guest

qemu projects

  • fix hotplug issues
     Developer: MST
  • migration with multiple macs/vlans
       qemu only sends ping with the first mac/no vlan:
       need to send it for all macs/vlan
  • bugfix: crash with illegal fd= value on command line

virtio projects

  • suspend/resume support
  • API extension: improve small packet/large buffer performance:
 support "reposting" buffers for mergeable buffers,
 support pool for indirect buffers
  • ring redesign:
     find a way to test raw ring performance 
     fix cacheline bounces 
     reduce interrupts
     Developer: MST
     see patchset: virtio: put last seen used index into ring itself

projects involing other kernel components and/or networking stack

  • guest programmable mac/vlan filtering with macvtap
  • bridge without promisc mode in NIC
 given hardware support, teach bridge
 to program mac/vlan filtering in NIC
  • rx mac filtering in tun
       the need for this is still not understood as we have filtering in bridge
       we have a small table of addresses, need to make it larger
       if we only need filtering for unicast (multicast is handled by IMP filtering)
  • vlan filtering in tun
       the need for this is still not understood as we have filtering in bridge
       for small # if vlans we can use BPF
  • vlan filtering in bridge
       IGMP snooping in bridge should take vlans into account
  • zero copy tx/rx for macvtap
      Developers: tx zero copy Shirley Ma; rx zero copy Xin Xiaohui
  • multiqueue (involves all of vhost, qemu, virtio, networking stack)
      Developer: Krishna Jumar
  • kvm MSI interrupt injection fast path
      Developer: MST
  • kvm eventfd support for injecting level interrupts
  • DMA emgine (IOAT) use in tun
  • allow handling short packets from softirq context
 Testing: netperf TCP STREAM guest to host
          netperf TCP RR
  • irq affinity:
    networking goes much faster with irq pinning:
    both with and without numa.
    what can be done to make the non-pinned setup go faster?

testing projects

  • Cover test matrix with autotest
  • Test with windows drivers, pass WHQL

non-virtio-net devices

  • e1000: stabilize

bugzilla entries for bugs fixed

  • verify these are ok upstream

abandoned projects:

  • Add GSO/checksum offload support to AF_PACKET(raw) sockets.
     status: incomplete
  • guest kernel 2.6.31 seems to work well. Under certain workloads,
     virtio performance has regressed with guest kernels 2.6.32 and up
     (but still better than userspace). A patch has been posted:
     status: might be fixed, need to test