Anycast

avril 02, 2013  |   Blog   |     |   Commentaires fermés sur Anycast

Il existe différents types de routage:

Unicast

  • Unicast: la source envoie un paquet routé vers une destination spécifiqueBroadcast
  • Broadcast: la source envoie un paquet que le réseau transmet à tous les hôtes accessiblesMulticast
  • Multicast: la source envoie un paquet que le réseau transmet à tous les hôtes qui font partie d’un groupe spécifiqueAnycast
  • Anycast: la source envoie un paquet que le réseau transmet vers l’hôte le plus proche ou le plus efficace

Cet article traitera de la technique Anycast (RFC 4786)

Définition

Une adresse Anycast fait référence à une adresse IP assignée à plusieurs instances (interfaces, hôtes) d’un même service, situées à des points stratégiques à travers le réseau.

Dans un même réseau, chaque équipement doit être identifié de manière unique: assigner la même IP à des machines différentes empêche les 2 équipements d’effectuer n’importe quelle tâche liée au réseau. Or l’adressage Anycast engendre la duplication volontaire d’une adresse IP dans le réseau. Des mécanismes spécifiques doivent être mis en place pour son déploiement.

Hormis pour le “6to4” [une méthode qui permet à 2 réseaux IPv6 distants de communiquer en passant par un réseau IPv4 (le bloc Anycast utilisé est le 192.88.99.0/24)], il n’existe pas de blocs d’adresses Anycast comme pour le multicast. L’administrateur du service doit utiliser une adresse IP extraite de la plage qui lui a été attribuée.

Lorsque Anycast est configuré dans un réseau, un noeud envoie une requête vers l’hôte Anycast le plus proche. “Proche” au sens Anycast ne signifie pas forcément géographiquement “proche”. Cela dépend de:

  • la topologie du réseau
  • des protocoles de routage utilisés
  • des règles administratives internes du réseau

Distribution du service Anycast

Les motivations pour l’implémentation d’ un service Anycast sont diverses:

  • Distribution inégale de charge entre les nœuds:
    • pour permettre à l’architecture de passer l’échelle lorsque les requêtes sont nombreuses
    • pour résister aux pics de charge ponctuels
  • Atténuation des attaques DoS non distribuées afin de restreindre les dommages à un unique noeud
  • Opportunité de gérer le trafic au plus près de la source, avec de meilleures performances.
  • Apporte des informations supplémentaires afin d’identifier la localisation des sources de trafic en cas d’attaques ou requêtes spoofées (un noeud Anycast gérant une zone géographique spécifique dans le réseau)
  • Améliore le temps de réponse aux requêtes en réduisant la distance entre le client et le serveur. La proportion d’amélioration de ce temps dépend de la manière dont les nœuds Anycast sont choisis par le protocole de routage.
  • Réduit une liste de serveur à une unique adresse IP distribuée.

Afin de déterminer si un service peut être Anycast, la stabilité du protocole de routage ainsi que la durée de la transaction avec le service doivent être prises en compte.

Anycast est le plus souvent utilisé pour assurer la redondance et de meilleures performances à des services non connectés . Son principe de fonctionnement n’est pas conçu pour être applicable dans le cas des échanges nécessitant l’établissement d’une connexion (basés sur TCP).

En effet cela demande qu’une session soit établie entre 2 équipements spécifiques: si l’un des intervenants change et que l’autre poursuit l’envoie de paquets, le nouvel intervenant n’est pas en mesure de “comprendre” les échanges et les paquets sont rejetés. Cependant, dans un environnement stable où la route vers une destination Anycast (et donc un autre hôte avec la même IP) a de faibles risques d’être modifiée, il est possible d’utiliser Anycast avec TCP. En général Anycast over TCP est utilisé si les connexions nécessaires entre 2 équipements sont de courtes durées.

La localisation des nœuds Anycast dépend fortement des objectifs du service à distribuer:

  • le service DNS récursif peut être distribué à travers le réseau d’un fournisseur d’accès en mettant à disposition aux utilisateurs un noeud Anycast par site
  • un serveur DNS racine peut être distribué à travers Internet: les nœuds Anycast sont situés dans des régions où la connectivité est faible pour assurer la fonctionnalité du DNS en cas de problème réseau externe
  • un service FTP miroir peut être distribué sur des nœuds Anycast locaux (dont le scope de disponibilité est limité à un sous-réseau particulier) situés à des IXPs(Internet Exchange Point) spécifiques. Ainsi un FAI connecté à un de ces IXPs peut télécharger différentes données en utilisant ce service sans payer le prix de la mise en place d’un circuit de transit.

En général, le choix devrait tenir compte :

  • des besoins probables du trafic
  • de la probabilité de subir des charges importantes ou des attaques DoS
  • de la stabilité du système de routage
Anycast à l’échelle d’IGP

[IGP (Interior Gateway Protocol) définit les protocoles de routage utilisés pour assurer la communication entre les différents équipements d’un même AS (Autonomous System) en évitant les boucles, en fournissant la route la plus optimale et en assurant la convergence du réseau en cas de panne. RIP, OSPF et EIGRP sont des IGPs]

  • améliorer le temps de réponse du service en l’hébergeant près d’autres utilisateurs dans le réseau
  • améliorer la fiabilité en apportant un fail-over automatique aux nœuds backup
  • garder le trafic du service local pour éviter de congestionner les liens WAN

 

