O que é "anycast" e como é útil?


85

Eu nunca tinha ouvido falar de anycast até alguns segundos atrás, quando li " Quais são alguns truques interessantes ou úteis para servidor / rede? ".

O artigo da wikipedia " Anycast " é bastante formal e não evoca uma imagem mental de como seria usado.

Alguém pode explicar em algumas frases informais o que é "anycast", como você o configura (apenas em um sentido geral) e quais são seus benefícios (o que facilita)?

Respostas:


88

Anycast é uma técnica de rede em que o mesmo prefixo IP é anunciado em vários locais. A rede decide então para qual local encaminhar uma solicitação de usuário, com base nos custos do protocolo de roteamento e possivelmente na "integridade" dos servidores de publicidade.

Existem vários benefícios para o anycast. Primeiro, em estado estacionário, os usuários de um serviço anycast (o DNS é um excelente exemplo) sempre se conectam ao servidor DNS 'mais próximo' (de uma perspectiva de protocolo de roteamento). Isso reduz a latência, além de fornecer um nível de balanceamento de carga (supondo que seus consumidores estejam distribuídos uniformemente pela rede).

Outra vantagem é a facilidade de gerenciamento de configurações. Em vez de precisar configurar servidores DNS diferentes, dependendo de onde um servidor / estação de trabalho é implantado (Ásia, América, Europa), você tem um endereço IP configurado em cada local.

Dependendo de como o anycast é implementado, ele também pode fornecer um nível de alta disponibilidade. Se o anúncio da rota anycast estiver condicionado a algum tipo de verificação de integridade (por exemplo, uma consulta DNS para um domínio conhecido, neste exemplo), assim que um servidor falhar, sua rota poderá ser removida. Depois que a rede reconvergir, as solicitações do usuário serão encaminhadas diretamente para a próxima instância mais próxima do DNS, sem a necessidade de qualquer intervenção ou reconfiguração manual.

Uma vantagem final é a do dimensionamento horizontal; se você achar que um servidor está sendo carregado demais, basta implantar outro em um local que permita que ele atenda uma parte das solicitações do servidor sobrecarregado. Novamente, como nenhuma configuração de cliente é necessária, isso pode ser feito muito rapidamente.


O anycast usa mais largura de banda em comparação com o unicast? Imagine que temos milhares de servidores todos compartilhando o mesmo endereço IP; quando enviamos um pacote para esse endereço, não seria necessário mais largura de banda do que o unicast?
Pacerier

5
Nenhum tráfego enviado para um endereço anycast só chegará a um local anunciando o endereço. Você pode estar pensando em multicast , onde os pacotes enviados para um endereço de grupo multicast são enviados para todos os hosts interessados ​​nesse grupo.
Murali Suriar

O problema de " Em vez de precisar configurar servidores DNS diferentes, dependendo de onde um servidor / estação de trabalho é implantado " é resolvido pelos nomes de domínio? Então, qual é o sentido de anycast quando simplesmente duplicar o que os nomes de domínio já estão fazendo?
Pacerier

1
@Pacerier - você não pode usar nomes de domínio para encontrar seu servidor DNS - isso é uma dependência circular. Exemplo: configure dns.foo.com. como seu servidor DNS. Para qual endereço IP eu envio solicitações ao dns.foo.com? Eu sei, vou procurar no DNS. etc.
Murali Suriar 8/17

32

Uma das coisas que muitas vezes me confundiu na compreensão de "anycast" é que, embora seja um termo de alto nível, na implementação prática, geralmente se resume a dois exemplos:

  1. Roteadores que usam BGP para anunciar o mesmo bloco IP por vários caminhos AS como uma maneira aproximada de direcionar os usuários para um site "mais próximo". Ao mesmo tempo, fornece failover quase transparente para os outros sites, apenas retirando as rotas de um site problemático. Isso pode ser útil para praticamente qualquer protocolo, embora obviamente suscite muitas preocupações de sincronização de dados de back-end.

  2. Anunciar o mesmo IP de serviço de vários pontos em sua própria rede (via roteamento estático , OSPF , EIGRP ou qualquer outra coisa). Se as rotas tiverem um peso diferente, elas atuam como um mecanismo de failover. Se as rotas forem ponderadas de maneira uniforme, ele poderá tirar proveito dos recursos de balanceamento de carga por pacote ou por fluxo da maioria dos roteadores de fornecedores de marcas. Você deve ter cuidado para que o protocolo da camada de aplicação seja confortável com isso, é por isso que você quase sempre ouve falar dele usado com DNSonde uma solicitação é sempre um pacote e tudo é sem estado. Pessoalmente, vejo isso como uma intrusão hacky de preocupações da camada de aplicativos na camada de rede quando uma combinação de DNS e balanceadores de carga adequados quase sempre será uma solução melhor.


