Filesharing
Transcription
Filesharing
Filesharing-Systeme Napster, Freenet, Gnutella, KaZaA Seminarvortrag von Stefan Weinbrenner, 747094 Einleitung Was ist ein P2P-Netzwerk? Gegenteil: Server-Client • Server: bieten möglichst dauerhaft verfügbar einen Dienst (z.B. Bereitstellung von Daten) an Clients: verbinden sich bei Bedarf nach diesem Dienst mit den Servern • Kommunikation: nur „Client zu Server“ oder „Server zu Client“ (normalerweise) • Beispiel: WWW, Mail Nachteile: hohe Anfälligkeit (Single Point of Failure); ungleiche Netzlast, da Traffic bei Server wesentlich höher P2P-Netzwerk • Peers: bieten Dienste an und nehmen welche in Anspruch (Server und Client in einem) • Aufgabe: Speicherung und Bereitstellung von großen Datenmengen, verteilt auf alle Teilnehmer • Hohe Dynamik: – häufig wechselnde Peers – wenig dauerhaft verfügbare Datenquellen – hohe Heterogenität (Netzanbindung, Latenzzeiten, Datenbestand, Onlinezeit) P2P-Netzwerk • Vorteile: – Daten liegen meist mehrmals vor – Verlust eines Peers beeinflusst wegen redundanter Verbindungen nicht die Integrität des Netzes – leistungsfähige Serversysteme werden nicht benötigt – weniger kontrollierbar (Nachteil?) Typisierung • reine P2P-Netze: jeder Peer hat die gleichen Aufgaben - das "normale" Gnutella - Freenet • hybride P2P-Netze: dedizierte Server übernehmen Aufgaben wie Indizierung - Napster - Audiogalaxy • gemischte P2P-Netze: alle Peers haben zwar grundsätzlich die gleichen Aufgaben, aber einige (leistungsfähigere) übernehmen mehr davon - KaZaA (Super-Nodes) - Gnutella (Ultrapeers) Die Filesharing-Systeme im Detail Napster, Freenet, Gnutella, KaZaA Napster Geschichte • Mai 1999: Napster geht online und macht die P2P-Technik überhaupt populär, erstes großes P2P-Netz. • Dezember 1999: Napster wird von der amerikanischen Musikindustrie (RIAA) juristisch angegriffen wegen Urheberrechtsverletzung. • März 2001: Napster geht in der ursprünglichen Form offline. Napster Typ • hybrides P2P-Netz, d.h. Client-Server-Prinzip noch erkennbar • zentraler Servercluster (ca. 160 Server) mit der Aufgabe die Daten zu indizieren, Metadaten über Peers bereitzustellen Suchanfrage Datentransfer Napster Suchmethode 1. Connect mit einem der Server 2. Suche in den connecteten Peers 3. Weiterleitung der Suche an die anderen Server Bei Fund: Direktverbindung zwischen den Peers Suchanfrage Datentransfer Napster Suchmethode • Verfügbare Metadaten • Bandbreite • Anzahl an shared files • Anzahl an Up-/Downloads • Name und Größe der shared files • IP-Adresse Suchanfrage Datentransfer Napster Fazit • war ein sehr großes P2P-Netz, aber inzwischen offline • Indizierung ermöglicht schnelles Suchen • zentraler Servercluster bedeutet single point of failure, angreifbar Gnutella Geschichte • entwickelt von dem WinAmp-Programmierer Justin Frankel (März 2000) • wurde nur für "einige Hundert Benutzer" konzipiert • Gnutella ist freie Software (offenes Protokoll), keine Firma steht dahinter, kann also nicht wie Napster juristisch verfolgt werden • galt daher schon früh als Alternative zu Napster • „Gnutella“ ist eine Verbindung aus GNU und Nutella, dem Lieblingsbrotaufstrich von J. Frankel. Gnutella Geschichte • AOL (Nullsoft wurde von AOL übernommen) war gegen ein Filesharing-Programm aus dem eigenen Hause, versuchte Verbreitung zu verhindern. • Die offizielle Seite wurde innerhalb 24 Stunden von AOL offline genommen. • Programmierer aus aller Welt versuchten die erste Version nachzubauen (reverse engineering). • J. Frankel unterstützte dies, er wollte ursprünglich Gnutella 1.0 als Open Source veröffentlichen. • Durch beabsichtigte Indiskretion kamen die genauen Protokollspezifikationen an die Öffentlichkeit. • Danach wurden viele andere Clients entwickelt: LimeWire, BearShare, Gnucleus, die späteren Versionen von Morpheus Gnutella Typ • reines P2P-Netz (vollkommen dezentral), da alle Peers gleiche Funktion haben • Peers bilden Gruppen durch Ping/Pong-Methode, diese Gruppen überlappen und Bilden zusammen das GnutellaNetzwerk (overlap network) • Connect über well-known peers (gnutellahosts.com, router.limewire.com) Gnutella Suchvorgang • Breitensuche (BFS): Anfragen werden an alle Nachbarn gebroadcastet, jeder Peer gibt Anfragen mit TTL weiter und antwortet dem Anfragenden direkt bei Fund • ineffizientes Suchverfahren, da viel Bandbreite und Rechenzeit verbraucht, allerdings werden in sehr kurzer Zeit alle Peers erreicht Gnutella Problem: Skalierbarkeit • BFS produziert sehr viel redundanten Verkehr: sehr ineffizient • Jordan Ritter (Mitbegründer von Napster) berechnete den Zusammenhang zwischen der Zahl der Nodes, der Zahl der Connections pro Node, der TTL, der Größe eines Paketes und der Größe des davon erzeugten Traffics. • Folgerung: BFS erzeugt zu hohe Netzbelastung und bringt letztlich das Netz zum erliegen. Gerade Peers mit Schmalbandverbindung sind oft komplett ausgelastet mit der Beantwortung von Suchanfragen. • Akut wurde das Problem tatsächlich, als Napster geschlossen wurde und sehr viele User in kurzer Zeit als Alternative auf Gnutella wechselten („Napster Flood“). • Lösung: Erweiterungen Gnutella Erweiterungen • Ultrapeers: Peers mit guter Netzanbindung, die temporär als Server für 50 Peers dienen Æ Einteilung in Unternetze, Anfragen werden nicht netzweit, sondern entweder subnetzintern oder zwischen Ultrapeers ausgetauscht (seit LimeWire 2.0) • Gnutella2-Protokoll (nicht abwärtskompatibel): • Umstieg von TCP auf UDP • intelligente Routing Algorithmen • Checksummen und Download in Slices (wurde mit Shareaza eingeführt) Gnutella Fazit • nur mittelmäßig großes, komplett dezentrales P2P-Netz • offenes Protokoll • ist wegen ineffizienter Breitensuche (BFS) nicht skalierfähig • durch Erweiterungen upgradebar KaZaA Geschichte • basiert auf dem FastTrack-Protokoll • wurde von den Schweden Niklas Zennström und Janus Friis im März 2001 durch ihre niederländische Firma veröffentlicht • war Anfang 2003 die beliebteste Tauschbörse • hat mehr User als Napster je hatte • proprietäres Protokoll (Lizenzgebühren) • Musikindustrie schleust gewollt gefälschte MP3s ein um Tausch von copyright-geschütztem Material entgegenzuwirken (seit Mitte 2002) KaZaA 3 Versionen des Clients • KaZaA Media Desktop (KMD): Spyware, d.h. finanziert sich über integrierte Software, die u.a. Surfgewohnheiten des User loggen soll • KaZaA Plus: spyware-frei, allerdings nicht mehr kostenlos • KaZaA Lite bzw, K++: Third-Party-Produkt, Anpassung vom KMD, bisherige Versuche K++ zu verbieten waren erfolglos - enthält keine Spyware - deaktiviert Suchlimits - setzt den "participation level" auf Maximum KaZaA Typ • zwischen Napster und Gnutella: gemischtes P2P-Netz, es gibt sog. Super-Nodes • basiert wie Grokster, iMesh und Morpheus (die frühen Versionen) auf dem FastTrack-Protokoll. FastTrack selbst ist Erweiterung des Gnutella-Protokolls. • Connect geht über feste (hart codierte) IP-Adressen von bekannten Supernodes. Suchanfrage Datentransfer KaZaA Vorteile zu Gnutella • Supernodes: Index-Server (siehe Napster) für langsamere Clients Æ Reduktion der Netzbelastung, normale Clients müssen keine Suchanfragen mehr weiterleiten • Clients, die über viel Rechen- und Netzkapazitäten verfügen, werden automatisch zu Supernodes (allerdings auch deaktivierbar) • Resume: Abgebrochene Übertragungen können fortgesetzt werden. • Gleichzeitiges Downloaden von verschiedenen Peers • participation level: Je mehr shared files, desto höher der participation level. Je höher der participation level, desto größer ist die eigene Priorität in anderer User Warteschlangen. Problem: K++ missbraucht diese Funktion. KaZaA Fazit • baut auf Gnutella auf, ist aber größer (mehr Peers) • Skalierbarkeitsproblem durch Superpeers behoben (daher gemischtes P2P) • proprietäres Protokoll, Hersteller von Clients müssen Lizenzgebühren bezahlen • Resume und Swarming erhöhen Datenaustauschraten Freenet Geschichte • entstanden im Juli 1999 aus einer Arbeit des damaligen Studenten Ian Clarke aus Edinburgh, Schottlang • Ziele: Anonymität, „Unzensierbarkeit“ • Hintergrund: Antwort auf die vermehrten Versuche das Internet zu zensieren, den Zugang zu bestimmten Daten zu kontrollieren oder die Autoren bestimmter Inhalte zu verfolgen • vollständig in Java geschrieben Freenet Beschreibung • reines P2P-Netz (vollkommen dezentral), da alle Peers gleiche Funktion haben • Daten werden nicht auf dem lokalen Peer, sondern mehrfach auf anderen Peers gespeichert: Halter der Daten ist nicht der Bereitsteller! (Anonymisierung und Erhöhung der Verfügbarkeit) • Dateien haben eindeutig bestimmte IDs, die sog. Content Hash Keys (CHKs, normales SHA-1). • Datenaustausch findet anonym statt: über eine Reihe von Knoten, jede Peer-to-Peer-Connection ist verschlüsselt, an keinem Zwischenpunkt sind die Endpunkte bekannt Freenet Suchvorgang • Tiefensuche (DFS): Anfragen werden an jeweils einen Nachbarn geschickt. • Routing Tables: Knoten merken sich, wo welche CHKs liegen und fragen später auch bei ähnlichen (!) CHKs dort nach. Ergebnis: Knoten spezialisieren sich auf bestimmte CHKBereiche. • sparsames, aber langsames Suchverfahren, da kaum Bandbreite und Rechenzeit verbraucht wird, allerdings ist die Zeit um alle Peers zu erreichen sehr hoch Data request Data reply Request failed Freenet Einfügevorgang • Daten werden dort eingefügt, wo Queries auch enden würde • dem eigenen Knoten wird INSERT-Message mit TTL übergeben, INSERT wird wie QUERY behandelt • ist TTL = 0 gibt der Knoten ein OK-Signal zurück, Daten werden über diese Route hochgeladen • Knoten auf Route passen ihre Routingtables an. • Während der Übertragungen: Daten werden manchmal gecached, Rückweg wird manchmal verschleiert (ein Knoten gibt sich selbst als Sender aus und speichert intern den echten Sender) Freenet Fazit • recht kleines, vollkommen dezentrales P2P-Netz • Daten werden nicht auf dem bereitstellenden System, sondern im Netz verteilt gespeichert. • Datenbereitsteller und Datenhalter sind anonym und können nicht ermittelt werden. • stark eingeschränkte Suchmöglichkeiten • Zur Suche wird nur ein benachbarter Knoten gefragt (Tiefensuche, DFS). Tabellarischer Überblick Struktur Suchmethode Stärken Schwächen Größe in Peers (ca.) Napster hybrid Indexserver schnelle Suche (Indexserver) zentral (SPOF) 13.600.000 (im Feb ‘01) Gnutella rein BFS dezentral, erweiterbar Skalierbarkeit 20K - 40K KaZaA (Fasttrack) gemischt mod. BFS dezentral, skaliert, Resume, Swarming nur 100 Suchtreffer, Spyware 3M - 5M Freenet rein DFS Anonymität, verteilte Speicherung schlechte Suchmöglichkeit mehrere Tausend (??)