<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://linux-kvm.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pankaj</id>
	<title>KVM - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://linux-kvm.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pankaj"/>
	<link rel="alternate" type="text/html" href="https://linux-kvm.org/page/Special:Contributions/Pankaj"/>
	<updated>2026-04-18T22:50:47Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.5</generator>
	<entry>
		<id>https://linux-kvm.org/index.php?title=NetworkingTodo&amp;diff=173351</id>
		<title>NetworkingTodo</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=NetworkingTodo&amp;diff=173351"/>
		<updated>2015-06-15T11:41:47Z</updated>

		<summary type="html">&lt;p&gt;Pankaj: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page should cover all networking related activity in KVM,&lt;br /&gt;
currently most info is related to virtio-net.&lt;br /&gt;
&lt;br /&gt;
TODO: add bugzilla entry links.&lt;br /&gt;
&lt;br /&gt;
=== projects in progress. contributions are still very wellcome! ===&lt;br /&gt;
&lt;br /&gt;
* virtio 1.0 support for linux guests&lt;br /&gt;
        required for maintainatibility&lt;br /&gt;
        mid.gmane.org/1414081380-14623-1-git-send-email-mst@redhat.com&lt;br /&gt;
        Developer: MST,Cornelia Huck&lt;br /&gt;
&lt;br /&gt;
* virtio 1.0 support in qemu&lt;br /&gt;
        required for maintainatibility&lt;br /&gt;
        mid.gmane.org/20141024103839.7162b93f.cornelia.huck@de.ibm.com&lt;br /&gt;
        Developer: Cornelia Huck, MST&lt;br /&gt;
&lt;br /&gt;
* improve net polling for cpu overcommit&lt;br /&gt;
        exit busy loop when another process is runnable&lt;br /&gt;
        mid.gmane.org/20140822073653.GA7372@gmail.com&lt;br /&gt;
        mid.gmane.org/1408608310-13579-2-git-send-email-jasowang@redhat.com&lt;br /&gt;
        Another idea is make the busy_read/busy_poll dynamic like dynamic PLE  window.&lt;br /&gt;
        Developer: Jason Wang, MST&lt;br /&gt;
&lt;br /&gt;
* vhost-net/tun/macvtap cross endian support&lt;br /&gt;
        mid.gmane.org/1414572130-17014-2-git-send-email-clg@fr.ibm.com&lt;br /&gt;
        Developer: Cédric Le Goater, MST&lt;br /&gt;
&lt;br /&gt;
* BQL/aggregation for virtio net&lt;br /&gt;
        dependencies: orphan packets less agressively, enable tx interrupt &lt;br /&gt;
        Developers: MST, Jason&lt;br /&gt;
&lt;br /&gt;
* orphan packets less agressively (was make pktgen works for virtio-net ( or partially orphan ))&lt;br /&gt;
       virtio-net orphans all skbs during tx, this used to be optimal.&lt;br /&gt;
       Recent changes in guest networking stack and hardware advances&lt;br /&gt;
       such as APICv changed optimal behaviour for drivers.&lt;br /&gt;
       We need to revisit optimizations such as orphaning all packets early&lt;br /&gt;
       to have optimal behaviour.&lt;br /&gt;
&lt;br /&gt;
       this should also fix pktgen which is currently broken with virtio net:&lt;br /&gt;
       orphaning all skbs makes pktgen wait for ever to the refcnt.&lt;br /&gt;
       Jason&#039;s idea: bring back tx interrupt (partially)&lt;br /&gt;
       Jason&#039;s idea: introduce a flag to tell pktgen not for wait&lt;br /&gt;
       Discussion here: https://patchwork.kernel.org/patch/1800711/&lt;br /&gt;
       MST&#039;s idea: add a .ndo_tx_polling not only for pktgen&lt;br /&gt;
       Developers: Jason Wang, MST&lt;br /&gt;
