SlideShare a Scribd company logo
4
Most read
8
Most read
11
Most read
Userspace 2015 | Dublin
A Symmetric Cryptography
framework for DPDK
project scope
• mbuf burst oriented APIs for enqueuing and dequeuing of cryptographic workloads
on devices.
• Creation of a symmetric Crypto API and device framework which is independent of
the crypto device implementation.
• Support for chaining of crypto cipher and hash transforms in a single operation
request.
• Session based and session-less crypto operations.
scheduling crypto workloads
• Fundamentally the DPDK crypto framework supports the scheduling of symmetric
crypto operations using a mbuf burst oriented asynchronous APIs in the same vain
as our ethdev rx/tx burst functions.
uint16_t rte_cryptodev_enqueue_burst (uint8_t dev_id, uint16_t qp_id,
struct rte_mbuf **pkts, int16_t nb_pkts);
uint16_t rte_cryptodev_dequeue_burst (uint8_t dev_id, uint16_t qp_id,
struct rte_mbuf **pkts, uint16_t nb_pkts);
• A new crypto operation pointer has been added to the mbuf structure and a new
offload flag PKT_TX_CRYPTO_OP which have to be set in the mbuf before a crypto
operation can be requested.
crypto primitives
/** Symmetric Cipher Algorithms */
enum rte_crypto_cipher_algorithm {
RTE_CRYPTO_SYM_CIPHER_NULL,
RTE_CRYPTO_SYM_CIPHER_AES_CBC,
RTE_CRYPTO_SYM_CIPHER_AES_GCM,
...
}
/** Symmetric Cipher Direction */
enum rte_crypto_cipher_operation {
RTE_CRYPTO_SYM_CIPHER_OP_ENCRYPT,
RTE_CRYPTO_SYM_CIPHER_OP_DECRYPT
}
/** Symmetric Authentication / Hash Algorithms */
enum rte_crypto_auth_algorithm {
RTE_CRYPTO_SYM_HASH_NONE,
RTE_CRYPTO_SYM_HASH_SHA1,
RTE_CRYPTO_SYM_HASH_SHA1_HMAC,
RTE_CRYPTO_SYM_HASH_SHA224,
….
}
/** Symmetric Authentication / Hash Operations */
enum rte_crypto_auth_operation {
RTE_CRYPTO_SYM_HASH_OP_DIGEST_VERIFY,
RTE_CRYPTO_SYM_HASH_OP_DIGEST_GENERATE
}
crypto transforms
/**Crypto transform structure. */
struct rte_crypto_xform {
struct rte_crypto_xform *next;
enum rte_crypto_xform_type type;
union {
struct rte_crypto_auth_xform auth;
struct rte_crypto_cipher_xform cipher;
};
};
/** Authentication Transform parameters */
struct rte_crypto_auth_xform {
enum rte_crypto_auth_operation op;
enum rte_crypto_auth_algorithm algo;
struct rte_crypto_key key;
uint32_t digest_length;
uint32_t add_auth_data_length;
};
/** Cipher Transform parameters */
struct rte_crypto_cipher_xform {
enum rte_crypto_cipher_operation op;
enum rte_crypto_cipher_algorithm algo;
struct rte_crypto_key key;
};
session management
• Sessions are used to manage information such as expand cipher keys and HMAC
IPADs and OPADs, which need to calculated for a particular crypto operation, but are
immutable on a packet to packet basis for a flow.
• Crypto sessions cache this immutable data in a optimal way for the underlying PMD
and this allows further acceleration of the offload of crypto workloads.
struct rte_cryptodev_session *
rte_cryptodev_session_create(uint8_t dev_id, struct rte_crypto_xform *xform);
struct rte_cryptodev_session *
rte_cryptodev_session_free(struct rte_cryptodev_session *session);
session pool management
• The crypto device framework provides a set of session pool management APIs for the
creation and freeing of the sessions
• The framework also provides hooks so the PMDs can pass the amount of memory
required for that PMDs private session parameters, as well as initialization functions
for the configuration of the session parameters and freeing function so the PMD can
managed the memory on destruction of a session
• Sessions created on a particular device can only be used on crypto devices of the
same type, and if you try to use a session on a device different to that on which it was
created then the crypto operation will fail
crypto operations
• Crypto operation data structures must be attached to each mbuf which you wish to
apply a crypto transform to.
• It specifies the offsets and length of the data into the mbuf payload which is to be
operated on.
• It contains pointers to IV, digest and additional authentication data, set as required,
which can be in the mbuf or at a different memory location. When using a hw
accelerators the physical addresses must be set for these parameters.
• Finally the crypto operation contains either a pointer to the crypto session or in the
case of a session-less operation a pointer to the first element of a xform chain.
crypto operations
mbuf header headroommbuf header headroom payload
xform xform
sess
ptr
cipher data
offset/len
IV
data/len
auth data
offset/len
digest
data/len
header Private session data
Data DigestIV
mbuf
crypto_op
cryptodev_session
We can pre allocate xform structs if we
are using session-less operations
add
data/len
operation pools
• As crypto operations are assigned on a per packet basis, and therefore need to be
allocated in the data path. We have create some pktmbuf like functions for managing
per allocated crypto operations mempools.
• Note that the pool create function takes a nb_xforms parameter, this can be used to
allocate memory for xform chains if you are planning on using session-less
operations.
struct rte_mempool *rte_crypto_op_pool_create (const char *name, unsigned nb_ops,
unsigned cache_size, unsigned nb_xforms, int socket_id);
struct rte_crypto_op_data *rte_crypto_op_alloc (struct rte_mempool *mp);
void rte_crypto_op_free (struct rte_crypto_op_data *op);
session-less operations
• This allows crypto operations to be submitted to a crypto device without the need to
have created a cached session.
struct rte_crypto_op_data * rte_crypto_op_alloc_sessionless (struct rte_mempool *mp,
unsigned nb_xforms);
• Returns crypto op with session-less flag set and transform chain pointers setup.
• User is required to set transform type and populate the parameters needed.
crypto_op->xform->type = RTE_CRYPTO_XFORM_CIPHER
crypto_op->xform->next->type = RTE_CRYPTO_XFORM_HASH
Implemented PMD’s
AES-NI multi-buffer PMD
• A purely software based PMD.
• Takes advantage of Advanced Encryption Standard New Instructions (AES-NI)
instructions to improve the speed of performing AES encryption and decryption on
core.
• The PMD is a light weight wrapper around the multi-buffer library
• It also leverages the vectorised instructions to further accelerate both cipher and
authenatication processing.
• Whitepaper: http://www.intel.com/content/www/us/en/intelligent-systems/intel-
technology/fast-multi-buffer-ipsec-implementations-ia-processors-paper.html
• Download: https://downloadcenter.intel.com/download/22972
QAT PMD
• PMD is a data path driver for Intel’s QuickAssist Technology specificly supporting the
DH89xx series (Coleto Creek) of accelerators.
• Provides up to 50 Gbps of bulk crypto.
• Cryptographic Primitives Supported
• Symmetric ciphers: AES, 3DES/DES, RC4, Kasumi, Snow3G …
• Message Digest/Hash (MD5, SHA1, SHA2) and Authentication (HMAC, AES-XCBC)
• Algorithm Chaining (One Cipher and one Hash in a single operation) and
Authenticated Encryption (AES-GCM, AES-CCM)
• Public key cryptography: RSA, DSA, DH, ECDSA, ECDH
• Data Compression Primitives Supported
• Compression and Decompression
• Algorithms: Deflate (LZ77 plus Huffman coding with gzip or zlib header)
• Stateful and stateless compression and decompression
QAT PMD
• Still requires the PF kernel driver
• Enabling SR-IOV on the QAT device to expose
multiple VFs.
• Can support up to 32 VFs.
• Supports 2 queue pairs per VF.
• Reserved space to allow compression and
asymmetric queue pairs to be added at a later
date.
64 queue pairs - each VF has 2 symmetric queue pairs.
IA
Symmetric crypto
DH895x
Symmetric Service Arbiter
(WRR)
0 1
VF0
62 63
VF31
Performance
Throughput performance
• Created performance tests to the examples/test applications to allow
measurement of baseline performance on your platform.
• RTE>>cryptodev_qat_perftest
• RTE>>cryptodev_aesni_mb_perftest
• Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz
• Intel® QuickAssist Adapter 8950 (PCIe Gen 3 x8)
Single core throughput test
0 500 1000 1500 2000 2500
Packet Size
AES128_CBC_SHA256_HMAC Throughput (Gbps)
AES-NI Multi buffer QAT
Future Work
future work
• Adding asymmetric crypto to data path.
• Development of an DPDK accelerated IPsec solution based on the BSD kernel
stack.

