CDN: Wie ist es möglich, dass mein DNS je nach Standort des Besuchers eine andere IP liefert?

8

Ich habe diese Erklärung gefunden, wie ein CDN funktioniert. Aber eines verstehe ich nicht wirklich. Nehmen wir an , ich Setup mehrere DNS - Server an meinem Standort und sie verwenden , um die Name - Server - Domänen dns1.example.com, dns2.example.comund dns3.example.com. Diese DNS-Server können je nach Standort des Besuchers (Ping, Geodatenbank, Browsersprache oder was auch immer) eine Server-IP bereitstellen. Jetzt aktualisiere ich diese Nameserver-Einstellungen für meine Domain www.example.orgin der Registrierung.

Jetzt versucht die allererste Anforderung www.example.orgmit einer abgelaufenen TTL, die Domäne aufzulösen. Es fragt:

  1. die lokalen .hosts / DNS, wenn TTL abgelaufen ist:
  2. der Internetprovider DNS, wenn TTL abgelaufen ist:
  3. das Root-DNS, wenn TTL abgelaufen ist:
  4. mein Einheimischer dns1.example.com

Aber wenn ich es richtig verstehe, wird die neue IP zu all diesen Nameserver-Caches hinzugefügt, bis die TTL wieder abläuft. Wie ist es also möglich, abhängig von seinem Standort andere IPs an den Besucher zu senden?

In dieser Antwort sagte theandym, die Anfrage sei "weitergeleitet", aber ich glaube nicht, dass ein CDN so funktioniert, weil "weiterleiten" bedeutet, den Übertragungsweg zu verlängern, was zu einer längeren Ladezeit führt. Oder benötigt ein CDN keine TTL für die Domain?

Update1
Durch diese Frage fand ich Googles Dokument, in dem beschrieben wurde, wie die CDN-Leistung optimiert wurde. Es wurde nicht erklärt, wie das CDN im Allgemeinen funktioniert, aber es gab interessante Erklärungen wie die folgenden:

Wenn danach ein Client versucht, auf dem CDN gehosteten Inhalt abzurufen, wird der Client zu dem Knoten umgeleitet, der die geringste Latenz zu seinem Präfix aufweist. Diese Umleitung basiert jedoch auf dem Präfix, das der IP-Adresse des DNS-Nameservers entspricht, der die URL des Inhalts im Namen des Clients auflöst, der sich normalerweise zusammen mit dem Client befindet.

Dies bedeutet, dass Google zunächst die Latenz aller IP-Präfixe überprüft und eine DNS-Auflösungstabelle (?) Für alle verfügbaren Präfixe definiert. Und wenn ein Besucher die IP hat, wird die IP 198.51.100.231des Google-Servers verwendet, die für das Präfix festgelegt ist 198.51.100.0. Aber noch einmal: Woher weiß Googles DNS, welche IP der Besucher verwendet? Die meisten Besucher lösen die Domain von Google über ihren Internetprovider auf und dadurch erfolgt die Auflösung über diese externen DNS-Server oder nicht?

Als zusätzliches Beispiel: Wenn ich eine DNS-Auflösung für die Domain facebook.commit verschiedenen Online-Tools (gehostet in verschiedenen Ländern) starte, wird sie in verschiedene IPs mit verschiedenen Domains aufgelöst, wie z.

  • 31.13.92.36 Rückseite: edge-star-mini-shv-01-frt3.facebook.com
  • 31.13.76.68 Rückseite: edge-star-mini-shv-01-sea1.facebook.com
  • 31.13.69.228 Rückseite: edge-star-mini-shv-01-iad3.facebook.com
  • 157.240.2.35 Rückseite: edge-star-mini-shv-01-ort2.facebook.com

Danach dachte ich, es könnte vom Standort des vom Besucher verwendeten DNS-Servers abhängen, aber ich versuchte es mit meinem eigenen (Deutsche Telekom, Deutschland), Googles (8.8.8.8) und einem großen aus Frankreich (Orange), und alle kehrten für facebook.comden IP 31.13.92.36.

mgutt
quelle
1
Es ist unwahrscheinlich, dass eine TTL jemals abläuft, bevor ein Paket ein Ziel erreicht, es sei denn, es gibt eine Routing-Schleife. Die meisten Menschen können ein Paket mit etwa einem Dutzend Sprüngen um die Welt senden, und die minimale Standard-TTL beträgt normalerweise 64.
Ron Maupin
@ RonMaupin Ich denke, dies bezieht sich auf die TTL des DNS-Eintrags, nicht auf die IP-TTL.
JFL
@Khaled Ich habe das Google-Dokument gelesen, aber es erklärt nicht, wie ein CDN funktioniert. Es wird nur erklärt, wie sie das CDN optimiert haben, um die Latenz so gering wie möglich zu halten. Ich habe meine Frage aktualisiert.
mgutt
@mgutt "Wie funktioniert ein CDN" ist für SF viel zu weit gefasst.
EEAA

Antworten:

6

Ok, es scheint, ich kann jetzt eine grobe Antwort auf meine eigene Frage geben. Anurag Bhatia sagt, dass es zwei Methoden gibt, wie ein CDN funktioniert:

DNS

Lassen Sie DNS die Magie ausführen, dh wenn Benutzer vom Netzwerk-ISP A nach cdn.website.com suchen, sollten sie im Gegenzug eine Unicast-IP-Adresse von Cache A erhalten, ähnlich wie bei Benutzern, die vom ISP B-Netzwerk kommen, sollte die Unicast-IP von Cache B zurückkehren.

