Cycle's hosted MCP is live. Your AI tooling just learned DevOps.Read the announcement

OpenVPN Caught Up on Speed. Is That Enough to Switch Back?

OpenVPN with DCO now matches WireGuard on throughput. We read 88 engineers' comments to see if that changes anything, and found speed was never why they chose WireGuard.

chris-aubuchonChris Aubuchon
9 Min Read
Cycle MCP 2026.10.14.02

OpenVPN got faster. OpenVPN with Data Channel Offload (DCO) now matches WireGuard’s throughput on the same hardware: up to 680 Mbps on both protocols on a GL.iNet Flint 3 router. Those figures come from OpenVPN’s own benchmarks, not independent tests, but they line up with what VyOS and IPFire have reported. For years the short answer to “why not OpenVPN?” was “it’s slow.” That answer no longer holds.

If you run OpenVPN today, this is a free upgrade. You don’t migrate anything. Move the server to Linux 6.16 or later and OpenVPN 2.7, use an AEAD cipher, and the data channel moves into the kernel. Your certificates, user auth and client configs stay the same. We have a stake in this too: every Cycle environment ships with a built-in OpenVPN-based VPN, so the speedup matters to us as well.

WireGuard users mostly shrugged. We wanted to know whether faster OpenVPN would change anyone’s mind, so we posted the news on LinkedIn, which drew 88 comments. We read every one and grouped them by the main reason given. Most people agreed the speed gap had closed, but almost nobody thought speed was why they’d picked WireGuard. They chose it for simple configuration and a codebase small enough to audit, and none of that changed.

The real lesson is re-evaluation. Infrastructure decisions get made for a reason, and the reason often expires long before anyone revisits the decision. We see this all the time with Kubernetes: teams adopt it because they think they have to and then fail to re-evaluate that layer in their stack. That’s a big part of why we built Cycle, giving teams an option that's simpler with a better developer experience. A faster OpenVPN might not be enough reason to switch from WireGuard but it is a good practice to look at why you chose what you’re running and whether that reason still holds.

What happened

On October 2, 2026, OpenVPN announced that VyOS now ships OpenVPN 2.7 built against the Linux kernel's ovpn module, with DCO enabled per tunnel. The kernel work behind it is older. Linux networking maintainers accepted the ovpn module in April 2025, and it shipped in Linux 6.16 in July 2025. What's new is that it's now reaching distributions and appliances by default.

DCO has existed since 2023. The kernel module landed in mid-2025, but the matching OpenVPN release, working distro packages and appliance support took another 14 months.

Date

What happened

Jan 25, 2023

OpenVPN 2.6.0 adds DCO through the out-of-tree ovpn-dco module, built and installed separately.

Apr 17, 2025

Linux networking maintainers accept the ovpn module.

July 2025

The ovpn module ships in Linux 6.16.

Feb 11, 2026

OpenVPN 2.7.0 released, the first version that works with the mainline ovpn module. OpenVPN 2.6 can't use it.

Apr 2026

Fedora 44 and Ubuntu 26.04 ship OpenVPN 2.7 on kernels with ovpn. DCO only works after fixes to AppArmor rules and NetworkManager permissions.

Sept 17, 2026

VyOS ships OpenVPN 2.7 with the in-kernel module, replacing the old out-of-tree driver.

Sept 30, 2026

A VyOS user reports DCO at 300 to 400 Mbps against WireGuard's 1.7 Gbps on the same node. Maintainers trace it to MTU defaults and fix it in a later build.

Oct 2, 2026

OpenVPN publishes router benchmarks alongside VyOS support: DCO matches WireGuard at 680 Mbps on a GL.iNet Flint 3.

How it works

Classic OpenVPN runs everything in userspace, so every packet is copied between the kernel and the OpenVPN process. DCO splits the work:

  • Kernel (ovpn module): the data channel. Encryption, decryption and encapsulation of every packet, spread across CPU cores.
  • Userspace (OpenVPN 2.7): the control channel. The TLS handshake, authentication, key negotiation and pushing configuration to clients stay where they were.

