Virtuelle Realität

Wie man ein Open Source Anycast CDN aufbaut: Ein umfassender Leitfaden

Virtuelle Realität
Building an open source anycast CDN (2021)

Erfahren Sie, wie ein leistungsfähiges Anycast Content Delivery Network (CDN) mit Open Source Technologien aufgebaut wird, inklusive der Herausforderungen bei DNS, HTTP Caching und TLS-Verwaltung sowie bewährter Methoden zur Netzwerkoptimierung und Automatisierung.

In der heutigen digitalen Welt sind schnelle, zuverlässige und skalierbare Content Delivery Networks (CDNs) unverzichtbar für die Auslieferung von Webinhalten an Nutzer auf der ganzen Welt. Ein Anycast CDN, das auf der Anycast-Routing-Technologie basiert, bietet hierbei mehrere Vorteile, vor allem was Ausfallsicherheit und niedrige Latenzzeiten angeht. Obwohl große Unternehmen häufig proprietäre Lösungen nutzen, gewinnt der Aufbau eines eigenen Open Source Anycast CDNs zunehmend an Bedeutung – sowohl als Lernprojekt als auch als praktikable Lösung für kleinere Anbieter. Das Konzept begann im Sommer 2020 mit der Neugier eines jungen Netzwerkbegeisterten, der während der Quarantäne sein eigenes Anycast CDN von Grund auf bauen wollte. Der Fokus lag darauf, praktische Erfahrungen zu sammeln und zum ersten Mal ein funktionierendes Anycast-DNS-System zu erstellen.

Da DNS-Protokolle überwiegend UDP nutzen und damit weniger komplex in der Zustandsverwaltung sind, wurde DNS als Einstiegspunkt gewählt. Die Realisierung begann mit der Beschaffung einer IP-Adress-Range sowie einer Autonomous System Number (ASN). Drei Debian-basierte virtuelle Maschinen wurden aufgesetzt, jeweils mit BIRD als BGP-Routing-Stack und BIND als DNS-Server-Software. Die VMs standen an unterschiedlichen geografischen Standorten und kündigten identische IP-Präfixe an, was die Kernidee von Anycast umsetzte: dieselbe IP-Adresse über verschiedene Orte zu verbreiten, sodass der Nutzer stets den geografisch nächstgelegenen oder am besten erreichbaren Server anfragt. Über ein paar Hundert Zeilen Ansible Playbooks gelang die Automatisierung der Konfiguration von BGP und DNS.

Spannend war vor allem das Experiment, das Routing von einer der Anycast-Knoten abzuziehen und zu beobachten, wie schnell die anderen Knoten die Anfragen übernahmen – ein eindeutiger Beweis für die Effektivität der Anycast-Technologie. Obwohl das Netzwerk stabil lief, wurde schnell klar, dass manuelle DNS-Zonenverwaltung durch Bearbeitung von Dateien unpraktisch ist und nicht skalierbar. Daher entwickelte sich die Architektur weiter und ein Control Plane wurde implementiert. Diese zentrale Steuerebene basierte auf einer Kombination aus Flask API für den Webendpunkt, MongoDB für die Speicherung von DNS-Daten und BeanstalkD als Message Queue zur Orchestrierung der Updates. Änderungen an DNS-Zonen wurden so programmgesteuert angenommen, gespeichert und anschließend an alle Anycast-Knoten verteilt.

Ein wichtiges Designprinzip war dabei, die Interaktion zwischen Control Plane und Knoten so einfach wie möglich zu halten. Anstatt komplexer RPC-Aufrufe wurde auf den Austausch von JSON-Blobs via SSH gesetzt. Dies erhöhte die Sicherheit und reduzierte den Aufwand für Kommunikationsprotokolle. Mit eingeführter Nutzer-Authentifizierung konnten darüber hinaus Freunde und andere Nutzer ihre eigenen Domains auf dem Netzwerk hosten. Nach der soliden Etablierung der DNS-Infrastruktur erfolgte die Ausweitung auf HTTP Caching.

