A transfer that crawls on the office connection sometimes finishes quickly through the tunnel, and the extra encapsulation makes that look impossible. The apparent paradox comes from comparing the wrong things. The tunnel adds work, and it also changes which network path the traffic follows, which address the destination sees and sometimes which server answers at all. A decision between the two routes needs those three effects separated before any conclusion about speed.

Three Things the Tunnel Can Change

The first is transit. Internet routing follows operator policy and business relationships, not measured latency, so the path through a VPN provider can cross different networks than the direct route. That can avoid a congested exchange or land on a better-peered one, and it can just as easily be worse.

The second is the destination. A change of exit address often changes the DNS answer, and a content network may hand you a different cache or region. Some of the improvement then belongs to the new server rather than to the tunnel. The same hostname can land on a closer or a less loaded server without anything changing on the client.

The third is transport behaviour. Encapsulation changes effective packet size, and a tunnel that avoids a lossy middle segment can let a TCP flow grow its window instead of repeatedly backing off. None of these is a universal acceleration mechanism; each is a condition that must be observed. Separating them is what turns a curiosity into a fact.

What It Cannot Change

Nothing in the tunnel adds capacity to the link between the device and the network. A saturated Wi-Fi channel, a congested last mile or a capped mobile plan limits both paths identically, and a speed test run through the tunnel cannot exceed that ceiling. The same link carries the encapsulated packets, so encapsulation can spend capacity but never create it. What changes is where the packets go after they leave that link. That is why a fast tunnel result always has an explanation upstream of the first hop.

Server-side limits are equally indifferent. If the remote host serves slowly, a better path only delivers the slow response more efficiently, and the user still waits. A shared origin under load looks slow on both paths at the same moment.

Compare the Paths Properly

Keep the application, direction, duration and concurrency identical, and change only the path. Run each test more than once, at the same time of day, and record the exit address and resolver answer alongside the throughput. One run is a sample rather than a measurement, and a single fast download can be a cache hit that says nothing about the route. Write the conditions down before the results, because the numbers are hard to interpret afterwards.

mtr -rwc 50 -T -P 443 203.0.113.20
curl -o /dev/null -s -w '%{speed_download} %{time_connect}\n' https://example.com/file
dig +short cdn.example.com
traceroute -n -T -p 443 cdn.example.com

The resolver answer is the detail most comparisons omit, and it explains "improvements" that vanish when the same server is forced. If the address differs between runs, the test compared two destinations rather than two paths. Report latency and loss next to throughput, because a path that is faster in aggregate but adds delay to every interactive request is not better for the workload that complained. Round-trip time matters more than bulk speed for anything that asks and waits.

When the Difference Is Worth Keeping

If an approved tunnel reliably improves a specific workload, that is a legitimate operational choice: document the workload, the measurement and the exit used. A usable record names one host, the exit address the tunnel produced, the resolver answer, and the same figures from the direct path on the same day. That is enough for the next engineer to repeat the comparison instead of re-litigating it. It is still not proof that the provider throttles anything, and it does not transfer to other applications or other hours.

Keep the measurement record with the configuration. It answers the next question about whether the improvement still exists, which is the only way to know whether the path or the workload changed. A record without a date cannot answer that question at all.

Allakkat attuumassuteqartut