VPN protocols explained: WireGuard, OpenVPN and IKEv2
A VPN protocol is the set of rules that builds the encrypted tunnel. How WireGuard, OpenVPN and IKEv2 differ in speed, size and getting through.
A VPN protocol is the agreed set of rules a phone and a server use to build an encrypted tunnel: how they prove who they are, how they exchange keys, how each packet is wrapped, and what happens when the network changes underneath them. Three protocols do almost all of the work in modern apps. WireGuard is the newest and the leanest, OpenVPN is the most flexible about which networks it can cross, and IKEv2/IPsec is the one built into most operating systems.
What a protocol actually decides
Every VPN protocol has to answer the same four questions, and the answers are where they differ.
- Authentication. How does the phone know it is talking to the real server, and how does the server know which client this is? WireGuard uses a fixed public key on each side. OpenVPN and IKEv2 usually use certificates.
- Key exchange. How do both ends agree on a secret key without an eavesdropper learning it? All three use some form of Diffie-Hellman; the curves and the number of round trips differ.
- Transport. Does the tunnel run over UDP, TCP, or either? This decides how it behaves on a network that filters one of them. The UDP vs TCP post goes through why it matters.
- Recovery. What happens when your phone moves from Wi-Fi to mobile data, or the connection drops for a minute? Some protocols renegotiate from scratch; some carry on as if nothing happened.
The three you will meet
| WireGuard | OpenVPN | IKEv2/IPsec | |
|---|---|---|---|
| First released | 2015, in the Linux kernel since 5.6 (2020) | 2001 | 2005 (RFC 4306), current spec RFC 7296 |
| Transport | UDP only | UDP or TCP | UDP on ports 500 and 4500 |
| Cryptography | Fixed: Curve25519, ChaCha20-Poly1305, BLAKE2s | Negotiated over TLS; typically AES-GCM | Negotiated; typically AES-GCM or AES-CBC |
| Handshake | One round trip, a fixed 148-byte initiation packet | Full TLS handshake plus OpenVPN's own exchange | Two exchanges (IKE_SA_INIT, IKE_AUTH) |
| Roaming between networks | Built in, no renegotiation | Reconnects | MOBIKE (RFC 4555) |
| Where it runs on Android | Inside the VPN app | Inside the VPN app | Inside the app, or the OS's own client |
WireGuard
WireGuard was designed to be small enough that one person could read the whole thing. It has one set of cryptographic choices rather than a menu, so there is nothing to misconfigure, and its handshake fits in a single round trip. When a client's address changes, the server simply notices that authenticated packets are now arriving from somewhere new and updates its records; there is no reconnection to wait for. That combination is why it is the default in most current VPN apps, and the WireGuard explainer covers how it works in more depth.
Its one real limitation is that it is UDP only. On a network that drops UDP, WireGuard cannot connect at all, and the app has to try something else.
OpenVPN
OpenVPN is older and larger. It runs its control channel over TLS, the same protocol that protects HTTPS, and then carries the tunnel's data over either UDP or TCP. That flexibility is its strength: on a network that filters UDP, OpenVPN over TCP port 443 can still connect, because to a port filter it looks like ordinary web traffic. The cost is more code, a slower handshake, and, in TCP mode, the stacked-retransmission problem described in the UDP vs TCP post. The WireGuard vs OpenVPN comparison weighs the two properly.
IKEv2/IPsec
IKEv2 is the key-exchange half of IPsec, the tunnelling standard built into every major operating system. It runs on UDP port 500, moving to 4500 when it detects a NAT between the phone and the server. Its distinctive feature is MOBIKE, which lets an established tunnel follow a phone from one network to another without renegotiating. Because it is an OS feature rather than an app feature, it tends to be efficient, but it is also the easiest of the three for a network to identify and filter, since it only ever uses those two ports.
Why you should not have to pick
Every protocol here is secure when configured correctly. The differences that matter to you are speed, battery and whether the network you are on will let it through, and the app can measure all three better than you can guess them. The right design is a ladder: start with the lightest protocol that works on most networks, give it a few seconds, and move to the next one if it goes silent.
Culvert VPN does exactly that, trying WireGuard over UDP on several ports first, then a TLS-wrapped transport on TCP port 443, then IKEv2, and never showing you a protocol name because the choice is made and remade for you; it is on Google Play.
Questions people also ask
Which VPN protocol should I choose?
On a phone, you should not have to. A well-built app starts with WireGuard, because it is quick and light on battery, and tries other methods only when the network refuses it.
Are older protocols like PPTP or L2TP still safe?
PPTP is broken and should not be used for anything. L2TP over IPsec is still secure but slow and easily filtered, and there is no reason to prefer it over the three protocols here.
Does the protocol change what the VPN provider can see?
No. Every protocol delivers your traffic to the provider's server, where it is decrypted and sent on. What the provider does with it is a policy question, not a protocol one.