Removing the per-packet copies and context switches is where the speed comes from. OpenVPN's DCO guide reports an internal iperf3 test going from about 3.61 Gbps to 7.15 Gbps on the same hardware. IPFire reported 1 Gbit/s to 10 Gbit/s per tunnel. These are vendor and partner numbers, not independent tests.

What DCO doesn't do (from the project's README.dco.md):

  • AEAD ciphers only: AES-GCM and ChaCha20-Poly1305.
  • Layer 3 only (dev tun). TAP and layer 2 bridging are not offloaded.
  • No compression, no --shaper, subnet topology only for servers.
  • The mainline module needs OpenVPN 2.7 or later. Older kernels can use the ovpn-backports project.
  • If a config uses an unsupported option, OpenVPN turns DCO off and logs a warning instead of failing.

Why it matters for teams already on OpenVPN

For teams running OpenVPN, this is a free performance upgrade with no migration. The tunnels, certificates, user auth and client configs stay the same. The server gets a kernel at 6.16 or later, OpenVPN 2.7, and an AEAD cipher, and the data channel moves into the kernel.

  • The speed tax is gone. Teams that stayed on OpenVPN for its features no longer pay for them in throughput. Those features include username and password auth, RADIUS or LDAP plugins, pushed routes and TCP fallback.
  • Less CPU per gigabit on concentrators. The encryption work runs in the kernel and across cores instead of one userspace process. That matters most on a central server terminating many clients.
  • Clients benefit without changing. OpenVPN notes that clients on any platform see the gain when the server runs DCO. Windows clients also have a DCO driver (ovpn-dco-win) for client and peer-to-peer mode.
  • Appliances are shipping it. VyOS, IPFire and GL.iNet routers already support it, so many teams get it through a normal firmware or OS update.

The one group left out is layer 2. Teams bridging Ethernet over TAP don't get DCO, because only TUN is offloaded.

What the discussion said

The engineers who responded mostly agreed the speed gap had closed. They disagreed that speed was ever the reason to pick WireGuard. Across 88 comments on a LinkedIn thread about the news, the reasons people gave fell into a few groups.

We definitely saw some trends forming in the comments. Most people agreed the speed gap had closed, but almost nobody thought speed was ever the real reason to pick WireGuard. The biggest group, around 18 comments, talked about simplicity. People called OpenVPN setup “convoluted” and “a total faff,” and one summed up WireGuard’s lesson as “the less buttons, the better.” About 10 pointed to auditability. The most-liked reply said WireGuard was chosen because its code “could be audited and trusted,” and that performance was a bonus.

A smaller group, around seven, made the point this post is built on: infrastructure choices tend to be defended by the cost of revisiting them, not by fresh data. A handful made the case for OpenVPN, citing built-in user management and MFA, pushed configs, layer 2 bridging, running over TCP/443, and compliance rules that require specific crypto or PKI. Others raised topology: OpenVPN is hub and spoke, while WireGuard fits a decentralized mesh. One suggested combining them, with OpenVPN for coordination and key distribution and WireGuard for transport. A few noted that WireGuard is easier to automate but leaves key distribution and fleet tooling to you. The rest asked questions nobody can answer yet: does connection setup get faster, what happens to CPU and memory, and do real-world speeds match the benchmarks?

The auditability points have a long history. When WireGuard was heading for the kernel in 2018, Linus Torvalds wrote that "compared to the horrors that are OpenVPN and IPSec, it's a work of art." The WireGuard paper puts its Linux implementation at under 4,000 lines of code.

How the pieces fit. Almost every point lands in one of two layers. DCO only changed the data plane, which is where speed lives. Every remaining difference people raised sits in the control plane or in how much code you have to trust.

The green row is what DCO changed. The amber rows hold every remaining difference respondents raised: identity, config, transport and the code each team has to trust.

Side by side

