框架
[https://www.cnblogs.com/hugetong/p/14682764.html]
qat engine后边支持两种加速,一种硬件加速:使用QAT硬件加速卡。一种软件加速:使用multi-buffer技术分别对对称加密和非对称加密进行加速。
见qatengine的首页:https://github.com/intel/QAT_Engine
见这张架构小图图:
硬件
qat卡能做对称加密也能做非对称加密,对称加密并不比CPU做的更好。所以它的主要长处在于非对称加密,RSA,ECHEH等。
除此,qat卡还可以做压缩解压,伪随机数,秘钥协商。
软件
软件加速,主要就是用于CPU的SIMD指令提高CPU处理时的并行能力,这个是intel的方案,称之为multi-buffer crypto。
对应着两个开源工程,可以把他们组合到qatengine里,从而完成软件加速。
对称加密:https://github.com/intel/intel-ipsec-mb
非对称加密:https://github.com/intel/ipp-crypto/tree/develop/sources/ippcp/crypto_mb
他俩的首页文档都应该读一下。
其他
内核支持SIMD的patch:https://lwn.net/Articles/720569/
intel关于multi-buffer的论文:https://www.intel.com/content/dam/www/public/us/en/documents/white-papers/communications-ia-multi-buffer-paper.pdf
SIMD的介绍:https://www.intel.sg/content/dam/www/public/apac/xa/en/pdfs/ssg/Intel_Processor_Architecture_SIMD_Instructions.pdf
IPsec
引申话题是ipsec,
第一个是dpdk里边的ipsec库,也用到了multi-buff做加速,它是一个pmd,和openssl一样,openssl是另一个加解密设备pmd。这个multi-buff也就是前边提到的
intel-ipsec-mb工程。
第二个点是,dpdk实现了一整套ipsec的架构,并且高级的网卡都能直接支持ipsec连同封包和加解密一起的卸载功能。那么在网络处理场景里QAT加速卡的应用意义是什么呢?
是非对称加密。我的理解,网卡针对ipsec的卸载,并不能提高qat的非对称加密卸载能力。但,可以组合使用。当然非网络场景,比如数据原地加密,就也没有网卡什么事~了。