首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Asio流-使用SSL/TLS加密的慢速度

Asio流-使用SSL/TLS加密的慢速度
EN

Stack Overflow用户
提问于 2018-07-13 17:39:02
回答 2查看 589关注 0票数 1

我使用Asio (非Boost)创建了一个简单的服务器客户端,并将其用于数据传输速度的简单测试。

服务器:

  • 创建缓冲区(4MB)
  • 当客户端连接(从async_accept回调) 时
    1. 启动定时器
    2. 向客户端发送缓冲区(async_write)
    3. 等待客户端的响应(从async_read回调)
    4. 重复步骤2-3 100次
    5. 停止定时器
    6. 计算传输速度(100 *缓冲区大小*8/时间)

客户端

  • 连接到服务器
    1. 等待来自服务器的数据(从async_read回调)
    2. 将单个字节发送回服务器(async_write)
    3. 重复

我已经在SSL/TLS加密和不使用SSL/TLS加密的情况下实现了这一点。非安全版本通过本地主机实现了15.0Gbps左右的速度,但加密版本的速度降低到了0.3Gbps左右。

这是意料之中吗?如果没有,有什么想法会导致这种情况呢?

EN

回答 2

Stack Overflow用户

发布于 2018-07-14 00:53:13

该任务已成为CPU绑定。您可以使用任务管理器轻松地验证这一点。

同时,与netcatopenssl s_server/s_client进行比较,可以看到同样的效果。例如,当data.bin是32 get的随机数据时,我得到:

代码语言:javascript
复制
$ for a in {1..100}; do cat data.bin; done | pv | openssl enc -e -kfile server.pem -pass test -out data.bin.crypt
3,12GiB 0:00:08 [ 392MiB/s]

这只是服务器端加密数据所需的时间。

票数 1
EN

Stack Overflow用户

发布于 2018-07-14 01:09:39

这是意料之中吗?

不是的。TLS不小于明文在足够长的传输中的速度的1/3。我在十多年前对此进行了广泛的测试,从那时起,计算机变得更快了。

如果没有,有什么想法会导致这种情况呢?

您可能在应用程序和TLS层之间使用了不足的缓冲。例如,如果您一次向TLS发送一个字节,这里可能会发生45次数据爆炸。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51330301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档