Interpretación de TTL en resultados de ping


11

Trabajo para un proveedor de servicios de VoIP y estoy trabajando en un problema con un cliente que tiene una conexión a Internet por cable que me está volviendo loco.

Tiene un solo bloque, que simularemos es 70.141.15.0/29, con la puerta de enlace en .1 y enrutadores en .2 y .3. Ambos enrutadores están conectados a su módem de cable que, según nuestro conocimiento, está configurado para lo que los proveedores de cable imaginen que sea el "modo puente".

Estoy haciendo ping a ambos enrutadores simultáneamente desde la misma caja, que es un sistema Linux conectado a fibra desde (probablemente) Nivel (3). No hace falta decir que nadie en el planeta sabe cuántos nodos hay entre aquí y allá. Pero mira los resultados del ping.

Al primer enrutador:

64 bytes from 70.141.15.2: icmp_seq=2637 ttl=47 time=45.0 ms
64 bytes from 70.141.15.2: icmp_seq=2638 ttl=47 time=39.2 ms
64 bytes from 70.141.15.2: icmp_seq=2639 ttl=47 time=37.3 ms
64 bytes from 70.141.15.2: icmp_seq=2640 ttl=47 time=46.1 ms
64 bytes from 70.141.15.2: icmp_seq=2641 ttl=47 time=45.8 ms
64 bytes from 70.141.15.2: icmp_seq=2642 ttl=47 time=46.5 ms
64 bytes from 70.141.15.2: icmp_seq=2643 ttl=47 time=40.9 ms

Del segundo:

64 bytes from 70.141.15.3: icmp_seq=631 ttl=239 time=54.7 ms
64 bytes from 70.141.15.3: icmp_seq=637 ttl=239 time=40.5 ms
64 bytes from 70.141.15.3: icmp_seq=638 ttl=239 time=40.3 ms
64 bytes from 70.141.15.3: icmp_seq=639 ttl=239 time=38.4 ms
64 bytes from 70.141.15.3: icmp_seq=640 ttl=239 time=44.9 ms
64 bytes from 70.141.15.3: icmp_seq=641 ttl=239 time=38.4 ms
64 bytes from 70.141.15.3: icmp_seq=642 ttl=239 time=38.8 ms

Echa un vistazo a los valores TTL. ¿Esto tiene sentido? Estos dispositivos están directamente adyacentes entre sí, conectados a ese módem a través de puertos de conmutador separados. ¿Cómo puede uno tener casi 200 saltos más? Al hacer ping a otros sitios, tengo la impresión de que TTL simplemente no se implementa de la manera que creo. Dudo que haya 200 saltos entre yo y 4.2.2.2, o woot.com, pero obtengo menos de 50 resultados TTL de ambos.

Uno de estos enrutadores (el que tiene el TTL más alto) es de Fortinet, mientras que el otro es un dispositivo personalizado basado en Linux. Estoy bastante seguro de que Forti tiene una pila de red doméstica, mientras que la caja de Linux usa lo que viene con el tarball fuente que los desarrolladores de hardware descargaron. ¿Es probable que el eco ICMP se implemente de forma extraña en uno de estos y envíe deliberadamente todas las respuestas con un TTL de 50?

También noto que uno de los únicos sitios que puedo encontrar que responde con un TTL de aspecto sensato es slashdot, y puedo imaginar que sus servidores y enrutadores podrían ser un poco menos "lo que encontramos en el garaje" que el sitio web promedio, que tipo de me hace sentir que podría estar en el camino correcto con esa última suposición.

En resumen: ¿TTL en ping significa algo confiable?


3
Leí en alguna parte que Windows XP y Windows 7 establecieron TTL como 128 y para los sistemas Linux generalmente tienen TTL 64. No es perfecto pero es muy útil saberlo a veces.
Sean

Respuestas:


22

No hace falta decir que nadie en el planeta sabe cuántos nodos hay entre aquí y allá.

Sé cuantos nodos. Hay exactamente 16. La razón por la que obtiene diferentes respuestas es porque diferentes sistemas operativos utilizan diferentes valores iniciales para TTL. Algunos dispositivos usan 255, mientras que otros usan 63. Por lo tanto, uno de los dispositivos que está haciendo ping envía la respuesta con el TTL establecido en 255. Para cuando vuelve a usted, ha disminuido a 239. Eso es 16 saltos.

El otro dispositivo que hace ping establece el TTL en 63. Entonces, cuando llega a usted, el valor es 47.

255-239 = 63-47 = 16.

Si desea estar seguro sobre la cantidad de saltos entre usted y el objetivo, use traceroute.


¡Gracias! Estaba asumiendo que ahora me doy cuenta de que no tiene fundamento (que el paquete de devolución TTL fue dictado de alguna manera por el paquete de solicitud TTL). Una pregunta más: ¿son 255 y 63 valores basados ​​en estándares o arbitrarios? Es decir, ¿puedo asumir con seguridad que cualquier TTL de tres dígitos comenzó como 255, etc.?
Daniel Thompson

3
No creo que haya "estándares" sobre esto. OTOH, nunca he visto un sistema que no fuera uno u otro.
Ron Trunk

63 suena como un valor poco común para un TTL inicial.
JeanPierre

2

Los valores TTL están determinados por la máquina remota. Por ejemplo, si hace ping a una máquina Linux, su valor TTL de origen es 64. Dependiendo de cuántas redes cruza para comunicarse con usted, el TTL se deduce por un valor de 1. Entonces, si hace ping 8.8.8.8, que es Busca en Google el servidor de nombres, tiene un valor de origen de 128. Para cuando te responda, puede tener un valor de 121 (lo tiene para mí). Eso significa que cruzó 7 redes para llegar a mí y era una máquina de Windows.

Valores TTL comunes

  • Enrutador - 255
  • Windows - 128
  • Linux-Mac - 64

0

128-Windows, 64-la mayoría de Linux y enrutadores, 60-muy raros, 32-Windows 95.

Y nadie usa 63, probablemente esté golpeando a otro enrutador en la ruta de retorno.


0

pruebe "Tracert [DIRECCIÓN IP]" para ver el número total de rutas.

Si el sistema comienza a 64 TTL, entonces si TRACERTAS un dispositivo con un salto de distancia obtendrás TTL = 63.

Lo intenté y eso es lo que obtuve. Siempre me pregunto TTL ... hmm genial 😎


Esto no responde a la pregunta formulada.
Teun Vink
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.