SSL加速卡使用,编译驱动

一、编译驱动

1. 厂家提供2个SDK包,SDK与Drive,要自行编译。

DX_SDK_v2.2.2L_PUBLIC_20151225.tar.gz
DX_SDK_v2.2.2L_EXAR_20151225.tar.gz
要先解压PUBIBC包,make and make install后,
在同样的目录解压EXAR包,再make and make install。
原因是2个包都有Makefile,而exar要使用public编译出来的.o文件与头文件进行编译、链接。

2.依赖内核头文件与库:

yum install kernel-devel.x86_64 -y
# 先删除无用链接
rm /usr/lib/modules/3.10.0-514.el7.x86_64/build -f
# 再建一个软链接文件,注意此时前后版本号是不一样。
ln -s /usr/src/kernels/3.10.0-693.11.6.el7.x86_64 /usr/lib/modules/3.10.0-514.el7.x86_64/build
tar -xf DX_SDK_v2.2.2L_EXAR_20151225.tar.gz
make && make install
tar -xf DX_SDK_v2.2.2L_PUBLIC_20151225.tar.gz
make && make install
# install 后配置文件只是的个ln软链,最好是copy到etc目录下:
rm -f /etc/exar/driver.cfg.xml
sudo cp -f driver.cfg.xml /etc/exar/driver.cfg.xml

由于上面提到kernel-devel包与实际运行中的内核版本不一样,需要update kernel并重启:

yum update kernel -y
# reboot 注释,防你copy直接粘帖运行了。

重启后,在SDK的编译目录下,直接 sudo sh Load # Load文件是在编译包中的厂家加裁脚本

lsmod | grep dre_drv
# 或 modinfo dre_drv.ko查看是否加载成功

3. 编译openssl驱动–厂家提供

mkdir dx_openssl_engine ; cd dx_openssl-engine
tar -xf openssl_engine-2.0.0-20140516.tar.gz  # 厂家提供的包#修改Makefile中几个目录变量:OPENSSL_INCLUDE_PATH := /usr/include/openssl/OPENSSL_LIB_PATH := /usr/lib64/openssl/engines/OPENSSL_DYN_ENGINE_PATH := /usr/lib64/openssl/engines/#由于我的系统使用的正好是openssl-1.0.2k版本,所以可以修改为系统目录。
#如果是下载源码编译,使用记得使用shared选项编译:./config shared --prefix=/usr/local/openssl-1.0.0k
# 再修改Makefile中变量路径。结果会编译出 eng_dx.so 这样一个动态库,会安装到/usr/lib64/openssl/engines/目录。

二. 几个关键的nginx配置

 # 指定使用芯片厂家的引擎 eng_dx
ssl_engine eng_dx;ssl_prefer_server_ciphers on;
#设置协商加密算法时,优先使用我们服务端的加密套件,而不是客户端浏览器的加密套件。
#此值默认是off话,客户端会使用SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES256-GCM-SHA384,2048,256# 列出服务端支持的握手加密套件优先级:
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384;
#
# 一定要注意这个ssl_ciphers值的配置,配置不当,会引起浏览器报错[ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY]
# 由于加速卡说明书中,是对AES128的性能最高的,这里我稍把AES128相关的算法顺序调整在前面。

关于ssl_ciphers的配置,参考mozilla 或 cloudflare

配置以上3个值 ,就能利用加速卡,我们使用的型号DX2040, 效率是能降低CPU 10倍的使用率。

上图是一台32核服务器,当HTTPS QPS=6k时, CPU使用率对比,红框CPU接近60%,蓝框使用了加速卡后,CPU降到6~7%之间。nginx只是简单的proxy_pass到后端的http服务。

读到这里,读者有一个疑问,如果不使用加速卡,光配置:

    ssl_protocols       TLSv1.2 TLSv1.1 TLSv1 SSLv3;ssl_prefer_server_ciphers on;ssl_ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS:!DH:!EDH;

会否同样能降低CPU?
实际就是 把 ssl_engine eng_dx; 注释就可以测出结果 。
按我注释过的测试结果 ,是不能降CPU。

三、机器重启后,重新加载驱动的坑

官方的驱动DX_SDK_v2.2.2L_EXAR_20151225.tar.gz,解压,编译(make),安装 (make instll),3个常规步骤,外加一个 解压 出来 Load脚本,即加载驱动 。
但,在系统重启后要先Load 再make install; 原因可能是Makefile中定义对install行为会inmod 模块到内核。
需要如下执行:
sh Load # 这个Load
make install

