¿Cómo veo PMTU en caché bajo Linux (y todos los demás sistemas operativos)


13

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


1
En Fedora 22, netstat -rCnno devuelve nada, pero watch ip route get to $HOSTmuestra lo que sucede, incluido el caché TTL. ip route show cachedEs probable que los resultados también muestren algo, pero no.
David Tonhofer

Respuestas:


7

Tal vez

ip route get to 212.58.244.69

Pregunta editada para agregar esto.
Neik

1

En Windows, use el comando netsh para ver el "caché de destino" que contiene esta información. Por ejemplo (suponiendo IPv4):

netsh interface ipv4 show destinationcache

1

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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.