OpenVPN - 添加发送和接收缓冲区以实现更高的数据/带宽吞吐量

OpenVPN - 添加发送和接收缓冲区以实现更高的数据/带宽吞吐量

大家好

在 1Gbps 光纤线路上设置 OpenVPN 服务器时,我遇到了带宽吞吐量问题,没有其他流量。

需要明确的是,我所在的地方有一条 500Mbps 光纤线路,而服务器有一条 1Gbps 光纤线路。

经过一番搜索,我发现

我添加了这些选项

sndbuf 393216

接收缓冲区 393216

推“sndbuf 393216”

推“rcvbuf 393216”

但它并没有显著改善我的连接。

前:

下行 10Mbps 上行 6-8Mbps

后 :

下行12-14Mbps 上行7-10Mbps

这个值应该增加还是减少,这会对发送/接收的数据产生什么影响?

服务器配置如下:

port 1025
proto udp
dev tun

ca ca.crt
cert server.crt
key server.key  # This file should be kept secret
dh dh2048.pem

server 10.0.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
client-config-dir ccd
route 10.0.0.2 255.255.255.252
push "redirect-gateway def1"

push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

client-to-client

keepalive 10 120
comp-lzo no

user nobody
group nogroup

persist-key
persist-tun

status openvpn-status.log
log-append  openvpn.log
verb 4

#possible bandwidth increase
sndbuf 393216
rcvbuf 393216
push "sndbuf 393216"
push "rcvbuf 393216"
push "remote-gateway x.x.x.x"
push "dhcp-option DNS 8.8.8.8"
ccd-exclusive

#for checking active clients
management localhost 7505

它是建议我尝试了 fragments、mss-fix、mtu 等,但都无济于事,我当前的设置具有最佳性能。任何其他更改都会导致性能降低或延迟/ping 峰值。

答案1

有 OS 网络堆栈缓冲区,也有 OpenVPN 网络缓冲区。OpenVPN 一直打算重新发明轮子,因此缓冲区的情况并不令人惊讶。首先,您应该确保 OS 中有足够的缓冲区,我建议将sndbuf/设置rvcbuf为 0,调整 OS 缓冲区并观察效果 - 这样您就不会遇到先有鸡还是先有蛋的难题。

第二……1 Gbps 和 OpenVPN……真的吗?我建议在你的 OpenVPN 安装上放一些凝固汽油弹,等它吸收一段时间,然后把它全部烧掉。显然,需要如此高速度的安装和 OpenVPN 有问题——它设计得如此横向,只与自身兼容……(是的,是的,我知道,很多合格的“家庭”工程师使用 OpenVPN,“一切都很好”,但这东西叫做可扩展性- 您可以使用同一种技术来处理 1 个单元或 1000 个相同类型的单元 - 而 OpenVPN 不是其中之一可扩展 解决方案)毕竟,可能是加密真正消耗了你的带宽?在达到最高速度时,你没有显示任何 CPU 统计数据,而且考虑到 OpenVPN 设计师和程序员与现实的复杂关系,看到 OpenVPN 消耗所有 CPU 我不会感到惊讶。

最后的建议(您可能不会遵循,但仍然如此;另外 - 我只是喜欢浪费好建议的讽刺意味)您应该仔细检查您的安装,并找到一些在两点之间加密 1 Gpbs 的好理由,而不仅仅是使用一些安全传输,如 vlan 的专用链路;如果您真的这样做了,您应该考虑转向一些标准解决方案,例如专用设备之间的 IPsec - 具有板载加速器(如 Cisco 和 Juniper),或者至少可以在软件中运行 AES-NI 时受益。但从我的角度来看,1 Gbps 链接必须由一些像样的专用设备来处理。暗示:如果您不需要资金,您可能根本不需要加密。

相关内容