-
Die
Erfindung betrifft ein Verfahren zum Betrieb eines dezentralen Datennetzes
sowie ein entsprechendes Datennetz, insbesondere ein Peer-to-Peer-Netz,
umfassend eine Mehrzahl von Netzknoten, wobei jeder Netzknoten für einen
Wertebereich von mit Informationen verknüpften Abfragewerten zuständig ist
und wobei jedem Netzknoten eine Identität und vorzugsweise auch ein
Abfragewert zugeordnet ist.
-
Seit
einigen Jahren kommen vermehrt Datennetze zum Einsatz, welche dezentral
organisiert sind. Im Gegensatz zu herkömmlichen Client-Server-Architekturen
bestehen solche dezentrale Datennetze aus gleichberechtigten Netzknoten,
welche ohne Zwischenschaltung eines zentralen Servers miteinander
kommunizieren. Solche Netze zeichnen sich durch eine gute Ausfallsicherheit
und eine einfache Skalierbarkeit auf große Knotenanzahlen aus. Ferner
sind solche dezentralen Netze auf einfache Weise, z. B. mit Standardrechnern
und insbesondere PCs, realisierbar.
-
In
der Computertechnologie werden dezentrale Netze häufig als
sog. Peer-to-Peer-Netze realisiert, wobei jeder Netzknoten als Peer
bezeichnet wird. Es sind hierbei viele unterschiedliche Realisierungen
solcher Peer-to-Peer-Systeme bekannt, wie z. B. die Systeme Chord,
Pastry und Tapestry. Peer-to-Peer-Netze
ermöglichen
die Suche nach Informationen in den einzelnen Peers vorzugsweise durch
die Verwendung von verteilten Hash-Tabellen. Die Hash-Tabellen enthalten
Abfragewerte in der Form von Hashwerten, und jeder Netzknoten ist
für einen
bestimmten Wertebereich von Abfragewerten zuständig. Bei der Verwendung von
verteilten Hash-Tabellen bildet eine Hashfunktion jeden Netzknoten
mit Hilfe eines eindeutigen Merkmals, beispielsweise der IP-Adresse
des Netzknotens oder einer global eindeutigen Identität, auf einen
Hashwert ab. Dazu können
bekannte Hashfunktionen, beispielsweise die Funktion SHA1 eingesetzt
werden. Mit Hilfe entsprechender Suchverfahren, welche auch als
Lookups bezeichnet werden, kann innerhalb eines Peer-to-Peer-Netzes
nach Netzknoten gesucht werden, welche für einen Hashwert gemäß einer
Anfrage zuständig
sind.
-
In
einem dezentralen Netz kann beispielsweise nach Dateien mit entsprechenden
Inhalten gesucht werden, wie z. B. MP3-Dateien. Hierzu kann die entsprechende
Datei durch Schlüsselwörter (wie z.
B. Interpret oder Titel des Musikstücks einer MP3-Datei) beschrieben
sein, wobei diese Schlüsselwörter über eine
Hashfunktion oder auch auf andere Weise auf einen entsprechenden
Abfragewert in der Form eines Hashwerts abgebildet werden. Die entsprechende
Datei wird dann an den für
diesen Abfragewert zuständigen
Netzknoten gesendet und dort gespeichert. Durch eine Lookup-Anfrage
kann die Datei von anderen Netzknoten dann aufgefunden werden. Anstatt
der Verwendung von Schlüsselwörtern kann
ggf. auch ein sog. ”Fingerprint” zur Erzeugung
eines Abfragewerts für
eine bestimmte Information verwendet werden. Der Fingerprint ist
hierbei eine charakteristische Ziffernfolge, welche aus dem Datensatz,
dem der Abfragewert zuzuordnen ist, selbst gebildet ist.
-
Bei
bekannten dezentralen Netzen besteht das Problem, dass eine Suche
nach bestimmten Abfragewerten ein hohes Verkehrsaufkommen in dem Netz
verursacht, da eine Vielzahl von Anfragen über unterschiedliche Knoten
im Netz geleitet werden, bis schließlich derjenige Netzknoten
gefunden wird, der für
den entsprechenden Abfragewert zuständig ist.
-
Aus
der Druckschrift Karger, D.; Lehmann, E.; Leighton, T.; Levine,
M.; Panigrahy, R. ist ein Verfahren bekannt, bei dem in verteilten
Datennetzen eine Überlastung
eines datenliefernden Peers durch gleichzeitige Anfragen zu vieler
Clients verhindert wird. Dabei werden von Browsern abgefragte Seiten durch
spezielle, am Transfer beteiligte Netzknoten in einem Cache zwischengespeichert.
-
Aus
dem Stand der Technik sind Ansätze
bekannt, wie Lookups in dezentralen Netzen möglichst schnell ausgeführt werden
können.
Diese Lösungen beruhen
auf der Konzeption einer geeigneten Netzwerkstruktur und entsprechend
schneller Lookup-Algorithmen
(s. beispielsweise: M. F. Kaashoek and D. R. Karger, ”Koorde:
A simple degree-optimal distributed hash table.” In Proc. 2nd IPTPS, Berkeley,
CA, Feb. 2003). Die bekannten Verfahren stellen zwar schnelle Lookup-Konzepte zur
Verfügung,
beschäftigen
sich aber nicht mit deren Optimierung durch eine geeignete Implementierung.
-
Aufgabe
der Erfindung ist es deshalb, ein Verfahren zum Betrieb eines dezentralen
Datennetzes und ein entsprechendes Datennetz zu schaffen, mit denen,
aufbauend auf den bekannten Verfahren, Anfragen noch schneller und
mit noch geringerem Verkehrsaufkommen im Netz verarbeitet werden können.
-
Diese
Aufgabe wird durch die unabhängigen Patentansprüche gelöst. Weiterbildungen
der Erfindung sind in den abhängigen
Ansprüchen
definiert.
-
In
dem erfindungsgemäßen Verfahren
werden von den Netzknoten Anfragen nach einem oder mehreren Abfragewerten
in das Datennetz ausgesendet, wobei ein anfragender Netzknoten für eine jeweilige
Anfrage ein Anfrageergebnis empfängt, welches
die Identitäten
des oder der Netzknoten enthält,
welche für
den oder die Abfragewerte der jeweiligen Anfrage zuständig sind.
Bei Empfang eines Anfrageergebnisses in einem anfragenden Netzknoten werden
die im Anfrageergebnis enthaltenen Identitäten in einem dem anfragenden
Netzknoten zugeordneten Speicher hinterlegt. Die Identitäten werden hierbei
wie folgt hinterlegt:
- – Eine Identität eines
jeweiligen Netzknotens des Anfrageergebnisses wird demjenigen Abfragewert
der Anfrage zugeordnet, für
den der jeweilige Netzknoten zuständig ist, und/oder
- – eine
Identität
eines jeweiligen Netzknotens des Anfrageergebnisses wird einem Intervall
von Abfragewerten zugeordnet, welches denjenigen Abfragewert der
Anfrage enthält,
für den
der jeweilige Netzknoten zuständig
ist, wobei der jeweilige Netzknoten für alle Abfragewerte des Intervalls zuständig ist.
-
In
dem Verfahren wird durch einen anfragenden Netzknoten vor dem Aussenden
einer Anfrage ermittelt, ob der dem Netzknoten zugeordnete Speicher
Abfragewerte der auszusendenden Anfrage enthält und/oder Intervalle enthält, welche
Abfragewerte der auszusendenden Anfrage umfassen, wobei für ermittelte
Abfragewerte und/oder Intervalle die zugeordneten Identitäten der
Netzknoten als Abfrageergebnis ausgegeben werden.
-
Durch
die Verwendung eines Speichers für jeden
Netzknoten wird gemäß der Erfindung
eine Zwischenspeicherung von Ergebnissen aus bereits durchgeführten Anfragen
ermöglicht.
Diese Ergebnisse können
bei neuen Anfragen wieder verwendet werden. Insbesondere kann auf
wiederholte Anfragen nach bereits angefragten Abfragewerten verzichtet
werden, da in diesem Fall aus dem Speicher das Anfrageergebnis durch
eine entsprechende Zuordnung zwischen Abfragewert und Netzknotenidentität entnommen
werden kann. Auf diese Weise wird für eine Vielzahl von Fällen das
Verkehrsaufkommen im dezentralen Netz vermindert und gleichzeitig
die Suche nach Abfragewerten beschleunigt. Das Verfahren ist dabei
einfach zu implementieren und erfordert zu seiner Durchführung lediglich
einen entsprechenden Speicher in jedem Netzknoten.
-
Insbesondere
bei der Hinterlegung von Intervallen von Abfragewerten in dem Speicher
erweist es sich als vorteilhaft, dass eine große Anzahl von Anfragen dadurch
beantwortet werden kann, dass ein entsprechender Abfragewert aus
dem zugehörigen Intervall
mit der hierfür
hinterlegten Netzknotenidentität
aus dem Speicher entnommen wird.
-
Das
erfindungsgemäße Verfahren
wird insbesondere in den eingangs erwähnten Peer-to-Peer-Netzen eingesetzt,
wobei die Abfragewerte vorzugsweise Hashwerte sind, welche über eine
verteilte Hash-Tabelle im Netz mit entsprechenden Informationen
verknüpft
sind, wobei jeder Netzknoten für
einen Wertebereich von Hashwerten zuständig ist. Der Wertebereich
von Hashwerten eines jeweiligen Netzknotens ist hierbei vorzugsweise durch
einen Anfangs-Hashwert und einen End-Hashwert begrenzt, wobei der
End-Hashwert eine Repräsentation
der Identität
des jeweiligen Netzknotens darstellt und wobei in einem Abfrageergeb nis
neben den Identitäten
des oder der Netzknoten, welche für den oder die Abfragewerte
der jeweiligen Abfrage zuständig
sind, die End-Hashwerte dieser Netzknoten enthalten sind.
-
Durch
die Verknüpfung
von Netzknoten mit End-Hashwerten können auf einfache Weise entsprechende,
mit Netzknotenidentitäten
verknüpfte
Intervalle in dem Speicher erzeugt werden. Die Erzeugung solcher
Intervalle kann dadurch erfolgen, dass bei Empfang eines Anfrageergebnisses
für eine
Identität
eines jeweiligen Netzknotens des Anfrageergebnisses ein Intervall
in dem Speicher des anfragenden Netzknotens derart festgelegt wird,
dass das Intervall sich von demjenigen Abfragewert der Anfrage,
für den
der jeweilige Netzknoten zuständig
ist, zu dem End-Hashwert des Wertebereichs des jeweiligen Netzknotens
erstreckt. Man macht sich hierbei die Tatsache zu nutze, dass in
dieser Ausführungsform ein
Netzknoten immer für
einen Hashwerte-Bereich zuständig
ist, dessen sämtliche
Elemente kleiner oder gleich dem ihm zugeordneten End-Hashwert ist. Somit
muss ein gemäß der Anfrage
ermittelter Netzknoten nicht nur für den angefragten Hashwert,
sondern auch für
das Intervall zwischen angefragtem Hashwert und End-Hashwert zuständig sein.
-
In
einer weiteren Ausgestaltung des erfindungsgemäßen Verfahrens erzeugt bereits
das Aussenden einer Anfrage durch einen anfragenden Netzknoten in
dem dem anfragenden Netzknoten zugeordneten Speicher Einträge für die Abfragewerte
der Anfrage, wobei nach Empfang des Abfrageergebnisses einem jeweiligen
Eintrag die Identität
des entsprechenden Netzknotens des Abfrageergebnisses zugeordnet
wird, der für
den Abfragewert zuständig ist,
für welchen
der jeweilige Eintrag erzeugt wurde. Um einen großen Bereich
von Abfragewerten abzudecken, kann mit Hilfe der Identität des entsprechenden
Netzknotens des Abfrageergebnisses ein Intervall von Abfragewerten
ermittelt werden, welches den jeweiligen Eintrag enthält, wobei
anschließend der
Abfragewert in dem Eintrag durch das Intervall ersetzt wird und
wobei der entsprechende Netzknoten für alle Abfragewerte des Intervalls
zuständig
ist.
-
Bei
der Verwendung der obigen Ausführungsform
des Verfahrens, bei der bereits für jede ausgesendete Anfrage
ein Eintrag erzeugt wird, kann insbesondere verhindert werden, dass
mehrere Anfragen nach gleichen Abfragewerten parallel gestartet
werden. Dies geschieht dadurch, dass vor dem Aussenden einer Anfrage
geprüft
wird, ob Einträge für Abfragewerte
der Anfrage oder für
Intervalle, welche Abfragewerte der Anfrage umfassen, in dem dem anfragenden
Netzknoten zugeordneten Speicher enthalten sind, wobei diejenigen
Abfragewerte, für die
Einträge
enthalten sind, nicht mit der Anfrage ausgesendet werden. Um dennoch
ein Abfrageergebnis für
solche Einträge
zu erhalten, wartet der anfragende Netzknoten im Falle des Vorhandenseins von
Einträgen
ohne Zuordnung einer Netzknotenidentität im Speicher so lange, bis
diesen Einträgen Identitäten von
Netzknoten zugeordnet sind. Anschließend werden die diesen Einträgen zugeordneten
Identitäten
als Abfrageergebnis ausgegeben.
-
In
einer weiteren bevorzugten Ausführungsform
der Erfindung wird der Speicher eines Netzknotens dahingehend überprüft, ob eine
Identität
eines Netzknotens mehreren überlappenden
oder aneinander angrenzenden Intervallen zugeordnet ist, wobei in
diesem Fall die mehreren überlappenden
und/oder angrenzenden Intervalle zu einem Intervall zusammengefasst
werden. Dies ermöglicht
eine effektive Speicherverwaltung und eine Reduzierung der Einträge im Speicher.
-
In
einer weiteren Ausgestaltung der Erfindung wird eine ausgesendete
Anfrage mittels eines Suchverfahrens nacheinander an eine Mehrzahl
von Netzknoten weitergeleitet, bis der oder die Netzknoten gefunden
sind, welche für
den oder die Abfragewerte der jeweiligen Anfrage zuständig sind.
Als Suchverfahren kann beispielsweise ein aus dem Stand der Technik
bekanntes Lookup-Verfahren verwendet werden. In solchen Suchverfahren
sind insbesondere jedem Netzknoten eine Anzahl von Nachbarknoten
und/oder anderen Netzknoten bekannt, wobei die Anfrage in Abhängigkeit
von den Abfragewerten von einem je weiligen Netzknoten an einen dem
jeweiligen Netzknoten bekannten Nachbarknoten oder anderen Netzknoten
weitergeleitet wird. Das Weiterleiten der Anfrage erfolgt vorzugsweise
derart, dass der jeweilige Netzknoten, von dem aus die Anfrage weitergeleitet
wird, eine Rückmeldung
an den anfragenden Netzknoten sendet, welche die Identität des nächsten Netzknotens
enthält,
an den die Anfrage weiterzuleiten ist, wobei der anfragende Netzknoten
nach Erhalt der Rückmeldung
die Anfrage an diesen nächsten
Netzknoten weiterleitet. Es handelt sich hierbei um ein iteratives
Suchverfahren, bei dem die Suche nach entsprechenden Netzknoten
immer unter Rückmeldung
an den anfragenden Netzknoten erfolgt. Dies hat den Vorteil, dass
der anfragende Netzknoten sofort über Schwierigkeiten bei der
Weiterleitung von Anfragen in Kenntnis gesetzt wird, und zwar dadurch,
dass er keine Rückmeldung
mehr von ausgesendeten Anfragen erhält.
-
In
einer besonders bevorzugten Ausführungsform
des obigen iterativen Suchverfahrens ist in der Rückmeldung
zumindest ein Abfragewert enthalten, für den der nächste Netzknoten zuständig ist. Dabei
hinterlegt der anfragende Netzknoten nach Erhalt der Rückmeldung
die Identität
des nächsten Netzknotens
und den zumindest einen Abfragewert in den ihm zugeordneten Speicher.
Auf diese Weise wird es ermöglicht,
dass der Speicher nicht nur durch Identitäten von Netzknoten gemäß dem Endergebnis des
Suchverfahrens aufgefüllt
wird, sondern dass auch Zwischenergebnisse des Suchverfahrens zu
einer Ergänzung
des Speichers führen.
Somit werden in kürzerer
Zeit mehr Speichereinträge
erzeugt, was wiederum zu einer Beschleunigung des Suchverfahrens
und zu einer Verminderung von Datenverkehr führt.
-
Das
erfindungsgemäße Verfahren
kann insbesondere auch in einem Datennetz mit Replikation eingesetzt
werden, bei dem für
jeden Abfragewert mehrere Netzknoten zuständig sind. In diesem Fall werden
bei Empfang eines Abfrageergebnisses in einem anfragenden Netzknoten
die Identitäten
der mehreren Netzkno ten dem Abfragewert oder einem den Abfragewert
enthaltenen Intervall zugeordnet.
-
In
einer bevorzugten Ausgestaltung des erfindungsgemäßen Verfahrens
wird als der dem jeweiligen Netzknoten zugeordnete Speicher ein
lokaler Zwischenspeicher verwendet, der in dem jeweiligen Netzknoten
vorgesehen ist. Da sich die Topologie des Datennetzes mit der Zeit
verändert,
ist der Speicher eines jeweiligen Netzknotens derart ausgestaltet,
dass jeder Eintrag in dem Speicher nach einer vorbestimmten Zeit
gelöscht
wird.
-
Um
einen schnellen Zugriff auf Intervalle in dem Speicher bzw. ein
schnelles Zusammenfassen von überlappenden
und/oder angrenzenden Intervallen im Speicher zu erreichen, werden
die im Speicher eines jeweiligen Netzknotens enthaltenen Intervalle in
Abhängigkeit
von den Intervallanfangs- und/oder Intervallendpunkten geordnet,
und zwar insbesondere nach den Intervallanfangspunkten oder, wenn
diese gleich sind, nach den Intervallendpunkten.
-
In
einer weiteren Ausgestaltung der Erfindung werden für zumindest
einen Teil der Abfragewerte ein oder mehrere Schlüsselwörter, welche
die mit einem Abfragewert verknüpfte
Information beschreiben, eindeutig dem Abfragewert zugeordnet, insbesondere
unter Verwendung eines Hash-Algorithmus. Ebenso ist es möglich, dass
für zumindest einen
Teil der Abfragewerte die mit einem Abfragewert verknüpften Informationen
selbst eindeutig dem Abfragewert zugeordnet werden. Auch hier kann
vorzugsweise ein Hash-Algorithmus verwendet werden.
-
In
einer weiteren Ausgestaltung des erfindungsgemäßen Verfahrens sind die mit
einem Abfragewert verknüpften
Informationen Daten, insbesondere Dateien, wobei ein Netzknoten,
welcher für
einen jeweiligen Abfragewert zuständig ist, die entsprechenden
Daten speichert oder einen Verweis auf den Speicherort der entsprechenden
Daten enthält.
-
Neben
dem oben beschriebenen Verfahren betrifft die Erfindung ferner ein
dezentrales Datennetz mit einer Vielzahl von Netzknoten, wobei das Datennetz
derart ausgestaltet ist, dass das erfindungsgemäße Verfahren durchführbar ist.
Das Datennetz ist hierbei vorzugsweise ein Computernetz, in dem
die Netzknoten einen oder mehrere Rechner umfassen. Besonders bevorzugt
wird als Datennetz ein Peer-to-Peer-Netz, z. B. ein Chord-Ring,
eingesetzt.
-
Ausführungsbeispiele
der Erfindung werden nachfolgend anhand der beigefügten Figur
detailliert beschrieben.
-
1 zeigt
die schematische Darstellung eines Peer-to-Peer-Netzes, anhand welcher eine Ausführungsform
des erfindungsgemäßen Verfahrens beschrieben
wird.
-
Bei
dem in 1 gezeigten dezentralen Peer-to-Peer-Netz handelt
es sich um einen sog. Chord-Ring, der hinlänglich aus dem Stand der Technik
bekannt ist. Dieser Ring umfasst in der Ausführungsform der 1 achtzehn
Netzknoten in der Form von Peers P1, P2, ..., P18. Jedem Peer ist
dabei ein Wertebereich von Abfragewerte zugeordnet, wobei in der
hier beschriebenen Variante als Abfragewerte Hashwerte verwendet
werden, welche in einer verteilten Hash-Tabelle hinterlegt sind.
In einer solchen Hash-Tabelle sind die Hashwerte linear geordnet
und beschränkt,
insbesondere auf natürliche Zahlen
aus einem bestimmten Bereich. Die Hashwerte in der verteilten Hash-Tabelle
werden hierbei mit einer Hashfunktion erzeugt, welche so konstruiert ist,
dass die Verteilung der Hashwerte möglichst gleichmäßig ist.
-
Jeder
der Peers P1 bis P18 ist dabei für
einen Hashwerte-Bereich
aus der Hash-Tabelle zuständig,
wobei jedem Peer selbst auch ein Hashwert zugeordnet ist, welcher
der Endpunkt des Hashwerte-Bereichs des jeweiligen Peers ist. Die
Hashwertebereiche der einzelnen Peers in 1 erstrecken sich
dabei von dem Hashwert eines vorangegangenen Peers zu dem Hashwert
des betrachteten Peers. Die Richtung von Vorgänger zu Nachfolger ist in 1 dabei
die Richtung im Uhrzeigersinn in dem betrachteten Ring. Neben einem
Hashwert und einem Hashwerte-Bereich ist jedem Peer ferner eine eindeutige
Identität
zugeordnet, mit welcher der Peer in dem Ring identifizierbar und
adressierbar ist. Beispielsweise kann die IP-Adresse (IP = Internet
Protocol) des Peers diese Identität darstellen. In 1 ist für jeden
der Peers P1 bis P18 ein Tupel angegeben, welches den Hashwert hx
(x = 1, ..., 18) des entsprechenden Peers, die Identität IDx (x
= 1, ..., 18) des entsprechenden Peers sowie den Wertebereich Ix
(x = 1, ..., 18) angibt, für
den der entsprechende Peer zuständig
ist. Wie bereits angegeben, erstreckt sich jeder Wertebereich Ix
von dem betrachteten Peer Px zum vorangegangenen Peer, d. h. es
gilt Ix = [h (x – 1)
+ 1; hx] für
x = 2, ..., 18 und I1 = [h18 + 1; h1], wobei das Intervall I1 über den
Ringschluss hinüberreicht.
-
Gemäß dem Verfahren
der Erfindung wird für jeden
Peer ein Zwischenspeicher oder Cache zum Abspeichern von Zuordnungen
zwischen Identitäten und
Hashwerten bzw. Hashwerte-Bereiche benötigt. Deshalb enthält jeder
Peer einen Cache C, der in 1 nur für den Peer
P1 schematisiert angedeutet ist.
-
In
dem Chord-Ring der 1 kann jeder Peer mit Hilfe
eines sog. Lookup-Algorithmus nach einem oder mehreren Hashwerten
suchen. Jeder Hashwert ist dabei mit Informationen verknüpft, nach denen
in dem Chord-Ring gesucht werden kann. Die Generierung des Hashwerts
kann dabei beispielsweise derart erfolgen, dass für eine entsprechende Information,
z. B. eine MP3-Musikdatei,
Schlüsselwörter zur
Spezifizierung des Inhalts der Datei existieren. Aus den Schlüsselwörtern wird
dann ein eindeutiger Hashwert generiert, welcher der entsprechenden
Datei zugeordnet ist. Peers, die für einen derartigen Hashwert
zuständig
sind, haben dabei Zugriff auf die entsprechende Datei, insbesondere
ist die entsprechende Datei lokal auf dem betreffenden Peer gespeichert.
Es ist jedoch auch möglich,
dass der entsprechende Peer nur einen Verweis auf den Speicherort
der Datei enthält.
-
Um
eine Anfrage nach einem Hashwert bzw. mehreren Hashwerten in dem
Peer-to-Peer-Netz zu verteilen, ist jedem Peer eine vorbestimmte
Anzahl von Nachbarn sowie eine Anzahl von weiteren Peers bekannt,
wobei die weiteren Peers auch als Finger bezeichnet werden. Geht
man davon aus, dass in dem Netz der 1 2m Hashwerte existieren, sind die Finger eines
Peers mit einem bestimmten Hashwert h diejenigen Peers, die jeweils
für den
Hashwert (h + 2i) mod 2m (i
= 0, ..., m – 1)
zuständig
sind. Die einzelnen Finger liegen somit für kleine Indizes i nahe an
dem betrachteten Peer, der Abstand der Finger steigt jedoch mit
wachsendem i exponentiell an. Der Finger mit dem größten Abstand
von dem betrachteten Peer ist hierbei in dem in 1 gezeigten Chord-Ring
der diametral dem betrachteten Peer gegenüberliegende Peer.
-
In
dem in 1 gezeigten Chord-Ring kennt jeder Peer seinen
direkten Nachfolger sowie seine Finger. Dies ist in 1 durch
entsprechende Pfeile 1, 2, 3 und 4 für den Peer
P1 angedeutet. Ein Finger kann hierbei auch mit dem direkten Nachbarn
zusammenfallen. Darüber
hinaus ist durch die Pfeile 5, 6 und 7 für den Peer
P10 in 1 angedeutet, welche Peers dem Peer P10 unter
anderem bekannt sind. Dies sind die Peers P11, P12 und P14. Man
erkennt, dass dem Peer P1 unter anderem die Peers P2, P3, P5 und
P10 bekannt sind. Ferner ist durch den Pfeil 8 angedeutet,
dass dem Peer P12 sein direkter Nachfolger P13 bekannt ist.
-
In
dem Szenario der 1 ist ein Lookup-Algorithmus
angedeutet, bei dem der anfragende Peer P1 nach dem Hashwert hs
sucht, der durch einen schwarzen Punkt in 1 wiedergegeben
ist. Durch die Lage des Hashwertes hs zwischen den Peers P12 und
P13 wird verdeutlicht, dass dieser Hashwert hs zwischen dem Hashwert
h12 des Peers P12 und dem Hashwert h13 des Peers P13 liegt. Dies
bedeutet, dass der Peer P13 derjenige Peer ist, der für den Hashwert
hs zuständig
ist. Zum Auffinden dieses Peers P13 wird von dem Peer P1 eine entsprechende
Anfrage in das Netz gesendet. Das Vorgehen ist hierbei wie folgt:
Der Peer P1 sucht aus allen ihm bekannten Peers denjenigen aus,
dessen Hashwert dem Hashwert der Anfrage am nächsten liegt, d. h. den letzten
ihm bekannten Peer vor oder auf dem Hashwert der Anfrage (im Uhrzeigersinn).
An diesen Peer wird eine entsprechende Anfrage A1 gesendet. In 1 ist
dieser Peer der Peer P10. Der Peer P10 sendet auf die Anfrage A1
eine entsprechende Rückmeldung
R1 an den Peer P1. Die Rückmeldung
enthält
die Information, welcher von den Peers, die dem Peer P10 bekannt
sind, derjenige Peer ist, dessen Hashwert dem gesuchten Hashwert
hs am nächsten liegt.
Hierbei werden die Identität
und der Hashwert dieses nächstliegenden
Peers übermittelt.
Daraufhin setzt der Peer P1 die Anfrage mit einer weiteren Anfrage
A2 fort, welche in dem Szenario der 1 an den
Peer P12 gerichtet ist, denn dieser Peer ist aus der Menge der dem
Peer P10 bekannten Peers derjenige, dessen Hashwert dem Hashwert
hs am nächsten
liegt. Der Peer P12 erkennt schließlich, dass er der letzte Peer
vor dem Hashwert hs ist und sendet in der Rückmeldung R2 an den Peer P1
die Identität
ID13 und den Hashwert h13 seines direkten Nachfolgers P13 zurück. Der
Peer P1 erkennt, dass der Hashwert h13 des Peers P13 bereits hinter
dem Hashwert hs liegt und dass daher der Peer P13 für den Hashwert
hs zuständig
ist.
-
In
dem erfindungsgemäßen Verfahren
wird die Suche nach Hashwerten durch Verwendung von lokalen Caches
C in jedem der Peers P1 bis P18 vereinfacht. Hierzu werden Informationen
in den Caches bei der Durchführung
eines Lookups gespeichert, welche bei späteren Lookups wieder verwendet
werden können.
Bei dem in 1 gezeigten Lookup nach dem
Hashwert hs wird nach Durchführung
des Lookups in dem Cache C des Peers P1 für den Hashwert hs die entsprechende
Identität
ID13 des Peers P13 hinterlegt. Sollte bei einer späteren Suche
wieder nach dem Hashwert hs gesucht werden, wird zunächst in
dem Cache C nachgeschaut, ob bereits ein Eintrag für hs vorhanden
ist. Es wird dann erkannt, dass hs dem Peer P13 zugeordnet ist,
so dass als Suchergebnis sofort die Identität ID13 dieses Peers ausgegeben
werden kann, ohne dass Datenverkehr im Chord-Ring zum Auffinden
dieses Peers generiert wird.
-
In
einer bevorzugten Ausführungsform
des Verfahrens wird für
den Lookup gemäß 1 nicht nur
eine Zuordnung zwischen dem Hashwert hs und der Identität ID13 des
Peers P13 erzeugt, sondern es wird eine Zuordnung des Intervalls
[hs, h13] zur Identität
ID13 des Peers P13 erzeugt. Dies ist möglich, da bekannt ist, dass
der Peer P13 für
einen Hashwerte-Bereich zuständig
ist, dessen Endwert der Hashwert h13 ist. Dies bedeutet, dass alle
Hashwerte zwischen hs und h13 Hashwerte sein müssen, für die der Peer P13 zuständig ist.
Durch diese Variante des Verfahrens wird auf einfache Weise einer
Vielzahl von Hashwerten eine entsprechende Peer-Identität im Cache
C zugeordnet, so dass in noch weniger Fällen ein Lookup mit Datenverkehr
zum Auffinden des entsprechenden Peers erforderlich ist.
-
Der
in Bezug auf 1 beschriebene Lookup ist ein
sog. iterativer Lookup, bei dem jeder Peer innerhalb des Lookups
eine Rückmeldung
an den Initiator des Lookups gibt, wobei der Initiator dann die
Anfrage an den nächsten
Peer auslöst.
Im Unterschied hierzu werden bei einem rekursiven Lookup keine mehrfachen
Rückmeldungen
an den Initiator des Lookups gegeben, sondern jeder Peer leitet
die Anfrage sofort an den ihn bekannten Peer weiter, der dem gesuchten
Hashwert am nächsten liegt.
Die Verwendung einer iterativen Implementierung des Lookups hat
den Vorteil, dass bei jeder Rückmeldung
dem Initiator mitgeteilt wird, wie die Identität und der Hashwert desjenigen
Peers lautet, an den die nächste
Anfrage im Lookup zu richten ist. Diese Information wird in einer
besonders bevorzugten Ausführungsform
der Erfindung in dem Initiatorpeer (d. h. im Peer P1 der 1)
derart verarbeitet, dass ein Eintrag in dem Cache C für den rückgemeldeten
Peer erzeugt wird, wobei der Eintrag aus dem Hashwert des rückgemeldeten
Peers und dessen Identität
besteht. Hierdurch wird der Cache C auch um Hashwerte erweitert,
nach denen gemäß dem Lookup
nicht explizit gesucht wird.
-
Das
erfindungsgemäße Verfahren
kann auch in Peer-to-Peer-Systemen
eingesetzt werden, bei denen eine r-fache Replikation von Hashwerten
vorliegt. Hierunter ist zu verstehen, dass jedem Hashwert eine Replikationsgruppe
von r Peers zugeordnet ist. Dies ist dadurch realisierbar, dass
jedem Peer nicht nur das Hashwert-Intervall bis zum benachbarten
Vorgänger-Peer
zugeordnet wird, sondern ein Hashwert-Intervall, welches sich über r Vorgänger-Peers
erstreckt. In diesem Fall werden als Ergebnis eines Lookups alle
Peers mit den entsprechende Identitäten und Hashwerten zurückgegeben,
welche für
den gesuchten Hashwert zuständig
sind. Daraufhin können
in dem Cache des anfragenden Peers für den entsprechenden gesuchten
Abfragewert alle drei Peer-Identitäten hinterlegt werden. Darüber hinaus besteht
in einer bevorzugten Variante auch die Möglichkeit, diese Peer-Identitäten der
Replikationsgruppe mit einem Hashwerte-Bereich zu verknüpfen, und zwar
mit dem Hashwerte-Bereich, der von dem gesuchten Hashwert bis zu
dem Hashwert reicht, welcher der kleinste Hashwert ist, der einem
Peer der Replikationsgruppe zugeordnet ist. Von diesem Wertebereich
ist bekannt, dass jeder Peer der Replikationsgruppe für diesen
Wertebereich zuständig
ist.