- Uma página interativa que visualiza em tempo real o caminho que os pacotes do usuário percorrem pela internet até chegar ao servidor de um site
- O programa de traceroute próprio
ktr usa o valor TTL de pacotes ICMP para coletar informações de cada salto de rede
- O site funciona mesmo sem JavaScript, e o servidor reflete os resultados do traceroute no HTML em formato de streaming
- Para analisar a rota, ele usa dados de WHOIS e PeeringDB para mostrar o sistema autônomo (AS) e informações da empresa à qual cada IP pertence
- Ao combinar traceroute com a estrutura da internet baseada em BGP, ele mostra que a internet é um conjunto de redes formado por relações de peering entre empresas
A jornada percorrida pelo seu pacote
- O traceroute no topo da página mostra o caminho do pacote do computador do usuário até o servidor
- Ele passa em sequência por redes como roteadores, ISP, Amazon, NTT Global IP Network e Hetzner
- Alguns trechos aparecem como “(no response)”, o que ocorre por causa de servidores que não respondem
- Dentro da rede da Hetzner, ele passa por vários roteadores até chegar ao servidor final
- O endereço IP
213.239.252.10 aparece como core0.fra.hetzner.com por meio de uma consulta reversa de DNS
Behind the Scenes
- Quando o site recebe a solicitação do usuário, ele executa um traceroute no servidor e envia o resultado em tempo real
- O traceroute usa o protocolo ICMP e coleta as respostas de cada salto aumentando o valor de TTL (Time To Live) em 1 a cada tentativa
- Quando o TTL chega a 0, o roteador correspondente retorna uma mensagem de erro, permitindo rastrear o caminho percorrido pelo pacote
- O
ktr transmite o resultado do traceroute em streaming enquanto consulta ao mesmo tempo as informações de IP, ASN e rede proprietária de cada salto
Frontend Fun
- Funciona mesmo sem JavaScript, e o navegador apenas o percebe como uma página carregando lentamente
- O servidor mantém a conexão HTTP aberta e insere os resultados do traceroute no HTML de forma sequencial
- A cada atualização, ele implementa o efeito de atualização em tempo real inserindo blocos de CSS para esconder os resultados anteriores
Front to Back, Back to Front
- Na prática, o site executa um traceroute do servidor até o IP do usuário e exibe o resultado em ordem inversa
- Isso é um “reverse traceroute”: embora os caminhos de ida e volta não sejam totalmente idênticos, ele mostra uma rota geralmente parecida
Redes e sistemas autônomos (AS)
- A internet é uma rede de redes empresariais chamada sistemas autônomos (Autonomous System, AS)
- Cada AS tem um ASN (Autonomous System Number) exclusivo e troca tráfego com outros por meio de peering
- A internet é um conjunto de redes pertencentes a empresas, não a indivíduos, e as conexões são determinadas por contratos financeiros e procedimentos administrativos
- É possível solicitar um ASN por meio de um dos 5 Registros Regionais da Internet (RIRs)
WHOIS e PeeringDB
- Para encontrar o AS ao qual cada IP do traceroute pertence, ele usa o protocolo WHOIS e o banco de dados PeeringDB
- O WHOIS tem uma estrutura simples: após abrir uma conexão TCP e enviar uma consulta, o servidor retorna as informações
- Como cada servidor usa nomes de campos e formatos diferentes, o parser foi implementado como um simulador simples, mais próximo da forma como uma pessoa lê
- O PeeringDB fornece informações empresariais sobre cerca de um terço de todos os AS
BGP (Border Gateway Protocol)
- O BGP é o protocolo central que define a forma da internet, trocando informações de rotas entre AS
- Os border routers mantêm uma tabela de roteamento BGP, armazenando a lista de ASNs de cada rota
- Quando dois AS estabelecem peering, seus roteadores criam uma sessão BGP e trocam anúncios de rota (route advertisements)
- Entre várias rotas possíveis, os roteadores escolhem a mais curta ou a de maior preferência para encaminhar os pacotes
A história do BGP
- Os experimentos de rede iniciados na ARPANET em 1969 levaram, em 1989, ao RFC 1105 da Cisco e da IBM, marcando o surgimento do BGP v1
- Depois vieram o BGP v2 (1990) e o v4 (1994), sendo o v4 usado até hoje
- O BGP se consolidou como o protocolo padrão que determina os caminhos de interconexão entre todas as redes da internet
A relação entre traceroute e BGP
- Exemplo de rota: AS16509 → AS2914 → AS24940
- Amazon (AS16509) → NTT Global IP Network (AS2914) → Hetzner (AS24940)
- Mesmo dentro do mesmo ASN, pode haver vários saltos, tratados por protocolos de roteamento internos ou rotas fixas
- As relações de peering entre AS determinam a alcançabilidade real na internet
Recap
- O site executa um traceroute até o IP do usuário e transmite o resultado por stream HTTP
- O traceroute usa o TTL de pacotes ICMP para visualizar a rota entre roteadores
- Cada roteador pertence a um sistema autônomo (AS) e se conecta aos demais por meio do BGP
- As relações de peering determinam a alcançabilidade e a estrutura da internet
Epílogo
- O autor sentiu que faltava compreensão sobre a estrutura da internet e criou um texto interativo educacional centrado em protocolos
- Em vez de esperar por um grande projeto perfeitamente acabado, escolheu publicar algo menor, mas pronto
- O trabalho foi concluído com o incentivo da comunidade Hack Club e aproveita um programa de traceroute open source
- Com a mensagem de que “mesmo algo pequeno, se estiver concluído, é melhor”, ele espera que isso permaneça como um conteúdo web sustentável
Ainda não há comentários.