2

I'm using an OpenVPN client on my RPI to tunnel traffic from clients in my LAN. Everything is stable, but the speed is terribly slow and I can't figure out what the bottleneck is.

I have a VDSL line with 50Mbit/s bandwidth and speedtest shows that I get about 5-6 m/s without the VPN:

wget --output-document=/dev/null http://speedtest.wdc01.softlayer.com/downloads/test500.zip

With the VPN I get only about 500-600kb/s, so roughly 1/10th of the speed. So I'm trying to figure out who the culprit is. Here's my setup and my test results for various potential bottlenecks:

  1. CPU Speed With normal 700MHz speed settings the CPU is around 50-60% when streaming video, with overclocking it's even less. The CPU is NOT the culprit.

  2. SD Card Speed I tested various cards, the fastest is a SanDisk 16GB Extreme with 45MB/s, giving me actual speed test results of 18-20MB/s. The SD Card is NOT the culprit.

  3. OpenVPN Encryption Speed I'm using 256-bit AES CBC encryption, which I can't change due to requirements of my VPN service provider. Testing OpenVPN encryption speed gives me about 18MB/s for 256 AES. OpenVPN encryption is NOT the culprit.

Conclusion: I should get at least 15-18 Mbit/s with my setup, since all tests show that this is possible BUT I get far less and I would really love to get some insight about what else I could test for and how I could improve the setup to get a speed improvement.

10
  • I think the combination of 1, 2, 3 and the fact that the raspberry has Ethernet via USB is your bottleneck here. maybe you can try a second Usb-Ethernet adapter and get (minimal) better results...
    – Gotschi
    Commented Mar 1, 2014 at 11:15
  • As it says you're using an OpenVPN 'Client' on the Pi, have you tried a speedtest using OpenVPN on a device other than the Pi? It could be the remote server limiting you're speed. I had a similar setup last year and it seemed to work okay. Commented Mar 1, 2014 at 11:24
  • @Gotschi I'm not using the USB, just the Ethernet port connected to my VDSL router. And btw. stopping the VPN, I get full 50Mbit/s speed on the PI, so the interface or the cable or the connection are not the problem.
    – Martin
    Commented Mar 1, 2014 at 12:48
  • @A_Porcupine Yes, when I use Tunnelblick on my MacBook Pro with the same VPN config, I get 30-35Mbit/s, which is what I would expect, not the full 50Mbit/s. But 5Mbit/s is a bit slow.
    – Martin
    Commented Mar 1, 2014 at 12:50
  • 1
    I have the about the same specs as you. I have a 15mbit connection but only get ~500KB/s d/s speed with openvpn connected to PIA through transmission with raspbian. My cpu typically will show about 50% for openvpn process. I've just learned to accept it but if someone has a magic solution that'd be great. I hate to say it but that might be all we get for a $35 computer. Commented Mar 27, 2014 at 16:03

2 Answers 2

3

Well, you've listed one and Gotschi have listed the other.

ARM core, specially the one present in R-Pi's CPU is extremely simple. It can't be clock compared to complex x86 cores containing SIMD instructions. A on-fly 256bit-AES encryption/decryption speed limitation should be expected, in fact much lower than the bandwidth you have.

The other is the poor performance of the ethernet interface, which is behind USB bus and I personally find it somehow limited.

Even though both factors are limiters, you won't ever have 100% of the cpu utilization in this scenario, first due to the low ethernet bus, and then by the fact that network traffic flows in packets, so while buffers are being filled, cpu is poorly used. Now this is pure guessing, but I don't see you going much far from what you've got with Raspberry pi hardware due to these limitations.

You should try a board with a real ethernet controller (looks like Cubieboard have one), and a cpu that contains instructions favouring aes en/decryption.

2
  • Yes, I think the slow ethernet interface might be the actual problem. I recently bought an Odroid U3 and it easily does 45-50 Mbit/s with the OpenVPN and still has CPU capacity left to do other things, very neat little thing.
    – Martin
    Commented Jul 31, 2014 at 11:06
  • I don't think the USB bus is the bottleneck in this scenario. The CPU does not handle encrypting/decrypting every packet very well. At least that's my experience.
    – efr4k
    Commented Jun 8, 2015 at 22:46
0

Ive read all the comments so far, and maybe you forget that most internet connections special cable/dsl have a pretty slow upstream.

when it comes to VPN-traffic all that matters is the upstream power of the internetconnection your OpenVPN-Server is using.

your OpenVPN can Download with 50mbit but the transfer from OpenVPN->OpenVPN_Client is a Upload.

my home internet is VDSL50 MBit and 10Mbit Upstream, using Raspberry PI Zero my top Rates are from 850kb/s - 980kb/s, and thats 10Mbit.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.