We're starting to plan our DPDK features for next year. We're planning to have 
a DPDK 2.0 release at the end of March, and we'd like to inform the community 
of the features that we hope to submit to that release. The current list of 
features, along with brief descriptions, is included below.

There will naturally be some changes to this list as work on these features 
progresses. Some will inevitably turn out to be bigger than anticipated and 
will need to be deferred to a later date, while other priorities will arise and 
need to be accommodated. So, this list will be subject to change, and should be 
taken as guidance on what we hope to submit, not a commitment.

Our aim in providing this information now is to solicit input from the 
community. We'd like to make sure we avoid duplication or conflicts with work 
that others are planning, so we'd be interested in hearing any plans that 
others in the community have for contributions to DPDK in this timeframe. This 
will allow us to build a complete picture and ensure we avoid duplication of 
effort. 

I'm sure people will have questions, and will be looking for more information 
on these features. Further details will be provided by the individual 
developers over the next few months. We aim to make better use of the RFC 
process in this release, and provide early outlines of the features so that we 
can obtain community feedback as soon as possible.

We also said at the recent DPDK Summit that we would investigate holding 
regular community conference calls. We'll be scheduling the first of these 
calls soon, and will use this to discuss the 2.0 (Q1 2015) features in a bit 
more detail.


2.0 (Q1 2015) DPDK Features:
Bifurcated Driver: With the Bifurcated Driver, the kernel will retain direct 
control of the NIC, and will assign specific queue pairs to DPDK. Configuration 
of the NIC is controlled by the kernel via ethtool.

Support the new Intel SoC platform, along with the embedded 10GbE NIC.

Packet Reordering: Assign a sequence number to packets on Rx, and then provide 
the ability to reorder on Tx to preserve the original order.

Packet Distributor (phase 2): Implement the following enhancements to the 
Packet Distributor that was originally delivered in the DPDK 1.7 release: 
performance improvements; the ability for packets from a flow to be processed 
by multiple worker cores in parallel and then reordered on Tx using the Packet 
Reordering feature; the ability to have multiple Distributors which share 
Worker cores.

Support Multiple Threads per Core: Use Linux cgroups to allow multiple threads 
to run on a single core. This would be useful in situations where a DPDK thread 
does not require the full resources of a core.

Support the Fedora 21 OS.

Support the host interface for Intel's next generation Ethernet switch. This 
only covers basic support for the host interface. Support for additional 
features will be added later.

Cuckoo Hash: A new hash algorithm was implemented as part of the Cuckoo Switch 
project (see http://www.cs.cmu.edu/~dongz/papers/cuckooswitch.pdf), and shows 
some promising performance results. This needs to be modified to make it more 
generic, and then incorporated into DPDK.

Provide DPDK support for uio_pci_generic.

Integrated Qemu Userspace vHost: Modify Userspace vHost to use Qemu version 
2.1, and remove the need for the kernel module (cuse.ko).

PCI Hot Plug: When you migrate a VM, you need hot plug support as the new VF on 
the new hardware you are running on post-migration needs to be initialized. 
With an emulated NIC migration is seamless as all configuration for the NIC is 
within the RAM of the VM and the hypervisor. With a VF you have actual hardware 
in the picture which needs to be set up properly.

Additional XL710/X710 40-Gigabit Ethernet Controller Features:  Support for 
additional XL710/X710 40-Gigabit Ethernet Controller features, including 
bandwidth and QoS management, NVGRE and other network overlay support, TSO, 
IEEE1588, DCB support.  SR-IOV switching and port mirroring.

Single Virtio Driver: Merge existing Virtio drivers into a single 
implementation, incorporating the best features from each of the existing 
drivers.

X32 ABI: This is an application binary interface project for the Linux kernel 
that allows programs to take advantage of the benefits of x86-64 (larger number 
of CPU registers, better floating-point performance, faster 
position-independent code shared libraries, function parameters passed via 
registers, faster syscall instruction) while using 32-bit pointers and thus 
avoiding the overhead of 64-bit pointers.

AVX2 ACL: Modify ACL library to use AVX2 instructions to improve performance.

Interrupt mode for PMD: Allow DPDK process to transition to interrupt mode when 
load is low so that other processes can run, or else power can be saved. This 
will increase latency/jitter.

DPDK Headroom: Provide a mechanism to indicate how much headroom (spare 
capacity) exists in a DPDK process.


Thanks,
Tim


Reply via email to