NetworkingTodo
From KVM
This page should cover all networking related activity in KVM, currently most info is related to virtio-net.
TODO: add bugzilla entry links.
=== projects in progress. contributions are still very wellcome!
- vhost-net scalability tuning: threading for many VMs
Plan: switch to workqueue shared by many VMs
www.mail-archive.com/kvm@vger.kernel.org/msg69868.html
Developer: Shirley Ma?, MST
Testing: netperf guest to guest
- multiqueue support in macvtap
multiqueue is only supported for tun.
Add support for macvtap.
Developer: Jason Wang
- enable multiqueue by default
Multiqueue causes regression in some workloads, thus
it is off by default. Detect and enable/disable
automatically so we can make it on by default
Developer: Jason Wang
- guest programmable mac/vlan filtering with macvtap
Developer: Dragos Tatulea?, Amos Kong
Status: GuestProgrammableMacVlanFiltering
- bridge without promisc mode in NIC
given hardware support, teach bridge to program mac/vlan filtering in NIC Helps performance and security on noisy LANs http://comments.gmane.org/gmane.linux.network/266546 Developer: Vlad Yasevich
- reduce networking latency:
allow handling short packets from softirq or VCPU context
Plan:
We are going through the scheduler 3 times
(could be up to 5 if softirqd is involved)
Consider RX: host irq -> io thread -> VCPU thread ->
guest irq -> guest thread.
This adds a lot of latency.
We can cut it by some 1.5x if we do a bit of work
either in the VCPU or softirq context.
Testing: netperf TCP RR - should be improved drastically
netperf TCP STREAM guest to host - no regression
Developer: MST
- Flexible buffers: put virtio header inline with packet data
https://patchwork.kernel.org/patch/1540471/ Developer: MST
- device failover to allow migration with assigned devices
https://fedoraproject.org/wiki/Features/Virt_Device_Failover Developer: Gal Hammer, Cole Robinson, Laine Stump, MST
- Reuse vringh code for better maintainability
Developer: Rusty Russell
- Improve stats, make them more helpful for per analysis
Developer: Sriram Narasimhan
projects that are not started yet - no owner
- netdev polling for virtio.
See http://lkml.indiana.edu/hypermail/linux/kernel/1303.0/00553.html
- receive side zero copy
The ideal is a NIC with accelerated RFS support, So we can feed the virtio rx buffers into the correct NIC queue. Depends on non promisc NIC support in bridge.
- IPoIB infiniband bridging
Plan: implement macvtap for ipoib and virtio-ipoib
- RDMA bridging
- use kvm eventfd support for injecting level interrupts,
enable vhost by default for level interrupts
- DMA emgine (IOAT) use in tun
- virtio API extension: improve small packet/large buffer performance:
support "reposting" buffers for mergeable buffers, support pool for indirect buffers
=== vague ideas: path to implementation not clear
- ring redesign:
find a way to test raw ring performance
fix cacheline bounces
reduce interrupts
- support more queues
We limit TUN to 8 queues
- irq/numa 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?
- reduce conflict with VCPU thread
if VCPU and networking run on same CPU, they conflict resulting in bad performance. Fix that, push vhost thread out to another CPU more aggressively.
- 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
- vlan filtering in bridge
IGMP snooping in bridge should take vlans into account
testing projects
Keeping networking stable is highest priority.
- Run weekly test on upstream HEAD covering test matrix with autotest
non-virtio-net devices
- e1000: stabilize
test matrix
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