-
Diese
Erfindung bezieht sich im Allgemeinen auf Gruppenkonnektivität über ein
Netzwerk und bezieht sich im Speziellen auf einen Dateitransfer
in einem Peer-to-Peer-Netzwerk.
-
Während die
Anzahl und Popularität
von Peer-to-Peer-Netzwerken zunimmt und diese neue Anwendungen finden,
werden die Nachteile der derzeitigen Peer-to-Peer-Technologie deutlicher.
Die Zunahme der PC-Rechenleistung hebt diese Defizite auch hervor,
wenn sie dem Mangel einer gleichzeitigen, umfangreichen Zunahme
der Bandbreite, die für die
Verwendung für
Peer-to-Peer-Konnektivität
zur Verfügung
steht, gegenüber
gestellt wird.
-
Zum
Beispiel sind existierende Techniken und Methodiken für die Übertragung
von Dateien in Peer-to-Peer-Netzwerken auch ungünstig und zusehends langsam,
wobei eine schnelle Mitbenutzung von Informationen über das
Netzwerk gehemmt wird. Wenn das Peer-to-Peer-System für Realtime-Gruppen-Interaktivität eingesetzt
wird, kann jegliche wesentliche Verzögerung einer Dateiübertragung
ein Gefühl,
dass man getrennt wurde, zur Folge haben, wodurch eine angebliche
Realtime-Interaktion anfängt,
sich für
den Benutzer mehr wie eine gezierte, weniger dynamische Interaktion
anzufühlen.
Deshalb ist es wichtig, Dateiübertragungen
so oft als möglich zu
beschleunigen.
-
Ein
primärer
Grund für
die Langsamkeit von derzeitigen Peer-to-Peer-Dateiübertragungsprotokollen liegt
in dem Verfahren, mit welchem die Dateiübertragungsbelastung auf die
Peer-to-Peer-Knoten verteilt ist. Zum Beispiel fächert in einer typischen Übertragungstechnik
ein Knoten, der eine Datei zur gemeinsamen Benutzung mit der Gruppe
besitzt, die Datei einfach auf alle Gruppenmitglieder durch paralleles
oder serielles Hochladen der Datei zu jedem auf. Dies zwingt dem
verteilenden Knoten einen signifikanten Nachteil bezüglich Bandbreite
und Rechenleistung auf, weil er jeden Anfragenden oder jeden Knoten,
der Material empfängt,
bedienen muss, und dies in einer hauptsächlich simultanen oder gleichzeitigen
Weise tun muss. Als Ergebnis ist die Dateiübertragungsgeschwindigkeit
bezüglich
der gesamten Gruppe an die Rechenleistung und Verbindungsgeschwindigkeit
des verteilenden Knotens gebunden.
-
Es
gibt einen Bedarf für
einen Peer-to-Peer-Dateiübertragungsmechanismus,
der eine ausreichende Übertragungsgeschwindigkeit
bereitstellt, so dass im Wesentlichen Realtime-Gruppen-Interaktionen
unter Verwendung eines Peer-to-Peer-Netzwerkes ohne übermäßige Unterbrechungen
aufgrund von Dateiübertragungsverzögerungen
gemacht werden können.
-
"OAI-P2P: a peer-to-peer
network for open archives",
PROC. OF THE ICPPW'02,
18. August 2002, Seiten 463–468,
Ahlborn B. et al., beschreibt Peer-to-Peer-Protokolle zur gemeinsamen
Benutzung von Informationen zwischen Benutzern, wobei Metadaten
als Kleber zwischen Inhalten und der Gemeinschaft verwendet werden.
Jeder teilnehmende Peer kann Konsument und Anbieter von Datenservicen
sein. Es wird eine Peer-to-Peer-Infrastruktur zum
Speichern, Abfragen und Austauschen von Metadaten vorgeschlagen,
wobei jeder teilnehmende Peer seine Metadateninformationen verfügbar machen
kann. Die Peers veröffentlichen
das, was sie anbieten, durch Anzeigen, welche Art von Servicen sie
zur Verfügung
stellen.
-
EP-A-0993163
offenbart ein System, wobei Datenpakete zu einem Client durch ein
flexibles, nicht-deterministisches verteiltes System von Peer-Clients
zugestellt werden, welche die Datenpakete zwischenspeichern, um
die Effizienz und Geschwindigkeit zum Zustellen der Datenpakete
zu dem Client zu maximieren. In diesem System wird, wann immer ein
Client ein Datenpaket anfrägt,
zuerst ermittelt, ob das Datenpaket lokal in dem Speicher liegt,
und wenn es nicht gefunden wird, wird ein Versuch gemacht, das Datenpaket
von einem Peer-Client im lokalen Netzwerk abzurufen, und wenn es
weiter nicht gefunden wird, wird ein letzter Versuch gemacht, das
Datenpaket von dem Server abzurufen.
-
Es
ist die Aufgabe der vorliegenden Erfindung, effizientere Verfahren
zum Übertragen
von Dateien zwischen Knoten eines Peer-to-Peer-Netzwerkes bereitzustellen.
-
Die
Aufgabe wird durch den Gegenstand der unabhängigen Ansprüche gelöst.
-
Bevorzugte
Ausführungsformen
der vorliegenden Erfindung sind durch die abhängigen Ansprüche definiert.
-
Die
vorliegende Erfindung richtet sich auf ein System, Verfahren und
Architektur zur effizienten Übertragung
von Dateien in einem Peer-to-Peer-Netzwerk. Das System ist an gepasst zum
Fördern
von im Wesentlichen Realtime-Dateimitbenutzung, was in einer Umgebung
für Online-Gruppen-Interaktion
besonders günstig
ist. In einer Ausführungsform
der Erfindung dienen viele Knoten des Peer-to-Peer-Netzwerkes sowohl
als Clients als auch als Server, wobei beide Dateiinformationen empfangen
und die empfangenen Informationen an andere Knoten übertragen.
Die Last der Dateiübertragung
ist in einer Ausführungsform
der Erfindung gleichmäßiger über die
Knoten des Netzwerkes verteilt, so dass üblicherweise kein Knoten eine
unverhältnismäßige Dateiübertragungsbelastung
trägt. Dies
ist nützlich,
um sicherzustellen, dass die Datei zu jedem Knoten in dem Netzwerk
so schnell wie möglich übertragen
wird.
-
In
einer Ausführungsform
der Erfindung wird die Dateiverbreitung durch die Veröffentlichung
von Dateimetadaten ausgelöst.
Nachdem die Metadaten empfangen worden sind, ermittelt jeder Knoten,
ob er die zugehörige
Datei empfangen möchte.
Wenn er wünscht,
die Datei zu empfangen, verwendet der relevante Knoten oder die
Knoten ein Pull-Modell,
um die Dateiinhalte von entsprechenden Nachbarn abzufragen. In einer
Ausführungsform
der Erfindung gibt jeder Knoten, der die Datei hat oder empfängt, seinen
Besitz der Datei bekannt, so dass andere Knoten die Datei dann von
diesen Sekundärquellen erhalten
können.
In einer Ausführungsform
der Erfindung kann ein Knoten im Wesentlichen gleichzeitig eine
Datei über
Streaming-Download von einem bestimmten Knoten empfangen und kann
dieselbe Datei über
Upload einem anderen Knoten zustellen. In dieser Ausführungsform
wird ein Erzeugungskennzeichner vorzugsweise verwendet, um zwei
Knoten, von denen jeder denselben Teil einer Datei besitzt, von
dem Versuch abzuhalten, den Rest der Datei voneinander zu erhalten.
-
Zusätzliche
Merkmale und Vorteile der Erfindung werden durch die nachfolgende
detaillierte Beschreibung von veranschaulichenden Ausführungsformen,
die mit Bezug auf die beiliegenden Figuren verläuft, ersichtlich gemacht.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Während die
beigefügten
Ansprüche
die Merkmale der vorliegenden Erfindung genau darlegen, kann die
Erfindung, zusammen mit ihren Aufgaben und Vorteilen, am besten
durch die nachfolgende detaillierte Beschreibung in Verbindung mit
den angehängten
Figuren verstanden werden, von denen:
-
1 ein
schematisches Diagramm ist, das allgemein ein exemplarisches Computersystem
darstellt, das verwendbar ist, um eine Ausführungsform der Erfindung zu
implementieren;
-
2 ein
schematisches Diagramm ist, das ein beispielhaftes Peer-to-Peer-Netzwerk
zum Ermöglichen
von Dateiübertragung
gemäß einer
Ausführungsform
der Erfindung darstellt;
-
3 ein
Flussdiagramm ist, das einen Prozess zur Dateiverteilung und -abfrage
zur Verwendung in einem Peer-to-Peer-Netzwerk gemäß einer Ausführungsform
der vorliegenden Erfindung darstellt;
-
4 ein
Flussdiagramm ist, das eine Dateiübertragungspriorisierungstechnik
für die
Verwendung in einem Peer-to-Peer-Netzwerk gemäß einer Ausführungsform
der vorliegenden Erfindung darstellt; und
-
5 ein
schematisches Diagramm ist, das eine Knoten-Client/Server-Architektur
gemäß einer Ausführungsform
der Erfindung zeigt.
-
DETAILLIERTE
BESCHREIBUNG DER ERFINDUNG
-
Mit
Bezug auf die Figuren, in denen gleiche Bezugsziffern auf gleiche
Elemente verweisen, wird die Erfindung nachstehend in dem Kontext
einer Computerumgebung beschrieben. Obwohl es zum Ausüben der
Erfindung nicht notwendig ist, wird die Erfindung so beschrieben,
dass sie durch Computer ausführbare
Instruktionen implementiert ist, sowie z.B. Programmmodule, die
durch einen Personalcomputer (PC) ausgeführt werden. Im Allgemeinen enthalten
Programmmodule Routinen, Programme, Objekte, Komponenten, Datenstrukturen
und Ähnliches,
das bestimmte Aufgaben ausführt
oder bestimmte abstrakte Datentypen implementiert.
-
Die
Erfindung kann in anderen Computersystemkonfigurationen als einem
PC implementiert sein. Zum Beispiel kann die Erfindung in Hand-Held-Geräten, Mobiltelefonen,
Multiprozessorsystemen, Mikroprozessor-basierter oder programmierbarer
Unterhaltungselektronik, Netzwerk-PCs, Minicomputern, Mainframe-Computern
und Ähnlichem
realisiert sein. Die Erfindung kann auch in verteilten Computerumgebungen
ausgeübt
werden, wo Funktionen durch dezentrale verarbeitende Geräte ausgeführt werden,
die durch ein Kommunikationsnetzwerk verbunden sind. In einer verteilten
Computerumgebung können
Programmmodule in beiden, lokalen und dezentralen Speichergeräten, liegen.
-
Obwohl
die nachfolgende detaillierte Beschreibung der Erfindung im Kontext
eines beispielhaften Allzweck-Computergerätes, wie z.B. einem konventionellen
PC 20, dargelegt ist, gilt es als verstanden, dass die
Erfindung in vielen Arten von Computerumgebungen, wie oben vorgeschlagen,
eingebaut sein kann.
-
Bevor
die Erfindung im Detail beschrieben wird, wird eine Computerumgebung,
in welcher Ausführungsformen
der Erfindung implementiert werden können, in Verbindung mit 1A beschrieben. Der PC 20 schließt einen
Prozessor 21, einen Systemspeicher 22 und einen
Systembus 23 ein, der verschiedene Systemkomponenten einschließlich des Systemspeichers
mit dem Prozessor 21 koppelt. Der Systembus 23 kann
irgendeine von verschiedenen Typen von Busstrukturen sein, einschließlich einem Speicherbus
oder Speicher-Controller, einem Peripheriebus und einem lokalen
Bus, der irgendeine von einer Vielfalt von Busarchitekturen verwendet.
Der Systemspeicher schließt
Read Only Memory (ROM) 24 und Random Access Memory (RAM) 25 ein.
Ein Basic-Input/Output-System
(BIOS) 26, das Basisroutinen enthält, die helfen, Informationen
zwischen Elementen innerhalb des PCs 20, wie z.B. während des Hochfahrens,
zu übermitteln,
ist in ROM 24 gespeichert. Der PC 20 enthält des Weiteren
ein Festplattenlaufwerk 27 zum Lesen von und Schreiben
auf eine(r) Festplatte 60, ein magnetisches Disklaufwerk 28 zum
Lesen von oder Schreiben auf eine(r) entfernbare(n) magnetische(n)
Disk 29, und ein optisches Disklaufwerk 30 zum
Lesen von oder Schreiben auf eine(r) entfernbare(n) optische(n)
Disk 31, wie z.B. eine CD-ROM oder andere optische Medien.
-
Das
Festplattenlaufwerk 27, magnetische Disklaufwerk 28 und
optische Disklaufwerk 30 sind mit dem Systembus 23 durch
eine Festplattenlaufwerksschnittstelle 32, eine magnetische
Disklaufwerksschnittstelle 33 bzw. eine optische Disklaufwerksschnittstelle 34 verbunden.
Die Laufwerke und ihre zugehörigen
computerlesbaren Medien stellen nichtflüchtigen Speicher für computerlesbare
Instruktionen, Datenstrukturen, Programmmodule und andere Daten
für den
PC 20 bereit. Obwohl die hierin beschriebene exemplarische
Umgebung eine Festplatte 60, eine entfernbare magnetische
Disk 29 und/oder eine entfernbare optische Disk 31 einsetzt, wird
es von Fachleuten begrüßt, dass
andere Typen von computerlesbaren Medien, welche Daten speichern
können,
die durch ein Computergerät
abrufbar sind, wie z.B. magnetische Kassetten, Flush-Memory-Karten,
Digital Video-Disks, Bernoulli-Kartuschen, Random Access Memonies,
Read Only Memories und Ähnliches,
ebenso in der exemplarischen Arbeitsumgebung verwendet werden können.
-
Eine
Anzahl von Programmmodulen kann auf der Festplatte 60,
der magnetischen Disk 29, optischen Disk 31, ROM 24 oder
RAM 25 gespeichert werden, einschließlich einem Betriebssystem 35,
einem oder mehreren Anwendungsprogrammen 36, anderen Programmmodulen 37,
und Programmdaten 38. Ein Benutzer kann Befehle und Informationen
in den PC 20 durch Eingabegeräte eingeben, wie z.B. einer
Tastatur 40 und einem Zeigergerät 42. Andere Eingabegeräte (nicht
gezeigt) können
ein Mikrofon, Joystick, Game Pad, Satellitenschüssel, Scanner oder Ähnliches
einschließen.
Diese und andere Eingabegeräte
sind oft mit dem Prozessor 21 durch eine serielle Anschluss-Schnittstelle 46 verbunden,
die mit dem Systembus gekoppelt ist, können aber durch andere Schnittstellen,
wie z.B. einem Parallelanschluss, Garne Port oder Universal Serial
Bus (USB) verbunden sein. Ein Monitor 47 oder anderer Typ
von Anzeigegerät
ist auch mit dem Systembus 23 über eine Schnittstelle verbunden,
wie z.B. einem Videoadapter 48. Zusätzlich zu dem Monitor schließen PCs üblicherweise
andere periphere Ausgabegeräte, nicht
gezeigt, wie z.B. Lautsprecher und Drucker, ein.
-
Der
PC 20 arbeitet in einer Netzwerkumgebung unter Verwendung
von festen oder transienten logischen Verbindungen zu einem oder
mehreren Remote Computern, wie z.B. Remote Computer 49. Der
Remote Computer 49 kann im Allgemeinen ein anderer PC,
ein Server, ein Router, ein Netzwerk PC, ein Peer-Gerät oder andere
bekannte Netzwerkknoten, oder jeglicher anderer Gerätetyp, sein,
wie z.B. irgendeiner von den hier irgendwo Genannten. Der Remoute
Computer 49 schließt üblicherweise
viele oder alle der oben in Bezug auf PC 20 beschriebenen Elemente
ein, obwohl es dafür
kein Erfordernis gibt, und nur ein Speichergerät 50 in 1A dargestellt worden ist. Die logischen
Verbindungen, die in 1A gezeigt sind,
schließen
ein Local Area Network (LAN) 51 und ein Wide Area Network
(WAN) 52 ein. Solche Netzwerkumgebungen sind alltäglich in Büros, unternehmensweiten
Computernetzwerken, Intranets und dem Internet.
-
Wenn
er in einer LAN-Netzwerkumgebung verwendet wird, ist der PC 20 mit
dem lokalen Netzwerk 51 durch eine Netzwerkschnittstelle
oder Adapter 53 verbunden. Wenn er in einer WAN-Netzwerkumgebung
verwendet wird, schließt
der PC 20 typischerweise ein Modem 54 oder andere
Mittel zum Herstellen von Kommunikationen über das WAN 52 ein.
Das Modem 54, welches intern oder extern sein kann, ist
mit dem Systembus 23 über
eine serielle Anschluss-Schnittstelle 46 verbunden. Obwohl
ein Standardmodem in einer Implementierung einer Ausführungsform
der Erfindung verwendet werden kann, wird eine Breitbandverbindung,
wie z.B. eine mit einer Kapazität
zwischen ungefähr
120 kbps und 1,5 Mbps oder mehr, im Allgemeinen ein besseres Leistungsverhalten
bringen. Programmmodule, die bezüglich
PC 20 gezeigt sind, oder Teile davon, können in dem Remote-Speichergerät gespeichert
sein. Es wird begrüßt, dass
die gezeigten Netzwerkverbindungen exemplarisch sind, und andere
Mittel zum Erstellen einer Kommunikationsverbindung zwischen den
Computern verwendet werden kann. Zusätzlich ist es nicht beabsichtigt,
dass die Erfindung auf einen bestimmten Netzwerktyp beschränkt ist.
Jeglicher Netzwerktyp, verkabelt oder kabellos, fest oder transient,
leitungsvermittelt, paketvermittelt oder eine andere Netzwerkarchitektur,
können
verwendet werden, um die vorliegende Erfindung zu implementieren.
-
In
der folgenden Beschreibung wird die Erfindung in Bezug auf Vorgänge und
symbolische Repräsentationen
von Funktionen beschrieben, die durch einen oder mehrere Computergeräte, wie
z.B. PC 20, ausgeführt
werden können,
soweit nicht anders gekennzeichnet. Als solches gilt es als verstanden, dass
solche Vorgänge
und Funktionen, die zeitweise als computerausgeführt bezeichnet sind, die Manipulation
von elektrischen Signalen, die Daten in einer strukturierten Form
darstellen, durch den Prozessor des Computers einschließen. Diese
Manipulation formt die Daten um oder erhält sie an Orten in dem Speichersystem
des Computers, was die Funktion des Computers in einer Weise, die
von Fachleuten gut verstanden wird, umgestaltet oder anderweitig abändert. Die
Datenstrukturen, wo Daten erhalten werden, sind physikalische Orte
des Speichers, die bestimmte Eigenschaften durch das Format der
Daten definiert haben. Während
die Erfindung im vorhergehenden Kontext beschrieben wurde, ist es
jedoch nicht als Beschränkung
gemeint, was die Fachleute begrüßen werden,
dass verschiedene der hier später
beschriebenen Vorgänge
und Funktionen auch in Hardware implementiert sein können.
-
Ein
beispielhaftes Peer-to-Peer-Netzwerk 201, das gemäß einer
Ausführungsform
der Erfindung verwendbar ist, ist in 2 schematisch
gezeigt. Üblicherweise
wird ein Peer-to-Peer-Netzwerk, das
die Erfindung verwendet, ungefähr
zwischen 2 und 10 Knoten enthalten, obwohl größere Netzwerke ebenso verwendet
werden können,
um die Erfindung zu implementieren. Die Doppelendenlinien zwischen den
Knoten A bis G des Peer- to-Peer-Netzwerkes stellen
Peer-to-Peer-Netzwerk-Verbindungen dar. Deshalb ist z.B. in der
dargestellten Anordnung der Knoten A direkt mit Knoten B verbunden,
aber nur indirekt (d.h. nicht über
eine einzelne Verknüpfung)
mit Knoten C. Jede Peer-to-Peer-Verbindung
kann eigentlich eine Anzahl von physischen und/oder logischen zugrunde
liegenden Verbindungen umfassen, und mag so mit einem zugrunde liegenden
Netzwerk in Zusammenhang stehen, über welches das Peer-to-Peer-Netzwerk
gelegt worden ist. Es ist zu beachten, dass obwohl die Peer-to-Peer-Netzwerkknoten
im Allgemeinen Computer sein werden, dies nicht erforderlich ist.
Eher kann jeglicher Gerätetyp, der
entsprechende Netzwerkmöglichkeiten
hat, abhängig
von der Ausrüstungswahl
des Benutzers verwendet werden.
-
Um
die Leistung des Peer-to-Peer-Netzwerkes zu steigern, kann jeder
Computer in der Gruppe auch "gemeinsame
Dateien" in einer
Datenbank speichern, die mit den Datenbanken der anderen Gruppenmitglieder
aktuell gehalten wird. Diese Datenbank kann auf viele verschiedene
Weisen aktuell gehalten werden. In einer Implementierung kann sie, wann
immer ein bestimmter Computer die Datenbank verändert, diese Veränderungen
zu den anderen Computern in dem Peer-to-Peer-Netzwerk über die
oben beschriebenen Verbindungen verbreiten. Alternativ können die
Computer in der Gruppe ihre Datenbanken automatisch aktualisieren,
nachdem eine bestimmte Zeitspanne abgelaufen ist, und dabei die
Computer, die in logischer Verbindung mit ihnen stehen, nach neueren
Versionen der Datenbank abfragen. Während Peer-to-Peer-Technologien
im Allgemeinen eine Anzahl von Vorteilen bieten, einschließlich der
Unabhängigkeit
von einem zentralen Server, und oft eine bessere Ressourcennutzung, kann
die vorliegende Erfindung auch einen zentralen Server oder Einrichtung
(nicht gezeigt) benutzen, der/die mit einem oder mehreren Knoten
zur Datenspeicherung oder zur Aufrechterhaltung des Status einer
bestimmten Peer-to-Peer-Knotengruppe oder bestimmter Offline-Mitglieder
verbunden ist.
-
Das
Peer-to-Peer-Netzwerk 201 kann unter Verwendung existierender
Peer-to-Peer-Technologien
konstruiert sein. Zum Beispiel verbindet sich im Allgemeinen ein
Knoten mit dem Netzwerk 201 durch das Herstellen einer
Verbindung zu einem der existierenden Knoten. An diesem Punkt kann
der neue Knoten auf die Verbindungen des existierenden Knotens (zu
anderen Knoten) "Huckepack" genommen werden;
durch Auswerten der anderen Verbindungen und Knoten des existierenden
Knotens, wenn es welche gibt, und durch Auswählen, sich mit manchen, allen
oder keinem dieser anderen Knoten zu verbinden. Der verbindende
Knoten berücksichtigt
im Allgemeinen die Kosten einer neuen Verbindung gegenüber den
nützlichen
Eigenschaften einer neuen Verbindung beim Entscheiden, ob zusätzliche
Verbindungen, basierend auf den Verbindungen des existierenden Knotens,
erzeugt werden sollen. Jeder Knoten des Peer-to-Peer-Netzwerkes
führt auch
einen Datensatz mit dem momentanen Status der Teile des Netzwerkes,
von welchem er weiß,
um die relevanten Teile der Netzwerkmitgliedschaft und den Status
zu jeder Zeit zu verfolgen, wie es durch Fachleute begrüßt sein
wird. Es ist die Sammlung von diesen verschiedenen Datensätzen auf
den verschiedenen Knoten, die eigentlich das Peer-to-Peer-Netzwerk
bildet, weil die Verbindungen zwischen Knoten eigentlich nicht fest
verkabelt sind und in den meisten Fällen auch transient sind, in
dem Sinne, dass sie eher paketvermittelt sind als leitungsvermittelt.
-
Gemäß einem
Aspekt der Erfindung wird eine Dateiverteilung durch einen Knoten
des Peer-to-Peer-Netzwerkes, wie z.B. Knoten A, ausgelöst. Wie
hier weiter detaillierter beschrieben sein wird, fließen die
Dateidaten durch das Netzwerk zu den geeigneten Empfängerknoten,
während
die Übertragungstechnik
den Übertragungsaufwand
relativ gleichmäßig über das
Netzwerk verteilt. Insbesondere mit Bezug auf den Flowchart 301 von 3 kann
gesehen werden, dass der verteilende Knoten zuerst Metadaten zugehörig zu der
Datei von Interesse in Schritt 303 veröffentlicht. Die Metadaten sind keine
Dateidaten, sondern stellen eher Informationen über die Datei selbst dar, so
wie den Kontext der Datei, wie z.B. eine Priorität in Bezug auf andere Dateien.
Die Metadaten sind vorzugsweise klein genug, um einfach zu allen
Knoten über
bestehende Verbindungen mit minimaler Bandbreitenverwendung durch die
reguläre
Peer-to-Peer-Datensatz-Flooding-Technik
zu fluten. Gemäß dieser
Technik geben alle Empfängerknoten
die Metadaten sequenziell weiter, bis die Daten alle Knoten des
Netzwerkes erreicht haben. Es ist zu beachten, dass, wenn ein Knoten
doppelte Metadaten empfängt,
wie z.B. über
verschiedene Verbindungen zu verschiedenen Knoten, verwirft es irgendwelche
doppelten Informationen einfach ohne das Weiterleiten, und leitet
nur die erste empfangene Kopie der Metadaten weiter.
-
In
einer Ausführungsform
der Erfindung umfassen die Metadaten einen Dateinamen, eine Dateigröße, eine
Reihe von Verteilungscharakteristiken, Verfallsinformationen und
irgendwelche modulspezifischen Informationen, die die veröffentlichende
Anwendung oder das Modul bereitstellen möchte. Zusätzlich können die Metadaten auch jegliche
andere Information einschließen,
wie z.B. Erzeugungs- und/oder Änderungsdatum,
Be sitzer, Erzeuger, Priorität
etc. Der Dateiname innerhalb der Metadaten ist einfach ein Kennzeichner,
verbunden mit der Datei. Der Dateiname braucht nicht absolut eindeutig
zu sein, obwohl es vorzugsweise ein Kennzeichner ist, der spezifisch
genug ist, so dass es unwahrscheinlich ist, dass er mit irgendeiner
anderen Datei auf irgendeinem Knoten des Netzwerkes 201 identisch
in Verbindung gebracht wird als mit der passenden Datei. In dem
Fall von Musikdateien, kann der Dateiname die passenden MP3-ID3-Tags
einschließen.
Die Dateigrößeninformation
stellt einen Hinweis bereit, wie viel Daten in der Datei enthalten
sind, und wird vorzugsweise mit Bezug auf die Größe der Datei angegeben, wenn
sie komprimiert ist, sofern Komprimierung für die Übertragung verwendet wird.
Die Reihe von Verteilungscharakeristiken stellt optional einen Hinweis
oder Vorschlag bereit, wie die Datei verteilt werden sollte. Letztendlich
bestimmt die Ablaufinformation die Zeit, an welcher die Datei aus
dem Speicher von jedem Empfängerknoten
gelöscht
werden sollte, sobald sie übertragen
worden ist. Es ist zu beachten, dass die ursprüngliche Metadatenveröffentlichung
eine Erklärung
einschließt,
dass der Absendeknoten die angebotene Datei besitzt, aber dass jeder
andere Knoten diese Erklärung
nicht macht, bis er tatsächlich
mindestens einen Teil der Datei besitzt, wie unterhalb detaillierter
diskutiert wird.
-
Sobald
der veröffentlichende
Knoten die Metadaten wie in Schritt 303 übermittelt
hat, und alle Knoten des Peer-to-Peer-Netzwerkes die Metadaten empfangen
haben, entscheidet jeder Metadaten-Empfängerknoten in Schritt 305,
die Datei abzufragen oder nicht. Ein Knoten kann irgendeinen von einer
Anzahl von Gründen
haben, die Datei abzufragen. Wenn z.B. ein Modul für Online-Realtime-Gruppen-Interaktion,
wie z.B. ein Modul für
eine Gruppenaudioerfahrung (group audio experience module), die Veröffentlichung
der Dateimetadaten angeregt hat, und der Empfängerknoten denselben Modultyp
aktiviert hat, dann wird der Empfängerknoten wahrscheinlich die
angebotene Datei abfragen wollen.
-
Zusätzlich durchsucht,
in einer Ausführungsform
der Erfindung, ein Knoten seine lokalen Dateien, um zu ermitteln,
ob er bereits eine Kopie der relevanten Datei hat, und benutzt eher
eine solche Kopie, als dass ein Download von einem anderen Knoten
abgefragt wird. Die Ermittlung, ob eine lokale Kopie "dieselbe" ist wie eine angebotene
Kopie, kann auf vielen Faktoren basieren. Im Fall von Audiodateien
z.B. kann die Gleichheit von einer Übereinstimmung in solch Charakteristiken,
wie Dateiname, Erzeugender Künstler
oder andere Beteiligte, und Spieldauer abgeleitet werden. In einer
weiteren Ausführungsform der
Erfindung jedoch wird diese von Lokal stammende Datei nicht verwendet,
um Anfragen von anderen Knoten für
die angebotene Datei zu bedienen. Dies ist so, weil es Unterschiede
zwischen der von Lokal stammenden Kopie und der angebotenen Kopie
geben kann, was bei dem Lokal beziehenden Knoten offensichtlich
sein kann oder nicht, aber was die Kontinuität des Herunterladens verhindern
kann, wenn es einen Wechsel der Quellen während des Herunterladens durch
einen anderen Knoten gibt. Solche Unterschiede können in der präzisen Komprimierungstechnik
liegen, die verwendet wird, um die Datei zu verkleinern (z.B. wenn
dieselbe Datei in verschiedenen Weisen komprimiert wurde, um verschiedene Endversionen
zu erzeugen), oder in den zugrunde liegenden Daten, die zum Erzeugen
der Datei verwendet wurden (z.B. wenn die Dateien zugehörig zu verschiedenen
Mitschnitten desselben Liedes sind). Die Entscheidung, die lokale
Datei zu verwenden oder nicht zu verwenden, kann in diesem Kontext
im Zusammenhang mit dem Maß an
Dateigleichheit stehen, das eingesetzt wurde.
-
Wenn
der Empfängerknoten
entscheidet, die Datei abzufragen, dann überprüft er in Schritt 307,
ob irgendeiner seiner direkten Nachbarknoten erklärt hat,
dass er die Datei besitzt. Wenn einer oder mehr Nachbarn erklärt haben,
dass sie die Datei besitzen, was bedeutet, dass sie mindestens einen
Teil der Datei haben, dann entscheidet der fragliche Knoten, von welchem
Nachbarknoten die Datei in Schritt 309 abgefragt wird.
Diese Entscheidung kann auf irgendeiner Anzahl von Faktoren basieren,
einschließlich
z.B. den Berechnungs- und Verbindungscharakteristiken der Knoten
(vorher gemessene Dateiübertragungsleistung,
Geschwindigkeit, Betriebssicherheit, etc.).
-
Weil
viele Knoten Teile einer Datei empfangen können und dann ihren Besitz
bekannt geben, gibt es eine theoretische Möglichkeit, dass die Knoten
versuchen, wenn die relevanten Anbieter für diese Knoten Probleme haben,
die Datei voneinander zu erhalten. Dies würde in einer Blockierung enden,
weil keiner der Knoten im Besitz der gesamten Datei ist. Um dieses
Problem zu mindern, bietet vorzugsweise jeder Knoten, der seinen
Besitz einer Datei anbietet, auch eine Generationsnummer für diese
Datei an. Jeder Knoten, der die gesamte Datei hat oder erhält, kann
seine Version als Generation-0-Datei
anbieten. Ein Knoten, der eine teilweise Kopie anbietet, die von einer
Generation-0-Quelle
erhalten wird, bietet seine Version als Generation 1 an. Im Allgemeinen
bietet jeder Knoten seine Version so an, dass sie eine Generation
um 1 größer als
die Version hat, die sie simultan herunterläd. Wenn ein Quellknoten mit
dem Herunterladen einer ganzen Kopie der Datei fertig ist, dekrementiert
er seine angebotene Generation zu 0, und das Dekrement fließt durch
die Kette an Knoten, zu denen er direkt oder indirekt Uploads liefert.
Deshalb ist die Generationsnummer zugehörig zu den angebotenen Dateiversionen
ein weiterer Faktor, der in einer Ausführungsform der Erfindung verwendbar ist,
um zu ermitteln, von welchem Knoten die Datei einzuholen ist, wobei
eine kleinere Generation im Allgemeinen erforderlich ist und eine
Generation gleich der des Anfragenden üblicherweise nicht akzeptabel ist.
-
Wenn
nur ein Nachbarknoten erklärt
hat, dass er im Besitz der Datei ist, und eine passende Version
hat, dann wird Schritt 309 für den fraglichen abfragenden
Knoten ausgelassen. In Schritt 311 frägt der abfragende Knoten die
Datei von dem ausgewählten
Nachbarknoten ab, der im Besitz der Datei ist, und beginnt mit dem
Empfangen.
-
Sobald
der abfragende Knoten mit dem Empfangen der Datei begonnen hat,
ist er in einer Ausführungsform
der Erfindung in der Lage, seinen Besitz anderen Knoten bekannt
zu geben. Dies ist so, weil der abfragende Knoten die Teile der
Datei, die er schon empfangen hat, liefern kann, während er gleichzeitig
weiter die Datei von seinem Anbieter mit ungefähr derselben oder größeren Rate
empfängt. Dies
wirkt sich in den meisten Fällen
auf eine leichte Abnahme der Dateiverteilungsverzögerung aus,
weil ein Knoten nicht auf den Abschluss eines Dateiempfangs warten
muss, bevor er dessen Besitz bekannt manchen kann und die Datei
zu anderen Knoten liefern kann. Deshalb übermittelt in Schritt 313 der
abfragende Knoten eine Bekanntmachung zu seinen Nachbarknoten, dass
er im Besitz der fraglichen Datei ist. In Schritt 315 bedient
der fragliche Knoten jegliche empfangenen Anfragen für die Datei.
Letztendlich endet der Vorgang bei 319.
-
Wenn
bei Schritt 305 ermittelt worden ist, dass der fragliche
Knoten nicht wünscht,
die Datei zu besitzen, dann geht der Vorgang zu Schritt 317 über, wo
ermittelt wird, ob irgendein Nachbarknoten des fraglichen Knotens
eine unaufgeforderte Dateianfrage an den fraglichen Knoten geschickt
hat. Weil die Dateiverteilung im Allgemeinen auf einer reinen Abfragebasis
steht, wie oben beschrieben, ist es möglich, dass ein Knoten, der
die Datei haben möchte, keinen
Nachbarn hat, der die Datei aufgrund seiner eigenen Initiative erhält und anbietet.
Deshalb kann solch ein Knoten, nachdem er eine angemessene Zeit
gewartet hat, wie z.B. ungefähr
die Zeit für
die Schrittgröße eines
Datei-Downloads,
eine unaufgeforderte Dateianfrage zu einem seiner Nachbarn senden,
und dabei diesen Nachbarn auffordern, die fragliche Datei abzurufen
und zu liefern. In einer Ausführungsform
der Erfindung steht jede/jedes Peer-to-Peer-Anwendung oder Modul
im Zusammenhang mit einem bestimmten Peer-to-Peer-Netzwerk, das
ausschließlich
oder hauptsächlich
Knoten umfasst, auf denen dieselbe Anwendung oder dasselbe Modul
läuft.
Deshalb ist in dieser Ausführungsform
die Wahrscheinlichkeit klein, die Verwendung einer unaufgeforderten
Anfrage zu benötigen,
weil jeder Knoten wahrscheinlich die Datei haben möchte.
-
Wenn
bei Schritt 317 ermittelt wird, dass kein Nachbarknoten
des fraglichen Knotens eine unaufgeforderte Dateianfrage zu dem
fraglichen Knoten gesendet hat, dann endet der Vorgang bei Schritt 319.
Wenn es stattdessen bei Schritt 317 ermittelt wurde, dass
einer oder mehr Nachbarknoten des fraglichen Knotens eine unaufgeforderte
Dateianfrage zu dem fraglichen Knoten gesendet hat, geht der Vorgang
zu Schritt 307 und den logisch nachfolgenden Schritten über. Es
ist zu beachten, dass der fragliche Knoten selbst eine unaufgeforderte
Dateianfrage machen muss, um die Datei in einer Ausführungsform
der Erfindung zu erhalten.
-
Obwohl
es oberhalb nicht ausführlich
diskutiert worden ist, gibt es Situationen, in denen ein Knoten
zwischen einer Vielzahl von Dateien zum Herauf- und/oder Herunterladen
aussucht, und/oder wenn eine Entscheidung gefällt wurde zwischen der Funktion
des Heraufladens und der Funktion des Herunterladens für den bestimmten
Knoten. Diese Situationen werden in Bezug auf den verallgemeinernden Flowchart 401 der 4 detaillierter
diskutiert. Obwohl die Situation, die in 4 präsentiert
wird, die gleichzeitige Verfügbarkeit
einer Vielzahl von Upload- und Download-Gelegenheiten einbezieht,
wird es begrüßt, dass
in den meisten Fällen
solch eine Vielzahl von Gelegenheiten nicht existieren wird, und
dass in solchen Situationen manche der Schritte aus dem Flowchart 401 soweit
erforderlich, weggelassen werden können.
-
Bei
Schritt 403 hat ein bestimmter Knoten Anfragen zum Upload
von zwei oder mehr bestimmten Dateien erhalten und hat ebenso Anzeigen
erhalten, dass zwei oder mehr andere Dateien zum Upload zu dem Knoten
verfügbar
sind. In dem Fall, wo der bestimmte Knoten unbestimmte Upload- und Download-Kapazität hat und
die gleichzeitige Ausführung
(d.h. im Wesentlichen zu derselben Zeit oder wenigstens während sich überlappender
Zeitintervalle) all solcher Aktivitäten durchgeführt werden
können,
ohne irgendeine der Aktivitäten
zu verlangsamen oder zu verzögern,
dann sind all solche Uploads und Downloads vorzugsweise gleichzeitig
abzusenden. Wenn jedoch, was typischer ist, die Ressourcen des Knotens
und/oder des Netzwerkes begrenzt sind, so dass der schnellste Download
oder Upload nur erreicht wird, wenn kein anderer Download oder Upload
bedient wird, dann wird der schnellste mögliche Download oder Upload
im Allgemeinen nur durch eine Entscheidung hinsichtlich der Aktivität (Heraufladen
oder Herunterladen) und der Datei, die zu bedienen ist, stattfinden.
Es wird begrüßt, dass,
wenn der Upload- und Download-Kanal wie in bestimmten Breitbandtechnologien
völlig
getrennt sind, dass dann die Priorisierung für jeden Kanal besser getrennt
durchgeführt
wird, als in einer zusammenarbeitenden Weise, wie in 4 gezeigt.
-
Bei
Schritt 405 werden die potenziellen Datei-Upload- und Datei-Download-Aktivitäten priorisiert.
Insbesondere wird jede Datei vorzugsweise mit einer numerischen
Priorität,
die ihre aktuelle Wichtigkeit darstellt, in Zusammenhang gebracht,
wie z.B. über
die Metadaten. Die Prioritäten
können
z.B. die relative Reihenfolge der Dateien in einer Audio Playlist
darstellen, und können
sich verändern,
wenn die Playlist sich verändert.
In dem Umfang, dass sich eine oder mehr relevante Dateiprioritäten während des
Upload oder Download ändern,
und beeinflussen, welche Datei aktuell die bevorzugte Datei für den Upload
oder Download ist, kann die Zieldatei mittendrin gewechselt werden,
wobei der übertragene unvollständige Teil
der vorher bevorzugten Datei für eine
potenzielle zukünftige
Wiederaufnahme der Übertragung
gespeichert wird. Wenn Datei-Upload- und Datei-Download-Kanäle vollständig verschieden sind, so dass
sie sich nicht gegenseitig beeinflussen, dann geschieht die Priorisierung
vorzugsweise auf einer Pro-Kanalbasis. Das heißt, alle potenziellen Datei-Downloads
werden in Bezug aufeinander priorisiert, und alle potenziellen Datei-Uploads
werden in Bezug aufeinander priorisiert. Fachleute werden es zusätzlich begrüßen, dass
die beschriebenen Techniken einfach modifiziert werden können, um
eine Vielzahl unabhängiger
Upload-Kanäle
und/oder eine Vielzahl unabhängiger
Download-Kanäle
aufzunehmen.
-
Bei
Schritt 407 wird die am höchsten priorisierte Dateiübertragung
bedient. Im Fall von unabhängigen
Upload- und Download-Kanälen,
wird der am höchsten
priorisierte Datei-Upload
bedient und der am höchsten
priorisierte Download auch bedient. Es sollte wieder beachtet werden,
dass sich Dateiprioritäten
während
der Dateiübertragung ändern können, was
darin resultiert, dass eine andere Datei eine höhere Priorität für den Upload
oder Download hat, als die aktuell bediente Datei, wie oben diskutiert. Letztendlich
endet der Vorgang bei Schritt 409.
-
5 stellt
in schematischer Weise eine Client/Server-Architektur dar, die gemäß einer
Ausführungsform
der Erfindung verwendbar ist. Insbesondere in dem Peer-to-Peer-Netzwerk gemäß verschiedener
Ausführungsformen
der Erfindung arbeiten viele Knoten sowohl als Clients als auch
Server, obwohl es begrüßt wird,
dass ein oder mehrere Knoten nur als Clients oder nur als Server
arbeiten können. Eine
beispielhafte Knoten-Client/Server-Architektur 501 besitzt
beides, Client-Einrichtungen 503 und Server-Einrichtungen 505.
Die Client-Einrichtungen 503 sind verantwortlich für das Anfragen
gewünschter
Dateien, wenn überhaupt,
und zum Empfangen solcher Dateien. Detaillierter gesagt, enthalten
die Client-Einrichtungen 503 vorzugsweise eine Client-Schnittstelle 507 zum
Empfangen einer Anfrage, wie z.B. von einem Modul oder einer Anwendung, zum
Erhalten einer bestimmten Datei von einem anderen Knoten, wie z.B.
einer, die angeboten worden ist. Solche Anfragen können priorisiert
werden und in der Prioritätswarteschlange 511 eingereiht
werden. An diesem Punkt wird die Knotenverbindungsschnittstelle 513 verwendet,
um die Anfrage auszuführen, und
die gewünschte
Datei zu der angemessenen Zeit, basierend auf der zugewiesenen Anfragepriorität zu erhalten.
-
Die
Server-Einrichtungen 505 eines Knotens enthalten vorzugsweise
eine Dateischnittstelle 515 zum Empfangen von Dateidaten,
wie z.B. von einem anderen Modul oder einer anderen Anwendung auf dem
Knoten. Die Dateiinformation kann komprimiert sein, z.B. zu dem
64 k Windows Media® Audio (WMA)-Format, oder
kann in einem einheitlichen Format für Massen-Uploads sein oder
kann in einem Streaming-Format für
einen Streaming-Upload sein. Zur Klarheit werden zwei Schnittstellen,
eine "Datei veröffentlichen"-Schnittstelle ("I Publish File") und eine "Stream veröffentlichen"-Schnittstelle("I Publish Stream"), innerhalb der
Schnittstelle 515 dargestellt. Die letztere wird verwendet,
um Stream-Veröffentlichungen
einer Datei durch den Serverteil 505 zu ermöglichen,
während
die erstere verwendet wird, um einheitliche Veröffentlichungen einer ganzen
Datei, wie oben diskutiert, zu ermöglichen. Die Dateidaten, die
bei der Schnittstelle 515 empfangen werden, werden zu dem
Server-Cache 517 für
eine temporäre Speicherung übermittelt,
und können
relativ zu anderen anstehenden Uploads in der Server-Prioritäts-Warteschlange 519 eingestellt
werden. Vorzugsweise werden die Dateien mit höchster Priorität zuerst
bei der Dateischnittstelle 515 empfangen, obwohl Prioritäten sich
während
des Empfangens von Dateidaten bei der Schnittstelle 515 ändern können. Letztendlich
werden die Dateidaten in passender Prioritätsordnung der Knotenverbindungsschnittstelle 513 verfügbar gemacht.
Es wird begrüßt, dass
Dateidaten zum Upload alternativ von der Knotenverbindungsschnittstelle 513 kommen
können,
wie z.B., wenn die Client-Einrichtungen 503 das Empfangen von
Dateidaten von einem anderen Knoten verursacht haben, und dass die
Servereinrichtungen zum Hochladen derselben Daten zu noch einem
weiteren Knoten dienen. In diesem Fall können die eingehenden Dateidaten
in beiden, der Client-Prioritäts-Warteschlange
und der Server-Prioritäts-Warteschlange, gespeichert
werden.
-
Es
wird begrüßt, dass
ein neues Mittel zur Inhaltsübertragung
für die
Verwendung in einem Peer-to-Peer-Netzwerk beschrieben worden ist.
Angesichts der vielen möglichen
Ausführungsformen, zu
der die Prinzipien dieser Erfindung angewandt werden können, sollte
es verstanden werden, dass die hierin in Bezug auf die Figuren beschriebenen Ausführungsformen
nur als illustrativ gemeint sind, und nicht verwendet werden sollten,
den Umfang der Erfindung einzuschränken. Zum Beispiel werden die Fachleute
es verstehen, dass die Elemente der dargestellten Ausführungsformen,
die als Software gezeigt wurden, in Hardware implementiert werden können und
umgekehrt, oder dass die dargestellten Ausführungsformen in ihrer Anordnung
und Detail modifiziert werden können.
Deshalb zieht die Erfindung, wie hierin beschrieben, alle solche
Ausführungsformen
in Erwägung,
wie sie im Umfang der folgenden Ansprüche erscheinen.