Saya mengalami kecepatan transfer OpenVPN yang sangat lambat antara dua server. Untuk pertanyaan ini, saya akan memanggil server Server A dan Server B.
Server A dan Server B menjalankan CentOS 6.6. Keduanya terletak di pusat data dengan garis 100Mbit dan transfer data antara dua server di luar OpenVPN berjalan hampir ~ 88Mbps.
Namun, ketika saya mencoba mentransfer file apa pun melalui koneksi OpenVPN yang telah saya buat antara Server A dan Server B, saya mendapatkan throughput yang benar sekitar 6,5Mbps.
Hasil tes dari iperf:
[ 4] local 10.0.0.1 port 5001 connected with 10.0.0.2 port 49184
[ 4] 0.0-10.0 sec 7.38 MBytes 6.19 Mbits/sec
[ 4] 0.0-10.5 sec 7.75 MBytes 6.21 Mbits/sec
[ 5] local 10.0.0.1 port 5001 connected with 10.0.0.2 port 49185
[ 5] 0.0-10.0 sec 7.40 MBytes 6.21 Mbits/sec
[ 5] 0.0-10.4 sec 7.75 MBytes 6.26 Mbits/sec
Selain dari tes iperf OpenVPN ini, kedua server ini hampir sepenuhnya kosong tanpa beban.
Server A diberikan IP 10.0.0.1 dan itu adalah server OpenVPN. Server B diberi IP 10.0.0.2 dan itu adalah klien OpenVPN.
Konfigurasi OpenVPN untuk Server A adalah sebagai berikut:
port 1194
proto tcp-server
dev tun0
ifconfig 10.0.0.1 10.0.0.2
secret static.key
comp-lzo
verb 3
Konfigurasi OpenVPN untuk Server B adalah sebagai berikut:
port 1194
proto tcp-client
dev tun0
remote 204.11.60.69
ifconfig 10.0.0.2 10.0.0.1
secret static.key
comp-lzo
verb 3
Apa yang saya perhatikan:
1. Pikiran pertama saya adalah bahwa saya bottlenecking CPU di server. OpenVPN adalah single-threaded dan kedua server ini menjalankan prosesor Intel Xeon L5520 yang bukan yang tercepat. Namun, saya menjalankan top
perintah selama salah satu tes iperf dan menekan 1
untuk melihat pemanfaatan CPU oleh inti dan menemukan bahwa beban CPU sangat rendah pada setiap inti:
top - 14:32:51 up 13:56, 2 users, load average: 0.22, 0.08, 0.06
Tasks: 257 total, 1 running, 256 sleeping, 0 stopped, 0 zombie
Cpu0 : 2.4%us, 1.4%sy, 0.0%ni, 94.8%id, 0.3%wa, 0.0%hi, 1.0%si, 0.0%st
Cpu1 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu2 : 0.0%us, 0.0%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.3%st
Cpu3 : 0.3%us, 0.0%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu4 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu5 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu6 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu7 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu8 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu9 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu10 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu11 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu12 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu13 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu14 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu15 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 946768k total, 633640k used, 313128k free, 68168k buffers
Swap: 4192188k total, 0k used, 4192188k free, 361572k cached
2. Waktu ping meningkat jauh di atas terowongan OpenVPN saat iperf berjalan. Ketika iperf tidak berjalan, waktu ping di atas terowongan secara konsisten 60ms (normal). Tetapi ketika iperf berjalan dan mendorong lalu lintas yang padat, waktu ping menjadi tidak menentu. Anda dapat melihat di bawah ini bagaimana waktu ping stabil hingga ping ke-4 ketika saya memulai tes iperf:
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=60.1 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=60.1 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=60.2 ms
** iperf test begins **
64 bytes from 10.0.0.2: icmp_seq=4 ttl=64 time=146 ms
64 bytes from 10.0.0.2: icmp_seq=5 ttl=64 time=114 ms
64 bytes from 10.0.0.2: icmp_seq=6 ttl=64 time=85.6 ms
64 bytes from 10.0.0.2: icmp_seq=7 ttl=64 time=176 ms
64 bytes from 10.0.0.2: icmp_seq=8 ttl=64 time=204 ms
64 bytes from 10.0.0.2: icmp_seq=9 ttl=64 time=231 ms
64 bytes from 10.0.0.2: icmp_seq=10 ttl=64 time=197 ms
64 bytes from 10.0.0.2: icmp_seq=11 ttl=64 time=233 ms
64 bytes from 10.0.0.2: icmp_seq=12 ttl=64 time=152 ms
64 bytes from 10.0.0.2: icmp_seq=13 ttl=64 time=216 ms
3. Seperti yang disebutkan di atas, saya menjalankan iperf di luar terowongan OpenVPN dan throughputnya normal - ~ 88Mbps secara konsisten.
Apa yang saya coba:
1. Saya pikir kompresi mungkin mengotori segalanya, jadi saya mematikan kompresi dengan menghapus comp-lzo
dari kedua konfigurasi dan memulai kembali OpenVPN. Tidak ada perbaikan.
2. Meskipun saya sebelumnya menemukan bahwa utilisasi CPU rendah, saya pikir cipher default mungkin sedikit terlalu intensif untuk dapat diikuti oleh sistem. Jadi saya menambahkan cipher RC2-40-CBC
ke kedua konfigurasi (cipher yang sangat ringan) dan memulai kembali OpenVPN. Tidak ada perbaikan.
3. Saya membaca di berbagai forum tentang bagaimana mengubah fragmen, mssfix dan mtu-tun dapat membantu kinerja. Saya bermain dengan beberapa variasi seperti yang dijelaskan dalam artikel ini , tetapi sekali lagi, tidak ada peningkatan.
Adakah ide tentang apa yang dapat menyebabkan kinerja OpenVPN yang buruk?
cipher none
meskipun saya ragu itu akan membantu.