Hierfür wurden die Open Source Produkte Varnish als Cache-System und Caddy als Reverse Proxy verwendet. Der Herausforderung der TLS-Zertifikatsverwaltung wurde besondere Aufmerksamkeit geschenkt, da bei Anycast die Prüfungen von Let’s Encrypt zwangsläufig verteilt und asynchron stattfinden. Der initiale Versuch, das HTTP-01 ACME Verfahren zu automatisieren, erwies sich als zu komplex und fehleranfällig, da der Node, der das Zertifikat beantragte, nicht zwangsläufig auch den Validierungs-Request bedienen konnte. Ein glücklicher Zufall brachte die Entdeckung der DNS-basierten ACME Challenge, die das System erheblich vereinfachte. Die Validierung erfolgt dabei über DNS-TXT-Einträge, die zentral über die eigene DNS API eingepflegt wurden.

Dadurch entfiel die Notwendigkeit, HTTP-Endpunkte an jeder einzelnen Anycast-Edge-Node zu betreiben und zu synchronisieren. Das Netzwerk erweiterte sich geografisch sowie strukturell. Wo zuvor einzelne Bare-Metal-Server oder VMs pro Point of Presence (PoP) betrieben wurden, wurde der Einsatz eines größeren PoP mit mehreren VMs realisiert. Diese waren über BGP mit dem lokalen Router verbunden und verwendeten Equal-Cost Multi-Path (ECMP) Routing zur Lastverteilung der eingehenden Anfragen. Das führte zu einer effizienteren Nutzung von Ressourcen und verbesserte die Skalierbarkeit erheblich.

Mit wachsender Anzahl von BGP-Sessions stieg auch der Aufwand für die Konfiguration und Verwaltung. Die ursprünglichen Ansible Playbooks reichten bald nicht mehr aus, um eine Vielzahl von Peering-Umgebungen mit den entsprechenden Filtern und Sicherheitsmechanismen abzubilden. Als Lösung wurde ein eigener „BIRD Configuration Generator“ (BCG) in Go entwickelt, der basierend auf einer einfachen YAML-, TOML- oder JSON-Config automatisch BIRD-Konfigurationen inklusive RPKI-, IRR- und Max-Prefix-Filter erstellt. Dabei wurde die PeeringDB als Datenquelle genutzt, was erheblich die Automatisierung und Fehlerreduzierung in der Netzwerkverwaltung ermöglichte. Um den Betrieb und Zustand des Netzwerks genau beobachten zu können, kamen unterschiedliche Monitoring-Werkzeuge zum Einsatz.

Ein zentraler Route Collector, der multihop iBGP-Feeds von allen Anycast-Knoten sammelt, verschafft einen Überblick über die tatsächlich annoncierten und empfangenen Routen und deren Attribute, was besonders für das Traffic Engineering wichtig ist. Darüber hinaus wurden Prometheus und Grafana zur Auswertung von Performance-Metriken genutzt, darunter CPU, Bandbreitenauslastung, Status der BGP-Sessions und spezifische Statistiken zu BIND, Varnish und Caddy. Ergänzend kamen Community-basierte Tools wie NLNOG RING und RIPE Atlas zum Einsatz, um von weltweit verteilten Messpunkten aus Routenverläufe, Latenzen und mögliche „scenic routes“ zu identifizieren und zu optimieren. Zur Optimierung wurde zudem ein benutzerdefiniertes Tool entwickelt, mit dem man Pings von mehreren Quell-IP-Adressen ausführen und die Ergebnisse übersichtlich in Tabellenform darstellen kann. So lassen sich Latenzzeiten, Paketverlust und andere Netzwerkparameter verschiedener Anbieter und Leitungen effizient vergleichen.

Das Projekt ist exemplarisch für den Aufbau moderner Infrastrukturen mit Open Source Software, die durch clevere Automatisierung und Monitoring auch mit begrenzten Ressourcen betrieben werden können. Derzeit wird die Steuerungsebene komplett neu in Go entwickelt, darunter auch Features wie DNSSEC-Unterstützung und individuell definierbare Cache-Policies. Parallel entsteht eine hochverfügbare Anycast-Container-Plattform, die die Skalierbarkeit und Flexibilität des Netzwerks noch weiter erhöhen wird. Der Funktionsumfang, die Automatisierung und das Zusammenspiel aus Netzwerkprotokollen und Applikationsebene geben tiefe Einblicke in das, was bei kommerziellen CDNs hinter der Kulisse passiert. Für technisch Interessierte bietet der Quellcode unter GitHub die Möglichkeit, selbst mitzuwirken oder Lösungen an eigene Bedürfnisse anzupassen.