+1 por mencionar um pacote e apátrida
nponeccop

3
O problema com o DNS é que se pode usar o google ou algum outro resolvedor remoto e o servidor mais próximo ao resolvedor pode ser diferente do usuário. Claro que isso é válido apenas anycast é para uso não-DNS (por exemplo, tcp anycast ou outro uso).
akostadinov 11/07/2014

@cagenut, o HTTP seria interrompido no caso de balanceamento de carga por pacote (devido a pesos iguais ou outros)?
Pacerier

16

Usado principalmente para serviços baseados em UDP, como DNS. Basicamente, você anuncia a mesma rota de vários datacenters em todo o mundo. Dessa forma, seus clientes serão enviados ao data center "melhor" e "mais próximo", com base nas rotas BGP. Coloquei "melhor" e "mais próximo" entre aspas, porque os provedores de rede podem jogar e rotear o tráfego de determinadas redes de maneira diferente. Geralmente, as coisas funcionam melhor com o anycast, mas não é uma garantia.

Um exemplo disso seria listar seus servidores DNS como 1.2.3.4 e 1.2.3.5. Seus roteadores anunciam uma rota para 1.2.3 / 24 de vários datacenters. Se você estiver no Japão e tiver um datacenter lá, é provável que você acabe lá. Se você estiver nos EUA, você será enviado ao seu datacenter dos EUA. Novamente, é baseado no roteamento BGP e não no roteamento geográfico real, mas é geralmente assim que as coisas acontecem.


1
Como os conflitos são evitados então?
Pacerier

Não tenho certeza do que você quer dizer com conflitos. O BGP realmente não permite conflitos. Apenas escolhe uma rota. Um problema (geralmente ignorado) com o anycast é legal. Tecnicamente, o anycasting é coberto por diferentes patentes. Ninguém aplica isso, mas tipos diferentes de tráfego (CDN, DNS, TCP vs UDP) são cobertos por diferentes patentes. Este parágrafo deve ser coberto pela IANAL.
diq 31/01

Então você quer dizer que esses serviços de ip2location são imprecisos? Como não existe um local oficial para um IP e pode estar em qualquer lugar, dependendo do computador BGP com o qual você fala?
21818 Pacerier

9

De acordo com a minha resposta original, acabei de publicar mais dois artigos no meu blog intitulados: Anycast DNS - Parte 3, Usando RIP e Anycast DNS - Parte 3, Usando RIP (continuação). O último entra em mais detalhes, mas em www.netlinxinc.com/netlinx-blog.html, você encontrará receitas reais sobre como configurar roteadores Cisco e software de roteamento baseado em host Quagga de código aberto para Anycast DNS usando RIP.

Atualmente, estou trabalhando para escrever o quarto artigo da série. Isso fornecerá receitas sobre como implantar o DNS Anycast usando o OSPF. Por último na série, mostrarei receitas para implantar o DNS do Anycast usando o BGP.

Anycast DNS - Parte 1, Visão geral

Anycast DNS - Parte 2, Usando rotas estáticas

Anycast DNS - Parte 3, Usando RIP

Anycast DNS - Parte 3, Usando RIP (continuação)


Portanto, é verdade que, por causa de anycast, é possível que alguém na Internet em todo o mundo tenha o mesmo IP público que o seu ISP lhe forneceu?
Pacerier

Não é verdade que apenas os ISPs são capazes de implantar servidores anycast?
21918 Pacerier

De fato, você precisaria possuir vários ISPs para fazer anycast.
21718 Pacerier

4

