]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | .. BSD LICENSE |
2 | Copyright(c) 2015 Intel Corporation. All rights reserved. | |
3 | ||
4 | Redistribution and use in source and binary forms, with or without | |
5 | modification, are permitted provided that the following conditions | |
6 | are met: | |
7 | ||
8 | * Redistributions of source code must retain the above copyright | |
9 | notice, this list of conditions and the following disclaimer. | |
10 | * Redistributions in binary form must reproduce the above copyright | |
11 | notice, this list of conditions and the following disclaimer in | |
12 | the documentation and/or other materials provided with the | |
13 | distribution. | |
14 | * Neither the name of Intel Corporation nor the names of its | |
15 | contributors may be used to endorse or promote products derived | |
16 | from this software without specific prior written permission. | |
17 | ||
18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |
19 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |
20 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | |
21 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | |
22 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |
23 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |
24 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |
25 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |
26 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
27 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | |
28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
29 | ||
30 | AESN-NI Multi Buffer Crytpo Poll Mode Driver | |
31 | ============================================ | |
32 | ||
33 | ||
34 | The AESNI MB PMD (**librte_pmd_aesni_mb**) provides poll mode crypto driver | |
35 | support for utilizing Intel multi buffer library, see the white paper | |
36 | `Fast Multi-buffer IPsec Implementations on Intel® Architecture Processors | |
37 | <https://www-ssl.intel.com/content/www/us/en/intelligent-systems/intel-technology/fast-multi-buffer-ipsec-implementations-ia-processors-paper.html?wapkw=multi+buffer>`_. | |
38 | ||
39 | The AES-NI MB PMD has current only been tested on Fedora 21 64-bit with gcc. | |
40 | ||
41 | Features | |
42 | -------- | |
43 | ||
44 | AESNI MB PMD has support for: | |
45 | ||
46 | Cipher algorithms: | |
47 | ||
48 | * RTE_CRYPTO_CIPHER_AES128_CBC | |
49 | * RTE_CRYPTO_CIPHER_AES192_CBC | |
50 | * RTE_CRYPTO_CIPHER_AES256_CBC | |
51 | * RTE_CRYPTO_CIPHER_AES128_CTR | |
52 | * RTE_CRYPTO_CIPHER_AES192_CTR | |
53 | * RTE_CRYPTO_CIPHER_AES256_CTR | |
54 | ||
55 | Hash algorithms: | |
56 | ||
57 | * RTE_CRYPTO_HASH_SHA1_HMAC | |
58 | * RTE_CRYPTO_HASH_SHA256_HMAC | |
59 | * RTE_CRYPTO_HASH_SHA512_HMAC | |
60 | ||
61 | Limitations | |
62 | ----------- | |
63 | ||
64 | * Chained mbufs are not supported. | |
65 | * Hash only is not supported. | |
66 | * Cipher only is not supported. | |
67 | * Only in-place is currently supported (destination address is the same as source address). | |
68 | * Only supports session-oriented API implementation (session-less APIs are not supported). | |
69 | * Not performance tuned. | |
70 | ||
71 | Installation | |
72 | ------------ | |
73 | ||
74 | To build DPDK with the AESNI_MB_PMD the user is required to download the mult- | |
75 | buffer library from `here <https://downloadcenter.intel.com/download/22972>`_ | |
76 | and compile it on their user system before building DPDK. When building the | |
77 | multi-buffer library it is necessary to have YASM package installed and also | |
78 | requires the overriding of YASM path when building, as a path is hard coded in | |
79 | the Makefile of the release package. | |
80 | ||
81 | .. code-block:: console | |
82 | ||
83 | make YASM=/usr/bin/yasm | |
84 | ||
85 | Initialization | |
86 | -------------- | |
87 | ||
88 | In order to enable this virtual crypto PMD, user must: | |
89 | ||
90 | * Export the environmental variable AESNI_MULTI_BUFFER_LIB_PATH with the path where | |
91 | the library was extracted. | |
92 | ||
93 | * Build the multi buffer library (explained in Installation section). | |
94 | ||
95 | * Set CONFIG_RTE_LIBRTE_PMD_AESNI_MB=y in config/common_base. | |
96 | ||
97 | To use the PMD in an application, user must: | |
98 | ||
99 | * Call rte_eal_vdev_init("crypto_aesni_mb") within the application. | |
100 | ||
101 | * Use --vdev="crypto_aesni_mb" in the EAL options, which will call rte_eal_vdev_init() internally. | |
102 | ||
103 | The following parameters (all optional) can be provided in the previous two calls: | |
104 | ||
105 | * socket_id: Specify the socket where the memory for the device is going to be allocated | |
106 | (by default, socket_id will be the socket where the core that is creating the PMD is running on). | |
107 | ||
108 | * max_nb_queue_pairs: Specify the maximum number of queue pairs in the device (8 by default). | |
109 | ||
110 | * max_nb_sessions: Specify the maximum number of sessions that can be created (2048 by default). | |
111 | ||
112 | Example: | |
113 | ||
114 | .. code-block:: console | |
115 | ||
116 | ./l2fwd-crypto -c 40 -n 4 --vdev="crypto_aesni_mb,socket_id=1,max_nb_sessions=128" |