doc: add jobstats library and sample release notes
[dpdk.git] / doc / guides / rel_notes / supported_features.rst
1 ..  BSD LICENSE
2     Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
3     All rights reserved.
4
5     Redistribution and use in source and binary forms, with or without
6     modification, are permitted provided that the following conditions
7     are met:
8
9     * Redistributions of source code must retain the above copyright
10     notice, this list of conditions and the following disclaimer.
11     * Redistributions in binary form must reproduce the above copyright
12     notice, this list of conditions and the following disclaimer in
13     the documentation and/or other materials provided with the
14     distribution.
15     * Neither the name of Intel Corporation nor the names of its
16     contributors may be used to endorse or promote products derived
17     from this software without specific prior written permission.
18
19     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20     "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21     LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22     A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23     OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25     LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26     DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27     THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
31 Supported Features
32 ==================
33
34 *   Packet Distributor library for dynamic, single-packet at a time, load balancing
35
36 *   IP fragmentation and reassembly library
37
38 *   Support for IPv6 in IP fragmentation and reassembly sample applications
39
40 *   Support for VFIO for mapping BARs and setting up interrupts
41
42 *   Link Bonding PMD Library supporting round-robin, active backup, balance(layer 2, layer 2+3, and layer 3+4), broadcast bonding modes
43     802.3ad link aggregation (mode 4), transmit load balancing (mode 5) and adaptive load balancing (mode 6)
44
45 *   Support zero copy mode RX/TX in user space vhost sample
46
47 *   Support multiple queues in virtio-net PMD
48
49 *   Support for Intel 40GbE Controllers:
50
51     *   Intel® XL710 40 Gigabit Ethernet Controller
52
53     *   Intel® X710 40 Gigabit Ethernet Controller
54
55 *   Support NIC filters in addition to flow director for Intel® 1GbE and 10GbE Controllers
56
57 *   Virtualization (KVM)
58
59     *   Userspace vhost switch:
60
61         New sample application to support userspace virtio back-end in host and packet switching between guests.
62
63 *   Virtualization (Xen)
64
65     *   Support for DPDK application running on Xen Domain0 without hugepages.
66
67     *   Para-virtualization
68
69         Support front-end Poll Mode Driver in guest domain
70
71         Support userspace packet switching back-end example in host domain
72
73 *   FreeBSD* 9.2 support for librte_pmd_e1000, librte_pmd_ixgbe and Virtual Function variants.
74     Please refer to the *DPDK for FreeBSD\* Getting Started Guide*.
75     Application support has been added for the following:
76
77     *   multiprocess/symmetric_mp
78
79     *   multiprocess/simple_mp
80
81     *   l2fwd
82
83     *   l3fwd
84
85 *   Support for sharing data over QEMU IVSHMEM
86
87 *   Support for Intel® Communications Chipset 8925 to 8955 Series in the DPDK-QAT Sample Application
88
89 *   New VMXNET3 driver for the paravirtual device presented to a VM by the VMware* ESXi Hypervisor.
90
91 *   BETA: example support for basic Netmap applications on DPDK
92
93 *   Support for the wireless KASUMI algorithm in the dpdk_qat sample application
94
95 *   Hierarchical scheduler implementing 5-level scheduling hierarchy (port, sub-port, pipe, traffic class, queue)
96     with 64K leaf nodes (packet queues).
97
98 *   Packet dropper based on Random Early Detection (RED) congestion control mechanism.
99
100 *   Traffic Metering based on Single Rate Three Color Marker (srTCM) and Two Rate Three Color Marker (trTCM).
101
102 *   An API for configuring RSS redirection table on the fly
103
104 *   An API to support KNI in a multi-process environment
105
106 *   IPv6 LPM forwarding
107
108 *   Power management library and sample application using CPU frequency scaling
109
110 *   IPv4 reassembly sample application
111
112 *   Quota & Watermarks sample application
113
114 *   PCIe Multi-BAR Mapping Support
115
116 *   Support for Physical Functions in Poll Mode Driver for the following devices:
117
118     *   Intel® 82576 Gigabit Ethernet Controller
119
120     *   Intel® i350 Gigabit Ethernet Controller
121
122     *   Intel® 82599 10-Gigabit Ethernet Controller
123
124     *   Intel® XL710/X710 40-Gigabit Ethernet Controller
125
126 *   Quality of Service (QoS) Hierarchical Scheduler: Sub-port Traffic Class Oversubscription
127
128 *   Multi-thread Kernel NIC Interface (KNI) for performance improvement
129
130 *   Virtualization (KVM)
131
132     *   Para-virtualization
133
134         Support virtio front-end poll mode driver in guest virtual machine
135         Support vHost raw socket interface as virtio back-end via KNI
136
137     *   SR-IOV Switching for the 10G Ethernet Controller
138
139         Support Physical Function to start/stop Virtual Function Traffic
140
141         Support Traffic Mirroring (Pool, VLAN, Uplink and Downlink)
142
143         Support VF multiple MAC addresses (Exact/Hash match), VLAN filtering
144
145         Support VF receive mode configuration
146
147 *   Support VMDq for 1 GbE and 10 GbE NICs
148
149 *   Extension for the Quality of Service (QoS) sample application to allow statistics polling
150
151 *   New libpcap  -based poll-mode driver, including support for reading from 3rd Party NICs
152     using Linux kernel drivers
153
154 *   New multi-process example using fork() to demonstrate application resiliency and recovery,
155     including reattachment to and re-initialization of shared data structures where necessary
156
157 *   New example (vmdq) to demonstrate VLAN-based packet filtering
158
159 *   Improved scalability for scheduling large numbers of timers using the rte_timer library
160
161 *   Support for building the DPDK as a shared library
162
163 *   Support for Intel® Ethernet Server Bypass Adapter X520-SR2
164
165 *   Poll Mode Driver support for the Intel®  Ethernet Connection I354 on the Intel®  Atom™ 
166     Processor C2000 Product Family SoCs
167
168 *   IPv6 exact match flow classification in the l3fwd sample application
169
170 *   Support for multiple instances of the Intel®  DPDK
171
172 *   Support for Intel®  82574L Gigabit Ethernet Controller - Intel®  Gigabit CT Desktop Adapter
173     (previously code named “Hartwell”)
174
175 *   Support for Intel® Ethernet Controller I210 (previously code named “Springville”)
176
177 *   Early access support for the Quad-port Intel®  Ethernet Server Adapter X520-4 and X520-DA2
178     (code named “Spring Fountain”)
179
180 *   Support for Intel®  X710/XL710 40 Gigabit Ethernet Controller (code named “Fortville”)
181
182 *   Core components:
183
184     *   rte_mempool: allocator for fixed-sized objects
185
186     *   rte_ring: single- or multi- consumer/producer queue implementation
187
188     *   rte_timer: implementation of timers
189
190     *   rte_malloc: malloc-like allocator
191
192     *   rte_mbuf: network packet buffers, including fragmented buffers
193
194     *   rte_hash: support for exact-match flow classification in software
195
196     *   rte_lpm: support for longest prefix match in software for IPv4 and IPv6
197
198     *   rte_sched: support for QoS scheduling
199
200     *   rte_meter: support for QoS traffic metering
201
202     *   rte_power: support for  power management
203
204     *   rte_ip_frag: support for IP fragmentation and reassembly
205
206 *   Poll Mode Driver - Common (rte_ether)
207
208     *   VLAN support
209
210     *   Support for Receive Side Scaling (RSS)
211
212     *   IEEE1588
213
214     *   Buffer chaining; Jumbo frames
215
216     *   TX checksum calculation
217
218     *   Configuration of promiscuous mode, and multicast packet receive filtering
219
220     *   L2 Mac address filtering
221
222     *   Statistics recording
223
224 *   IGB Poll Mode Driver - 1 GbE Controllers (librte_pmd_e1000)
225
226     *   Support for Intel® 82576 Gigabit Ethernet Controller (previously code named “Kawela”)
227
228     *   Support for Intel® 82580 Gigabit Ethernet Controller (previously code named “Barton Hills”)
229
230     *   Support for Intel®  I350 Gigabit Ethernet Controller (previously code named “Powerville”)
231
232     *   Support for Intel® 82574L Gigabit Ethernet Controller - Intel® Gigabit CT Desktop Adapter
233         (previously code named “Hartwell”)
234
235     *   Support for Intel® Ethernet Controller I210 (previously code named “Springville”)
236
237     *   Support for L2 Ethertype filters, SYN filters, 2-tuple filters and Flex filters for 82580 and i350
238
239     *   Support for L2 Ethertype filters, SYN filters and L3/L4 5-tuple filters for 82576
240
241 *   Poll Mode Driver - 10 GbE Controllers (librte_pmd_ixgbe)
242
243     *   Support for Intel® 82599 10 Gigabit Ethernet Controller (previously code named “Niantic”)
244
245     *   Support for Intel® Ethernet Server Adapter X520-T2 (previously code named “Iron Pond”)
246
247     *   Support for Intel® Ethernet Controller X540-T2 (previously code named “Twin Pond”)
248
249     *   Support for Virtual Machine Device Queues (VMDq) and Data Center Bridging (DCB) to divide
250         incoming traffic into 128 RX queues. DCB is also supported for transmitting packets.
251
252     *   Support for auto negotiation down to 1 Gb
253
254     *   Support for Flow Director
255
256     *   Support for L2 Ethertype filters, SYN filters and L3/L4 5-tuple filters for 82599EB
257
258 *   Poll Mode Driver - 40 GbE Controllers (librte_pmd_i40e)
259
260     *   Support for Intel® XL710 40 Gigabit Ethernet Controller
261
262     *   Support for Intel® X710 40 Gigabit Ethernet Controller
263
264 *   Environment Abstraction Layer (librte_eal)
265
266     *   Multi-process support
267
268     *   Multi-thread support
269
270     *   1 GB and 2 MB page support
271
272     *   Atomic integer operations
273
274     *   Querying CPU support of specific features
275
276     *   High Precision Event Timer support (HPET)
277
278     *   PCI device enumeration and blacklisting
279
280     *   Spin locks and R/W locks
281
282 *   Test PMD application
283
284     *   Support for PMD driver testing
285
286 *   Test application
287
288     *   Support for core component tests
289
290 *   Sample applications
291
292     *   Command Line
293
294     *   Exception Path (into Linux* for packets using the Linux TUN/TAP driver)
295
296     *   Hello World
297
298     *   Integration with Intel® Quick Assist Technology drivers 1.0.0, 1.0.1 and 1.1.0 on Intel® 
299         Communications Chipset 89xx Series C0 and C1 silicon.
300
301     *   Link Status Interrupt (Ethernet* Link Status Detection
302
303     *   IPv4 Fragmentation
304
305     *   IPv4 Multicast
306
307     *   IPv4 Reassembly
308
309     *   L2 Forwarding (supports virtualized and non-virtualized environments)
310
311     *   L2 Forwarding Job Stats
312
313     *   L3 Forwarding (IPv4 and IPv6)
314
315     *   L3 Forwarding in a Virtualized Environment
316
317     *   L3 Forwarding with Power Management
318
319     *   Bonding mode 6
320
321     *   QoS Scheduling
322
323     *   QoS Metering + Dropper
324
325     *   Quota & Watermarks
326
327     *   Load Balancing
328
329     *   Multi-process
330
331     *   Timer
332
333     *   VMDQ and DCB L2 Forwarding
334
335     *   Kernel NIC Interface (with ethtool support)
336
337     *   Userspace vhost switch
338
339 *   Interactive command line interface (rte_cmdline)
340
341 *   Updated 10 GbE Poll Mode Driver (PMD) to the latest BSD code base providing support of newer
342     ixgbe 10 GbE devices such as the Intel® X520-T2 server Ethernet adapter
343
344 *   An API for configuring Ethernet flow control
345
346 *   Support for interrupt-based Ethernet link status change detection
347
348 *   Support for SR-IOV functions on the Intel® 82599, Intel® 82576 and Intel® i350 Ethernet
349     Controllers in a virtualized environment
350
351 *   Improvements to SR-IOV switch configurability on the Intel® 82599 Ethernet Controllers in
352     a virtualized environment.
353
354 *   An API for L2 Ethernet Address “whitelist” filtering
355
356 *   An API for resetting statistics counters
357
358 *   Support for RX L4 (UDP/TCP/SCTP) checksum validation by NIC
359
360 *   Support for TX L3 (IPv4/IPv6) and L4 (UDP/TCP/SCTP) checksum calculation offloading
361
362 *   Support for IPv4 packet fragmentation and reassembly
363
364 *   Support for zero-copy Multicast
365
366 *   New APIs to allow the “blacklisting” of specific NIC ports.
367
368 *   Header files for common protocols (IP, SCTP, TCP, UDP)
369
370 *   Improved multi-process application support, allowing multiple co-operating DPDK
371     processes to access the NIC port queues directly.
372
373 *   CPU-specific compiler optimization
374
375 *   Job stats library for load/cpu utilization measurements
376
377 *   Improvements to the Load Balancing sample application
378
379 *   The addition of a PAUSE instruction to tight loops for energy-usage and performance improvements
380
381 *   Updated 10 GbE Transmit architecture incorporating new upstream PCIe* optimizations.
382
383 *   IPv6 support:
384
385     *   Support in Flow Director Signature Filters and masks
386
387     *   RSS support in sample application that use RSS
388
389     *   Exact match flow classification in the L3 Forwarding sample application
390
391     *   Support in LPM for IPv6 addresses
392
393 * Tunneling packet support:
394
395     *   Provide the APIs for VXLAN destination UDP port and VXLAN packet filter configuration
396         and support VXLAN TX checksum offload on Intel® 40GbE Controllers.