Dado que isso é principalmente DNS no momento ...

Informalmente, torna seu serviço mais resiliente e com melhor acesso / latência / velocidade à rede, permitindo que você configure o mesmo serviço em vários locais do mundo, todos usando o mesmo endereço. Quando alguém consulta esse endereço, recebe o caminho mais próximo / melhor.

Da perspectiva do servidor:

Se o unicast vai para uma única pessoa, e o multicast para várias e a transmissão é para todas as pessoas, o anycast está sendo esquizofrênico e tem várias personalidades, onde a personalidade mais adequada para cada pessoa se conecta a elas. Hmm. Não é a melhor analogia.


3

Um uso realmente interessante de anycast é o DNS. Você pode colocar 5 servidores DNS diferentes em vários locais físicos e de rede, mas compartilhar um único endereço (ou às vezes o DNS primário e o secundário). Dependendo de onde a fonte está, eles são roteados para o nó mais próximo. Isso faz algum balanceamento de tráfego e fornece redundância se um servidor DNS morrer.


Mas a redundância já não é fornecida pelo sistema DNS?
Pacerier

2

De acordo com um de meus colegas, também é útil como uma técnica de mitigação de ataques de DoS, já que as pessoas só podem atacar o endereço IP anycast "mais próximo"; portanto, se houver muitos zumbis nos EUA, por exemplo, seu site Euro será principalmente não afetados, pois eles não podem realmente enviar pacotes para ele.

Além disso, pode ser possível usá-lo como uma maneira (de maneira um tanto ingênua) de filtrar pacotes falsificados, se eles obviamente vierem de algum lugar improvável de ser anunciado no BGP como a rota correta (por exemplo, pacotes chegando na Europa quando o ASN indica um N Americano). quadra).


1
Bem, mesmo no caso simples que iria parar as pessoas que estão no caminho AS, vá para esse servidor - por exemplo, você pode impedir as pessoas que chegam da Comcast, mas não da AT&T. Se você configurou a configuração "corretamente" para failover (rastreie o serviço L7, pare de anunciar quando ele for desativado), será realmente muito mais complicado lidar com ataques de DoS, já que ele irá destruir um servidor e passar para o próximo quando for anúncios são tomadas para baixo ...
James Cape

@ JamesCape, Interessante, Mas quando eles passam para o próximo, o DOS falhou porque as pessoas não conseguem se conectar, certo?
21918 Pacerier

@Pacerier No caso mais simples, onde você acaba de anunciar o mesmo IP em qualquer lugar, sem nenhuma inteligência, sim. No entanto, se você tentar ficar esperto e retirar o anúncio nos EUA porque o serviço não está respondendo, o único anúncio restante será o da Europa. Então todos os zumbis dos EUA atingem o próximo servidor disponível e matam esse também.
James Cape

2

Também é bom observar que o Anycast não é bom ou confiável para algumas conexões TCP que não podem sobreviver a redefinições ou conversas longas.

Os IPs do Anycast, usando BGP, informam à Internet que existem 2, 3 ou mais caminhos para um HOST específico ; no entanto, na realidade, esses NÃO são o mesmo host , são réplicas exatas dos hosts anunciados em vários datacenters para obter conexões de menor latência.

Por exemplo, eu tenho 3 servidores fazendo o redirecionamento 301 não www para 198.251.86.133; se você executar ping neste host, poderá obter respostas DUPLICATE às vezes ou até cair dependendo da sua localização, pois meus servidores são leste dos EUA e EUA -Oeste e EUR. para conexões temporizadas (como as 301, que são armazenadas em cache no navegador), isso fornece uma resposta rápida de um servidor local no datacenter mais próximo.

Do ponto de vista da redundância, não há nenhum incorporado no anycast, você ainda precisaria de redundância independente em cada site, pois esse IP (em cenários típicos) sempre aponta para esses datacenters.


Re "ping"; não faz ping em uma conexão UDP?
21718 Pacerier

Re "como esse IP (em cenários típicos) sempre aponta para esses datacenters"; você tem certeza? Se esse servidor apagasse, eles começariam a apontar para o próximo servidor mais próximo, não é?
21718 Pacerier
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.