Qu'est-ce que “anycast” et en quoi est-ce utile?

85

Je n'avais jamais entendu parler d'anycast jusqu'à il y a quelques secondes lorsque j'ai lu " Quelles sont certaines astuces serveur / réseau intéressantes ou utiles? ".

L'article de wikipedia " Anycast " est assez formel et n'évoque pas vraiment une image mentale de la façon dont il serait utilisé.

Quelqu'un peut-il expliquer en quelques phrases informelles ce qu'est "anycast", comment le configurer (au sens général) et quels sont ses avantages (qu'est-ce que cela rend plus facile)?

Nom d'utilisateur
la source

Réponses:

88

Anycast est une technique de réseau dans laquelle le même préfixe IP est annoncé à partir de plusieurs emplacements. Le réseau décide ensuite de l'emplacement vers lequel une demande d'utilisateur doit être routée, en fonction des coûts du protocole de routage et éventuellement de la "santé" des serveurs de publicité.

Anycast présente plusieurs avantages. Premièrement, à l'état stable, les utilisateurs d'un service anycast (le DNS en est un excellent exemple) se connecteront toujours au serveur DNS le plus proche (du point de vue du protocole de routage). Cela réduit la latence et fournit un niveau d'équilibrage de la charge (en supposant que vos clients soient répartis de manière égale sur votre réseau).

Un autre avantage est la facilité de gestion de la configuration. Plutôt que de devoir configurer différents serveurs DNS en fonction du lieu où un serveur / poste de travail est déployé (Asie, Amérique, Europe), vous avez une adresse IP configurée à chaque emplacement.

Selon la manière dont anycast est implémenté, il peut également fournir un niveau de haute disponibilité. Si la publication de la route anycast est conditionnelle à une sorte de vérification de l'état de santé (par exemple, une requête DNS pour un domaine bien connu, dans cet exemple), alors, dès qu'un serveur tombe en panne, sa route peut être supprimée. Une fois le réseau reconvergé, les demandes des utilisateurs seront transmises de manière transparente à l'instance DNS la plus proche, sans intervention manuelle ni reconfiguration.

Un dernier avantage est celui de la mise à l'échelle horizontale; si vous constatez qu'un serveur est surchargé, déployez-en simplement un autre dans un emplacement lui permettant de prendre une certaine proportion des demandes du serveur surchargé. Là encore, aucune configuration client n'étant requise, cela peut être fait très rapidement.

Murali Suriar
la source
Anycast utilise-t-il plus de bande passante que l'unicast? Imaginons que plusieurs milliers de serveurs partagent la même adresse IP. Lorsque nous envoyons un paquet à cette adresse, est-ce que cela prendrait plus de bande passante que par rapport à la monodiffusion?
Pacerier
5
Non - le trafic envoyé à une adresse anycast n'arrivera qu'à un seul emplacement annonçant l'adresse. Vous pensez peut-être à la multidiffusion , où les paquets envoyés à une adresse de groupe de multidiffusion sont envoyés à tous les hôtes intéressés par ce groupe.
Murali Suriar
Le problème de " Plutôt que de devoir configurer différents serveurs DNS en fonction du lieu où un serveur / poste de travail est déployé " n'est-il pas résolu par noms de domaine? Alors, quel est l'intérêt de anycast lorsqu'il s'agit simplement de dupliquer ce que font déjà les noms de domaine?
Pacerier
1
@ Pacerier - vous ne pouvez pas utiliser de noms de domaine pour trouver votre serveur DNS - c'est une dépendance circulaire. Exemple: configurez dns.foo.com. en tant que votre serveur DNS. À quelle adresse IP dois-je envoyer des demandes à dns.foo.com? Je sais, je vais chercher dans DNS. etc.
Murali Suriar
32

Une des choses qui me confondent souvent dans la compréhension de "anycast" est que, bien que ce soit un terme de haut niveau, dans la mise en œuvre pratique, cela se résume généralement à deux exemples:

  1. Les routeurs utilisant BGP pour annoncer le même bloc IP via plusieurs chemins AS , constituent un moyen approximatif de diriger les utilisateurs vers un site "plus proche". Dans le même temps, il permet un basculement presque transparent vers les autres sites en retirant simplement les itinéraires d'un site en difficulté. Cela peut être utile pour presque tous les protocoles, bien que cela soulève évidemment de nombreux problèmes de synchronisation des données dorsales.

  2. Annoncer le même service IP depuis plusieurs points de votre propre réseau (via un routage statique , OSPF , EIGRP ou autre). Si les itinéraires sont pondérés différemment, il s'agit d'un mécanisme de basculement. Si les routes sont pondérées de manière uniforme, vous pouvez tirer parti des fonctionnalités d'équilibrage de charge par paquet ou par flux de la plupart des routeurs de marque. Vous devez faire attention à ce que le protocole de couche d'application soit à l'aise avec cela, c'est pourquoi vous en entendez presque toujours parler avec DNSoù une demande est toujours un paquet et que tout est sans état. Personnellement, j’estime qu’il s’agissait d’une intrusion inflexible dans la couche réseau des préoccupations de la couche application, alors qu’une combinaison de DNS et d’équilibreurs de charge appropriés constituerait presque toujours une meilleure solution.

cagenut
la source
+1 pour avoir mentionné un paquet et l'apatridie
nponeccop
3
Le problème avec DNS est que l'on peut utiliser Google ou un autre résolveur distant. Le serveur le plus proche peut être différent du résolveur que de l'utilisateur. Bien sûr, cela n’est valable que anycast est destiné à un usage autre que DNS (par exemple TCP anycast ou un autre usage).
akostadinov
@cagenut, HTTP serait-il cassé dans le cas de l'équilibrage de charge par paquet (en raison de poids égaux ou autrement)?
Pacerier
16

Principalement utilisé pour les services basés sur UDP tels que DNS. En gros, vous annoncez le même itinéraire à partir de plusieurs centres de données à travers le monde. De cette façon, vos clients seront envoyés au "meilleur" et au "centre de données le plus proche" basé sur les itinéraires BGP. Je mets "mieux" et "le plus proche" entre guillemets, car les fournisseurs de réseau peuvent jouer à des jeux et router le trafic de certains réseaux différemment. En règle générale, les résultats sont optimaux avec anycast, mais ce n'est pas une garantie.

Un exemple de ceci serait de lister vos serveurs DNS comme 1.2.3.4 et 1.2.3.5. Vos routeurs annonceraient un itinéraire pour 1.2.3 / 24 sur plusieurs centres de données. Si vous êtes au Japon et que vous avez un centre de données là-bas, il y a de fortes chances que vous y arriviez. Si vous êtes aux États-Unis, vous serez envoyé à votre centre de données américain. Encore une fois, il est basé sur le routage BGP et non sur le routage géographique réel, mais c'est généralement ainsi que les choses se passent mal.

diq
la source
1
Comment les conflits sont-ils évités alors?
Pacerier
Je ne suis pas sûr de ce que vous entendez par conflits. BGP ne permet pas vraiment de conflits. Il choisit juste un itinéraire. Un problème (souvent ignoré) avec anycast est légal. Techniquement, toute diffusion est couverte par différents brevets. Personne ne l'applique, mais différents types de trafic (CDN, DNS, TCP vs UDP) sont couverts par différents brevets. Ce paragraphe devrait être couvert d'IANAL.
diq
Donc, vous voulez dire que ces services ip2location sont inexacts? Parce qu’il n’ya pas d’emplacement officiel pour une adresse IP et que cela pourrait être n'importe où en fonction de l’ordinateur BGP auquel vous parlez?
Pacerier
9

Conformément à ma réponse initiale, je viens de publier sur mon blog deux autres articles intitulés: Anycast DNS - Partie 3, Utilisation de RIP et Anycast DNS - Partie 3, Utilisation de RIP (suite). Ce dernier va plus en détail, mais à www.netlinxinc.com/netlinx-blog.html vous trouverez des recettes sur la façon de configurer les routeurs Cisco et le logiciel de routage Open Source Quagga basé sur l'hôte pour Anycast DNS à l'aide de RIP.

Je travaille actuellement sur l'écriture du quatrième article de la série. Cela fournira des informations sur la manière de déployer le DNS Anycast à l'aide de OSPF. Dernier de la série, je montrerai des recettes pour déployer Anycast DNS à l'aide de BGP.

Anycast DNS - Partie 1, Présentation

Anycast DNS - Partie 2, Utilisation d'itinéraires statiques

Anycast DNS - Part 3, Utiliser le RIP

Anycast DNS - Partie 3, Utiliser le protocole RIP (suite)

Netlinxman
la source
Donc, est-il vrai que, grâce à anycast, il est possible que quelqu'un d'autre sur Internet à travers le monde ait la même adresse IP publique que celle que votre fournisseur de services Internet vous a donnée?
Pacerier
N'est-il pas vrai que seuls les FAI sont capables de déployer des serveurs anycast?
Pacerier
En fait, vous auriez besoin de plusieurs FAI pour faire anycast.
Pacerier
4

Étant donné qu'il s'agit principalement de DNS pour le moment ...

De manière informelle, il rend votre service plus résilient et offre un meilleur accès / latence / vitesse réseau en vous permettant d’installer le même service dans plusieurs endroits du monde en utilisant tous la même adresse. Lorsque quelqu'un demande l'adresse, il se voit indiquer l'itinéraire le plus proche / le meilleur.

Du point de vue du serveur:

Si la monodiffusion est destinée à une seule personne et si vous diffusez à plusieurs, et diffusée à toutes les personnes, alors toute diffusion est schitzophrénique et comporte de multiples personnalités où la personnalité la mieux adaptée à chaque personne se connecte à elles. Hmm. Pas la meilleure analogie.

Alex
la source
3

Le DNS est une utilisation vraiment intéressante d'anycast. Vous pouvez placer 5 serveurs DNS différents dans divers emplacements physiques et réseau, mais partager une seule adresse (ou parfois les adresses DNS principale et secondaire). Selon l’emplacement de la source, ils sont acheminés vers le nœud le plus proche. Cela permet d’équilibrer le trafic et d’assurer la redondance si un serveur DNS meurt.

dexedrine
la source
Mais la redondance n'est-elle pas déjà fournie par le système DNS?
Pacerier
2

Selon un de mes collègues, il est également utile comme technique d'atténuation des attaques par déni de service, car les utilisateurs ne peuvent attaquer que l'adresse IP anycast "la plus proche". Par conséquent, s'il y a beaucoup de zombines aux États-Unis, votre site en Euro serait principalement non affectés, car ils ne peuvent pas réellement envoyer de paquets à elle.

En outre, il peut également être utilisé comme un moyen (quelque peu naïf) de filtrer les paquets falsifiés s'ils proviennent manifestement d'un endroit peu susceptible d'être annoncé dans BGP comme étant la bonne route (par exemple, les paquets arrivant en Europe lorsque l'ASN indique un numéro américain). bloquer).

