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.
Gracias