Acabo de terminar de configurar un NAS VPN'ed con mi Raspberry Pi Modelo-B sin overclock recién adquirido y me he encontrado con algo para lo que no puedo encontrar una respuesta.
El ancho de banda de Internet, según lo determinado usando
wget --output-document = / dev / null http://speedtest.wdc01.softlayer.com/downloads/test500.zip
es mucho más lento de lo que esperaba obtener. Obtengo alrededor de 1.34 MBps en mi Pi a través de ethernet cuando me acerco a 7MBps cuando la ethernet está conectada directamente a mi computadora portátil.
El problema es con OpenVPN, pero no puedo entender qué es exactamente. Así es como sé esto.
Comparé las velocidades de descarga en el Pi con la VPN apagada y encendida: era 5.03 MBPS frente a 1.34 MBPS.
Luego lo probé en mi computadora portátil (con cable): era 6.9 MBPS (perfecto) frente a 6.7 MBPS (casi perfecto).
Por lo tanto, la falla no radica completamente en mi servicio VPN (PrivateInternetAccess), que ofrece una reducción del 3% en el ancho de banda de mi computadora portátil, sino que tiene que ver con la forma en que OpenVPN se ejecuta en el Pi, que ofrece una reducción del 74% en el ancho de banda.
¿Alguna idea de por qué OpenVPN en Raspbian es tan terrible?
ACTUALIZACIÓN: La mayor parte de esa reducción de 6.9MBPS en la computadora portátil sin VPN a 5.03 MBPS en la Pi sin VPN parece ser de la velocidad de escritura de la tarjeta SD, que he determinado que es de alrededor de 4.9MBPS. Es esa gran reducción de 5.03 MPBS en Pi sin VPN a 1.3MBPS con VPN lo que debe explicarse.
ACTUALIZACIÓN 2: Algunas pistas más de las sugerencias de los comentarios: 1) OpenVPN utiliza el 70% de la CPU cuando se está ejecutando y wget está en segundo plano 2) En Pi, obtengo 1.34 MBPS de un servidor VPN de EE. UU. Y alrededor de 500- 600 KBPS de TODOS los servidores VPN europeos, PERO en mi computadora portátil, recibo 6.7MBPS del servidor VPN de EE. UU. Y 6.6MBPS muy similares de algunos servidores europeos como el de los Países Bajos. Lo que digo es que la distancia al servidor parece afectar desproporcionadamente a la Pi en lugar de a mi computadora portátil.
fuente
top
durante la prueba, eso debería decir algo sobre la sobrecarga de cifrado.Respuestas:
En dispositivos de baja potencia, al menos cuando uso SSH, he tenido una buena experiencia usando el cifrado RC4 para mejorar el rendimiento, ya que es computacionalmente más rápido, por lo que usa menos CPU para el ancho de banda / permite anchos de banda más altos para el mismo uso de CPU. Esta guía explica cómo cambiar el cifrado a cualquiera compatible con OpenSSL, como RC4:
http://openvpn.net/index.php/open-source/documentation/howto.html#security
Tenga en cuenta que RC4 no es el algoritmo más seguro disponible, pero SSL todavía lo usa de manera segura (que existe, como se describe aquí: http://en.wikipedia.org/wiki/RC4 ). Actualización : esto es menos cierto ahora que en el pasado. La confianza en la seguridad de RC4 se está reduciendo aún más, a medida que avanzan las técnicas para romperlo, y 2013 nos ha brindado varios avances en la ruptura de RC4 y la especulación sobre la administración de la NSA . Citando Wikipedia:
Entonces, ¿puedo recomendar RC4? En realidad no en general. Por supuesto, debe sacrificar la seguridad y el rendimiento, y tal vez en realidad no necesite mucha seguridad: cualquier criptografía, incluso RC4, aún ralentizará los esfuerzos de vigilancia de las redes de arrastre como los de la NSA. Pero sería realmente cuidadoso con los datos realmente sensibles y cambiaría el algoritmo a otra cosa si es posible (he comenzado a comparar mi Raspberry para buscar alternativas rápidas).
Actualización 2 : en mi Raspberry (overclockeado), AES no es tan lento, si tienes suficiente CPU disponible. La siguiente tabla muestra que RC4 puede encriptar ~ 57MB / s, mientras que AES-128-CBC puede encriptar ~ 21.4MB / s. Por supuesto, esto no explica por qué obtiene un rendimiento tan malo, pero tal vez esté utilizando de forma predeterminada un cifrador más lento, o tal vez haya alguna otra ineficiencia que podría mejorarse.
Configuración de overclocking de
/boot/config.txt
:fuente