27 puntos por GN⁺ 2025-11-09 | 1 comentarios | Compartir por WhatsApp
  • Página interactiva que visualiza en tiempo real la ruta que siguen los paquetes del usuario hasta llegar al servidor del sitio web a través de Internet
  • Su programa ktr de traceroute desarrollado por cuenta propia usa el valor TTL de los paquetes ICMP para recopilar información de cada salto de red
  • El sitio web funciona incluso sin JavaScript, y el servidor refleja los resultados de traceroute en HTML en formato de transmisión
  • Para analizar la ruta, usa datos de WHOIS y PeeringDB para mostrar el sistema autónomo (AS) y la información de la empresa a la que pertenece cada IP
  • Al combinar traceroute con la estructura de Internet basada en BGP, muestra que Internet es un conjunto de redes formadas por relaciones de peering entre empresas

El viaje que recorrió tu paquete

  • El traceroute en la parte superior de la página muestra la ruta de movimiento de los paquetes desde la computadora del usuario hasta el servidor
    • Pasa secuencialmente por redes como routers, ISP, Amazon, NTT Global IP Network y Hetzner
    • Algunos tramos aparecen como “(no response)”, lo que se debe a servidores que no responden
  • Dentro de la red de Hetzner, pasa por varios routers antes de llegar al servidor final
  • La dirección IP 213.239.252.10 aparece como core0.fra.hetzner.com mediante una consulta DNS inversa

Detrás de escena

  • Cuando el sitio web recibe la solicitud del usuario, ejecuta traceroute en el servidor y transmite el resultado en tiempo real
  • traceroute usa el protocolo ICMP y recopila la respuesta de cada salto incrementando el valor TTL (Time To Live) de uno en uno
  • Cuando el TTL llega a 0, el router correspondiente devuelve un mensaje de error, lo que permite rastrear la ruta recorrida por el paquete
  • ktr transmite los resultados de traceroute y, al mismo tiempo, consulta la información de IP, ASN y red propietaria de cada salto

Diversión en el frontend

  • Funciona incluso sin JavaScript, y el navegador simplemente lo percibe como una página que carga lentamente
  • El servidor mantiene la conexión HTTP abierta e inserta secuencialmente los resultados de traceroute en el HTML
  • En cada actualización, implementa el efecto de actualización en tiempo real insertando bloques CSS para ocultar los resultados anteriores

Del front al back, del back al front

  • En realidad, se ejecuta traceroute desde el servidor hacia la IP del usuario y el resultado se muestra en orden inverso
  • Esto es un “reverse traceroute”; aunque la ruta en ambos sentidos no es exactamente igual, por lo general muestra una ruta similar

Redes y sistemas autónomos (AS)

  • Internet es una red de redes empresariales llamadas sistemas autónomos (Autonomous System, AS)
  • Cada AS tiene un ASN (Autonomous System Number) único e intercambia tráfico mediante peering con otros
  • Internet no es de individuos, sino un conjunto de redes propiedad de empresas, y las conexiones se determinan mediante contratos económicos y procedimientos administrativos
  • Se puede solicitar un ASN a través de uno de los cinco registros regionales de Internet (RIR)

WHOIS y PeeringDB

  • Para encontrar el AS al que pertenece cada IP del traceroute, usa el protocolo WHOIS y la base de datos PeeringDB
  • WHOIS tiene una estructura simple: tras establecer una conexión TCP y enviar una consulta, el servidor devuelve la información
  • Como los nombres de los campos y los formatos varían según el servidor, el parser se implementó como una especie de simulador simple, cercano a la forma en que lee una persona
  • PeeringDB proporciona información empresarial sobre aproximadamente un tercio de todos los AS

BGP (Border Gateway Protocol)

  • BGP es el protocolo clave que determina la forma de Internet, ya que intercambia información de rutas entre AS
  • Los border routers mantienen una tabla de enrutamiento BGP y almacenan la lista de ASN de cada ruta
  • Cuando dos AS hacen peering, sus routers establecen una sesión BGP e intercambian anuncios de ruta (route advertisements)
  • Entre varias rutas, el router elige la más corta o la de mayor preferencia para reenviar los paquetes

Historia de BGP

  • Los experimentos de red que comenzaron en ARPANET en 1969 llevaron en 1989 al RFC 1105 de Cisco e IBM, con la aparición de BGP v1
  • Después se publicaron BGP v2 (1990) y v4 (1994), y v4 sigue en uso hasta hoy
  • BGP se consolidó como el protocolo estándar que determina las rutas de conexión entre todas las redes de Internet

Relación entre traceroute y BGP

  • Ruta de ejemplo: AS16509 → AS2914 → AS24940
    • Amazon (AS16509) → NTT Global IP Network (AS2914) → Hetzner (AS24940)
  • Incluso dentro del mismo ASN puede haber varios saltos, que se manejan mediante protocolos de enrutamiento internos o rutas fijas
  • Las relaciones de peering entre AS determinan la alcanzabilidad real en Internet

