Anycast

Un article de Wikipédia, l'encyclopédie libre.
Types de routage

Anycast

Broadcast

Multicast

Unicast

Géocast

Anycast est une technique d'adressage et de routage permettant de rediriger les données vers le serveur informatique le « plus proche » ou le « plus efficace » selon la politique de routage.

Ce terme se veut proche phonétiquement des termes unicast, broadcast et multicast.

  • En unicast, il n'existe qu'une association entre une adresse réseau et le point d'arrivée final : chaque adresse de destination identifie de manière unique un seul receveur final.
  • En broadcast et multicast, il y a une association "de une à plusieurs" entre les adresses réseau et les points d'arrivées finaux : chaque adresse de destination identifie un ensemble de récepteurs finaux, sur lesquels toute l'information est répliquée.
  • En anycast, il y a aussi une association "de une à plusieurs" entre les adresses réseau et les points d'arrivées finaux : chaque adresse de destination identifie un ensemble de récepteurs finaux, mais un seul d'entre eux est choisi pour recevoir l'information à un moment donné pour un émetteur donné.

Sur Internet, anycast est habituellement implémenté en utilisant BGP qui annonce simultanément la même tranche d'adresses IP depuis plusieurs endroits du réseau. De cette façon, les paquets sont routés vers le point le « plus proche » du réseau annonçant la route de destination.

Anycast s'applique plus facilement aux protocoles en mode non-connecté (qui s'appuient généralement sur UDP), plutôt qu'aux protocoles en mode connecté comme TCP ou des protocoles sur UDP qui gardent leur propre état, car le récepteur sélectionné pour une source peut changer à n'importe quel moment où les routes se mettent à jour, coupant sans prévenir les conversations en cours. Pour les protocoles en mode connecté qui nécessitent que la conversation entière utilise le même serveur, des systèmes comme GeoDNS sont plus appropriés. La RFC 4786[1] décrit plus en détail le fonctionnement de l'anycast.

Pour cette raison, anycast est habituellement utilisé pour fournir de la haute disponibilité et de la répartition de charge pour des services en mode non connecté.

Utilisation d'anycast dans l'implémentation du DNS[modifier | modifier le code]

Certains serveurs DNS racine sont de grosses grappes de serveurs utilisant anycast. Les serveurs C, F, I, J, K et M sont éparpillés sur plusieurs continents et utilisent anycast pour fournir un service décentralisé. Ainsi, la plupart des serveurs racine physiques sont en dehors des États-Unis. La RFC 3258[2] décrit comment anycast est utilisé pour fournir un service DNS. Plusieurs ccTLD utilisent également cette technique, comme le .fr [3] et le .ch[4]

Utilisation d'anycast dans l'implémentation d'IPv6[modifier | modifier le code]

Il existe une passerelle 6to4 (protocole de transition IPv6) accessible à l'adresse IP 192.88.99.1 (voir la RFC 3068[5] pour plus de détails). Ceci permet aux fournisseurs d'accès à Internet d'implémenter des passerelles 6to4 sans que les hôtes ne connaissent une passerelle spécifique au fournisseur.

Sécurité d'anycast[modifier | modifier le code]

Anycast permet à un équipement dont les informations de routage sont acceptées par un routeur intermédiaire d'intercepter n'importe quel paquet destiné à l'adresse anycast. Cela peut paraître peu sécurisé, mais ne pose pas plus de problèmes que le routage ordinaire : un filtrage attentif de ce qui peut ou ne peut pas propager les routes est nécessaire pour éviter les attaques de l'homme du milieu ou de points d'eau.

Fiabilité d'anycast[modifier | modifier le code]

Anycast est habituellement de haute fiabilité, vu qu'il peut fournir une redondance sur panne automatique. Les applications anycast fournissent généralement une surveillance par heartbeat ("battement de cœur") des services et stoppent l'annonce de route si une erreur se produit. Dans certains cas, ceci est effectué par les serveurs qui annoncent le préfixe anycast au routeur par OSPF ou un autre protocole IGP. Si le serveur tombe, le routeur écarte automatiquement l'annonce.

La surveillance par heartbeat est importante car si l'annonce est prolongée sur un serveur défaillant, ce dernier va agir comme un trou noir pour les clients de proximité. Cette défaillance est la plus grave pour un système anycast. Malgré cela, cette défaillance ne va poser problème que pour les clients les plus proches et non une défaillance globale. Dans le cas du DNS, cette défaillance ne pose aucun problème, elle n'est pas différente du cas où un seul des serveurs de la zone est arrêtée.

Déni de service (distribué) et anycast[modifier | modifier le code]

Anycast sur Internet peut aider à répartir les attaques par déni de service et à réduire leur efficacité. Comme le trafic est routé vers le nœud le plus proche (et que l'attaquant n'a pas le contrôle de ce comportement), le trafic de déni de service va être réparti sur les nœuds les plus proches. L'attaque n'aura la plupart du temps aucune portée. C'est souvent la raison principale invoquée pour le déploiement d'anycast.

Cet effet peut être diminué quand les adresses unicast (utilisées pour l'administration) sont faciles à récupérer. Un attaquant peut ainsi se concentrer sur un nœud précis, comme s'il n'existait pas d'adresse anycast et que les serveurs étaient séparés. C'est pourquoi ces adresses d'administration unicast ne sont jamais annoncées et presque toujours sévèrement filtrées.

Local ou global[modifier | modifier le code]

Dans certaines situations de déploiement anycast, on peut faire une différence entre nœuds locaux et globaux. Les nœuds locaux sont destinés majoritairement à fournir un avantage à la communauté directe et locale. Leurs annonces sont souvent faites avec la communauté BGP no-export pour éviter que les routeurs les annoncent à leurs pairs (c’est-à-dire que l'annonce reste dans la zone locale).

Quand des nœuds locaux et globaux sont déployés en même temps, l'annonce des nœuds globaux est souvent préfixée de plusieurs Autonomous System pour forcer le chemin le plus court vers le nœud local. Les serveurs DNS racine F et K utilisent aujourd'hui des nœuds locaux et globaux.

Références[modifier | modifier le code]

Voir aussi[modifier | modifier le code]

Liens externes[modifier | modifier le code]