&lt;br /&gt;
* enable tx interrupt (conditionally?)&lt;br /&gt;
       Small packet TCP stream performance is not good. This is because&lt;br /&gt;
       virtio-net orphan the packet during ndo_start_xmit() which disable the &lt;br /&gt;
       TCP small packet optimizations like TCP small Queue and AutoCork. The&lt;br /&gt;
       idea is enable the tx interrupt to TCP small packets.&lt;br /&gt;
       Jason&#039;s idea: switch between poll and tx interrupt mode based on recent statistics.&lt;br /&gt;
       MST&#039;s idea: use a per descriptor flag for virtio to force interrupt for a specific packet.&lt;br /&gt;
       Developer: Jason Wang, MST&lt;br /&gt;
 &lt;br /&gt;
* vhost-net polling&lt;br /&gt;
       mid.gmane.org/20141029123831.A80F338002D@moren.haifa.ibm.com&lt;br /&gt;
       Developer: Razya Ladelsky&lt;br /&gt;
&lt;br /&gt;
* support more queues in tun&lt;br /&gt;
       We limit TUN to 8 queues, but we really want 1 queue per guest CPU. The&lt;br /&gt;
       limit comes from net core, need to teach it to allocate array of&lt;br /&gt;
       pointers and not array of queues. Jason has an draft patch to use flex&lt;br /&gt;
       array.  Another thing is to move the flow caches out of tun_struct.&lt;br /&gt;
       http://mid.gmane.org/1408369040-1216-1-git-send-email-pagupta@redhat.com&lt;br /&gt;
       Developers: Pankaj Gupta, Jason Wang&lt;br /&gt;
&lt;br /&gt;
* enable multiqueue by default&lt;br /&gt;
       Multiqueue causes regression in some workloads, thus&lt;br /&gt;
       it is off by default. Documentation/networking/scaling.txt&lt;br /&gt;
       Detect and enable/disable&lt;br /&gt;
       automatically so we can make it on by default?&lt;br /&gt;
       depends on: BQL&lt;br /&gt;
       This is because GSO tends to batch less when mq is enabled.&lt;br /&gt;
       https://patchwork.kernel.org/patch/2235191/&lt;br /&gt;
       Developer: Jason Wang&lt;br /&gt;
&lt;br /&gt;
* rework on flow caches&lt;br /&gt;
       Current hlist implementation of flow caches has several limitations:&lt;br /&gt;
       1) at worst case, linear search will be bad&lt;br /&gt;
       2) not scale&lt;br /&gt;
       https://patchwork.kernel.org/patch/2025121/&lt;br /&gt;
       Developer: Jason Wang&lt;br /&gt;
       &lt;br /&gt;
* bridge without promisc/allmulti mode in NIC&lt;br /&gt;
       given hardware support, teach bridge to program mac/vlan filtering in NIC&lt;br /&gt;
       Helps performance and security on noisy LANs&lt;br /&gt;
       http://comments.gmane.org/gmane.linux.network/266546&lt;br /&gt;
       Done for unicast, but not for multicast.&lt;br /&gt;
       Developer: Vlad Yasevich&lt;br /&gt;
&lt;br /&gt;
* Improve stats, make them more helpful for per analysis&lt;br /&gt;
       Developer: Sriram Narasimhan?&lt;br /&gt;
&lt;br /&gt;
* Enable LRO with bridging&lt;br /&gt;
       Enable GRO for packets coming to bridge from a tap interface&lt;br /&gt;
       Better support for windows LRO&lt;br /&gt;
       Extend virtio-header with statistics for GRO packets:&lt;br /&gt;
       number of packets coalesced and number of duplicate ACKs coalesced&lt;br /&gt;
       Developer: Dmitry Fleytman?&lt;br /&gt;
&lt;br /&gt;
* IPoIB infiniband bridging&lt;br /&gt;
       Plan: implement macvtap for ipoib and virtio-ipoib&lt;br /&gt;
       Developer: Marcel Apfelbaum&lt;br /&gt;
