0 votos

Cómo activar correctamente el descubrimiento de mtu de ruta

He activado el atributo pmtu en mi máquina.

sysctl net.inet.tcp.path_mtu_discovery
net.inet.tcp.path_mtu_discovery: 1

entonces he utilizado /usr/bin/nscurl para enviar mensajes a una pasarela remota con mtu=1000, con la esperanza de que active el pmtu automáticamente. Sin embargo, sigo siendo testigo de la fragmentación de paquetes.

He utilizado nscurl desde En el foro de Apple https://developer.apple.com/forums/thread/710848 parece que si utilizo NSURLSession marco, también realizar pmtu descubrir detrás de las escenas.

Mi pregunta es cómo puedo leer la caché pmtu y comprobar cuál es el mtu seleccionado para una ruta específica (he intentado netstat -rn pero falta allí mtu)

Además, ¿cuál es la mejor manera de activar el descubrimiento pmtu?

ACTUALIZACIÓN : después de analizar el tráfico nscurl, parece que el pmtu se está calculando en cada mensaje que pasa. Sin embargo, una vez que la conexión se cierra, I pmtu se elimina y se está volviendo a calcular todo de nuevo.

el siguiente volcado de paquetes muestra que, en primer lugar, se intentan paquetes de tamaño mtu (tamaño 1500) con el bit DF activado. el resto del mensaje se envía con paquetes de tamaño ~1000 bytes (he establecido deliberadamente el mtu de uno de los saltos en 1000). El problema es que si intento nscurl de nuevo, se vuelve a calcular el mtu todo de nuevo. Quiero ser capaz de leer el pmtu calculado y utilizarlo en otro lugar.

enter image description here

Gracias

1voto

Jose Chavez Puntos 645

Iniciar una nueva conexión y enviar paquetes mayores que MTU debería ser suficiente. También deberías poder forzarlo bajando y subiendo la interfaz.

Tenga en cuenta que el descubrimiento de MTU de ruta no estará activo en conexiones IPv6, y no está activo cuando ha bloqueado la MTU en la ruta. También existe un mecanismo de detección de agujeros negros que puede desactivar el descubrimiento de MTU de ruta.

No has detallado cómo estás comprobando que sigues viendo fragmentación de paquetes. Yo recomendaría el uso de una herramienta como Wireshark (o tcpdump) para grabar los paquetes de red desde el momento de subir la interfaz sobre el establecimiento de la conexión y la transferencia de datos para un poco.

A continuación, revisa la traza grabada en Wireshark para comprobar el tamaño de los paquetes y la bandera MF (comprueba si los paquetes están realmente fragmentados y no sólo son pequeños).

Tenga en cuenta que los paquetes de descubrimiento de MTU de ruta tendrán el indicador DF activado.

En cuanto a cómo comprobar la "caché pmtu" (que en realidad no es una caché como tal), puedes hacerlo ejecutando este comando:

lsof -i -n -Tf

Mostrará las conexiones de red y enumerará los valores MSS (tamaño máximo de segmento). Este es el valor que podría haberse encontrado mediante el descubrimiento de MTU de ruta.

ACTUALIZACIÓN:

Ha editado su pregunta, donde pregunta por qué el valor de MTU encontrado a través del descubrimiento de MTU de ruta no se reutiliza para otras conexiones. Eso anularía el propósito del descubrimiento de MTU de ruta - la suposición principal es que diferentes rutas pueden tener diferentes MTUs. Así que diferentes conexiones podrían tomar diferentes caminos, y por lo tanto deben tener su propio cálculo de MTU por separado.

Tenga en cuenta que el proceso de descubrimiento de MTU de ruta debe tener en cuenta las MTU declaradas de la interfaz de red implicada.

Si quieres establecer una MTU fija para una ruta específica, puedes hacerlo en la tabla de rutas.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X