我在两个ADSL连接(8Mb下行,512Kb上行)和一个10Mb EFM连接(10Mb上行和下行)的主办公室之间build立了VPN连接。
VPN是一个IPSec连接,使用ADSL的DrayTek 2930路由器和EFM的DrayTek 3200路由器。 然而,我无法从这个连接(通过iperftesting)中获得超过600Kb左右的速度(总stream量几乎总是从主办公室到远程办公室)
虽然我意识到有一个开销,我永远不会得到通过这个VPN的“全”带宽,我想认为有一些我应该看看,可能有助于改善它。
我已经尝试过使用DrayTek内置的“VPN Trunking”function,这些function应该负载平衡连接,但这似乎并没有改善太多。
我想我的问题是 – 这是我应该从这种设置期望的性能,我只能忍受它,或者我应该能够通过一些VPN的魔术挤出更多的东西呢?
问题是许多便宜的路由器与VPN服务器/客户端实际上不能以线速(甚至以全速的WAN速度)使用VPNfunction。
我曾经pipe理一个总部有一个总部设有Draytek Vigor 2950的机构,总部最初连接到一个2Mb服务,我们升级到50Mb。 它通常有10-15个远程站点使用Draytek Vigor 2800/2820连接。
当我们升级到50Mb时,我们发现网站仍然无法使用超过2Mb的VPN带宽。 我用我的家用电脑作为VPN客户端连接使用10Mb连接,仍然看到类似的结果。
然后,我用一台带有2个Xeon p4的pfSense路由器replace了总部2950,突然发现了更多的VPN带宽 – 重新进行与家用PC相同的testing突然间产生了几乎全部10 Mb的带宽供我testing。
我打算在台上testing一些2800/2820的2950,但随着我看到的改善,我看到一旦2950被pfSense取代,我看不出坚持使用2950的意义。现场28 * 0看到了一些速度增加,但速度更快(超过10Mb)连接的站点仍然无法使用 – 我怀疑是由于28 * 0的限制。
在做了一些更多的调查之后,我发现了一个命令,从命令行对我的pfSense路由器进行基准testing,结果显示encryption吞吐量在数据包大小上会有很大的差异。 我怀疑2950的声称的90Mb VPN吞吐量是使用在现实世界从未被看见的巨型的数据包,虽然是公平的Draytek不是唯一的供营商有罪这样做。 如果你可以用iperf来改变你的数据包大小,如果你能看到差异,我不会感到惊讶。
一旦您考虑了您的设备是否足够强大,能够以您希望的速度维持VPN隧道,下一步就是在预算允许的情况下考虑WAN优化设备。 Riverbed Technologies和Cisco等公司制造的设备都努力减less通过VPN发送的实际stream量,同时在两端没有明显的差异。
同样你的Drayteks你可以尝试和启用vj压缩,看看这是否有帮助。
您需要进行基准testing,并在testing过程中尽可能进行监控,以find瓶颈。
通过相同链接在站点之间运行iperftesting,而不启用任何VPN。 这会给你一个基准。
什么是你的往返时间通过ping? 您可能需要使用iperf的-W参数来增加TCP窗口大小,因为它缺省为8k固定,这限制了除本地局域网之外的其他任何端口的吞吐量。 阅读带宽延迟产品 。 在正常的操作中,现代操作系统在运行中调整TCP窗口的大小,但是iperf覆盖了这个行为,默认为一个8K的TCP窗口。
确保您不阻止 VPN内部或外部的ICMP数据包太大的消息 。 您还必须确保路由器正确生成这些ICMP消息; 它们对TCP吞吐量至关重要。 您的DSL和IPsec隧道本身将限制您可以处理的最大数据包大小远小于1500字节。 另外,请确保您没有在您的任何设备上设置不要碎片位的碎片。
禁用任何链接负载平衡testing,只使用一个链接。 取决于实现,这些可能会导致重新sorting的数据包并杀死TCP吞吐量。 如果在一个链路上获得良好吞吐量后重新启用负载平衡,则可能只想在“源 – 目标IP对”上进行负载均衡(如果是选项),请不要select“每包负载均衡”。
在testing过程中需要监控的内容:路由器,主机和路由器上的CPU,中断/秒,每秒丢包数,接口错误(如果有的话)可以看到链路利用率。
我假设你的路由器正在做软件中的所有IPsec,并没有encryption卸载。 因此,selectAES-128和SHA-1作为IPsec隧道的encryptionalgorithm; 与软件中的3DES + SHA-1相比,这些使用大约20%的CPU。
禁用路由器上的所有其他function,如IDS / IPS扫描,防病毒扫描,网页过滤等。这些可能会占用大量CPU或导致排队延迟。
注意bufferbloat ,并减less任何超大的路由器缓冲区,你可以根据你观察到的ping时间来configuration一些真实的东西。
在工作时间之后进行testing,以确保您不会与正常stream量发生冲突。
假如一切工作正常,在使用带有AES-128和SHA-1的IPsec时,你应该能够在你的非VPN基线testing的10-20%之内。