[COFRINHO ARREBENTADO] BGP - O protocolo mais importante da INTERNET e o qual voce nunca ouviu falar
Bem vindo a mais uma edicao do COFRINHO ARREBENTADO, espalhando cents pelo chao.
Hoje: BGP - O protocolo mais importante da INTERNET - do qual voce nunca ouviu falar
Para a INTERNET funcionar, um protocolo eh essencial: o BGP - mas como eh algo utilizado quase que exclusivamente na comunicacao entre Provedores de INTERNET (ISP), quase ninguem ouve falar dele.
Para trazer um pouco de informacao sobre como a INTERNET funciona embaixo do capo - vamos falar um pouco sobre ele.
ATENCAO: Se voce for analista de infra-estrutura, nao fique chateado comigo por algumas simplificacoes ou "licencas poeticas" que utilizei no texto - o objetivo aqui era ser tecnico mas sem ficar escovando bits, lembrando que o publico eh o DEV.
Vamos espalhar alguns cents:
O QUE EH INTERNET?
A "INTERNET" nada mais eh que uma rede que conecta dispositivos não locais. Por dispositivo, você pode entender praticamente qualquer coisa que possa ser conectada em rede, transmitindo e recebendo informações, como: computadores/servidores, smartphones, equipamentos de IoT e roteadores.
Geralmente, os dispositivos "conversam" apenas localmente, ligados a um switch (cabo) ou access point (WiFi) - isso eh chamado de "rede local" (a famosa "LAN"). Imagine sua casa: todos os dispositivos conectados ao mesmo roteador (como seu celular, notebook e smart TV) formam uma LAN. Eles podem se comunicar diretamente, sem precisar da internet.
Quando o tráfego sai da LAN para circular em redes externas (a "WAN"), chamamos isso de roteamento - porque eh preciso "rotear" (criar caminhos) entre sua LAN e as redes externas. Por exemplo, quando você acessa um site como o Google, seu dispositivo está se comunicando com servidores fora da sua LAN, ou seja, na WAN.
Deste modo, um roteador eh um equipamento especial que permite "rotear" (encaminhar) o trafego de uma rede para outra - sem o roteador no meio estas redes nao teriam como conversar e trocar dados.
Resumindo: a INTERNET eh uma gigantesca WAN - ou seja, uma rede externa (fora da sua rede local, como a da sua casa ou escritorio).
Importante:
- LAN eh sua rede local (casa, escritório, etc.).
- WAN eh uma rede externa (toda rede fora da sua LAN).
- A INTERNET eh uma WAN (mas nem toda WAN eh a INTERNET).
Outro detalhe: WAN também pode ser, por exemplo, um escritório externo ligado via VPN. Mas em roteadores domésticos, eh comum o termo WAN ser usado para indicar a porta onde o cabo do modem da operadora deve ser conectado - então, na prática, a INTERNET acaba sendo a WAN mais famosa.
COMO FUNCIONA A INTERNET?
A INTERNET eh basicamente sobre saber como rotear - decidir que caminho deve ser seguido para chegar em um destino.
COMO UM DISPOSITIVO SABE SE ESTA NA LAN OU WAN?
Tudo começa com um endereço IP.
-
Todo dispositivo conectado a uma rede precisa de um endereço IP para funcionar.
- Existem dois tipos principais de IP: IPv4 e IPv6.
-
A diferença entre IPv4 e IPv6 está no tamanho do endereço e na quantidade de combinações possíveis:
- IPv4: 32 bits (exemplo: 192.168.0.1).
- Capacidade: ~4,3 bilhões de endereços.
- IPv6: 128 bits (exemplo: 2001:0db8:85a3:08d3:1319:8a2e:0370:7344).
- Capacidade: muitos! ~340 undecilioes de enderecos.
- IPv4: 32 bits (exemplo: 192.168.0.1).
-
Todo dispositivo precisa de pelo menos um IP (IPv4 ou IPv6).
- Ele pode ter ambos, ou apenas um dos dois.
OBS: Para facilitar, vamos restringir os exemplos a IPv4 daqui para frente
Curiosidade: Existem outros tipos de endereçamento de rede, como o IPX e NetBEUI/NetBIOS - mas são pouco comuns, ainda que o NetBIOS tenha sido utilizado pela Microsoft durante muito tempo.
MASCARA DE REDE: COMO SABER SE UM ENDEREÇO EH LOCAL OU EXTERNO?
Cada dispositivo tem um endereço - até aí, tudo bem.
Mas como identificar endereços locais de endereços externos?
Aqui entra a MASCARA DE REDE: grosso modo, a MASCARA "tampa" uma parte do endereco e deixa outra parte "visivel": a parte "tampada" eh o que chamamos de "rede" e parte visivel de "host" - a mascara de rede ajuda a identificar quais enderecos pertencem a mesma rede local.
Curiosidade: A máscara define quais bits do endereço IP identificam a rede e quais identificam o host dentro daquela rede, através de uma operação lógica bit a bit (AND).
Exemplo prático:
- Endereço: 192.168.0.1
- Máscara: 255.255.255.0
- Rede: 192.168.0
- Host: 1 (o último grupo eh o identificador único do dispositivo).
Dispositivos com o mesmo prefixo de rede (neste caso, 192.168.0) sabem que podem se comunicar diretamente. Qualquer outro endereço fora desse padrão eh considerado externo e será encaminhado para o roteador.
Enderecos Especiais:
- 127.0.0.1 (localhost): seu proprio dispositivo (na verdade, qualquer endereco comecando por 127)
- 169.254.x.x (APIPA): temporario, para autoconfiguracao.
Curiosidade:
Os enderecos mais usados em redes locais sao (RFC 1918):
- Comecando por 192.168.x.x (qualquer um de 192.168.0.0 ate 192.168.255.255)
- Comecando por 10.x.x.x (qualquer um de 10.0.0.0 ate 10.255.255.255)
- Comecando entre 172.16.x.x ate 172.31.x.x (qualquer um de 172.16.0.0 ate 172.31.255.255)
- Comecando por 169.254.x.x (qualquer um de 169.254.0.0 ate 169.254.255.255 - mas sao especiais, chamados de temporarios APIPA e atribuidos pelo S.O. - NAO USE MANUALMENTE !)
Estes endereços (exceto 127.0.0.1) são conhecidos como IPs PRIVADOS - não são roteáveis na INTERNET.
Máscaras Fracionadas e CIDR: Na verdade a mascara de rede eh um pouco mais complicada que isso, pois a parte que "tampa" a rede pode ser fracionada, depende dos "bits" ligados - 255 significa os 8 bits ligados (11111111) mas poderia ter uma mascara menor como 248 que tem 5 bits ligados (11111000). Mascaras de rede fracionadas sao uteis principalmente em enderecos de internet: por exemplo 255.255.255.248 eh um /29 (29 bits ligados) e geralmente utilizado para IP FIXO fornecido pela operadora. O CIDR é uma notação que indica o número de bits iniciais da máscara que identificam a rede.
Exemplos de CIDR:
- /8: 255.0.0.0
- /16: 255.255.0.0
- /24: 255.255.255.0
- /29: 255.255.255.248 (muito utilizada em IP PÚBLICO FIXO)
Curiosidades do IPv6:
- Os endereços privados do IPv6 geralmente começam por fd00 (fc00::/7 e fd00::/8) e são chamados ULA (unique local address)
- Os endereços públicos do IPv6 geralmente começam por 2xxx (2000::/3) e são chamados de Global Unicast Address
- Os endereços de autoconfiguração geralmente começam por fe80 (fe80::/10) e são o equivalente ao 169.254.x.x do IPv4 e gerados através do MAC ADDRESS da placa.
Curiosidades do MAC ADDRESS:
- Todo dispositivo tem um endereço físico, chamado MAC ADDRESS
- Eh um número hexadecimal no formato: 1a:2b:3c:4d:5e:6f
- As 6 primeiras posições indicam o fabricante: 50:46:5d:00:01:02 indica o fabricante 50:46:5d (ASUSTek COMPUTER INC.)
- Eh possível consultar o fabricante pelo MAC: https://macvendors.com
- Tabela ARP: os dispositivos e em especial os switchs possuem uma tabela relacionando IPs vs MAC ADDRESS - eh chamada de tabela ARP. Esta tabela eh necessária na montagem do tráfego local.
IP e DNS
Como vimos, todo o tráfego eh feito através de IP - mas quando você acessa um site, faz pelo nome dele - o domínio.
Quem transforma um nome (domínio) em um IP eh o DNS - uma agenda que relaciona cada nome ao IP dele.
O fluxo de uma consulta DNS a partir do navegador eh a seguinte:
-
O usuário digita um URL no navegador (ex: www.uol.com.br).
-
Verificação de Cache (Navegador e SO): O navegador verifica seu cache DNS e em seguida o cache do sistema operacional. Se o registro existir e não estiver expirado, o IP em cache é usado.
-
Verificação do Arquivo Hosts: Se o domínio estiver listado no arquivo hosts, o SO usa o endereço IP especificado.
- No windows: c:\Windows\System32\Drivers\etc\hosts
- No linux e MacOS: /etc/hosts
- O formato do hosts eh: IP nome (p.ex. 127.0.0.1 uol.com.br)
- Ajustar o HOSTS eh bastante comum durante o desenvolvimento de um site para testar o mesmo localmente ou em uma estrutura diferente da que será usada em produção
-
Consulta DoH (Se Habilitado): Se o DoH (DNS over HTTPS) estiver ativado, a consulta é enviada via HTTPS para um servidor DoH configurado, aumentando a privacidade. O DoH não é um padrão universal e sua adoção varia.
-
Consulta ao Servidor DNS Recursivo: Se todas as etapas anteriores falharem, o SO envia a consulta para um servidor DNS (ex: 8.8.8.8 do Google).
Agora que temos o IP de destino, basta saber como chegar nele.
ROTEADOR: CONECTANDO SUA REDE À INTERNET
Quando um dispositivo determina que o tráfego deve sair da LAN, ele encaminha os dados para o roteador (também chamado de gateway ou rota default). O roteador decide o próximo passo:
- Se o endereço de destino eh conhecido, ele encaminha os dados diretamente.
- Se não eh conhecido, o roteador envia o tráfego para o provedor de INTERNET (ISP).
Nesse processo, em redes IPv4, ocorre o NAT (Network Address Translation). O NAT troca o IP local (ex.: 192.168.0.x) por um IP publico (ex.: 200.123.234.150), que eh valido na INTERNET.
Com IPv6, o NAT geralmente nao eh necessario, pois os dispositivos ja possuem enderecos validos na INTERNET - mas podem ocorrer situacoes onde isso ocorre (chamado NAT66 e eh util em casos de dual wan, ou seja, quando voce tem 2 internets em modo redundante).
A INTERNET, OS IPS PÚBLICOS E O BGP
O BGP ENTRA EM CENA
Como mandar aquele trafego de dados para o outro lado do mundo ? Com rotas! E quem cuida disso na INTERNET eh o protocolo BGP (Border Gateway Protocol).
O roteadores, como o proprio nome indica, trabalham "roteando" - selecionando caminhos para poder seguir do ponto A ate o ponto B.
Cada roteador conhece bem algumas rotas (como chegar em um grupo de IPs), normalmente relacionadas a empresa a qual ele pertence ou que o administra.
Mas para ser mais eficiente eh interessante que ele conheca tambem as rotas de outros roteadores, para poder construir um "mapa" de localizacao de IPs e modo de chegar neles.
Este eh o objetivo do BGP - eh um protocolo que permite aos roteadores de borda (na fronteira) de uma rede troque dados sobre rotas com outros roteadores, e assim monte este "mapa".
O BGP eh um protocolo que faz sentido para roteadores especializados - instalados em operadoras (ISP), datacenters e semelhantes. O modem/roteador que voce tem na sua casa ou empresa nao precisa do BGP, porque ele so vai conhecer uma rota - a rota default que liga ate a operadora (p.ex. VIVO ou CLARO).
O BGP usa o conceito de AS (Autonomous System, uma entidade responsavel por um grupo de IPs PUBLICOS), peers (roteadores vizinhos para trocar dados) e atributos (dados das rotas e conexoes)
Curiosidades da INTERNET/BGP:
- Quando nasceu, a INTERNET tinha outro nome: ARPANET, criada pelo departamento de defesa dos EUA na decada de 1960, com o objetivo de interligar os centros de pesquisa e militares
- Uma das caracteristicas era ser resistente a falhas: mesmo que um ponto saisse do ar, outro caminho para comunicacao poderia ser estabelecido. Isso era necessario imaginando um cenario de guerra nuclear onde cidades inteiras poderiam ser varridas do mapa - e portanto, certos caminhos ficariam indisponiveis.
- No inicio poucas maquinas compunham a ARPANET, entao era facil manter as rotas manualmente
- Com o crescimento da rede, foi necessario criar um protocolo para automatizar este processo: primeiro o GGP e posteriormente o EGP. Mas com o avanco do TCP/IP identificou-se a necessidade de um protocolo mais robusto e moderno.
- O BGP foi "desenhado" em 1989 durante um almoco em uma conferencia da IETF por tres engenheiros. As folhas originais deste almoco foram preservadas e podem ser vistas aqui:
https://computerhistory.org/blog/the-two-napkin-protocol/ - Apesar de nao existir uma data oficial, em janeiro de 1983 a ARPANET comecou a usar o TCP/IP, e muitos consideram este o "aniversario" da INTERNET.
BGP e ASN
Os IPs públicos são controlados pelo IANA (INTERNET Assigned Numbers Authority) e distribuídos por RIRs (Regional INTERNET Registries). Alguns exemplos de RIRs:
- ARIN (América do Norte),
- RIPE NCC (Europa),
- APNIC (Ásia-Pacífico),
- LACNIC (América Latina e Caribe),
No Brasil, quem faz a distribuição eh o NIC.br, através do seu departamento Registro.br (e eh subordinado ao LACNIC). O Registro.br lida com registro de domínios, enquanto o NIC.br gerencia a distribuição de IPs e ASNs.
Se voce quer ter um IP publico "pra chamar de seu", vai precisar se tornar um AS (Autonomous System). Isso exige:
- Um ASN (Autonomous System Number), que eh um número único identificando sua rede na INTERNET,
- Um bloco de IP público.
OBS: Nem sempre precisa ter um ASN próprio. Operadoras ou provedores podem te oferecer IPs públicos e cuidar do ASN por você. Mas se quiser gerenciar suas próprias rotas, vai precisar de um ASN.
Tanto o registro de AS/ASN quanto o bloco de IP são obtidos junto ao NIC.br - existem algumas regras diferentes para Provedores de Internet e outros tipos de organização, mas não existe restrição para uma PJ se tornar um AS (o "impedimento" eh financeiro, devido às taxas e custos de links de trânsito, mas nenhum impedimento juridico aqui).
Links de Trânsito e o IX.br
Agora que você tem um ASN, como faz pra avisar pro mundo que eh responsável por um bloco de IPs públicos? Eh aí que entra o link de trânsito.
Link de trânsito eh basicamente o "cabo virtual" que conecta sua rede ao resto da INTERNET, via uma operadora. Além disso, também pode ser interessante ter um link no IX.br (INTERNET Exchange Brasileiro).
O que eh o IX.br?
- Eh um ponto de troca de tráfego, onde várias redes com ASN se conectam diretamente umas às outras.
- Reduz custos e melhora a eficiencia, pois evita que o trafego passe por intermediarios (que podem ser lentos ou caros).
- Eh como um "mercadão" onde as redes trocam pacotes entre si.
- Melhora a latência: Ao trocar pacotes diretamente, o caminho até o destino fica mais curto.
- Evita sobrecarregar links internacionais: O tráfego entre dois AS brasileiros, por exemplo, não precisa passar pelos EUA.
No Brasil, o IX.br está presente em diversas cidades (ex.: São Paulo, Rio de Janeiro, Curitiba). Em termos técnicos, eh como um rack gigante com switchs/roteadores interligando várias operadoras.
Curiosidade:
Sabia que grande parte do tráfego entre redes brasileiras passa por um IX? Por exemplo, ao assistir um vídeo numa plataforma de streaming, o conteúdo pode chegar até você via IX, diminuindo a latência.
O IX.br eh formado por vários locais no Brasil - o maior deles está em São Paulo e eh um dos maiores pontos de troca de tráfego do mundo.
https://ix.br
BGP na Prática
Com ASN e link de trânsito em mãos, chegou a hora de "anunciar" seus blocos de IP público para o mundo usando BGP.
Exemplo de configuração (simplificado):
- Seu ASN: 65000
- Seu bloco de IP público: 192.0.2.0/24
- ASN do provedor: 12345
- IP do provedor: 192.168.1.1
- Seu IP no link: 192.168.1.2
Configuração básica em um roteador BGP:
router bgp 65000
neighbor 192.168.1.1 remote-as 12345
neighbor 192.168.1.1 update-source 192.168.1.2
network 192.0.2.0 mask 255.255.255.0
no synchronization
no auto-summary
O que essa configuração faz?
- Informa ao provedor (ASN 12345) que você eh responsável pelo bloco 192.0.2.0/24.
- Define a rota entre sua rede e a do provedor.
- Estabelece uma sessão BGP com o provedor (ASN 12345) usando o IP 192.168.1.1.
Agora, qualquer roteador na INTERNET que precisar mandar dados para o seu IP público vai saber por onde passar!
BGP e as Rotas
O BGP funciona como o "GPS" da INTERNET. Ele cria tabelas de roteamento que mostram:
- Quais IPs públicos estão disponíveis.
- Quais ASNs são responsáveis por esses IPs.
- Qual o melhor caminho para chegar ao destino.
Curiosidades sobre o BGP
- Tamanho da tabela BGP: A tabela global do BGP possui atualmente mais de 900 mil rotas! Cada uma dessas rotas representa um bloco de IP anunciado por algum ASN no mundo.
- Rotas otimizadas: O BGP não escolhe aleatoriamente por onde enviar o tráfego. Ele usa critérios como o menor número de saltos entre ASNs ou políticas configuradas pelos operadores.
- Manipulação de Rotas: Provedores podem manipular rotas para melhorar desempenho ou reduzir custos. Por exemplo, eles podem preferir rotas via IX.br para tráfego nacional e via trânsito internacional para tráfego fora do país.
- Incidentes famosos: Um erro de configuracao no BGP pode causar caos. Em 2008, o Paquistao tentou bloquear o YouTube localmente, mas acabou "derrubando" a plataforma em varios paises ao anunciar rotas erradas.
- Looking Glass: Eh uma ferramenta que permite verificar as rotas disponíveis de um roteador em tempo real.
Exemplo de Looking Glass públicos: https://wiki.brasilpeeringforum.org/w/Looking_Glass
BGP eh poderoso, mas com grande poder vem grande responsabilidade. Uma configuração errada pode causar caos na INTERNET!
OBS: Causar tanto estrago hoje em dia nao eh tao facil - existe uma analise e filtragem mais eficiente nos anuncios de rotas, mas ainda eh possivel.
BGP e Segurança
Infelizmente, o BGP não eh à prova de falhas. Sem autenticação padrão, ASNs maliciosos podem anunciar rotas falsas. Isso já causou incidentes como:
- Roubo de tráfego (BGP hijacking),
- Interrupções em larga escala.
Para mitigar isso, soluções como RPKI (Resource Public Key Infrastructure) estão sendo adotadas para validar os anúncios BGP.
Conclusao
A "INTERNET" nada mais eh que uma rede que conecta dispositivos não locais.
Por dispositivo, você pode entender praticamente qualquer coisa que possa ser conectada em rede, transmitindo e recebendo informações, como: computadores/servidores, smartphones, equipamentos de IoT e roteadores.
Um roteador eh um equipamento especial que permite "rotear" (encaminhar) o trafego de uma rede para outra - sem o roteador no meio estas redes nao teriam como conversar e trocar dados.
Como a INTERNET eh imensa, com milhares de IPs e roteadores distribuidos ao redor do mundo, para poder levar o trafego de um ponto a outro, eh necessario uma forma de conhecer (mapear) estas rotas (estes caminhos).
O BGP entra neste processo, sendo um protocolo de troca de informacoes de rotas entre roteadores.
De um modo geral, roteadores e modens residenciais ou comerciais nao lidam diretamente com o BGP - apenas mandam o trafego para rota default (a operadora) e ponto.
Mas quando chega da operadora que possui dezenas de links e conexoes com diversos parceiros - ai eh necessario organizar as rotas e os caminhos que o trafego pode seguir.
Isso eh especialmente importante em locais de troca de trafego (como o IX.br), para diminuir a latencia e custos deste trafego.
Para o funcionamento do BGP, temos a figura do AS (Autonomous System) que eh uma entidade (por entidade entenda-se operadora, datacenter ou ate uma empresa PJ comum) responsavel por um grupo de IPs PUBLICOS, alem de peers (roteadores vizinhos) e atributos (dados extras sobre os roteadores e rotas).
Este cadastro de AS eh mundial (IANA/RIR), mas realizado no Brasil junto ao registro.br, assim como a "compra" de IPs PUBLICOS.