Cuando hago ping en un sitio remoto con el bit DF configurado y un tamaño de paquete que es demasiado grande para mi enrutador, el primer mensaje ICMP "fragmentación requerida" se envía desde el enrutador. Después de eso, el mensaje proviene de mi localhost.
Netstat -rC (en Linux) me permite ver el caché de la tabla de enrutamiento, pero
1) Parece mostrar MTU en una columna llamada MSS (que esperaría que fuera el TCP MSS más bajo del enlace)
2) Siempre muestra el valor como 1500
Mi localhost debe estar almacenando en caché la PMTU en algún lugar para que pueda generar el mensaje de fragmentación requerido. ¿Pero cómo veo eso?
Aquí hay un ejemplo en mi máquina (-n en netstat inhibe las búsquedas inversas de DNS):
[root@vbcentos ~]# ping -c 4 -M do -s 1431 212.58.244.69
PING 212.58.244.69 (212.58.244.69) 1431(1459) bytes of data.
From 217.155.134.6 icmp_seq=1 Frag needed and DF set (mtu = 1458)
From 217.155.134.4 icmp_seq=2 Frag needed and DF set (mtu = 1458)
From 217.155.134.4 icmp_seq=2 Frag needed and DF set (mtu = 1458)
From 217.155.134.4 icmp_seq=2 Frag needed and DF set (mtu = 1458)
--- 212.58.244.69 ping statistics ---
1 packets transmitted, 0 received, +4 errors, 100% packet loss, time 1002ms
[root@vbcentos ~]# netstat -rCn
Kernel IP routing cache
Source Destination Gateway Flags MSS Window irtt Iface
217.155.134.3 217.155.134.4 217.155.134.4 il 0 0 0 lo
217.155.134.4 212.58.244.69 217.155.134.6 1500 0 0 eth0
217.155.134.4 217.155.134.4 217.155.134.4 l 16436 0 0 lo
217.155.134.3 217.155.134.255 217.155.134.255 ibl 0 0 0 lo
217.155.134.4 212.58.244.69 217.155.134.6 1500 0 0 eth0
217.155.134.6 217.155.134.4 217.155.134.4 il 0 0 0 lo
212.58.244.69 217.155.134.4 217.155.134.4 l 0 0 0 lo
[root@vbcentos ~]#
EDITAR: Según la sugerencia:
ip route get to 212.58.244.69
da
212.58.244.69 via 217.155.134.6 dev eth1 src 217.155.134.4
cache mtu 1500 advmss 1460 hoplimit 64
Lo que también parece incorrecto ya que el MSS es solo 40 menos que el mtu, que es la interfaz mtu en lugar de la PMTU
fuente
netstat -rCn
no devuelve nada, perowatch ip route get to $HOST
muestra lo que sucede, incluido el caché TTL.ip route show cached
Es probable que los resultados también muestren algo, pero no.Respuestas:
Tal vez
fuente
En Windows, use el comando netsh para ver el "caché de destino" que contiene esta información. Por ejemplo (suponiendo IPv4):
fuente
MSS debe ser 40 bytes menos que su MTU (no incluye encabezados de bytes IPv4 (20 bytes) y tcp (20)). Entonces eso es correcto.
El enrutador envía el mensaje de fragmentación necesaria de ICMP, no su servidor.
fuente