Internet à faible bande passante sur VPN

10

Je viens de terminer la configuration d'un NAS VPN avec mon Raspberry Pi Model-B non overclocké nouvellement acquis et j'ai rencontré quelque chose pour lequel je ne trouve pas de réponse ailleurs.

La bande passante Internet, déterminée à l'aide de

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

est beaucoup plus lent que ce à quoi je m'attendrais. J'obtiens environ 1,34 Mo / s sur mon Pi via Ethernet lorsque j'approche de 7 Mo / s lorsque Ethernet est branché directement sur mon ordinateur portable.

Le problème est avec OpenVPN, mais je ne peux pas comprendre ce que c'est exactement. Voici comment je le sais.

J'ai comparé les taux de téléchargement sur le Pi avec le VPN éteint et allumé - c'était 5,03 MBPS contre 1,34 MBPS.

Ensuite, je l'ai essayé sur mon ordinateur portable (filaire) - c'était 6,9 MBPS (parfait) contre 6,7 MBPS (presque parfait).

Donc, la faute ne vient pas entièrement de mon service VPN (PrivateInternetAccess) qui donne une réduction de 3% de la bande passante sur mon ordinateur portable - mais a à voir avec la façon dont OpenVPN fonctionne sur le Pi qui donne une réduction de 74% de la bande passante.

Des idées sur la raison pour laquelle OpenVPN sur Raspbian est si terrible?

MISE À JOUR: La plupart de cette réduction de 6,9 ​​Mo / s sur l'ordinateur portable sans VPN à 5,03 Mo / s sur le Pi sans VPN semble provenir de la vitesse d'écriture de la carte SD, que j'ai déterminée à environ 4,9 Mo / s. C'est cette énorme réduction de 5,03 MPBS sur le Pi sans VPN à 1,3MBPS avec VPN qui doit être expliquée.

MISE À JOUR 2: Quelques indices supplémentaires à partir des suggestions des commentaires: 1) OpenVPN utilise 70% du processeur lorsqu'il est en cours d'exécution et wget est en arrière-plan 2) Sur le Pi, j'obtiens 1,34 MBPS d'un serveur VPN américain et environ 500- 600 KBPS de TOUS les serveurs VPN européens, MAIS sur mon ordinateur portable, je reçois 6,7 Mbps du serveur VPN américain et 6,6 Mbps très similaires de certains serveurs européens comme celui des Pays-Bas. Ce que je dis, c'est que la distance par rapport au serveur semble affecter de manière disproportionnée le Pi plutôt que mon ordinateur portable.