&lt;br /&gt;
* interrupt coalescing&lt;br /&gt;
       Reduce the number of interrupt&lt;br /&gt;
       Rx interrupt coalescing should be good for rx stream throughput.&lt;br /&gt;
       Tx interrupt coalescing will help the optimization of enabling tx&lt;br /&gt;
       interrupt conditionally.&lt;br /&gt;
       Developer: Jason Wang&lt;br /&gt;
&lt;br /&gt;
* sharing config interrupts&lt;br /&gt;
       Support more devices by sharing a single msi vector between multiple&lt;br /&gt;
       virtio devices.&lt;br /&gt;
       (Applies to virtio-blk too).&lt;br /&gt;
       Developer: Amos Kong&lt;br /&gt;
&lt;br /&gt;
* Multi-queue macvtap with real multiple queues&lt;br /&gt;
       Macvtap only provides multiple queues to user in the form of multiple&lt;br /&gt;
       sockets.  As each socket will perform dev_queue_xmit() and we don&#039;t&lt;br /&gt;
       really have multiple real queues on the device, we now have a lock&lt;br /&gt;
       contention.  This contention needs to be addressed.&lt;br /&gt;
       Developer: Vlad Yasevich&lt;br /&gt;
&lt;br /&gt;
* better xmit queueing for tun&lt;br /&gt;
       when guest is slower than host, tun drops packets aggressively. This is&lt;br /&gt;
       because keeping packets on the internal queue does not work well.&lt;br /&gt;
       Re-enable functionality to stop queue, probably with some watchdog to&lt;br /&gt;
       help with buggy guests.&lt;br /&gt;
       Developer: MST&lt;br /&gt;
&lt;br /&gt;
* Dev watchdog for virtio-net:&lt;br /&gt;
       Implement a watchdog for virtio-net. This will be useful for hunting host bugs early.&lt;br /&gt;
       Developer: Julio Faracco &amp;lt;jcfaracco@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Extend virtio_net header for future offloads&lt;br /&gt;
       virtio_net header is currently fixed sized and only supports&lt;br /&gt;
       segmentation offloading.  It would be useful that would could&lt;br /&gt;
       attach other data to virtio_net header to support things like&lt;br /&gt;
       vlan acceleration, IPv6 fragment_id pass-through, rx and tx-hash&lt;br /&gt;
       pass-through and some other ideas.&lt;br /&gt;
       Developer: Vlad Yasevich &amp;lt;vyasevic@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== projects in need of an owner ===&lt;br /&gt;
&lt;br /&gt;
* improve netdev polling for virtio.&lt;br /&gt;
  There are two kinds of netdev polling:&lt;br /&gt;
  - netpoll - used for debugging&lt;br /&gt;
  - rx busy polling for virtio-net [DONE]&lt;br /&gt;
    see https://git.kernel.org/cgit/linux/kernel/git/davem/net-next.git/commit/?id=91815639d8804d1eee7ce2e1f7f60b36771db2c9. 1 byte netperf TCP_RR shows 127% improvement.&lt;br /&gt;
    Future work is co-operate with host, and only does the busy polling when there&#039;s no other process in host cpu. &lt;br /&gt;
  contact: Jason Wang&lt;br /&gt;
&lt;br /&gt;
* drop vhostforce&lt;br /&gt;
  it&#039;s an optimization, probbaly not worth it anymore&lt;br /&gt;
&lt;br /&gt;
* avoid userspace virtio-net when vhost is enabled.&lt;br /&gt;
  ATM we run in userspace until DRIVER_OK&lt;br /&gt;
  this doubles our security attack surface,&lt;br /&gt;
  so it&#039;s best avoided.&lt;br /&gt;
&lt;br /&gt;
* feature negotiation for dpdk/vhost user&lt;br /&gt;
  feature negotiation seems to be broken&lt;br /&gt;
&lt;br /&gt;
* switch dpdk to qemu vhost user&lt;br /&gt;
  this seems like a better interface than&lt;br /&gt;
   character device in userspace,&lt;br /&gt;
   designed for out of process networking&lt;br /&gt;
&lt;br /&gt;
* netmap - like approach to zero copy networking&lt;br /&gt;
   is anything like this feasible on linux?&lt;br /&gt;
