traceroute - cartografiando el viaje de los paquetes
Si ping es la herramienta que verifica "si el destino es alcanzable", traceroute es la herramienta que visualiza "qué camino toman los datos para llegar". Cuando accedes a IP Check-san, los paquetes pasan por decenas de dispositivos de red: desde tu router doméstico, pasando por el ISP, un IX (Internet Exchange Point), cables submarinos y centros de datos. traceroute muestra la dirección IP y la latencia de cada salto (punto de retransmisión) a lo largo de esa ruta.
El truco del TTL - un mecanismo ingenioso
El principio de funcionamiento de traceroute aprovecha hábilmente el campo TTL (Time To Live) de los paquetes IP.
El TTL es un contador que se reduce en 1 cada vez que un paquete atraviesa un router. Cuando el TTL llega a 0, ese router descarta el paquete y envía un mensaje ICMP Time Exceeded al origen. Este mecanismo fue diseñado para evitar que los paquetes circulen indefinidamente por la red.
traceroute aprovecha este mecanismo de forma inversa:
- Envía un paquete con TTL=1 → el TTL llega a 0 en el primer router, que devuelve un ICMP Time Exceeded → se descubre la dirección IP y la latencia del primer salto
- Envía un paquete con TTL=2 → el TTL llega a 0 en el segundo router → se descubre el segundo salto
- Incrementa el TTL a 3, 4, 5... sucesivamente hasta alcanzar el destino final
Esta simple idea de "incrementar el TTL de uno en uno" es lo que hace posible la visualización de las rutas de red.
traceroute y tracert - diferencias entre Unix y Windows
En Unix/Linux/macOS el comando se llama traceroute, mientras que en Windows se llama tracert. No solo difieren en el nombre, sino también en su comportamiento predeterminado:
- traceroute en Unix: utiliza paquetes UDP por defecto. Envía paquetes incrementando el puerto de destino desde 33434, y cuando alcanza el destino recibe un ICMP Port Unreachable
- tracert en Windows: utiliza ICMP Echo Request por defecto. Al usar el mismo protocolo que ping, es más susceptible a los firewalls que bloquean ICMP
El traceroute más extendido en Linux (la versión de Dmitry Butskoy) puede cambiar al modo ICMP con la opción -I o al modo TCP con -T. Los traceroute derivados de BSD, como el de macOS, no tienen -T: en su lugar se indica el protocolo, como en -P tcp (-I es un alias de -P icmp). En entornos donde los firewalls bloquean UDP o ICMP, el modo TCP (puertos 80 o 443) resulta efectivo.
Interpretando la salida de traceroute
Una salida típica de traceroute tiene este aspecto:
1 192.168.1.1 1.2 ms 0.9 ms 1.1 ms2 10.0.0.1 5.3 ms 4.8 ms 5.1 ms3 203.0.113.1 12.4 ms 11.9 ms 12.2 ms4 * * *5 198.51.100.1 85.3 ms 84.7 ms 85.1 ms6 192.0.2.1 90.2 ms 89.8 ms 90.5 ms
- Salto 1: tu router doméstico. La latencia es de aproximadamente 1 ms, comunicación dentro de la red local
- Saltos 2-3: routers dentro de la red del ISP. La latencia aumenta gradualmente
- Salto 4 "* * *": este salto no devolvió respuesta. Lo más habitual es que el router esté configurado para no devolver ICMP Time Exceeded, pero también puede deberse a la limitación de tasa de ICMP o a un filtro en el sentido de vuelta. Si los saltos posteriores siguen apareciendo, los paquetes en sí están pasando
- Salto 5: la latencia aumenta drásticamente (de 12 ms a 85 ms). Es muy probable que aquí se esté cruzando un cable submarino
- Salto 6: el servidor de destino
Se realizan 3 mediciones en cada salto porque la latencia de red fluctúa, y múltiples mediciones aumentan la fiabilidad.
La "geografía de internet" visible con traceroute
A partir de los resultados de traceroute, se puede deducir la ruta física de los paquetes:
- Aumentos bruscos de latencia: en los saltos que cruzan cables submarinos intercontinentales, la latencia aumenta en decenas de milisegundos. La señal viaja por la fibra óptica a unos 200.000 km/s (unos dos tercios de la velocidad de la luz en el vacío), así que cada 1.000 km de trayecto de ida suman unos 5 ms, y unos 10 ms en el tiempo de ida y vuelta (RTT) que muestra traceroute. Los cables submarinos rodean bastante más que la distancia de círculo máximo, de modo que los valores medidos siempre superan ese mínimo
- Nombres geográficos en los hostnames: muchos ISP y operadores incluyen nombres de ciudades o códigos de aeropuerto en los hostnames de sus routers. Abreviaturas como
nrt/hnd(Tokio),lax(Los Ángeles) oams(Ámsterdam) permiten deducir la ruta geográfica de los paquetes. Aun así, la convención de nombres es una costumbre propia de cada operador y un topónimo antiguo puede quedarse tras trasladar el equipo, por lo que conviene tomarlos como pistas - Números AS: el traceroute de Linux usa
-Ay las versiones derivadas de BSD, como la de macOS, usan-apara mostrar el número AS (Autonomous System) de cada salto. A partir del número AS se puede saber por qué red de qué organización pasan los paquetes
Limitaciones y consideraciones de traceroute
- Rutas asimétricas: los paquetes de ida y vuelta pueden tomar caminos diferentes. traceroute solo muestra la ruta de ida
- Túneles MPLS: si el ISP utiliza MPLS (Multi-Protocol Label Switching), los saltos dentro del túnel pueden no ser visibles
- Balanceadores de carga: al ejecutar traceroute varias veces hacia el mismo destino, pueden aparecer rutas diferentes. Esto se debe a que los balanceadores de carga distribuyen los paquetes por diferentes caminos
- Limitación de tasa: si un router limita la tasa de envío de ICMP Time Exceeded, la latencia puede aparecer mayor de lo real
Resumen
traceroute es una herramienta excelente que utiliza el simple mecanismo del TTL para visualizar la ruta de los paquetes. Si trazas con traceroute la ruta hacia la dirección IP que verificaste en IP Check-san, podrás ver por qué ISP, qué ciudades y qué cables submarinos pasan tus paquetes. La experiencia de ver con tus propios ojos el "mapa" de internet profundizará tu comprensión de las redes.
Términos del glosario relacionados
Preguntas frecuentes
¿Cómo descubre traceroute la ruta de red?
Traceroute envía paquetes con valores de TTL (Time to Live) que aumentan de uno en uno empezando desde 1. Cada router de la ruta decrementa el TTL, y cuando llega a 0 el router devuelve un mensaje ICMP Time Exceeded que revela su identidad. Al aumentar el TTL salto a salto, traceroute mapea cada router de la ruta.
¿Un '* * *' en la salida de traceroute indica un problema?
No necesariamente. Los asteriscos significan que el router de ese salto no respondió dentro del tiempo de espera. Muchos routers están configurados para descartar o despriorizar los paquetes ICMP por motivos de seguridad o rendimiento. Si los saltos siguientes responden con normalidad, la ruta de red probablemente esté bien.
¿Cuál es la diferencia entre traceroute y tracert?
traceroute es el comando de Unix/Linux/macOS que usa paquetes UDP de forma predeterminada, mientras que tracert es el comando de Windows que usa paquetes ICMP Echo Request. Ambos persiguen el mismo objetivo de mapear rutas de red, pero usan protocolos distintos, lo que puede producir resultados ligeramente diferentes cuando los cortafuegos tratan UDP e ICMP de forma distinta.