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. 别光发Paper,搞点实际问题
  2. AlphaGo Zero,一次成功的炒作而已?
  3. Redis学习(2)-redis安装
  4. 统一修改文件下所有图片大小 Python3
  5. 【杂谈】如何在言有三本人的随时答疑下, 长期而系统地学习深度学习和计算机视觉,这是有三AI的完整计划...
  6. 《nodejs+gulp+webpack基础实战篇》课程笔记(四)-- 实战演练
  7. Iterator和ListIterator接口的使用和区别
  8. 2007年10月小记
  9. 1044. 火星数字(20)
  10. [转] 三种Python下载url并保存文件的代码
  11. 倒了血霉!先是贾跃亭后有罗永浩,被拖欠4400多万,最惨公司无疑了
  12. SAP License:搽皮鞋的提示
  13. sql 查询手动创建的表_学习SQL:使用SQL查询手动创建报告
  14. OpenCV身份证离线识别技术实战(一)
  15. Java设计模式—观察者模式
  16. 这家伙有点懒,还没有个性签名 :) --工具篇03
  17. 如何利用计算机打印较大的字,Word打印技巧:打印大字-word技巧-电脑技巧收藏家...
  18. 解决本地网络适配器的驱动程序可能出现问题(未连接,连接可用或连接不可用)
  19. modbus寄存器、功能码、报文结构解析
  20. unity 创建自己的像素地图 TileMap

热门文章

  1. Efficient serialization in C tpl
  2. Allegro DFM Ravel Rule检查PAD 90度出线
  3. MacType使用配置
  4. 通过毒霸锁定/解锁IE浏览器主页
  5. 车企为啥要做三缸车?主要是油耗
  6. js中的秒杀【倒计时】
  7. c语言容斥原理,超级干货-容斥原理大集合!!!
  8. Python 中product函数的用法以及该函数中repeat参数的意义
  9. 创业公司的每月收入与支出做帐
  10. Git 远程操作详解(再不会 Git 就真的没团队收你了,嗯哼)