OpenVPN数据通道卸载(DCO)

pfSense Plus 22.05的开发快照现在已进入测试阶段,不久之后即将发布。该版本包含了一些重大改进,其中的增强功能就包括支持OpenVPN数据通道卸载(DCO)。

OpenVPN DCO通过减少每个数据包发生的上下文切换量,在处理加密的OpenVPN 数据时可大幅提升性能。DCO 通过将大部分数据处理任务保留在内核中而不是在内核和用户空间之间反复切换以进行加密和数据包处理来实现这一点。这使得每个数据包的整体处理更加高效,同时还可能利用内核中的硬件加密卸载支持。DCO还增加了对多线程加密的支持,从而获得更多的性能提升。

DCO不是对协议的更改,它是端点处理加密数据方式的更改。因此,即使只有一个端点能够进行DCO,DCO也是有益的。也就是说,在所有端点上使用DCO的隧道将受益最大。仅在一个端点上使用DCO 时,性能改进仍然很明显,但不如在两个端点上都支持 DCO那么显著。

DCO是可选项,默认情况下并不会自动启用。要使用必须在 OpenVPN服务器和客户端实例上选中该选项。

在pfSense上使用OpenVPN DCO存在以下一些限制:

  • 当前加密仅限AES-256-GCM。未来版本将支持其他 AEAD 密码,例如 ChaCha20-Poly1305。
  • DCO支持需要基于 TLS 的隧道,例如 SSL/TLS、SSL/TLS+User Auth 或 User Auth。
  • DCO仅支持还未发布的OpenVPN 2.6.0。
  • 将 /30 隧道网络用于对等隧道(一台服务器和一台客户端)可能会对 DCO 造成潜在问题。OpenVPN 中此模式的代码存在问题,可能导致不稳定。此外,客户端必须至少使用 pfSense Plus 21.02 及更高版本或 pfSense CE 2.5.0 及更高版本上存在的OpenVPN 2.5.0。这些限制不适用于客户端/服务器模式(一台服务器能够处理多个客户端)。
  • 某些功能 DCO 不兼容或与 DCO 无关。这些选项包括显式退出通知、不活动超时、UDP 快速 I/O 和发送/接收缓冲区大小。

DCO测试情况

做为参照,使用OpenVPN 2.6 DCO开发版在三种不同配置下的测试结果:

以下测试数据是在AMD ThreadRipper 3970x 平台上使用iperf3进行测试的结果,系统为运行在Hyper-V中的Linux和Windows,使用的加密算法为 AES-256-GCM。

发表评论

您的电子邮箱地址不会被公开。