&lt;br /&gt;
* vhost-user: clean up protocol&lt;br /&gt;
  address multiple issues in vhost user protocol:&lt;br /&gt;
   missing VHOST_NET_SET_BACKEND&lt;br /&gt;
   make more messages synchronous (with a reply)&lt;br /&gt;
   VHOST_SET_MEM_TABLE, VHOST_SET_VRING_CALL&lt;br /&gt;
    mid.gmane.org/541956B8.1070203@huawei.com&lt;br /&gt;
    mid.gmane.org/54192136.2010409@huawei.com&lt;br /&gt;
   Contact: MST&lt;br /&gt;
&lt;br /&gt;
* ethtool seftest support for virtio-net&lt;br /&gt;
        Implement selftest ethtool method for virtio-net for regression test e.g the CVEs found for tun/macvtap, qemu and vhost.&lt;br /&gt;
        http://mid.gmane.org/1409881866-14780-1-git-send-email-hjxiaohust@gmail.com&lt;br /&gt;
        Contact: Jason Wang, Pankaj Gupta&lt;br /&gt;
&lt;br /&gt;
* vhost-net scalability tuning: threading for many VMs&lt;br /&gt;
      Plan: switch to workqueue shared by many VMs&lt;br /&gt;
      http://www.mail-archive.com/kvm@vger.kernel.org/msg69868.html&lt;br /&gt;
&lt;br /&gt;
http://domino.research.ibm.com/library/cyberdig.nsf/1e4115aea78b6e7c85256b360066f0d4/479e3578ed05bfac85257b4200427735!OpenDocument&lt;br /&gt;
&lt;br /&gt;
      Contact: Razya Ladelsky, Bandan Das&lt;br /&gt;
      Testing: netperf guest to guest&lt;br /&gt;
&lt;br /&gt;
* DPDK with vhost-user&lt;br /&gt;
  Support vhost-user in addition to vhost net cuse device&lt;br /&gt;
  Contact: Linhaifeng, MST&lt;br /&gt;
&lt;br /&gt;
* DPDK with vhost-net/user: fix offloads&lt;br /&gt;
  DPDK requires disabling offloads ATM,&lt;br /&gt;
  need to fix this.&lt;br /&gt;
  Contact: MST&lt;br /&gt;
&lt;br /&gt;
* reduce per-device memory allocations&lt;br /&gt;
  vhost device is very large due to need to&lt;br /&gt;
  keep large arrays of iovecs around.&lt;br /&gt;
  we do need large arrays for correctness,&lt;br /&gt;
  but we could move them out of line,&lt;br /&gt;
  and add short inline arrays for typical use-cases.&lt;br /&gt;
  contact: MST&lt;br /&gt;
&lt;br /&gt;
* batch tx completions in vhost&lt;br /&gt;
  vhost already batches up to 64 tx completions for zero copy&lt;br /&gt;
  batch non zero copy as well&lt;br /&gt;
  contact: Jason Wang&lt;br /&gt;
&lt;br /&gt;
* better parallelize small queues&lt;br /&gt;
  don&#039;t wait for ring full to kick.&lt;br /&gt;
  add api to detect ring almost full (e.g. 3/4) and kick&lt;br /&gt;
  depends on: BQL&lt;br /&gt;
  contact: MST&lt;br /&gt;
&lt;br /&gt;
* improve vhost-user unit test&lt;br /&gt;
  support running on machines without hugetlbfs&lt;br /&gt;
  support running with more vm memory layouts&lt;br /&gt;
  Contact: MST&lt;br /&gt;
&lt;br /&gt;
* tun: fix RX livelock&lt;br /&gt;
        it&#039;s easy for guest to starve out host networking&lt;br /&gt;
        open way to fix this is to use napi &lt;br /&gt;
        Contact: MST&lt;br /&gt;
&lt;br /&gt;
* large-order allocations&lt;br /&gt;
   see 28d6427109d13b0f447cba5761f88d3548e83605&lt;br /&gt;
   contact: MST&lt;br /&gt;