Inconvénients d’Anycast à l’échelle d’Internet
  • le système de routage est, en général, contrôlé par des tiers
  • les protocoles de routage concernés (BGP), et les pratiques communément acceptées pour leur déploiement, imposent des contraintes additionnelles

 

Disponibilité du service

Dans un réseau, pour que 2 équipements puissent communiquer, il faut qu’ils soient joignables l’un par l’autre. Si un noeud Anycast n’est plus en mesure d’apporter un service à l’émetteur d’une requête, ce dernier doit être informé de l’indisponibilité du service: un couplage entre le routage et la disponibilité du service est nécessaire.

Les serveurs Anycast incluent la fonctionnalité “heartbeat”. Un serveur Anycast annonce la route vers le service qu’il fournit. En cas d’indisponibilité du service, ou du serveur, l’absence des messages “heartbeat” entraîne la suppression de la route au niveau du routeur qui la propageait.

Exemple de déploiement d’Anycast pour DNS

Dans un sous-réseau est mis en place un cluster d’hôtes qui fournira le service DNS.

Tous les équipements de ce sous-réseau (routeurs, switches N3 et hôtes) sont configurés pour utiliser le protocole de routage OSPF.

A chaque hôte du cluster est assignée une adresse unicast sur l’interface qui le relie au réseau (utilisée pour superviser les hôtes).
L’interface loopback est également configurée sur chacun de ces hôtes avec l’adresse Anycast assignée au service distribué (ici le DNS).

Chaque hôte agit comme un routeur et envoie des LSA (Link State Advertisment) annonçant la route vers le service aux routeurs d’accès au réseau.

Les routeurs doivent être en mesure de supporter le routage ECMP (Equal Cost Multiple Path) pour partager les requêtes entre les différents hôtes.

Les échanges DNS/UDP ont la particularité d’être courts et rapidement exécutés. Aucun état n’est maintenu pour les échanges (stateless). Ainsi, plusieurs requêtes envoyées par un même client peuvent être traitées par différents hôtes.

Dans le cas des échanges DNS/TCP (stateful), une requête effectuée par un client doit être traitée par le même hôte Anycast (dans le cas contraire, l’échange échoue).

Il est donc nécessaire que le routeur choisisse la même route pour les paquets d’un même échange. Cette opération est réalisée par l’utilisation de hachage de flux (flow hashing) calculé avec l’adresse et le port source et destination.
La table de hachage est spécifique à chaque routeur: les paquets d’un même client doivent donc tous arriver sur le même routeur.

Le Flow Hashing est supporté par les routeurs Cisco (avec la fonctionnalité CEF, Cisco express Forwarding) et Juniper (avec le “load-balance per-packet”).

[Avec les routeurs Cisco, lorsque des routes ECMP existent, OSPF utilise CEF (Cisco Express Forwarding) pour le partage de charge]

La disponibilité du service DNS est indiquée par l’envoie d’une LSA annonçant la route vers le service ou l’envoie d’une LSA demandant le retrait de la route en cas d’indisponibilité du service.

Supervision d’un service Anycast

Superviser un service distribué est plus complexe qu’un service non-distribué: la précision et la disponibilité du service est en général différente en fonction de l’emplacement du client dans le réseau. Lorsqu’il y a un problème, il n’est pas toujours évident de déterminer quel nœud a répondu à la requête et donc d’en déduire quel nœud est indisponible.

Il est recommandé de superviser les services distribués à partir de “probes” distribués à travers le protocole de routage en veillant à obtenir l’identité du nœud répondant à chaque requête ainsi que les statistiques de performance et de disponibilité du nœud en question

Le service DNSMON permet de réaliser ce type de supervision pour le DNS.

Anycast et Sécurité

 

Atténuation des attaques DoS

Anycast permet de déployer des services sur Internet en diminuant la vulnérabilité de ces derniers aux attaques:

  • un nœud Anycast peut agir comme un sinkhole pour les attaques provenant de sa région, empêchant ce trafic d’atteindre les autres nœuds
  • gérer les dénis de service distribués (DDoS) est une tâche distribuée entre les différents nœuds Anycast du service: distinguer le trafic légitime des attaques est distribué ce qui permet de passer l’échelle (contrairement aux services non distribués)

 

Compromission du service

La distribution d’un service sur plusieurs nœuds autonomes impose une supervision renforcée et un travail supplémentaire à l’administrateur du service (ce qui peut réduire l’efficacité de la sécurité des hôtes et routeurs).

Pour désactiver un serveur compromis sans affecter le service distribué, il est nécessaire d’avoir des procédures efficaces et rapidement implémentables.

Sources
http://fr.wikipedia.org/wiki/Anycast

http://tools.ietf.org/html/rfc4786

http://ftp.isc.org/isc/pubs/tn/isc-tn-2004-1.html#anchor6

Les commentaires sont fermés.