Darüber hinaus gibt es Videos und Vorträge, beispielsweise auf NANOG-Konferenzen, die das gesamte Projekt und die erlernten Lektionen ausführlich dokumentieren. Insgesamt zeigt das Projekt eindrucksvoll, dass Anycast-CDNs nicht nur großen Konzernen vorbehalten sind. Mit fundiertem Wissen, der richtigen Open Source Infrastruktur und viel Leidenschaft lassen sich leistungsfähige, weltweite Netzwerke selbst aufbauen und betreiben. Besonders für kleine Webanbieter und Forscher bietet sich hier eine spannende Möglichkeit, die Mechanismen moderner Kommunikationstechnik zu verstehen und selbst zu gestalten.

Automatischer Handel mit Krypto-Geldbörsen Kaufen Sie Ihre Kryptowährung zum besten Preis

Als Nächstes
Sebastião Salgado, Acclaimed Brazilian Photographer, Is Dead at 81
Donnerstag, 03. Juli 2025. Sebastião Salgado: Das Leben und Erbe des brasilianischen Meisterfotografen

Ein umfassender Rückblick auf Sebastião Salgados bemerkenswerte Karriere, seine einflussreichen Werke und seinen bleibenden Eindruck auf die Fotografie sowie den Umwelt- und Humanismusdiskurs.

Pain in the Dots
Donnerstag, 03. Juli 2025. Verwirrung um Git: Die Bedeutung der zwei und drei Punkte in Log und Diff verstehen

Eine umfassende Erklärung der unterschiedlichen Bedeutungen der zwei- und drei-Punkt-Notation in Git Log und Git Diff, deren Auswirkungen auf die Versionsverwaltung und wie Entwickler dadurch ihren Workflow optimieren können.

Tesco reveals executive shake-up to strengthen market leadership
Donnerstag, 03. Juli 2025. Tesco stärkt Marktführerschaft durch umfassenden Führungswechsel

Tesco setzt mit einer strategischen Umstrukturierung seiner Führungsebene klare Akzente, um seine Marktposition im hart umkämpften Einzelhandel weiter auszubauen. Die Neubesetzungen auf Schlüsselpositionen spiegeln Teslos Bestreben wider, flexibler und digitaler auf Marktveränderungen zu reagieren und neue Wachstumspotenziale nachhaltig zu erschließen.

Page Says Big US Tech Companies 'Are Awesome'
Donnerstag, 03. Juli 2025. Warum große US-Tech-Unternehmen weiterhin beeindruckend bleiben

Eine tiefgehende Analyse der aktuellen Entwicklung großer US-Technologieunternehmen, ihrer Marktaussichten und warum sie für Investoren weiterhin attraktiv sind, insbesondere im Kontext globaler Wirtschaftsereignisse und europäischer Märkte.

Tether-Chef verteidigt Verzicht auf MiCA-Zulassung für USDT
Donnerstag, 03. Juli 2025. Tether-CEO Paolo Ardoino kritisiert MiCA-Regulierung – Warum USDT keine EU-Zulassung anstrebt

Der Tether-Chef Paolo Ardoino erklärt seine Entscheidung, den größten Stablecoin USDT nicht unter der europäischen MiCA-Verordnung zu registrieren. Er beleuchtet die Risiken der MiCA-Vorschriften für Stablecoins und die Auswirkungen auf den europäischen Finanzmarkt sowie den Umgang von Tether mit globalen Regulierungsanforderungen.

Tether leaves the EU market due to new MiCA restrictions
Donnerstag, 03. Juli 2025. Tether verlässt den EU-Markt: Auswirkungen der MiCA-Regulierung auf Stablecoins

Tether zieht sich aufgrund der neuen MiCA-Vorschriften aus dem europäischen Markt zurück. Die Entscheidung wirft wichtige Fragen zur Zukunft von Stablecoins in Europa und deren regulatorischer Anpassung auf.

Why Tether’s CEO Firmly Refuses to Comply With MiCA
Donnerstag, 03. Juli 2025. Warum der CEO von Tether die MiCA-Regulierung kategorisch ablehnt: Ein Blick auf die Kontroverse um USDT in Europa

Die ablehnende Haltung von Tethers CEO gegenüber der europäischen MiCA-Regulierung wirft ein Schlaglicht auf die Herausforderungen im Spannungsfeld von Krypto-Innovation und staatlicher Kontrolle. Die Entscheidung hat weitreichende Konsequenzen für den Stablecoin-Markt, die europäische Bankenwelt und den Einfluss des US-Dollars in der Eurozone.