SSL加速卡的使用,对HTTPS 七层负载机的性能提升相关推荐

  1. 使用nginx作为HTTPS正向代理服务器(七层透传代理、中间人代理)

    [前言] 在讲解nginx正向代理https之前,我们先来解答几个小疑问. 1.nginx是什么? Java同学肯定知道apache服务器,一个很牛,但是也很庞大的web服务器.能当web服务器的不仅 ...

  2. f5 会话保持 负载均衡_四层负载均衡和七层负载均衡区别在哪里?

    年后至今这段时间工作重心都在调整公司现有API Gateway的系统架构以及对现有技术栈选型.经过对主流互联网网关所实现各种方案的调研,我们在API Gateway前置一层接入层,接入层主要用于实现限 ...

  3. 京东数科七层负载 | HTTPS硬件加速 (Freescale加速卡篇)

    京东数科JDDLB作为京东数科最重要的公网流量入口,承接了很多重要业务的公网流量.目前,已完全接替商业设备F5承载所有的流量,并在数次618.双十一大促中体现出优越的功能.性能优势. 一.京东数科JD ...

  4. OSI七层 TCP/IP四层 TCP/IP协议栈: 不同的通信协议的大集合

    应用层: 网络服务与最终用户的一个接口. 协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP 表示层: 数据的表示.安全.压缩.(在五层模型里 ...

  5. FastDFS蛋疼的集群和负载均衡(十五)之lvs四层+Nginx七层负载均衡

    ###Interesting things lvs+nginx的拓扑图 准备环境,基于上一篇[Diary Report 2018-1-3]关于FastDFS蛋疼的集群和负载均衡(十三)之LVS-DR环 ...

  6. 四层和七层负载均衡的区别介绍--转

    简单理解四层和七层负载均衡:①所谓四层就是基于IP+端口的负载均衡:七层就是基于URL等应用层信息的负载均衡:同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡. 换句换说,二层负载均 ...

  7. 网络中的七层协议与TCP/IP五层模型

    socket(套接字)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程 ...

  8. 网络协议入门(OSI七层和TCP/IC四层协议)

    Android网络知识 Android作为一个移动端操作系统,是一定会涉及到网络知识的,会用不是我们的目标,深入了解其中的原理才是能让我们提升的根本. 1.关于网络传输 首先,在互联网中任何的数据传输 ...

  9. Web负载均衡学习笔记之四层和七层负载均衡的区别

    0x00 简介 简单理解四层和七层负载均衡: ① 所谓四层就是基于IP+端口的负载均衡:七层就是基于URL等应用层信息的负载均衡:同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡. ...

最新文章

  1. php函数serialize()与unserialize()
  2. 老板的亲戚给我当助手?
  3. dedecms前端无法调用自定义变量怎么解决
  4. Tensorflow Probability 与 TensorFlow 的版本依赖关系
  5. boost::leaf::function_traits用法的测试程序
  6. new与malloc的区别以及实现方法
  7. Solr入门——安装
  8. 关于某些系统统计查询等业务进行大数据量的测试
  9. bzoj 3745 [Coci2015]Norma——序列分治
  10. python能做什么毕业设计-毕业设计涉及到python?看我用Python优雅的写论文!
  11. Windbg Configuration
  12. Anaconda如何安装PyTorch?
  13. Qt QML应用框架
  14. 程序员撩妹,你得看我教你的小技巧
  15. 记一次酷狗音乐API的获取,感兴趣的可以自己封装开发自己的音乐播放器
  16. Java项目:SSM实现的一个在线文具学习用品购买商城网站
  17. Android Studio打包apk详细教程
  18. Time Freeze 时间冻结 影子系统
  19. Coarse-Grain Fine-Grain Coattention Network for Multi-Evidence Question Answering
  20. 中国建筑设计公司排名

热门文章

  1. docker 启动报Cannot set property TasksAccounting, or unknown property.
  2. 教你自己做Win7安装U盘
  3. 单片机加DS1302加8位数码管proteus仿真电子时钟电路
  4. 算法algo_tips、坑点、力扣刷题、Question问题
  5. WV.40-求自然对数e的近似值
  6. Matlab2017A破解版安装详细图文教程(附破解补丁) 64位
  7. deepin下安装mysql_deepin linux 下安装mysql服务
  8. word学习笔记-格式、样式(zz)
  9. Android TV之谷歌android leanback框架详解
  10. 数据库基础面试题-哪些是开源数据库