Estamos ejecutando una VPN OpenVPN sobre un enlace satelital BGAN donde los tiempos de ping son de aproximadamente 3 segundos. Lo usamos en una configuración tun y estamos ejecutando en Linux (CentOS). Principalmente se enviará un correo electrónico a través del enlace, pero tan pronto como el correo contenga archivos adjuntos grandes, la VPN parece detenerse.
El "Puedo hacer ping a través del túnel, pero cualquier trabajo real hace que se bloquee. ¿Es este un problema de MTU?" La pregunta en las preguntas frecuentes de OpenVPN parece describir exactamente mi problema, pero usar mssfix
y fragment
todavía no parece hacer mucho para mejorar la situación.
Mi prueba principal es copiar un archivo de 2 MB a través de la VPN con scp . Copiará aproximadamente 192kbytes, y luego informará un estado - estancado - . Si espero un par de segundos, comenzará a copiarse nuevamente y luego se detendrá nuevamente después de otro par de kbytes.
Este bloqueo se produce independientemente de si configuré las opciones fragment
o mssfix
en mi configuración de OpenVPN (aunque la configuración fragment 1000
pareció reducir el bloqueo, pero no lo eliminó). OpenVPN mtu-test
informó 1542 como el tamaño de MTU.
He buscado en Internet más consejos sobre cómo y cuándo usar mssfix
y fragment
, pero solo encuentro páginas que dicen lo mismo que las Preguntas frecuentes, y no dan detalles sobre cómo y cuándo usar qué parámetros.
Mi pregunta entonces es:
- ¿Cuándo uso
mssfix
yfragment
? - ¿Utilizo
mssfix
yfragment
en combinación? - Si
mssfix
yfragment
son la solución, lo que son lostun-mtu
,link-mtu
ymtu-disc
parámetros para?
Además, he estado usando la herramienta iperf para medir el ancho de banda. Sin la VPN, mide constantemente en el orden de 210Kbits / seg.
Cuando se usa iperf sobre la VPN ( $ iperf -c remoteserver -t60 -i5
), comenzaría a 10Kbits / seg, luego subiría constantemente hasta que reportara 1.2Mbits / seg, y luego parecería detenerse, donde informa 0kbits / seg por varias iteraciones (I piensa que los 1.2Mbits / seg pueden deberse a algún búfer de OpenVPN, etc.)
¿Es iperf la mejor forma de medir el ancho de banda?
Cualquier ayuda con esta situación será muy apreciada.
Respuestas:
1542 como una MTU? Nunca he oído hablar de eso para un enlace WAN. Por lo general, MTU es la carga útil máxima, el tamaño del paquete ip menos el encabezado para IP (20 bytes) e ICMP (8 bytes). Eso significa MTU = 1500 para una LAN Ethernet tradicional. Además, la mayoría de las VPN introducen una sobrecarga para su encapsulación de paquetes. Una VPN MTU típica es 1400.
En las redes modernas, es difícil concluir cuál será la MTU en cualquier momento, ya que las rutas de entrada y salida pueden ser diferentes, y también pueden cambiar debido al enrutamiento automático de la ruta. Para una red como esta, puede ser más efectivo establecer la MTU baja en sus hosts que están a ambos lados del enlace VPN, como 576.
MSS (tamaño máximo de segmento) es MTU menos los encabezados IP + TCP (40 bytes). Esto normalmente es negociado por la pila de red, y generalmente no tiene los mismos problemas de negociación que MTU, a menos que MTU esté equivocado. (La negociación de MTU generalmente se ve afectada por ICMP bloqueado o enrutadores de agujeros negros).
Lo primero que haría es hacer una captura de paquetes de red en el extremo de envío y ordenar la pantalla por tamaño de trama (es posible que deba agregar esta columna en Wireshark). Debe verificar que no está enviando ningún marco que sea de gran tamaño, lo que esperaría que fueran. No es inusual que las tarjetas de red modernas envíen marcos de gran tamaño si se habilitan opciones como Descarga de envío grande o Marcos jumbo. He visto más de 30,000 marcos de bytes cuando estas opciones están habilitadas.
fuente
Solo por curiosidad, ¿ha intentado reducir la MTU de la interfaz de red? Quizás el enlace satelital arruina mal la fragmentación. Como una nota contra intuitiva, es posible que desee probar openvpn sobre TCP para cambiar. Sé que debería disminuir el rendimiento, pero si no tienes control sobre la fragmentación a lo largo de la línea, podría ayudarte.
fuente
Cuando use TCP, aumente el tamaño de la ventana de TCP; esto ayudará con el "número de paquetes en el aire".
Ha pasado un tiempo desde que tuve que jugar con estas cosas, pero aquí hay un enlace que Google encontró para mí.
Después de volver a leer su pregunta, veo que está ejecutando BGAN. Le echaría un buen vistazo a esto (o simplemente busque en Google: "BGAN spoofing").
En cuanto a la medición del ancho de banda, he encontrado que iperf es bastante decente siempre que use tamaños de paquete razonables.
fuente
Creo que podrías estar ladrando al árbol equivocado. Cada vez que he tenido problemas de MTU incorrectos, el tráfico se detuvo mucho antes de 192 KB. Creo que está más relacionado con algunos en la ventana de "paquetes en vuelo", ya sea la ventana TCP, o tal vez algunos buffers en el enlace ascendente del satélite.
Definitivamente haga algunas capturas de paquetes largas (tanto 'dentro' como 'fuera' de la VPN) y vea si está obteniendo todos los
ACK
'sfuente