A quick start document is added to help users of OpenEuler quickly start using UADK and UADK engine.
Signed-off-by: Zhiqi Song songzhiqi1@huawei.com --- UADK_quick_start.md | 567 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 567 insertions(+) create mode 100644 UADK_quick_start.md
diff --git a/UADK_quick_start.md b/UADK_quick_start.md new file mode 100644 index 00000000..64d070b6 --- /dev/null +++ b/UADK_quick_start.md @@ -0,0 +1,567 @@ +# UADK ������������ +- [UADK ������������](#uadk-������������) + - [1 ������](#1-������) + - [1.1 UADK](#11-uadk) + - [1.2 UADK engine](#12-uadk-engine) + - [1.3 ������������](#13-������������) + - [2 ������������](#2-������������) + - [2.1 ������](#21-������) + - [2.2 ������](#22-������) + - [2.2.1 ������������������](#221-������������������) + - [2.2.2 ���������������������](#222-���������������������) + - [2.3 ���������](#23-���������) + - [3 ������������](#3-������������) + - [3.1 UADK ������������](#31-uadk-������������) + - [3.1.1 yum���������](#311-yum���������) + - [3.1.2 RPM���������](#312-rpm���������) + - [3.1.3 ������������������](#313-������������������) + - [3.2 ������UACCE������](#32-������uacce������) + - [3.3 ���������������������������](#33-���������������������������) + - [3.4 ���������������������������](#34-���������������������������) + - [3.5 UADK engine ������������](#35-uadk-engine-������������) + - [3.5.1 yum���������](#351-yum���������) + - [3.5.2 RPM���������](#352-rpm���������) + - [3.5.3 ������������������](#353-������������������) + - [4 ������������](#4-������������) + - [4.1 ������UADK](#41-������uadk) + - [4.1.1 ������������������](#411-������������������) + - [4.1.2 ������������](#412-������������) + - [4.2 ������UADK engine](#42-������uadk-engine) + - [4.2.1 ������������������](#421-������������������) + - [4.2.2 ������������](#422-������������) +---- + +## 1 ������ +������������UADK ��� UADK engine��� +������������������������������������������������������UADK ���UADK engine��� +### 1.1 UADK +UADK���User Space Accelerator Development Kit������������������������������������������SVA���Shared Virtual Address���������������������������������������������������������������������������������������������������������������������������������������UADK���������UACCE���Unified/User-space-access-intended Accelerator Framework������������������������������SVA���������������������������������������UADK��������� + +UADK������������UACCE���������������������������������������������������������������������SVA���������������������IOMMU���SVA���������������������������������������������������������������������������������UACCE������������������������������������,������������������������������������������������������������������������������������������������������UADK��������������������������������������������������������������������������������������������������������������������������������������������� +- AES���SM4���DES���SM3���SHAx���MD5���AEAD���HMAC��������� +- RSA���DH��������� +- gzip���zlib��������� + +���������������������Kunpeng���������������������������������UACCE������������UADK���������������������������������CPU������������������������������������������������������������������������������������CPU��������������������������������������� +### 1.2 UADK engine +UADK engine���UADK������������������������������OpenSSL���engine���������������UADK engine������������OpenSSL���������������������OpenSSL������������������������������������������������������������������������������������������ + +UADK engine���RSA engine���DH engine���ECC engine���Cipher engine���Digest engine���5������������������������������������������������������������������������UADK������������������������������������UADK engine������OpenSSL������������������OpenSSL������������������������������������������������������������engine id���������uadk_engine���UADK engine��������������������������������������� +- RSA engine��������������������������������������������������������������������� +- DH engine��������������������������������� +- Cipher engine������������������������������������ +- Digest engine��������������������������������������� + +���������������Kunpeng���������������������������������UADK���������������������������OpenSSL������������������OpenSSL������������������UADK engine���������������Kunpeng������������������������������������������ + +### 1.3 ������������ +������������������������������������������ Web������������������������������ + +----------- + +## 2 ������������ +���������������������Kunpeng���������������������������������������UADK������UADK engine��������������������������������������������������������������������������� +### 2.1 ������ +������������UADK������������������Kunpeng���9xx������CPU ��� +### 2.2 ������ +#### 2.2.1 ������������������ +OpenEuler 22.03������������������ +������������������������������IOMMU & SVA��������� +#### 2.2.2 ��������������������� +OpenSSL 1.1.1a������������������ +### 2.3 ��������� +������UADK ���UADK engine ��������������������� + +gcc version 10.2.0 (GCC) + +-------- + +## 3 ������������ +���������������������Kunpeng���������������������������������������UADK������UADK engine��������������������������������������������������������������������������� +���������������Kunpeng������������������������������UADK������������������������������������������������������������ +### 3.1 UADK ������������ +UADK���������������������������������������������yum������������RPM��������������������������������������������������������������������������������������� +#### 3.1.1 yum��������� +������OpenEuler 22.03������������������������������������������yum��������������������������� +``` +yum install libwd +``` +#### 3.1.2 RPM��������� +���OpenEuler������������UADK rpm������https://gitee.com/src-openeuler/libwd + +��������������������� +``` +cd /usr/src/ + +git clone https://gitee.com/src-openeuler/libwd.git + +mkdir -p /root/rpmbuild + +cd /root/rpmbuild + +mkdir BUILD BUILDROOT RPMS SOURCES SPECS SRPMS + +cp /usr/src/libwd/libwd*.tar.gz /usr/src/libwd/*patch /root/rpmbuild/SOURCES/ + +cp /usr/src/libwd/warpdrive.spec /root/rpmbuild/SPECS/ + +rpmbuild --bb SPECS/warpdrive.spec + +rpm -ivh /root/rpmbuild/RPMS/aarch64/libwd*.rpm +``` +#### 3.1.3 ������������������ +���Linaro������������������UADK���������https://github.com/Linaro/uadk + +��������������������������������������������������������������� +https://github.com/Linaro/uadk/blame/master/INSTALL + +### 3.2 ������UACCE������ +������������������������������������������������������������uacce.ko��� + +���������������```modprobe uacce``` ���```insmod /lib/modules/$(uname -r)/uacce.ko``` + +### 3.3 ��������������������������� +������������Kunpeng������������������������������������������ + +| ��������������� | ������������������ | +|---|---| +HPRE|uacce.ko, hisi_qm.ko, hisi_hpre.ko| +ZIP|uacce.ko, hisi_qm.ko, hisi_zip.ko| +SEC|uacce.ko, hisi_qm.ko, hisi_sec2.ko| + +��������������� +hisi_hpre.ko/hisi_zip.ko/hisi_sec2.ko���������������uacce_mode���uacce_mode=1���SVA���������uacce_mode=2���no-SVA��������� +���������Kunpeng���������������������������������uacce������������������������������������������������������uacce.ko������������Kunpeng���������������������ZIP���HPRE���SEC������������QM���������������������������uacce.ko������������������hisi_qm.ko���������������ZIP���HPRE���SEC������������������ + +������������insmod���modprobe��������������������� + +modprobe��������������������� +- ������HPRE������SVA��������������������������������� + ``` + modprobe hisi_hpre uacce_mode=1 + ``` +- ������SEC������SVA��������������������������������� + ``` + modprobe hisi_sec2 uacce_mode=1 + ``` +- ������ZIP������SVA��������������������������������� + ``` + modprobe hisi_zip uacce_mode=1 + ``` + +insmod��������������������� +- ������HPRE������SVA��������������������������������� + ``` + insmod /lib/modules/$(uname -r)/uacce.ko + insmod /lib/modules/$(uname -r)/hisi_qm.ko + insmod /lib/modules/$(uname -r)/hisi_zip.ko uacce_mode=1 + ``` + +- ������SEC������SVA��������������������������������� + ``` + insmod /lib/modules/$(uname -r)/uacce.ko + insmod /lib/modules/$(uname -r)/hisi_qm.ko + insmod /lib/modules/$(uname -r)/hisi_sec2.ko uacce_mode=1 + ``` + +- ������ZIP������SVA��������������������������������� + ``` + insmod /lib/modules/$(uname -r)/uacce.ko + insmod /lib/modules/$(uname -r)/hisi_qm.ko + insmod /lib/modules/$(uname -r)/hisi_hpre.ko uacce_mode=1 + ``` +��������������������������� + +������������������������������������������������������������������������������������������������������������������������������������������```cat /sys/bus/pci/drivers/<driver>/module/parameters/``` ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ + +- ��������������������������������� + ``` + insmod <driver> [uacce_mode] [pf_q_num] [vfs_num] [sgl_sge_nr] [ctx_q_num] + ``` + + ``` + modprobe <driver_name> [uacce_mode] [pf_q_num] [vfs_num] [sgl_sge_nr] [ctx_q_num] + ``` + - []��������������������������������������������������������������� + - ������������uacce_mode������������0���������������������������������������������������������������������������������uacce_mode=1��� + - SEC������pf_q_num���������������256���HPRE/ZIP������pf_q_num���������������64��� + - ������������vfs_num���������������0��� + - ������������sgl_sge_nr���������������10��� + - ������������ctx_q_num���������������2��� + + ���������������ZIP������������������������������������������������������������������ + ``` + insmod /lib/modules/$(uname -r)/hisi_zip.ko uacce_mode=1 pf_q_num =16 vfs_num=1 sgl_sge_nr=16 + ``` + - ���������������������SVA������������������uacce_mode=1��������� + +### 3.4 ��������������������������� +������������Kunpeng������������������������������������������������������ +``` +modprobe -r hisi_hpre +``` +������ +``` +rmmod hisi_hpre +``` + +### 3.5 UADK engine ������������ +UADK engine������������������������������yum������������RPM��������������������������������������������������������������������������������������� +#### 3.5.1 yum��������� +������OpenEuler 22.03������������������������yum��������������������������� +``` +yum install uadk_engine +``` +#### 3.5.2 RPM��������� +���OpenEuler������������uadk_engine rpm������https://gitee.com/src-openeuler/uadk_engine + +��������������������� +``` +cd /usr/src/ + +git clone https://gitee.com/src-openeuler/uadk_engine.git + +mkdir -p /root/rpmbuild + +cd /root/rpmbuild + +mkdir BUILD BUILDROOT RPMS SOURCES SPECS SRPMS + +cp /usr/src/uadk_engine/uadk_engine*.tar.gz /usr/src/uadk_engine/*patch /root/rpmbuild/SOURCES/ + +cp /usr/src/uadk_engine/uadk_engine.spec /root/rpmbuild/SPECS/ + +rpmbuild --bb SPECS/uadk_engine.spec + +rpm -ivh /root/rpmbuild/RPMS/aarch64/uadk_engine*.rpm --prefix=/usr/local/openssl/lib/engines-1.1 + +``` +#### 3.5.3 ������������������ +���������Linaro���������������UADK engine���������https://github.com/Linaro/uadk_engine + +��������������������������������������������������� +https://github.com/Linaro/uadk_engine/blob/master/README + +----------- + +## 4 ������������ +### 4.1 ������UADK +UADK���������������������������������������������UADK������������������������uadk_tool������������������������```uadk_tool benchmark --help```������������������������������������������������������ +#### 4.1.1 ������������������ +������export������������������������: +``` +export WD_RSA_CTX_NUM="sync:2@0,async:4@0" +export WD_DH_CTX_NUM="sync:2@0,async:4@0" +export WD_CIPHER_CTX_NUM="sync:2@2,async:4@2" +export WD_DIGEST_CTX_NUM="sync:2@2,async:4@2" +``` +������������������������������```ctx_mode:ctx_num@node```������������������������node���numa���������������ctx_num���ctx_mode������������������ +���������```"sync:2@0,async:4@0"```������������numa 0���������������2���sync������������������4���async������������������ + +#### 4.1.2 ������������ +- MD5������������ + + ������md5���SVA������������������������������ + ``` + uadk_tool benchmark --alg md5 --mode sva --opt 0 --sync --seconds 5 --thread 2 --multi 1 --ctxnum 6 + ``` + +- SM3������������ + + ������sm3���SVA������������������������������ + ``` + uadk_tool benchmark --alg sm3 --mode sva --opt 0 --sync --seconds 5 --thread 2 --multi 1 --ctxnum 6 + ``` +- SHA������������ + + ������sha-512���SVA������������������������������ + ``` + uadk_tool benchmark --alg sha-512 --mode sva --opt 0 --sync --seconds 5 --thread 2 --multi 1 --ctxnum 6 + ``` +- AES������ + + ������aes-128-cbc���SVA������������������������������ + ``` + uadk_tool benchmark --alg aes-128-cbc --mode sva --opt 0 --sync --pktlen 1024 --seconds 5 --multi 1 --thread 2 --ctxnum 6 + ``` + ������aes-128-cbc���SVA������������������������������ + ``` + uadk_tool benchmark --alg aes-128-cbc --mode sva --opt 1 --sync --pktlen 1024 --seconds 5 --multi 1 --thread 2 --ctxnum 6 + ``` + +- SM4������������ + + ������sm4-128-ecb���SVA������������������������������ + ``` + uadk_tool benchmark --alg sm4-128-ecb --mode sva --opt 0 --sync --pktlen 1024 --seconds 5 --multi 1 --thread 2 --ctxnum 6 + ``` + + ������sm4-128-ecb���SVA������������������������������ + ``` + uadk_tool benchmark --alg sm4-128-ecb --mode sva --opt 1 --sync --pktlen 1024 --seconds 5 --multi 1 --thread 2 --ctxnum 6 + ``` + +- DES������������ + + ������3des-128-ecb���SVA������������������������������ + ``` + uadk_tool benchmark --alg 3des-128-ecb --mode sva --opt 0 --sync --pktlen 1024 --seconds 5 --multi 1 --thread 2 --ctxnum 6 + ``` + + ������3des-128-ecb���SVA������������������������������ + ``` + uadk_tool benchmark --alg 3des-128-ecb --mode sva --opt 1 --sync --pktlen 1024 --seconds 5 --multi 1 --thread 2 --ctxnum 6 + ``` +���������������������������������```uadk_tool benchmark --help```������������������������������ + +### 4.2 ������UADK engine +������������openssl���������������������������uadk engine���������������������openssl������������������������������������������ +#### 4.2.1 ������������������ +UADK engine������������������������������������������������������������������������������������������������������������������ +1. ������openssl.cnf������������������/usr/local/ssl/������������������������������������������������������������ + ``` + openssl_cnf = openssl_def + [openssl_def] + engines = engine_section + [engine_section] + uadk_engine = uadk_section + [uadk_section] + UADK_CMD_ENABLE_RSA_ENV = 1 + UADK_CMD_ENABLE_DH_ENV = 1 + UADK_CMD_ENABLE_CIPHER_ENV = 1 + UADK_CMD_ENABLE_DIGEST_ENV = 1 + ``` + +2. ������export������������������������ + ``` + export WD_RSA_CTX_NUM="sync:2@0,async:4@0" + export WD_DH_CTX_NUM="sync:2@0,async:4@0" + export WD_CIPHER_CTX_NUM="sync:2@2,async:4@2" + export WD_DIGEST_CTX_NUM="sync:2@2,async:4@2" + ``` + ������������������������������```ctx_mode:ctx_num@node```������������������������node���numa���������������ctx_num���ctx_mode������������������ +���������```"sync:2@0,async:4@0"```������������numa 0���������������2���sync������������������4���async������������������ + +#### 4.2.2 ������������ +- RSA������������ + + ��������������� + ``` + openssl genrsa -out prikey.pem -engine uadk_engine 1024 + ``` + ��������������� + ``` + openssl rsa -in prikey.pem -pubout -out pubkey.pem -engine uadk_engine + ``` + ������������������������������plain.txt: + ``` + echo "Content to be encrypted" > plain.txt + ``` + ��������� + ``` + openssl rsautl -encrypt -in plain.txt -inkey pubkey.pem -pubin -out enc.txt -engine uadk_engine + ``` + ��������� + ``` + openssl rsautl -decrypt -in enc.txt -inkey prikey.pem -out dec.txt -engine uadk_engine + ``` + ������������������������������msg.txt: + ``` + echo "Content to be signed" > msg.txt + ``` + ��������� + ``` + openssl rsautl -sign -in msg.txt -inkey prikey.pem -out signed.txt -engine uadk_engine + ``` + ��������� + ``` + openssl rsautl -verify -in signed.txt -inkey pubkey.pem -pubin -out verified.txt -engine uadk_engine + ``` + ������openssl speed��������������� + ``` + openssl speed -elapsed -engine uadk_engine rsa1024 + openssl speed -elapsed -engine uadk_engine -async_jobs 10 rsa1024 + openssl speed -elapsed -engine uadk_engine -async_jobs 36 rsa1024 + ``` +- DH������������ + + ��������������������������� + ``` + openssl dhparam -out dhparam.pem 768 + ``` + ������Alice������: + ``` + openssl genpkey -paramfile dhparam.pem -out alice_prikey.pem -engine uadk_engine + ``` + ������Alice��������� + ``` + openssl pkey -in alice_prikey.pem -pubout -out alice_pubkey.pem + ``` + ������Bob��������� + ``` + openssl genpkey -paramfile dhparam.pem -out bob_prikey.pem -engine uadk_engine + ``` + ������Bob��������� + ``` + openssl pkey -in bob_prikey.pem -pubout -out bob_pubkey.pem + ``` + ������������������������������������������������ + ``` + openssl pkeyutl -derive -inkey alice_prikey.pem -peerkey bob_pubkey.pem -out secret1.bin -engine uadk_engine + openssl pkeyutl -derive -inkey bob_prikey.pem -peerkey alice_pubkey.pem -out secret2.bin -engine uadk_engine + ``` + ��������������������������������� + ``` + cmp secret1.bin secret2.bin + xxd secret1.bin + xxd secret2.bin + ``` +- MD5��������������� + + ������������������������������������data.txt��� + ``` + echo "Content to be hashed" > data.txt + ``` + ��������������� + ``` + openssl md5 -engine uadk_engine data.txt + ``` + openssl speed��������������� + ``` + openssl speed -engine uadk_engine -async_jobs 1 -evp md5 + ``` +- SM3������������ + + ������������������������������������data.txt��� + ``` + echo "Content to be hashed" > data.txt + ``` + ��������������� + ``` + openssl sm3 -engine uadk_engine data.txt + ``` +- SHA������������ + + ������������������������������������data.txt��� + ``` + echo "Content to be hashed" > data.txt + ``` + ��������������� + ``` + openssl sha1 -engine uadk_engine data.txt + openssl sha256 -engine uadk_engine data.txt + openssl sha512 -engine uadk_engine data.txt + ``` +- AES������������ + + ������������������������������data.txt��� + ``` + echo "Content to be encrypted" > data + ``` + aes-128-cbc��������������� + ``` + openssl enc -aes-128-cbc -a -in data -out data.en -pass pass:123456 -K abc -iv abc -engine uadk_engine -p + ``` + aes-128-cbc��������������� + ``` + openssl enc -aes-128-cbc -a -d -in data.en -out data.de -pass pass:123456 -K abc -iv abc -engine uadk_engine -p + ``` + aes-192-cbc��������������� + ``` + openssl enc -aes-192-cbc -a -in data -out data.en -pass pass:123456 -K abc -iv abc -engine uadk_engine -p + ``` + aes-192-cbc��������������� + ``` + openssl enc -aes-192-cbc -a -d -in data.en -out data.de -pass pass:123456 -K abc -iv abc -engine uadk_engine -p + ``` + aes-256-cbc��������������� + ``` + openssl enc -aes-256-cbc -a -in data -out data.en -pass pass:123456 -K abc -iv abc -engine uadk_engine -p + ``` + aes-256-cbc��������������� + ``` + openssl enc -aes-256-cbc -a -d -in data.en -out data.de -pass pass:123456 -K abc -iv abc -engine uadk_engine -p + ``` + aes-128-ecb��������������� + ``` + openssl enc -aes-128-ecb -a -in data -out data.en -pass pass:123456 -K abc -engine uadk_engine -p + ``` + aes-128-ecb��������������� + ``` + openssl enc -aes-128-ecb -a -d -in data.en -out data.de -pass pass:123456 -K abc -engine uadk_engine -p + ``` + aes-192-ecb��������������� + ``` + openssl enc -aes-192-ecb -a -in data -out data.en -pass pass:123456 -K abc -engine uadk_engine -p + ``` + aes-192-ecb��������������� + ``` + openssl enc -aes-192-ecb -a -d -in data.en -out data.de -pass pass:123456 -K abc -engine uadk_engine -p + ``` + aes-256-ecb��������������� + ``` + openssl enc -aes-256-ecb -a -in data -out data.en -pass pass:123456 -K abc -engine uadk_engine -p + ``` + aes-256-ecb��������������� + ``` + openssl enc -aes-256-ecb -a -d -in data.en -out data.de -pass pass:123456 -K abc -engine uadk_engine -p + ``` + aes-128-ctr��������������� + ``` + openssl enc -aes-128-ctr -a -in data -out data.en -pass pass:123456 -K abc -engine uadk_engine -p + ``` + aes-128-ctr��������������� + ``` + openssl enc -aes-128-ctr -a -d -in data.en -out data.de -pass pass:123456 -K abc -engine uadk_engine -p + ``` + aes-192-ctr��������������� + ``` + openssl enc -aes-192-ctr -a -in data -out data.en -pass pass:123456 -K abc -engine uadk_engine -p + ``` + aes-192-ctr��������������� + ``` + openssl enc -aes-192-ctr -a -d -in data.en -out data.de -pass pass:123456 -K abc -engine uadk_engine -p + ``` + aes-256-ctr��������������� + ``` + openssl enc -aes-256-ctr -a -in data -out data.en -pass pass:123456 -K abc -engine uadk_engine -p + ``` + aes-256-ctr��������������� + ``` + openssl enc -aes-256-ctr -a -d -in data.en -out data.de -pass pass:123456 -K abc -engine uadk_engine -p + ``` +- SM4������������ + + sm4-cbc��������������� + ``` + openssl enc -sm4-cbc -a -in data -out data.en -pass pass:123456 -K abc -iv abc -engine uadk_engine -p + ``` + sm4-cbc��������������� + ``` + openssl enc -sm4-cbc -a -d -in data.en -out data.de -pass pass:123456 -K abc -iv abc -engine uadk_engine -p + ``` + sm4-ecb��������������� + ``` + openssl enc -sm4-ecb -a -in data -out data.en -pass pass:123456 -K abc -iv abc -engine uadk_engine -p + ``` + sm4-ecb��������������� + ``` + openssl enc -sm4-ecb -a -d -in data.en -out data.de -pass pass:123456 -K abc -iv abc -engine uadk_engine -p + ``` +- DES������������ + + des-ede3-cbc��������������� + ``` + openssl enc -des-ede3-cbc -a -in data -out data.en -pass pass:123456 -K abc -iv abc -engine uadk_engine -p + ``` + des-ede3-cbc��������������� + ``` + openssl enc -des-ede3-cbc -a -d -in data.en -out data.de -pass pass:123456 -K abc -iv abc -engine uadk_engine -p + ``` + des-ede3-ecb��������������� + ``` + openssl enc -des-ede3-ecb -a -in data -out data.en -pass pass:123456 -K abc -iv abc -engine uadk_engine -p + ``` + des-ede3-ecb��������������� + ``` + openssl enc -des-ede3-ecb -a -d -in data.en -out data.de -pass pass:123456 -K abc -iv abc -engine uadk_engine -p