Die folgenden Definitionen der zentralen Begrifflichkeiten bereiten die Einf¨uhrung kon-kreter strukturierter P2P-Protokolle und -Regelwerke in Abschnitt 2.5 vor.
Jeder Knoten in einem strukturierten Peer-to-Peer-Netzwerk verf¨ugt ¨uber einen system-weit einzigartigen Bezeichner, die NodeID:
Definition 2.8 NodeID:
Die NodeID ni eines Knotens i ist sein eindeutiger Bezeichner, ein Bitstring mit fester L¨angemn. Sie wird mittels einer systemweit festgelegten und jedem Teilnehmer des Peer-to-Peer-Netzwerks bekannten Funktion ν ¨uber knotenspezifische Datendi berechnet:
ni =ν(di), ν:{0,1}∗ → {0,1}mn
Bemerkung: Im Folgenden wird die NodeID ni auch zur Referenzierung des Knotens i verwendet; ni wird also synonym zu igebraucht.
Analog zur NodeID ist die FileID7 als Bezeichner f¨ur Datens¨atze definiert.
Definition 2.9 FileID:
Die FileID fj eines Datensatzesj ist sein nicht notwendigerweise eindeutiger identifizie-render Bezeichner, ein Bitstring mit fester L¨ange mf. Sie wird mittels einer systemweit
7In der P2P-Literatur wird die FileID eines Datensatzes in der Regel als Keybezeichnet. Um Ver-wechslungen mit Public Keys und Private Keys auf der AAI-Ebene zu vermeiden, wird auf diese g¨angige Notation in dieser Arbeit absichtlich verzichtet.
festgelegten und jedem Teilnehmer des Peer-to-Peer-Netzwerks bekannten Funktionφ¨uber spezifische Metadaten dj des Datensatzes berechnet:
fj =φ(dj), φ:{0,1}∗→ {0,1}mf
Die FileID wird in der Regel aus allgemeinen Metadaten ¨uber den Datensatz berechnet;
damit ergeben sich nicht-eindeutige FileIDs f¨ur Datens¨atze mit ¨ahnlichem Inhalt und da-durch identischen allgemeinen Metadaten. Im weiteren Verlauf dieser Arbeit (Kapitel 5) werden auch f¨ur das AAI-Datenverwaltungssystem nicht-eindeutige FileIDs vorkommen.
Definition 2.10 Adressraum:
Der m¨ogliche Wertebereich f¨ur NodeIDs und FileIDs wird als Adressraum bezeichnet. F¨ur NodeIDs umfasst der Adressraum alle m¨oglichen Bitstrings der L¨ange mn, f¨ur FileIDs alle m¨oglichen Bitstrings der L¨ange mf.
In den meisten Peer-to-Peer-Regelwerken giltmn=mf =m.
Eine grundlegende Maßzahl ist die Distanz zwischen zwei Bezeichnern:
Definition 2.11 Distanz:
Die Distanz zwischen zwei Bitfolgenx undy gibt gem¨aß einer festgelegten Relation∆die Entfernung zwischen x und y an. Bei dieser Relation handelt es sich definitionsgem¨aß um eine Metrik, d.h. sie erf¨ullt die folgenden Axiome:
1. ∆(x, x) = 0
2. ∆(x, y)>0⇔x6=y
3. ∆(x, y) = ∆(y, x) (Symmetrie)
4. ∆(x, y)≤∆(x, z) + ∆(z, y) (Dreiecksungleichung)
In P2P-Umgebungen sindxund yNodeIDs oder FileIDs. Mit Hilfe dieser Distanzdefini-tion wird dann beispielsweise der FileID-Bereich definiert, f¨ur den ein Knoten zust¨andig ist, oder die Auswahl des n¨achsten Knotens, an den eine Suchanfrage weitergeleitet wird (siehe Definition 2.14 des Lookup).
Definition 2.12 Mapping und Zust¨andigkeit:
Ein Bezeichner b(FileID oder NodeID) wird in Abh¨angigkeit von der Distanz zwischen b und den NodeIDs der Knoten im Netzwerk einer KnotenmengeNbzugeordnet (Mapping).
Damit sind die Knoten ∈ Nb f¨urb zust¨andig:
Nb=νr(b), νr :{0,1}m→ P({0,1}m) Es gilt |Nb| ≥1. F¨ur einen Knotennri ∈ Nb schreibt man auchnrhbi.
Als Basis f¨ur die Definition der Lookup-Prozedur werden nun die Grundbegriffe von Pfaden und deren L¨angen vorgestellt.
Abbildung 2.3: Pfad der L¨ange 5 Definition 2.13 Pfad und Pfadl¨ange:
Ein Pfad ist eine Folge von Knoten. Der Anfangspunkt des Pfades wird durch den Start-knoten, das Ende durch den Zielknoten determiniert. Die Knoten sind durch gerichtete Kanten in Richtung des Zielknotens verbunden. Die L¨ange eines Pfades ist die Anzahl der in ihm enthaltenen Knoten.
Eine Kernmethode von Peer-to-Peer-Regelwerken und Bestandteil jedes P2P-Protokolls ist der Lookup:
Definition 2.14 Lookup und Routing:
Der Lookup bezeichnet die von einem Peer initiierte Suchanfrage nach zust¨andigen Kno-ten f¨ur einen Bezeichner, also f¨ur die FileID eines DaKno-tensatzes oder die NodeID eines anderen Knotens.
Als Lookup-Nachricht lookupb f¨ur Bezeichner b bezeichnet man die Bitfolge, welche die Suchanfrage repr¨asentiert. Sie wird gem¨aß systemweit definierter Regeln von Knoten zu Knoten weitergeleitet. Dabei nutzt jeder Peer die in seiner Routing-Tabelle gespeicherten Verweise auf andere Knoten, so dass sich der Lookup mit jedem Schritt den zust¨andigen Peers ann¨ahert, bis schließlich ein Knoten nrhbi gefunden ist und an den Initiator der Anfrage gemeldet wurde. Der konkrete Weiterleitungsprozess wird als Routing bezeichnet.
Gegen¨uber der Suche mittels Flooding in unstrukturierten P2P-Systemen terminiert ein Lookup in einem strukturierten System immer, da er durch die definierten Regeln stets die zust¨andigen Knoten erreicht.
Definition 2.15 Routing-Pfad:
Ein Routing-Pfad ist die Abfolge aller Knoten, welche an einem Lookup beteiligt sind.
Die Lookup-Nachricht f¨ur Bezeichner b wird vom initiierenden Knoten an den ersten Knoten des Pfades ¨ubergeben und in der Regel von dort aus weitergereicht.
Die Verbindung vom vorletzten Knoten zum letzten repr¨asentiert je nach konkretem Pro-tokoll entweder den Transfer der Lookup-Nachricht, wobei der zust¨andige Knoten dann selbst eine Antwort an den initiierenden Peer generiert (siehe Abb. 2.4(a)), oder eine lo-gische Verbindung, d.h. einen Zeiger aufnrhbi, der vomvorletzten Knoten gemeldet wird (siehe Abb. 2.4(b)). Ist im weiteren von Pfaden die Rede, so sind stets Routing-Pfade gemeint.
In den Beschreibungen aus Abschnitt 2.5 tauchen wiederholt Hashfunktionen auf; sie werden vor allem f¨ur die Berechnung von NodeIDs und FileIDs verwendet. Es handelt sich hierbei um konsistente Hashfunktionen [Sch95] wie beispielsweise SHA-1 [SHS01].
(a) Routing-Pfad mit R¨uckmeldung durch zust¨andigen Knoten
(b) Routing-Pfad mit R¨uckmeldung durch vorletzten Knoten
Abbildung 2.4: Routing-Pfad der L¨ange 5 Definition 2.16 Konsistente Hashfunktion:
Eine Hashfunktion ist eine Funktion
H : Σ∗→Σm,
welche Zeichenfolgen beliebiger L¨ange aus dem Alphabet Σ auf Zeichenfolgen der festen L¨ange m abbildet. In der Informationstechnik gilt allgemein Σ ={0,1}. Der Funktions-wert y=H(x) wird auch als Hashwert von x bezeichnet.
Hi(x), i∈N0 ist diei-fache Anwendung der HashfunktionH auf Eingabewert x:
Hi(x) =H(H(. . . H
| {z }
i−mal
(x). . .))
F¨ur den Sonderfall i= 0 gilt H0(x) =x.
In strukturierten Peer-to-Peer-Netzwerken kommen ausschließlich konsistente Hashfunk-tionen [KLL97] zum Einsatz, welche sich insbesondere durch die folgenden Eigenschaften auszeichnen:
1. Einwegeigenschaft: Der Hashwert eines Bitstrings x ist effizient berechenbar:
H(x) =y. Es ist jedoch praktisch unm¨oglich, einen Eingabewert x0 zu einem gege-benen y zu finden, so dassy=H(x0).
2. Schwache Kollisionsresistenz (2nd-preimage resistance): Es ist praktisch unm¨oglich, zu einem gegebenen Wertxeinx0 6=xzu finden, so dassH(x) =H(x0).
3. Gleichverteilung: F¨ur einen beliebigen Eingabewert x ist jeder Funktionswert y aus der Menge aller m¨oglichen Hashwerte als Wert f¨urH(x)gleich wahrscheinlich.
Die Gleichverteilung ist eine entscheidende Eigenschaft f¨ur den Einsatz von konsisten-ten Hashfunktionen zur Generierung von NodeIDs und FileIDs. So wird sichergestellt, dass sich diese Bezeichner gleichm¨aßig in ihrem Adressraum verteilen. So ist ein Knoten
jeweils f¨ur in etwa den gleichen Anteil der insgesamt im Netz vorhandenen Daten ver-antwortlich. Zudem ist so insbesondere bei Join und Leave von Knoten der Aufwand f¨ur die Umverteilung der FileIDs auf die zust¨andigen Knoten minimal.