
Estoy intentando enviar un archivo desde un host a través de una puerta de enlace con una MTU de 552, usando scp. Espero que la conexión se detenga ya que ssh debería enviar paquetes con el indicador de bits DF configurado y la MTU actual es demasiado pequeña. En cambio, los paquetes se fragmentan y el rendimiento simplemente se ralentiza. Visto desde el volcado tcp del host, el indicador DF no está configurado.
¿Por qué sucede esto? ¿Me estoy perdiendo de algo?
Estoy usando Debian 20 si es útil, pero este comportamiento ocurre con otras distribuciones.
Respuesta1
Normalmente, el kernel de Linux prefiere utilizar el descubrimiento de MTU de ruta para descubrir la MTU del host y, por lo tanto, establecerá el indicador DF en los paquetes IPv4. Sin embargo, en su caso, la MTU es de 552 octetos. IPv4 requiere que “los hosts deben estar preparados para aceptar datagramas de hasta 576 octetos (ya sea que lleguen completos o en fragmentos)”. Esto se debe a que los paquetes muy pequeños son ineficientes.
Como consecuencia, casi todos los programas que utilizan IPv4 pueden asumir con seguridad que un paquete de hasta 576 octetos (incluidos los encabezados) se puede transmitir y manejar de forma segura independientemente de la MTU real. Esto es esencial para protocolos como DNS que esperan enviar datagramas UDP y no quieren que se eliminen solo porque alguien usó hardware extraño con una MTU pequeña.
Dado que su MTU está por debajo del umbral mínimo, el descubrimiento de MTU de ruta no siempre funcionará y algunos paquetes terminarán necesitando ser fragmentados. La alternativa es que estas conexiones simplemente no funcionarían en muchos casos, lo que sería significativamente menos deseable y irritaría a muchas personas, por lo que ese no es el comportamiento implementado.
Tenga en cuenta que su MTU también está por debajo del umbral para IPv6, que es 1280, y este enlace no funcionará en absoluto para IPv6.
Respuesta2
te estas encontrando Descubrimiento de MTU de ruta (PMTUD).
Los paquetes TCP tienen el indicador DF configurado, lo que debería causar que se devuelva un paquete "Se necesita fragmentación ICMP" si un enrutador intermedio tuvo que descartar un paquete porque era demasiado grande. Luego, el remitente reducirá su estimación de la MTU de ruta de la conexión (Unidad de transmisión máxima) y reenviará en segmentos más pequeños.
Si no se configura DF, el remitente nunca sabría que está enviando segmentos demasiado grandes.
El único efecto en su caso de configurar DF es que el remitente reduzca el tamaño de los paquetes que envía. Esto no impide que la transmisión se realice correctamente con una MTU más pequeña.