On throughput the two are now even. Most of the other rows still differ. The rows follow what respondents raised most.

What people asked about

OpenVPN 2.7 with DCO

WireGuard

Throughput, same router

Up to 680 Mbps on a GL.iNet Flint 3. 700 Mbps on a Mudi 7.

Up to 680 Mbps on the Flint 3. 600 Mbps on the Mudi 7.

Configuration

Server config plus a PKI (CA, server and client certs) and many options. DCO adds limits: AEAD ciphers, TUN only, subnet topology.

A key pair per interface and a list of peers with allowed IPs.

Code you trust

Userspace OpenVPN and OpenSSL for the control channel, plus the in-kernel ovpn data channel.

Under 4,000 lines in the Linux kernel. Protocol proofs in CryptoVerif and Tamarin.

Cryptography

Wide choice through OpenSSL on the control channel. DCO data channel: AES-GCM or ChaCha20-Poly1305.

Fixed set: Noise IK, Curve25519, ChaCha20-Poly1305, BLAKE2s. No negotiation. A broken primitive means a new protocol version.

Connection setup

TLS handshake and key negotiation in userspace. DCO doesn't change this part.

One round-trip handshake.

Transport

UDP or TCP. Can run on TCP/443 to get through restrictive networks.

UDP only.

Layer 2

TAP bridging supported, but not offloaded by DCO.

Not supported. Layer 3 only.

Users and auth

Certificates, username and password, RADIUS, LDAP or PAM through plugins.

Public keys only. Users, SSO and MFA come from outside tools.

Config to clients

Server pushes IPs, routes and options.

Nothing built in. Allowed IPs per peer, distributed by your own tooling.

Topology

Hub and spoke through a server.

Peer to peer. Any node can be a hub. Built-in roaming between networks.

In the Linux kernel

ovpn module since Linux 6.16 (July 2025). Needs OpenVPN 2.7.

Since Linux 5.6 (March 2020).

Throughput figures are OpenVPN's published router tests (source), not independent benchmarks. Neither project publishes a head-to-head CPU or memory comparison with DCO enabled, which leaves one of the open questions from the discussion unanswered. Other sources: README.dco.md, WireGuard formal verification, WireGuard and OpenVPN on Wikipedia.

Is it enough to migrate?

For most teams, no. DCO is a reason to upgrade OpenVPN, not to switch to it. It removed the one disadvantage that was easy to measure. The reasons people gave for choosing WireGuard (simplicity, a small audit surface, easy config) didn't change, and neither did the reasons some teams need OpenVPN.

Your situation

Move?

Why

Running OpenVPN today

Upgrade, don't migrate

Kernel 6.16+, OpenVPN 2.7 and an AEAD cipher gets you the speed with no client changes.

Running WireGuard today

Stay

None of the reasons respondents gave for picking it depended on OpenVPN being slow.

Planning a move to WireGuard for speed alone

Re-check the plan

The speed case is gone. Moving still makes sense for simpler config or a smaller trust surface, not for throughput.

Need user auth, MFA, pushed config, TCP/443 or mandated PKI

OpenVPN

These are control plane features WireGuard leaves to outside tools.

Need layer 2 bridging

OpenVPN without DCO

WireGuard is layer 3 only, and DCO doesn't offload TAP.

Peer-to-peer mesh, roaming devices, small team

WireGuard

Its model fits, and there is less to configure and audit.

New deployment

Decide on the control plane

Throughput no longer separates them. Identity, config distribution and how much code you trust do.

The broader lesson from the discussion: infrastructure choices often outlive the reason they were made. When the original reason expires, it's worth asking whether the choice still holds. In this case it mostly does, because the reasons were never only about speed.

Want to see Cycle in action?

Schedule a demo with one of our dedicated solutions engineers.

Cookies

Cookies Preferences

We run basic, anonymous analytics by default to measure site traffic. By clicking "Accept," you allow additional cookies for advanced app improvements and tailored advertising. Choose what you share by clicking "Customize."