WireGuard vs OpenVPN vs REALITY: what I actually use
The first time you care about a VPN protocol is usually when something breaks.
I was on airport Wi‑Fi, Android phone, trying to push a build artifact to a repo. The VPN connected, then nothing loaded. Switched from WireGuard to OpenVPN, and it started moving again. Same server region. Same signal bars. Different protocol.
Latency matters.
Protocols aren’t personalities
People talk about VPN protocols like they’re brands of running shoes. In practice they’re just different ways of packaging and moving encrypted packets, with different failure modes.
A protocol choice shows up in a few places you actually feel:
- Speed and battery (especially on mobile)
- How it behaves on “managed” networks (hotel Wi‑Fi, office guest networks, campus networks)
- How it looks to filters (from basic captive portals to serious blocking)
- How annoying it is to troubleshoot
If you’re using a mainstream consumer VPN app, you’ll usually see WireGuard and OpenVPN. If you’re dealing with restrictive networks, you’ll also hear about VLESS+REALITY, Shadowsocks-2022, and clients like Shadowrocket, NekoBox, Hiddify, and V2RayNG.
Some networks are weird.
WireGuard: fast, light, and picky about networks
WireGuard is my default when I just want the VPN to disappear and let me work. It’s UDP-based (the default port is 51820, though providers often change it), it’s lean, and it tends to be kind to battery on phones. On Linux it’s even in-kernel, which is part of why it feels so snappy on a decent router or a laptop.
Where WireGuard shines:
- Mobile roaming: switching from Wi‑Fi to LTE/5G doesn’t always nuke the tunnel.
- Low overhead: less CPU churn than older designs, which matters on travel routers and cheap Android devices.
- Consistent throughput: you often get close to your line rate if the server isn’t overloaded.
The catch is UDP. If the network blocks or de-prioritizes UDP (or does aggressive traffic shaping), WireGuard can look “connected” while your apps stall. I keep seeing this on corporate guest Wi‑Fi and some captive portals.
Packet loss is another gotcha. A little loss on mobile is normal; WireGuard can recover, but real-time stuff (calls, games) can feel spiky when you’re on the edge of coverage. That’s not WireGuard being bad. It’s just honest about the network you’re on.
If your provider exposes protocol knobs, check their docs instead of guessing. I usually skim the provider’s feature page once and then stop thinking about it. DuduVPN keeps that sort of thing in one place on their VPN apps and protocol features page.
OpenVPN: the thing that still works on weird Wi‑Fi
OpenVPN is the old workhorse. It’s not fashionable, but I still reach for it when I’m on a network that treats UDP like contraband.
The practical reason: OpenVPN can run over TCP, and TCP on port 443 looks like normal HTTPS from a distance. That doesn’t magically defeat every firewall, but it gets through a lot of “we block random stuff” setups. When I’m stuck in a hotel where half the internet is broken, OpenVPN TCP is often the protocol that gets me back to doing actual work.
OpenVPN trade-offs are real, though:
- More overhead: your CPU and battery pay for it.
- TCP-over-TCP problems: if you run OpenVPN over TCP and then push a bunch of TCP traffic inside it (web browsing, SSH, Git), congestion control can get messy. It can feel slow in a way that’s hard to diagnose.
- Slower handshakes: not always, but you notice it when you hop servers a lot.
If you’re on Windows and you care about “it always connects,” OpenVPN is still a good safety net. On iOS, it’s fine but I notice the battery hit sooner than with WireGuard.
This part is annoying: many apps hide the TCP/UDP detail behind a single “OpenVPN” toggle. If you’re troubleshooting, make sure you know which one you’re actually using.
REALITY (VLESS+REALITY): when getting through matters more than elegance
REALITY usually shows up as VLESS+REALITY in Xray-based setups. It’s not a classic VPN protocol in the same family as WireGuard/OpenVPN; it’s closer to a “make my traffic look like something else” transport approach.
Why people use it is pretty simple. On networks that actively block or fingerprint VPNs, a plain WireGuard handshake can be an easy target. OpenVPN can also be recognized, even on 443, depending on how aggressive the filtering is.
REALITY’s goal is to blend in with normal TLS traffic without requiring you to terminate TLS the same way a normal website would. In practice, it can be a lifesaver in restrictive environments, especially when combined with sane client choices.
Clients I’ve personally used or had to support on friends’ phones:
- NekoBox (Android)
- V2RayNG (Android)
- Hiddify (Android/iOS/macOS, depending on build)
- Shadowrocket (iOS)
- Streisand (iOS)
There are trade-offs. Setup is less forgiving, and a tiny config mistake can look exactly like “the ISP is blocking me.” Also, REALITY isn’t a magic cloak. If a network operator wants to play whack-a-mole hard enough, they can. You’re just changing the economics of blocking.
Where Shadowsocks-2022 fits: I still see it used as a lightweight option when people want something simple and fast that’s not a full VPN tunnel, especially for specific apps. It’s often paired with tooling that makes it act more VPN-like on mobile, but the behavior varies by client.
A quick way to choose without overthinking it
I don’t pick protocols based on ideology. I pick them based on the network I’m standing on.
Here’s the cheat sheet I use when I’m setting up a new device or helping someone remote-debug over chat:
- WireGuard: default for day-to-day speed and battery, good on home Wi‑Fi and normal mobile networks.
- OpenVPN TCP 443: when the network is hostile to UDP, or when “connects everywhere” beats raw speed.
- VLESS+REALITY: when VPNs are actively blocked or throttled and you need something harder to fingerprint.
- Shadowsocks-2022: when you want a lighter transport for specific situations, and your client setup supports it cleanly.
If you’re shopping for a service, I’d rather see clear protocol support and straightforward apps than a dozen buzzwords. The DuduVPN pricing page is where I’d look to confirm what tiers and device counts you’re dealing with before you get invested.
Routers, laptops, phones: the boring details that matter
On OpenWrt, WireGuard is usually the sweet spot. Low CPU use, stable performance, and it doesn’t turn your router into a space heater. On older OpenWrt boxes (or cheap travel routers), OpenVPN can bottleneck hard.
On macOS, WireGuard is nearly always my first try. On Windows, it depends on the machine and the driver stack, but WireGuard has been solid for me lately.
Phones are where you feel protocol choice the most. WireGuard tends to sip battery. OpenVPN can chew it, especially if you’re in a marginal signal area and the radio is already working overtime.
If you’re the type who hates fiddling, bookmark the provider’s troubleshooting notes. When people ask me for “the one setting,” I point them to the FAQ and tell them to spend five minutes there before they spend five hours guessing. DuduVPN keeps the basics in their VPN setup and troubleshooting FAQ.
One-sentence truth: a VPN can’t fix bad Wi‑Fi.
Where DuduVPN fits in my own setup
I keep one paid VPN around that I can trust to be boring. That means stable apps, predictable server selection, and protocol options that match reality on the networks I actually use.
If you want that same “boring” experience, I’d start with DuduVPN and use their Telegram bot if you prefer managing subscriptions and getting help without opening yet another support ticket.
The small gotchas that waste the most time
DNS can make you think the tunnel is dead when it isn’t. If sites won’t resolve but IP pings work, you’re debugging DNS, not encryption.
MTU issues are sneaky on mobile hotspots. A tunnel that connects and then fails on large downloads often wants an MTU tweak, especially on WireGuard.
And don’t forget the obvious: captive portals. If you haven’t accepted the hotel’s terms page, no protocol is going to save you.
When a network blocks UDP, try OpenVPN over TCP on port 443 before you assume the VPN service is down.
Related articles
VPN settings for streaming that actually reduce buffering
Practical VPN tweaks for smoother streaming: protocol choice, server selection, MTU, split tunneling, and device tips for Wi‑Fi, mobile, and TV.
What “no logs” really means when you use a VPN
No-logs sounds simple, but VPN privacy has edges: connection metadata, crash reports, payments, and what protocols can and can’t hide.
No-logs VPNs: what that promise really covers
“No logs” sounds simple, but it isn’t. Here’s what VPNs can still see, what they shouldn’t keep, and how to sanity-check the claims.
Setting up a VPN on iOS and Android in about a minute
Get a mobile VPN running fast on iOS or Android, then fine-tune for battery, speed, and sketchy Wi‑Fi. Practical tips from daily use.