doc: fix file attributes of guides
[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 *   Virtualization (KVM)
35
36     *   Userspace vhost switch:
37
38         New sample application to support userspace virtio back-end in host and packet switching between guests.
39
40 *   Virtualization (Xen)
41
42     *   Support for Intel® DPDK application running on Xen Domain0 without hugepages.
43
44     *   Para-virtualization
45
46         Support front-end Poll Mode Driver in guest domain
47
48         Support userspace packet switching back-end example in host domain
49
50 *   FreeBSD* 9.2 support for librte_pmd_e1000, librte_pmd_ixgbe and Virtual Function variants.
51     Please refer to the *Intel® DPDK for FreeBSD\* Getting Started Guide*.
52     Application support has been added for the following:
53
54     *   multiprocess/symmetric_mp
55
56     *   multiprocess/simple_mp
57
58     *   l2fwd
59
60     *   l3fwd
61
62 *   Support for sharing data over QEMU IVSHMEM
63
64 *   Support for Intel® Communications Chipset 8925 to 8955 Series in the DPDK-QAT Sample Application
65
66 *   New VMXNET3 driver for the paravirtual device presented to a VM by the VMware* ESXi Hypervisor.
67
68 *   BETA: example support for basic Netmap applications on Intel® DPDK
69
70 *   Support for the wireless KASUMI algorithm in the dpdk_qat sample application
71
72 *   Hierarchical scheduler implementing 5-level scheduling hierarchy (port, sub-port, pipe, traffic class, queue)
73     with 64K leaf nodes (packet queues).
74
75 *   Packet dropper based on Random Early Detection (RED) congestion control mechanism.
76
77 *   Traffic Metering based on Single Rate Three Color Marker (srTCM) and Two Rate Three Color Marker (trTCM).
78
79 *   An API for configuring RSS redirection table on the fly
80
81 *   An API to support KNI in a multi-process environment
82
83 *   IPv6 LPM forwarding
84
85 *   Power management library and sample application using CPU frequency scaling
86
87 *   IPv4 reassembly sample application
88
89 *   Quota & Watermarks sample application
90
91 *   PCIe Multi-BAR Mapping Support
92
93 *   Support for Physical Functions in Poll Mode Driver for the following devices:
94
95     *   Intel® 82576 Gigabit Ethernet Controller
96
97     *   Intel® i350 Gigabit Ethernet Controller
98
99     *   Intel® 82599 10-Gigabit Ethernet Controller
100
101     *   Intel® XL710/X710 40-Gigabit Ethernet Controller
102
103 *   Quality of Service (QoS) Hierarchical Scheduler: Sub-port Traffic Class Oversubscription
104
105 *   Multi-thread Kernel NIC Interface (KNI) for performance improvement
106
107 *   Virtualization (KVM)
108
109     *   Para-virtualization
110
111         Support virtio front-end poll mode driver in guest virtual machine
112         Support vHost raw socket interface as virtio back-end via KNI
113
114     *   SR-IOV Switching for the 10G Ethernet Controller
115
116         Support Physical Function to start/stop Virtual Function Traffic
117
118         Support Traffic Mirroring (Pool, VLAN, Uplink and Downlink)
119
120         Support VF multiple MAC addresses (Exact/Hash match), VLAN filtering
121
122         Support VF receive mode configuration
123
124 *   Support VMDq for 1 GbE and 10 GbE NICs
125
126 *   Extension for the Quality of Service (QoS) sample application to allow statistics polling
127
128 *   New libpcap  -based poll-mode driver, including support for reading from 3rd Party NICs
129     using Linux kernel drivers
130
131 *   New multi-process example using fork() to demonstrate application resiliency and recovery,
132     including reattachment to and re-initialization of shared data structures where necessary
133
134 *   New example (vmdq) to demonstrate VLAN-based packet filtering
135
136 *   Improved scalability for scheduling large numbers of timers using the rte_timer library
137
138 *   Support for building the Intel® DPDK as a shared library
139
140 *   Support for Intel® Ethernet Server Bypass Adapter X520-SR2
141
142 *   Poll Mode Driver support for the Intel®  Ethernet Connection I354 on the Intel®  Atom™ 
143     Processor C2000 Product Family SoCs
144
145 *   IPv6 exact match flow classification in the l3fwd sample application
146
147 *   Support for multiple instances of the Intel®  DPDK
148
149 *   Support for Intel®  82574L Gigabit Ethernet Controller - Intel®  Gigabit CT Desktop Adapter
150     (previously code named “Hartwell”)
151
152 *   Support for Intel® Ethernet Controller I210 (previously code named “Springville”)
153
154 *   Early access support for the Quad-port Intel®  Ethernet Server Adapter X520-4 and X520-DA2
155     (code named “Spring Fountain”)
156
157 *   Support for Intel®  X710/XL710 40 Gigabit Ethernet Controller (code named “Fortville”)
158
159 *   Core components:
160
161     *   rte_mempool: allocator for fixed-sized objects
162
163     *   rte_ring: single- or multi- consumer/producer queue implementation
164
165     *   rte_timer: implementation of timers
166
167     *   rte_malloc: malloc-like allocator
168
169     *   rte_mbuf: network packet buffers, including fragmented buffers
170
171     *   rte_hash: support for exact-match flow classification in software
172
173     *   rte_lpm: support for longest prefix match in software for IPv4 and IPv6
174
175     *   rte_sched: support for QoS scheduling
176
177     *   rte_meter: support for QoS traffic metering
178
179     *   rte_power: support for  power management
180
181     *   rte_ip_frag: support for IP fragmentation and reassembly
182
183 *   Poll Mode Driver - Common (rte_ether)
184
185     *   VLAN support
186
187     *   Support for Receive Side Scaling (RSS)
188
189     *   IEEE1588
190
191     *   Buffer chaining; Jumbo frames
192
193     *   TX checksum calculation
194
195     *   Configuration of promiscuous mode, and multicast packet receive filtering
196
197     *   L2 Mac address filtering
198
199     *   Statistics recording
200
201 *   IGB Poll Mode Driver - 1 GbE Controllers (librte_pmd_e1000)
202
203     *   Support for Intel® 82576 Gigabit Ethernet Controller (previously code named “Kawela”)
204
205     *   Support for Intel® 82580 Gigabit Ethernet Controller (previously code named “Barton Hills”)
206
207     *   Support for Intel®  I350 Gigabit Ethernet Controller (previously code named “Powerville”)
208
209     *   Support for Intel® 82574L Gigabit Ethernet Controller - Intel® Gigabit CT Desktop Adapter
210         (previously code named “Hartwell”)
211
212     *   Support for Intel® Ethernet Controller I210 (previously code named “Springville”)
213
214     *   Support for L2 Ethertype filters, SYN filters, 2-tuple filters and Flex filters for 82580 and i350
215
216     *   Support for L2 Ethertype filters, SYN filters and L3/L4 5-tuple filters for 82576
217
218 *   Poll Mode Driver - 10 GbE Controllers (librte_pmd_ixgbe)
219
220     *   Support for Intel® 82599 10 Gigabit Ethernet Controller (previously code named “Niantic”)
221
222     *   Support for Intel® Ethernet Server Adapter X520-T2 (previously code named “Iron Pond”)
223
224     *   Support for Intel® Ethernet Controller X540-T2 (previously code named “Twin Pond”)
225
226     *   Support for Virtual Machine Device Queues (VMDq) and Data Center Bridging (DCB) to divide
227         incoming traffic into 128 RX queues. DCB is also supported for transmitting packets.
228
229     *   Support for auto negotiation down to 1 Gb
230
231     *   Support for Flow Director
232
233     *   Support for L2 Ethertype filters, SYN filters and L3/L4 5-tuple filters for 82599EB
234
235 *   Poll Mode Driver - 40 GbE Controllers (librte_pmd_i40e)
236
237     *   Support for Intel® XL710 40 Gigabit Ethernet Controller
238
239     *   Support for Intel® X710 40 Gigabit Ethernet Controller
240
241 *   Environment Abstraction Layer (librte_eal)
242
243     *   Multi-process support
244
245     *   Multi-thread support
246
247     *   1 GB and 2 MB page support
248
249     *   Atomic integer operations
250
251     *   Querying CPU support of specific features
252
253     *   High Precision Event Timer support (HPET)
254
255     *   PCI device enumeration and blacklisting
256
257     *   Spin locks and R/W locks
258
259 *   Test PMD application
260
261     *   Support for PMD driver testing
262
263 *   Test application
264
265     *   Support for core component tests
266
267 *   Sample applications
268
269     *   Command Line
270
271     *   Exception Path (into Linux* for packets using the Linux TUN/TAP driver)
272
273     *   Hello World
274
275     *   Integration with Intel® Quick Assist Technology drivers 1.0.0, 1.0.1 and 1.1.0 on Intel® 
276         Communications Chipset 89xx Series C0 and C1 silicon.
277
278     *   Link Status Interrupt (Ethernet* Link Status Detection
279
280     *   IPv4 Fragmentation
281
282     *   IPv4 Multicast
283
284     *   IPv4 Reassembly
285
286     *   L2 Forwarding (supports virtualized and non-virtualized environments)
287
288     *   L3 Forwarding (IPv4 and IPv6)
289
290     *   L3 Forwarding in a Virtualized Environment
291
292     *   L3 Forwarding with Power Management
293
294     *   QoS Scheduling
295
296     *   QoS Metering + Dropper
297
298     *   Quota & Watermarks
299
300     *   Load Balancing
301
302     *   Multi-process
303
304     *   Timer
305
306     *   VMDQ and DCB L2 Forwarding
307
308     *   Kernel NIC Interface (with ethtool support)
309
310     *   Userspace vhost switch
311
312 *   Interactive command line interface (rte_cmdline)
313
314 *   Updated 10 GbE Poll Mode Driver (PMD) to the latest BSD code base providing support of newer
315     ixgbe 10 GbE devices such as the Intel® X520-T2 server Ethernet adapter
316
317 *   An API for configuring Ethernet flow control
318
319 *   Support for interrupt-based Ethernet link status change detection
320
321 *   Support for SR-IOV functions on the Intel® 82599, Intel® 82576 and Intel® i350 Ethernet
322     Controllers in a virtualized environment
323
324 *   Improvements to SR-IOV switch configurability on the Intel® 82599 Ethernet Controllers in
325     a virtualized environment.
326
327 *   An API for L2 Ethernet Address “whitelist” filtering
328
329 *   An API for resetting statistics counters
330
331 *   Support for RX L4 (UDP/TCP/SCTP) checksum validation by NIC
332
333 *   Support for TX L3 (IPv4/IPv6) and L4 (UDP/TCP/SCTP) checksum calculation offloading
334
335 *   Support for IPv4 packet fragmentation and reassembly
336
337 *   Support for zero-copy Multicast
338
339 *   New APIs to allow the “blacklisting” of specific NIC ports.
340
341 *   Header files for common protocols (IP, SCTP, TCP, UDP)
342
343 *   Improved multi-process application support, allowing multiple co-operating Intel® DPDK
344     processes to access the NIC port queues directly.
345
346 *   CPU-specific compiler optimization
347
348 *   Improvements to the Load Balancing sample application
349
350 *   The addition of a PAUSE instruction to tight loops for energy-usage and performance improvements
351
352 *   Updated 10 GbE Transmit architecture incorporating new upstream PCIe* optimizations.
353
354 *   IPv6 support:
355
356     *   Support in Flow Director Signature Filters and masks
357
358     *   RSS support in sample application that use RSS
359
360     *   Exact match flow classification in the L3 Forwarding sample application
361
362     *   Support in LPM for IPv6 addresses