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 routeres, 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 routeres 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 router 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 router 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 routeres; estos mensajes identifican a los routeres, permitiendo al comando traceroute listar las direcciones IP de los routeres 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 routeres 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 router que reenvía el paquete disminuye el valor del TTL en 1.
Cuando un router disminuye el TTL a 0, el router percibe que el paquete está en un bucle, y el router descarta el paquete. El router 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 routeres 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 router (el router R1 es el router por defecto del host A en el ejemplo de la figura) el router disminuye el TTL a 0 y descarta el paquete. El router entonces envía al host A el mensaje TTL de tiempo excedido, que identifica la dirección IP del router al comando traceroute.

Para encontrar todos los routeres 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

Pasos de Traceroute
La figura muestra estos cuatro pasos:
- El comando traceroute envía un paquete del segundo conjunto con TTL=2.
- El router R1 procesa el paquete y decrementa el TTL a 1. R1 reenvía el paquete.
- El router R2 procesa el paquete y decrementa el TTL a 0. R2 descarta el paquete.
- 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 router, 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
user@localhost:/# 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