Inspiriert vom letzten Chaosradio-Podcast ( CR182: Klempner des Internets ) habe ich nach langer Zeit mal wieder mit dem Tool traceroute herumgespielt. Mit traceroute kann man erfahren, welchen Weg die TCP-Pakete auf dem Weg von mir zu einem gewünschten Zielserver gehen. Ich war bislang immer von der Vorstellung fasziniert, daß wenn ich in die Adresszeile meines Browsers einen amerikanischen Webserver - z.B. "www.whitehouse.gov" - eingebe, meine Datenpakete mit Mops-Geschwindigkeit durch tausende Kilometer lange Glasfaserkabel, welche tief am Boden des Antlantiks liegen, hindurchjagen. In der Chaosradio-Folge wurde ich allerdings belehrt, daß es sein kann, daß mir statt eines Servers in Amerika (möglicherweise direkt in Washington) irgendeine lumpige Kiste in Europa oder anderswo antwortet. Wie kann das sein?
Das Zauberwort in diesem Zusammenhang heißt Content Delivery Network (CDN). Was für mich etwas entzaubernd wirkte, macht aber im WWW mit seinen Millionen Usern und Traffic-intensiven Angeboten viel Sinn. Wenn jetzt z.B. eine große amerikanische Software-Firma Ihre dortigen Server mit irgendeinem großerem Update-Paket bespielt, welches sich auch viele User in Europa herunterladen wollen, so werden die teuren unterseeischen Glasfaserkabel unnötig mit dem millionenfachem Download eines Downloads belastet. Stattdessen also wird das Downloadpaket auf einer Serverfarm irgendwo in Europa kopiert. Wenn jetzt ein User aus Europa z.B. auf den Downloadlink klickt, werden die hierdurch verursachten Datenpakete automatisch durch den ISP anstelle durch das Seekabel an die Serverfarm irgendwo in Europa geroutet. Der User in Europa bekommt davon überhaupt nichts mit. Im Endeffekt funktioniert das mit den CDNs wie bei Mirror- oder Spiegelserver, nur daß der Spiegelserver durch z.T. dynamische Routing-Metriken automatisch zugewiesen wird.
Einen ersten Hinweis auf CDNs liefert der Linux-Befehl host . Host löst einen Servernamen in eine IP-Adresse auf oder umgekehrt (DNS Lookup Tool). Für whitehouse.gov ergibt sich bspw. folgende Ausgabe:
Akamai ist hierbei einer der großen CDN-Player. Den Weg der Pakete zwischen mir und dem Server kann man nun mit dem Tool traceroute herausbekommen. Unter meinem Ubuntu-Linux benötige ich für traceroute root-Rechte. Alternativ kann man mit
das SUID-Bit so setzen, daß fortan auch nicht-privilegierte User traceroute ausführen können. Dann:
Der erste Eintrag (Zeile beginnend mit 1) ist mein DSL-Router im lokalen Netz. Dann geht es weiter über meinen Provider Arcor. Schon nach wenigen Stationen endet das Paket bei einem Akamai-Server. Blöd ist nur, daß man nicht mit Sicherheit herausfindet, wo die Server stehen. Es gibt im Internet einige Dienste, wo man anhand der IP-Adresse den Standort eines Rechners/Servers herausfinden kann. Für die Akamei-Server ergeben sich jedenfalls Standorte in den USA. Das könnte aber auch daran liegen, daß Akamai seinen Firmensitz dort hat und dort vielleicht auch die IP-Adressen für ihre weltweit verteilten Serverkisten bekommt.
Ein viel "schöneres" Beispiel ohne Akamai-Gedöns ergibt sich, wenn man die Route zum Webserver der University of Colorado nachvollzieht. Hierzu habe ich ein Perl-Skript als Overlay für traceroute geschrieben. Das Perl-Skript "trace.pl" ruft im wesentlichen traceroute auf. Für jede Zeile mit IP-Adresse wird der Standort des Servers mit Hilfe der Datenbank von hostip.info ermittelt und mit ausgegeben:
Zuerst passiert das Paket ein Arcor-Rechenzentrum in Köln. Dann gehts weiter nach Frankfurt ins Netz des internationalen Kommunikationsdienstleisters Level3. Frankfurt (DE-CIX) ist einer der großen europäischen Knotenpunkte des Internets . Hier sitzen viele Internetservice-Provider (ISPs) und tauschen sich dort Pakete zwischen Ihren Netzen aus. An den Knotenpunkten wird faktisch aus den ganzen dort vertretenen ISP- und CDN-Netzen das große Internet geknüpft. In den folgenden Zeilen sieht man beim Vergleich der Hostnamen und Lokations-Infos schon, daß letztere nicht so genau sind. Vor dem Sprung über den Atlantik gibt es nämlich noch eine Zwischenstation in Paris (und Paris liegt nicht in den USA). Am Ende nimmt ein Server in Boulder am Campus der Uni Colorado die Pakete entgegen.
Das Skript trace.pl ist Free Software und kann am Ende dieses Beitrags heruntergeladen werden und unter den Bedingungen der GPL v3 weiterverwendet werden. Statt des IP-Location-Services von hostip.info könnte man noch auf die Datenbanken von http://software77.net/geo-ip/ oder https://www.ipligence.com/ zugreifen.