MarkR
la source
1
Eh bien, même dans le cas simple qui empêcherait uniquement les personnes dont le chemin d'accès AS accède à ce serveur - par exemple, vous pouvez arrêter les personnes qui vous atteignent depuis Comcast, mais pas AT & T. Si vous avez configuré "correctement" le basculement (suivez le service L7, arrêtez d'annoncer quand il tombe en panne), il est en fait beaucoup plus difficile de gérer les attaques par déni de service car il va détruire un serveur, puis passer au suivant. les annonces sont annulées ...
James Cape
@ JamesCape, Intéressant, mais quand ils passent à la suivante, le dos a échoué car les gens ne peuvent pas se connecter, n'est-ce pas?
Pacerier
@Pacerier Dans le cas le plus simple, où vous publiez simplement la même adresse IP partout sans aucune intelligence, oui. Toutefois, si vous essayez de faire preuve d'intelligence et de retirer la publicité aux États-Unis parce que le service ne répond pas, la seule publicité restante sera celle en Europe. Ainsi, tous les zombies américains attaqueront le prochain serveur disponible et le tueront également.
James Cape
2

Il est également bon de noter qu'Anycast n'est ni bon ni fiable pour certaines connexions TCP qui ne peuvent pas survivre à une réinitialisation ou à une conversation longue.