&lt;br /&gt;
* reduce networking latency:&lt;br /&gt;
  allow handling short packets from softirq or VCPU context&lt;br /&gt;
  Plan:&lt;br /&gt;
    We are going through the scheduler 3 times&lt;br /&gt;
    (could be up to 5 if softirqd is involved)&lt;br /&gt;
    Consider RX: host irq -&amp;gt; io thread -&amp;gt; VCPU thread -&amp;gt;&lt;br /&gt;
    guest irq -&amp;gt; guest thread.&lt;br /&gt;
    This adds a lot of latency.&lt;br /&gt;
    We can cut it by some 1.5x if we do a bit of work&lt;br /&gt;
    either in the VCPU or softirq context.&lt;br /&gt;
  Testing: netperf TCP RR - should be improved drastically&lt;br /&gt;
           netperf TCP STREAM guest to host - no regression&lt;br /&gt;
  Contact: MST&lt;br /&gt;
&lt;br /&gt;
* device failover to allow migration with assigned devices&lt;br /&gt;
  https://fedoraproject.org/wiki/Features/Virt_Device_Failover&lt;br /&gt;
  Contact: Gal Hammer, Cole Robinson, Laine Stump, MST&lt;br /&gt;
&lt;br /&gt;
* Reuse vringh code for better maintainability&lt;br /&gt;
  This project seems abandoned?&lt;br /&gt;
  Contact: Rusty Russell&lt;br /&gt;
&lt;br /&gt;
* use kvm eventfd support for injecting level-triggered interrupts&lt;br /&gt;
  aim: enable vhost by default for level interrupts.&lt;br /&gt;
  The benefit is security: we want to avoid using userspace&lt;br /&gt;
  virtio net so that vhost-net is always used.&lt;br /&gt;
