[dpdk-dev] 16.07 Roadmap
tim.odriscoll at intel.com
Thu Mar 31 10:21:07 CEST 2016
As we're nearing the completion of the 16.04 release, I'd like to let the community know our plans for 16.07. It would be good if others are also willing to share their plans so that we can build up a complete picture of what's targeted for 16.07.
These are the features that we're planning to submit:
Vhost/Virtio Performance Loopback Utility: A tool will be provided which will allow virtio/vhost performance testing without the need for NIC traffic.
Virtio Code Refactoring for Rx/TX Split: The Rx and Tx queues will be split as they have different information to maintain apart from the common vring. Other cleanups will be made to make the queues more friendly for optimization.
Virtio Descriptor Index Update: The virtio descriptor index will be optimized for cache2cache transfer in the virtio PMD. The performance increase is expected to be below 10%.
Virtio in Containers: Support will be added for virtio in containers (see http://dpdk.org/ml/archives/dev/2016-February/032786.html). Multi-queue support will also be added.
I40e NSH: This includes: 1. Recognize the Network Services Header packet type; 2. Direct traffic to queues based on service path header and service index (dependent on firmware change so may not make 16.07); 3. Checksum offload.
I40e Floating VEB: Deferred from 16.04. See http://dpdk.org/ml/archives/dev/2016-March/036470.html for details.
Automatic VF Reset From PF (i40e/ixgbe): Currently, when a PF notifies a VF that a reset is required, DPDK just reports this event to the application, which then needs to restart the VF port. A more user-friendly mechanism will be implemented where DPDK will reset the VF port directly. The application will still be notified, but will not need to handle the reset of the VF port.
Software Implementation of the KASUMI Algorithm: Under the cryptodev API, a software implementation of the KASUMI algorithm will be supported. KASUMI is widely used in mobile communications systems.
Bit-Level Support for SNOW 3G: Support for the SNOW 3G algorithm is being added in the 16.04 release. In 16.07, this will be enhanced so that offsets and lengths can be specified in bits instead of bytes (so, you could encrypt 50 bits of a stream starting from the 5th bit for example).
IPsec Sample App Enhancements: Support for IPv6 and Transport Mode will be added to the IPsec sample application that was submitted in 16.04.
XStats Enhancements: Improve the extended NIC stats API to use id value pairs instead of string value pairs. Remap stats registers to use standard interface MIB naming and sizing.
Keep-Alive Enhancements: Improve DPDK keep-alive to use the DPDK alarm/interrupt API instead of using callbacks.
Live Migration for SRIOV: Support for live migration for vhost-user is being added to 16.04. This will be further enhanced to support live migration for SR-IOV by using link bonding to bond an SRIOV interface with a virtio interface.
IP Pipeline Enhancements: This includes: 1. Configure the MAC address in the routing pipeline; 2. Enable RSS per network interface through the configuration file; 3. Streamline the CLI code of the IP pipeline application.
Packet Capture Framework: In 16.04, there was lots of discussion on requirements for tcpdump support in DPDK (see http://dpdk.org/ml/archives/dev/2016-March/035592.html). For 16.07, we plan to submit a packet capture framework which will support hooks for filtering capabilities such as BPF. Our specific use case for this is for low rate packet capture for debug purposes. It should be possible for others to extend the framework to support high rate packet capture if they require that capability.
External Mempool Manager: This was originally submitted for 16.04 but had to be deferred due to ABI changes. See http://dpdk.org/ml/archives/dev/2016-March/035107.html for details.
In addition, there are some features that we're working on now but which we know won't make 16.07, either because time is too tight or because of external dependencies. These include:
QEMU vHost Back-End Reconnect: Currently, if a vswitch is connected to VMs via vhost-user and the vswitch is restarted, then when it comes back up again it cannot reconnect to the existing VMs. To address this, both QEMU and vhost-user need to support client mode (currently only server mode is supported), which implements reconnection messages that allow the vswitch to reconnect to the VMs. Changes are required in QEMU as well as in DPDK, so this change will need to be coordinated with the QEMU community.
Delay Packet Copy in vHost-User Dequeue: It may be possible to increase vhost-user performance by delaying the packet copy until a point where we know for certain whether the copy is required or not. This would avoid copying the packet in cases where it is not definitely required. Further investigation is required to determine how much of a performance gain can be achieved.
More information about the dev