Internet de bajo ancho de banda a través de VPN

10

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.

dbrane
fuente
Podría ser una combinación de baja velocidad de escritura y sobrecarga de VPN. Nunca me gustó usar VPN porque eran lentos en Internet y el túnel SSH siempre fue el más rápido. ¿Hay alguna opción para habilitar la compresión en OpenVPN? Posiblemente juegue con eso, quizás el cifrado sobre la marcha cause problemas. Es una buena pregunta. También estoy interesado en las respuestas en relación con el Pi
Piotr Kula
Observe la carga de la CPU topdurante la prueba, eso debería decir algo sobre la sobrecarga de cifrado.
Frepa
@Frepa Excelente sugerencia! Cuando la VPN está habilitada, OpenVPN utiliza el 70% de la CPU. ¿Crees que esto es lo que está causando la gran diferencia en las tasas de transferencia?
dbrane
@dbrane, parece que la CPU es el factor limitante. ¿A dónde va el 30% restante de tiempo de CPU? ¿Ocioso? A partir de la actualización 2, parece que la latencia de la red (es decir, no solo el rendimiento) es importante para el rendimiento. Tal vez hay algo de apretón de manos en VPN.
Frepa
@Frepa La mayor parte del tiempo de CPU restante lo usa el propio wget, que es el comando que uso para probar la velocidad de transferencia. Todo lo demás en la lista usa menos del 1% cada uno. Estoy usando un certificado de CA con la VPN, si esa información ayuda. ¿Quizás debería intentar hacer overclocking y ver si eso ayuda?
dbrane

Respuestas:

4

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:

A partir de 2013, se especula que algunas agencias criptológicas estatales pueden poseer la capacidad de romper RC4 incluso cuando se usan en el protocolo TLS. [3] Microsoft recomienda deshabilitar RC4 cuando sea posible. [4] [5]

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.

$ 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

Configuración de 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
fuente
1
Cualquier tipo de cifrado (ssh / vpn) provocará un uso adicional de la CPU, que probablemente sea su cuello de botella.
earthmeLon
1
Mi punto era que RC4 usa menos CPU que otros cifrados, por lo que podría ser bueno en esta situación. Pero no estoy seguro de si está de acuerdo o en desacuerdo con mi respuesta.
Blaisorblade
@earthmeLon: Actualicé mi respuesta para expresar mi punto explícitamente, porque de todos modos no estaba claro. No estoy seguro de que aborde su comentario.
Blaisorblade
Absolutamente. Aprecié mucho saber que RC4 es una buena solución con una sobrecarga mínima, debido a la implementación de SSH2. Gracias por la información: D. Lástima que no pudieras ver que te di un voto positivo, ¿eh?
earthmeLon
De hecho, solo noté más tarde que su comentario coincidió en el momento con el voto a favor. ¡Gracias!
Blaisorblade