Anycast

Anycast
Protocolo de comunicação
Visualização do roteamento anycast
PropósitoRoteamento de tráfego para o servidor mais próximo
DesenvolvedorCraig Partridge, Trevor Mendez, Walter Milliken na BBN [en]
Introdução1989
RFC1546, 2526, 4291, 4786 ...

Anycast é uma metodologia de endereçamento e roteamento de rede na qual um único endereço IP é compartilhado por dispositivos (geralmente servidores) em múltiplos locais. Os roteadores direcionam pacotes endereçados a esse destino para o local mais próximo do remetente, usando seus algoritmos de tomada de decisão normais, tipicamente o menor número de saltos de rede do BGP. O roteamento Anycast é amplamente utilizado por redes de distribuição de conteúdo (CDNs), como servidores web e servidores de nomes [en], para trazer seu conteúdo para mais perto dos usuários finais.

História

O primeiro uso documentado de roteamento anycast para balanceamento de carga topológico de serviços conectados à Internet foi em 1989;[1][2] a técnica foi documentada formalmente pela primeira vez na IETF quatro anos depois.[3] Foi aplicada pela primeira vez à infraestrutura crítica em 2001 com o anycasting do servidor de nomes raiz I.[2]

Objeções iniciais

As primeiras objeções à implantação do roteamento anycast centraram-se no conflito percebido entre conexões TCP de longa duração e a volatilidade da topologia roteada da Internet. Em conceito, uma conexão de longa duração, como uma transferência de arquivo FTP (que pode levar horas para ser concluída para arquivos grandes), poderia ser roteada para uma instância anycast diferente no meio da conexão devido a mudanças na topologia da rede ou no roteamento, com o resultado de que o servidor muda no meio da conexão, e o novo servidor não está ciente da conexão e não possui o estado da conexão TCP da instância anycast anterior.

Na prática, tais problemas não foram observados, e essas objeções se dissiparam no início dos anos 2000. Muitas implantações iniciais de anycast consistiam em servidores DNS, usando principalmente o transporte UDP.[4][2] Medições de fluxos anycast de longo prazo revelaram muito poucas falhas devido a trocas de instância no meio da conexão, muito menos (menos de 0,017%[5] ou "menos de um fluxo por dez mil por hora de duração"[1] de acordo com várias fontes) do que foram atribuídas a outras causas de falha. Numerosos mecanismos foram desenvolvidos para compartilhar eficientemente o estado entre instâncias anycast.[6] E alguns protocolos baseados em TCP, notavelmente HTTP, incorporaram mecanismos de "redirecionamento", pelos quais endereços de serviço anycast poderiam ser usados para localizar a instância mais próxima de um serviço, após o que um usuário seria redirecionado para essa instância específica antes do início de qualquer transação com estado de longa duração.[1][7]

Internet Protocol versão 4

O Anycast é implementado na Internet via Border Gateway Protocol (BGP), onde múltiplos hosts (geralmente em diferentes áreas geográficas) recebem o mesmo endereço IP anycast e todos o anunciam em sua tabela BGP. Os roteadores consideram essas rotas como alternativas para o mesmo destino, embora sejam, na verdade, rotas para destinos diferentes com o mesmo endereço. Os roteadores geralmente selecionarão o caminho com menos saltos, o que leva à escolha daquele mais próximo do cliente (geralmente mais rápido). Isso nem sempre acontece, pois alguns roteadores escolherão outras métricas (menos congestionado, mais barato).

Internet Protocol versão 6

O Anycast é suportado explicitamente na arquitetura de endereçamento IPv6.[8] O endereço mais baixo dentro de uma sub-rede IPv6 (identificador de interface 0) é reservado como o endereço anycast "Roteador de Sub-rede". Além disso, os 128 identificadores de interface mais altos dentro de uma sub-rede também são reservados como endereços anycast.[9]

Endereços anycast reservados
Prefixo de sub-rede Identificador de interface Notação CIDR
Roteador de sub-rede qualquer :: ::0/124
Anycast qualquer ffff:ffff:ffff:ff80 a ffff:ffff:ffff:ffff ::ffff:ffff:ffff:ff80/121
Suporte à mobilidade  qualquer ffff:ffff:ffff:fffe ::ffff:ffff:ffff:fffe/124

A maioria dos roteadores IPv6 no caminho de um pacote anycast através da rede não o distinguirá de um pacote unicast, mas um tratamento especial é exigido dos roteadores próximos ao destino (isto é, dentro do escopo do endereço anycast), pois eles são obrigados a rotear um pacote anycast para a interface "mais próxima" dentro desse escopo que tenha o endereço anycast adequado, de acordo com qualquer medida de distância (saltos, custo, etc.) que esteja sendo usada.