dbrane
la source
Il peut s'agir d'une combinaison d'une faible vitesse d'écriture et d'une surcharge VPN. Je n'ai jamais aimé utiliser les VPN car ils étaient simplement lents sur Internet et le tunneling SSH était toujours le plus rapide. Existe-t-il des options pour activer la compression sur OpenVPN? Peut-être jouer avec cela, peut-être que le chiffrement à la volée cause des problèmes. C’est une bonne question. Je suis également intéressé par les réponses par rapport au Pi
Piotr Kula
Regardez la charge CPU avec toppendant le test, cela devrait dire quelque chose sur la surcharge de cryptage.
Frepa
@Frepa Excellente suggestion! Lorsque le VPN est activé, OpenVPN utilise 70% du processeur. Pensez-vous que c'est ce qui cause l'énorme différence de taux de transfert?
dbrane
@dbrane, il semble que le CPU soit le facteur limitant. Où vont les 30% de temps CPU restants? Tourner au ralenti? Depuis la mise à jour 2, il semble que la latence du réseau (c'est-à-dire non seulement le débit) soit importante pour les performances. Peut-être qu'il y a une poignée de main en cours dans VPN.
Frepa du
@Frepa La plupart du temps CPU restant est utilisé par wget lui-même, qui est la commande que j'utilise pour tester le taux de transfert. Tout le reste de la liste utilise moins de 1% chacun. J'utilise un certificat CA avec le VPN, si cette information aide. Peut-être que je devrais essayer l'overclocking et voir si ça aide?
dbrane

Réponses:

4

Sur les appareils de faible puissance, au moins lors de l'utilisation de SSH, j'ai une bonne expérience de l'utilisation du chiffrement RC4 pour améliorer les performances car il est plus rapide sur le plan des calculs, donc utilise moins de CPU pour la bande passante / permet des bandes passantes plus élevées pour la même utilisation du CPU. Ce guide explique comment remplacer le chiffrement par un autre pris en charge par OpenSSL - comme RC4:

http://openvpn.net/index.php/open-source/documentation/howto.html#security

Notez que RC4 n'est pas l'algorithme le plus sécurisé disponible, mais SSL l'utilise toujours de manière sécurisée (qui existe, comme décrit ici: http://en.wikipedia.org/wiki/RC4 ). Mise à jour : c'est moins vrai maintenant que par le passé. La confiance dans la sécurité de RC4 diminue encore plus, à mesure que les techniques pour le briser avancent, et 2013 nous a donné divers progrès dans la rupture de RC4 et les spéculations sur la NSA ayant réussi . Citant Wikipédia:

En 2013, il y a des spéculations selon lesquelles certaines agences cryptologiques d'État pourraient posséder la capacité de briser RC4 même lorsqu'elles sont utilisées dans le protocole TLS. [3] Microsoft recommande de désactiver RC4 dans la mesure du possible. [4] [5]

Alors, puis-je toujours recommander RC4? Pas vraiment en général. Bien sûr, vous devez compromis la sécurité et les performances, et peut-être n'avez-vous pas vraiment besoin de beaucoup de sécurité - toute cryptographie, même RC4, ralentira toujours les efforts de surveillance dragnet comme ceux de la NSA. Mais je serais vraiment prudent avec les données réellement sensibles et changerais l'algorithme en quelque chose d'autre si possible (j'ai commencé à comparer mon Raspberry pour rechercher des alternatives rapides).

Mise à jour 2 : sur mon Raspberry (overclocké), l'AES n'est pas si lent, si vous avez suffisamment de CPU disponible. Le tableau ci-dessous montre que RC4 peut chiffrer ~ 57 Mo / s, tandis que AES-128-CBC peut chiffrer ~ 21,4 Mo / s. Bien sûr, cela n'explique pas pourquoi vous obtenez de si mauvaises performances - mais peut-être que vous utilisez par défaut un chiffrement plus lent, ou peut-être qu'il y a une autre inefficacité qui pourrait être améliorée.

$ openssl speed rc4 aes
[...]
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
rc4              45281.36k    54782.67k    57196.80k    57391.48k    57570.77k
aes-128 cbc      17904.15k    20469.38k    21133.95k    21449.62k    21403.72k

Paramètres d'overclocking de /boot/config.txt:

arm_freq=950

# for more options see http://elinux.org/RPi_config.txt
core_freq=250
sdram_freq=450
over_voltage=6
Blaisorblade
la source
1
Tout type de chiffrement (ssh / vpn) entraînera une utilisation supplémentaire du processeur, ce qui est probablement votre goulot d'étranglement.
earthmeLon
1
Mon point était que RC4 utilise moins de CPU que les autres chiffres, donc cela pourrait être bon dans cette situation. Mais je ne sais pas si vous êtes d'accord ou pas d'accord avec ma réponse.
Blaisorblade
@earthmeLon: J'ai mis à jour ma réponse pour énoncer mon point explicitement, car il n'était de toute façon pas clair. Je ne sais pas qui répond à votre commentaire.
Blaisorblade
Absolument. J'ai été très reconnaissant de savoir que RC4 est une bonne solution avec un minimum de frais généraux, en raison de sa mise en œuvre par SSH2. Merci pour l'information: D. Dommage que vous ne puissiez pas voir que je vous ai donné un vote positif, hein?
earthmeLon
En effet - je n'ai remarqué que plus tard que votre commentaire coïncidait avec le moment du vote positif. Merci!
Blaisorblade