Traceroute

Qué es Traceroute?

Traceroute es un comando para diagnóstico que permite seguir el rastro de los paquetes que vienen desde un host o punto en la red. Se obtienen además estadísticas del tiempo de ida y vuelta o la latencia de la red de esos paquetes, lo que seria una estimación de la distancia a la que están los extremos de la comunicación.

En Linux y Mac se llama traceroute y en Windows se llama tracert.

Para qué Sirve Traceroute?

Como vimos con el comando ping, el comando traceroute ayuda a los ingenieros de red a aislar los problemas.

Ping VS Traceroute

Comparación del Ping y Traceroute:

  • Ambos envían mensajes en la red para probar la conectividad.
  • Ambos dependen de otros dispositivos para enviar una respuesta.
  • Ambos tienen un amplio apoyo en muchos sistemas operativos diferentes.
  • Ambos pueden utilizar un nombre de host o una dirección IP para identificar el destino.
  • En los enrutadores, ambos tienen una versión estándar y otra versión extendida, lo que permite probar mejor la ruta inversa.

Las mayores diferencias entre ellos es que traceroute ofrece salidas del comando con resultados más detallados y a traceroute le lleva mayor tiempo y esfuerzo extra para construir esa salida.

Imagina que aparece un problema en la red y haciendo la prueba con el comando ping falla. ¿Dónde está el problema?, ¿Dónde debería el ingeniero mirar más de cerca? Aunque el comando ping puede ser útil aislando la fuente del problema, el comando traceroute puede ser una mejor opción.

El comando traceroute ayuda sistemáticamente a señalar problemas de enrutamiento, mostrando cuán lejos un paquete circula por una red IP antes de ser descartado.

Traceroute para Diagnosticar Fallas en Cisco

El comando traceroute identifica los enrutadores en el camino desde el host de origen hasta el host de destino.

Específicamente, enumera la dirección IP del siguiente salto de cada enrutador que estaría en cada una de las rutas individuales.

Por ejemplo, un comando traceroute 172.16.2.101 en el host A en la siguiente figura identificaría una dirección IP en el enrutador R1, otra en el router R2, y luego el host B, como se muestra en la figura.

[IMG]

El siguiente es un ejemplo de la salida del comando tomada desde el host A:

$ traceroute 172.16.2.101
traceroute to 172.16.2.101, 64 hops max, 52 byte packets
 1 172.16.1.1 (172.16.1.1) 0.870 ms 0.520 ms 0.496 ms
 2 172.16.4.2 (172.16.4.2) 8.263 ms 7.518 ms 9.319 ms
 3 172.16.2.101 (172.16.2.101) 16.770 ms 9.819 ms 9.830 ms

Cómo Funciona el Comando Traceroute?

El comando traceroute recoge información generando paquetes que disparan mensajes de error de los enrutadores; estos mensajes identifican a los enrutadores, permitiendo al comando traceroute listar las direcciones IP de los enrutadores en la salida del comando.

Ese mensaje de error es el mensaje ICMP de tiempo de vida excedido (TTL Exceeded), originalmente destinado a notificar a los hosts cuando un el paquete había estado en loop en una red.

Ignoremos traceroute por un momento y enfoquemonos en el enrutamiento IP, los enrutadores de IPv4 evitan los loops o bucles en la red descartando los paquetes IP. Para hacer esto el encabezado IPv4 tiene un campo llamado Time to Live (TTL).

El host original que crea el paquete especifica un valor TTL inicial. Entonces cada enrutador que reenvía el paquete disminuye el valor del TTL en 1.

Cuando un enrutador disminuye el TTL a 0, el enrutador percibe que el paquete está en un bucle, y el enrutador descarta el paquete. El enrutador también notifica al host que envió el paquete descartado enviando un mensaje de ICMP TTL excedido.

Ahora volviendo a traceroute.

Traceroute envía mensajes con valores bajos de TTL para hacer que los enrutadores envíen un mensaje TTL de tiempo excedido.

Específicamente, un comando traceroute comienza enviando varios paquetes (normalmente tres), cada uno con el campo TTL de cabecera igual a 1. Cuando ese paquete llega al siguiente enrutador (el enrutador R1 es el enrutador por defecto del host A en el ejemplo de la figura) el enrutador disminuye el TTL a 0 y descarta el paquete. El enrutador entonces envía al host A el mensaje TTL de tiempo excedido, que identifica la dirección IP del enrutador al comando traceroute.

Primer descubrimiento de Traceroute con un TTL = 1

Para encontrar todos los enrutadores de la ruta, y finalmente confirmar que los paquetes fluyen hasta el host de destino, el comando traceroute envía un pequeño conjunto de paquetes con TTL=1, luego un pequeño conjunto con TTL=2, luego 3, 4, y así sucesivamente, hasta que el host de destino responda.

En el siguiente ejemplo vemos un ejemplo de cómo funciona el comando traceroute

Cómo funciona el comando traceroute
Segundo descubrimiento de Traceroute en el segundo grupo de mensajes con un TTL = 2

Pasos de Traceroute

La figura muestra estos cuatro pasos:

  1. El comando traceroute envía un paquete del segundo conjunto con TTL=2.
  2. El enrutador R1 procesa el paquete y decrementa el TTL a 1. R1 reenvía el paquete.
  3. El enrutador R2 procesa el paquete y decrementa el TTL a 0. R2 descarta el paquete.
  4. R2 notifica al host emisor del paquete descartado enviando un mensaje ICMP de TTL Exceeded. La dirección IP de origen del mensaje es 172.16.4.2.

Traceroute Extendido en Cisco

El comando extendido de traceroute nos brinda características como las que vimos en el capítulo anterior de Ping Extendido.

Ejemplo del comando Traceroute

