This project provides an extended Tengine working with asynchronous mode OpenSSL. With Intel® QuickAssist Technology(QAT) acceleration, the asynchronous mode Tengine can provide significant performance improvement.
Installation Instructions
Setup building environment
Set the following environmental variables:
ICP_ROOT is the directory where QAT driver source code is located |
For example:
$ export ICP_ROOT=/QAT/QAT1.6 |
Build OpenSSL
$ cd / |
Build QAT driver
$ mkdir /QAT/ |
Build QAT engine
$ cd / |
More details instructions about QAT can be found on QAT engine github page.
Build Tengine
$ ./configure \ |
More details instructions about Async Mode Nginx can be found on Intel Async Mode Nginx github page.
Configuration
Tengine configuration
Async Mode Tengine provides new directives:
Directives |
For example, edit conf/nginx.conf
http { |
QAT driver configuration
The Intel® QAT OpenSSL* Engine comes with some example conf files to use with the Intel® QAT Driver. For Tengine integrated with Intel QAT CLC production, using below commands:
$ cp QAT_Engine/qat/config/dh89xxcc/multi_process_optimized/dh89xxcc_qa_dev0.conf /etc |
For more details about QAT driver configuration, please refer to QAT engine github page
QAT engine enabling and configuration
QAT engine will be installed as a shared object into OpenSSL installed path and leveraging OpenSSL engine framework to be initialized and configured. Add configuration in $OPENSSL_LIB/ssl/openssl.cnf
Note: this configuration should be added on top of the file:
openssl_conf = openssl_def |
Performance
Please refer to the White Paper: Intel® Quickassist Technology and OpenSSL-1.1.0:Performance.
Limitations
Nginx supports reload operation, when QAT hardware is involved for crypto offload, user should enure that there are enough number of qat instances. For example, the available qat instance number should be 2x equal or more than Nginx worker process number.
For example, in Nginx configuration file (nginx.conf) worker process number is configured as
worker_processes 16;
Then the instance configuration in QAT driver configuration file should be:
[SHIM] |
Please refer to details QAT develop doc.