I've set up an OpenVPN server on a VPS running Centos 5.7 via UDP. Clients connect to it on boot and if-up, get issued a 10.5.5.x address. The server runs mail, samba and jabber servers. OpenVPN is set up so that clients can see each other, so ping, jabber, ssh, scp, etc. work. The tun interface is for this subnet only, so normal internet traffic doesn't get routed. All clients are Ubuntu 11.10.

I'm having issues with network traffic though. It seems that whenever there is a larger amount of data to be transferred (scp peer-to-peer, sending larger mail attachments to the server, file transfer via Pidgin/XMPP, VNC peer-to-peer) the activities time out. At least I think they do, because the activity just hangs. For example:

I've done quite a bit of OpenVPN speed testing in the past, and it's always come down to my CPU maxing out for the speeds. Since OpenVPN doesn't support multiple processors, it can only run as fast as the one processor will allow it. So I would highly recommend looking at the CPU usage of the server when downloading these large files. From here you will have to start tuning your server.conf settings.

Test various encryption standards (I ended up using AES-128-CBC for the fastest/best encryption from my testing)

Test udp vs tcp (I ended up using udp)

Use a smaller dh key size (1024 over 2048)

Lower the verbosity of the logging (this will eat up less CPU and leave more room for the encryption)

Test various settings such as rcvbuf, sndbuf, tun-mtu, tun-mtu-extra, mssfix, fragment, fast-io, auth-none (after most of these tests I ended up just using fast-io because the others didn't affect the speed much on my tests)

Every setup is going to be slightly different but those are a few things I would look into if I were you. Unfortunately I can't find the document of my actual speed tests.