Intel® QAT加速卡之Linux上编程说明
QAT Software for Linux
1. Introduction
该程序员指南提供了有关软件体系结构和使用指南的信息。 相关的英特尔QAT软件库文档中记录了有关使用英特尔QuickAssist技术(英特尔QAT)API的信息,这些API提供了加速服务(加密和数据压缩)的接口。
1.1 术语
- 软件包用作硬件版本1.7的英特尔QAT软件包的通用术语
- 加速驱动程序用作允许英特尔QAT软件库API访问英特尔QAT端点的通用术语
Table 1. 常用术语列表
Term | Description |
---|---|
ADF | Acceleration Driver Framework |
AES | Advanced Encryption Standard |
ASIC | Application Specific Integrated Circuit |
BDF | Bus Device Function |
CBC | Cipher Block Chaining mode |
CCM | Counter with CBC-MAC mode |
CnV | Compress and Verify |
CnVnR | Compress and Verify and Recover |
CY | Cryptography |
DC | Data Compression |
DID | Device ID |
DMA | Direct Memory Access |
DTLS | Datagram Transport Layer Security |
DRAM | Dynamic Random Access Memory |
DSA | Digital Signature Algorithm |
ECC | Elliptic Curve Cryptography |
EVP | Envelope (OpenSSL high-level cryptographic functions) |
GCM | Galois/Counter Mode |
GPL | General Public License |
HMAC | Hash-based Message Authentication Mode |
IA | Intel Architecture |
IDS/IPS | Intrusion Detection System/Intrusion Prevention System |
IEEE | Institute of Electrical and Electronics Engineers |
IKE | Internet Key Exchange |
Intel QAT | Intel QuickAssist Technology |
IOCTL | Input Output Control function |
IOMMU | Input-Output Memory Management Unit |
IPSec | Internet Protocol Security |
LKCF | Linux* Kernel Cryptographic Framework |
MGF | Mask Generation Function |
MSI | Message Signaled Interrupts |
NUMA | Non-uniform Memory Access |
PCH | Platform Controller Hub. In this manual, a Platform Controller Hub device includes standard interfaces and Intel QAT Endpoint and I/O interfaces. |
RSA | Rivest-Shamir-Adleman |
SAL | Service Access Layer |
SATA | Serial Advanced Technology Attachment |
SGL | Scatter Gather List |
SHA | Secure Hash Algorithm |
SoC | System-on-a-Chip |
SPI | Serial Peripheral Interconnect |
SR-IOV | Single Root I/O Virtualization |
SSC | Storage Subsystem Class |
SSL | Secure Sockets Layer |
TCG | Trusted Computing Group |
TLS | Transport Layer Security |
TPM | Trusted Platform Module |
USDM | User Space DMA-able Memory |
VF | Virtual Function |
VPN | Virtual Private Network |
WAN | Wide Area Network |
Table 2. 文档索引编号
Document | Document #/ Location |
---|---|
Intel QuickAssist Technology Software for Linux* Release Notes (Hardware Version 1.7) | 336211 |
Intel QuickAssist Technology Software for Linux* Getting Started Guide (Hardware Version 1.7) | 336212 |
Intel QuickAssist Technology API Programmer’s Guide | 330684 |
Intel QuickAssist Technology Cryptographic API Reference Manual | 330685 |
Intel QuickAssist Technology Data Compression API Reference Manual | 330686 |
Using Intel Virtualization Technology (Intel VT) with Intel QuickAssist Technology Application Note | 330689 |
1.2 印刷说明
略。
2. Software Overview
除了第3.1节“硬件/软件概述”中提到的硬件外,各个平台还包含一些重要的软件组件,这些组件是产品的一部分。 该软件包括在英特尔架构(IA)CPU和英特尔QAT端点上运行的驱动程序和加速代码 。
2.1 通讯芯片系列兼容性
尽管本文档的重点是针对硬件版本1.7的英特尔QAT软件,但也支持英特尔通信芯片组8925至8955系列。
2.2 逻辑实例
逻辑实例可被视为通往硬件的通道。 逻辑实例允许地址域(即内核空间和单个用户空间进程)配置要由该地址域使用的环,并定义该环的行为。
逻辑实例详细说明及各结构间的组织关系
2.2.1 响应处理
在内核空间中,可以将每个逻辑实例配置为在以下其中一个中运行:两种模式:
- 中断模式
- 轮询模式
在用户空间中,可以将每个逻辑实例配置为在两个实例之一中运行模式:
轮询模式
epoll轮询模式
2.2.1.1 中断模式
只有在内核空间中才支持中断模式。 在用户空间中,不再支持中断模式; 因此,不能再将用户空间实例配置为中断模式。在中断模式下配置时,加速器驱动程序框架(ADF)注册一个中断处理程序到响应环处理中。由于服务中断的等待时间可能很昂贵,因此硬件辅助环提供了一种机制,可将中断成本摊销为(可为多个响应提供服务的)单个中断。 配置文件的中断合并部分允许用户选择使用以下方法摊销响应中断:基于时间的中断方案或基于响应数的方案。
ADF注册了一个中断处理程序来处理环形存储区中断。 触发中断时,ADF为该中断提供服务并创建一个中断处理程序的下半部分,以消耗响应环的响应。 当支持MSI-X时,将创建中断处理程序的下半部分并将其关联到已配置的内核, 对应用程序代码的回调发生在此Tasklet的上下文中。 下图显示了此序列(为清楚起见,对整个处理流程进行了精简)。
2.2.1.2 Polled Mode
由于使用中断服务和在中断下半部中执行中断处理程序成本较高,用户不想使用中断模式,则可以选择禁用中断并轮询响应。 通过将配置文件中逻辑实例的Dc / CyXIsPolled属性设置为1,可以基于每个逻辑实例配置此机制。配置为1时,ADF不为该逻辑实例提供中断服务。
ADF框架提供了一组API,允许客户轮询给定加速器上的单个存储区或所有存储区:
icp_sal_pollBank : 轮询指定加速器上指定存储区上的响应环
icp_sal_pollAllBanks :轮询指定加速器上所有存储区上的响应环
服务访问层(SAL)提供了一组API来轮询单个逻辑实例:
icp_sal_CyPollInstance : 轮询特定的加解密逻辑实例
icp_sal_DcPollInstance :轮询特定的数据压缩逻辑实例
2.2.1.3 Epolled Mode
基于事件的轮询模式称为“ epoll模式”。 英特尔QAT技术驱动程序的新模式支持Linux epoll接口。 Linux epoll是一种可扩展的I / O事件通知机制,旨在替代较早的select / poll系统调用。
要使用Linux epoll,用户空间应用程序需要使用以下API:
- ***epoll_create()/ epoll_create1()***:创建一个epoll实例并返回引用该实例的文件描述符
- ***epoll_ctl()***:在发生轮询的地方注册文件描述符。
- ***epoll_wait()***:等待通过epoll_ctl注册的文件描述符的I / O事件,如果当前没有可用事件,则阻塞调用线程。
驱动程序的epoll模式由两部分组成:内核空间部分和用户空间部分。合并字段为epoll模式公开了相同的行为。 如果通过更改合并字段延迟了中断,则向用户空间的事件传递也将延迟。
要启用epoll模式,请确保遵循以下步骤:
①. 在配置文件中,请对用户空间实例使用“ IsPolled = 2”; 例如:
Cy0Name = “SSL0”
Cy0IsPolled = 2
②. 无论应用程序以同步方式还是异步方式使用驱动程序,它都应创建一个线程来调用英特尔QuickAssist Technology驱动程序的epoll API和Linux标准epoll接口。
QAT驱动程序的epoll API接口如下:
Crypto:
icp_sal_CyGetFileDescriptor()
icp_sal_CyPutFileDescriptor()
Compression:
icp_sal_DcGetFileDescriptor()
icp_sal_DcPutFileDescriptor()
Linux 标准epoll接口如下:
epoll_create()
epoll_ctl()
epoll_wait()
当存储区采用epoll模式时,这意味着该存储区只有一个实例(加密或压缩)。 当某一个进程正在使用此实例时,意味着此进程是该存储区的唯一用户。 其他进程暂时无法使用此存储区。 但是,如果进程释放该实例,则其他进程可以使用该库。 由于该存储区只有一个实例,因此最多有16个用户空间实例可用于为epoll模式配置所有存储区。 (对于英特尔通信芯片组8925-8955系列,最多可以使用32个用户空间实例。)
如果一个进程需要同时提供压缩和加密服务,则将需要两个实例,这意味着该进程需要两个存储体。 在这种情况下,最多只能使用八个进程。 (对于英特尔通信芯片组8925-8955系列,最多可以使用16个进程。)
为了进行比较,当CPU处于空闲状态时,对于用户空间实例,标准轮询模式(“ IsPolled = 1”)将定期轮询空环,并且轮询将消耗一些CPU周期(例如当CPU处于空闲状态时,CPU使用率可能维持在2% )。 但是,如果使用epoll模式,则当CPU处于空闲状态时,CPU使用率将保持为0%。
对于用户空间实例,不再支持中断模式。 当响应环中没有数据时,用户空间的中断模式不会占用CPU周期,而与轮询模式不同,轮询模式会按指定的时间间隔继续进行检查。 有了epoll支持,可以使用标准的Linux * epoll API,例如epoll_create()/ epoll_ctl()/ epoll_wait()。
目前,大多数Web服务器和基于套接字的应用程序(例如Nginx *,Apache *等)都会使用epoll / select / poll之一来进行通知(当套接字可用于读取或写入时),然后采取适当的措施。 通过epoll模式,QAT驱动程序将与现有应用程序进行更无缝的集成,例如作为Nginx *,因为它将使用标准的通知机制。
Intel® QAT加速卡之Linux上编程说明的更多相关文章
- Intel® QAT加速卡之加密、哈希操作流程和示例
Intel QAT 加密API介绍 文章主要讲述了Intel QAT 加密API接口的说明,以及多种应用场景下的使用方法. 文章目录 Intel QAT 加密API介绍 1. 概述 1.1 会话(se ...
- Intel® QAT加速卡之逻辑实例
Intel QAT加速卡逻辑实例 1. QAT相关的名词组织关系 在本手册中描述的平台上,处理器可以连接到一个或多个英特尔通信芯片组8925至8955系列(PCH)设备. 从软件角度来看,每个PCH设 ...
- Intel® QAT 加速卡之IPSec示例
Intel QAT 加速卡之IPSec示例 文章目录 Intel QAT 加速卡之IPSec示例 1. QAT处理IPSec入站报文 2. QAT处理IPSec出站报文 3. 组织架构 4. 示例源码 ...
- Intel® QAT加速卡之同步异步模式
QAT 的两种操作模式 Intel QAT API同时支持同步和异步两种操作模式. 为了获得最佳性能,该应用程序应能够向加速引擎提交多个未完成的请求. 提交多个未完成的请求可最大程度地减少加速引擎上的 ...
- Intel® QAT加速卡之性能简介
Intel QuickAssist Adapter 8950 设备简介 支持英特尔QuickAssist技术的英特尔QuickAssist适配器提供加密加速和压缩加速服务. 1. Key featur ...
- Intel® QAT加速卡之编程demo框架
QAT demo流程框架 示例一: 代码路径:qat1.5.l.1.13.0-19\quickassist\lookaside\access_layer\src\sample_code\functio ...
- Intel® QAT加速卡之Ring & Ring Bank
1. QAT的应用模式 Intel 通讯系列芯片对于每种受支持的加速服务(加密,数据压缩),都支持以下应用模式: 内核模式,其中应用程序和加速服务都在内核中运行空间. 用户空间直接访问在用户空间中运行 ...
- Intel® QAT 加速卡之数据面流程(图)
QAT数据面流程 sessionSetupData数据结构 pOpData数据结构
- 使用.NetCore在Linux上写TCP listen 重启后无法绑定地址
拥抱.net core的过程中, 将公司的一套java项目改成了.net core 2.0版的. 里面的tcp服务被我用msdn的SocketAsyncEventArgs方式重写了, 然而在测试的过程 ...
随机推荐
- QT: 如何移动和缩放一个无边框窗口
一个QT窗口如下可以做到无边框: Window { id: window //Designer 竟然不支持..., 设计模式时要注意 flags: Qt.FramelessWindowHint wid ...
- 04.委托Delegation
1. 基本了解 1.1 委托简述 官方文档 委托是一种引用类型,表示对具有特定参数列表和返回类型的方法的引用,用于将方法作为参数传递给其他方法,可将任何可访问类或结构中与委托类型匹配的任何方法分配给委 ...
- Netty基础招式——ChannelHandler的最佳实践
本文是Netty系列第7篇 上一篇文章我们深入学习了Netty逻辑架构中的核心组件EventLoop和EventLoopGroup,掌握了Netty的线程模型,并且介绍了Netty4线程模型中的无锁串 ...
- linux笔记全(无图版)
1.ls 查看当前目录下的所有内容 黑色的是文件,蓝色的是文件夹,也就是目录 2.rm -f anaconda-ks. cfg 彻底删除文件(如不确定,则需要先保存备份,也就是快照) 3.ifconf ...
- Sci Adv | 上科大水雯箐/胡霁/钟桂生脑蛋白质组学研究揭示抑郁行为的新调控因子
大脑是生物体内结构和功能最复杂的组织.近年来蓬勃发展的脑蛋白组学研究是绘制大脑功能分子图谱.全面理解大脑生理病理机制的必经途径.跨膜蛋白家族在突触信号传递和神经可塑性调节中扮演重要角色,许多跨膜蛋白与 ...
- zookeeper的简介和相关命令操作
.personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...
- Golang语言系列-09-接口
接口 接口的定义和实现 package main import "fmt" /* [接口] 接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现 ...
- 题解—God Knows
考场上以为就是转化成一个无向图然后以为无向图有什么性质可以搞出来来着. 果然应验了那句话,一个思路想太久想不出来一般是假的. 所以这种一看就需要转化的题要多尝试能往哪转化,而不是按住一个思路不动. 只 ...
- [转]C# 互操作性入门系列(二):使用平台调用调用Win32 函数
传送门 C#互操作系列文章: C# 互操作性入门系列(一):C#中互操作性介绍 C# 互操作性入门系列(二):使用平台调用调用Win32 函数 C# 互操作性入门系列(三):平台调用中的数据封送处理 ...
- Raspberry Pi 中安装Mono
摘自:http://www.phodal.com/blog/user-csharp-develop-raspberry-pi-application/ Raspberry Pi C# Mono Lin ...