More Related Content

PDF
Blazing Performance with Flame Graphs
PDF
Hopper アーキテクチャで、変わること、変わらないこと
DOCX
Huawei cisco command conversion
PDF
SeaweedFS introduction
PDF
Intel® QuickAssist Technology Introduction, Applications, and Lab, Including ...
PDF
initramfsについて
PDF
Tensorflow lite for microcontroller
PDF
Intel(r) Quick Assist Technology Overview
Blazing Performance with Flame Graphs
Hopper アーキテクチャで、変わること、変わらないこと
Huawei cisco command conversion
SeaweedFS introduction
Intel® QuickAssist Technology Introduction, Applications, and Lab, Including ...
initramfsについて
Tensorflow lite for microcontroller
Intel(r) Quick Assist Technology Overview

What's hot (20)

PPTX
Cloud resilience, provisioning
PDF
Q4.11: Using GCC Auto-Vectorizer
PDF
NEDIA_SNIA_CXL_講演資料.pdf
PDF
Arquitetura de Memoria do PostgreSQL
PDF
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
PDF
Java Performance Analysis on Linux with Flame Graphs
PDF
Introduction to TensorFlow Lite
ODP
Dpdk performance
PPTX
Accelerating TensorFlow with RDMA for high-performance deep learning
PDF
分布式Key Value Store漫谈
PDF
Magnum IO GPUDirect Storage 最新情報
PDF
ContainerDays Hamburg 2023 — Cilium Workshop.pdf
PDF
Velocity 2015 linux perf tools
PDF
Intel DPDK Step by Step instructions
PDF
VXLAN and FRRouting
PDF
BPF Internals (eBPF)
PPTX
Module 1: ConfD Technical Introduction
KEY
High Performance Weibo QCon Beijing 2011
PPTX
快快樂樂學 Angular 2 開發框架
PDF
Kubernetes networking
Cloud resilience, provisioning
Q4.11: Using GCC Auto-Vectorizer
NEDIA_SNIA_CXL_講演資料.pdf
Arquitetura de Memoria do PostgreSQL
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
Java Performance Analysis on Linux with Flame Graphs
Introduction to TensorFlow Lite
Dpdk performance
Accelerating TensorFlow with RDMA for high-performance deep learning
分布式Key Value Store漫谈
Magnum IO GPUDirect Storage 最新情報
ContainerDays Hamburg 2023 — Cilium Workshop.pdf
Velocity 2015 linux perf tools
Intel DPDK Step by Step instructions
VXLAN and FRRouting
BPF Internals (eBPF)
Module 1: ConfD Technical Introduction
High Performance Weibo QCon Beijing 2011
快快樂樂學 Angular 2 開發框架
Kubernetes networking
Ad