Nehmen wir an, wir haben einen Server mit der IP 1.2.3.4in den USA und einen Cache-Server mit der IP 2.3.4.5in Deutschland. Jetzt versucht ein Besucher, die Domain aufzulösen example.org. Wenn er seine Netzwerkeinstellungen nicht geändert hat, verwendet er den DNS-Server seines Internetdienstanbieters (ISP). Und dieser ISP fragt jetzt dns1.example.com(der Nameserver der Domain) nach der IP. Jetzt kommt es auf den Standort des ISP an. Wenn es sich in Deutschland befindet, dns1.example.comkehrt es zurück 2.3.4.5und wenn es sich in den USA befindet, kehrt es zurück 1.2.3.4.

Diese Methode kann jedoch einen Nachteil haben: Jedes Mal, wenn ein Benutzer seine Netzwerkeinstellungen ändert und einen inkompatiblen EDNS0- DNS-Anbieter ( siehe IETF-Entwurf) verwendet (z. B. den zentralen DNS-Server eines Unternehmens) dns1.example.com, antwortet dieser erneut mit der IP- Adresse , die diesem DNS am nächsten liegt Standorte, aber diesmal befindet sich der Besucher höchstwahrscheinlich an einem anderen Standort, was zu einer höheren Latenz führt.

EDNS0-kompatible DNS-Anbieter geben Informationen über den Benutzer an den autorisierenden DNS-Server weiter. Der autorisierende DNS-Server kann also mit der IP neben dem Standort des Benutzers antworten:

Wenn Sie heute OpenDNS oder Google Public DNS verwenden und eine Website besuchen oder einen Dienst verwenden, der von einem der teilnehmenden Netzwerke oder CDNs im Global Internet Speedup bereitgestellt wird, wird der DNS-Anforderung eine abgeschnittene Version Ihrer IP-Adresse hinzugefügt. Der Internetdienst oder CDN verwendet diese abgeschnittene IP-Adresse, um eine fundiertere Entscheidung darüber zu treffen, wie er reagiert, damit Sie mit dem optimalsten Server verbunden werden können.

...

; EDNS: version: 0, flags:; udp: 512
; CLIENT-SUBNET: 130.89.89.0/24/21

Anycast

Routing zum Weiterleiten an den nächsten Cache-Knoten basierend auf dem Anycast-Routing-Konzept. Hier verwenden Cache A, Cache B und Cache C dieselbe identische IP-Adresse, und das Routing sorgt dafür, dass die nächstgelegene erreicht wird.

Ich verstehe Anycast wegen BGP usw. nicht wirklich, aber ich denke, die weitere Erklärung von Anurag Bhatia gibt eine Idee, wie es funktionieren könnte:

  1. Die Optimierung basiert auf BGP-Routing und -Ankündigung mit geringer DNS-Rolle.
  2. Dieses Setup ist sehr schwer aufzubauen und zu skalieren, da für jede Funktion auf globaler Ebene jede Menge Peering und konsistente Transitanbieter an jedem Standort erforderlich sind. Wenn einer der Peers eine Route zu Upstream- oder anderen Peers verliert, kann es aufgrund einer Unterbrechung des Anycasts zu viel unerwartetem Datenverkehr in einem bestimmten Cluster kommen.
  3. Dieses Setup ist nicht vom DNS-Recursor abhängig und daher funktioniert Google DNS oder OpenDNS einwandfrei.
  4. Dies spart eine erhebliche Menge an IP-Adressen, da dieselben Pools an mehreren Standorten verwendet werden.

Anycast hat auch einen Nachteil: Das Routing ist flexibel. Während sich der Zielknoten zu Beginn einer TCP-Sitzung möglicherweise in Netzwerk A befindet, kann er sich in Netzwerk B ändern. Daher wird Anycast in der Praxis nur für UDP verwendet. UDP ist ein Protokoll ohne Sitzung.

Die meisten CDNs verwenden DNS für HTTP / HTTPS-Verkehr und Anycast für DNS-Anforderungen.

mgutt
quelle
1
Anycast funktioniert, weil ein Router mehrere Pfade zu einem Zielnetzwerk haben kann und die Anycasting-Entität mehrere einrichtet, aber die beste (aus ihrer Sicht) für die Installation in ihrer Routing-Tabelle auswählt. Die beste Route für einen Router, auf dem BGP ausgeführt wird, ist höchstwahrscheinlich die Route mit den wenigsten AS, die zum Erreichen des Ziels durchlaufen werden müssen. Das bedeutet, dass verschiedene Router in verschiedenen AS unterschiedliche bessere Pfade haben könnten / würden. Dies bedeutet auch, dass wenn eines der Zielnetzwerke ausfällt, jeder Router mit dem besten Netzwerk es zurückzieht und ein anderes bestes Ziel auswählt.
Ron Maupin
Danke, aber das war nicht der (verwirrendste) Teil für mich. Ich verstehe nicht wirklich, wie es möglich ist, dass alle Anycast-Router eines CDN-Anbieters dieselbe "globale IP" haben können und wie ein europäischer Benutzer schließlich auf dem nächsten europäischen Anycast-Router landet.
mgutt
2
Das wollte ich erklären. Sie können mehrere Router für dasselbe Netzwerk werben lassen. Der Rest der Router im Internet empfängt anscheinend alle Routen zum selben Ziel und installiert die beste Route aus ihrer eigenen Perspektive, normalerweise die wenigsten AS-Hops. Die Router haben keine Ahnung, dass dies tatsächlich unterschiedliche Standorte auf der ganzen Welt sind. Sie wissen nur, dass sie mehrere Routen zum gleichen Zielnetzwerk haben, selbst wenn sich diese Ziele an geografisch getrennten Standorten befinden.
Ron Maupin
@JensBradler Schön zu finden und danke für das Hinzufügen von Infos über EDNS0!
mgutt