Anycast ist ein Verfahren zur Netzwerkadressierung und zum Routing, bei dem mehreren Servern an unterschiedlichen geografischen Standorten dieselbe IP-Adresse zugewiesen wird, sodass das Routing-System die Pakete jedes Clients automatisch an den topologisch nächstgelegenen Server weiterleiten kann, ohne dass eine Konfiguration seitens des Clients erforderlich ist. Anycast wird häufig für DNS und andere replizierte Dienste verwendet und verbessert die Latenz, verteilt die Kapazität und erhöht die Ausfallsicherheit, indem der Distributed-Denial-of-Service-Verkehr auf mehrere Standorte verteilt wird. Eine erfolgreiche Anycast-Bereitstellung erfordert ein sorgfältiges Betriebsmanagement, einschließlich Zustandsprüfungen in Verbindung mit Routenankündigungen, einer konsistenten Datensynchronisation zwischen den Standorten sowie einer Überwachung, um Routing-Instabilitäten und Sitzungsunterbrechungen zu verhindern.
So funktioniert Anycast
Anycast funktioniert, indem dasselbe IP-Präfix von mehreren Standorten aus bekannt gegeben wird, sodass das Routing-System selbst entscheidet, welcher Server die einzelnen Pakete empfängt. Es ist keine Client-Konfiguration und kein spezielles Protokoll erforderlich.
- Zuweisung der gemeinsamen Adresse: Jeder Server oder Standort wird mit derselben Dienst-IP-Adresse konfiguriert, in der Regel auf einer Loopback- oder Dienstschnittstelle.
- Das Präfix ankündigen: Jeder Standort kündigt das Präfix, das diese Adresse enthält, seinen Nachbarn an, in der Regel mithilfe von BGP.
- Router wählen einen Pfad aus: Router im gesamten Netzwerk vergleichen die konkurrierenden Ankündigungen und wählen den besten Pfad nach den üblichen Routing-Regeln aus, beispielsweise den kürzesten AS-Pfad.
- Pakete erreichen den nächstgelegenen Standort: Ein Client sendet eine Anfrage an die gemeinsame Adresse, und das Netzwerk leitet diese an den Standort weiter, der aus Routing-Sicht am nächsten liegt.
- Zurückziehen bei Ausfall: Wenn ein Standort ausfällt oder dessen Zustandsprüfung fehlschlägt, stellt er die Bekanntgabe des Präfixes ein. Die Router konzentrieren sich dann auf die verbleibenden Standorte.
„Nächstgelegen“ bedeutet in Bezug auf Routing-Metriken „am nächsten“, nicht unbedingt in Bezug auf die geografische Entfernung oder die geringste Latenz. Da sich Routen während einer Sitzung ändern können, eignet sich Anycast besser für kurze, zustandslose Datenaustausche wie DNS-Abfragen über UDP als für langlebige Verbindungen, es sei denn, das Design berücksichtigt Pfadänderungen.
Häufige Probleme mit Anycast
Wenn ein Standort sein Präfix wiederholt zurückzieht und erneut ankündigt, wechseln Clients zwischen Standorten hin und her und erleben zeitweise Ausfälle. Eine Route-Flap-Dämpfung durch Upstream-Anbieter kann das Präfix dann unterdrücken und den Standort für längere Zeit unerreichbar machen.
Ein Standort, dessen DNS-Software ausgefallen ist, dessen Router jedoch weiterhin das Präfix ankündigt, zieht weiterhin Anfragen an, beantwortet aber keine davon. Betreiber benötigen einen lokalen Zustandscheck, der die Route zurückzieht, sobald der Dienst nicht mehr reagiert.
Verschiedene Instanzen können unterschiedliche Antworten zurückgeben, wenn Zonendaten oder die Konfiguration nicht synchronisiert sind. Nutzer in verschiedenen Regionen melden dann widersprüchliche Ergebnisse, und das Problem lässt sich von einem Standort aus nur schwer reproduzieren.
Eine Routing-Änderung kann dazu führen, dass ein Client während einer Sitzung auf einen anderen Standort umgeleitet wird. Bei UDP-Abfragen mit nur einem Paket ist dies harmlos, kann jedoch lang andauernde TCP-Verbindungen zurücksetzen, darunter DNS-over-TCP-Zonenübertragungen oder umfangreiche Antworten.
Routing-Richtlinien und Peering entscheiden darüber, welchen Standort ein Client erreicht – nicht die geografische Entfernung. Clients können an einem weit entfernten Standort mit hoher Latenz landen, daher messen Betreiber die tatsächlichen Abfragepfade und passen die Präfix-Ankündigungen entsprechend an.