Similar to Symmetric Crypto for DPDK - Declan Doherty (20)

PDF
DPDK Summit 2015 - Intel - Keith Wiles
PDF
DPDK Integration: A Product's Journey - Roger B. Melton
PDF
LF_DPDK17_rte_raw_device: implementing programmable accelerators using generi...
PDF
DDS-Security 1.2 - What's New? Stronger security for long-running systems
PPTX
Introduction to DPDK
PPTX
Dpdk: rte_security: An update and introducing PDCP
PDF
Cryptographic Hardware Support for the Linux Kernel - Netconf 2004
PPT
Security via Java
PDF
DPDK In Depth
PPTX
The n00bs guide to ovs dpdk
PDF
Dpdk 2019-ipsec-eventdev
PPTX
Crypto academy
PPTX
High Performance Networking Leveraging the DPDK and Growing Community
PDF
Software Attacks on Hardware Wallets
PDF
Practical real-time operating system security for the masses
PDF
Track 5 session 2 - st dev con 2016 - security iot best practices
PPTX
Q1 Memory Fabric Forum: About MindShare Training
PDF
DRBD Deep Dive - Philipp Reisner - LINBIT
PDF
SFO15-200: Linux kernel generic TEE driver
PDF
DPDK IPSec Security Gateway Application
DPDK Summit 2015 - Intel - Keith Wiles
DPDK Integration: A Product's Journey - Roger B. Melton
LF_DPDK17_rte_raw_device: implementing programmable accelerators using generi...
DDS-Security 1.2 - What's New? Stronger security for long-running systems
Introduction to DPDK
Dpdk: rte_security: An update and introducing PDCP
Cryptographic Hardware Support for the Linux Kernel - Netconf 2004
Security via Java
DPDK In Depth
The n00bs guide to ovs dpdk
Dpdk 2019-ipsec-eventdev
Crypto academy
High Performance Networking Leveraging the DPDK and Growing Community
Software Attacks on Hardware Wallets
Practical real-time operating system security for the masses
Track 5 session 2 - st dev con 2016 - security iot best practices
Q1 Memory Fabric Forum: About MindShare Training
DRBD Deep Dive - Philipp Reisner - LINBIT
SFO15-200: Linux kernel generic TEE driver
DPDK IPSec Security Gateway Application
Ad

