İki sunucu arasında oldukça yavaş OpenVPN aktarım hızları yaşıyorum. Bu soru için sunucu A ve Sunucu B'yi arayacağım.
Hem Sunucu A hem de Sunucu B, CentOS 6.6'yı çalıştırıyor. Her ikisi de 100Mbit hatlı veri merkezlerinde bulunur ve OpenVPN dışındaki iki sunucu arasında veri transferleri ~ 88Mbps'ye kadar çalışır.
Ancak, Server A ve B Sunucusu arasında kurduğum OpenVPN bağlantısı üzerinden herhangi bir dosyayı aktarmaya çalıştığımda, 6.5Mbps civarında çıktı alıyorum.
İperf'ten gelen test sonuçları:
[ 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
Bu OpenVPN iperf testlerinin yanı sıra, her iki sunucu da sıfır yük ile neredeyse tamamen boşta.
A sunucusuna IP 10.0.0.1 atanmış ve OpenVPN sunucusudur. B Sunucusu IP 10.0.0.2'ye atanmış ve OpenVPN istemcisi.
A Sunucusu için OpenVPN yapılandırması aşağıdaki gibidir:
port 1194
proto tcp-server
dev tun0
ifconfig 10.0.0.1 10.0.0.2
secret static.key
comp-lzo
verb 3
B Sunucusu için OpenVPN yapılandırması aşağıdaki gibidir:
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
Ne farkettim:
1. İlk düşüncem, sunucudaki CPU'yu tıkayan olduğumdu. OpenVPN tek dişlidir ve bu sunucuların her ikisi de en hızlı olmayan Intel Xeon L5520 işlemcileri kullanır. Ancak, top
iperf testlerinden biri sırasında bir komut çalıştırdım ve 1
çekirdekten CPU kullanımını görüntülemek için bastım ve CPU çekirdeğinin her çekirdekte çok düşük olduğunu tespit ettim:
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. Iperf çalışırken, Ping süreleri OpenVPN tüneli üzerinde önemli ölçüde artmaktadır. İperf çalışmadığında, tünelin üzerindeki ping zamanları sürekli olarak 60ms'dir (normal). Fakat iperf koşarken ve yoğun trafiği zorlarken, ping zamanları düzensizleşiyor. Aşağıda, iperf testine başladığımda ping sürelerinin 4. ping'e kadar nasıl stabil olduğunu görebilirsiniz:
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. Yukarıda bahsedildiği gibi, OpenVPN tünelinin dışına düştüm ve verim normaldi - sürekli olarak - 88Mbps.
Ne denedim:
1. Sıkıştırmanın işleri kirletebileceğini düşündüm, bu yüzden comp-lzo
hem yapılandırmalardan hem de OpenVPN'i yeniden başlatarak sıkıştırmayı kapattım . İlerleme yok.
2. Daha önce CPU kullanımının düşük olduğunu tespit etmeme rağmen, varsayılan şifrenin sistemin yetişemeyeceği kadar yoğun olabileceğini düşündüm. Bu yüzden cipher RC2-40-CBC
her iki konfigürasyona (çok hafif bir şifre) ekledim ve OpenVPN'i yeniden başlattım. İlerleme yok.
3. Parçanın, mssfix'in ve mtu-tun'ın ince ayarının performansa nasıl yardımcı olabileceği hakkında çeşitli forumları okudum. Bu makalede anlatıldığı gibi birkaç varyasyonla oynamıştım , ancak yine de gelişme yok.
Böyle düşük OpenVPN performansına neyin sebep olabileceği hakkında bir fikriniz var mı?
cipher none
olacağından şüphelenmeme rağmen denemek isteyebilirim .