关于DPDK Cryptodev,你不得不明白的几点!

0?

安全已经成为组建服务器的必备需求之一,然而对网络报文的保护,如加密和认证运算等涉及非常复杂的数学运算,对服务器CPU或专用加速器等有非常高的要求。网络应用工程师在对网络报文的安全保障方面存在如下待解决的难题:

-    当今的以太网接口带宽已经达到100Gbits/s甚至更大,如何高效且低延迟地完成如此大量数据的加/解密及认证运算成为网络应用工程师最大的难题之一。

-    代码可复用难题。即便对同一类crypto算法,软件实现和硬件实现有很大的不同,导致应用在crypto实现的软件及硬件之间切换非常困难。

-    优化难题。crypto实现的优化能确保服务器的安全及专用加速器等硬件的高效利用,然而这一部分的难度较大,再加上各类crypto引擎优化方式的不同以及以上的代码复用问题,可谓雪上加霜。

DPDK CRYPTODEV简介

      DPDK的CRYPTODEV软件库及相应的驱动库就是为了解决以上难题而生。DPDK CRYPTODEV是DPDK的一个软件库,更是涵盖软/硬件CRYPTODEV引擎驱动的完整框架(目前暂不支持非对称加密算法)。它将提供不同算法的各类软硬件CRYPTODEV引擎的统一API,并对用户隐藏各类已高度优化的crypto实现细节。与之相对应的是DPDK的CRYPTO轮询模式驱动集,包含多种链式crypto/认证操作的实现。最后,DPDK CRYPTODEV还拥有非对称入队及出队的统一实现,来保证对硬件crypto操作效率的最优化。

        DPDK CRYPTODEV目前支持的crypto算法有:

加密算法:

-   AES-CBC/CTR, 128, 192, 和256 bit

-   SNOW3G UEA2, Kasumi F8, NULL

认证算法:

-   MD5_HMAC, SHA1, SHA224, SHA256, SHA384, 以及SHA512

-   AES-XCBC

-   SNOW3G UIA2, KASUMI F9, NULL

加密-认证算法:

-    AES-GCM 128, 192,及256bit

       DPDK CRYPTODEV使用了两种不同的形式来支持以上罗列的crypto算法: 软件PMD,使用特殊指令集优化的软件crypto实现,无需额外硬件,但某些PMD因使用了特殊指令集(如AES,AVX,SSE等指令集)对CPU架构有一定要求。每一个软件PMD仅支持一种或几种加密或认证算法;硬件PMD,要求系统加装了Intel QuickAssist (QAT) DH895xxC加速器。目前,QAT PMD支持除了NULL之外所有的加密和认证算法,且拥有更大的吞吐量。

DPDK CRPYTODEV实现细节

       和ETHDEV一样,DPDK CRYPTODEV将每一个加密引擎,不管是硬件PMD还是虚拟的软件PMD,抽象成一个设备(rte_cryptodev),记录了该设备支持的算法,最大队列的大小,最大支持缓存,以及enqueue和dequeue函数指针等信息。并对所有设备提供了通用的API,该API包含操作一个加密引擎所需的所有函数,如对设备的创建(仅针对软件PMD),初始化,开始或停止,enqueue或dequeue等。用户调用该API时,API的内部实现会调用对象PMD的具体实现来完成相应操作。此举有若干好处:

-   用户只需关注所用算法的应用而无需了解PMD实现的细节。

-   用户若想将他的代码的操作对象在软件PMD和硬件加速PMD之间转换,他无需修改或仅需极小修改(通常用于适配不同PMD支持算法的区别)就能实现。

-   甚至于,同样的代码可在物理系统与虚拟系统间随意转换。

        用户应用和PMD之间的关系如图1所示。

0?wx_fmt=jpeg

图1:DPDK CRYPTODEV系统结构图

       DPDK Cryptodev的工作流程如图2所示。这里先不详细说明图里每一处的详情了,请大家在看到最后时,再回头看一下这幅图,印象能更深刻一些。

</

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值