More from harryvanhaaren (12)

PDF
The 7 Deadly Sins of Packet Processing - Venky Venkatesan and Bruce Richardson
PDF
Performance Lessons learned in vRouter - Stephen Hemminger
PDF
Dpdk Validation - Liu, Yong
PPTX
Packet Framework - Cristian Dumitrescu
PDF
Project growth & Next steps - Thomas monjalon
PDF
Hotplug and Virtio - Tetsuya Mukawa
PDF
Generic Resource Manager - László Vadkerti, András Kovács
PDF
TRex Traffic Generator - Hanoch Haim
PDF
OVS and DPDK - T.F. Herbert, K. Traynor, M. Gray
PDF
DPDK Architecture Musings - Andy Harvey
PDF
OpenDataPlane - Bill Fischofer
PDF
Hyperscan - Mohammad Abdul Awal
The 7 Deadly Sins of Packet Processing - Venky Venkatesan and Bruce Richardson
Performance Lessons learned in vRouter - Stephen Hemminger
Dpdk Validation - Liu, Yong
Packet Framework - Cristian Dumitrescu
Project growth & Next steps - Thomas monjalon
Hotplug and Virtio - Tetsuya Mukawa
Generic Resource Manager - László Vadkerti, András Kovács
TRex Traffic Generator - Hanoch Haim
OVS and DPDK - T.F. Herbert, K. Traynor, M. Gray
DPDK Architecture Musings - Andy Harvey
OpenDataPlane - Bill Fischofer
Hyperscan - Mohammad Abdul Awal

Recently uploaded (20)

PPTX
MYSQL Presentation for SQL database connectivity
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Encapsulation theory and applications.pdf
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Electronic commerce courselecture one. Pdf
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Machine learning based COVID-19 study performance prediction
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Approach and Philosophy of On baking technology
PDF
cuic standard and advanced reporting.pdf
MYSQL Presentation for SQL database connectivity
Chapter 3 Spatial Domain Image Processing.pdf
Building Integrated photovoltaic BIPV_UPV.pdf
Encapsulation_ Review paper, used for researhc scholars
Spectral efficient network and resource selection model in 5G networks
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Encapsulation theory and applications.pdf
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Mobile App Security Testing_ A Comprehensive Guide.pdf
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Electronic commerce courselecture one. Pdf
Programs and apps: productivity, graphics, security and other tools
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Advanced methodologies resolving dimensionality complications for autism neur...
Review of recent advances in non-invasive hemoglobin estimation
Machine learning based COVID-19 study performance prediction
Network Security Unit 5.pdf for BCA BBA.
Approach and Philosophy of On baking technology
cuic standard and advanced reporting.pdf