O método usado no IPv4 de anunciar múltiplas rotas no BGP para endereços unicast atribuídos multiplamente também funciona no IPv6, e pode ser usado para rotear pacotes para o mais próximo de vários hosts dispersos geograficamente com o mesmo endereço. Essa abordagem, que não depende de roteadores cientes de anycast, tem os mesmos casos de uso, juntamente com os mesmos problemas e limitações que no IPv4.

Aplicações

Com o crescimento da Internet, os serviços de rede têm cada vez mais requisitos de alta disponibilidade. Como resultado, a operação de serviços anycast cresceu em popularidade entre os operadores de rede.[10]

Domain Name System (DNS)

Todos os servidores raiz de nomes da Internet são implementados como clusters de hosts usando endereçamento anycast.[11] Todos os 13 servidores raiz A–M existem em múltiplos locais, com 11 em múltiplos continentes. (Os servidores raiz B e H existem em dois locais nos EUA.)[12][13][14] Os servidores usam anúncios de endereço anycast para fornecer um serviço descentralizado. Isso acelerou a implantação de servidores raiz físicos (em vez de lógicos) fora dos Estados Unidos. Muitos provedores comerciais de DNS mudaram para um ambiente IP anycast para aumentar o desempenho de consultas e a redundância, e para implementar o balanceamento de carga.[2]

Transição IPv6

Na transição de IPv4 para IPv6 [en], o endereçamento anycast pode ser implantado para fornecer compatibilidade IPv6 a hosts IPv4. Este método, 6to4 [en], usa um gateway padrão com o endereço IP 192.88.99.1.[15] Isso permite que múltiplos provedores implementem gateways 6to4 [en] sem que os hosts precisem saber os endereços de gateway de cada provedor individual. O 6to4 foi descontinuado[16] em resposta ao IPv6 nativo tornando-se mais prevalente.

Redes de distribuição de conteúdo

Redes de distribuição de conteúdo (CDNs) podem usar anycast para conexões HTTP reais aos seus centros de distribuição, ou para DNS. Como a maioria das conexões HTTP para tais redes solicita conteúdo estático, como imagens e folhas de estilo [en], elas são geralmente de curta duração e sem estado (stateless) através de sessões TCP subsequentes. A estabilidade geral das rotas e a falta de estado das conexões tornam o anycast adequado para esta aplicação, embora utilize TCP.[5][1]

Conectividade entre redes Anycast e Multicast

O ponto de encontro (rendezvous point) anycast pode ser usado no Protocolo de Descoberta de Fonte Multicast (MSDP) e sua aplicação vantajosa como Anycast RP é um recurso intra-domínio que fornece redundância e capacidades de compartilhamento de carga. Se o ponto de encontro anycast múltiplo for usado, o roteamento IP selecionará automaticamente o ponto de encontro topologicamente mais próximo para cada fonte e receptor. Isso forneceria a uma rede multicast os requisitos de tolerância a falhas.[17]

Segurança

O Anycast permite que qualquer operador cuja informação de roteamento seja aceita por um roteador intermediário sequestre quaisquer pacotes destinados ao endereço anycast. Embora isso pareça inseguro à primeira vista, não é diferente do roteamento de pacotes do IP comuns, e não é nem mais nem menos seguro. Assim como no roteamento IP convencional, a filtragem cuidadosa de quem tem permissão e de quem não tem para propagar anúncios de rota é crucial para prevenir ataques homem-no-meio ou ataques de buraco negro [en]. O primeiro também pode ser prevenido criptografando e autenticando mensagens, como usando Transport Layer Security, enquanto o último pode ser frustrado pelo roteamento onion [en].

Confiabilidade

O Anycast é normalmente altamente confiável, pois pode fornecer failover automático sem adicionar complexidade ou novos pontos potenciais de falha. Aplicações Anycast tipicamente apresentam monitoramento externo de "sinal de vida" (heartbeat) da função do servidor, e retiram o anúncio da rota se o servidor falhar. Em alguns casos, isso é feito pelos próprios servidores anunciando o prefixo anycast para o roteador via OSPF ou outro IGP. Se os servidores morrerem, o roteador retirará automaticamente o anúncio. A funcionalidade de "heartbeat" é importante porque, se o anúncio continuar para um servidor falho, o servidor agirá como um "buraco negro" para clientes próximos; este é o modo de falha mais sério para um sistema anycast. Mesmo neste evento, esse tipo de falha causará apenas uma falha total para clientes que estão mais próximos deste servidor do que de qualquer outro, e não causará uma falha global. No entanto, mesmo a automação necessária para implementar a retirada de rota por "heartbeat" pode, por si só, adicionar um ponto potencial de falha, como visto na interrupção do Facebook em 2021.

