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