Symmetric Crypto for DPDK - Declan Doherty

  • 1. Userspace 2015 | Dublin A Symmetric Cryptography framework for DPDK
  • 2. project scope • mbuf burst oriented APIs for enqueuing and dequeuing of cryptographic workloads on devices. • Creation of a symmetric Crypto API and device framework which is independent of the crypto device implementation. • Support for chaining of crypto cipher and hash transforms in a single operation request. • Session based and session-less crypto operations.
  • 3. scheduling crypto workloads • Fundamentally the DPDK crypto framework supports the scheduling of symmetric crypto operations using a mbuf burst oriented asynchronous APIs in the same vain as our ethdev rx/tx burst functions. uint16_t rte_cryptodev_enqueue_burst (uint8_t dev_id, uint16_t qp_id, struct rte_mbuf **pkts, int16_t nb_pkts); uint16_t rte_cryptodev_dequeue_burst (uint8_t dev_id, uint16_t qp_id, struct rte_mbuf **pkts, uint16_t nb_pkts); • A new crypto operation pointer has been added to the mbuf structure and a new offload flag PKT_TX_CRYPTO_OP which have to be set in the mbuf before a crypto operation can be requested.
  • 4. crypto primitives /** Symmetric Cipher Algorithms */ enum rte_crypto_cipher_algorithm { RTE_CRYPTO_SYM_CIPHER_NULL, RTE_CRYPTO_SYM_CIPHER_AES_CBC, RTE_CRYPTO_SYM_CIPHER_AES_GCM, ... } /** Symmetric Cipher Direction */ enum rte_crypto_cipher_operation { RTE_CRYPTO_SYM_CIPHER_OP_ENCRYPT, RTE_CRYPTO_SYM_CIPHER_OP_DECRYPT } /** Symmetric Authentication / Hash Algorithms */ enum rte_crypto_auth_algorithm { RTE_CRYPTO_SYM_HASH_NONE, RTE_CRYPTO_SYM_HASH_SHA1, RTE_CRYPTO_SYM_HASH_SHA1_HMAC, RTE_CRYPTO_SYM_HASH_SHA224, …. } /** Symmetric Authentication / Hash Operations */ enum rte_crypto_auth_operation { RTE_CRYPTO_SYM_HASH_OP_DIGEST_VERIFY, RTE_CRYPTO_SYM_HASH_OP_DIGEST_GENERATE }
  • 5. crypto transforms /**Crypto transform structure. */ struct rte_crypto_xform { struct rte_crypto_xform *next; enum rte_crypto_xform_type type; union { struct rte_crypto_auth_xform auth; struct rte_crypto_cipher_xform cipher; }; }; /** Authentication Transform parameters */ struct rte_crypto_auth_xform { enum rte_crypto_auth_operation op; enum rte_crypto_auth_algorithm algo; struct rte_crypto_key key; uint32_t digest_length; uint32_t add_auth_data_length; }; /** Cipher Transform parameters */ struct rte_crypto_cipher_xform { enum rte_crypto_cipher_operation op; enum rte_crypto_cipher_algorithm algo; struct rte_crypto_key key; };
  • 6. session management • Sessions are used to manage information such as expand cipher keys and HMAC IPADs and OPADs, which need to calculated for a particular crypto operation, but are immutable on a packet to packet basis for a flow. • Crypto sessions cache this immutable data in a optimal way for the underlying PMD and this allows further acceleration of the offload of crypto workloads. struct rte_cryptodev_session * rte_cryptodev_session_create(uint8_t dev_id, struct rte_crypto_xform *xform); struct rte_cryptodev_session * rte_cryptodev_session_free(struct rte_cryptodev_session *session);
  • 7. session pool management • The crypto device framework provides a set of session pool management APIs for the creation and freeing of the sessions • The framework also provides hooks so the PMDs can pass the amount of memory required for that PMDs private session parameters, as well as initialization functions for the configuration of the session parameters and freeing function so the PMD can managed the memory on destruction of a session • Sessions created on a particular device can only be used on crypto devices of the same type, and if you try to use a session on a device different to that on which it was created then the crypto operation will fail
  • 8. crypto operations • Crypto operation data structures must be attached to each mbuf which you wish to apply a crypto transform to. • It specifies the offsets and length of the data into the mbuf payload which is to be operated on. • It contains pointers to IV, digest and additional authentication data, set as required, which can be in the mbuf or at a different memory location. When using a hw accelerators the physical addresses must be set for these parameters. • Finally the crypto operation contains either a pointer to the crypto session or in the case of a session-less operation a pointer to the first element of a xform chain.
  • 9. crypto operations mbuf header headroommbuf header headroom payload xform xform sess ptr cipher data offset/len IV data/len auth data offset/len digest data/len header Private session data Data DigestIV mbuf crypto_op cryptodev_session We can pre allocate xform structs if we are using session-less operations add data/len
  • 10. operation pools • As crypto operations are assigned on a per packet basis, and therefore need to be allocated in the data path. We have create some pktmbuf like functions for managing per allocated crypto operations mempools. • Note that the pool create function takes a nb_xforms parameter, this can be used to allocate memory for xform chains if you are planning on using session-less operations. struct rte_mempool *rte_crypto_op_pool_create (const char *name, unsigned nb_ops, unsigned cache_size, unsigned nb_xforms, int socket_id); struct rte_crypto_op_data *rte_crypto_op_alloc (struct rte_mempool *mp); void rte_crypto_op_free (struct rte_crypto_op_data *op);
  • 11. session-less operations • This allows crypto operations to be submitted to a crypto device without the need to have created a cached session. struct rte_crypto_op_data * rte_crypto_op_alloc_sessionless (struct rte_mempool *mp, unsigned nb_xforms); • Returns crypto op with session-less flag set and transform chain pointers setup. • User is required to set transform type and populate the parameters needed. crypto_op->xform->type = RTE_CRYPTO_XFORM_CIPHER crypto_op->xform->next->type = RTE_CRYPTO_XFORM_HASH
  • 13. AES-NI multi-buffer PMD • A purely software based PMD. • Takes advantage of Advanced Encryption Standard New Instructions (AES-NI) instructions to improve the speed of performing AES encryption and decryption on core. • The PMD is a light weight wrapper around the multi-buffer library • It also leverages the vectorised instructions to further accelerate both cipher and authenatication processing. • Whitepaper: http://www.intel.com/content/www/us/en/intelligent-systems/intel- technology/fast-multi-buffer-ipsec-implementations-ia-processors-paper.html • Download: https://downloadcenter.intel.com/download/22972
  • 14. QAT PMD • PMD is a data path driver for Intel’s QuickAssist Technology specificly supporting the DH89xx series (Coleto Creek) of accelerators. • Provides up to 50 Gbps of bulk crypto. • Cryptographic Primitives Supported • Symmetric ciphers: AES, 3DES/DES, RC4, Kasumi, Snow3G … • Message Digest/Hash (MD5, SHA1, SHA2) and Authentication (HMAC, AES-XCBC) • Algorithm Chaining (One Cipher and one Hash in a single operation) and Authenticated Encryption (AES-GCM, AES-CCM) • Public key cryptography: RSA, DSA, DH, ECDSA, ECDH • Data Compression Primitives Supported • Compression and Decompression • Algorithms: Deflate (LZ77 plus Huffman coding with gzip or zlib header) • Stateful and stateless compression and decompression
  • 15. QAT PMD • Still requires the PF kernel driver • Enabling SR-IOV on the QAT device to expose multiple VFs. • Can support up to 32 VFs. • Supports 2 queue pairs per VF. • Reserved space to allow compression and asymmetric queue pairs to be added at a later date. 64 queue pairs - each VF has 2 symmetric queue pairs. IA Symmetric crypto DH895x Symmetric Service Arbiter (WRR) 0 1 VF0 62 63 VF31
  • 17. Throughput performance • Created performance tests to the examples/test applications to allow measurement of baseline performance on your platform. • RTE>>cryptodev_qat_perftest • RTE>>cryptodev_aesni_mb_perftest • Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz • Intel® QuickAssist Adapter 8950 (PCIe Gen 3 x8)
  • 18. Single core throughput test 0 500 1000 1500 2000 2500 Packet Size AES128_CBC_SHA256_HMAC Throughput (Gbps) AES-NI Multi buffer QAT
  • 20. future work • Adding asymmetric crypto to data path. • Development of an DPDK accelerated IPsec solution based on the BSD kernel stack.