Anycast IP und Routing
Jeder Administrator mit TCP/IP-Kenntnissen kann mit Unicast, Multicast und Broadcast etwas anfangen. Aber wie funktioniert Anycast und wozu ist es gut?
Anycast-Routing eignet sich eigentlich nur für UDP-basierte Pakete wie z.B. DNS-Anfragen.
Die verschiedenen IP-Adressen
Wenn Sie die drei bekannten Klassen betrachten, dann hat jede ihren Einsatzbereich:
- Unicast - Die persönliche IP-Adresse
Ein System hat eine IP-Adresse, die sonst nirgendwo im LAN/WAN verwendet wird und unter der er erreichbar ist, Die Adressen bewegen sich zwischen 0.0.0.0 und 223.255.255.255 - Multicast - 1:n
Diese Adressen von 224.0.0.0-247.255.255.255 gehören nicht einem Zielsystem sondern mehrere Clients können auf diese Adresse hören. Sie teilen dazu den Routern per IGMP (Internet Group Messaging Protocol) mit, dass Sie diesen Kanal hören wollen. Sie eigenen sich ideal für Streaming von Daten an viele Clients. die damit nur einmal pro Subnetz verteilt werden müssten. Leider nutzen viele Systeme diese Option nicht, da man z.B. im Internet sich dann ja eine Nummer "reservieren" müsste. Im LAN hingegen ist das ein durchaus nützliches Verfahren um Daten an viele Clients parallel zu verteilen. Denken Sie mal neben Audio/Video auch an die Softwareverteilung. - Broadcast 255.255.255.255 oder x.x.x.255
Ein Subnetz-Broadcast oder ein globaler Broadcast erlaubt es die Clients in einem Subnetz oder sogar alle, sofern Router und Firewalls das nicht unterbinden, mit Daten zu versehen. Broadcasts sind oft auch "Suchpakete", z.B. für Namensauflösung (NetBIOS vor den Zeiten von WINS und DNS, UPNP etc.)
Diese drei Klassen gibt es übrigens auch eine ebene tiefer auf dem MAC-Level. Auch hier hat jedes System eine eindeutige MAC-Adresse und neben der Broadcastadresse FF:FF:FF:FF:FF:FF gibt es auch noch Multicast-Adressen, wie diese z.B.: von Windows-NLB genutzt werden. Darauf werde ich hier aber nicht weiter eingehen.
Es gibt keine gesonderten "Anycast-Adressen", sondern die für Anycast-Routing verwendete Adressen sind ganz normale Unicast-Adressen. Der Unterschied ist das Routing zu diesen Subnetzen mit den Adressen. Dazu gleich etwas mehr.
Grenzen von Geo-DNS
Der Einsatzweck von Anycast ist es, eine Anfrage eines Clients an einen netzgeografisch „nahen“ Server zu leiten. Sicher gibt es Ansätze wie Geo-DNS (https://www.msxfaq.de/konzepte/pinpointdns.htm), bei denen ein DNS-Server sich die IP-Adresse des Clients betrachtet und aus dem Subnetz den nächsten Server ermittelt und dessen IP-Adresse auf die DNS-Abfrage ausliefert. Dieses Verfahren ist aber ineffektiv und mit Einschränkungen verbunden
- Falscher Client
So ist es essentiell, dass der Client auch seinen Provider-DNS fragt, der sich dann über die DNS-Server bis zum Ziel per „REFER“ durchfragt. Wenn der Client aber einen DNS-Server wie z.B. Google (8.8.8.8/8.8.8.4) oder Quad9 (9.9.9.9/2620:fe::fe mit DNSSEC oder 9.9.9.10/2620:fe::10) ohne DNSSEC) fragen, dann kann es sein, dass das Ziel eine falsche Adresse ausliefert. Wenn ich z.B. am Telekom-DSL Anschluss nach outlook.office365.com frage, aber statt meines Routers und dem DSL-DNS-Servers lieber Google oder einen anderen DNS-Server frage, dann bekomme ich eventuell eine ungünstigen IP-Adresse zurück - Unvollständige Netzwerk-Map
Selbst wenn ich den richtigen DNS-Frage und das Ziel dann meine IP-Adresse oder die meines Provider-DNS sieht, dann muss er immer noch um die „Leitwege“ und deren aktuellem Status wissen. Solche Daten können unstimmig sein und ich lande vielleicht nicht beim „nächsten“ Server - DNS Cache
Wenn ich als Client eine Antwort bekommen habe, dann merke ich mir die im Cache, selbst wenn danach das Zielsystem oder die Leitung dahin ausgefallen sein sollte. Ich „schwenke“ nicht und der Anbieter muss irgendwie die IP-Adresse woanders wieder online stellen. - Es müssen Namen sein
Geo-DNS geht natürlich auch nur, wenn der Client einen DNS-Namen abfragt und nicht direkt eine IP-Adressen ansprechen will, wie dies z.B. beim TURN/STUN-Server einer VoIP Lösung meist der Fall ist
Insofern sind intelligente DNS-Antworten, die abhängig vom Standort des Clients den naheliegenden funktionstüchtigen Server ausliefern zwar nett, aber nicht immer ausreichend
Routing von Anycast IP-Adressen
Anycast geht einen anderen Weg, bei dem die IP-Adresse das Ziel ist. Es ist egal ob der Client die IP-Adresse irgendwie selbst über ein Provisioning-Protokoll bekommt oder doch per DNS auflöst. Er bekommt aber auf jeden Fall die eine weltweit gleiche IP-Adresse. Nun wird niemand alle Anfragen von Clients in ein zentrales Datacenter routen. Die Abhängigkeit von diesem einen Ort oder Server ist ebenso wenig gewünscht wie die Laufzeit der Pakete um die halbe Welt. Ein paar Bilder helfen bei der Erklärung:
Schritt | Bild |
---|---|
Wir fangen erst einmal einfach an. Ein Client unten ist mit dem Internet verbunden. Der Client hat natürlich seinen "Router" als Default Gateway. Der Router aber hat über das interne Provider Netzwerk gelernt, über welchen Weg es zum angeforderten Ziel (hier 8.8.8.8) kommt. Nehmen wir an, dass der Client und der >Service beim gleichen Provider hängen. |
|
Natürlich hat ein Provider nicht nur genau einen Weg. Die meisten Provider haben natürlich redundante Verbindungen. Insofern ist auch das innere Bild in der Regel etwas komplexer. Der Zugangsrouter kenn nun zwei Wege zum Ziel, die entweder über Router 3 oder Router 4 gehen, wobei hier beide Male die Kosten gleich sind. Fällt ein Weg aus, so kann der Router 1 dynamisch den Verkehr über den anderen Weg routen. |
|
Nun nehmen wir an, dass der Anbieter dies Dienstes seinerseits auch eine Redundanz derart eingerichtet hat, dass er über mehrere Provider geht. Sein Subnetz (hier 8.8.8.0/24) ist also Provider-unabhängig. Die beiden Router des Anbieters speisen als den Weg zum Netz über die beiden Router 2 (beim Provider 1) und Router 5 (beim Provider 2) ein. Diese Routen werden im Verbund der Provider und vorhandener Peerings ausgetauscht, so dass der Router 4 nun zwei Wege zum gleichen Ziel kennt: Fällt also der Link beim einen Provider aus, kann mit dem entsprechendem Peering der Weg nun auch über den anderen Provider führen. Die Router entscheiden einfach anhand der Kosten. So ist das Internet sehr tolerant in Bezug auf den Ausfall von Teilstrecken. |
|
Diese Bild ist nun das erste Mal, dass Sie stutzig machen sollte. Es gibt nämlich zwei Server, die beide die gleiche IP-Adresse haben und z.B. in verschiedenen Rechenzentren und Standorten stehen. Eigentlich ist diese Konfiguration so ja nicht erlaubt, da IP-Adressen im Internet "eindeutig" sein müssen. Hier ist aber genau das Absicht aber an den Leitwegen hat sich erst einmal nichts geändert. Der Client als auch "das Internet" kennt immer noch die beiden Wege und je nach Verfügbarkeit der Leitung werden Pakete auch zu einem der Server geroutet. Bei gleichen Kosten könnte es sogar sein, dass ein Paket links und das andere Paket nach rechts geroutet wird. Damit sollten Sie auch verstanden haben, dass diese Art der Anbindung sich eigentlich nur für "connectionless" - Dienste eignet. Also Dienste die z.B. auf UDP aufsetzen und jedes Paket in sich komplett und vollständig ist. Es sollten also nicht mehrere Pakete als Gruppe immer zum gleichen Server gehen müssen. |
|
Interessant wird das ganze Bild nun, wenn es zwei Clients an unterschiedlichen Standorten aus ihrer Sicht den gleichen Server ansprechen. Hier sind zwei Clients, die beide mit der 8.8.8. sprechen wollen und das Paket an "ihren Router" senden. Sie sehen aber anhand der Leitwege, dass der linke Client über Router 1 zuerst zum Router 2 und damit zum linken Service gelenkt wird. Für den rechte Client hingegen ist der rechte Service "näher", d.h. er geht über den Router 4 oder 7 zu dem rechten Service. Nun stellen sie sich vor, dass die Server zwar beide immer die gleiche Antwort liefern aber netztechnisch auf unterschiedlichen Kontinenten stehen. Wenn nun noch die "langen Leitungen" über die Ozeane "teuer" sind, dann können Sie sich selbst ausmalen, zu welchen Service der Client geht. Er wird ganz automatisch immer bei dem Service landen, der "nahe" zu dem Netzwerkstandort des Clients ist. |
|
Wir haben also über Anycast-Routing einen einfachen aber effektiven Automatismus, die Pakete eines Clients immer zu dem Service zu senden, der hinsichtlich IP-Routing den kürzesten Weg hat und zudem noch verfügbar ist. Das Internet routet Pakete anhand von Leitwegen über Router weiter. Die Router "lernen" den Weg zu einem Ziel über Routingprotokolle wie BGP und nicht nur aus Überlegungen zur Ausfallsicherheit gibt es meist mehrere Wege zum gleichen Ziel. Es ist damit aber völlig "normal", dass ein Router mehrere Wege zum gleichen Subnetz erhält und eben den Weg nutzt, der verfügbar und günstig ist. Wenn nun z.B. ein großer Provider an mehreren Standorten einfach das gleiche Subnetz betreibt und dieses per BGP auch bekannt gibt, dann überschneiden sich diese Meldungen natürlich und der Router mehrt sich einfach den kürzesten Weg.
Der Router kann gar nicht erkennen, dass die beiden Wege nun nicht zum genau gleichen Zielsystem laufen sondern absichtlich zu unterschiedlichen Servern gehen, die aber für den Client alle den gleichen Datenbestand haben. Das ist natürlich Voraussetzung für Anycast. Alle Server müssen auf die Anfrage des Clients mit der gleichen Antwort reagieren. Das ist für DNS-Anfragen natürlich einfach, da es hier keine "Session" oder Anmeldung gibt. Auf eine Anfrage kommt eine Antwort und die Transaktion ist damit abgeschlossen.
Alle anderen Dienste, die z.B. eine Anmeldung erfordern, sollten nach der Initialen Anmeldung z.B. mit Tokens und Cookies arbeiten, damit ein Client beim Wechsel zu einem anderen Server dennoch seine Session weiter behalten kann. Exchange 21013/2016 Server sollten das z.B. können, da der Frontend-Service anhand eines HTTP-Headers die Anfrage immer zum Backend-Server weiter gibt.
Damit das natürlich sinnvoll funktioniert, muss jeder Server exakt die gleichen Daten liefern können und im Idealfall auch damit umgehen, dass ein Client aufgrund veränderter BGP-Routen auch zu einem anderen Server geroutet wird. In so einer Situation ist ein „sitzungsloses“ Protokolle (z.B. REST, token-basierte Anmeldungen etc.) von Vorteil, bei der ein anderer Server allein anhand der http-GET/POST-Daten die Antwort auch liefern kann.
Auswertung Anycast-IP?
Anycast-IP-Adressen unterscheiden sich nicht von normalen Unicast-IP-Addressen. Sie sehen also einer Adresse erst einmal nicht an, ob es mehrere Server an verschiedenen Standorten gibt. Aber es gibt Hinweise, mit denen Sie solchen Adressen auf die Schliche kommen können. Der Schlüssel dazu sind mehrere Clients, die überunterschiedliche Internetprovider an verschiedenen Standorten im Internet verbunden sind. Wobei wir hier schon von „großräumigen“ Abmessungen sprechen, d.h. zwei Clients in Deutschland oder sogar Europa werden vermutlich schnell beim gleichen Endpunkt landen. Dazu sind die Bandbreiten und Laufzeiten so gering. Interessant wird es beim Wechsel der Kontinente. Wenn ein Anbieter wirklich mehrere Server mit der gleichen IP-Adresse in der Welt verteilt hat, dann sollte ein Tracert mit dem Fokus auf die vorletzte Zeile hoffentlich den Router ausgeben, der das Paket dann an den Server weiter leitet. Wenn sich hier dann unterschiede zeigen, dürfte das als sehr starker Hinweis auf Anycast-IP-Adressen zu deuten sein. Eine Garantie ist es aber nicht.
DNS-Server sind natürlich ideale Kandidaten für Anycast-IP-Adressen, um dem Client immer zum Server zu routen, der aus Sicht des Netzwerks am "nächste" und damit am schnellsten ist
Nur weil der DNS-Server auf für den Client kurzem Weg erreichbar ist und schnell antwortet, ist das keine Garantie, dass die Antwort "korrekt" ist. Sie mag zwar einen erreichbaren Server liefern aber der Dienstanbieter hat die Anfrage vom DNS-Server und nicht von ihrem Client oder Provider bekommen. Es kann also eine weniger optimale Antwort sein
Das kann dann wieder der Dienstanbieter dadurch heilen, indem der Dienst selbst per Anycast-IP erreichbar ist. Damit lieferten alle DNS-Server einfach immer die gleiche IP-Adresse, egal wo sie stehen. So können wir diese Dienste dann auch einfach ermitteln. Wir fragen verschiedene DNS-Server in der Welt und schauen uns die IP-Adressen an.
Wenn ein Dienst aus verschiedenen Orten immer die gleiche IP-Adresse liefert, dann nutzt der Anbieter entweder Anycast-IP mit vielen verteilten Servern oder es gibt wirklich nur einen Server an einem Standort. Wir müssen also dann immer noch die Laufzeit messen. Die MSXFAQ wird z.B. ohne Anycast nur in Europa gehostet. Egal wo sie sind, bekommen Sie immer die gleiche IP-Adresse zum Server. Die Abrufgeschwindigkeit ist aus Asien oder USA dann natürlich langsamer. Um dies zu zeigen, habe ich einen Tracert auf die msxfaq.de aus zwei Netzwerken gemacht. Schon anhand der Laufzeiten sehen Sie, dass die MSXFAQ nur in Deutschland liegt und nicht geografisch verteilt wird, so dass man mit Geo-DNS Auflösungen oder Anycast-Routing etwas bewirken könnte.
Standort | Traceroute |
---|---|
Deutschland T-DSL |
Routenverfolgung zu www.msxfaq.de [217.160.0.234] über maximal 30 Abschnitte: 1 3ms 1ms 2ms fritz.box [192.168.178.1] 2 10ms 9ms 17ms 87.186.225.45 3 15ms 12ms 12ms 217.0.92.86 4 10ms 9ms 9ms pb-sb2-i.PB.DE.NET.DTAG.DE [62.154.107.117] 5 18ms 16ms 16ms f-ee5-i.F.DE.NET.DTAG.DE [62.154.14.238] 6 19ms 24ms 62ms 80.157.204.170 7 22ms 29ms 21ms ae-11.bb-c.bs.kae.de.oneandone.net [212.227.120.18] 8 23ms 20ms 21ms 217-160-0-234.elastic-ssl.ui-r.com [217.160.0.234] |
USA |
http://www.fifi.org/services/traceroute?hostname=www.msxfaq.de&nprobes=1&resolved=yes&submit=Traceroute tantale.home.fifi.org 0% 1 1 0.43 0.43 0.43 173-228-89-1.dsl.static.fusionbroadband.com 0% 1 1 21.87 21.87 21.87 gig1-29.cr1.lsatca11.sonic.net 0% 1 1 21.85 21.85 21.85 ??? 100% 0 1 0.00 0.00 0.00 50.ae4.gw.pao1.sonic.net 0% 1 1 21.82 21.82 21.82 palo-b22-link.telia.net 0% 1 1 21.84 21.84 21.84 nyk-bb4-link.telia.net 0% 1 1 96.81 96.81 96.81 prs-bb4-link.telia.net 0% 1 1 167.83 167.83 167.83 prs-b7-link.telia.net 0% 1 1 171.91 171.91 171.91 1o1internet-ic-309320-prs-b7.c.telia.net 0% 1 1 172.33 172.33 172.33 ae-8-0.bb-a.bap.rhr.de.oneandone.net 0% 1 1 182.15 182.15 182.15 217-160-0-234.elastic-ssl.ui-r.com 0% 1 1 181.75 181.75 181.75 |
Die über 180ms am Ende sind ein deutliches Zeichen, dass hier eine große Stecke zu überwinden ist.
Wer nutzt Anycast-IP?
Für ein paar Gegenstellen habe ich die Erreichbarkeit und Auflösung geprüft.
Service | Traceroute zum Service |
---|---|
DNS-Server |
Auf der Seite Anycast DNS habe ich die Details zu öffentlichen DNS-Servern wie GoogleDNS, Quad, Cloudflare, OpenDNS und NextDNS beschrieben. |
Skype or Business TURN |
Die Skype for Business TURN-Servern des Skype for Business Online Network Assessment Tool sind wohl Anycast-IP-Adressen. Die Wege sind hier am Ende auf jeden Fall unterschiedliche Adressen.
C:\>tracert 13.107.8.20 Routenverfolgung zu 13.107.8.20 über maximal 30 Abschnitte 1 4ms 3ms 3ms fritz.box [192.168.178.1] 2 28ms 20ms 19ms loopback1.90.brun.0001-01.dus.de.net.telefonica.de [62.52.200.184] 3 19ms 18ms 19ms ae14-0.0002.dbrx.02.dus.de.net.telefonica.de [62.53.5.38] 4 22ms 22ms 24ms ae3-0.0001.corx.01.dus.de.net.telefonica.de [62.53.0.12] 5 22ms 22ms 21ms ae5-0.0001.corx.01.fra.de.net.telefonica.de [62.53.0.5] 6 24ms 23ms 23ms bundle-ether15.0001.dbrx.02.fra.de.net.telefonica.de [62.53.25.254] 7 23ms 24ms 23ms ae5-0.0001.prrx.11.fra.de.net.telefonica.de [62.53.19.144] 8 24ms 23ms 23ms microsoft.fra.ecix.net [62.69.146.70] 9 28ms 30ms 27ms be-72-0.ibr02.fra30.ntwk.msn.net [104.44.10.0] 10 29ms 30ms 27ms be-5-0.ibr02.ams.ntwk.msn.net [104.44.5.17] 11 29ms 28ms 29ms be-1-0.ibr01.ams.ntwk.msn.net [104.44.4.215] 12 27ms 25ms 27ms 13.107.8.20
C:\>tracert 13.107.8.20 Routenverfolgung zu 13.107.8.20 über maximal 30 Abschnitte 1 3ms 2ms 1ms fritz.box [192.168.178.1] 2 10ms 13ms 9ms 87.186.225.45 3 13ms 12ms 13ms 217.0.92.86 4 10ms 9ms 12ms pb-sb2-i.PB.DE.NET.DTAG.DE [62.154.107.45] 5 17ms 16ms 16ms 217.239.45.98 6 17ms 17ms 16ms 80.157.131.138 7 19ms 27ms 18ms tor3.fra.msedge.net [104.44.80.143] 8 * * * Zeitüberschreitung der Anforderung. 9 31ms 16ms 34ms 13.107.8.20
Host Loss Recv Send Best(ms) Avg(ms) worst(ms) tantale.home.fifi.org 0% 1 1 0.46 0.46 0.46 173-228-89-1.dsl.static.fusionbroadband.com 0% 1 1 21.60 21.60 21.60 gig1-29.cr1.lsatca11.sonic.net 0% 1 1 25.63 25.63 25.63 ??? 100% 0 1 0.00 0.00 0.00 50.ae4.gw.pao1.sonic.net 0% 1 1 20.76 20.76 20.76 152.ae4.gw.equinix-sj.sonic.net 0% 1 1 21.57 21.57 21.57 8075.microsoft.com 0% 1 1 21.92 21.92 21.92 be-87-0.ibr01.by2.ntwk.msn.net 0% 1 1 25.80 25.80 25.80 ae80-0.pao-96cbe-1b.ntwk.msn.net 0% 1 1 22.27 22.27 22.27 tor3.pao.msedge.net 0% 1 1 25.84 25.84 25.84 ??? 100% 0 1 0.00 0.00 0.00 13.107.8.20 0% 1 1 22.51 22.51 22.51 Auch wenn der vorletzte Hop nicht sichtbar ist, so ist der davor liegende Microsoft Router unterschiedlich und geografisch codiert. (FRA = Frankfurt) und die Laufzeiten zeigen auch, dass aus den USA der Verkehr auch in den USA terminiert wird. |
SharePoint |
Sharepoint verweist bei Zugriffen auf die Adresse "<tennatname>.onmicrosoft.com" auf eine AnycastIP-Adresse Siehe Office 365 DNS Details |
Teams |
Auch der Zugriff auf "https://teams.microsoft.com" löst weltweit auf die gleiche IP-Adresse auf. Das gilt aber nicht für die TURN-Server Hier kommt GeoOP zumEinsatz. Siehe Office 365 DNS Details |
Anycast und UDP-Steams bzw. TCP-Connections
Ganz am Anfang habe ich geschrieben, dass Anycast eigentlich nur für UDP geeignet ist. Genauer sogar nur für Dienste, bei denen relativ wenige Pakete den Weg zu einem Server unterwegs sind und auch die Antwort nach dem letzten Paket abgeschlossen ist. Es kann bei Anycast ja nicht verhindert werden, dass während einer Übertragung sich Routen im Verbundnetzwerk ändern und die Pakete nun einen "besseren" Weg zu der IP-Adresse nehmen. Das kann aber bei Anycast natürlich bedeuten, dass die Pakete nun an ein komplett anderes System gehen, welches nur die gleiche IP-Adresse hat. Eine "Affinität" zu einem Host ist nicht gegeben. Daher ist es mit kurzen UDP-Anfragen zwar kein Problem aber eine TCP-Session würde dann natürlich abbrechen.
Daher habe ich Anycast bislang eben auch nur bei Google DNS-Services und dem Skype for Business Network Assessment Tool gefunden. Bei beiden ist die Kommunikation zeitlich auf wenige DNS-Pakete oder eine kurze Zeitdauer (RTP over UDP) beschränkt und vor allem "Stateless".
Die Nutzung für DNS-Anfragen ist natürlich aber genial, da der DNS-Server ja bevorzugt die TCP-Services ausliefern kann, die "neben" dem DNS-Server in der gleichen Region stehen. Wenn der Client auf dem Weg zum DNS-Server schon in diesem RZ landet, dann ist die eindeutige IP für einen TCP-Service im gleichen RZ mit hoher Wahrscheinlichkeit auch die beste Wahl für den Client.
Anycast und Skalierung
Das optimierte Routing von Client zu netztechnisch nächsten Server haben wir nun erklärt. Aber die Arbeit für den Anbieter geht noch weiter. Es kommen beim Eingang nun Pakete an diese eine besondere IP-Adresse an und natürlich kann der Provider genau einen Server dafür aufstellen. Aber Verfügbarkeit und Lastteilung sind auch hier hiergefordert und irgendwann ist auch der schnellste Server an seiner Lastgrenze, selbst wenn ein sehr schneller Loadbalancer davor geschaltet wird. Aber auch dann ist es mit IP-Routing möglich, einfach mehrere Server hinter einer IP-Adresse zu verbergen. Natürlich dürfen diese nicht im gleichen Subnetz stehen. Das ist mit NLB zwar technisch möglich aber dann würden alle Server weiterhin alle Pakete bekommen. Aber was hindert mich daran, meinen Routern auch intern mehrere Wege zu dem anscheinend gleichen Server zu geben.
Ich muss meine Server hinter weiteren Netzwerken verstecken, damit die Router die Pakete entsprechend "stateful" weiterleiten.
Weitere Links
- DNS Provider
- Anycast DNS
- NLB
- Skype for Business Online Network Assessment Tool
- Office 365 DNS Details
- DoH - DNS over HTTPS
- Anycast
https://de.wikipedia.org/wiki/Anycast - Ping and Tracert commands on Azure VM
https://blogs.msdn.microsoft.com/gsamant/2015/02/16/ping-and-tracert-commands-on-azure-vm/ - Traceroute.org - Liste von Traceroute-Diensten,
die per Browser genutzt werden können.
http://www.traceroute.org - Anycast – Was ist das?
https://www.recast-it.com/themen/anycast/ - Anycast Domain Name Service
https://www.pch.net/services/dns_anycast