Resumen

  • El sitio web ejecuta traceroute hacia la IP del usuario y transmite el resultado como un flujo HTTP
  • traceroute usa el TTL de los paquetes ICMP para visualizar la ruta entre routers
  • Cada router pertenece a un sistema autónomo (AS) y está interconectado mediante BGP
  • Las relaciones de peering determinan la alcanzabilidad y la estructura de Internet

Epílogo

  • El autor sintió que le faltaba comprensión sobre la estructura de Internet y creó un artículo interactivo con enfoque educativo centrado en protocolos
  • En vez de esperar un gran proyecto perfectamente pulido, eligió publicar algo pequeño pero terminado
  • Se completó gracias al apoyo de la comunidad de Hack Club y aprovecha un programa traceroute de código abierto
  • Con el mensaje de que “aunque sea pequeño, es mejor que esté terminado”, espera que permanezca como contenido web sostenible

1 comentarios

 
GN⁺ 2025-11-09
Opinión de Hacker News
  • Sigo pensando que esta función de reverse traceroute sigue siendo útil Pero en la práctica, incluso si la ruta AS es la misma, los puntos de peering casi siempre son distintos La mayoría de los AS usan hot-potato routing, así que entregan los paquetes en el punto de peering más cercano al origen del tráfico Incluso usando cold-potato, sigue habiendo asimetría. Además, cuando la longitud del AS-path es igual, la política de hot-potato puede hacer que se elija otra ruta (edición: corregida la confusión entre hot/cold)

    • He corrido traceroute y reverse traceroute varias veces, y en la mayoría de los casos la ruta AS salió parecida Eso sí, a veces traceroute mostraba más del recorrido interno del ISP En general tienes razón, y más adelante me gustaría explicar con más detalle la diferencia entre el enrutamiento hot-potato vs cold-potato De todos modos, creo que incluso solo con este resultado de reverse traceroute basta para explicar la estructura de Internet
    • Por cierto, lo que mencionas justamente es hot-potato routing Es una estructura en la que cada AS entrega los paquetes lo antes posible Puede parecer injusto, pero es una decisión razonable porque no conoce el detalle de la ruta interna del AS de destino Por ejemplo, si tienes red en Berlín y Hamburgo, y la otra parte también tiene peering en ambas ciudades, entregar en el punto más cercano evita idas y vueltas innecesarias
  • Me pareció interesante la explicación de por qué traceroute se carga una línea a la vez de abajo hacia arriba Que lo hagan insertando bloques CSS periódicamente para ocultar el estado anterior, sin JavaScript, es muy hacker y creativo

    • Incluso sin JavaScript se puede implementar streaming de HTML fuera de orden usando Declarative Shadow DOM Los ejemplos y la explicación están bien resumidos en esta entrada de blog
  • La frase “This is not my beautiful website.” me pareció ingeniosa

    • La respuesta “This is not my beautiful home-page.” también tuvo mucho estilo
  • Por si todavía no lo has probado

    tracepath -m60 bad.horse
    

    y luego

    openssl s_client -connect signed.bad.horse:443 -servername signed.bad.horse
    

    te recomiendo ejecutarlos

    • ¡Está genial! Parece un homenaje geeky a Dr. Horrible El resultado de tracepath empieza en “bad.horse” y sigue con “he.rides.across.the.nation”, etc., así que es realmente divertido
    • También está esto
      ssh funky.nondeterministic.computer
      
    • Y también vale la pena probar
      ssh watch.ascii.theater
      
  • Dicen que este proyecto volvió a subir a la página principal de Hacker News, y por eso el servidor se puso lento un rato Lexi avisó que “volvieran a revisar mañana”

    • Ahora parece que ya está mejor. Agregaron un poco más de concurrencia, y la lección aprendida fue que la próxima vez usarán Tokio
  • Al ver el título pensé que iba a sonar una canción de Talking Heads

    • Automáticamente se me vino a la cabeza la letra “letting the days go by”
    • Si miras el HTML, quizá haya algo escondido :)
  • El enlace a “Once in a Lifetime” se me quedó grabado en el cerebro Con solo ver el título, esa línea de bajo empieza a sonar sola

    • A mí también me dio de inmediato una crisis existencial
  • Lo probé yo mismo y descubrí que mi conexión principal a Internet se cayó y cambió a la línea de respaldo Hoy hubo un apagón, y gracias a esta herramienta me di cuenta. Fue bastante útil

    • Realmente encontraste una ruta menos transitada
  • A veces la información superior de “You are here” sale así

    Host               ASN   Network         Region
    123-456-789-101.static.kc.net.uk AS19905 UltraDDoS Protect    Global
    

    Pero otras veces sale

    Host               ASN   Network         Region
    123-456-789-101.static.kc.net.uk AS12390 Kingston Communications Europe
    

    alternando entre ambas. Me da curiosidad por qué, siendo la misma IP, el ASN cambia en proporción 50:50. Parece que cambiara al azar

  • Al principio la página funcionaba bien sin JavaScript, pero después el HTML reemplazado terminó codificado como texto

    
     #strYQt8 { display: none; }
    
    

    Salía así y se rompía Subí un PR con la corrección a GitHub