介绍
TLS协议处理加解密是一个非常耗时的过程,尤其是非对称加解密。
如果openssl支持异步化处理,势必能够提升证书卸载效率,openssl从1.1.0版本开始支持异步处理。
openssl要真正发挥TLS异步模式的优势,一个支持异步模式的OpenSSL引擎是不可或缺的。openssl qat引擎是一个全面支持openssl异步模式的的杰出的解决方案。
linux平台openssl对异步模式的实现是基于协程的,由glibc提供。
当TLS被设置成异步模式时,一个异步任务结构就会被分配给该连接。
当一个协程放弃系统资源切换出去的时候,该异步任务被暂停。
旧函数堆栈信息会被完整地保存在这个结构体里。
当协程切换回来再次执行的时候,该异步任务恢复,函数堆栈会从这个结构体里复原出来。
如果这个TLS异步处理请求完整结束,该异步任务结构就会被释放归还。
asyn mode是openssl的异步I/O(AIO)模式,在这个模式下openssl会把硬件加速卡等不占用cpu的操作剥离出来,单独交给一个叫asyn job的结构去做。
在asyn job执行时cpu可以把当前任务暂停,切换上下文(保存/恢复栈、寄存器等)返回给user(用__setjump longjump实现)。
u