我正在使用 IPerf 在不同的网络设置之间运行一些性能指标。我看到两个基本设置之间存在非常大的差异。
IPerf 计算
**Scenario One (1)**
Client connecting to 172.17.0.4, TCP port 5001
TCP window size: 1.12 MByte (default)
------------------------------------------------------------
[ 3] local 172.17.0.2 port 50728 connected with 172.17.0.4 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 1.0 sec 3.26 GBytes 28.0 Gbits/sec
[ 3] 1.0- 2.0 sec 3.67 GBytes 31.5 Gbits/sec
[ 3] 2.0- 3.0 sec 3.70 GBytes 31.8 Gbits/sec
[ 3] 3.0- 4.0 sec 3.93 GBytes 33.7 Gbits/sec
[ 3] 4.0- 5.0 sec 3.34 GBytes 28.7 Gbits/sec
[ 3] 5.0- 6.0 sec 3.44 GBytes 29.6 Gbits/sec
[ 3] 6.0- 7.0 sec 3.55 GBytes 30.5 Gbits/sec
[ 3] 7.0- 8.0 sec 3.50 GBytes 30.0 Gbits/sec
[ 3] 8.0- 9.0 sec 3.41 GBytes 29.3 Gbits/sec
[ 3] 9.0-10.0 sec 3.20 GBytes 27.5 Gbits/sec
[ 3] 0.0-10.0 sec 35.0 GBytes 30.1 Gbits/sec
**Scenario Two (2)**
Client connecting to 10.23.0.2, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[ 3] local 10.12.0.2 port 41886 connected with 10.23.0.2 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 1.0 sec 15.1 MBytes 127 Mbits/sec
[ 3] 1.0- 2.0 sec 14.9 MBytes 125 Mbits/sec
[ 3] 2.0- 3.0 sec 14.9 MBytes 125 Mbits/sec
[ 3] 3.0- 4.0 sec 14.2 MBytes 120 Mbits/sec
[ 3] 4.0- 5.0 sec 16.4 MBytes 137 Mbits/sec
[ 3] 5.0- 6.0 sec 18.0 MBytes 151 Mbits/sec
[ 3] 6.0- 7.0 sec 18.6 MBytes 156 Mbits/sec
[ 3] 7.0- 8.0 sec 16.4 MBytes 137 Mbits/sec
[ 3] 8.0- 9.0 sec 13.5 MBytes 113 Mbits/sec
[ 3] 9.0-10.0 sec 15.0 MBytes 126 Mbits/sec
[ 3] 0.0-10.0 sec 157 MBytes 132 Mbits/sec
我对吞吐量的高度差异感到困惑。
是否由于加密和解密以及涉及的OpenSSL导致这种降级?
或者是因为在通过VPN隧道路由时需要在应用层下面多次解组和编组数据包头?
谢谢你 沙比尔
答案 0 :(得分:0)
两个测试都没有同样运行 - 第一个测试使用1.12 MB的TCP窗口运行,而第二个较慢的测试使用0.085 MByte的窗口运行:
Client connecting to 172.17.0.4, TCP port 5001
TCP window size: 1.12 MByte (default)
^^^^
Client connecting to 10.23.0.2, TCP port 5001
TCP window size: 85.0 KByte (default)
^^^^
因此,您可能会遇到TCP窗口耗尽,这是因为缓冲区较小以及vpn堆栈的延迟略微增加。
为了知道要使用的缓冲区大小(如果不是一个巨大的缓冲区),您需要知道bandwidth-delay product。
我不知道您的原始频道RTT是什么,但我们可以尝试一下。您可以通过链接获得~30 gbit / sec的缓冲区大小1.12 MBytes,然后向后进行数学运算(单位转换省略),我们得到:
1.12 megabytes / 30 gigabits/sec --> 0.3 ms
。
这似乎很合理。现在让我们假设您的vpn比原始链接的RTT加倍,因此我们假设延迟为0.6 ms。然后,我们将使用0.085 MByte的新窗口大小来确定通过计算带宽延迟产品前向应该期望的性能:
0.085 Mbytes / 0.6 ms --> BDP = 141 mbit/sec.
嗯,你知道什么,那就是你所看到的确切表现。
例如,如果您希望使RTT为0.6 ms的100千兆位/秒管道饱和,那么您需要7.5 MB的缓冲区大小。或者,如果您想要使用单个连接而不是N个连接来使管道饱和,那么您需要N个插槽,每个插槽的发送缓冲区大小为7.5 / N Mbytes。