Mitigação de ataques de negação de serviço

Em ataques de negação de serviço, um host de rede desonesto pode se anunciar como um servidor anycast para um serviço de rede vital, para fornecer informações falsas ou simplesmente bloquear o serviço.

As metodologias Anycast na Internet podem ser exploradas para distribuir ataques DDoS e reduzir sua eficácia: Como o tráfego é roteado para o nó mais próximo, um processo sobre o qual o atacante não tem controle, o fluxo de tráfego DDoS será distribuído entre os nós mais próximos. Assim, nem todos os nós podem ser afetados. Esta pode ser uma razão para implantar o endereçamento anycast.[18] A eficácia desta técnica depende da manutenção do segredo de quaisquer endereços unicast associados aos nós de serviço anycast, no entanto, uma vez que um atacante de posse dos endereços unicast de nós individuais pode atacá-los de qualquer local, contornando os métodos de endereçamento anycast.[19]

Nós locais e globais

Algumas implantações de anycast na Internet distinguem entre nós locais e globais para beneficiar a comunidade local, endereçando nós locais preferencialmente. Um exemplo é o Domain Name System. Nós locais são frequentemente anunciados com a comunidade BGP no-export para impedir que hosts os anunciem aos seus pares, ou seja, o anúncio é mantido na área local. Onde ambos os nós locais e globais são implantados, os anúncios de nós globais frequentemente têm o AS prefixado (ou seja, o AS é adicionado mais algumas vezes) para tornar o caminho mais longo, de modo que um anúncio de nó local seja preferido em relação a um anúncio de nó global.[20]

Ver também

Referências

  1. a b c d Woodcock, Bill (Junho de 1996). «Best Practices in Anycast Routing» (PDF) (em inglês). Packet Clearing House 
  2. a b c d Hernandez, Gael (10 de outubro de 2017). «Building and Operating a Global Anycast Network» (PDF) (em inglês). Eurasia Network Operators Group 
  3. RFC 1546
  4. Woodcock, Bill (14 de novembro de 2019). «TCP and Anycast». NANOG mailing list archive (em inglês). North American Network Operators Group 
  5. a b Levine, Matt; Lyon, Barrett; Underwood, Todd (junho de 2006). «TCP Anycast: Don't Believe the FUD - Operational experience with TCP and Anycast» (PDF) (em inglês). North American Network Operators Group 
  6. Herrin, William. «Anycast TCP Architecture» (em inglês). Consultado em 11 de outubro de 2021 
  7. Katz-Bassett, Ethan; Gao, Ryan (julho de 2019). «Impact of TCP Loss on Regional Application Performance» (PDF) (em inglês). Microsoft. Azure Frontdoor uses anycast redirection to direct users to a nearby edge. 
  8. RFC 4291
  9. RFC 2526
  10. RFC 4786
  11. RFC 3258
  12. Home-page Servidor DNS raiz B, visitado em 8 de fevereiro de 2015
  13. «Report on Root Nameserver Locations» (em inglês). Packet Clearing House. Consultado em 21 de fevereiro de 2011 
  14. «Root Server Technical Operations Assn» (em inglês). root-servers.org. Consultado em 16 de fevereiro de 2013 
  15. RFC 3068
  16. RFC 7526
  17. «Anycast Rendezvous Point» (em inglês). Cisco Systems. 1 de junho de 2001 
  18. «ICANN Factsheet on root server attack on 6 February 2007» (PDF). Factsheet (em inglês). The Internet Corporation for Assigned Names and Numbers (ICANN). 1 de março de 2007. Consultado em 21 de fevereiro de 2011 
  19. Metz, C. (2002). «IP Anycast: Point-to-(Any) Point Communication (sign-in required)». IEEE. IEEE Internet Computing (em inglês). 6 (2): 94–98. doi:10.1109/4236.991450 
  20. Oki, Eiji; Rojas-Cessa, Roberto; Tatipamula, Mallikarjun; Vogt, Christian (24 de abril de 2012). Advanced Internet Protocols, Services, and Applications (em inglês). [S.l.]: John Wiley & Sons. pp. 102 & 103. ISBN 978-0-470-49903-0. Cópia arquivada em 5 de janeiro de 2020