R1# traceroute 172.16.2.101
Type escape sequence to abort.
Tracing the route to 172.16.2.101
VRF info: (vrf in name/id, vrf out name/id)
1 172.16.4.2 0 msec 0 msec 0 msec
2 172.16.2.101 0 msec 0 msec *

Ejemplo del comando Traceroute Extendido

R1# traceroute
Protocol [ip]:
Target IP address: 172.16.2.101
Source address: 172.16.1.1
Numeric display [n]:
Timeout in seconds [3]:
Probe count [3]:
Minimum Time to Live [1]:
Maximum Time to Live [30]:
Port Number [33434]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Type escape sequence to abort.
Tracing the route to 172.16.2.101
VRF info: (vrf in name/id, vrf out name/id)
1 172.16.4.2 0 msec 0 msec 0 msec
2 172.16.2.101 0 msec 0 msec *

NOTA Los comandos de traceroute del sistema operativo del host suelen crear solicitudes echo ICMP. El comando traceroute del sistema operativo de Cisco (IOS) crea en cambio paquetes IP con un encabezado UDP. Esta información puede parecer trivial en este punto. Sin embargo, ten en cuenta que una ACL puede filtrar el tráfico de los mensajes traceroute de un host pero no el comando traceroute del enrutador, o viceversa.

Traceroute en Windows (tracert)

C:\>tracert www.google.com

Traza a la dirección www.google.com [173.194.42.115]
sobre un máximo de 30 saltos:

  1    13 ms     16 ms     8 ms  192.168.11.1
  2     7 ms    17 ms    10 ms  200.63.27.9
  3    12 ms    4 ms    19 ms  192.168.2.181
  4     *      510 ms   318 ms  GE-RAC-AVELLANEDA_3600-AVELLANEDA_7200.skyonline.net.ar [66.61.38.49]
  5    40 ms    123 ms     8 ms  SOL-LSR_II-GE-SOL-RAC-AVELLANEDA_3600.skyonline.net.ar [66.61.38.113]
  6   277 ms   234 ms   128 ms  GE-SOL-LSR_II-LSR_I.skyonline.net.ar [200.103.0.222]
  7    30 ms    67 ms     9 ms  200.0.17.213
  8    50 ms    33 ms    25 ms  209.85.261.84
  9    34 ms    29 ms    31 ms  209.85.247.187
 10    30 ms    65 ms    12 ms  eze03s16-in-f19.1e100.net [173.194.42.115]
 11    40 ms    98 ms    23 ms  GE-SOL-LSR_II-LSR_I.skyonline.net.ar [200.103.0.222] 
Traza completa.

Traceroute en Linux

[email protected]:/# traceroute www.google.com


  traceroute to www.l.google.com (64.233.169.99), 64 hops max, 40 byte packets
  1  * * *
  2  172.16.183.1 (172.16.183.1)  23 ms  23 ms  22 ms
  3  10.127.66.229 (10.127.66.229) [MPLS: Label 1479 Exp 0]  38 ms  51 ms  38 ms
  4  cnt-00-tge1-0-0.gw.cantv.net (200.44.43.85)  38 ms  38 ms  37 ms
  5  cri-00-pos1-0-0.border.cantv.net (200.44.43.50)  51 ms  43 ms  43 ms
  6  sl-st21-mia-14-1-0.sprintlink.net (144.223.245.233)  94 ms  93 ms  93 ms
  7  sl-bb20-mia-5-0-0.sprintlink.net (144.232.9.198)  95 ms  93 ms  93 ms
  8  sl-crs1-mia-0-4-0-0.sprintlink.net (144.232.2.248)  94 ms  95 ms  95 ms
  9  sl-crs1-atl-0-0-0-1.sprintlink.net (144.232.20.48)  104 ms  104 ms  103 ms
 10  sl-st20-atl-1-0-0.sprintlink.net (144.232.18.133)  104 ms  103 ms *
 11  144.223.47.234 (144.223.47.234)  103 ms  103 ms  103 ms
 12  64.233.174.86 (64.233.174.86)  98 ms  97 ms 64.233.174.84 (64.233.174.84)  103 ms
 13  216.239.48.68 (216.239.48.68)  105 ms  104 ms  106 ms
 14  72.14.236.200 (72.14.236.200)  106 ms *  105 ms
 15  72.14.232.21 (72.14.232.21)  110 ms  109 ms  107 ms
 16  * yo-in-f99.google.com (64.233.169.99)  100 ms  99 ms

Traceroute en Mac

traceroute: Warning: www.google.com has multiple addresses; using 173.194.34.241
traceroute to www.l.google.com (173.194.34.241), 64 hops max, 52 byte packets
 1  livebox (192.168.1.1)  6.443 ms  3.020 ms  3.682 ms
 2  172.31.255.254 (172.31.255.254)  36.757 ms  33.193 ms  28.403 ms
 3  * * 62.36.218.201 (62.36.218.201)  28.510 ms
 4  85.63.217.73 (85.63.217.73)  29.722 ms  26.758 ms  31.308 ms
 5  62.36.204.185 (62.36.204.185)  30.782 ms  263.705 ms  2691.420 ms
 6  tengige0-7-0-5.madtr1.madrid.opentransit.net (193.251.255.209)  49.426 ms  32.855 ms  37.527 ms
 7  * * *
 8  81.52.179.98 (81.52.179.98)  28.724 ms  38.731 ms  27.124 ms
 9  216.239.49.230 (216.239.49.230)  30.814 ms  28.500 ms  27.119 ms
10  72.14.237.126 (72.14.237.126)  28.481 ms  53.681 ms  31.937 ms
11  mad01s09-in-f17.1e100.net (173.194.34.241)  27.614 ms  32.469 ms  29.051 ms

Deja un comentario