&lt;br /&gt;
  Alex emulated (post &amp;amp; re-enable) level-triggered interrupt in KVM for&lt;br /&gt;
  skipping userspace. VFIO already enjoied the performance benefit,&lt;br /&gt;
  let&#039;s do it for virtio-pci. Current virtio-pci devices still use&lt;br /&gt;
  level-interrupt in userspace.&lt;br /&gt;
  see: kernel:&lt;br /&gt;
  7a84428af [PATCH] KVM: Add resampling irqfds for level triggered interrupts&lt;br /&gt;
 qemu:&lt;br /&gt;
  68919cac [PATCH] hw/vfio: set interrupts using pci irq wrappers&lt;br /&gt;
           (virtio-pci didn&#039;t use the wrappers)&lt;br /&gt;
  e1d1e586 [PATCH] vfio-pci: Add KVM INTx acceleration&lt;br /&gt;
&lt;br /&gt;
  Contact: Amos Kong, MST       &lt;br /&gt;
&lt;br /&gt;
* Head of line blocking issue with zerocopy&lt;br /&gt;
       zerocopy has several defects that will cause head of line blocking problem:&lt;br /&gt;
       - limit the number of pending DMAs&lt;br /&gt;
       - complete in order&lt;br /&gt;
       This means is one of some of the DMAs were delayed, all other will also delayed. This could be reproduced with following case:&lt;br /&gt;
       - boot two VMS VM1(tap1) and VM2(tap2) on host1 (has eth0)&lt;br /&gt;
       - setup tbf to limit the tap2 bandwidth to 10Mbit/s&lt;br /&gt;
       - start two netperf instances one from VM1 to VM2, another from VM1 to an external host whose traffic go through eth0 on host&lt;br /&gt;
       Then you can see not only VM1 to VM2 is throttled, but also VM1 to external host were also throttled.&lt;br /&gt;
       For this issue, a solution is orphan the frags when en queuing to non work conserving qdisc.&lt;br /&gt;
       But we have have similar issues in other case:&lt;br /&gt;
       - The card has its own priority queues&lt;br /&gt;
       - Host has two interface, one is 1G another is 10G, so throttle 1G may lead traffic over 10G to be throttled.&lt;br /&gt;
       The final solution is to remove receive buffering at tun, and convert it to use NAPI&lt;br /&gt;
       Contact: Jason Wang, MST&lt;br /&gt;
       Reference: https://lkml.org/lkml/2014/1/17/105&lt;br /&gt;
&lt;br /&gt;
* network traffic throttling&lt;br /&gt;
  block implemented &amp;quot;continuous leaky bucket&amp;quot; for throttling&lt;br /&gt;
  we can use continuous leaky bucket to network&lt;br /&gt;
  IOPS/BPS * RX/TX/TOTAL&lt;br /&gt;
  Developer: Amos Kong&lt;br /&gt;
&lt;br /&gt;
* Allocate mac_table dynamically&lt;br /&gt;
&lt;br /&gt;
  In the future, maybe we can allocate the mac_table dynamically instead&lt;br /&gt;
  of embed it in VirtIONet. Then we can just does a pointer swap and&lt;br /&gt;
  gfree() and can save a memcpy() here.&lt;br /&gt;
  Contact: Amos Kong&lt;br /&gt;
&lt;br /&gt;
* reduce conflict with VCPU thread&lt;br /&gt;
    if VCPU and networking run on same CPU,&lt;br /&gt;
    they conflict resulting in bad performance.&lt;br /&gt;
    Fix that, push vhost thread out to another CPU&lt;br /&gt;
    more aggressively.&lt;br /&gt;
    Contact: Amos Kong&lt;br /&gt;
&lt;br /&gt;
* rx mac filtering in tun&lt;br /&gt;
        the need for this is still not understood as we have filtering in bridge&lt;br /&gt;
        we have a small table of addresses, need to make it larger&lt;br /&gt;
        if we only need filtering for unicast (multicast is handled by IMP filtering)&lt;br /&gt;
        Contact: Amos Kong&lt;br /&gt;
&lt;br /&gt;
* vlan filtering in tun&lt;br /&gt;
        the need for this is still not understood as we have filtering in bridge&lt;br /&gt;
        Contact: Amos Kong&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* add documentation for macvlan and macvtap&lt;br /&gt;
   recent docs here:&lt;br /&gt;
   http://backreference.org/2014/03/20/some-notes-on-macvlanmacvtap/&lt;br /&gt;
   need to integrate in iproute and kernel docs.&lt;br /&gt;
&lt;br /&gt;
* receive side zero copy&lt;br /&gt;
  The ideal is a NIC with accelerated RFS support,&lt;br /&gt;
  So we can feed the virtio rx buffers into the correct NIC queue.&lt;br /&gt;
  Depends on non promisc NIC support in bridge.&lt;br /&gt;
  Search for &amp;quot;Xin Xiaohui: Provide a zero-copy method on KVM virtio-net&amp;quot;&lt;br /&gt;
  for a very old prototype&lt;br /&gt;
&lt;br /&gt;
* RDMA bridging&lt;br /&gt;
&lt;br /&gt;
* DMA emgine (IOAT) use in tun&lt;br /&gt;
  Old patch here: [PATCH RFC] tun: dma engine support&lt;br /&gt;
  It does not speed things up. Need to see why and&lt;br /&gt;
  what can be done.&lt;br /&gt;
&lt;br /&gt;
* virtio API extension: improve small packet/large buffer performance:&lt;br /&gt;
  support &amp;quot;reposting&amp;quot; buffers for mergeable buffers,&lt;br /&gt;
  support pool for indirect buffers&lt;br /&gt;
&lt;br /&gt;
* more GSO type support:&lt;br /&gt;
       Kernel not support more type of GSO: FCOE, GRE, UDP_TUNNEL&lt;br /&gt;
&lt;br /&gt;
* ring aliasing:&lt;br /&gt;
  using vhost-net as a networking backend with virtio-net in QEMU&lt;br /&gt;
  being what&#039;s guest facing.&lt;br /&gt;
  This gives you the best of both worlds: QEMU acts as a first&lt;br /&gt;
  line of defense against a malicious guest while still getting the&lt;br /&gt;
  performance advantages of vhost-net (zero-copy).&lt;br /&gt;
  In fact a bit of complexity in vhost was put there in the vague hope to&lt;br /&gt;
  support something like this: virtio rings are not translated through&lt;br /&gt;
  regular memory tables, instead, vhost gets a pointer to ring address.&lt;br /&gt;
  This allows qemu acting as a man in the middle,&lt;br /&gt;
  verifying the descriptors but not touching the packet data.&lt;br /&gt;
&lt;br /&gt;
* non-virtio device support with vhost&lt;br /&gt;
  Use vhost interface for guests that don&#039;t use virtio-net&lt;br /&gt;
&lt;br /&gt;
* Extend sndbuf scope to int64&lt;br /&gt;
  Current sndbuf limit is INT_MAX in tap_set_sndbuf(),&lt;br /&gt;
  large values (like 8388607T) can be converted rightly by qapi from qemu commandline,&lt;br /&gt;
  If we want to support the large values, we should extend sndbuf limit from &#039;int&#039; to &#039;int64&#039;&lt;br /&gt;
  Why is this useful?&lt;br /&gt;
  Upstream discussion: https://lists.gnu.org/archive/html/qemu-devel/2014-04/msg04192.html&lt;br /&gt;
&lt;br /&gt;
* unit test for vhost-user&lt;br /&gt;
   We don&#039;t have a unit test for vhost-user.&lt;br /&gt;
   The idea is to implement a simple vhost-user backend over userspace stack.&lt;br /&gt;
   And load pxe in guest.&lt;br /&gt;
   Contact: MST and Jason Wang&lt;br /&gt;
&lt;br /&gt;
* better qtest for virtio-net&lt;br /&gt;
   We test only boot and hotplug for virtio-net.&lt;br /&gt;
   Need to test more.&lt;br /&gt;
   Contact: MST and Jason Wang&lt;br /&gt;
&lt;br /&gt;
=== vague ideas: path to implementation not clear ===&lt;br /&gt;
&lt;br /&gt;
* change tcp_tso_should_defer for kvm: batch more&lt;br /&gt;
  aggressively.&lt;br /&gt;
  in particular, see below&lt;br /&gt;
&lt;br /&gt;
* tcp: increase gso buffering for cubic,reno&lt;br /&gt;
    At the moment we push out an skb whenever the limit becomes&lt;br /&gt;
    large enough to send a full-sized TSO skb even if the skb,&lt;br /&gt;
    in fact, is not full-sized.&lt;br /&gt;
    The reason for this seems to be that some congestion avoidance&lt;br /&gt;
    protocols rely on the number of packets in flight to calculate&lt;br /&gt;
    CWND, so if we underuse the available CWND it shrinks&lt;br /&gt;
    which degrades performance:&lt;br /&gt;
    http://www.mail-archive.com/netdev@vger.kernel.org/msg08738.html&lt;br /&gt;
&lt;br /&gt;
    However, there seems to be no reason to do this for&lt;br /&gt;
    protocols such as reno and cubic which don&#039;t rely on packets in flight,&lt;br /&gt;
    and so will simply increase CWND a bit more to compensate for the&lt;br /&gt;
    underuse.&lt;br /&gt;
&lt;br /&gt;
* ring redesign:&lt;br /&gt;
      find a way to test raw ring performance &lt;br /&gt;
      fix cacheline bounces &lt;br /&gt;
      reduce interrupts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* irq/numa affinity:&lt;br /&gt;
     networking goes much faster with irq pinning:&lt;br /&gt;
     both with and without numa.&lt;br /&gt;
     what can be done to make the non-pinned setup go faster?&lt;br /&gt;
&lt;br /&gt;
* vlan filtering in bridge&lt;br /&gt;
        kernel part is done (Vlad Yasevich)&lt;br /&gt;
        teach qemu to notify libvirt to enable the filter (still to do) (existed NIC_RX_FILTER_CHANGED event contains vlan-tables)&lt;br /&gt;
&lt;br /&gt;
* tx coalescing&lt;br /&gt;
        Delay several packets before kick the device.&lt;br /&gt;
&lt;br /&gt;
* bridging on top of macvlan &lt;br /&gt;
  add code to forward LRO status from macvlan (not macvtap)&lt;br /&gt;
  back to the lowerdev, so that setting up forwarding&lt;br /&gt;
  from macvlan disables LRO on the lowerdev&lt;br /&gt;
&lt;br /&gt;
* virtio: preserve packets exactly with LRO&lt;br /&gt;
  LRO is not normally compatible with forwarding.&lt;br /&gt;
  virtio we are getting packets from a linux host,&lt;br /&gt;
  so we could thinkably preserve packets exactly&lt;br /&gt;
  even with LRO. I am guessing other hardware could be&lt;br /&gt;
  doing this as well.&lt;br /&gt;
&lt;br /&gt;
* vxlan&lt;br /&gt;
  What could we do here?&lt;br /&gt;
&lt;br /&gt;
* bridging without promisc mode with OVS&lt;br /&gt;
&lt;br /&gt;
=== high level issues: not clear what the project is, yet ===&lt;br /&gt;
&lt;br /&gt;
* security: iptables&lt;br /&gt;
At the moment most people disables iptables to get&lt;br /&gt;
good performance on 10G/s networking.&lt;br /&gt;
Any way to improve experience?&lt;br /&gt;
&lt;br /&gt;
* performance&lt;br /&gt;
Going through scheduler and full networking stack twice&lt;br /&gt;
(host+guest) adds a lot of overhead&lt;br /&gt;
Any way to allow bypassing some layers?&lt;br /&gt;
&lt;br /&gt;
* manageability&lt;br /&gt;
Still hard to figure out VM networking,&lt;br /&gt;
VM networking is through libvirt, host networking through NM&lt;br /&gt;
Any way to integrate?&lt;br /&gt;
&lt;br /&gt;
=== testing projects ===&lt;br /&gt;
Keeping networking stable is highest priority.&lt;br /&gt;
&lt;br /&gt;
* Write some unit tests for vhost-net/vhost-scsi&lt;br /&gt;
* Run weekly test on upstream HEAD covering test matrix with autotest&lt;br /&gt;
* Measure the effect of each of the above-mentioned optimizations&lt;br /&gt;
  - Use autotest network performance regression testing (that runs netperf)&lt;br /&gt;
  - Also test any wild idea that works. Some may be useful.&lt;br /&gt;
* Migrate some of the performance regression autotest functionality into Netperf&lt;br /&gt;
  - Get the CPU-utilization of the Host and the other-party, and add them to the report. This is also true for other Host measures, such as vmexits, interrupts, ...&lt;br /&gt;
  - Run Netperf in demo-mode, and measure only the time when all the sessions are active (could be many seconds after the beginning of the tests)&lt;br /&gt;
  - Packaging of Netperf in Fedora / RHEL (exists in Fedora). Licensing could be an issue.&lt;br /&gt;
  - Make the scripts more visible&lt;br /&gt;
&lt;br /&gt;
=== non-virtio-net devices ===&lt;br /&gt;
* e1000: stabilize&lt;br /&gt;
&lt;br /&gt;
=== test matrix ===&lt;br /&gt;
&lt;br /&gt;
DOA test matrix (all combinations should work):&lt;br /&gt;
        vhost: test both on and off, obviously&lt;br /&gt;
        test: hotplug/unplug, vlan/mac filtering, netperf,&lt;br /&gt;
             file copy both ways: scp, NFS, NTFS&lt;br /&gt;
        guests: linux: release and debug kernels, windows&lt;br /&gt;
        conditions: plain run, run while under migration,&lt;br /&gt;
                vhost on/off migration&lt;br /&gt;
        networking setup: simple, qos with cgroups&lt;br /&gt;
        host configuration: host-guest, external-guest&lt;/div&gt;</summary>
		<author><name>Pankaj</name></author>
	</entry>
</feed>