Les IP Anycast, à l'aide de BGP, indiquent à Internet qu'il existe 2, 3 ou plus de chemins d'accès à un hôte spécifique . Toutefois, en réalité, ils ne sont PAS le même hôte . Ce sont des répliques exactes des hôtes annoncés dans plusieurs centres de données afin d'obtenir des connexions à latence inférieure.

Par exemple, trois serveurs effectuant une redirection 301 non www pour 198.251.86.133, si vous envoyez une requête ping à cet hôte, vous pouvez obtenir des réponses DUPLICATE à certains moments, voire même des baisses selon votre lieu de résidence, car mes serveurs sont situés aux États-Unis, aux États-Unis. -Ouest et EUR. pour les connexions temporisées courtes (comme les 301 qui sont en cache avec le navigateur), cela donne une réponse rapide par un serveur local dans le centre de données le plus proche.

En ce qui concerne la redondance, anycast n’est pas intégré dans anycast; vous auriez quand même besoin d’une redondance indépendante sur chaque site, car cette adresse IP (dans les scénarios classiques) pointera toujours vers ces centres de données.

Jacob Evans
la source
Re "ping"; Ping n'est pas une connexion UDP?
Pacerier
Re "comme cette adresse IP (dans des scénarios typiques) pointera toujours vers ces datacenters"; êtes-vous sûr? Si ce serveur est en panne, ils commenceraient à pointer vers le prochain serveur le plus proche, n'est-ce pas?
Pacerier