• Keine Ergebnisse gefunden

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 Relationdie 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), iN0 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.

2.5 Vorstellung strukturierter Peer-to-Peer-Protokolle und