我使用Asio (非Boost)创建了一个简单的服务器客户端,并将其用于数据传输速度的简单测试。
服务器:
async_accept回调) 时async_write)async_read回调)
客户端
async_read回调)async_write)
我已经在SSL/TLS加密和不使用SSL/TLS加密的情况下实现了这一点。非安全版本通过本地主机实现了15.0Gbps左右的速度,但加密版本的速度降低到了0.3Gbps左右。
这是意料之中吗?如果没有,有什么想法会导致这种情况呢?
发布于 2018-07-14 00:53:13
该任务已成为CPU绑定。您可以使用任务管理器轻松地验证这一点。
同时,与netcat和openssl s_server/s_client进行比较,可以看到同样的效果。例如,当data.bin是32 get的随机数据时,我得到:
$ 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]这只是服务器端加密数据所需的时间。
发布于 2018-07-14 01:09:39
这是意料之中吗?
不是的。TLS不小于明文在足够长的传输中的速度的1/3。我在十多年前对此进行了广泛的测试,从那时起,计算机变得更快了。
如果没有,有什么想法会导致这种情况呢?
您可能在应用程序和TLS层之间使用了不足的缓冲。例如,如果您一次向TLS发送一个字节,这里可能会发生45次数据爆炸。
https://stackoverflow.com/questions/51330301
复制相似问题