als PDF-Dokument

Werbung
FAKULTÄT II - DEPARTMENT FÜR INFORMATIK
Abteilung Software Engineering
Diplomarbeit
Suchverfahren für
organisations-orientierte
Super-Peer-Architekturen
21. Oktober 2005
Bearbeitet von:
Stefan Willer
Bürgereschstr. 10
26123 Oldenburg
[email protected]
Betreut von:
Erstgutachter: Prof. Dr. Wilhelm Hasselbring
Zweitgutachter: Dipl.-Inform. Ludger Bischofs
Selbstständigkeitserklärung
Ich erkläre hiermit, dass ich diese Diplomarbeit selbstständig angefertigt habe und
alle Teile, die wörtlich oder inhaltlich anderen Quellen entstammen, als solche kenntlich gemacht und in das Literaturverzeichnis aufgenommen habe. Diese Arbeit wurde
weder in dieser noch einer ähnlichen Form einer anderen Prüfungsbehörde vorgelegt.
Oldenburg, den 21. Oktober 2005
(Stefan Willer)
ii
Zusammenfassung
Kommunikation ist die Grundlage neuer Wissensakquisition. Dieser Prozess unterliegt einem Beziehungsgeflecht unterschiedlicher Dynamik, das durch die Dauer und
die Semantik dieser Beziehungen geprägt ist. So variiert häufig nur der Weg zum
Ziel. Diese natürlichen dynamischen Kommunikationswege können in der Softwareentwicklung durch dezentrale Peer-to-Peer-Architekturen nachgebildet werden. Der
dieser Arbeit zugrunde liegende Einsatzbereich umfasst organisatorische Strukturen,
wie sie in einer Entwickler-Community zu beobachten sind. Zur Kommunikation innerhalb dieser Domäne kann eine Peer-to-Peer-Architektur genutzt werden, indem
organisatorische Strukturen auf Peers abgebildet werden.
In der vorliegenden Arbeit wird eine grafische Simulationsumgebung zur Performanzanalyse von Such- und Routingverfahren in Peer-to-Peer-Architekturen vorgestellt.
Von entscheidender Bedeutung ist die Unterstützung einer Vielzahl an Verfahren,
so dass vorab ein umfassender Überblick erstellt wird, aus dem sich die Anforderungen an die Simulationsumgebung ergeben. Um die Verwendbarkeit in anderen
Domänen zu ermöglichen, werden organisations-orientierte Strukturen optional als
zusätzliches Overlay simuliert. Durchgeführte Experimente verdeutlichen den Einsatz
des Simulators und resultieren abschließend in einem Vorschlag eines Suchverfahrens
in organisations-orientierten Super-Peer-Architekturen.
iii
Inhaltsverzeichnis
Selbstständigkeitserklärung
ii
Zusammenfassung
iii
Abbildungsverzeichnis
viii
Tabellenverzeichnis
xii
1. Einleitung
1.1. Zielsetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2. Vorgehensweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3. Einordnung der Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . .
2. Organisations-orientierte Super-Peer-Architekturen
2.1. Peer-to-Peer . . . . . . . . . . . . . . . . . . . . .
2.1.1. Definitionen . . . . . . . . . . . . . . . . .
2.1.2. Klassifikation von P2P Architekturen . . .
2.2. Super-Peer-Architekturen . . . . . . . . . . . . .
2.2.1. Aufbau . . . . . . . . . . . . . . . . . . . .
2.2.2. Funktionsweise . . . . . . . . . . . . . . .
2.2.3. Startvorgang . . . . . . . . . . . . . . . .
2.2.4. Suche . . . . . . . . . . . . . . . . . . . .
2.2.5. Lastverteilung . . . . . . . . . . . . . . . .
2.2.6. Bewertung . . . . . . . . . . . . . . . . . .
2.3. Organisationen . . . . . . . . . . . . . . . . . . .
2.3.1. Das betrachtete System . . . . . . . . . .
2.3.2. Overlay-Strukturen . . . . . . . . . . . . .
3. Such- und Routingverfahren
3.1. Einführung . . . . . . . . . . . . . . . . . . . .
3.1.1. Gliederung des Kapitels . . . . . . . . .
3.1.2. Verwendete Begriffe . . . . . . . . . . . .
3.2. Verfahren der 1.ten Generation . . . . . . . . .
3.2.1. Breitensuche - Breath-first traversal BFS
3.2.2. Tiefensuche (Depth-first traversal DFS) .
iv
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
1
2
2
.
.
.
.
.
.
.
.
.
.
.
.
.
4
4
5
5
7
7
8
9
10
10
11
12
13
15
.
.
.
.
.
.
18
18
18
20
20
21
26
Inhaltsverzeichnis
3.2.3. Random Walks . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.4. APS - Adaptive Probabilistic Search . . . . . . . . . . . . . .
3.2.5. Local Indices . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.6. Routing Index - RI . . . . . . . . . . . . . . . . . . . . . . . .
3.2.7. DLRP - Distributed Resource Location Protocol . . . . . . . .
3.2.8. SUPS - Scalable Unstructured P2P System . . . . . . . . . . .
3.3. Verfahren der 2.ten Generation . . . . . . . . . . . . . . . . . . . . .
3.3.1. CHORD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.2. CAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.3. Tapestry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.4. AGILE - Adaptive, Group-of-Interest-based Lookup Engine .
3.3.5. SHARK - Symmetric Hierarchy Adaption for Routing of Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.6. Kademlia . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.7. YAPPERS - Yet Another Peer-to-PEeR System . . . . . . . .
3.3.8. CANDy - (Content Addressable Network DirectorY . . . . . .
3.3.9. Kelips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.10. SkipNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4. Verfahren der 3.ten Generation . . . . . . . . . . . . . . . . . . . . .
3.4.1. Viceroy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.2. Distance Halving . . . . . . . . . . . . . . . . . . . . . . . . .
3.5. Überblick und Auswahl . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5.1. Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5.2. Auswahl der zu simulierenden Verfahren . . . . . . . . . . . .
4. Anforderungsdefinition
4.1. Ausgangssituation . . . . . . .
4.2. Rollenanalyse . . . . . . . . .
4.3. Funktionale Anforderungen .
4.4. Technische Anforderungen . .
4.5. Konzeptionelle Anforderungen
4.6. Strukturelle Anforderungen .
28
28
30
30
32
33
33
34
41
44
47
47
49
49
50
50
51
53
53
53
53
54
57
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
58
58
59
60
60
61
62
5. Beschreibung der Simulation
5.1. Einführung . . . . . . . . . . . . . . .
5.1.1. Grundlegendes . . . . . . . . .
5.1.2. Validation und Verifikation . . .
5.1.3. Sichtweisen dieser Simulation .
5.1.4. Gliederung der Simulation . . .
5.2. Simulationsmodell . . . . . . . . . . . .
5.2.1. Messen nach der GQM-Methode
5.2.2. Simulationszyklus . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
63
63
63
65
65
65
66
67
70
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
v
Inhaltsverzeichnis
5.2.3. Ereignisbehandlung . . . . .
5.3. Ein-/Ausgabemodell . . . . . . . .
5.3.1. Konfiguration . . . . . . . .
5.3.2. Topologie . . . . . . . . . .
5.3.3. Such- und Routingstrategien
5.3.4. Suchanfragen . . . . . . . .
5.3.5. Ausgabebericht . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6. Entwurf und Implementierung
6.1. Grobentwurf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.1.1. Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2. Feinentwurf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2.1. Abgrenzung von bestehenden Rahmenwerken zur Simulation
6.2.2. Strukturelle Sicht . . . . . . . . . . . . . . . . . . . . . . . .
6.2.3. Verhaltenssicht . . . . . . . . . . . . . . . . . . . . . . . . .
6.2.4. Ablaufsicht . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2.5. Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3. Implementierung . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3.1. Entwicklungsumgebung . . . . . . . . . . . . . . . . . . . . .
6.3.2. Benutzerschnittstelle . . . . . . . . . . . . . . . . . . . . . .
7. Experimente
7.1. Abgrenzung eines Experimentes .
7.2. Beschreibung der Experimente . .
7.3. Analyse der Experimente . . . . .
7.3.1. Vergleich VRW-VC . . . .
7.3.2. Vergleich ORW-OIBFS . .
7.3.3. Vergleich OIBFS-VC . . .
7.3.4. Validation der Ergebnisse
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
71
73
73
75
78
78
80
.
.
.
.
.
.
.
.
.
.
.
81
81
82
82
83
84
89
90
91
93
93
93
.
.
.
.
.
.
.
97
97
97
98
98
100
100
101
8. Schlussfolgerung und Ausblick
8.1. Vorschlag eines organisations-orientierten Suchverfahrens für SuperPeer-Architekturen . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.1.1. Aufbau der virtuellen Ebene . . . . . . . . . . . . . . . . . . .
8.1.2. Aufbau der organisatorischen Ebene . . . . . . . . . . . . . .
8.1.3. Verbindung der virtuellen und organisatorischen Ebene . . . .
8.2. Zusammenfassung und Fazit . . . . . . . . . . . . . . . . . . . . . . .
8.3. Anknüpfungspunkte und Ausblick . . . . . . . . . . . . . . . . . . . .
103
Literaturverzeichnis
109
vi
103
103
104
104
106
107
Inhaltsverzeichnis
A. Suchstrategien
A.1. Aufbau einer Suchstrategie .
A.2. Beispiel einer Suchstrategie
A.3. Beispiel ORW . . . . . . . .
A.4. Beispiel VC . . . . . . . . .
A.5. Beispiel OIBFS . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
118
118
119
121
122
123
B. Experimente
B.1. Aufbau der Beschreibungen . . . .
B.2. Experiment VRW-VC . . . . . . .
B.2.1. Konfiguration VRW1“ . . .
”
B.2.2. Konfiguration VRW2“ . . .
”
B.2.3. Konfiguration VRW3“ . . .
”
B.2.4. Konfiguration VRW4“ . . .
”
B.2.5. Konfiguration VRW5“ . . .
”
B.2.6. Konfiguration VRW6“ . . .
”
B.2.7. Konfiguration VC1“ . . . .
”
B.2.8. Konfiguration VC2“ . . . .
”
B.3. Experiment ORW-OIBFS . . . . .
B.3.1. Konfiguration ORW“ . . .
”
B.3.2. Konfiguration OIBFS“ . . .
”
B.4. Experiment OIBFS-VC . . . . . . .
B.4.1. Konfiguration OIBFS-VC1“
”
B.4.2. Konfiguration OIBFS-VC2“
”
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
125
125
126
126
128
130
132
134
136
138
140
142
142
144
146
146
148
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
C. Buildmanagement
150
C.1. Aufbau und Umgang . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
C.2. Verzeichnisstruktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
D. Danksagung
153
vii
Abbildungsverzeichnis
2.1. Einfache Super-Peer-Architektur . . . . . . . . . . . . . . . . . . . . .
8
2.2. Redundante Super-Peer-Architektur . . . . . . . . . . . . . . . . . . .
8
2.3. Abstraktionsebenen in einer organisations-orientierten Super-Peer-Architektur
[BS05] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4. Super-Peer Overlay. Verbindungen repräsentieren Registrierungen zwischen Peers und Super-Peers. . . . . . . . . . . . . . . . . . . . . . . 17
2.5. Organisatorisches Overlay. Verbindungen stellen organisatorische Beziehungen dar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.1. Ausschnitt des Netzwerkes mit jeweiligen Indextabellen. Anfrage nach
Ressource aus Kategorie K1 und K3 an Knoten A versandt. Auswahlroute fett gekennzeichnet mit Gütewert als Auswahlkriterium. Berechnung des Gütewertes G von Knoten C. . . . . . . . . . . . . . . . . .
3.2. Chord-Ring mit drei Knoten und m=3 . . . . . . . . . . . . . . . . .
3.3. Aufbau des Chord-Ringes wie in Abb. 3.2. Knoten 192.168.0.12 sucht
Ressource R1, die von Knoten 192.168.0.17 verwaltet wird. Verweis
über dritten Eintrag der gezeigten Fingertabelle. . . . . . . . . . . . .
3.4. Systemarchitektur nach Mizrak et. al. . . . . . . . . . . . . . . . . . .
3.5. a) Aufbau eines CAN bestehend aus vier Knoten b) Hinzufügen von
Knoten K5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6. Nachbarschaftsliste des Knotens mit der ID=4567 . . . . . . . . . . .
3.7. a)Suchbaum und b)Routing-Tabelle(n) eines Knotens . . . . . . . . .
3.8. Multidimensionale Hierarchie in SHARK . . . . . . . . . . . . . . . .
3.9. Hierarchische Darstellung der Routinginformationen jedes im Netzwerk bestehenden Knotens. Knoten C (dunkelgrau) mit diesen Informationen (hellgrau) sind hervorgehoben. Ringe sind binär bezeichnet.
3.10. Zeitlicher Überblick über die Entstehung der beschriebenen Suchverfahren. Die vertikale Achse zeigt hierbei den Verlauf der Generationen
auf. Ursprünge der Verfahren sind durch Pfeile gekennzeichnet. . . . .
4.1. Fachliches Klassenmodell des Simulators. Simulationselemente treten
in Form der Elementtypen eines Architekturstils auf. Die Struktur der
Topologie, sowie das Verhalten und die initialen Suchanfragen werden
ausgelagert und dem Simulationselement zugeführt. . . . . . . . . . .
viii
31
35
36
39
41
45
48
48
52
54
62
Abbildungsverzeichnis
5.1.
5.2.
5.3.
5.4.
5.5.
.
.
.
.
.
66
68
70
72
73
Paketaufbau des Simlators . . . . . . . . . . . . . . . . . . . . . . . .
Die wichtigsten Klassen und Beziehungen innerhalb des Simulators .
Darstellung der Integration von Suchstrategien . . . . . . . . . . . . .
Initialisierungsprozess des Simulators . . . . . . . . . . . . . . . . . .
Ablauf des Nachrichtenversandes von einem Simulationselement zu einem Empfänger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.6. Konfiguration der zu simulierenden Overlays . . . . . . . . . . . . . .
6.7. Konfiguration der zu simulierenden Strategien . . . . . . . . . . . . .
6.8. Topologiegenerator zur Erzeugung einer virtuellen Topologie . . . . .
6.9. Aktuelle Betrachung der Messergebnisse aller gewählten Metriken während der Laufzeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.10. Ausgabebericht mit Darstellung der Experimenteinstellungen und Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.11. Zeitliche Auflistung aller während der Simulation eingetretenden Ereignisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
85
87
89
90
6.1.
6.2.
6.3.
6.4.
6.5.
Vorgehensmodell der Simulationsstudie
Messplanung nach der GQM-Methode .
Simulationszyklus . . . . . . . . . . . .
Nachrichtenbehandlung einer Entität .
Ein-/Ausgabe Modell des Simulators .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
92
94
94
95
96
96
96
7.1. Gegenüberstellung der Verfahren VRW und VC. Suche nach eindeutigen Peernamen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
7.2. Gegenüberstellung der Verfahren VRW und VC. Suche nach (mehrfach
vorhandenen) Ressourcen. . . . . . . . . . . . . . . . . . . . . . . . . 99
7.3. Gegenüberstellung der Verfahren ORW und OIBFS . . . . . . . . . . 100
7.4. Gegenüberstellung der Verfahren OIBFS-VC1 und OIBFS-VC2 . . . 101
8.1. Ausschnitt der Ebenenverknüpfung, die durch die gleichverteilte Verbindungsfunktion h entstehen . . . . . . . . . . . . . . . . . . . . . . 105
8.2. Ausschnitt der Ebenenverknüpfung, die durch die Organisationen abbildende Verbindungsfunktion h entstehen . . . . . . . . . . . . . . . 106
B.1. Ausgabe Experiment 1: a) Anfragen-Antworten Verhältnis (QAR) b)
Erfolgsrate der Anfragen (QSR) c) Anzahl an Antworten pro Anfrage
(APM) d) Schritte pro Antwort (HPQ) e) Virtuelle Nachrichten im
System (VMS) f) Virtuelle Nachrichten pro Element (VME) . . . . . 127
B.2. Ausgabe Experiment 2: a) Anfragen-Antworten Verhältnis (QAR) b)
Erfolgsrate der Anfragen (QSR) c) Anzahl an Antworten pro Anfrage
(APM) d) Schritte pro Antwort (HPQ) e) Virtuelle Nachrichten im
System (VMS) f) Virtuelle Nachrichten pro Element (VME) . . . . . 129
ix
Abbildungsverzeichnis
B.3. Ausgabe Experiment 3: a) Anfragen-Antworten Verhältnis (QAR) b)
Erfolgsrate der Anfragen (QSR) c) Anzahl an Antworten pro Anfrage
(APM) d) Schritte pro Antwort (HPQ) e) Virtuelle Nachrichten im
System (VMS) f) Virtuelle Nachrichten pro Element (VME) . . . . .
B.4. Ausgabe Experiment 4: a) Anfragen-Antworten Verhältnis (QAR) b)
Erfolgsrate der Anfragen (QSR) c) Anzahl an Antworten pro Anfrage
(APM) d) Schritte pro Antwort (HPQ) e) Virtuelle Nachrichten im
System (VMS) f) Virtuelle Nachrichten pro Element (VME) . . . . .
B.5. Ausgabe Experiment 5: a) Anfragen-Antworten Verhältnis (QAR) b)
Erfolgsrate der Anfragen (QSR) c) Anzahl an Antworten pro Anfrage
(APM) d) Schritte pro Antwort (HPQ) e) Virtuelle Nachrichten im
System (VMS) f) Virtuelle Nachrichten pro Element (VME) . . . . .
B.6. Ausgabe Experiment 6: a) Anfragen-Antworten Verhältnis (QAR) b)
Erfolgsrate der Anfragen (QSR) c) Anzahl an Antworten pro Anfrage
(APM) d) Schritte pro Antwort (HPQ) e) Virtuelle Nachrichten im
System (VMS) f) Virtuelle Nachrichten pro Element (VME) . . . . .
B.7. Ausgabe Experiment 7: a) Anfragen-Antworten Verhältnis (QAR) b)
Erfolgsrate der Anfragen (QSR) c) Anzahl an Antworten pro Anfrage
(APM) d) Schritte pro Antwort (HPQ) e) Virtuelle Nachrichten im
System (VMS) f) Virtuelle Nachrichten pro Element (VME) . . . . .
B.8. Ausgabe Experiment 8: a) Anfragen-Antworten Verhältnis (QAR) b)
Erfolgsrate der Anfragen (QSR) c) Anzahl an Antworten pro Anfrage
(APM) d) Schritte pro Antwort (HPQ) e) Virtuelle Nachrichten im
System (VMS) f) Virtuelle Nachrichten pro Element (VME) . . . . .
B.9. Ausgabe Experiment 9: a) Anfragen-Antworten Verhältnis (QAR) b)
Erfolgsrate der Anfragen (QSR) c) Anzahl an Antworten pro Anfrage
(APM) d) Schritte pro Antwort (HPQ) e) Organisatorische Nachrichten im System (OMS) f) Organisatorische Nachrichten pro Element
(OME) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
B.10.Ausgabe Experiment 10: a) Anfragen-Antworten Verhältnis (QAR) b)
Erfolgsrate der Anfragen (QSR) c) Anzahl an Antworten pro Anfrage
(APM) d) Schritte pro Antwort (HPQ) e) Organisatorische Nachrichten im System (OMS) f) Organisatorische Nachrichten pro Element
(OME) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
B.11.Ausgabe Experiment 12: a) Anfragen-Antworten Verhältnis (QAR) b)
Erfolgsrate der Anfragen (QSR) c) Anzahl an Antworten pro Anfrage (APM) d) Schritte pro Antwort (HPQ) e) Virtuelle Nachrichten
im System (VMS) f) Virtuelle Nachrichten pro Element (VME) g)
Organisatorische Nachrichten im System (OMS) h) Organisatorische
Nachrichten pro Element (OME) . . . . . . . . . . . . . . . . . . . .
x
131
133
135
137
139
141
143
145
147
Abbildungsverzeichnis
B.12.Ausgabe Experiment 13: a) Anfragen-Antworten Verhältnis (QAR) b)
Erfolgsrate der Anfragen (QSR) c) Anzahl an Antworten pro Anfrage (APM) d) Schritte pro Antwort (HPQ) e) Virtuelle Nachrichten
im System (VMS) f) Virtuelle Nachrichten pro Element (VME) g)
Organisatorische Nachrichten im System (OMS) h) Organisatorische
Nachrichten pro Element (OME) . . . . . . . . . . . . . . . . . . . . 149
C.1. Verzeichnisstruktur des Simulators . . . . . . . . . . . . . . . . . . . 152
xi
Tabellenverzeichnis
3.1. Einordnung der Suchverfahren anhand von Architekturstil, Suchsatz, Komplexität und Performanz. . . . . . . . . . . . . . . . . . . .
B.1.
B.2.
B.3.
B.4.
B.5.
B.6.
B.7.
B.8.
xii
Parametereinstellungen
Parametereinstellungen
Parametereinstellungen
Parametereinstellungen
Parametereinstellungen
Parametereinstellungen
Parametereinstellungen
Parametereinstellungen
zum
zum
zum
zum
zum
zum
zum
zum
Experiment
Experiment
Experiment
Experiment
Experiment
Experiment
Experiment
Experiment
VRW1
VRW2
VRW3
VRW4
VRW5
VRW6
VC1 .
ORW .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
grund56
126
128
130
132
134
136
138
142
1. Einleitung
Der Vertrieb von Software blieb in der Vergangenheit den kommerziellen Herstellern
vorbehalten, die leistungsbezogen ihre Produkte anboten. Alle an der Erstellung beteiligten Personen einer Organisation verrichteten ihre Arbeit in geordneten meist
hierarchischen Beschäftigungsverhältnissen und wurden dafür entlohnt. Ein Trend,
der seit Jahren zu verzeichnen ist, lockert sowohl die bisherige Struktur wie auch
die Kontinuität der involvierten Parteien und die festen Arbeitszeiten. Der Trend ist
vermutlich bekannter unter dem Namen Open Source.
Eine stetig wachsende Anzahl an Freier Software bedingt Änderungen in der Entwicklungsstruktur. Die Zeit, der Ort und die Entwickler selbst sind nicht mehr durch
das alltägliche Arbeitsumfeld gegeben, sondern unterliegen einer fortwährenden Dynamik und teilweisen Anonymität. Zur näheren Veranschaulichung dessen und der
Größe eines virtuellen Softwareunternehmens soll hierbei die Entwicklungs-Webseite
Sourceforge1 dienen. Um der dezentralen und dynamischen Arbeitsweise eine geeignete Kommunikationsplattform zu geben, kann anhand der gewünschten Eigenschaften
eine Peer-to-Peer Architektur die benötigen Dienste und Kommunikationsstrukturen liefern. Bisher bekannte dezentrale Systeme vergleichbarer Größenordnung sind
Tauschbörsen im Internet.
Die Frage, der sich diese Arbeit widmet ist, inwieweit sich eine effiziente Kommunikation mittels organisatorischer Beziehungen auf der Basis von P2P-Architekturen
verwirklichen lässt.
1.1. Zielsetzung
Ziel dieser Arbeit ist die Analyse bestehender Suchverfahren für Peer-to-Peer-Architekturen sowie die Entwicklung einer grafischen generischen Simulationsumgebung für
Super-Peer-Architekturen, die durch eine vereinfachte Integration von Suchstrategien
Performanzaussagen über das Verhalten von Such- und Routingverfahren gestattet.
Die Vorstellung eines geeigneten Verfahrens für die organisations-orientierte SuperPeer-Architekturen bettet die Arbeit in einen bestehenden Anwendungskontext ein.
1
http://sourceforge.net/
1
1. Einleitung
1.2. Vorgehensweise
Die vorgestellte Arbeit gibt einen Einblick in die Kommunikationsmöglichkeiten eines
dezentralen Peer-to-Peer-Netzwerkes in Verbindung mit einem domänen-spezifischen
Nutzungswert. Der behandelte Anwendungskontext wird zu Beginn in Form einer
Grundlagenbeschreibung in Kapitel 2 formuliert. Der Entwurf einer geeigneten Simulationsumgebung zur Analyse von Such- und Routingverfahren in P2P-Netzwerken
setzt das Verständnis bestehender Verfahren voraus, die in einen Überblick in Kapitel 3 zu finden sind und den Grundstein des späteren Entwurfes bilden. Nach einer
Anforderungsanalyse in Kapitel 4 erfolgt die Beschreibung der Simulation in Kapitel 5, die in dem Entwurf des Simulators in Kapitel 6 umgesetzt wird. Durch die
abschließende Darstellung einiger Experimente in Kapitel 7 wird die Verwendbarkeit verdeutlicht, die in dem Kapitel 8 in einen Vorschlag eines Suchverfahrens für
organisations-orientierte Super-Peer-Architekturen mündet.
1.3. Einordnung der Arbeit
Dezentrale Systeme, die sich neben der Lastbalanzierung eine hohe Verfügbarkeit
mit geringen Engpässen, die Selbstorganisation und die Fehlertoleranz, eine Gewährleistung der Anonymität und der Dynamik zur Aufgabe machen, sind seit geraumer
Zeit ein intensives Forschungsgebiet. Existierende Such- und Routingverfahren innerhalb dieser dezentralen Netzwerke legen unterschiedlichste Schwerpunkte hinsichtlich
dieser Eigenschaften, so dass eine Vielzahl an Variationen entstanden ist. Lv et.al.
[LCC+ 02] entgegneten dieser Vielfalt mit einer Kategorisierung in Verfahren der 1.,
2. und 3. Generation.
Als Architektur eines verteilten Systems haben in den letzten Jahren Peer-to-PeerArchitekturen an Bekanntheit gewonnen, nicht zuletzt durch den Einsatz von Tauschbörsen wie Napster und Gnutella, in denen mehrere Millionen Nutzer sich dieser als
Kommunikationsplattform bedienen. Die Abstrahierung der dortigen Anwendungsdomäne eröffnet viele weitere Einsatzbereiche, denen eine Peer-to-Peer Architektur
dienen kann. In der vorliegenden Arbeit wird der von Bischofs und Hasselbring [BH04]
beschriebene Ansatz zur verteilten Software-Entwicklung als Anlass genommen, bestehende wie auch neue domänen-spezifische Suchstrategien zu simulieren und zu
entwickeln.
Simulationen sind in der Informatik wie auch in anderen Disziplinen eine etablierte
Form der Untersuchung komplexer Zusammenhänge. Nach Law und Kelton[LK99]
sind die meisten realen Systeme zu komplex, als dass ein realistisches Modell analytisch bewertet werden kann. Die Verhaltenssimulation von Peer-to-Peer-Netzwerken
ist bereits in einigen abgregrenzten Bereichen geschehen. So entstammen einige Si-
2
1.3. Einordnung der Arbeit
mulatoren den Projekten spezieller Suchverfahren wie Freepastry2 und Freenet3 und
sind exakt darauf abgestimmt, wohingegen andere wie PlanetSim und 3LS einen allgemeineren Weg einschlagen [Jos03; TD03].
2
FreePastry: http://www.cs.rice.edu/CS/Systems/Pastry/FreePastry/, zuletzt besucht am
19.10.2005
3
The Free Network Project: http://freenet.sourceforge.net, zuletzt besucht am 19.10.2005
3
2. Organisations-orientierte Super-Peer-Architekturen
Bischofs und Steffens [BS05] präsentieren in ihrer Arbeit ein organisations-orientiertes
Super-Peer-Netzwerk, welches organisatorische Strukturen verteilter digitaler Bibliotheken repräsentiert, um verteilte Ressourcen zu integrieren. Dieser Ansatz der Verbindung eines Peer-to-Peer-Overlays mit einem weiteren domänen-spezifischen Overlay liegt in einer allgemeineren Sichtweise auch dieser Arbeit zu Grunde. Ein Overlay
soll an dieser Stelle als Überlagerung von Ebenen verstanden werden (Näheres dazu
in Kapitel 3).
Zum Verständnis der späteren Untersuchungen sind einige Grundlagen erforderlich,
die nun beschrieben werden. Nach einer Einführung in Super-Peer-Architekturen folgt
die Beschreibung der betrachteten Domäne sowie den inbegriffenen Strukturen.
2.1. Peer-to-Peer
Zur Beschreibung der Grundlagen sind einige Begriffe erforderlich, die in ihrer Bedeutung nun vorgestellt werden und [BHW05] entstammen.
Peer-to-Peer (P2P) ist ein Kommunikationsmodell gleichberechtigter Einheiten (Peers),
die direkt oder indirekt miteinander kommunizieren. Peers fungieren sowohl als Klient wie auch als Server und werden daher als Servent (Server und Klient) bezeichnet. Sie treten in einem verteilten Peer-to-Peer-System auf, das dem Peer-to-PeerKommunikationsmodell zugrunde liegt. Der Aufbau und die Struktur des Systems
wird durch die Peer-to-Peer-Architektur beschrieben. Peers - die in diesem Kontext
häufig als Knoten bezeichnet werden - bilden ein Peer-to-Peer-Netzwerk, wenn sie
nach dem P2P-Kommunikationsmodell verbunden sind.
P2P erreichte seinen Bekanntheitsgrad durch Systeme wie Napster und Gnutella
und späteren Tauschbörsen. Weitere, jedoch weniger populäre Anwendungsfelder sind
Groupware-Systeme und die Internettelefonie.
Wegen der vielseitigen Interpretation der P2P-Thematik werden einige Definitionen
vorgestellt und anschließend bisher existierende Architekturen klassifiziert. Die anfangs beschriebenen Begrifflichkeiten werden häufig in der Literatur synonym verwendet und stimmen daher nicht genau mit den anfolgenden Definitionen überein.
Im späteren Verlauf dieser Arbeit werden diese Begriffe nach obiger Beschreibung
verwendet. Die Definitionen sollen neben einer Erhöhung des Verständnisses, die
Schwierigkeit einer allgemeinen eindeutigen Eingliederung der Thematik zum Vorschein bringen.
4
2.1. Peer-to-Peer
2.1.1. Definitionen
Peer-to-Peer Netzwerke lassen sich anhand von Definitionen charakterisieren. Da keine allgemeingültige aussagekräftige Definition existiert, werden nun verschiedene, teilweise übersetzt, vorgestellt. Vorab kann ein ’Peer’(eng.) als ’Gleichgestellter’ angesehen werden, wobei die Bedeutung in den folgenden Definitionen ebenfalls voneinander
abweicht.
Shirky [Shi00] P2P ist eine Klasse von Anwendungen, die sich verfügbare Ressourcen [..] zunutze macht.
Steinmetz und Wehrle [SW03] P2P-Systeme sind sich selbst organisierende Systeme gleichberechtigter, autonomer vernetzter Einheiten (so genannte Peers),
die ohne zentrale Koordination mit dem Ziel der gegenseitigen Nutzung von
Ressourcen operieren.
Tsoumakos [TR03b] Das P2P Paradigma schreibt einen vollkommen verteilten, kooperativen Netzwerkentwurf vor, in dem Knoten zusammen ein System ohne
jegliche Kontrolle bilden.
Stoica [SMK+ 01] P2P-Systeme und -Anwendungen sind verteilte Systeme ohne zentrale Kontrolle oder hierarchischer Organisation, in der die auf den Knoten
laufende Software in ihrer Funktionaltiät gleichwertig ist.
Yang und Garcia-Molina [BY01] P2P-Systeme sind verteilte Systeme, in denen
Knoten mit gleichen Rollen und Befähigungen Informationen und Dienste direkt miteinander austauschen.
Mobileman Projects 1 P2P beschreibt das Austauschen von Dateien von Computern, die in einem Netzwerk verbunden sind. Hierarchisch sind Anbietender
und Anfragender auf der gleichen Ebene angeordnet.
Wie an diesen Definitionen ersichtlich ist, scheint der Begriff Peer-to-Peer nicht eindeutig beschreibbar zu sein. Nach Schindelhauer und Mahlmann [SM04] können P2PSysteme zumindest nicht als Client-Server-Systeme aufgefasst werden.
2.1.2. Klassifikation von P2P Architekturen
Uneinig sind sich die Autoren der Definitionen über die Existenz von Hierarchien,
der Kommunikation und den Kontrolleigenschaften. Yang und Garcia-Molina [BY01]
sprechen von Kommunikation zwischen Knoten gleicher Rollen und Befähigungen
1
http://mobileman.projects.supsi.ch/glossary.html Zuletzt besucht am 01.06.2005.
5
2. Organisations-orientierte Super-Peer-Architekturen
und schließen somit nicht die Existenz von Hierarchien aus. Stoica versteht ein
P2P-System eindeutig als ein System ohne Hierarchie und zentrale Koordination
[SMK+ 01]. Steinmetz und Wehrle hingegen weisen lediglich eine zentrale Koordination von sich. Tsoumakos [TR03b] lässt keinerlei Kontrolle zu. So lassen sich P2PArchitekturen anhand ihrer Architekturstiles gliedern. Nach Garlan und Shaw [GS93]
besagt ein Architekturstil folgendes:
”[..]an architectural style determines the vocabulary of components and connectors
that can be used in instances of that style, together with a set of constraints on how
they can be combined.”
Die Autoren betonen somit die Elementtypen einer Architektur und die mögliche
Struktur der Architekturelemente untereinander. Anhand dieser beiden Punkte und
der Einteilung von Schollmeier [Sch01] ist die folgende Einteilung der Architekturen
zu verstehen:
Client-Server-Architektur
Eine verteilte Netzwerk-Architektur wird als Client-Server-Architektur bezeichnet,
wenn Klienten und Server sich erstens in der Performanz unterscheiden und zweitens
Ressourcen und Dienste nur vom Server angeboten werden. Klienten stellen lediglich
Anfragen und registrieren sich bei einem Server.
Reine P2P-Architektur
Eine verteilte Netzwerk-Architektur wird als reine (pure) P2P-Architektur bezeichnet,
wenn sie einerseits die Struktur eines P2P-Netzwerkes beschreibt und andererseits
jedes willkürlich ausgewählte Element aus dem Netz entfernt werden kann, ohne dass
das System mit dem angebotenen Dienst darunter leidet.
Diese Charakterisierung kann wiederum anhand ihrer Topologie verfeinert werden.
So existieren strukturierte und unstrukturierte reine P2P-Architekturen. Strukturierte Architekturen sind an Bedingungen geknüpft zur Einhaltung signifikanter Merkmale der jeweiligen Topologie. Als strukturierte Topologien werden allgemeine Formen wie baumartige, ringförmige und gitterartige Topologien und spezielle Formen
wie Butterfly-Netzwerke und multi-dimensionale Koordinatenräume bezeichnet. Zur
Strukturerhaltung kann das Ein- und Austreten eines Knotens weitere Aktionen hervorrufen. Unstrukturierte (vermaschte) Topologien unterliegen keinen derartigen Einschränkungen. Lediglich die Konnektivität aller Knoten muss gewährleistet werden.
Sie erscheinen somit willkürlich und chaotisch. Das Ein- und Austreten hat nur Konsequenzen für direkt verbundene Nachbarn und ist somit leicht wartbar. Jedoch weisen
diese Formen ein schlechtes Performanz- und Lastverhalten auf.
6
2.2. Super-Peer-Architekturen
Hybride P2P-Architektur
Eine verteilte Netzwerk-Architektur wird als hybride P2P-Architektur bezeichnet,
wenn es sich zum einen um eine P2P-Architektur handelt, andererseits jedoch eine
zentrale Komponente zur Durchführung des angebotenen Dienstes notwendig ist.
Zentralisierte Architekturen ähneln den Client-Server-Architekturen mit dem Unterschied, dass nicht alle Dienste vom Server bereitgestellt werden, sondern lediglich
Dienste, die bestimmten Anforderungen genügen müssen. So wurde in der Tauschbörse Napster der zentrale Server zur Indexierung der von den Klienten bereitgestellten
Ressourcen verwendet, um die Suchperformanz zu erhöhen.
Gemischte P2P-Architektur
Eine Mischung aus einer reinen und einer hybriden Architektur stellen sog. SuperPeer-Architekturen dar. Super-Peer-Architekturen bestehen aus vielen kleinen zentralisierten Architekturen, sog. Cluster, die miteinander über Super-Peers verbunden
sind. Diese Super-Peers stellen einen Netzübergang (im Folgenden engl. Gateway)
für die Peers in ihrem Cluster dar, über den eine Kommunikation mit dem gesamten
Netzwerk ermöglicht wird. Die Architektur wird in Abschnitt 2.2 näher untersucht.
2.2. Super-Peer-Architekturen
Super-Peer-Architekturen verbinden zentralisierte und dezentralisierte Ansätze zuvor
beschriebener Architekturen. Sie entstanden in der Absicht, die Vorteile der reinen
und hybriden Architekturen zu verbinden. Diese münden in der Zusammenführung
der Effizienz der zentralisierten Suche und der Autonomie, Lastbalanzierung und
Robustheit der dezentralisierten P2P-Architektur.
Nach [YGM03] ist ein Super-Peer ein Knoten in einem P2P-Netzwerk, der einerseits
als Server einer Menge von Klienten operiert und andererseits als ein Servent innerhalb eines Super-Peer-Netzwerkes agiert. Unterstützt durch eine Studie von Gummadi u.a. [GSG02], die die Heterogenität der Peers in einem reinen P2P-Netzwerk aufzeigt, liegt die Entscheidung nahe, Peers mit besonderen Eigenschaften entsprechende
Funktionalität zu erteilen. So kann als Einteilung die zur Verfügung stehende Bandbreite, die sich oft in die Bereiche Modem/ISDN, DSL/Cable und T1/T3 einteilen
lässt, ein Kriterium dafür sein.
2.2.1. Aufbau
Wie bereits erwähnt agiert ein Super-Peer als Server für eine Menge an Peers (Cluster). Ein Super-Peer-Netzwerk besteht somit aus einer Menge an Clustern, deren
7
2. Organisations-orientierte Super-Peer-Architekturen
Verknüpfung durch die jeweiligen Super-Peers untereinander erfolgt. Diese Verbindungen untereinander verdeutlichen den dezentralen Teil der Architektur. Eine reine P2P-Architektur kann als Super-Peer-Architektur mit Clustergröße 1 angesehen
werden. Abbildung 2.1 veranschaulicht den beschriebenen Zusammenhang. Peers innerhalb eines Clusters melden sich bei einem Super-Peer an und gehen somit eine
Verbindung zu diesem ein. Peers untereinander sind nicht verbunden. Jeder SuperPeer pflegt zudem eine Indextabelle bestehend aus den Metadaten aller zur Verfügung
gestellten Ressourcen seiner in dem Cluster befindlichen Peers.
Da ein Super-Peer für das jeweilige Cluster einen Gateway zum restlichen Netzwerk
darstellt, sind diese auf die Existenz und Verfügbarkeit des Super-Peers angewiesen,
um Suchanfragen zu stellen. Um einerseits diesem Single-Point-of-Failure zu entgehen
und andererseits eine gute Lastverteilung des Super-Peers zu gewährleisten, kann
durch redundante Super-Peers ein Engpass des Clusters vermieden werden. In diesem
Fall spricht man von k-redundanten Super-Peer-Architekturen. Jeder Peer pflegt eine
Verbindung zu jedem Super-Peer des Clusters, womit sich bei redundanten SuperPeer-Architekturen der Verwaltungsaufwand erhöht. Die Verbindungen außerhalb der
Cluster nehmen gleichermaßen zu. Redundante Super-Peers eines Clusters werden
zusammenfassend als virtueller Super-Peer bezeichnet. Die Abbildungen 2.1 und 2.2
veranschaulichen die durch Redundanz entstehenden Veränderungen.
Peer
Peer
Peer
Peer
Peer
Peer
Peer
Peer
Peer
Peer
SuperPeer
SuperPeer
Peer
Peer
Cluster
Peer
SuperPeer
Peer
SuperPeer
SuperPeer
SuperPeer
Peer
Peer
Peer
SuperPeer
SuperPeer
Peer
Peer
Peer
IndexTabelle
Peer1 ..
Peer2 ..
..
Einfache
Peer1 ..
Peer2 ..
..
SuperPeer
IndexTabelle
Bild
2.1..
Architektur
Cluster
IndexTabelle
SuperPeer
Peer
Peer
SuperPeer
Virtueller
Super-Peer
Peer
Peer
SuperPeer
Peer1 ..
Peer2 ..
..
Super-Peer-Bild 2.2..
Architektur
Redundante
Super-Peer-
2.2.2. Funktionsweise
Super-Peer-Architekturen bestehen aus einer zentralen und einer dezentralen Ebene,
die durch Super-Peers miteinander verknüpft sind. Anfragen aus einem Cluster werden entweder direkt vom zugehörigen Super-Peer beantwortet oder weitergeleitet. Zur
Beantwortung dienen Indextabellen, die Metadaten über alle Ressourcen des Clusters
8
2.2. Super-Peer-Architekturen
beinhalten. Diese Indextabellen werden Super-Peer / Peer Index genannt. Jeder Peer
sendet bei Eintreten in das Netzwerk sowie bei Änderungen der Ressourcen Aktualisierungsnachrichten an den Super-Peer, der daraus einen konsistenten Index aufbaut.
Das Austreten eines Peers bewirkt eine dementsprechende Nachricht, die den SuperPeer ebenfalls veranlasst, den Index zu aktualisieren. Unbeabsichtigtes Austreten
wird über regelmäßiges Überprüfen der Anwesenheit seitens des Super-Peers erkannt.
Der Index wird somit regelmäßig auf seine Konsistenz überprüft. Suchen, die nicht im
eigenen Cluster erfüllt werden können und diesen verlassen, können auf unterschiedlichste Weise weitergeleitet (engl. route) werden. Jedes dezentrale Routingverfahren
(siehe Abschnitt 3.2ff.) kann hierfür eingesetzt werden. Diese Nachbarschaftsinformationen können in einem Super-Peer / Super-Peer Index gepflegt werden. Neben
einfachen Routingverfahren, die als blind oder informiert charakterisiert werden, ist
auch der Einsatz von verteilten Hashtabellen möglich [MCKS03].
Neben der grundlegenden Funktionalität existieren weitere Konzepte zur Effizienzsteigerung, wie Caches und Nachrichtenhistorien über besuchte Peers. Mittels der
temporären Speicherung von weitergeleiteten Suchanfragen können zukünftige ähnliche Suchen beschleunigt werden (Abschnitt 3.2.4). Je nach Ausmaß der gewünschten
Anonymität der einzelnen Peers können auch Ressourcen in einem Cache seitens des
Super-Peers gespeichert werden. Entweder beinhaltet die Suche die Senderadresse,
damit der Ziel-Peer direkt Kontakt mit dem Suchenden aufnehmen kann, oder der
Suchende wird durch einen oder mehrere Super-Peers auf dem Suchpfad verborgen,
die dann ein schrittweises Rückverfolgen erlauben.
2.2.3. Startvorgang
Der Startvorgang (engl. Bootstrapping) bezeichnet den Prozess, auf welche Art und
Weise ein in das Netzwerk neu eintretender Peer einen bereits dort Existierenden
finden und kontaktieren kann. Nach Yang et.al. [YGM03] ist dieser Vorgang, einen
Ansprechpartner sowohl in reinen als auch in Super-Peer-Architekturen zu finden,
immer noch Gegenstand der Forschung. Es existieren diverse Ansätze, die jedoch alle
auf einer zentralen Instanz beruhen.
Über zentrale Verzeichnisdienste können Adressen bestehender Peers gesammelt werden. Im Gnutella-Netzwerk werden diese Instanzen als Gnutella Web Caching-System
2
bezeichnet [KAD+ 04]. Freiwillige Peers pflegen einen Cache von aktuell im Netzwerk
befindlichen Peers. Diese sind über feste Adressen zugänglich und verteilen Adressen
von Ansprechpartnern auf Anfrage.
2
http://www.gnucleus.com/gwebcache/. Zuletzt besucht am 03.06.2005.
9
2. Organisations-orientierte Super-Peer-Architekturen
2.2.4. Suche
Die Suche nach einer Ressource wird von einem Peer eines Clusters initiiert und an
den (die) jeweiligen Super-Peer(s) weitergeleitet. Dieser überprüft dahingehend seine
Indextabelle. Bei Erfolg wird die Adresse des Zielknotens als Antwort zurückgeschickt.
Um die Anonymität des Zieknotens zu wahren, wäre es ebenfalls denkbar, statt einer direkten Verbindung zwischen Anfrage- und Zielknoten den Transfer über den
Super-Peer zu tunneln, wobei damit eine erhöhte Netzwerklast in Kauf genommen
würde. Falls die Indextabelle keinen Treffer liefert, wird nach dezentralen Routingverfahren die Suchanfrage zwischen den Super-Peers weitergeleitet. Die einfachste
Methode wäre eine Breitensuche, nach der alle jeweiligen direkten Nachbarn rekursiv
angesprochen werden, ihre Indextabellen zu überprüfen. Bei einem Treffer wird nach
bereits vorgestellten Prinzip verfahren. In einem redundanten Super-Peer-Netzwerk
würden alle Super-Peers angesprochen und parallel verfahren oder sich gegenseitig
über die Zuständigkeit vereinbaren.
2.2.5. Lastverteilung
Die Last stellt die zu verrichtende Menge an Arbeit einer Zeiteinheit dar. Sie kann
in einem Netzwerk an eingehender und ausgehender Bandbreite, sowie an der Verarbeitung der Nachrichten gemessen werden. In einem dynamischen System, so wie es
ein Super-Peer-System darstellt, kann die Lastverteilung variieren. Je nach Sichtweise
wird von individueller und aggregierter Last gesprochen. Da Peers untereinander bzgl.
ihrer Bandbreite und Verarbeitung sehr unterschiedlich sind, sollte die entstehende
Last möglichst gerecht verteilt werden.
Super-Peers bilden einen Kommunikationsengpass und sollten daher über eine entsprechende Bandbreite verfügen. Die Last erhöht sich mit zunehmendem Nachrichtenversand, der sich in Form von Suchanfragen und Kontrollnachrichten ausdrückt. Die
Anzahl an gerouteten Nachrichten hängt weiterhin von der Größe des Clusters eines
Super-Peers, der Popularität der dort angebotenen Ressourcen und der Replikation
von Super-Peers und Daten ab. Da die Entwicklungen einiger Faktoren gegensätzlich
sind, existiert keine Allgemeinlösung für das Problem der Lastverteilung. Folgende Zusammenhänge verdeutlichen die Auswirkung auf die Last der einzelnen Super-Peers.
Mit der steigender Clustergröße können viele Anfragen innerhalb eines Clusters beantwortet werden. Nachrichten müssen somit seltener zwischen dem Super-Peers geroutet werden. Das Fluten des Netzwerkes wird also verringert. Jedoch steigt mit
der Clustergröße die Verwaltung innerhalb eines Clusters, die Indextabellen müssen
gepflegt werden und viele Anfragen parallel verarbeitet werden. Mit hoher Clustergröße sinkt die Anzahl der Super-Peers, womit das Netzwerk anfälliger für Angriffe
ist. Die Neuordnung eines großen Clusters nimmt ebenfalls mehr Zeit ein. Clustergrößen sind abhängig von der Anzahl maximal zugelassener eingehender Verbindungen
10
2.2. Super-Peer-Architekturen
eines Super-Peers. Diese Anzahl eingehender Verbindungen wird in der Regel vom Betriebssystem vorgegeben. Allgemein kommt der Replikation eines Super-Peers bei steigender Clustergröße größere Bedeutung hinzu. Mit sinkender Clustergröße steigt wegen erhöhter ausgehender Suchanfragen der Kommunikationsaufwand zwischen den
Super-Peers. Die Kommunikation geschieht dezentral z.B. durch Nachrichten an alle
Teilnehmer (engl. Broadcast) einer bestimmten Tiefe und verursachen mehr Nachrichten als die zentrale Ordnung innerhalb eines Clusters. Die Anzahl maximaler eingehender und ausgehender Verbindungen eines Super-Peers kann sich unterscheiden
und ebenfalls die Clustergröße beeinflussen. Verbindungseinschränkungen entstehen
durch unterschiedliche Sende- und Empfangsleistungen (Bsp.: DSL) wie auch durch
betriebsystemabhängige maximale Verbindungsanzahlen (Bsp.: Socketanzahl). Populäre Ressourcen eines Clusters bestimmen unabhängig von den Eigenschaften eines
Super-Peers und der Clustergröße die Lastverteilung.
2.2.6. Bewertung
Super-Peer-Architekturen bilden eine Mischung aus zentralen und dezentralen Architekturen und vereinen damit einige Vorteile dieser. Je nach Ausrichtung und Einsatz
müssen jedoch viele Variablen der Architektur angepasst werden. Einige variable Eigenschaften werden nun abschließend benannt:
Clustergröße Die Clustergröße ist entscheidend für das Ausmaß zentraler und dezentraler Eigenschaften. Die Clustergröße bestimmt die Anzahl der Super-Peers
und somit auch die Angreifbarkeit des Netzwerkes. Ausfälle besitzen unterschiedliche organisatorische Maßnahmen.
k-Redundanz Die Größe der virtuellen Super-Peers bewirkt eine Lastverteilung mit
zusätzlichem Organisationsaufwand. Redundante Super-Peers verringern zudem die Angreifbarkeit.
Caching Caching von Anfragen wie auch Ressourcen stellen erhöhte Anforderungen
an Super-Peers in der Speicherkapazität und beim Nachrichtenversand zwecks
Konsistenzerhaltung. Das Ausmaß des Cachings sollte somit dem daraus resultierenden Nutzen entsprechen.
dezentrale Wahl der Teilarchitektur Die Aufteilung der Clustergrößen und somit
auch die Anzahl der dadurch entstehenden Super-Peers bestimmt die Größe
der dezentralen Teilarchitektur. Die effiziente Suche innerhalb dieser Teilarchitektur ist ausschlaggebend für die Effizienz der gesamten Suche und wird in
dem folgenden Kapitel genauer behandelt.
11
2. Organisations-orientierte Super-Peer-Architekturen
Bestehende gemischte Ansätze
Der in Abschnitt 3 gegebene Überblick über bestehende Suchverfahren umfasst eine Auswahl an bestehenden Verfahren, die dem Entwurf eines Suchverfahrens für
organisations-orientierte Super-Peer-Architekturen dienen können. Da sich einerseits
Kombinationen aller dezentralisierten und zentralisierten Ansätze für eine gemischte
P2P-Architektur einsetzen lassen und andererseits die Anzahl der bestehenden Suchverfahren für Super-Peer-Netzwerke gering ist, überwiegt der Anteil der reinen und
hybriden P2P-Systeme. An dieser Stelle soll nun auf die existierenden und in dem
Überblick aufgenommenen gemischten Ansätze verwiesen werden.
Wahrscheinlich wegen der hohen Popularität und der geringen Komplexität wurden
die Verfahren Gnutella und Chord als Basis des dezentralisierten Anteils der gemischten Systeme bevorzugt. TaChord sowie das Verfahren von Mizrak u.a. basieren auf
der Ringtopologie, die in Chord beschrieben wird. GUESS, Ultrapeer und Fasttrack
(Abschnitt 3.2.1) verwenden das Gnutella-Protokoll. brocade (Abschnitt 3.3.3) stellt
eine Erweiterung des Tapestry-Verfahrens dar. Lediglich SUPS (Abschnitt 3.2.8) lässt
sich keinem bestehenden reinen P2P-System zuordnen.
2.3. Organisationen
In der Systemtheorie werden Systeme als eine Ansammlung von Elementen und deren
Eigenschaften, die durch Wechselbeziehungen miteinander verbunden sind, definiert
[HF56]. Unter der Struktur eines Systems versteht man die Ordnung der Systemelemente und der zwischen ihnen wirksamen Wechselwirkungen [Mat02]. Diese Wechselwirkungen treten bei wachsenden Systemen verstärkt in zunehmend autonomen
Teilsystemen auf, die jedoch miteinander interagieren. Zur Reduktion der Komplexität lassen sich diese Teilsysteme hierarchisch gliedern.
Die in der Soziologie beschriebene soziale Vernetzung der modernen Gesellschaft
drückt sich in dem Small-World-Phänomen aus. Dieses Phänomen beschreibt die
überraschend kurze Bekanntschaftskette aller Menschen der Welt (Die Welt ist ein
Dorf.). Als eine Schlussfolgerung dieses Phänomens erzeugten Albert-László Barabási und Réka Albert [BA99] ein System mit hierarchischer Struktur, das gerade diese
moderne Gesellschaftsvernetzung ausdrückt.
Die meisten bekannten ’Systeme’ sind hierarchisch gegliedert, wie Vereine, Berufswelt
und Gemeinden. Sie unterscheiden sich häufig nur in der Anzahl und Bedeutung der
Hierarchien und deren Kommunikation untereinander. Neben einer hierarchischen
Ordnung können jedoch zusätzliche Beziehungen existieren, die keiner hierarchischen
Ordnung genügen, so dass sich in einer allgemeinen Betrachtung nur durch Einschränkung der Sichtweisen feste Strukturen erkennen lassen.
12
2.3. Organisationen
Um etwas detaillierter zu werden, wird im Verlauf der Arbeit meist auf das folgende
Beispiel Bezug genommen. Es lässt sich jedoch mit wenig Aufwand eine Überführung
auf andere Systeme herleiten.
2.3.1. Das betrachtete System
Die Erstellung und Organisation von Softwareprodukten verläuft in der Praxis hierarchisch. In Unternehmen wie auch in freien Entwicklergemeinden (Sourceforge3 ,
Savannah4 ), existieren Organisationseinheiten mit unterschiedlichen Aufgaben und
Verantwortungs- bzw. Zuständigkeitsbereichen. Um nicht auf die Überprüfung bestehender Strukturen in diesen Einrichtungen einzugehen und eine unnötige Komplexität
dessen zu veranschaulichen, wird ein vereinfachtes, jedoch hinreichend charakteristisches System verwendet, das aus den Systemelementen Organisation, Projekt, Gruppe
und Mitarbeiter besteht. Weiterhin zeichnet sich das System durch eine lose Koppelung aus, wie sie in Systemen wie Sourceforge existiert. Es existieren keine festen
’Arbeitszeiten’ und keine vertragliche Bindung der Mitarbeiter. Die Fluktuation der
Mitarbeiter ist groß und somit unterzieht sich das System einem stetigen Wandel mit
hoher Dynamik.
Anwendungsdomänen als spezifisches Overlay
Die Ausprägung des gerade beschriebenen Systems hängt direkt von der umfassenden
Anwendungsdomäne ab. Im Laufe der weiteren Arbeit werden exemplarisch nur wenige strukturelle Einheiten betrachtet, die Organisationen, die Projekte, die Gruppen
und die Mitarbeiter/Mitglieder.
Organisation Eine Organisation stellt das abstrakteste Element des Systems dar.
Organisationen bilden die Wurzel der Hierarchie. Sie können zusammengefügt werden, indem eine neue Hierarchiestufe eingeführt wird, die übergeordnet ist. Hierauf
wird jedoch nicht eingegangen. Weiterhin kann ein System aus Elementen bestehen,
die nicht eindeutig in einer Hierarchie zusammengefasst werden können, da eine abstraktere Ebene, die diese Elemente verbindet, nicht modelliert wird. Organisationen
verwalten Projekte und können neue initieren. Ihnen kommt hiermit im Wesentlichen
eine organisatorische Aufgabe zu. Verwaltungstätigkeiten können von Mitarbeitern
geleistet werden, die keinem Projekt und keiner Gruppe zugeordnet werden können.
Weiterhin kann es Gruppen ohne Projektzugehörigkeit geben, die direkt Aufgaben
einer Organisation bearbeiten, z.B. eine beratende Gruppe von Mitarbeitern zwecks
Umstrukturierung.
3
4
http://www.sourceforge.net,zuletztbesuchtam19.09.2005
http://savannah.gnu.org/,zuletztbesuchtam19.09.2005
13
2. Organisations-orientierte Super-Peer-Architekturen
Projekt Ein Projekt besitzt häufig einen thematischen und zeitlichen Bezug und
kann je nach Umfang in Gruppen und Mitarbeitern eingeteilt werden. Ein Projektleiter kann statt einer Gruppe direkt dem Projekt angehören.
Gruppe Gruppen erfüllen innerhalb von Projekten Teilaufgaben wie auch innerhalb
von Organisationen beratende Tätigkeiten. Je nach Komplexität der Anforderungen
können mehrere Gruppen parallel existieren. Von Teilgruppen wird in diesem Modell
zwecks Eingrenzung der Komplexität nicht ausgegangen.
Mitarbeiter Die ausführende Instanz bilden die Mitarbeiter, die in allen höheren
Ebenen angeordnet sein können.
Beziehungen Um die einzelnen Elemente untereinander in Beziehung zu setzen,
existieren Beziehungen innerhalb einer Hierarchiestufe wie auch außerhalb dieser. Bischofs und Steffens [BS05] geben folgende Beispiele.
Eine Organisation (O) regelt und verwaltet Projekte (P), Gruppen (G) und Mitarbeiter (S).
O regelt P,G,S
Ein Projekt bzw. eine Organisation besitzt unterschiedliche Gruppen.
O,P besitzt G
Mitarbeiter, Gruppen und Projekte können miteinander kooperieren, indem z.B. freie
Mitarbeiter nur kurzzeitig in einer Gruppe aushelfen.
P,G,S kooperiert P,G,S
Beziehungen sind stark systemabhängig und können übergreifend lediglich durch ein
3-Tupel beschrieben werden, das aus einem Ursprung, einer Beziehungsfunktion sowie einem Ziel besteht. Beziehungen R eines Systems S können über eine Menge E
aller Elemente durch eine Beziehungsfunktion δ definiert werden. Ein System ist somit definiert als
S = (E, R, δ)
wobei für jede Beziehungsfunktion δ einer Beziehung r gilt
δ : r → {{e1 , e2 } |e1 6= e2 ; e1 , e2 ∈ E ∧ r ∈ R}.
14
2.3. Organisationen
2.3.2. Overlay-Strukturen
Zur Erstellung eines wie oben beschriebenen interaktiven und kooperativen Systems
bedarf es einer geeigneten Kommunikationsstruktur. Die lose Kopplung und das dynamische Verhalten des Systems ähneln sehr dem in Abschnitt 2.1 vorgestellten P2PSystem, das als Kommunikations- und Ordnungsplattform verwendet wird. Zur Unterstützung der Hierarchien wie auch der Nutzung positiver effizienter Verhaltensweisen der Super-Peer-Architekturen (siehe 2.2) wird eine gemischte P2P-Architektur
vorgezogen.
Die Abbildung 2.3 verdeutlicht drei Ebenen, die aufeinander aufbauen (Overlay).
Ausgehend von der physikalischen Ebene folgt die virtuelle und schließlich die organisatorische Ebene.
Elemente der physikalischen Ebene sind einzelne Hostrechner, die über physikalische
Leitungen miteinander verbunden sind. Verbindungen zwischen diesen Hostrechnern
veranschaulichen den Datenfluss.
Die mittlere Ebene wird als virtuelle Ebene bezeichnet, da sie nicht mehr auf physikalischen Verbindungen beruht. Elemente in dieser Ebene werden als Peers und
Super-Peer bezeichnet. Verbindungen bestehen innerhalb und außerhalb eines Clusters. Peers müssen bei einem Super-Peer registriert werden, um dem Netzwerk anzugehören. Super-Peers untereinander pflegen Kontakte, um einerseits die Cluster
zu verbinden und andererseits Suchanfragen in verschiedene Cluster zu delegieren.
Peers entsprechen nicht notwendigerweise einer physikalischen Recheneinheit (Hostrechner). Es können sich mehrere Peers auf einem Hostrechner befinden. Verbindungen der virtuellen Ebene drücken lediglich aus, dass es einen Pfad (zwischen Peer
und Super-Peer) im physikalischen Netzwerk geben muss. Die Anzahl der Zwischenstationen (Hops) kann beliebig sein im Gegensatz zur physikalischen Ebene, in der
Verbindungen eine direkte physikalische Nachbarschaft ausdrückt. Die Verbindungen
besitzen somit eine höherwertige Semantik.
Die obere Ebene stellt den anfangs beschriebenen Zusammenhang der organisatorischen Elemente dar. Auch hier müssen Elemente der organisatorischen Ebene nicht
ein-eindeutig auf die Elemente der virtuellen Ebene abgebildet werden.
Da es sich in der Abbildung um Overlaystrukturen handelt, müssen diese aufeinander abgebildet werden. Die Abbildung der virtuellen Ebene auf die physikalische
Ebene ist in der Literatur bereits umfangreich beschrieben (siehe Kapitel 3). Die
Aufgabe besteht darin, neben einer einfachen Überlagerung der Schichten, die Lokalität und die Topologie der Ebenen geeignet zu überlagern. Anschaulich gesehen kann
die Überlagerung zweier benachbarter Peers auf zwei weit entfernte Hostrechner hohe
Performanzverluste nach sich ziehen. Die Dauer der Nachrichtenübertragung (Latenzzeit) steigt mit jeder Zwischenstation auf der physikalischen Ebene. Die Abbildung
der organisatorischen Ebene auf die virtuelle Ebene stellt ein ähnliches Problem dar.
15
2. Organisations-orientierte Super-Peer-Architekturen
Bild 2.3.. Abstraktionsebenen in einer organisations-orientierten Super-PeerArchitektur [BS05]
16
2.3. Organisationen
Kommunikation innerhalb der organisatorischen Ebene ist teilweise durch den hierarchischen Aufbau dieser eingeschränkt, so dass Knoten höherer hierarchischer Ebenen
mehr Nachrichten verarbeiten müssen als Knoten, die in einer niedrigeren Ebene angesiedelt sind. Knoten, die einer höheren Belastung ausgesetzt sind, sollten damit auf
leistungsfähigere Knoten der physikalischen Ebene abgebildet werden.
Abbildung 2.4 und 2.5 verdeutlichen den Zusammenhang zwischen der virtuellen und
der organisatorischen Ebene aus einer anderen Sicht. In Abbildung 2.4 ist eine aus
Abschnitt 2.2 bekannte einfache Super-Peer-Architektur zu sehen, die in Abbildung
2.5 aus der organisatorischen Sicht betrachtet wird. Dieser Vergleich veranschaulicht
insbesondere den Zusammenhang zwischen den Super-Peers und den höheren Organisationselementen.
M
P
P
M
P
P
P
M
S
S
P
P
O
P
P
M
G
P
P
M
M
S
P
G
P
P
P
M
G
S
P
Super-Peer
Peer
Verbindung
M
M
M
P
G
O Organisation
P Projekt
G Gruppe
M Mitglied
Assoziation
Bild 2.4.. Super-Peer Overlay. Verbindun-Bild 2.5.. Organisatorisches Overlay. Vergen repräsentieren Registrierungen zwi-bindungen stellen organisatorische Bezieschen Peers und Super-Peers.
hungen dar.
17
3. Such- und Routingverfahren
3.1. Einführung
Wie in Kapitel 2 beschrieben, können P2P-Systeme in drei Kategorien eingeteilt werden - unstrukturiert, hybrid und strukturiert. Die Suche in P2P-Systemen beinhaltet
Aspekte wie das Routing von Nachrichten, die Menge der empfangenen und sendenden Knoten, die Art der Nachrichten, die lokale Verarbeitung und die Speicherung
von Verweisen und deren Pflege [TR03b], auf die in den vorgestellten Verfahren jeweils eingegangen wird.
In dem Fortschreiten der Entwicklung neuer Suchverfahren kommt der Struktur eines
Architekturstiles (siehe Abschnitt 2.1.2) eine erhöhte Bedeutung zu, so dass die Effizienz dieser Verfahren häufig mit komplexen Strukturierungsmaßnahmen einhergeht.
Diese Maßnahmen werden durch das dynamische Verhalten der P2P-Systeme erfüllt,
so dass topologische Veränderungen Zusatzinformationen verursachen, die teilweise
propagiert werden müssen, um eine konsistente Struktur zu gewährleisten.
3.1.1. Gliederung des Kapitels
Es existieren unterschiedliche Ansätze zur Strukturierung des Netzwerkes, die bestehende Informationen über den Aufbau nutzen oder mittels Heuristiken eine möglichst
optimale Routingstrategie verfolgen. Die Strukturierung der anfolgenden Such- und
Routingverfahren kann je nach Intention unterschiedlich ausfallen. Die dieser Arbeit
zugrunde liegende Strukturierung ist zeit-und zielorientiert und wurde von Wang
und Li [WL03] adaptiert. Sie gliedert sich grob in drei Generationen, die unterschiedliche Schwerpunkte setzen. Zusätzlich wird eine Historie der Entwicklungen ersichtlich. Erweiterungen zu bestehenden Verfahren werden diesen zugeordnet, um das
Verständnis und den Bezug zu steigern. Die grobe zeitliche Einteilung wird hierbei
nur unwesentlich beeinträchtigt. Der Umfang der Beschreibungen spiegelt schließlich
deren Bedeutung wider. Zusätzlich zu der textuellen Beschreibung wird in Abschnitt
3.5 ein grafischer Überblick gegeben.
Die ersten Verfahren basieren auf unstrukturierten P2P-Systemen und kommen ohne
Nachbarschaftsinformationen aus. Gnutella in der ursprünglichen Version und Freenet sind Vertreter dieser Generation. Beide Ansätze basieren auf dem Fluten des
Netzwerkes, um Suchergebnisse zu erzielen. Sie unterscheiden sich im Vorgehen der
Suche und in der Platzierung der anzubietenden Ressourcen. In Gnutella wird das
18
3.1. Einführung
Netzwerk mittels einer Breitensuche geflutet und Knoten speichern ihre Ressourcen
selbst. In Freenet hingegen wird eine Tiefensuche verwendet und auf eine freie Verteilung der zu speichernden Ressourcen gesetzt. Da diese Verfahren die ersten Vertreter
ihrer Art sind und viele Optimierungsansätze hinsichtlich der Suchperformanz und
der verursachten Netzwerklast existieren, wurde eine Vielzahl an Weiterentwicklungen publiziert, die den Schwächen meist auf Kosten erhöhten Verwaltungsaufwandes
entgegenwirken. Zur Weiterleitung von Nachrichten kann durch ein Zufallsprinzip
(Random Walks, Abschnitt 3.2.3) oder wie in APS (Advanced Probalistic Search,
Abschnitt 3.2.4) durch Rückschlüsse auf vergangene Anfragen ähnlichen Inhaltes gewählt werden. Um die Trefferquoten bei möglichst geringen Nachrichtenversand aufrecht zu erhalten, werden in Local-Index (Abschnitt 3.2.5) und Routing-Index (Abschnitt 3.2.6) Nachbarn indexiert, was jedoch zu einem ansteigenden Verwaltungsaufwand führt. Zur Wahrung der Konsistenz dieser Informationen werden regelmässig
Nachrichten produziert, die nur indirekt der Suche dienen.
Um Verfahren möglichst skalierbar und performant zu gestalten, entstanden Verfahren, die auf verteilten Hashtabellen aufsetzten (Chord in 3.3.1, CAN in 3.3.2, Tapestry in 3.3.3). Diese gewährleisten eine gute Verteilung der Informationen, können
jedoch nur Punktanfragen1 verarbeiten. Ungenaue Suchanfragen können nicht auf
identifizierende eindeutige Hashwerte abgebildet werden. Erweiterungen, meist zur
Minimierung des Nachrichtenversandes verursachen eine erhöhte Komplexität der Algorithmen und des Verwaltungsaufwandes.
Ungefähr zur gleichen Zeit entstanden Verfahren mit ähnlichen Zielen, jedoch einem
unterschiedlichen Ansatz. Diese Verfahren verknüpfen den dezentralen Charakter eines P2P-Systems mit zentralen Eigenschaften (SUPS in 3.2.8, GUESS in 3.2.1, Agile
und SHARK in 3.3.4 und in 3.3.5). Das Netzwerk lässt sich in zwei Knotenarten unterschiedlicher Funktionalität einteilen. Diesen Verfahren ist gemein, dass einer Menge
an charakteristischen Knoten eine Serverrolle zukommt. Hierdurch entstehen je nach
Intention Gruppen, die durch diese speziellen Knoten an das Netzwerk angebunden
werden. Die zeitlich am nahesten entwickelten Verfahren legen besonderen Wert auf
die Sicherheit und Fehlertoleranz von Ressourcen [MNR02; NW03].
Angefangen mit den Verfahren der ersten Generation, wie sie in den Anwendungen
Napster und Kazaa verwendet wurden, folgen Beschreibungen der strukturerhaltenden Algorithmen der zweiten Generation, wie Chord (siehe 3.3.1), CAN (siehe 3.3.2)
und zwei Vertreter, Viceroy und Distance Halving, der dritten Generation. Zusammenfassend werden alle Verfahren im Anschluss gegenübergestellt.
1
Objekte, die eindeutig durch einen Bezeichner identifiziert werden, können nur über diesen gefunden werden
19
3. Such- und Routingverfahren
3.1.2. Verwendete Begriffe
Da in Overlays intensiv Gebrauch von den unten aufgeführten Begriffen gemacht
wird, werden diese nun vorgestellt. In den anstehenden Kapiteln wird jedoch, so weit
wie möglich und sinnvoll, der deutsche Begriff verwendet.
Overlay / Überlagerung Wird synonym mit dem Begriff Overlay-Netzwerk verwendet. Es handelt sich hierbei um ein Netzwerk, das einem darunterliegenden
Netzwerk aufgelegt wird. So ist ein P2P-Netzwerk ein Overlay zu dem Netzwerk der physikalischen Rechner.
Topologie Eine Topologie bezeichnet die Struktur eines Netzwerkes. Bekannte Strukturen sind stern- oder ringförmig, gitterartig oder zufällig.
Node / Knoten Ein Knoten stellt einen Teilnehmer eines Overlays dar. Mehrere
Knoten können auf demselben Hostrechner plaziert werden.
NodeId / Knotenschlüssel Knoten werden durch eindeutige Schlüssel repräsentiert,
die aus einem identifier space / ID-Raum (Wertebereich) entnommen werden.
Key / Schlüssel Ein eindeutiger Schlüssel dient der Abbildung von Objekten, die
von Knoten verwaltet werden können. Er wird häufig aus demselben ID-Raum
entnommen, wie auch die Knoten, um Beziehungen zwischen Knoten und Ressourcen herzustellen.
Routingtabelle Jeder Knoten besitzt eine Routingtabelle, die Verweise auf andere
Knoten enthält und mittels derer Nachrichten weitergeleitet werden.
3.2. Verfahren der 1.ten Generation
Die erste Generation von Overlays zeichnet sich durch eine Menge von verbundenen
Knoten aus, die keiner Ordnung genügen. Beitretende Knoten werden an einer beliebigen Stelle des Netzwerkes hinzugefügt, so dass eine nicht vorhersagbare OverlayTopologie entsteht. Diese erste Generation wird nach Tsoumakos [TR03b] in blinde
und informierte Verfahren eingeteilt. Blinde Verfahren pflegen keinerlei Informationen bzgl. der Lage von Ressourcen. Informierte Verfahren dagegen pflegen zentrale
oder verteilte Indextabellen, die Informationen über einen Teilbereich des Overlays
beinhalten und zusammen einen kompletten Index erstellen. Zentrale Indextabellen
erinnern an das Client-Server-Prinzip, bei dem alle Klienten sich an einem Server anund abmelden und deren Metainformationen über bereitgestellte Ressourcen übermitteln. Knoten, die nur einen Teil des Netzwerkes indexieren, z.B. die Nachbarschaft,
bilden einen dezentralen Index über das gesamte Sytem.
20
3.2. Verfahren der 1.ten Generation
3.2.1. Breitensuche - Breath-first traversal BFS
Die Suche in einem baumartigen und graphbasierten Netzwerk wird als Breitensuche
bezeichnet, wenn der initiierende Knoten erst alle Kindsknoten durchwandert und
diese dem gleichen Prinzip folgen. Es wird somit erst die Breite und dann sukzessiv
die Tiefe durchsucht. Da Graphen im Gegensatz zu ’Bäumen’nicht notwendigerweise
zyklenfrei sind, muss eine zusätzliche Erkennung oder Vermeidung vollzogen werden.
Die Breitensuche (Breadth-first traversal) wurde im dezentralen Gnutella-Netzwerk2
zur Verbreitung von Nachrichten verwendet. Gnutella gilt als eines der ersten freien
verteilten Suchprotokolle für P2P-Systeme und wurde von Justin Frankel ins Leben
gerufen. Jeder Peer fungiert in einem P2P-System als Client und Server und wird in
diesem Kontext als Servant bezeichnet. Servanten sind untereinander mit nur wenigen
ihrer Art verbunden. Eintretende Knoten kontaktieren das Netzwerk über sog. wellknown hosts 3 , die über externe Quellen bereitgestellt werden. Die Kommunikation
untereinander wird durch wenige sog. Deskriptoren geführt.
Ping Der Ping-Deskriptor wird zur aktiven Ermittlung von weiteren Servanten verwendet. Servanten präsentieren sich hiermit im Netzwerk. Eine Ping-Nachricht kann
weitergeleitet werden, mit der Absicht Informationen über benachbarte Servanten zu
erhalten [LCP+ 04].
Pong Als Antwort auf einen Ping-Deskriptor wird der Pong-Deskriptor verwendet,
der die Menge an zur Verfügung gestellten Daten und die Adressen der Servanten, jedoch nicht die charakterisierenden Metadaten der Ressorucen selbst an den fragenden
Servanten übermittelt.
Query Die Suche nach bestimmten Ressourcen wird in Form eines Query-Deskriptors
an Servanten versendet, der einen Namen(-steil) enthalten kann. Die Interpretation
des Suchstrings variiert und kann vom Entwickler stark beeinflusst werden4 .
QueryHit Als Antwort auf eine Query generiert der empfangende Servant einen
QueryHit-Deskriptor mit den Informationen bzgl. seiner bereitgestellten Daten und
der zur Verfügung stehenden Geschwindigkeit.
2
Gnutella Protokoll Spezifikationen unter http://rfc-gnutella.sourceforge.net/ einzusehen.
Zuletzt besucht am 25.05.05
3
Kontaktinformationen zum Eintreten in das Netzwerk werden nicht im Protokoll berücksichtigt.
Es existieren verschiedene Möglichkeiten, wie das Abrufen von Addressen der well-known hosts
über Webseiten (http://gnutellahosts.com)
4
siehe http://rfc-gnutella.sourceforge.net/src/rfc-0_6-draft.html zuletzt besucht am
25.05.2005
21
3. Such- und Routingverfahren
Get Zielknoten können mittels des Get-Deskriptors eine Verbindung zum Anbieter
erstellen und den Transfer starten, falls dieser es ermöglicht.
Push Push-Deskriptoren werden verwendet, um Firewall-Restriktionen zu umgehen,
die keine direkte Verbindung zulassen. Der anbietende Servant wird veranlasst, eine
Verbindung zum Suchenden aufzubauen und somit den Transfer zu ermöglichen. Falls
beide Servanten durch eine Firewall geschützt sind, ist kein Austausch möglich.
Bye Das Austreten aus dem Netzwerk kann durch den Bye-Deskriptor signalisiert
werden (in Gnutella v0.6 optional). Hierbei werden bestehende Verbindungen geschlossen.
Nachrichten werden an alle dem Sender bekannten Servanten geschickt, die diese wiederum weitersenden. Somit fluten sie das gesamte Netzwerk (Message Flooding). Um
Zyklen zu vermeiden, werden alle Nachrichten mit einer Lebensdauer versehen. Diese
Lebensdauer kann sich in der Anzahl an maximal überschreitenden Hops (HTL:hopto-live) und in einer zeitlichen Begrenzung (TTL:time-to-live) ausdrücken, wonach
sie beendet wird. Servanten, die der Suchanfrage genügen, treten direkt mit dem
Suchenden in Verbindung.
Erweiterungen
Modifizierte Breitensuche (Modified-BFS) Eine Reduzierung des Nachrichtenaufkommens wurde mit dem Algorithmus Modified-BFS (publiziert in [KGZY02])
ermöglicht, indem nicht alle Nachbarknoten angesprochen werden, sondern nur eine
zufällig bestimmte Menge an Nachbarn kontaktiert wird. Da keine Kriterien für die
Auswahl der Nachbarn herangezogen werden, vermindert sich mit der Anzahl ausgewählter Nachbarn ebenfalls die Trefferquote unter Berücksichtung der Hops und der
Zeit.
Intelligente Breitensuche (Intelligent-BFS) Kalogeraki u.a. stellen in [KGZY02]
ein Suchverfahren vor, in dem die Weiterleitung von Erfolgsschätzungen beeinflusst
wird. Schätzungen basieren auf einem Profil- und Bewertungsmechanismus, durch den
sie entscheiden, in welche Richtung ein Broadcast gesendet wird. Die während der Suche gefundenen Antworten speichert der suchende Peer in tabellarischer Form ab, die
jeweils Anfrage und Zielknoten enthält. Die Least-Recently-Used Strategie wird zur
Wahrung einer festen Tabellengröße verwendet. Aus den fortwährend gespeicherten
Informationen ergibt sich ein (unvollständiges) Profil für alle bisherigen Zielknoten,
das bei anstehenden Anfragen herangezogen werden kann. Die Auswahl der Knoten,
die zur Weiterleitung bestimmt werden, wird durch eine definierte maximale Anzahl
22
3.2. Verfahren der 1.ten Generation
und durch Vergleichskriterien (Ranking) beeinflusst. Als Vergleichskriterium wird das
Cosinus-Maß [Fer03] vorgeschlagen, das aus dem Information Retrieval bekannt ist
und Dokumente anhand ihrer Ähnlichkeit spezifiziert.
Gerichtete Breitensuche (Directed-BFS) In [BY01] wird am Anfang einer Suche anhand von bisher erstellten Statistiken direkt Kontakt zu ’vielversprechenden’
Knoten erstellt. Diese Knoten verfahren dann nach der bisherigen Breitensuche. Statistiken beinhalten Merkmale, die folgende Heuristiken begründen:
ˆ Eine hohe Anzahl gelieferter Resultate in vorherigen Anfragen erhöht die Wahrscheinlichkeit einer erneuten hohen Trefferquote.
ˆ Die Anzahl der durschnittlichen Hops bis zum Erreichen eines Knotens, der
Resultate in der Vergangenheit liefern konnte, deutet auf die Entfernung der
gesuchten Ressourcen hin. Je geringer diese ist, desto weniger Nachrichten wurden verschickt.
ˆ Knoten, die bisher viele Nachrichten weitergeleitet haben, sind stabil und verfügen wahrscheinlich über eine bessere Netzanbindung.
ˆ Die Nachrichtenwarteschlange eines Knotens beeinflusst die Latenzzeit und
kann zusätzlich Informationen über seine Auslastung geben.
Fortlaufende Breitensuche (Consecutive-BFS) Die Breitensuche (BFS) produziert mit zunehmender Suchtiefe ein exponentiell wachsendes Nachrichtenaufkommen.
Da keine Rückmeldung zum Ausgangsknoten existiert, wird die Suche auch bei Erfolg nicht unterbrochen. Ein Verfahren, das in der Künstlichen Intelligenz und in der
Spieltheorie verwendet wird, reduziert das Nachrichtenaufkommen durch Iterationen.
Eine, dem System zugrunde liegende Anzahl an Verfahrensregeln (Policy), definiert,
welche Iterationen bei der Suche verwendet werden. So kann die Suchtiefe pro Durchgang erhöht werden, ohne dass unnötig Nachrichten weitergeleitet werden (Expanding
Ring).
[BY01] und [YGM02] beschreiben dieses Verfahren als Iterative Deepening. Ausgehend von einer systemweiten Policy, die die Iterationen a,b und c (a<b<c) und eine
Warteperiode W vorsieht, wird die Suche anfangs mit einer Tiefe a verschickt. Nach
erfolgloser Suche in der tiefsten Ebene (sog. Frontier) wird die Nachricht für die Zeit
W dort temporär gespeichert und anschließend gelöscht. Falls die Suchtiefe (nächste
Iteration) vom Suchenden erhöht wird, so sendet dieser eine Resend -Nachricht aus,
die schließlich an der Grenze der vorherigen Iteration ankommt. Falls die Wartezeit
noch nicht abgelaufen ist, sendet dieser Knoten die ursprünglich gespeicherte Nachricht um b − a Ebenen weiter. Ohne sie zu bearbeiten, leiten die Knoten, die eine
Resend-Nachricht erhalten, diese weiter.
23
3. Such- und Routingverfahren
Bei einem Verzweigungsgrad (sog. branching factor) b und der Tiefe der Suchlösung
d ist die Zeitkomplexität O(bd). Im Vergleich zur einfachen Tiefensuche ist hier die
Suchtiefe der Lösung entscheidend.
Ultrapeer Das bestehende Gnutella-Protokoll wurde von den Gnutella-Entwicklern
in dem Ultrapeer Proposal v1.0 [SR01] um eine zunehmende Strukturierung erweitert.
Der Ansatz entspricht den in Abschnitt 2.2 vorgestellten Super-Peer-Netzwerken und
kann als zusätzliches Overlay zu dem ursprünglichen Gnutella-Protokoll angesehen
werden. Ein Ultrapeer übernimmt die Funktion eines Gateways zum Gnutellanetzwerk. Die Wahl eines Ultrapeers ist selbstorganisierend und muss folgende Bedingungen erfüllen:
ˆ Ultrapeers dürfen nicht durch eine Firewall geschützt sein, da ansonsten keine
eingehenden Verbindungen akzeptiert werden können.
ˆ Das Betriebssystem muss eine hohe Anzahl an Socketverbindungen bereitstellen.
ˆ Sie sollten eine hohe Bandbreite aufweisen, da sie in ihrer Funktion sonst als
Engpass für Servanten werden, die den Gateway verwenden.
ˆ Die Zeit, in der sie sich ohne Unterbrechung im Netzwerk befinden (Uptime)
muss ausreichend hoch sein, um erhöhte Kosten zur Benennung eines nachfolgenden Ultrapeers zu sparen und Indexinformationen aufbauen zu können.
ˆ Verarbeitungsgeschwindigkeit ankommender Anfragen und Speicherung großer
Indextabellen zeichnen Ultrapeers aus.
Servanten, die nicht den Anforderungen eines Ultrapeers bzw. Super-Peers genügen,
bauen Verbindungen zu einem oder mehreren Ultrapeers auf. Verbindungen unter
Servanten existieren nicht, so dass sich Cluster von Servanten bilden, die ihre Anfragen an einen Ultrapeer senden. Dieser verweist, gestützt durch Indextabellen, auf
einen Zielservanten oder routet die Nachricht an weitere Ultrapeers, die nach dem
gleichen Prinzip folgen.
Als Routingstrategie ist das Query Routing Protocol (QRP) 5 entstanden, das in diesem Zusammenhang nicht näher erläutert wird.
Servanten, die keine Information über bestehende Ultrapeers besitzen, können nach
dem bisherigen Verfahren ihre Suche als Broadcast propagieren. Sie ignorieren damit
das zusätzliche Overlay.
5
Spezifikation unter http://rfc-gnutella.sourceforge.net/src/qrp.html zuletzt besucht am
25.05.05
24
3.2. Verfahren der 1.ten Generation
GUESS - Gnutella Ultrapeer Extension for Scalable Searches GUESS ist ein
Suchmechanismus, der ohne blinde Weiterleitung von Nachrichten auskommt und
als Erweiterung des bestehenden Gnutella-Suchverfahrens entwickelt wird. Es wurde
in der Version v0.01 im Jahre 2002 von den Entwicklern des Gnutella-Protokolls
vorgestellt und bisher nicht in allen Details implementiert. Die Beschreibung ähnelt
der zuvor Erwähnten. Da jedoch kein expliziter Zusammenhang der beiden Verfahren
erkannt wurde, wird auf GUESS an dieser Stelle separat eingegangen.
Ein unstrukturiertes Gnutella-Netzwerk wird strukturiert, indem sog. Ultrapeers
(Super-Knoten) und Klientenknoten eingeführt werden [SR02]. Ultrapeers können für
Peers als Proxy zum Gnutella-Netzwerk angesehen werden. Die hierdurch entstehende Struktur ermöglicht skalierbare Suchanfragen. Super-Knoten erhalten von ihren
Klientenknoten Anfragen und leiten diese an bekannte Super-Knoten weiter. Der empfangende Super-Knoten bzw. der dahinter liegende Klientenknoten dient als Server
und der sendende Super-Knoten als Klient. Der ursprüngliche Sender wird somit von
seinem Ultrapeer gekapselt - im Gegensatz zur vorherigen Ultrapeer-Beschreibung.
Ultrapeers sind in der Anzahl gleichzeitig zu verschickender Nachrichten beschränkt,
um die Netzwerklast gering zu halten.
Gia Gia6 wurde von Chawathe, Ratnasamy u.a. [Yat03] entworfen, um die Skalierbarkeit des Gnutella-Systems zu verbessern. Die Anfragenverteilung im System hängt
von der zur Verfügung stehenden Kapazität eines Knotens ab. Je höher die Kapazität
ist, desto mehr Verbindungen können zu anderen Knoten eingegangen werden. Die
Kapazität bezeichnet die bearbeiteten Anfragen pro Zeiteinheit. Durch einen Level of
Satisfaction wird der aktuelle Verbindungsgrad beschrieben, der somit eine Grenze
für eingehende Verbindungen definiert. Statt die Suche durch ein Fluten des Netzwerkes zu realisieren, werden Walker (Verfahren siehe ”Random Walks” in Abschnitt
3.2.3) eingesetzt. Inspiriert durch die Vorarbeit von Adamic u.a. [ALPH01] wird die
Weiterleitung im Random-Walker-Verfahren durch die Kapazität der Nachbarknoten
entschieden. Mit der Kapazität steigt der Verbindungsgrad eines Nachbarn. Dieser
speichert für alle direkten Nachbarn Informationen über bereitgestellte Ressourcen
und besitzt somit mehr Informationen, die schließlich die Wahrscheinlichkeit eines
Suchtreffers erhöhen.
Interessen-basierte Algorithmen Sripanidkulchai, Barbosa u.a. untersuchten interessen-basierte Verfahren zur Weiterleitung von Nachrichten, um die Suchperformanz
zu erhöhen. Knoten besitzen ein gemeinsames Interesse, wenn sie im Besitz gleicher
Ressourcen sind. Drei interessen-basierte Algorithmen werden im Folgenden kurz
vorgestellt.
6
Gia steht für gianduia und stellt die allgemeine Bezeichnung des Haselnussbrotaufstrichs Nutella
dar (Crema Gianduia)
25
3. Such- und Routingverfahren
Shortcut-Based Algorithm Sripanidkulchai u.a. stellen in [SMZ03] einen Algorithmus
vor, der aktuelle Anfragen aufgrund einer Historie verarbeitet. Sie vertreten den Ansatz, dass Knoten, die in der Vergangenheit erfolgreich einem anfragenden Knoten
antworten konnten, es mit hoher Wahrscheinlichkeit in der Zukunft ebenfalls können.
Knoten, die ein ähnliches Interesse verfolgen, erstellen gegenseitig Shortcuts, die der
Lokalisierung dienen.
Basic Community Algorithm I Barbosa u.a. beschreiben in [BCAA04] eine Graphstruktur, die Interessen abbildet. Ecken repräsentieren Knoten; Kanten zwischen zwei
Ecken stellen gemeinsame Interessen dar. Ein Knoten wählt zufällig eine feste Anzahl
an eigenen Ressourcen aus, die auf Übereinstimmung mit bestehenden Knoten hin
untersucht werden. Die Anzahl der gleich-interessierten Knoten ist ebenfalls begrenzt,
so dass danach keine weiteren Knoten befragt werden. Die gefundenen Knoten verfahren nach demselben Prinzip. Durch die zufällige Auswahl der Ressourcen entstehen
verschiedene Interessengruppen.
Basic Community Algorithm II In einem abgewandelten Algorithmus von Barbosa
u.a. [BCAA04] werden je nach Ausmaß der Übereinstimmungen die Kanten in dem
Graphen gewichtet. Das Gewicht drückt innerhalb einer Interessensgruppe die unterschiedlich ausgeprägte Verbundenheit unter den Knoten aus. Im Gegensatz zum
vorherigen Ansatz wird hier auf eine Rekursion verzichtet. Gefundene Knoten werden
somit nicht der gleichen Prozedur unterworfen.
Fasttrack Das FastTrack-Protokoll wurde von Niklas Zennström und Janus Friis
initiiert. Es erweitert das bestehende Gnutella-Protokoll um sog. Supernodes, die die
Skalierbarkeit des Netzwerkes deutlich erhöhen. Es handelt sich um ein Super-PeerNetzwerk, in dem die Super-Knoten als Indexknoten dienen, die die in Abschnitt
2.2 beschriebenen Eigenschaften besitzen sollten. Die Kommunikation innerhalb des
Netzwerkes teilt sich in zwei Bereiche, der Kommunikation zwischen Super-Knoten
und allgemeinen Knoten und der Kommunikation zwischen den Super-Knoten. Da
eine undokumentierte Verschlüsselung der Kommunikation besteht, konnten die ursprünglichen Kommunikationselemente nicht vollständig ermittelt werden, speziell
die Kommuniaktion zwischen den Super-Knoten. Eine Nachahmung des Protokolls
ist in dem Projekt giFT-FastTrack [Har04] entstanden. Als bekanntester Vertreter
des FastTrack-Protokolls ist KaZaA7 zu nennen.
3.2.2. Tiefensuche (Depth-first traversal DFS)
Ausgehend von einem Baum oder Graph wird die Suche von einem Knoten initiiert
und statt in die Breite, also an alle Nachbarknoten, in die Tiefe fortgesetzt. In einem
7
http://www.kazaa.com/us/index.htm, zuletzt besucht am 17.10.2005
26
3.2. Verfahren der 1.ten Generation
Baum wird jeweils der direkte Kindsknoten angesprochen, der in der Ebene am weitesten links angeordnet ist und noch nicht besucht wurde. Dieser Vorgang wiederholt
sich, bis ein Blatt erreicht ist. Dann beginnt ein Backtrackingprozess, der rekursiv den
Pfad zum Ursprung verfolgt, bis die erste Verzweigung gefunden ist. Diese wird wiederum bis zum Blattknoten verfolgt. Mittels dieses Algorithmus wird der komplette
Baum durchsucht, erst tiefenorientiert, dann breitenorientiert.
Anders als in einem Baum kann ein Graph Zyklen enthalten, so dass nicht unbedingt
ein Blatt gefunden wird. Zyklen müssen erkannt werden, häufig durch eine Historie,
um an geeigneter Stelle den Backtrackingprozess zu starten.
Ein Vertreter der Tiefensuche stellt das P2P-System Freenet dar, das im Folgenden
vorgestellt wird.
Freenet
Das von Ian Clarke (1999) in [CSWH01] vorgestellte P2P-System Freenet erlaubt es,
Daten anonym bereitzustellen, indem die angebotenen Ressourcen nicht lokal gespeichert werden, sondern in sog. Data Stores auf beliebigen anderen Knoten gelagert
werden. Hierzu wird ein Hashwert für jede Ressource erzeugt. Knoten sind dezentral angeordnet und in ihrer Funktionsweise identisch. Anfragen und Bereitstellen
(Uploads) werden durch einen Hop-to-live (HTL) in ihrer Reichweite begrenzt, damit das Netzwerk nicht komplett geflutet wird. Anfragen sollen bei der Weiterleitung
an den Knoten vermittelt werden, der dem Ziel am nächsten liegt. Ein weiterleitender
Knoten wartet auf die Antwort, bevor dieser einen neuen Nachbarn zur Weiterleitung
bestimmt, so dass statt einer Breitensuche eine Tiefensuche verwendet wird [BY01].
Erster Ansatz Der erste Routingalgorithmus entschied anhand von Indextabellen,
in welche Richtung die Nachricht weitergeleitet wird. Der Index wird anhand von
Rückmeldungen über geroutetete Nachrichten erstellt. Eine Nachricht, die das gewünschte Ziel erreicht hat, veranlasst den Zielknoten, eine positive Rückmeldung
an alle Vorgänger bis zum ursprünglichen Sender zu versenden. Diese Nachricht wird
zum Indexaufbau genutzt. Ähnliche Anfragen werden in dieselbe Richtung verschickt,
so dass sich Knoten allmählich auf einen Bereich spezialisieren.
NextGeneration-Routing Eine Erweiterung des bestehenden Routingmechanismus
hinsichtlich der Performanz ist das zusätzliche Abspeichern der Antwortzeit, der bisherigen Trefferquote und der Zeit zur Erstellung einer ersten Verbindung zu einem
Knoten. Mit diesen zusätzlichen Informationen soll das Weiterleiten der Nachrichten
optimiert werden.
27
3. Such- und Routingverfahren
3.2.3. Random Walks
Suchanfragen, hier Walker, werden durch eine zufällige Anzahl an Addressaten begrenzt. Diese verfahren bei der Weiterleitung nach dem gleichen Prinzip, so dass das
Netzwerk auf undeterministische Weise durchsucht wird. Walker terminieren nach
einer vorgegebenen Zeit (TTL - time-to-live ) oder beenden die Suche erfolgreich.
Die Erfüllung der Suche wird durch eine regelmässige Kontaktaufnahme mit dem Suchenden überprüft. Falls genügend Ergebnisse durch weitere Walker erzielt worden
sind, kann eine weitere Suche somit beendet und ein unnötiges Nachrichtenaufkommen reduziert werden. In dem ursprünglichen Algorithmus ist ein Walker vorgesehen,
womit sich die Suchzeit verlängert. Diese wird durch weitere Walker verkürzt, wobei
das Nachrichtenaufkommen damit ansteigt.
In einer Analyse von [LCC+ 02] wurde gezeigt, dass die Skalierbarkeit des Systems im
Vergleich zum einfachen Fluten des Netzwerkes gesteigert werden konnte. Von den
Autoren wurden folgende Bedingungen für eine skalierbare Suche in unstrukturierten Umgebungen aufgestellt, die in dem vorgestellten Verfahren eingehalten werden
können:
ˆ Adaptives Beenden von Suchanfragen auch vor Ablauf der TTL verringert unnötige Netzwerklast.
ˆ Nachrichtenduplikate sollten minimiert werden, indem Knoten nur einmal besucht werden.
ˆ Zusätzliche Suchschritte sollen die Anzahl der besuchten Knoten nicht signifikant erhöhen.
3.2.4. APS - Adaptive Probabilistic Search
Tsoumakos und Roussopoulos stellen in [TR03a] eine informierte Suchmethode für
unstrukturierte Netzwerke vor. Peers kennen lediglich die Adressen ihrer Nachbarn.
Suchanfragen werden durch Walker repräsentiert, die einen Teil des Netzwerkes durchsuchen und bei erstem Erfolg ihre Suche beenden. Sie sind begrenzt, so dass nicht alle
verfügbaren Nachbarn angesprochen werden. Nachrichten verfallen nach Überschreitung einer angegebenen maximalen Suchtiefe (TTL). Sie werden bei Empfang kurzzeitig gespeichert (soft-state). Jeder Knoten besitzt einen lokalen Index, in dem pro
angefragtem Objekt bzw. weitergeleiteter Suche für jeden Nachbarn eine Wahrscheinlichkeit für die erfolgreiche Suche in der Zukunft gespeichert wird. Falls verschiedene
Walker denselben Knoten erreichen, dient der soft state dazu, den letzteren mit einem
Misserfolg zu beenden, da dieser ansonsten dem ersten folgen würde.
28
3.2. Verfahren der 1.ten Generation
Die Wartung der gespeicherten Indexeinträge geschieht nach zwei unterschiedlichen
Ansätzen. Im optimistischen Ansatz wird davon ausgegangen, dass eine Suche erfolgreich endet. Nur im gegensätzlichen Fall verfasst der zuletzt besuchte Knoten eine
update-Nachricht, die den Suchpfad in umgekehrter Richtung verfolgt. Dieser Knoten
und seine Vorgänger erniedrigen ihre zuvor getroffene Auswahlwahrscheinlichkeit, so
dass zukünftige Suchen mit gleichem Suchkriterium einen anderen Weg einschlagen.
Erfolgreiche Suchen werden nicht berücksichtigt. Der pessimistische Ansatz beruht
auf der Annahme, dass vorwiegend Misserfolge eintreten. Somit wird nur bei Erfolg
eine Update-Nachricht versendet, die alle vorherigen Knoten veranlasst, ihre diesbezügliche Wahrscheinlichkeit zu erhöhen. Bei Misserfolg wird nicht reagiert. Falls
weniger als die Hälfte der ausgesandten Walker zum Erfolg führen, ist die Verarbeitungszeit im pessimistischen Fall geringer.
Dieses Suchverfahren zeichnet sich durch eine Lernfähigkeit aus, die bei wiederholten
Anfragen zunehmend effizienter zum Ziel führt. Im Worst-Case werden 2 ∗ k ∗ T T L
Nachrichten pro Anfrage verschickt (k enspricht der Anzahl an Walkern). Die Menge der zu verwaltenden Informationen von r bisher gesuchten Ressourcen bei einer
Anzahl von n Nachbarn betragen O(r × n).
Erweiterungen
Die Verfasser des Suchverfahrens stellen zwei Erweiterungen vor. Die kontinuierliche
Überwachung der Erfolgsrate dient dem s-APS (wechselndes-APS), die kostengünstigere Alternative zur Indexwartung während der Laufzeit zu wählen. Eine zusätzliche
Gewichtung nach der Entfernung der Trefferknoten wirkt sich positiv auf die Anzahl
der zu kontaktierenden Knoten aus. Nähere Replikate können im ω-APS (gewichtetesAPS) dem Entfernteren somit vorgezogen werden, anstatt bei gleicher Wahrscheinlichkeit zweier Nachbarn zufällig zu entscheiden.
Tsoumakos und Roussopoulos stellen mit AGNO (An Adaptive Group Communication Scheme for Unstructed P2P Networks) [TR05] eine Möglichkeit der Gruppenkommunikation vor. Gruppen werden implizit durch gemeinsame Interessen gebildet,
die durch sog. Backpointer (rückwärtiger Verweis) beim Weiterleiten von Nachrichten entstehen. Dynamische Strukturen werden erkannt, indem die Lernfähigkeit des
APS-Verfahren genutzt wird. Somit kann nach einer gewissen Lernphase die Anzahl
an versendeten Nachrichten reduziert werden und die Suche zielgerichteter ablaufen.
Außerdem wird davon ausgegangen, dass Peers, die ein bestimmtes Interesse bisher
bekundet haben, dieses auch weiterhin pflegen und über relevante Neuerungen informiert werden wollen.
29
3. Such- und Routingverfahren
3.2.5. Local Indices
Yang und Garcia-Molina schlagen in [BY01] vor, dass jeder Knoten einen lokalen Index über die Informationen seiner Nachbarn bis zu einem Radius r pflegt. Der Radius
entspricht hierbei der Anzahl an Hops. Eine systemweite Richtlinie (policy) bestimmt,
welche Knoten abhängig von ihrem Radius zum anfragenden Knoten Nachrichten verarbeiten, weiterleiten und verwerfen. Eine policy besteht aus einer Menge von Zahlen,
die die Tiefe einer Nachricht darstellen und ausschlaggebend dafür sind, welcher Knoten eine Nachricht verarbeitet, d.h. mit dem lokalen Index vergleicht. Die anderen
Knoten leiten die Suchanfrage lediglich an alle direkten Nachbarn weiter. Der letzte
Eintrag der policy bestimmt den Knoten, der die Nachricht verfallen lässt. In einer
Policy P = 1, 5 verarbeiten die Knoten der ersten und fünften Tiefe die Nachricht,
indem sie ihren Index überprüfen. Alle dazwischenliegenden Knoten leiten diese lediglich weiter. Die Knoten der Tiefe fünf beenden die Suche, da die Policy diese Tiefe
als letzte Zahl angibt.
Falls der Indexradius r beträgt, so sollte nach [TR03c] der Abstand zweier aufeinander
folgender Tiefen in der policy 2∗r+1 sein, da die dazwischenliegenden Knoten jeweils
indexiert werden und somit bei einer Verarbeitung nur die Latenzzeit erhöhen.
3.2.6. Routing Index - RI
Ein Routing Index ist eine Datenstruktur, anhand der als Suchergebnis eine sortierte
Liste von direkten Nachbarn geliefert wird. Die Sortierung gibt Auskunft über die
Güte des damit verbundenen Pfades zu den naheliegenden Ressourcen. Ressourcen
werden Kategorien zugeordnet, wobei eine Ressource mehreren Kategorien gleichzeitg
angehören kann. Jeder Knoten verwaltet einen lokalen Index und einen Routing Index, der für die Weiterleitung der Anfragen dient. Der lokale Index gibt Auskunft
über alle dem Knoten angehörigen Ressourcen; der Routing Index speichert Informationen über Ressourcen der anderen Knoten im Netzwerk. Es werden in [CGM02]
drei Routing Indizes (RI) unterschieden, der compound RI (CRI), der hop-count RI
und der exponential RI, die im Folgenden vorgestellt werden.
compound RI Jeder Knoten hält neben dem lokalen Index Informationen über die
kategorienbezogene Anzahl aller Ressourcen eines Pfades. Die Abbildung 3.1 veranschaulicht ein Netzwerk mit fünf Knoten und den dazugehörigen Indextabellen, die
in einen lokalen Index (dunkel) und einen Routing Index (hell) unterteilt sind. Der
Routing Index beinhaltet alle direkten Nachbarknoten, stellt jedoch die Anzahl aller
Ressourcen eines weiterführenden Pfades in Zusammenhang mit den ausgewählten
Kategorien. Der Knoten A ist direkt mit Knoten C benachbart und führt diesen somit in dem Routing Index auf. Die Anzahl der Ressourcen in diesem Routing Index
30
3.2. Verfahren der 1.ten Generation
entspricht jedoch der Anzahl an Ressourcen der Knoten C und allen Weiterführenden,
also auch D und E.
#
K1
K2
K3
B
18
3
3
3
A
76
31
49
20
24<12+32+4
Dokumente können
mehreren
Kategorien
angehören
B
#
K1
K2
K3
D
24
12
32
4
C
54
18
16
11
G=2
18>3+3+3
Weitere Dokumente
gehören anderen
Kategorien an
G=2
C
G=8,75
D
G=1
A
#
K1
K2
K3
A
12
3
9
0
B
18
3
3
3
C
64
28
40
20
#
K1
K2
K3
C
24
12
4
8
A
30
6
12
3
D
24
12
32
4
E
16
4
4
8
Lokaler Index
E
#
K1
K2
K3
E
16
4
4
8
C
78
18
16
11
G = 28/64 * 20/64 * 64 = 8,75
Bild 3.1.. Ausschnitt des Netzwerkes mit jeweiligen Indextabellen. Anfrage nach
Ressource aus Kategorie K1 und K3 an Knoten A versandt. Auswahlroute fett gekennzeichnet mit Gütewert als Auswahlkriterium. Berechnung des Gütewertes G von
Knoten C.
Falls der Knoten A eine Suchanfrage nach Ressourcen erhält, die den Kategorien K1
und K3 zugeordnet werden, so wird zuerst der lokale Index betrachtet und dann für
jeden direkten Nachbarn eine Pfadgüte berechnet, um nicht das gesamte Netzwerk
zu fluten. Die Güte berechnet sich nach folgender Formel:
G = #N umberOf Documents ∗
Q
CRI(si )
i #N umberOf Documents
Der Pfad mit der höchsten Güte (A-C-D) wird dann verfolgt. Dieser Algorithmus
terminiert, wenn die gewünschte Trefferanzahl erreicht wurde bzw. es keine weiteren
Nachbarn mehr gibt.
Die Entfernung der aggregierten Ressourcen ist in diesem Algorithmus nicht ersichtlich. Der compound Routing Index stellt lediglich die Anzahl der gewünschten Ressourcen in dem betrachteten Pfad zur Verfügung und berechnet anhand dessen die
Pfadgüte. Bei einer geringen geforderten Trefferanzahl ist somit die Entfernung wichtiger als die Menge, die schließlich in der Güteberechnung betrachtet wird. Ein weiteres
durchaus größeres Problem ergibt sich in der Wartung der Indexdaten. Compound
31
3. Such- und Routingverfahren
Index indexiert alle in einem Pfad folgenden Knoten. Die Daten- und Topologieänderungen verursachen daher eine enorme Netzwerklast, da alle Knoten eines möglichen
Pfades benachrichtigt werden müssen.
hop-count RI Der hop-count RI vermindert die Wartungsprobleme, in dem eine
künstliche Indexierungsgrenze (sog. horizon) angegeben wird. Es wird somit nur bis
zu einer festen Entfernung indexiert. Der Speicheraufwand erhöht sich jedoch, da
für jeden Radius (1-hop, 2-hop, ..) ein aggregierter Index erstellt wird nach dem
Prinzip des compound RI, jedoch mit dem Radius als Grenze. Es müssen also mehrere
Indexlisten gespeichert werden.
exponential RI Der exponential RI verringert den Speicheraufwand des hop-count
RI auf Kosten von ungenauer Vorhersagen. Eine detaillierte Beschreibung des Algorithmus wurde von den Autoren nicht geliefert. Nach [CGM02] werden die Kosten
eines regulären Baumes 8 auf den hop-count RI angewandt.
3.2.7. DLRP - Distributed Resource Location Protocol
Statt alle existierenden Replikate einer Ressource zu finden bzw. alle Knoten mit entsprechenden Verweisen zu kontaktieren, werden in dem Suchprotokoll von Menascé
und Kanchanapalli [MK02] nur einzelne Nachbarn befragt und die Weiterleitung
durch eine Suchtiefe begrenzt. Jeder Knoten besitzt ein lokales Verzeichnis über eigene Ressourcen und einen Verzeichniscache über fremde Inhalte. Weiterhin ist die
direkte Nachbarschaft namentlich bekannt, so dass Nachrichten adressiert werden
können.
Ein suchender Knoten, sog. source, sendet die Anfrage mit einer gewissen Wahrscheinlichkeit an seine Nachbarn, die diese mit ihren lokalen und fremden Informationen
vergleichen. Falls sie nicht Besitzer dieser Ressource sind und auch keinen Verweis
in ihrem Cache enthalten, so wird die Nachricht bis zu einer vorgegebenen Suchtiefe
nach gleichem Prinzip weiterverschickt, wobei die Wahrscheinlichkeit in Abhängigkeit der Suchtiefe in einer Richtlinie variiert werden kann (broadcast policy). Die
weitergeleitete Nachricht enthält alle Adressen der bisher untersuchten Knoten. Diese Zusatzinformation wird verwendet, um den Verzeichniscache aller Knoten eines
Suchpfades mit neuen Inhalten zu versehen. Methoden zur Ersetzung bestehender
und zur Invalidation nicht mehr existierender Einträge sind nicht im Protokoll vorgesehen.
8
Ein Baum, bei dem alle Knoten den gleichen Grad D haben, wird als regulärer Baum bezeichnet.
Die maximale Kardinalität der Kantenmenge eines Weges in einem Baum wird als Tiefe des
Baumes bezeichnet.[Hor00]
32
3.3. Verfahren der 2.ten Generation
3.2.8. SUPS - Scalable Unstructured P2P System
SUPS wird als ein Super-Peer-System vorgeschlagen, dass Vorteile wie die zentralisierte Suche und die Anonymität verbindet. Besonderer Wert wird auf die Topologie des
unstrukturierten Netzteiles gelegt, also den Super-Peer-Beziehungen untereinander.
Pyun und Reeves gehen in [PR04] davon aus, dass die wichtigste Anforderung an ein
unstrukturiertes P2P-System ein geringer Durchmesser9 ist. Eine gute Lastverteilung
könnte durch einen regulären Graphen geleistet werden, da alle Knoten die gleiche
Anzahl an ausgehenden Verbindungen besitzen. Zufallsgraphen10 werden von Erdös
und Rényi [ER59] erzeugt, indem Paare von Ecken zufällig ausgewählt werden und
mit einer gleichen Wahrscheinlichkeit verbunden werden, so dass alle Ecken nahezu
die gleiche Anzahl an Kanten besitzen. Weiterhin zeigen sie, dass hierbei ein geringer
Durchmesser entsteht, der für die Topologieerstellung von P2P-Systemen gewünscht
ist.
Da jedoch P2P-Systeme einer starken Dynamik unterliegen, wurde von Pyun und
Reeves ein Prozess vorgeschlagen, der die Topologieänderungen berücksichtigt (Random δ -Process). Als minimalen Verbindungsgrad in dem Netzwerk bezeichnen die
Autoren δ. Bei dem Eintreten eines Knotens werden alle bestehenden Knoten auf
ihre Konnektivität hin untersucht. Die Knoten mit einem Grad geringer als δ werden
mit dem Knoten verbunden, der den geringsten Grad aufweist. Die Auswahl erfolgt
zufällig. Dieser Prozess wird solange wiederholt, bis der Grad aller Knoten nahezu
gleich ist. δ, als Ausdruck der Konnektivität, erhöht sich dabei mit steigender Anzahl
an Knoten.
Die Einhaltung eines geringen Durchmessers birgt jedoch eine hohe Anzahl an Topologieänderungen, falls Knoten das Netzwerk betreten oder verlassen. Weiterhin
muss jeder Knoten die Anzahl aller bestehenden Knoten regelmässig schätzen, um
die entsprechende Konnektivität zu gewährleisten.
3.3. Verfahren der 2.ten Generation
Verfahren der zweiten Generation basieren überwiegend auf verteilten Hashtabellen
(sog. distributed hash-table (DHT)). Die gleichverteilende Eigenschaft der Hashtabellen wirkt sich auf Skalierbarkeit und Lastverteilung der Nachrichten positiv aus.
Ressourcen und Knotenadressen werden meist auf denselben Wertebereich abgebildet und somit wird eine Beziehung zwischen Knoten und Ressourcen ermöglicht, die
9
Der Durchmesser eines Graphen entspricht der maximalen Distanz zweier beliebiger Knoten. Die
Distanz zwischen zwei Knoten ist die minimale Anzahl Kanten, die durchlaufen werden muss,
um von einem Knoten aus den anderen zu erreichen
10
Ein Zufallsgraph ist ein Graph, in dem die Anzahl an Ecken, Kanten und Verbindungen nach
einem Zufallsprinzip gewählt werden.
33
3. Such- und Routingverfahren
sich darin ausdrücken kann, dass Knoten einen Bereich an Ressourcen verwalten.
Suchgarantien können ausgestellt werden, da theoretisch alle Ressourcen mit meist
logarithmischem Aufwand gefunden werden.
3.3.1. CHORD
Das Chord-Protokoll [SMK+ 01] wurde von Ion Stoica 2001 publiziert und zählt zu
den bekannten DHT-Verfahren. Das Protokoll spezifiziert, auf welche Art und Weise
Schlüssel lokalisiert werden können und wie Knoten das System betreten und verlassen. Chord ist ein Vertreter der DHT-Verfahren und basiert somit auf der Verteilung
der Knoten mittels einer verteilten Hash-Tabelle. Knoten werden durch einen Ring
eindeutig repräsentiert und verwalten Bereiche von Schlüsseln. Schlüssel werden ebenfalls durch eine Hash-Funktion auf den Ring abgebildet, indem sie Knoten zugeordnet
werden.
Der Ring umfasst somit alle Knoten, die aktuell im System enthalten sind. Er besteht
jedoch in der Regel aus einer wesentlich größeren Menge an Ringplätzen, als Knoten
vorhanden sind. Die Größe des Ringes entspricht einer Zweier-Potenz mit Exponent
m, die alle Knoten eindeutig abbilden kann. Das Wählen einer Zweier-Potenz ist in
den Nachbarschaftsbeziehungen der Knoten begründet, die mit der Entfernung der
Nachbarn abnimmt. Die Knoten auf dem Ring sind durch Nachbarschaftsbeziehungen
miteinander verbunden. Jeder Knoten hat mehrere Nachfolger und einen Vorgänger.
Routing
In [SMK+ 01] werden zwei Routingverfahren vorgestellt, das einfache Routing und das
skalierbare Routing. In der einfachen Variante wird eine Nachricht immer an den ersten bzw. einzigen Nachfolger auf dem Ring weitergeleitet. Die Laufzeit des einfachen
Routing ist daher proportional zu Knotenanzahl und bringt keine Vorteile gegenüber
Verfahren der ersten Generation. In der zweiten Variante, dem skalierbaren Routing,
besitzt jeder Knoten eine sog. Finger-Tabelle, die Auskunft über die Nachbarschaft
gibt. Eine Finger-Tabelle enthält m Nachbarschaftseinträge, die die Nachfolgeknoten
auf dem Ring beinhalten. Die Entfernung der Nachbarn auf dem Ring nimmt exponentiell zu, um einen größeren Folgebereich zu adressieren. Somit ist der i-te Eintrag
der Finger-Tabelle der 2i−1 Nachbar auf dem Ring in Uhrzeigerrichtung. Neben der
Fingertabelle besitzt jeder Knoten noch einen Zeiger auf seinen Vorgängerknoten.
Im Folgenden werden der Aufbau und die Basisfunktionen des Chord-Protokolls
anhand eines durchgängigen Beispiels erklärt. Zu den Basisoperationen der DHTVerfahren zählen das Betreten, das Verlassen und das Suchen.
Gegeben sei ein Präsenzsystem mit einer maximalen Aufnahme von acht Knoten. Somit wird m=3 gewählt und es entsteht ein Ring mit anfangs acht leeren Plätzen. Zum
34
3.3. Verfahren der 2.ten Generation
Zeitpunkt tx ergibt sich die in Abb. 3.2 gezeigte Situation mit der Fingertabelle des
Knotens 192.168.0.17. Als Knoten-Hashfunktion wird eine xmod8-Funktion verwenKnoten 192.168.0.6
Knoten 192.168.0.17
0
1
Start Inter- Nachvall
folger
=
5
7
+1
2
2²
6
5
3
4
2
3
5
[2,3)
[3,5)
2
4
[5,1)
6
Finger-Tabelle
Knoten 192.168.0.12
Bild 3.2.. Chord-Ring mit drei Knoten und m=3
det, die nur den Teil des Subnetzes (Klasse C) betrachtet. In der Fingertabelle des
Knotens 192.168.0.17 sind, gemäss der Größe des Ringes(2m ), drei Einträge enthalten,
die den 20 , 21 und 22 Nachfolger enthalten. Zusätzlich hierzu wird ein Intervall für
jeden Eintrag angegeben, der je nach Auftreten i 2i Knoten enthält. Weiterhin wird
der Nachfolger noch notiert. Das Intervall gibt Auskunft darüber, welche Knoten der
i-te Eintrag wiederum kennt. Somit ist also der komplette Ring adressierbar(m=3:
2i−1 + 2i−1 ). Als Vorgänger wird der Knoten 192.168.0.6 gespeichert, da er für den
Platz 0 auf dem Ring zuständig ist.
Da Ressourcen ebenfalls durch eine Hashfunktion auf den Ring abgebildet werden,
gehen wir nun davon aus, dass für eine Ressource R1 der Wert 7 berechnet wurde.
Die Verwaltung der Ressourcenschlüssel verläuft gegen den Uhrzeigersinn und somit
wird dieser Schlüssel von Knoten 192.168.0.17 verwaltet (siehe Abb.3.3). Falls nun
nach dieser Ressource gesucht wird, kann der Wert und somit der Knoten berechnet
werden. Angenommen, der Knoten 192.168.0.12 sucht diese Ressource (Knoten 7), so
wird durch den dritten Intervalleintrag in der Finger-Tabelle festgestellt, dass Knoten
0 Informationen über den Knoten 1 hat. Es wird die Nachricht also an Knoten 0
weitergeleitet, der letztendlich durch den ersten Eintrag seiner Finger-Tabelle die
Nachricht an Knoten 1 weiterleiten kann. Dieser tritt abschließend direkt mit dem
fragenden Knoten in Kontakt.
35
3. Such- und Routingverfahren
Knoten 192.168.0.6
Knoten 192.168.0.17
R1
0
1
=
5
7
+1
2
2²
6
5
3
4
Finger-Tabelle
Start
Knoten 192.168.0.12
5
6
0
Inter- Nachvall
folger
[5,6)
6
[6,0)
6
[0,3)
1
Bild 3.3.. Aufbau des Chord-Ringes wie in Abb. 3.2. Knoten 192.168.0.12 sucht
Ressource R1, die von Knoten 192.168.0.17 verwaltet wird. Verweis über dritten
Eintrag der gezeigten Fingertabelle.
Topologie
Das Ein- und Austreten neuer Knoten in das System basiert auf den gleichen Schritten, die für das Suchen einer Ressource notwendig sind. Wenn ein neuer Knoten
das System betritt, wird seine Position im Ring berechnet und der Teil der FingerTabelle des vorangehenden Knotens übernommen und entsprechend der Position in
der Finger-Tabelle abgeändert. Dieser Knoten verwaltet nun einen Teilbereich des
Vorangegangenen, der hingegen einen Verwaltungsbereich abgibt. Der entsprechende
Vorgang tritt beim ordnungsgemässen Verlassen des Systems ein. Der vorherige Knoten übernimmt einen Teil der Fingertabelle und erweitert seinen Verwaltungsbereich.
Um dem unbeabsichtigen bzw. fehlerhaften Austreten vorzubeugen, versendet jeder
Knoten in regelmäßigen Abständen Ping-Anfragen an seinen Nachfolger und handelt
entsprechend.
Bewertung
Chord zeichnet sich wie alle bestehenden DHT-Verfahren durch eine gute Lastverteilung aus, da diese den Hashfunktionen zugrunde liegt. Eine weitere Stärke ist die
Skalierbarkeit, da die Routingkosten bei Zunahme der zu verwaltenden Knoten logarithmisch ansteigen. Dies wird durch die Anzahl der zu versendenden Nachrichten
bei der Suche und dem Einfügen gewährleistet. Die Komplexität der Suche beträgt
36
3.3. Verfahren der 2.ten Generation
O(log N ) und die des Betretens und Verlassens O(log N 2 ). Da gleiche Ressourcen von
demselben Knoten verwaltet werden, ergibt sich theoretisch eine maximale Trefferquote. Die Hashfunktion muss jedoch so konzipiert sein, dass der Hashschlüssel gleichen
Ressourcen auch dieselben Werte zuweist. Eine ungeeignete Hashfunktion könnte anhand des Namens einer Ressource einen Hashwert vergeben und würde sich somit
vom gesuchten Inhalt loslösen. Da mittels Hashfunktionen nur sog. Punktsuchen vollzogen werden können, ist es schwierig, nach einer Menge von ähnlichen Ressourcen zu
suchen. Ungenaue Suchanfragen werden daher in der Regel keine zufriedenstellenden
Ergebnisse liefern.
Erweiterungen
Da Chord eines der ersten DHT-Verfahren darstellt, existieren verschiedene weitergehende Ansätze, die bestimmte Eigenschaften herausstellen und diese erweitern. Einige
dieser Ansätze werden nun vorgestellt.
Dabek u.a. reduzieren in [DLS+ 04] die Zeit für das Finden von Knoten um die Hälfte unter der Annahme, dass alle Knoten im Netzwerk miteinander kooperieren und
die durchschnittliche Routingkomplexität O(log N) ist. Bisher wurde bei der Suche
nach einem Knoten in Chord iterativ vorgegangen, d.h. die Einträge in der Fingertabelle eines Knoten werden durchlaufen und jeweils eine Rückmeldung gegeben. Die
Erweiterung sieht hier eine rekursive Form der Weiterleitung vor, indem angesprochene Knoten wiederum in ihrer Fingertabelle die passenden Einträge suchen und die
Nachricht weiterleiten. Der letztendlich gefundene Knoten tritt dann direkt mit dem
Initiator in Verbindung.
Gummadi u.a. gehen in [GGG+ 03] der Frage nach, in wieweit sich DHT‘s an die
darunter liegende Internet-Topologie anpassen lassen, um die Latenzzeiten zu minimieren. Hierbei werden die Routingeinträge hinsichtlich ihrer Round-Trip-Time
(RTT)11 optimiert (Proximity Neighbor Selection). Aus einer Nachbarschaftsmenge
wird anschließend der Knoten mit der geringsten RTT ausgewählt (Proximity Route
Selection).
Koorde Karger und Kaashoek [KK03] erarbeiteten ein Netzwerk, namens Koorde,
das einen geringeren Ausgrad als bei Chord gewährleistet. Der Grad misst die eingehenden (Eingrad) und ausgehenden (Ausgrad) Verweise eines Knotens. Somit können
11
Round-Trip-Time ist die Zeit, die benötigt wird, eine Nachricht zu einem Peer zu schicken und
die Antwort zu erhalten.
37
3. Such- und Routingverfahren
bei einem Grad g und d Schritten genau g d Knoten erreicht werden. Die Autoren ermöglichen durch Koorde den logarithmischen Grad bei logarithmischem Durchmesser,
den Chord bietet, zu reduzieren. Durch eine Kombination von einem Ring-Graphen,
wie in Chord verwendet, und einem DeBrujin-Graphen wird konstanter Grad ermöglicht. Ein DeBruijn-Graph12 hat einen Grad von 2 bei einem Durchmesser log(n).
In einem Koorde-Netzwerk besitzt jeder Knoten vier Zeiger, zwei DeBrujin-Kanten
und jeweils einen Vorgänger und Nachfolger auf der Ring-Topologie. Die Komplexität
der Suche und der Topologieänderungen, sowie der Durchmesser entsprechen denen
bei Chord. Lediglich der Ausgrad, d.h. die ausgehenden Verweise eines Knotens sind
konstant vier.
miChord Kathryn Chen, Loai Naamani und Karim Yehia [CNY03] definieren Metriken, anhand derer entschieden werden kann, wo eine Ressource abzulegen ist. Die
Suche danach bleibt hiervon unberührt. Sie geschieht nach dem beschriebenen Verfahren in Chord. Lediglich der die Ressource verwaltende Knoten besitzt einen Verweis
auf die Ressource, die sich irgendwo im Netzwerk befinden kann. Knoten verwenden
Metriken, um sich für Ressourcen bestimmter Art zu ”bewerben”. Die Metriken sind
dynamisch und können von einer Anwendungsschicht beeinflusst werden. Diese hat
damit Einfluss auf die kriterienspezifische Platzierung von Ressourcen. Eine Lastverteilung könnte somit beeinflusst werden.
TaChord - topology-aware Chord system with super-peers TaChord zeigt Ansätze zur Unterstützung topologischer Aspekte bei der Suche und dem Weiterleiten
von Nachrichten. Außerdem setzen die Autoren von [DSX04] auf den Einsatz von
Super-Peers aus den in Abschnitt 2.2 beschriebenen Gründen.
Optimierungen basieren auf zusätzlichen Speicherstrukturen der einzelnen Knoten.
Neben einer Fingertabelle verwenden Knoten eine Routingtabelle, die physikalisch
benachbarte Knotenadressen bereitstellt. Super-Knoten verfügen zudem über die Informationen über ihre Cluster und einen Cache, der vergangene Suchanfragen enthält.
Die Verwendung einer Routingtabelle verringert die Latenzzeit durch Bezugnahme
auf die physikalische Entfernung eines Knotens und der Cache dient der Effizienzsteigerung durch Direktverweise.
Sucht nun ein Knoten eine Ressource und den damit verbundenen Zielknoten, so
wird durch die Fingertabelle der Nachfolger bestimmt. Weiterhin wird mittels der
Routingtabelle ein naheliegender Knoten gesucht, dessen Bezeichner in der Nähe des
Zielknotens liegt. Falls ein Super-Knoten kontaktiert wird, so existieren noch die Möglichkeiten der Überprüfung der Cacheeinträge und der Knotenbezeichner des Clusters.
12
Ein n dimensionaler de Bruijn-Graph zur Basis 2 besteht aus 2n Knoten und 2( n + 1) Kanten.
38
3.3. Verfahren der 2.ten Generation
Die Entfernung der potentiellen Kontaktknoten zum Zielknoten ist schließlich ausschlaggebend für die Wahl. Weiterhin wird gezeigt, dass eine redundante Haltung
von Super-Peers durch unterschiedliche Cacheeinträge Effizienzvorteile hinsichtlich
der Weiterleitung hervorbringt. Wartung und topologische Veränderungen werden
nicht berücksichtigt.
Mizrak u.a. stellen ein Verfahren vor, dass sich die Heterogenität der Knoten zunutze macht und damit Suchanfragen in konstanter Zeit ermöglicht [MCKS03]. In dem
gemischten Ansatz werden einfache Knoten von Super-Knoten getrennt. Alle Knoten
und Ressourcen werden mittels verteilter Hashtabellen auf einem Ring platziert, wobei einfache Knoten einem großen äußeren Ring zugeordnet und Super-Knoten einem
kleineren inneren Ring zugewiesen werden. Jeder Knoten des inneren Ringes ist für
einen Bereich des äußeren zuständig, das den in 2.2 vorgestellten Clustern entspricht.
Statt einer Fingertabelle benötigen die einfachen Knoten lediglich die Adresse ihres Super-Knotens. Abbildung 3.4 veranschaulicht den Aufbau und die Route einer
Suchanfrage. Ein suchender Knoten schickt die Anfrage an seinen Super-Knoten, der
anhand des Bezeichners des Zielknotens den zuständigen Super-Knoten kontaktiert.
Dieser übermittelt daraufhin die Adresse des Zielknotens direkt an den Suchenden.
Die Kosten einer Suchanfrage sind konstant, da im schlechtesten Fall zwei SuperKnoten kontaktiert werden müssen.
Bild 3.4.. Systemarchitektur nach Mizrak et. al.
39
3. Such- und Routingverfahren
Symphony [MBR03] wurde durch das Modell einer ”kleinen Welt”13 von Kleinberg
[Kle00] inspiriert. Das Modell besteht aus einem zwei-dimensionalen Gitter, in dem
jeder Knoten vier Verweise auf seine direkten Nachbarn pflegt und zusätzlich auf einen
entfernten Knoten verweist, der zufällig gewählt wird. Eine Nachricht kann hierbei
in O(log 2 n) Schritten an jeden Knoten versendet werden. Dieses Prinzip wurde in
Symphony auf ein ring-förmiges DHT-Protokoll erweitert.
Coral Coral [FM03] ist ein DHT-Vertreter mit einem Unterschied in der Zuweisung
von Schlüsseln zu Objekten. Während in DHT‘s injektive Abbildungen von Objekten
zu Schlüsseln entstehen, können in DSHT‘s Schlüssel auf mehrere Objekte verweisen
(Distributed Sloppy Hash Table - DSHT).
Naheliegende Knoten werden in Clustern gruppiert. Eine Hierarchie aus drei Ebenen
beschreibt die Granularität der Entfernung (Region, Kontinent und Welt). Folgende
Ebenen existieren:
1. Ebene bestehend aus mehreren Clustern, die Regionen darstellen, mit Durchmesser von 30 Millisekunden
2. Ebene bestehend aus mehreren Clustern, die Kontinente darstellen, mit Durchmesser von 100 Millisekunden
3. Ebene bestehend aus einem Cluster, das allumfassend ist, mit unendlichem
Durchmesser
Jedes Cluster stellt einen Chord-Ring dar. Der Einsatz von DSHT‘s erlaubt das Auftreten eines Knoten mit gleichem Schlüssel in genau einem Cluster jeder Ebene, so
dass Lokalitätsbeziehungen angestellt werden können. Über die Allgemeinheit wird
die Suche in einem Kontinent bis schließlich in einer Region verfeinert.
Hieras [XMH03], ein DHT-Vertreter, verfolgt ein ähnliches Prinzip wie Coral mit
dem Unterschied, dass ausgehend von der aktuellen Region die Suche auf den Kontinent und schließlich auf die Allgemeinheit erweitert wird. Zu beachten ist hierbei, dass
in der Ausgangsebene mehrere Chordringe parallel existieren und somit der anfangs
befragte Ring wesentlich kleiner ist als beim umgekehrten Verfahren Coral. Weiterhin
werden Cluster nicht mittels Entfernungen eingeteilt, die durch die Latenzzeit einer
Antwort entstehen.
13
Das Phänomen der kleinen Welt (eng. small world) wurde von Milgram erstmals beschrieben und
wird hier nicht näher betrachtet. Weiteres dazu unter [Mil67]
40
3.3. Verfahren der 2.ten Generation
3.3.2. CAN
Das Konzept des Scalable Content-Addressable Network (CAN) wurde von [RFH+ 01]
am AT&T Center for Internet Research at ICSI (ACIRI) 14 2001 entworfen. Es werden wie bei Chord Hashfunktionen zur Abbildung von Knoten und Ressourcen verwendet, jedoch basiert es auf einem geometrischen Ansatz. Der Wertebereich dieser
Abbildung stellt ein d-dimensionales Kartesisches Koordinatensystem dar, in dem
die Punkte abgebildet werden. Ein Punkt repräsentiert einen Knoten des Systems
und wird in CAN mittels eines d-dimensionalen Bereiches abgebildet. Ähnlich dem
Verfahren eines k-d-Suchbaumes [Ben75] erhält jeder Knoten eine Zone zugewiesen,
der den generierten Hashkoordinaten entspricht. Der Wertebereich ist zu jedem Zeitpunkt komplett durch existierende Knoten verwaltet. Jeder Knoten hat somit 2*d
(Dimension) Nachbarn. Das Einfügen neuer Knoten verursacht immer eine Teilung
bestehender Zonen, wodurch ein hierarchischer Suchraum entsteht (siehe Abb. 3.5a).
0/1
1/1
0/1
1/1
K3
K3
K2
K2
K4
K4
K1
K1
0/0
1/0
K1
K5
1/0
K1
K2
K3
0/0
K4
K2
K3
K4
K5
Bild 3.5.. a) Aufbau eines CAN bestehend aus vier Knoten b) Hinzufügen von
Knoten K5
Routing
Um in einem CAN nach Ressourcen zu suchen, ist es notwendig, einen beliebigen
bestehenden Knoten zu kennen, von dem aus die Suchanfrage weitergeroutet wird.
14
http://www.icsi.berkeley.edu/index.html
41
3. Such- und Routingverfahren
Anhand der gesuchten Koordinaten kann ein bestehender Knoten die Suchanfrage
zielgerichtet an einen seiner Nachbarn weiterleiten, der wiederum nach dem gleichen
Prinzip verfährt, bis letztendlich der gesuchte Knoten gefunden ist. Die richtige Richtung und somit der entsprechende Nachbar kann mittels einfacher Vektorberechnung
der eigenen und gesuchten Koordinaten ermittelt werden.
Topologie
Das Eintreten eines neuen Knotens geschieht auf die gleiche Art und Weise. Die
Hashwerte des neuen Knotens werden berechnet und der bisherige Knoten gesucht,
der für die Verwaltung des Punktes zuständig ist. Wenn dieser Knoten gefunden
wurde, wird der von ihm verwaltete Bereich in zwei gleich große Teilbereiche unterteilt.
Die Änderungen bzgl. der Nachbarschaft müssen in angrenzenden Knoten aktualisiert
werden (siehe Abb.3.5b).
Das Verlassen bewirkt die Freigabe der zugehörigen Zone. Es tritt eine Verschmelzung
zweier Bereiche ein, wobei der Nachbar mit dem bisher kleinsten Zuständigkeitsbereich den nun nicht mehr zugewiesenen überschrieben bekommt. Um auch das unbeabsichtigte Entfernen eines Knotens zu registrieren, wird die Anwesenheit der Nachbarn
in regelmässigen Abständen überprüft und entsprechend gehandelt. Da nicht in allen Fällen eine Verschmelzung zweier Bereiche möglich ist, kann es u.U. vorkommen,
dass mehrere angrenzende, jedoch unzusammenhängende Bereiche verwaltet werden
müssen. In Abb. 3.5b) kann nach Austreten des Knotens K3 die hinterlassene Zone
nicht mit einer Angrenzenden verschmolzen werden.
Bewertung
Die beschriebene Architektur zeichnet sich insbesondere durch Selbstorganisation,
Skalierbarkeit und Fehlertoleranz aus. Knoten werden mit Hilfe von Hashfunktionen und Nachbarschaftsinformationen im multidimensionalen Raum positioniert. Die
Komplexität der Verwaltung von Routinginformationen ist proportional zur Dimensionierung, da jeder Knoten genau 2*d Nachbarn hat. Mit steigender Anzahl an Knoten werden demnach im Einzelfall nicht mehr Routinginformationen gespeichert. Die
mittlere Pfadlänge eines Routingvorganges steigt hierbei jedoch mit der Komplexität
O(n1/d ), da die Hierarchietiefe ausgeweitet wird. Um die Konsistenz der Nachbarschaftsinformationen zu erhalten, wird in regelmässigen Abständen die Nachbarschaft
überprüft, so dass das System fehlertolerant gegenüber unvermitteltem Austreten ist.
Wie auch bei Chord können jedoch keine ungenauen Suchanfragen effizient beantwortet werden.
42
3.3. Verfahren der 2.ten Generation
Erweiterungen
In [RFH+ 01] werden neben der Beschreibung des einfachen CAN noch Erweiterungsvorschläge, wie Änderungen der Dimensionen und Einführung sogenannter Realitäten,
beschrieben. Darauf bezogene Erweiterungen entstammen nicht den ursprünglichen
Autoren des CAN.
Dimensionen Da die mittlere Pfadlänge beim Routingvorgang von der Anzahl der
Knoten und der Anzahl der Dimensionen abhängig ist, kann diese durch Hinzunahme
von weiteren Dimensionen verringert werden. Jedoch erhöht sich somit auch die Anzahl der Routinginformaionen, die jeder Knoten in den Routingtabllen beinhaltet, da
die Nachbarschaftsmenge ebenfalls proportional zur Anzahl der Dimensionen ist. Ein
weiterer Vorteil ist die Steigerung der Fehlertoleranz, da die Anzahl der Routingwege
sich erhöht.
Realitäten Ein zweiter Vorschlag behandelt die Einführung von Realitäten, die jeweils unabhängige Koordinatensysteme mit verschiedener Aufteilung darstellen. Somit ist jeder Knoten für eine Zone pro Realität verantwortlich. Mit diesem Ansatz
verkürzt sich die Pfadlänge einer Nachricht und steigert die Fehlertoleranz auf Kosten
der Verwaltung mehrerer Routingtabellen.
Zusätzliche Informationen der benachbarten Knoten bzgl. der Netzwerkanbindung
können das Routing von Nachrichten performanter gestalten. Wenn jeder Knoten
die Round-Trip-Time (RTT) seiner Nachbarn in regelmässigen Abständen misst, so
kann das Weiterleiten einer Nachricht beschleunigt werden, indem bei Alternativen
der Nachbar mit der niedrigeren RTT gewählt wird.
eCAN - expressway content-adressable network Xu und Xang [XZ02] steigern die
Routingperfomanz auf O(logN ), indem sie den kompletten Wertebereich auf verschiedenen Ebenen unterschiedlicher Granularitätsstufen abbilden. Jeder Knoten besitzt
pro Ebene vier Nachbarn. Ausgehend von dem ursprünglichen CAN besitzt ein Knoten vier direkte Nachbarn (1 Ebene). Diese vier Nachbarn können wiederum als ein
zusammenhängender Bereich angesehen werden, der bis zu vier Nachbarn besitzt. Die
dritte Ebene wird gleichermaßen erstellt.
Somit wird eine Hierarchie auf das Koordinatensystem abgebildet, die direkte Sprünge zu entfernteren Zellen durch unterschiedliche Ebenen ermöglicht (expressway,
Schnellstraße). Die hierarchische Einteilung ermöglicht ein logarithmisches Routing,
jedoch auf Kosten ansteigender Verwaltung der Routingtabellen.
43
3. Such- und Routingverfahren
pSearch Eine Verknüpfung des eCAN mit Methoden des Information Retrieval (IR),
speziell Bewertungsverfahren, wurde in pSearch [TXM03] beschrieben, auf die jedoch
an dieser Stelle lediglich verwiesen wird.
3.3.3. Tapestry
Die Routinginfrastruktur Tapestry wurde von [ZKJ01] an der Universität von Kalifornien entwickelt. Basierend auf der verteilten Suchtechnik von Plaxton, Rajamaran
und Richa [PRR97], die auf einem statischen Netzwerk beruht, wurden einige Erweiterungen entwickelt, wie die Unterstützung von dynamischen Netzwerkstrukturen, die
für P2P-Systeme unerlässlich sind. Die Unterstützung von Ortsinformationen stellt
einen wesentlichen Unterschied zu Chord (siehe 3.3.1) und CAN (siehe 3.3.2) dar. Mittels dieser Informationen können Latenzzeiten bzgl. der darunterliegenden Topologie
berücksichtigt werden.
Ähnlich den vorangegangenen Verfahren werden Knoten und Ressourcen durch ID‘s
repräsentiert, die aus einem Wertebereich durch eine Hashfunktion abgebildet werden.
Routinginformationen liegen den einzelnen Knoten in Form von Nachbarschaftslisten
(Neighbor Map) vor. Diese Listen stellen eine n×m-Matrix dar, in der die Anzahl der
Zeilen der Zahlenbasis und die Spaltenanzahl den Ziffern der ID‘s entspricht. Nachbarschaftsgrade werden durch Übereinstimmung von Ziffernfolgen in den Knoten-ID‘s
bestimmt. Somit hat die Nachbarschaftsliste in einem Tapestry-Netzwerk, in dem
10.000 Knoten verwaltet werden können, die als Zahl zur Basis 10 dargestellt werden,
genau zehn Zeilen und vier Spalten (siehe Abb. 3.6). In den Spalten (j∈0..m) werden Lokalisierungsinformationen derart abgespeichert, dass jeweils j Ziffern mit der
eigenen Knoten-ID übereinstimmen. Daher werden zunehmend Informationen über
die eigene Nachbarschaft gespeichert. Zusätzlich enthält jeder Knoten eine Liste von
ihn referenzierenden Knoten (sog. Backpointer), die der Aktualisierung von Nachbarschaftslisten dienen.
Routing
Nachrichten werden anhand der Nachbarschaftsliste an den numerisch naheliegendsten Knoten weitergeleitet. Da nicht für jeden Eintrag in der Liste ein Knoten existieren muss, können Nachrichten somit nicht eindeutig weitergeleitet werden. Das
Surrogate Routing beseitigt dieses Problem, indem dann der Knoten verwendet wird,
der in den signifikaten Ziffern eine maximale Übereinstimmung enthält. Der Zielknoten wird hierbei durch maximal O(log N) Zwischenstationen gefunden.
44
3.3. Verfahren der 2.ten Generation
Max. Knoten = 10.000
i=
0
1
Basis = 10
2
3
4
5
6
7
8
9
j=0
0xxx
1xxx
2xxx
3xxx
4xxx
5xxx
6xxx
7xxx
8xxx
9xxx
1
2
3
40xx
41xx
42xx
43xx
44xx
45xx
46xx
47xx
48xx
49xx
450x
451x
452x
453x
454x
455x
456x
457x
458x
459x
4560
4561
4562
4563
4564
4565
4566
4567
4568
4569
Bild 3.6.. Nachbarschaftsliste des Knotens mit der ID=4567
Topologie
Ein eintretender Knoten generiert seine Knoten-ID und verschickt eine Nachricht an
genau diesen Knoten, der bisher nicht existierte. Diese Nachricht wird mittels Surrogate Routing an einen numerisch nahen bestehenden Knoten weitergeleitet, von dem
die Nachbarschaftsliste kopiert wird. Der bestehende und der eintretende Knoten passen daraufhin ihre Nachbarschaftslisten an. Über Backpointer können Referenzen gefunden werden, die eventuell nun wegen neuer Nachbarschaftsverhältnisse angepasst
werden. Das Verlassen des Systems geschieht ebenfalls über die Benachrichtigung der
Backpointer. Die Konsistenz der Topologie wird durch regelmässiges Überprüfen der
referenzierten Knoten gewahrt.
Bewertung
Die Komplexität der Suche nach bestehenden Knoten ist mit den vorangegangen
Verfahren zu vergleichen und liegt bei O(log N). Der Umfang der Nachbarschaftsinformationen hängt lediglich von der Zahlenbasis der ID‘s und der maximalen Knotenanzahl ab und bleibt somit konstant. Das System besitzt hiermit jedoch eine statische
Obergrenze.
45
3. Such- und Routingverfahren
Systeme mit starken Topologieschwankungen verursachen eine hohe Anzahl an Nachrichten zur Pflege der Nachbarschaftsbeziehungen und sind damit nur bedingt geeignet. Der große Vorteil zu Chord und CAN liegt in der Unterstützung von topologischen Eigenschaften. Die Einbeziehung von Lokalitätsinformationen verringert die
Anzahl an physikalischen Hops, da diese zunehmend den logischen entsprechen.
Erweiterungen
brocade Die Erweiterung des Tapestry-Netzwerkes von Zhao u.a [ZDH+ 02] sieht
eine zusätzliche Overlay-Ebene vor. Knoten in dieser Ebene werden Landmarken
(Super-Knoten) genannt. Sie sind untereinander verbunden und zeichnen sich durch
hohe Bandbreite, Rechenleistung und Ressourcenanzahl aus. Super-Knoten verwalten
eine sog. cover set von hierarisch untergeordneten Knoten. Die Verbindung zwischen
den Super-Knoten geschieht auf einem zusätzlichen Overlay. Da Super-Knoten angesichts der natürlichen Netzwerktopologie als Gateways angesehen werden können, verwenden die Autoren folgende Kommunikationsarten. Es wird zwischen interdomainund intradomain-Routing unterschieden. Die intradomain-Verbindungen beziehen
sich auf Kommunikation innerhalb eines cover set‘s, die interdomain-Verbindung auf
die Verbindungen zwischen den Super-Knoten.
Knoten, die eine Suchanfrage erhalten, können auf drei vorgestellten Wegen einen
Super-Knoten kontaktieren.
Naiver Ansatz Nachrichten werden, wie in Tapestry vorgesehen versendet und falls
diese zukünftig einen Super-Knoten kontaktieren, kann dieser sie auf dem neu
erzeugten Overlay weiterrouten (interdomain).
Indirekter Ansatz Alle IP-Pakete werden von den Super-Knoten mitgelesen und anhand der Tapestry spezifischen Informationen des IP-Paketes kann eine Nachricht zum interdomain-Versand ausgewählt werden.
Direkter Ansatz Zuständige Super-Knoten müssen den Knoten der cover-set‘s bekannt sein und gepflegt werden. Über einen Verlauf von bisherigen Nachrichten
kann jeder Knoten entscheiden, in welchem Overlay die Nachricht weitergeleitet werden soll. Falls eine derartige Suchanfrage temporär gespeichert wurde,
so kann sie auf dieselbe Art weitergeleitet werden. Ansonsten wird sie an den
Super-Knoten delegiert.
Die Autoren favorisieren durch eine Evaluation den dritten Ansatz.
46
3.3. Verfahren der 2.ten Generation
3.3.4. AGILE - Adaptive, Group-of-Interest-based Lookup Engine
AGILE wurde von Jan Mischke und Burkhard Stiller an der ETH Zürich entwickelt und in [MS03a] beschrieben. Es wird ein Overlay-Netzwerk erstellt, das eine
gruppen-basierte Suche ermöglicht. Gruppen werden hier als Group-of-Interest (GoI)
beschrieben.
Durch eine Hashfunktion werden Ressourcen und Knoten wie in bisherigen DHTVerfahren auf denselben Wertebereich abgebildet. Knoten werden in Requester (Klient) und Provider (Server) je nach aktueller Funktion eingeteilt. Ein Provider-Knoten
ist derjenige, dessen Knoten-ID am nahesten an der gesuchten Ressourcen-ID liegt.
Dieser verwaltet die Ressource, wie in Abschnitt 3.3.1 beschrieben. Ressourcen und
Knoten werden in Gruppen eingeteilt, indem der Schlüssel ziffernweise interpretiert
wird. So können die ersten Ziffern eine grobe Kategorie beschreiben und die darauffolgenden diese verfeinern. Es entsteht somit eine zusätzliche Hierarchie über dem
ID-Raum, die eine Granularität verdeutlichen kann.
Als Beispiel soll das in [MS03a] Vorgestellte verwendet werden. Anlässlich der starken Verbreitung von Musikdateien durch P2P-Systeme werden drei Hierarchien aufgestellt, der Medien-Typ, das Musikgenre und der Musiktitel (siehe Abb. 3.7a). Jeder
der drei Hierachien besitzt eine Hashfunktion zur Abbildung auf einen eindeutigen
Schlüssel. Die Such-ID setzt sich dann aus den drei Schlüsseln der Hierarchien zusammen. Der Wertebereich umfasst in AGILE 128 bit, wobei Medientyp und Musikgenre
einen 32 bit ID-Raum und der Musiktitel einen 64-bit ID-Raum adressieren können.
Eine Suchanfrage könnte also wie folgt aussehen : 12345678.12345678.12345678ADBCDEF.
Die Suche geschieht ziffernweise ähnlich wie bei Tapestry (siehe Abschnitt 3.3.3).
In einer Routingtabelle (siehe Abb. 3.7b) wird erst der richtige Medientyp ausfindig
gemacht, dann in einer weiteren Routingtabelle das Musikgenre und schließlich in der
letzten Routingtabelle der Musiktitel. Eine gewisse Fehlertoleranz ergibt sich durch
die erhöhte Anzahl der Routingtabellen, da jede eigenständig sinnvolle Suchergebnisse
liefern kann und nicht notwendigerweise alle herangezogen werden müssen.
Das Betreten und Verlassen bewirkt wie in vorangegangenen Verfahren eine Suche
des Knotens im ID-Raum mit anschließender Aktualisierung der Routingtabellen aller
Nachbarn.
Knoten, die mehreren Gruppen angehören, haben dementsprechend mehr Verwaltungsaufwand, da sich ihre Routingtabellen vergrößern bzw. vervielfachen.
3.3.5. SHARK - Symmetric Hierarchy Adaption for Routing of Keywords
SHARK wurde ebenfalls von den Autoren Jan Mischke und Burkhard Stiller entwickelt und basiert auf dem vorherigen Ansatz. Ein wesentlicher Unterschied ist die
47
3. Such- und Routingverfahren
Bild 3.7.. a)Suchbaum und b)Routing-Tabelle(n) eines Knotens
Differenzierung in mehrere Dimensionen. Neben einer semantischen Dimension, in der
Typ, Genre und Name aggregiert werden können, existiert in dem in [MS03b] vorgestellten Beispiel zusätzlich eine zeitliche Dimension, die sich in Jahr, Monat, Tag
verfeinern lässt. In Abb. 3.8 wird diese Mehrdimensionalierung auf weitere Ebenen
angewandt.
Bild 3.8.. Multidimensionale Hierarchie in SHARK
48
3.3. Verfahren der 2.ten Generation
3.3.6. Kademlia
Kademlia ist ein P2P-System zur Speicherung und Wiederauffindung von Ressourcen
[MM02]. Wie bei Chord (siehe Abschnitt 3.3.1) werden Knoten und Ressourcen auf
einen Wertebereich abgebildet. Knoten verwalten numerisch ähnelnde binäre Schlüssel (oder sogar die dazugehörigen Ressourcen). Jeder Knoten speichert Informationen
über andere Knoten und deren Ressourcen, um eine effizientere Suche zu ermöglichen.
Für jedes Bit des Wertebereiches (160 bit Bezeichner) werden Informationen über andere Knoten gespeichert (k-buckets). Somit existieren 160 Listen mit jeweils maximal
k Einträgen. Da höherwertige Bits eine größere Anzahl an Knoten repräsentieren, werden mehr Informationen über numerisch naheliegende Knoten gespeichert, als über
Entferntere.
Bei einer Suchanfrage wird ein Schlüssel berechnet, der die Lage des Knotens beschreibt, an dem sich die gesuchte Ressource befindet. Die Berechnung dieser Entfernung liegt der XOR-Metrik zugrunde. Zwei Werte werden bitweise verglichen, so
dass bei Übereinstimmung eine 0 und bei Unterscheidung eine 1 für das jeweilige Bit
ensteht. Der entstandene Wert ergibt die numerische Differenz und ist für die Weiterleitung entscheidend. Dieser Vorgang wiederholt sich solange, bis der Zielknoten
erreicht ist.
Durch die Speicherung der k-buckets pro Bit entsteht ein logarithmischer Aufwand
für das Suchen und das Einfügen von Knoten. Der Nachrichtenversand geschieht
asynchron, so dass mehrere Knoten gleichzeitig kontaktiert werden können und die
Geschwindigkeit nur bedingt von der Verarbeitungsgeschwindigkeit einzelner abhängig ist.
Der Kademlia-Algorithmus wird in populären Produkten wie EDonkey2000 und EMule zur serverlosen Suche verwendet[Mon05]. Diese Produkte bieten die serverlose Kademliasuche und eine server-basierte Suche parallel an.
3.3.7. YAPPERS - Yet Another Peer-to-PEeR System
Das Verfahren von Ganesan u.a. [GSGM03] verknüpft die Ansätze des Netzwerkflutens und der verteilten Hashtabellen. Jeder Knoten besitzt eine verteilte Hashtabelle,
wie in Abschnitt 3.3.1 vorgestellt, die die Nachbarschaftsinformationen bis zu einem
festen Grad enthält. Über diese DHT‘s wird die Suche auf das gesamte Netzwerk
angewandt. Der gesamte Wertebereich ist in eine feste Anzahl sog. buckets eingeteilt.
Buckets können Kategorien, Eigenschaften etc. darstellen, die von Knoten verwaltet
werden und Anfragen bzgl. dieser zulassen.
Um das Fluten des Netzwerkes zu unterdrücken, werden Nachbarschaftsinformationen gepflegt. Nachbarn, die innerhalb von h Knotensprüngen (hops) erreicht werden
können, werden in einer Direkten Nachbarschaft zusammengefasst, Knoten mit einem
49
3. Such- und Routingverfahren
Abstand von 2 ∗ h + 1 zu einer Erweiterten Nachbarschaft. Alle Knoten mit einem
Radius von h + 1 werden Grenze genannt. Anfragen, die nicht die direkten Nachbarn
betreffen, werden an eine feste Anzahl an Grenzknoten weitergeleitet, die wiederum
ihre direkten Nachbarschaftsknoten kennen. Die erweiterte Nachbarschaft umfasst
also die direkte Nachbarschaft, die Grenzknoten und dessen direkte Nachbarschaft.
3.3.8. CANDy - (Content Addressable Network DirectorY
Suchverfahren, die allgemein auf verteilten Hashtabellen (DHT) aufbauen, zeichnen
sich durch eine gute Suchperformanz aus, die jedoch nur möglich ist, wenn die Suchanfrage eindeutig spezifiziert wird. Ressourcen und Knoten werden durch Hashfunktionen in Form von numerischen Bezeichnern repräsentiert und können daher nicht für
ungenaue Anfragen herangezogen werden.
Bauer u.a. stellen in [BHPW04] ein Rahmenwerk vor, das die Effizienz der DHT‘s
und die Möglichkeit ungenauer Anfragen verbindet. Ressourcen und Knoten werden,
wie in bisherigen Verfahren, durch eine Hashfunktion abgebildet und entsprechend
zugeordnet. Eigenschaften, die den Ressourcen zugrunde liegen, werden zusätzlich
in Name-Wert Paaren gespeichert, indem eine zweite Hashfunktion den Namen und
zugehörigen Wert auf eine propID abbildet. Eine zusätzliche Datenstruktur regelt
die Beziehung zwischen Name und Wert. So kann ein Name vom Datentyp ’String’
sein und durch eine Menge von Worten beschrieben werden [BHPW04]. Der durch
die zweite Hashfunktion generierte Wert bezeichnet einen Knoten, der alle entsprechenden Bezeichner der Ressourcen kennt, die der Eigenschaft genügen. Über einen
weiteren Schritt wird dann der Knoten mit der gesuchten Ressource gesucht.
Dieses zweistufige Verfahren kann die Anzahl an gefundenen Ressourcen stark erhöhen, falls kaum charakteristische Eigenschaften oder eine Vielzahl an Eigenschaften
untersucht werden. Falls für jede Eigenschaft eine separate Anfrage erstellt wird, können keine logischen Operatoren auf diese Eigenschaften angewandt werden und die
Treffermenge eingrenzen. Um diesen Schwächen entgegenzuwirken, wird die gesamte
Anfrage bei der Suche nach den einzelnen Eigenschaften mitgeschickt. Jeder Knoten,
der ein Teilergebnis (Eigenschaft) erzielt, kann dieses mit den bisherigen Ergebnissen
über logische Mengenoperatoren einschränken. Das zwischenzeitliche Resultat wird
bei weiteren Teilanfragen weitergereicht und erst nach Abschluss der letzten Anfrage
an den ursprünglichen Sender gesandt.
3.3.9. Kelips
In Kelips [GBL+ 03] werden Knoten und Ressourcen durch eine Hashfunktion abgebildet und in Gruppen unterteilt. Die Anzahl der k Gruppen (Affinitätsgruppen) ist
50
3.3. Verfahren der 2.ten Generation
√
proportional mit der Anzahl n bestehender Knoten ( n). Jede Gruppe enthält eine
gleiche Anzahl an Knoten wegen einer konsistenten Hashverteilung.
Ein Knoten besitzt Information über seine Nachbarschaft in Form eines sog. Softstate.
Ein Softstate besteht aus einer Gruppensicht, einer Kontaktliste und indexierten
Daten (Datentupel), die im Folgenden kurz vorgestellt werden:
Gruppensicht Über eine Teilmenge der Knoten, die der eigenen Gruppe angehören,
werden Informationen wie die Round-Trip-Time (RTT)(siehe Abschnitt 3.3.1)
und die Onlinedauer gespeichert.
Kontaktliste Eine feste Anzahl an Knoteninformationen fremder Gruppen ermöglicht die Kontaktierung dieser.
Datentupel Die Datentupel bestehen aus (gruppenübergreifenden) Knotenadressen
und angehörigen Ressourcen, die bei zwischenzeitlicher Kenntnisnahme indexiert werden.
Jeder Eintrag wird periodisch auf Aktualität überprüft. Das Ergebnis wird mittels
eines epidemischen Verbreitungsprotokolls [RMH98] verbreitet, wobei die Round-TripTime als Indikator für die Verbreitung herangezogen wird. Naheliegende Knoten werden bevorzugt, so dass diese weniger Updateanfragen stellen müssen und Netzwerklast vermindern.
Replikate bestehender Ressourcen können die Verfügbarkeit erhöhen, dürfen jedoch
nur in der ursprünglichen Gruppe gespeichert werden.
Die Suche nach einer Ressource mit gegebenen Namen geschieht mit der Zeit- und
Nachrichtenkomplexität O(1). Es wird der Hashwert des gegebenen Namens und somit der Gruppe ermittelt. Der bekannte Knoten dieser Gruppe mit geringster Entfernung (RTT) wird angefragt und liefert über seinen Softstate (Datentupel) die Adresse
eines Knotens mit der gesuchten Ressource.
3.3.10. SkipNet
SkipNet ist ein skalierbares Overlay-Netzwerk, das besonderen Wert auf die Lokalitätseigenschaften der Daten legt. Ressourcen können auf vordefinierten Knoten, wie
auch zur Lastverteilung mittels Hashfunktionen, verteilt gespeichert werden. Statt
das Overlay-Netzwerk mittels DHT‘s zu strukturieren, verfolgen die Autoren von
[HJS+ 03] den Ansatz sog. Skip-Listen [Pug90]. Nach [HJS+ 03] ist eine Skip-Liste
eine sortierte verbundene Liste, in der einige Knoten um Verweise auf entferntere
Knoten erweitert werden.
Die SkipNet-Architektur besteht aus mehreren doppelt verketteten Ringen, die hierarchisch unterteilt werden können. Die Wurzel (Ebene L=0) stellt einen Ring mit
51
3. Such- und Routingverfahren
allen Knoten dar. Nachbarn der Listen der Ebenen L=i haben eine ursprüngliche
Entfernung in der Wurzelliste von 2i . Somit besteht jede Ebene i auch aus genau
2i Ringen. Jeder Knoten verwaltet eine Routingtabelle bezüglich der n bestehenden
Knoten mit 2 ∗ log(n) Einträgen. Diese Tabelle besteht aus allen direkten Nachbarn
aller Ebenen oder anders aus allen linken und rechten Knoten, die 2i Sprünge entfernt sind (i ∈ L). Abbildung 3.9 verdeutlicht den Zusammenhang der Ebenen und
Nachbarschaftbeziehungen. Jeder Knoten erhält neben seinem Namen eine zufällige
binäre eindeutige Darstellung, die in der Abbildung als Ringbezeichner erscheint. Zusätzlich kann der Knoten mit einem eindeutigen Namen versehen werden, wie einer
URL (z.B. name.domain.net). Hiermit existieren zwei Adressräume, der numerische
und Domänen spezifische Adressraum.
Ringbezeichner
000
A
001
B
A
00
010
C
E
D
C
100
011
01
E
G
B
101
F
10
A
G
H
C
111
110
L=3
H
11
D
Ebene
F
L=2
D
E
0
G
B
A
B
C
G
L=1
F
D
E
Wurzel
F
H
1
L=0
H
Bild 3.9.. Hierarchische Darstellung der Routinginformationen jedes im Netzwerk
bestehenden Knotens. Knoten C (dunkelgrau) mit diesen Informationen (hellgrau)
sind hervorgehoben. Ringe sind binär bezeichnet.
Die Suche nach einer bestimmten Ressource kann auf zwei unterschiedlichen Wegen
geschehen, über den binären Bezeichner und über den Namen eines Knotens. Beide
Varianten können nach obigen Prinzip hierarchisch durchsucht werden und benötigen
O(log(n)) Schritte.
Die in den DHT-Verfahren vorgestellten Hashfunktionen garantieren eine Lastverteilung der Knoten in dem Adressraum. Diese Lastverteilung kann in SkipNet innerhalb
von Domänen erreicht werden, indem eine Hashfunktion auf alle Ressourcen innerhalb dieser Domäne angewandt wird. So werden die Lokalitätsinformationen bis zum
Erreichen dieser Domäne bewahrt; innerhalb dieser werden die Daten durch Anwendung einer Hashfunktion auf alle Knoten gleichverteilt.
52
3.4. Verfahren der 3.ten Generation
3.4. Verfahren der 3.ten Generation
Schwerpunkte dieser Generation sind die Fehlertoleranz und Sicherheit. Da es sich
hierbei um ein Randgebiet der Untersuchungen dieser Arbeit handelt, werden lediglich die Ansätze zweier Verfahren vorgestellt.
3.4.1. Viceroy
Viceroy stellt ein P2P-Netzwerk dar, das von Dahlia Malkhi, Moni Naor und David
Ratajczak im Jahre 2001 entwickelt wurde und auf einem Butterfly-Graphen beruht
[MNR02]. Es zeichnet sich durch einen konstanten Ein- und Ausgrad und einen logarithmischen Durchmesser aus. Der Eingrad misst die Verweise auf den Knoten selbst
und der Ausgrad die Verweise auf andere Knoten. Peers werden auf Knoten eines
sogenannten Butterfly-Graphen gelegt.
Der Aufbau von Viceroy ist relativ komplex und wird daher nur im Ansatz beschrieben. Ein in das Netzwerk eintretender Peer erhält eine zufällige Position innerhalb der
bestehenden Ebenen. Alle Peers befinden sich in einem doppelt verketteten Ring, der
den Zusammenhalt gewährt, jedoch nicht zur Suche verwendet wird. Weiterhin besteht pro Ebene eine doppelt verkettete Liste, die die Position im Butterfly-Graphen
bestimmt. Abschließend verweist jeder Peer auf zwei Vorgänger und zwei Nachfolger. Durch das Prinzip der mehrfachen Auswahl einer zufälligen Position auf dem
Butterfly-Graphen wird die Position übernommen, von der aus der linke und rechte
Nachbar annähernd gleich weit entfernt sind.
3.4.2. Distance Halving
Distance Halving [NW03] wurde von Moni Naor (Viceroy) und Udi Wieder 2003 als
Nachfolger von Viceroy vorgeschlagen. Es ist weniger komplex als Viceroy und besitzt
ähnliche Eigenschaften. Der Ein- und Ausgrad ist nahezu konstant, der Durchmesser
und die Suche logarithmisch. Ein kontinuierlicher Graph wird diskretisiert, wobei die
Distanz zweier Knoten hierbei halbiert wird. Auf die Beschreibung der Diskretisierung
wird an dieser Stelle verzichtet, da die zum Verständnis benötigten mathematischen
Grundlagen einer zusätzlichen Erklärung bedürfen.
3.5. Überblick und Auswahl
Die zur Suche sowie zur Weiterleitung von Nachrichten soeben dargestellten Verfahren zeigen neben einer grundsätzlich ähnlichen Intention bezüglich der Performanzbemühungen, starke Unterschiede in ihrer Gestaltung auf. Ein Ziel der in den nächsten Abschnitten angehenden Beschreibung eines Simulators, ist die Schaffung einer
53
3. Such- und Routingverfahren
Grundlage, mittels derer ein Großteil aller beschriebenen Verfahren simuliert werden
kann. Auch angesichts der Komplexität einiger Verfahren kann lediglich diese Basis
geschaffen werden.
Signifikante Unterschiede, die in einer Simulation zu berücksichtigen sind, werden im
anfolgenden Abschnitt aufgezeigt. In der Literatur [LCP+ 04; TR03b; Tso03; RV03]
werden unterschiedliche Bemühungen eingegangen, eine Kategorisierung von Suchund Routingverfahren zu schaffen. Diese Kategorisierungsbemühungen sind bereits
teilweise der Strukturierung des vorangegegangenen Kapitels zu entnehmen, werden
jedoch zusammenfassend noch einmal gegenübergestellt. Das Kapitel endet mit der
Auswahl der in dieser Arbeit zu untersuchenden Verfahren.
3.5.1. Überblick
Der nun folgende grafische Überblick gibt einen Einblick in die zeitliche Entwicklung sowie der Abhängigkeiten der Suchverfahren untereinander. Abbildung 3.10 charakterisiert die Verfahren anhand ihrer ersten Veröffentlichung (horizontal) und der
eingestuften Generation (vertikal). Beziehungen repräsentieren direkte Bezüge, die
in Form einer Weiterentwicklung zu verstehen sind. Weitere indirekte Bezüge sind
zwecks Überschaubarkeit ausgelassen worden.
Viceroy
Kademlia
brocade
Tapestry
Plaxton
Pastry
AGILE SHARK
Kelips
Broose
YAPPERS
SkipNet
CAN
pSearch
Generationen
eCAN
CANDy
miChord
Gummadi
Hieras
Coral
Symphony
Mizrak
Chord
FreeNet
..
1999
Koorde
Random-Walks
DLRP
Local-Indices
Routing-Indices
Fasttrack
Gnutella
1997
Distance Halving
2000
C-BFS
2001
TaChord
Dabek
D-BFS
Ultrapeer/
GUESS
M-BFS
Gia
I-BFS
APS
2002
2003
SUPS
AGNO
2004
2005
Bild 3.10.. Zeitlicher Überblick über die Entstehung der beschriebenen Suchverfahren. Die vertikale Achse zeigt hierbei den Verlauf der Generationen auf. Ursprünge
der Verfahren sind durch Pfeile gekennzeichnet.
54
3.5. Überblick und Auswahl
Um eine spätere Auswahl an zu simulierenden Suchverfahren zu vereinfachen, sind in
der Tabelle 3.1 speziell darauf ausgerichtete Kriterien veranschaulicht, die weiterhin
als Überblick dieses Kapitels dienen. Alle beschriebenen Verfahren lassen sich grob
anhand einiger ausgewählter Eigenschaften charakterisieren. Die Charakterisierung
geschieht teilweise textuell wie auch durch die Verwendung des -Symbols. Zweitere
stellt den Grad der Ausprägung der Eigenschaft dar. Es werden ein bis drei Symbole
hierbei verwendet. Es bestehen häufig Abhängigkeiten zwischen der Komplexität und
der Performanz eines Verfahrens, so dass diese Eigenschaften zusammenfassend zu
betrachten sind. Verweise auf Beschreibungen der Verfahren deuten darauf hin, dass
Erweiterungen existieren, die unterschiedliche Eigenschaften besitzen und somit nicht
einzustufen sind.
In der Tabelle 3.1 wurden folgende Eigenschaften mitaufgenommen:
Architekturstil /Struktur Die Unterscheidung anhand eines Architekturstiles wird
an zwei Kriterien vorgenommen. So werden die in einer Architektur verwendeten Elementtypen zusammenfassend betrachtet (P2P, Super-Peer) und die
topologische Struktur beschrieben. Weitere Eigenschaften eines Architekturstiles werden ausgelassen.
Suchprinzip Das grundlegende Prinzip der Weiterleitung von Nachrichten eines Suchverfahrens wird als Suchprinzip aufgefasst. Aufgrund der jeweiligen spezifischen
Erweiterungen in den Suchverfahren, lässt sich keine detaillierte und übersichtliche Einordnung finden.
Komplexität Verfahren unterscheiden sich in ihrer algorithmischen Komplexität. Dieses Kriterium dient somit als Kriterium, mit welchem Aufwand ein Verfahren
umgesetzt werden kann.
Performanz Die Ziele vieler Verfahren variieren, so dass die Performanz der Verfahren unter Berücksichtung der Ziele zu untersuchen ist. Ziele können hierbei
eine minimierte aggregierte sowie individuelle Netzwerklast, die Trefferquote
von Suchanfragen wie auch die Unterstützung ungenauer Anfragen sein. Die
hier gewählte Einstufung umfasst diese Kriterien. Eine nähere Betrachtung im
Einzelfall ist bei der Auswahl unumgänglich.
55
3. Such- und Routingverfahren
Verfahren/
Architekturstil
SuchKom- Performanz
Algorithmen
Struktur
prinzip
plexität
Gnutella
P2P
zufällig
Fluten
M-BFS
P2P
zufällig
Fluten
I-BFS
P2P
zufällig
Fluten
D-BFS
P2P
zufällig
Fluten
C-BFS
P2P
zufällig
Fluten
Ultrapeer
SP
zufällig
Fluten
GUESS
SP
zufällig
Fluten
Gia
P2P
zufällig
Fluten
3.2.1
3.2.1
FastTrack
SP
zufällig
Fluten
Freenet
P2P
zufällig
Fluten
Random Walks
P2P
zufällig
Fluten
APS
P2P
zufällig
Fluten
3.2.4
3.2.4
Local Indices
P2P
zufällig
Index
Routing Index
P2P
zufällig
Index
3.2.6
3.2.6
DLRP
P2P
zufällig
Fluten
SUPS
SP
zufällig
Fluten
Chord
P2P
Ring
DHT
Koorde
P2P
Ring
DHT
miCHord
P2P
Ring
DHT
TaChord
SP
Ring
DHT
Mizrak
SP
Ring
DHT
Symphonie
P2P
Ring
DHT
Coral
P2P
Ring
DHT
Hieras
P2P
Ring
DHT
CAN
P2P
multi-dim
DHT
eCAN
P2P
multi-dim
DHT
pSearch
P2P
multi-dim
DHT
Tapestry
P2P
Gitter
DHT
brocade
P2P
Gitter
DHT
Pastry
P2P
Gitter
DHT
AGILE
P2P
Hierarchisch
DHT
SHARK
P2P
Hierarchisch
DHT
Kademlia
P2P,SP
XOR
DHT
YAPPERS
P2P
zufällig
DHT, Fluten
CANDy
P2P
zufällig
DHT
Kelips
P2P
Gruppen
DHT
SkipNet
P2P
Listen
DHT
Viceroy
P2P
Butterfly, Ring
DHT
Distance Halving
P2P
DH-Graph
DHT
Tabelle 3.1.. Einordnung der Suchverfahren anhand von Architekturstil, Suchgrundsatz, Komplexität und Performanz.
56
3.5. Überblick und Auswahl
3.5.2. Auswahl der zu simulierenden Verfahren
Die Simulation von Suchverfahren innerhalb dieser Arbeit stellt nur einen Teilbereich
dar. Sie veranschaulicht die Nutzung des entworfenen Simulators. Aufgrund der Komplexität einiger Verfahren wird nun eine Auswahl getroffen. Es werden zwei Verfahren
ausgewählt, die starke Unterschiede aufweisen.
Als erstes Verfahren wird ein einfaches blindes Suchverfahren der ersten Generation
simuliert, das unabhängig von einer Topologie eingesetzt werden kann und ungenaue
Suchanfragen zulässt. Das in Abschnitt 3.2.3 vorgestellte Random-Walks-Verfahren
erfüllt diese Eigenschaften.
Die zweite Wahl fällt auf ein strukturiertes DHT-Suchverfahren der zweiten Generation. Der Chord-basierte Ansatz von Mizrak et. al. (Abschnitt 3.3.1) erscheint als
geeignet, um ein effizienten Suchalgorithmus für Super-Peer-Architekturen zu implementieren.
Die separate Simulation sowie Kombination beider Verfahren wird in Kapitel 7 in
Form von Experimenten beschrieben. Die Kombination soll Suchanfragen mit ungenauen Kriterien erfüllen, die in bisherigen DHT-Verfahren ausgeschlossen wurde.
57
4. Anforderungsdefinition
Die Anforderungsdefinition umfasst neben einer einführenden Beschreibung der Ausgangssituation eine Charakterisierung der zu simulierenden Elementtypen in einer
Rollenanalyse sowie alle gestellten Anforderungen. Auf die Beschreibung von Anwendungsfällen wird verzichtet, da keine Akteure innerhalb der Simulation auftreten.
Diese werden zusammenfassend als textuelle Sucheingabe formuliert.
4.1. Ausgangssituation
Kommunikation ist die Grundlage neuer Wissensaquisitation. Gespräche führen zu
einem Wissensaustausch und ermöglichen somit eine Weiterentwicklung der teilnehmenden Partner. Wissen, das in Form von Informationen angeboten wird, kann jedoch nur über vorhandene Kommunikationsstrukturen weitergegeben werden. Diese
Kommunikationsstrukturen können in unterschiedlichen Formen auftreten, die sich
in dem Grad der Strukturiertheit unterscheiden lassen. In dieser Arbeit soll lediglich
eine dezentrale Struktur untersucht werden. Die Akteure sind gleichberechtigt und
nur während ihrer Anwesenheit ansprechbar.
Jeder Informationsträger ist für die Bereitstellung sowie ’Wartung’ seiner Informationen selbst zuständig. Verbindungen untereinander existieren über unterschiedlichste
Beziehungen. Wie in der Realität der menschlichen Kommunikation können Teilinformationen vielen Quellen entstammen, die häufig in einer bestimmten, teils transitiven,
Relation zur Informationsquelle stehen.
Eine technische Umsetzung dieser Strukturen kann durch eine P2P-Architektur entstehen, in der alle Teilnehmer gleichberechtigt sind und Beziehungen zueinander eingehen können. Peers können Teilinformationen als Metainformationen enthalten und
somit eine indirekte Kommunikation ermöglichen.
Die Suche nach Informationen ist eine notwendige Voraussetzung sowohl zum Wissenserwerb als auch zur Wissenserweiterung und ist daher von entscheidender Bedeutung.
Für eine P2P-Architektur wurden bisher viele Ansätze für mögliche Kommunikationswege und -strukturen entworfen, die unterschiedliche Ziele verfolgen. Um diese
Ansätze miteinander vergleichen zu können, muss eine Basis geschaffen werden, mittels derer ein Vergleich ermöglicht wird. Viele bisherige Simulatoren unterstützen nur
einen Teil der bestehenden Suchverfahren oder sind zu generisch, so dass der Aufwand,
diese zu testen, zu groß ist. Der Zwiespalt zwischen angestrebter Allgemeingültigkeit
58
4.2. Rollenanalyse
und ausreichendem Detaillierungsgrad ist jedoch so groß, dass Einschränkungen hinsichtlich einiger dieser gegensätzlichen Ziele getroffen werden müssen. Eine Einschränkung wird an dieser Stelle im Hinblick auf die Dynamik getroffen, so dass nur ein
fester Zustand des P2P-Systems untersucht wird. Somit entfallen viele Aspekte, die
von anderen Simulatoren ebenfalls modelliert werden müssen. Hierzu zählt das Fehlverhalten, das Ein- und Austreten von Teilnehmern, das sich auf die Verfügbarkeit
der Informationen auswirkt.
Dieser nun vorhandene temporäre Zustand des zu untersuchenden Systems gewährleistet eine vereinfachte Evaluation von Suchverfahren und soll in allen weiteren Beschreibungen als Annahme dienen.
4.2. Rollenanalyse
Die Simulation eines P2P-Netzwerkes wie auch die der organisations-orientierten
Ebene umfasst unterschiedliche Elementtypen, die durch einen Architekturstil definiert werden. Der virtuellen Ebene liegt eine P2P-Architektur oder ein Super-PeerArchitektur zugrunde, die folgende Elementtypen definiert.
Cluster-Peers pflegen eine Nachbarschaft mit übergeordneten Super-Peers. Sie bieten Informationen zum Austausch an(häufig in Form von Ressourcen). Während ihres Daseins können weitergeleitete Nachrichten gespeichert werden, um
spätere Nachrichten effizienter und zielgerichteter weiterzuleiten.
Super-Peers stellen eine besondere Form von Peers dar. Neben den beschrieben Eigenschaften können sie zusätzlich Metadaten über Cluster-Peers speichern. Eine
Nachbarschaft wird zu weiteren Super-Peers eingegangen. Weiterhin besitzen
sie eine Beziehung zu bei ihnen registrierten Cluster-Peers.
Die organisatorische Ebene kann als Anwendungsebene oder semantisches domänenspezifisches Overlay angesehen werden, das sich der virtuellen Ebene als
Kommunikationsplattform bedient. Innerhalb dieser Ebene existieren vier hierarchisch gruppierte Elementtypen, die sich durch nicht-funktionale Eigenschaften wie Verfügbarkeit und Rechenkapazität unterscheiden. Es existieren in der
betrachteten Domäne Organisationen, Projekte, Gruppen und Mitglieder (siehe Abschnitt 2.3). Weitere Domänen werden nicht betrachtet, können jedoch
analog modelliert werden.
59
4. Anforderungsdefinition
4.3. Funktionale Anforderungen
Der Schwerpunkt der zu errichtenden Funktionalität liegt auf der einfachen Entwicklung neuer Suchverfahren. In diesem Zusammenhang sind einige Anforderungen entstanden, die eine weitere Unterstützung während der Entwicklung bieten.
Topologien sowie die element-spezifischen Daten drücken einen temporären Zustand
des Systems aus. Zur Evaluation unterschiedlicher Zustände muss eine Variation
der Größen und der Daten einer Topologie als erneute Eingabe unterstützt
werden.
Suchanfragen unterschiedlicher Komplexität sollen unterstützt werden. Neben eindeutigen sollen daher auch mehrdeutige Suchanfragen als Eingabe verarbeitet
werden.
Simulationsebenen Eine separate Simulation des P2P-Overlays und des domänen
spezifischen Overlays wie auch deren Verknüpfung mittels geeigneter MappingAlgorithmen muss gewährleistet werden.
Suchverfahren sollen möglichst einfach integriert werden. Integrations- wie auch
funktionale Hürden sollen hiermit vermieden werden. Die Basisfunktionalität
der Verfahren soll durch wenige einfache Schnittstellen schnell umzusetzen sein.
Darstellungen der Ergebnisse sollen während der Ausführung wie auch zusammenfassend nach dieser grafisch veranschaulicht werden. Weiterhin ist für den Konsolenbetrieb eine textuelle Auswertung vorgesehen, die dem Servereinsatz dient.
Weiterverarbeitung der gelieferten Rohdaten erhöht die Nutzbarkeit. Die Ausgabe
dieser Daten soll einem standardisierten Format entsprechen, dass zur späteren
Tabellenkalkulation genutzt werden kann.
4.4. Technische Anforderungen
Der zu erstellende Simulator soll folgenden technischen Anforderungen genügen:
Zuverlässigkeit Die Simulation soll bei Verwendung korrekter Eingabedaten reibungslos ablaufen.
Benutzbarkeit/Ergonomie Ein möglichst intuitiver Umgang soll durch eine geeignete Darstellung der Konfigurationsmöglichkeiten innerhalb einer grafischen Benutzungsoberfläche ermöglicht werden. Die Konsistenz zwischen der grafischen
Darstellung und den entsprechenden Konfigurationsdateien muss gewährleistet
sein, um Fehlinterpretationen auszuschließen.
60
4.5. Konzeptionelle Anforderungen
Robustheit Einstellungen bezüglich eines Experimentes, die zu einem Fehlverhalten
führen, sollen möglichst überprüft und bei falscher Eingabe vor dem Start einer
Simulation dem Benutzer angezeigt werden. Die Einstiegshürde in die Simulation von Suchverfahren sinkt mit Zunahme der Robustheit.
Skalierbarkeit Topologien einer Größenordnung von mehreren tausend Knoten sollen
simuliert werden können. Die Anzahl an gestellten Anfragen muss in einem
variablen Ausmaß ermöglicht werden, so dass sowohl eine einzelne wie auch
eine Vielzahl dieser verarbeitet werden können.
Lizenz Zur späteren Weiterenwicklung soll eine Open-Source-Lizenz gewählt werden.
Gerade im Hinblick auf der Verwendung anderer Bibliotheken, die genutzt oder
erweitert werden, muss auf eine geeignete Lizenz geachtet werden. Der Simulator muss als voll-funktionstüchtige Anwendung die Open-Source-Richtlinien
einhalten.
4.5. Konzeptionelle Anforderungen
Modularität Ein modularer Aufbau des Simulators soll die Wartbarkeit und die Erweiterung vereinfachen. Gerade neu zu entwickelnde Suchverfahren sollen über
feste Schnittstellen leicht integrierbar sein. Allgemeine Voraussetzungen, wie
die Verwendung von Nachrichtenhistorien und Caches sollen die Entwicklung
neuer Verfahren beschleunigen. Das Routing von Nachrichten soll dem Entwickler abgenommen werden. Lediglich notwendige Daten wie der Empfänger sollen
für eine garantierte Auslieferung ausreichen.
Validation und Verifikation kann über geeignete Ausgaben erleichtert werden. Die
manuelle Verfolgung der Prozessgeschehnisse soll anhand dieser Ausgaben ermöglicht werden.
Metriken zur späteren Analyse der Suchverfahren dienen der Vergleichbarkeit dieser.
Die Erarbeitung unterschiedlicher aussagekäftiger Metriken, sowie die Integration in den Simulator, stellen eine Kernaufgabe der Simulation dar. In ihrer
Menge sollen Aussagen über die Effizienz, der Netzwerkauslastung sowie weitere
der abschließenden Auswahl eines Suchverfahrens für organisations-orientierte
Suchverfahren getroffen werden können.
Plattformunabhängigkeit Die Ausführung des Simulators soll nicht auf bestimmte Betriebssysteme beschränkt sein. Die Auswahl einer plattformunabhängigen
Programmiersprache erscheint hierbei sinnvoll. Die weite Verbreitung und Verwendung der Sprache Java innerhalb des Simulationskontextes erscheint als
geeignet, da zusätzlich eine Vielzahl an Visualierungsanwendungen für diese
Sprache bereitstehen.
61
4. Anforderungsdefinition
Standards Angesichts der Existenz diverser Standards für Topologieformate, soll im
Zuge der Wiederverwendbarkeit ein bestehendes Format zur Eingabe verwendet
werden.
4.6. Strukturelle Anforderungen
In der Abbildung 4.1 sind die wichtigsten Konzepte des Simulators dargelegt. Die
Verwendung des Simulators soll weitestgehend von strukturellen Gegebenheiten der
Topologie wie auch von dem Verhalten der zu simulierenden Elemente abstrahiert
werden. Die Kernaufgabe des Simulators besteht in der Simulation gewählter Metriken zur Weiterleitung von Nachrichten. Die der Weiterleitung innewohnende Logik
soll gekapselt werden, so dass ein austauschbares Verhalten in Form von zugeführten Suchverfahren ermöglicht wird. Beziehungen der Elemente untereinander werden
ebenso gekapselt und allein durch die zugeführte Topologie bestimmt. Der Simulationsprozess wird initiiert bzw. getrieben von der Aussendung neuer Suchanfragen.
Initiatoren der Suchanfragen können in diesem Zusammenhang als Akteure betrachtet werden. Die Darstellung als Akteur dient jedoch lediglich dem Verständnis des
Prozessvorganges, da keine direkten Akteure vorhanden sind.
Simulationselemente erscheinen in Form der in Abschnitt 4.2 angesprochenen Rollen.
Grundlegende Funktionalität soll zentral definiert werden, so dass eine Erweiterung
auf andere Anwendungskontexte vereinfacht wird.
Gruppe
Mitglied
Projekt
1
Organisation
Simulationselement
1..* 1..*
Super-Peer
Cluster-Peer
Topologie
sendet Nachrichten
initiert Suche
definieren Verhalten
definiert Struktur
1
1..*
1..*
1
1
Suchender
Suchverfahren
Bild 4.1.. Fachliches Klassenmodell des Simulators. Simulationselemente treten in
Form der Elementtypen eines Architekturstils auf. Die Struktur der Topologie, sowie
das Verhalten und die initialen Suchanfragen werden ausgelagert und dem Simulationselement zugeführt.
62
5. Beschreibung der Simulation
Das Kapitel Simulation stellt die Einführung der relevanten Begrifflichkeiten und
Simulationsarten innerhalb einer Simulation dar. Es wird das Vorgehensmodell während der Studie beschrieben, sowie die Ablaufgestaltung und die Ereignisbehandlung.
Die Modellierung der Eingaben und Ausgaben schließt daraufhin die Beschreibung
der Simulation ab.
5.1. Einführung
Um das Verhalten real existierender Systeme zu untersuchen, gibt es neben der Simulation dieser ebenfalls die Möglichkeit einer direkten Implementierung. Nach Law
und Kelton [LK99] sind die meisten realen Systeme zu komplex, als dass ein realistisches Modell analytisch bewertet werden kann. Außerdem begründet sich die in dieser
Arbeit getätigte Simulation darin, dass ein derartiges System nicht real existiert und
die Erstellung angesichts des Umfanges nicht in vorgegebener Zeit realisierbar wäre.
5.1.1. Grundlegendes
Eine Simulation kann als die Repräsentation eines (Teil-)Systems in realistischer Form
beschrieben werden. Sie stellt eine Imitation von Abläufen eines realen Vorganges bzw.
Systems dar [Ban98]. Die Qualität dieser Simulation hängt dabei von der Kenntnis
der relevanten Eigenschaften dieses Systems und der realitätsgetreuen Modellierung
ab.
In dem Bereich der Simulation existieren einige wichtige Begriffe, die im Folgenden
kurz beschrieben werden. Ein wesentlicher Begriff stellt hierbei das System dar. Nach
Forrester [Pag91] besteht ein System aus einer Menge an Entitäten, die in einer Beziehung zueinander stehen und zu einem bestimmten Zweck miteinander interagieren.
Die Entitäten repräsentieren die zu beobachtenden Objekte im System. Attribute
definieren Zustände einer Entität (lokale Attribute) wie auch des Systems (globale
Attribute). Sie beschreiben somit den jeweiligen Zustand. Ein Modell stellt ein reales System in einer abstrakten, meist vereinfachten Art dar. Es werden analytische
Modelle und Simulationsmodelle unterschieden. Analytische Modelle bestehen in der
Regel aus Differenzialgleichungen zur Abbildung der realen Situation. Sie sind jedoch
63
5. Beschreibung der Simulation
in ihrer Komplexität und ihrer analytischen Lösungsmöglichkeit beschränkt . Simulationsmodelle hingegen ermöglichen die Simulation komplexer Situationen, indem
Zustandsveränderungen beobachtet werden.
Simulationen lassen sich nach [AB05] aus unterschiedlichen Perspektiven betrachten.
Die statische Simulation beschreibt ein System genau zu einem festen Zeitpunkt im
Unterschied zur dynamischen Simulation, die Zeitintervalle bzw. mehrere Zeitpunkte
betrachtet. Eine deterministische Simulation ergibt zu gegebenen Eingaben immer
die gleichen Ausgaben. Die Verarbeitung unterliegt keinen Zufallsvariablen im Gegensatz zur stochastischen Simulation.
Je nach Einflussbereich der beeinflussenden Variablen werden endogene und exogene
Simulationen unterschieden. Exogene Simulationen werden im Vergleich zu seinem
Pendant durch außenstehende Variablen mitbestimmt. Endogene Ereignisse sind von
internen Faktoren abhängig und treten häufig als Konsequenz eines vorherigen Ereignisses auf. Die letzte Sichtweise differenziert das zeitliche Verhalten der Simulationen
und soll näher betrachtet werden.
Zeitpunkte werden entweder diskret oder kontinuierlich betrachtet. Die Menge der Zustandsänderungen sind in der diskreten Simulation endlich begrenzt und somit nur zu
bestimmten diskreten Zeitpunkten möglich. Die kontinuierliche Simulation hingegen
lässt eine unendliche Anzahl an Zustandsveränderungen zu, da Zeitabschnitte unendlich verfeinert werden können. Eine Kombination dieser Sichtweisen für Teilbereiche
der Simulation wird als hybrid bezeichnet.
Es existieren vier unterschiedliche Ansätze zur Modellierung der zeitdiskreten Simulation: der ereignis-, transaktions-, prozess- und aktivitätsorientierte Ansatz. Während bei der ereignis- und transaktionsorientierte Modellierung ”[..]primär die Materialflüsse durch Bedienstationen und die dabei zurückzulegenden Wege betrachtet werden[..]”[Pag91] steht der Bearbeitungsvorgang der einzelnen Bedienstationen bei der prozess- und aktivitätsorientierten Modellierung im Vordergrund. Der
transaktions- und aktivitätsorientierte Ansatz gelten in der Literatur [Pag91] als Alternative mit geringerer Bedeutung und werden daher hier vernachlässigt.
In der ereignisorientierten Simulation betrifft das Eintreten von internen und externen
Ereignissen die Entitäten und verändert deren Zustand. Zu bestimmten Zeitpunkten
werden alle eingetretenen Ereignisse abgehandelt und mit der Simulation fortgefahren. Die Aktivität, also der Vorgang während der Abarbeitung, tritt hierbei in den
Hintergrund. Anders wird bei der prozessorientierten Simulation verfahren. Alle eine
Entität betreffenden Aktionen und Attribute werden in einem Prozess gekapselt, der
unterschiedliche Zustände einnehmen kann. Der Ablauf entspricht dann der Prozessinteraktion mit Hilfe eines Schedulers, der für die Aktivierung sorgt. Der Schwerpunkt
liegt hierbei auf den Aktionen und kann als maschinenorientiert bezeichnet werden
[Pag91]. Weiterhin eignet sich dieser Ansatz für die Modellierung komplexer Vorgänge.
64
5.1. Einführung
Die Entscheidung für die Wahl eines Modellierungsstiles hängt von der Art der natürlichen Abbildung des zu simulierenden Verhaltens ab. Der dieser Arbeit zugrunde
liegende Stil ist ereignis-orientiert und zeit-diskret. Die folgenden Abschnitte erläutern dieses genauer.
5.1.2. Validation und Verifikation
Eine Simulation einer realen Gegebenheit ist nur aussagekräftig, wenn diese in den zu
untersuchenden wie auch beeinflussenden Faktoren übereinstimmt. Eine Validation
dessen ist für die Aussagekraft der Simulation unabdingbar, muss jedoch im Einzelfall
überprüft werden. Diese Überprüfung gilt als stetige Aufgabe während des Entwurfs.
Hilfsmaßnahmen, wie ausreichende Tests, Darstellungs- und Visualisierungsfunktionen können neben einer vorherigen Analyse des realen Ablaufes die Qualität einer
Simulation erhöhen. Garantien über einen realitätsgetreuen Ablauf sind angesichts
der zugrunde liegenden Entscheidung für eine simlative Analyse kaum zu geben. Die
Verifikation während der Entwicklung kann hingegen durch Tests der entsprechenden
Implementierungen ermöglicht werden.
5.1.3. Sichtweisen dieser Simulation
Die vorgenommene Simulation wird anhand der obigen Einführung kurz eingeordnet.
Das Verhalten während der Simulation wird durch das Eingabemodell (siehe 5.3)
wesentlich mitbestimmt. Zum Vergleich verschiedener Suchverfahren wird eine vorliegende Eingabe in Form von festen Topologien der einzelnen Ebenen und vordefinierten Suchanfragen herangezogen. Soweit die einzelnen Suchverfahren determinstisch
arbeiten, erfolgt die Simulation insgesamt determinstisch. Stochastische Eingaben
sind für den Vergleich nicht vorgesehen. Die Zeit wird diskretisiert, da einerseits
eine analytische Darstellung so komplex erscheint und damit nicht in Erwägung gezogen wurde und andererseits relative zeitliche Aussagen zur Bewertung und dem
anschließenden Vorschlag (siehe 8.1) ausreichen. Die Simulation läuft zeitdiskret und
ereignisorientiert. Der Bearbeitungsvorgang in den einzelnen Entitäten ist von geringerem Interesse. Die Simulation des Nachrichtenverkehrs dagegen wird in mehreren
Metriken verwendet und gibt letztendlich die Entscheidung für die Modellierung der
Ereignisse. Hierbei sind exogene Ereignisse durch das Eingabemodell bestimmt. Die
Analyse wird also durch die endogenen Ereignisse bestimmt.
5.1.4. Gliederung der Simulation
Die Simulation umfasst verschiedene Bereiche, die in den folgenden Abschnitten erläutert werden. Begonnen wird mit der Vorstellung des Simulationsmodells. Das dort
65
5. Beschreibung der Simulation
Bild 5.1.. Vorgehensmodell der Simulationsstudie
beschriebene Vorgehensmodell wird mit einer Messmethode kombiniert. Desweiteren
folgt eine Beschreibung des Simulationszyklus und der zu betrachtenden Ereignisse.
Das Ein-/Ausgabemodell im darauffolgenden Abschnitt umfasst die Konfiguration
der Simulation, den Aufbau der Topologien und der Suchanfragen. Den Abschluss
bildet der Ausgabebericht, der zur späteren Analyse dient.
Der Entwurf und die entsprechende Implementation des Simulators werden beschrieben. Hierbei werden der Bezug zum Simulationsmodell verdeutlicht und die verwendeten Konzepte der Softwareentwicklung angesprochen.
Die untersuchten Experimente (im dort genannten Sinne) umfassen neben der Konfiguration die untersuchten Suchverfahren. Hierbei wird auf die in den Abschnitten 3
und 3.5 vorgestellten Suchverfahren eingegangen. Implementierungen dieser werden
ebenfalls behandelt.
Der Abschluss erfolgt in der Analyse der vorgenommenen Experimente.
5.2. Simulationsmodell
Jede Simulationsstudie kann in eine Abfolge unterschiedlicher Schritte eingeteilt werden. Diese Abfolge wird in dem in Abbildung 5.1 dargestellten und an [Ban99] angelehnten Vorgehensmodell beschrieben. Der erste Schritt einer Simulationstudie ist die
Problembeschreibung. Die Problembeschreibung zeigt den Grund für eine Simulation
auf und sorgt für gegenseitiges Verständnis zwischen Problemsteller und Problemlöser. Sie ist in der Anforderungsdefinition (Kapitel 4) zu finden. Nach der Schaffung
66
5.2. Simulationsmodell
dieser Grundlage werden Ziele definiert, die mittels einer Simulation untersucht und
gemessen werden (Abschnitt 5.2.1). Ausgehend von diesen Zielen wird ein konzeptuelles Modell der Realität erstellt. Ein konzeptuelles Modell beschreibt die funktionalen
Zusammenhänge der Komponenten eines Systems untereinander. Dieses Modell wird
unter Berücksichtung der angestrebten Ziele vereinfacht, indem Elemente und Eigenschaften ohne bzw. mit vertretbarem Einfluß auf die Untersuchung der Performanzeigenschaften vernachlässigt werden. Um das Modell ausführen zu können, wird daher
aus dem konzeptuellen Modell ein operatives Modell (Abschnitt 6) erstellt. Die Verifikation sichert die korrekte Überführung, wobei die Validation im Anschluß die Intention der Simulation überprüft, so dass nicht von der ursprünglichen Problemstellung
abgewichen wird. Nach der Erstellung eines operationalen Modells werden Experimente (Abschnitt 7) erstellt, die auf die verschiedenen Eingabeparameter (Abschnitt
5.3) und den zu untersuchenden Zielen beruhen (Abschnitt 5.2.1). Die (wiederholte)
Ausführung der Simulation mit anschließender Analyse (Abschnitt 7.3) erzeugt die
Rohdaten, die im darauffolgenden Schritt zu einem Vergleich aufbereitet werden (Abschnitt 5.3.5). Durch die unterschiedlichen Simulationen der Suchverfahren wird als
abschließendes Ergebnis ein Vorschlag eines geeigneten Verfahrens für die anfängliche
Problemstellung gegeben (Abschnitt 8.1).
5.2.1. Messen nach der GQM-Methode
Ein zielgerichteter Ansatz bei der Verfolgung der gewünschten Resultate ist die GQMMethode. Dieser von Basili u.a. [VRBR94] entwickelte Top-Down-Ansatz stellt ein
allgemeines Vorgehensmodell bei der Messplanung dar, das in dieser Arbeit mit dem
beschriebenen Vorgehensmodell kombiniert wird.
Die Goal-Question-Metric (GQM) Methode leitet zielgerichtet von einem Ausgangsproblem die gewünschten Ziele (Goal) ab, die als konzeptionelle Stufe bezeichnet werden. Die Einhaltung und der Fortschritt der Ziele werden in der operativen Stufe über
Fragen beantwortet (Question). Zur Messung der qualitativen wie auch quantitativen
Ausprägung der untersuchten Veränderungen werden Metriken in der quantitativen
Stufe definiert (Metric). Anhand dieser Metriken werden Antworten auf die gestellten
Fragen gegeben, die letztendlich Rückschluß auf das Erreichen der angestrebten Ziele
zulassen.
Eine Kombination der beiden Verfahren wird daher verwendet, da das eingangs
beschriebene Vorgehensmodell den Aufbau einer allgemeinen Simulationsstudie beschreibt, die durch die GQM-Methode konkretisiert wird. Die Zielfindung beider Verfahren begründet sich in der vorhergehenden Problemstellung. Die Validationsphase
wird in der GQM-Methode durch direkten Rückschluß auf die Beantwortung der Fragen abgebildet. Die erforderliche Analyse geschieht in der GQM-Methode anhand der
gewählten Metriken. Abschließend beeinflusst die Erstellung der Metriken die Erstellung des operationalen Modells, da diese im Entwurf berücksichtigt werden können.
67
5. Beschreibung der Simulation
Die Abbildung 5.2.1 zeigt die Elemente der Messplanung mittels GQM auf. Im Anschluß wird auf die verwendeten Metriken eingegangen.
Bewertung von S uchverfahren
für S uper-P eer-Architekturen
Optimierung des
Nachrichtenverkehrs
durch Kombination einer
semantisch höheren Ebene
Wie hoch is t
die Erfolgs rate?
Wie viele Hops werden
pro Antwort benötigt?
Wie viele Anworten
werden erzielt?
AQR
QS R
Wie hoch is t
die S ys tembelas tung?
AP M
AQR: Ans wer query relation
HP Q
VMS
VME
OMS
OME
VMS : Virtual mes s age count
AP M: Ans wer per mes s age
QS R: Query s ucces s rate
Wie hoch is t
die Einzelbelas tung?
OMS : Organis ational mes s age count
VME: Virtual mes s age count per element
HP Q: Hops per mes s age
OME: Organis ational mes s age count per element
Bild 5.2.. Messplanung nach der GQM-Methode
Die Simulationsstudie basiert auf zwei Zielen. Es sollen Suchverfahren für Super-PeerArchitekturen anhand unterschiedlicher Kriterien verglichen werden. Hierzu muss die
Möglichkeit geschaffen werden, eine maximale Anzahl an Suchverfahren - wie in Abschnitt 3 beschrieben - zu modellieren. Organisatorische Elemente, wie Mitglieder
und Projekte, geben Zusatzinformationen bei der Suche nach Ressourcen, die in bisherigen Suchverfahren nicht genutzt werden. Das zweite Ziel soll die Auswirkungen
der Verwendung dieser Informationen auf bestehenden Suchverfahren darstellen.
In dem mittleren Bereich der Abbildung 5.2.1 sind einige Fragen dargestellt, die
Antworten hinsichtlich der Ziele liefern. Die Fragen beziehen sich auf die nichtfunktionalen Eigenschaften Erfolgsrate, Antwortverhalten und Auslastung der Systemkomponenten.
Der untere Bereich der Abbildung veranschaulicht die verwendeten zeitabhängigen
Metriken. Das Verständnis dieser Metriken wird in den Kapiteln 7 und B vorausgesetzt und daher hier detailliert beschrieben.
68
5.2. Simulationsmodell
AQR Das Verhältnis der gestellten Anfragen zu den ermittelten Antworten. Diese
Metrik stellt alle Anfragen zum einem bestimmten Zeitpunkt den bisherigen
Antworten gegenüber.
QSR Die Erfolgsrate der gestellten Anfragen. Jede mindestens einmal beantwortete Anfrage erhöht die Erfolgsrate, die an den aktuell im System befindlichen
Anfragen gemessen wird. So liefert diese Metrik die Prozentzahl aller bisher
beantworteten Anfragen.
APM Das Verhältnis der erzielten Antworten zu den gestellten Anfragen. Eine Anfrage nach mehrfach vorhandenen Ressourcen kann mehrere Antworten erzielen.
Die Anzahl der ermittelten Antworten wird pro Anfrage gemessen.
HPQ Die Pfadlänge einer erfolgreichen Suche. Eine beantwortete Anfrage kann unterschiedlich viele Zwischenstationen durchlaufen (Hops). Diese Metrik gibt Auskunft über die Dauer einer Antwort.
VMS Die Anzahl virtueller Nachrichten im System. Suchanfragen verursachen eine
unterschiedliche Netzbelastung. Um diese aggregierte Last zu messen, werden
alle im System befindlichen Nachrichten zum aktuellen Zeitpunkt aufaddiert.
VME Die Anzahl virtueller Nachrichten pro Element. Um Engpässe einzelner Simulationselemente festzustellen, wird die individuelle Netzbelastung gemessen.
OMS Die Anzahl organisatorischer Nachrichten im System. Diese Metrik misst die
aggregierte Netzlast des organisatorischen Overlays.
OME Die Anzahl organisatorischer Nachrichten pro Element. Sie wird als individuelle Belastung der organisatoischen Simulationselemente gemessen.
69
5. Beschreibung der Simulation
5.2.2. Simulationszyklus
Der Ablauf der Simulation ist neben einer Initialisierung durch einige Zustände definiert. Insgesamt wird zwischen einer Makro- und einer Mikrosimulationszeit unterschieden. Die Makrosimulationszeit verdeutlicht die reale Zeitabfolge, wohingegen
die Mikrosimulationszeit eine sequentielle Emulation paralleler Vorgänge ermöglicht.
Mikrosimulationsschritte erfolgen somit in Nullzeit, die der Nachbildung paralleler
Vorgänge dienen und keine reale Zeit benötigen .
Die in Abschnitt 5.3 beschriebene Eingabe wird eingangs initialisiert. Der Konfiguration wird die angestrebte Simulationszeit entnommen und zum Starten der
Simulation auf ’0’ gesetzt. Jedes Simulationsmodell besitzt einen sog. Treiber,
der für die Erzeugung von Ereignissen
zum Fortlaufen der Simulation zuständig ist. Der Treiber liegt in Form eines
externen Nachrichtengenerators vor, der
den Eingaben entsprechend Nachrichten
verschickt bzw. in die entsprechenden
Eingangswarteschlangen der zu simulierenden Entitätene einreiht. Falls zur aktuellen Zeit keine Nachricht vorgesehen
ist, wird mit der sequentiellen Verarbeitung der Eingangswarteschlangen aller Entitäten fortgefahren. Gegebenheiten der Nachrichtenparameter wie auch
die Beschaffenheit der Nachbarschaft bestimmen, ob eine Nachricht weitergeleitet wird. Eine Weiterleitung der Nachricht verursacht mögliche ParametereinBild 5.3.. Simulationszyklus
stellungen dieser und die Einlagerung
der modifizierten Nachricht in die Eingangswarteschlange des/der Adressaten. Der
Simulationszyklus wird beendet, indem die Simulationszeit inkrementiert wird. Falls
das Simulationsende erreicht ist terminiert die Simulation. Ansonsten wird mit der
Überprüfung auf externe Ereignisse fortgefahren.
70
5.2. Simulationsmodell
5.2.3. Ereignisbehandlung
Die Ereignisbehandlung drückt in der Simulation die Dynamik der Geschehnisse aus.
Diese entsteht durch die nachrichten-basierte Kommunikation der interagierenden
Entitäten. Jede Entität besitzt daher einen Eingangspuffer für Nachrichten. Der Ausgangspuffer wurde zu Gunsten einer direkten Übertragung ausgelassen. Der allgemeine Fall sieht einen Empfang mit entsprechender Verarbeitung und anschließender
Versendung vor. Lediglich der Treiber der Simulation empfängt keine Nachrichten,
da sie keine Entität widerspiegelt, sondern ein künstliches Konstrukt ist, das real
nicht existiert. Dieser erzeugt aus einer externen Quelle Nachrichten und stellt sie
den eigentlichen Sendern zu.
Um das Verhalten innerhalb eines Netzwerkes zu simulieren, wird das zugrunde liegende Basisverhalten in Nachrichten gekapselt. Es existieren häufig folgende Nachrichtentypen, um die Kommunikation in einem Netzwerk abzubilden:
ˆ Betreten (join): Ein Knoten verfasst zum Betreten des Netzwerkes eine Nachricht an einen anderen Knoten
ˆ Verlassen (leave): Ein Knoten verlässt das Netzwerk und sendet eine Abschiedsnachricht.
ˆ Aktualisierung (update): Eine Aktualisierung der Nachbarschaft sowie eine Aktualisierung des Datenbestandes werden in Form einer Nachricht versandt.
ˆ Suche (search): Suchanfragen werden innerhalb einer Nachricht formuliert und
versendet.
Um das eigentliche Simulationsziel zu erreichen, sind bei der Simulation einige Kompromisse einzugehen. Ausgegangen wird von einer festen sich nicht ändernden Topologie, statischen Suchanfragen und unveränderbarem Ressourcenbestand. Die Simulation beschränkt sich somit auf die Suche und das Weiterleiten innerhalb eines statischen Netzwerkes. Eine zusätzliche Netzwerkbelastung, die durch die Pflege strukturerhaltender Maßnahmen (viele Update-Nachrichten) entstehen kann, wird in der
Simulation nicht berücksichtigt.
Das in Abbildung 5.4 dargestellte Aktivitätsdiagramm verdeutlicht die Nachrichtenbehandlung der Entitäten. Durch die Übermittlung von Ereignissen in Form von
Nachrichten kann die Simulation leicht um das bisher nicht simulierte Verhalten erweitert werden, indem neue Nachrichtentypen und damit verbundene Operationen
definiert werden.
Die Einlagerung einer Nachricht in den Eingangspuffer einer Entität bewirkt die
Verarbeitung der Nachricht. Hierbei wird jedoch lediglich überprüft, ob die Verarbeitung des Nachrichteninhaltes (hier: Suchangaben) interpretiert und verarbeitet
71
5. Beschreibung der Simulation
werden sollen. Falls der Inhalt interpretiert wird, so werden die Anweisungen verfolgt
(hier: Überprüfung des lokalen Datenbestands auf Übereinstimmung). Bei Übereinstimmung wird eine Antwort generiert und versendet. Falls kein Treffer erzielt wurde,
so kann die Nachricht weitergeleitet oder der Suchprozess beendet werden (z.B. TTL,
HTL).
Bild 5.4.. Nachrichtenbehandlung einer Entität
72
5.3. Ein-/Ausgabemodell
5.3. Ein-/Ausgabemodell
Der entwickelte Simulator benötigt verschiedene Eingangsparameter. Der Entwurf
ist auf die möglichst einfache Wiederverwendung und Anpassung der zu erstellenden
Experimente ausgelegt. Um dies zu gewährleisten, sind neben der Konfiguration des
Simulators ebenfalls die topologischen Strukturen der einzelnen zu simulierenden Ebenen und die den Simulationsprozess treibenden Anfragen extern gehalten. Ohne die
Kenntnis über den Aufbau des Simulators wird somit eine Nutzung und Erstellung
von Experimenten ermöglicht.
In Abbildung 5.5 ist das Ein-/Ausgabemodell des Simulators zu sehen, das die angesprochenden drei Eingangsparameter enthält. Die Ausgabe erfolgt als Bericht des
simulierten Experimentes mit sowohl textueller wie auch grafischer Auswertung anhand der in Abschnitt 5.2.1 vorgestellten Metriken.
Von entscheidender Bedeutung ist die externe Erstellung und Manipulation der Suchverfahren, die die Entwicklung neuer Suchverfahren vereinfacht. Die Entwicklung
dieser Verfahren wird detailliert in Abschnitt 6 dargestellt.
Bild 5.5.. Ein-/Ausgabe Modell des Simulators
Die folgenden vier Abschnitte verdeutlichen den Aufbau der einzelnen Eingangsparameter. Anschließend wird auf die Struktur des Ausgabeberichtes eingegangen.
5.3.1. Konfiguration
In einer Konfigurationsdatei werden alle Einstellungen getätigt, die zum Ablauf einer
Simulation notwendig sind. Sie stellt somit einen bestimmten Zustand des Systems
73
5. Beschreibung der Simulation
dar, von dem aus die Simulation gestartet wird. Unterschiedliche Konfigurationen
können dann als Experiment zusammengefasst werden. Die Reproduzierbarkeit einzelner Konfigurationen wird durch statische Topologien der einzelnen Ebenen mit deren
Verknüpfung untereinander und den ebenfalls statischen Suchanfragen gewährleistet.
Neben diesen Parametern beeinflussen die Angabe der zu simulierenden Ebenen und
die Simulationsdauer die Simulation. Um den angestrebten Vergleich diverser Suchverfahren zu gewährleisten, wird das jeweils zu testende Suchverfahren angegeben.
Einen Einblick in die wesentlichen Konfigurationselemente gibt das Listing 5.1.
Allgemeine Einstellungen zum Experiment (experiment) werden zu Beginn angegeben. Hierzu zählen u.a. die Laufzeit der Simulation, der Trace-Zeitraum und die
Formatierung des Ausgabeberichtes. Zu den speziellen Elementen (model) zählen
Topologie- und Verbindungseinstellungen sowie eine Auswahl der zu betrachtenden
Metriken. Erweiterungen (extensions) können z.B. Einstellung zu Topologiegeneratoren oder Visualisierungskomponenten sein.
Listing 5.1. Konfiguration eines Experimentes
<? xml version = " 1.0 " encoding = " UTF -8 " ? >
2 < simulation xmlns:xsi = " http: // www . w3 . org /2001/ XMLSchema instance " >
3
< experiment name = " Easim1 " >
4
< lifecycle time = " 25 " / >
5
< debug start = " 0 " stop = " 0 " / >
6
< trace start = " 0 " stop = " 5 " / >
7
< output dir = " output " >
8
< styles >
9
< style name = " report " class = " desmoj . core . report
. HTMLReportOutput " / >
10
...
11
</ styles >
12
</ output >
13
</ experiment >
14
< model >
15
< topologies >
16
< topology model = " true " layer = " organisational "
file = " input / topologies / organisational / sample
-5000. xml " / >
17
< topology model = " true " layer = " virtual " file = "
input / topologies / virtual / sample -5000. xml " / >
18
< topology model = " false " layer = " physical " file = "
input / topologies / physical / sample -5000. xml " / >
19
</ topologies >
20
< mappings >
1
74
5.3. Ein-/Ausgabemodell
< mapping layer1 = " organisational " layer2 = " virtual "
class = " easim . layers . mapping .
O r gV i r t M ap p i n g_Default " >
22
< parameters / >
23
</ mapping >
24
...
25
</ mappings >
26
< query file = " input / queries / sample -20000. xml " / >
27
< strategies >
28
< strategy element = " host " class = " easim . strategy .
Ho st Str at egy _Default " >
29
< parameters >
30
< parameter name = " max depth " type = " java . lang
. Integer " value = " 2 " / >
31
< parameter name = " max answer per message "
type = " java . lang . Integer " value = " 1 " / >
32
</ parameters >
33
< description > descr </ description >
34
</ strategy >
35
...
36
</ strategies >
37
< metrics >
38
< metric name = " QUERY_SUCCESS_RATE " value = " true " / >
39
...
40
</ metrics >
41
</ model >
42
< extensions >
43
...
44
</ extensions >
45 </ simulation >
21
5.3.2. Topologie
Komponenten eines Netzwerkes, die untereinander kommunizieren, genügen einer
Struktur, die Aufschluss über die Konnektivität der einzelnen Elemente gibt. Diese Struktur der Verbindungen untereinander wird als Topologie vezeichnet.
Zur Simulation der in 5.2 vorgestellten Ebenen, wird pro Ebene eine eigene Topologie verwendet. Eine allgemeine Topologie kann mit den Basiselementen Knoten und
Kante beschrieben werden. Ein Knoten stellt ein aktiv bzw. passiv kommunikatives
Element des Systems dar. Eine Kante repräsentiert die (un-)gerichtete Verbindung
zweier Knoten, die eine Kommunikation ermöglicht.
75
5. Beschreibung der Simulation
In dem zu erstellenden Simulator werden Topologien verwendet, die neben den elementaren Basiselementen Attribute zur genaueren Spezifizierung dieser Elemente enthalten. Um die Wiederverwendung der erstellten Topologien zu gewährleisten, wird
das XML-Datenformat GraphML [BEH+ 01] verwendet. GraphML unterstützt neben
der reinen Struktur der Graphen ebenfalls anwendungsspezifische Daten, die neben
der wachsenden Popularität als Entscheidungskriterium für die Wahl dieses Formates
gedient haben.
Zur sinnvollen Simulation der einzelnen Ebenen werden realistische Strukturen der
Topologien vorausgesetzt. Da die effiziente und korrekte Erstellung einer InternetTopologie problematisch ist [ZCB96; YJB02], wird auf bestehende Topologie-Generatoren zurückgegriffen, die unterschiedliche Ansätze bei der Erstellung verfolgen. Die
generierten Topologien werden dann in das Graph-Format GraphML übertragen und
mit anwendungsspezifischen Daten erweitert.
Das Listing 5.2 verdeutlicht den Zusammenhang der Strukturinformationen einer
Topologie mit den anwendungsspezifischen Zusatzinformationen. Peers werden als
Knoten (node) mit einer eindeutigen ID repräsentiert. Kanten (edge) verdeutlichen
die strukturelle Verbindung der Knoten untereinander. Die anwendungsspezifischen
Daten, wie Ressourcen, werden den Peers in einem data-Element zugeordnet. Der
Aufbau der Datenelemente wird über das Schlüsselwort key im oberen Bereich des
Listings definiert. Da gerichtete, wie auch ungerichtete Verbindungen existieren können, definiert das Schlüsselwort edgedefault die Richtung der jeweiligen Kanten.
Listing 5.2. Beispieltopologie der virtuellen Ebene
<? xml version = " 1.0 " encoding = " UTF -8 " ? >
2 < graphml xmlns = " http: // graphml . graphdrawing . org / xmlns "
3
xmlns:xsi = " http: // www . w3 . org /2001/ XMLSchema - instance "
xsi:schemaLocation = " http: // graphml . graphdrawing . org
/ xmlns http: // graphml . graphdrawing . org / xmlns /1.0/
graphml . xsd " >
4
< key attr . name = " ressourceName " attr . type = " string " for =
" node " id = " ressource " >
5
< desc > node ressource names </ desc >
6
< default > no default specified </ default >
7
</ key >
8
..
9
< graph edgedefault = " undirected " >
10
< node id = " 0 " >
11
< data key = " type " > superpeer </ data >
12
</ node >
13
< node id = " 0 _0 " >
14
< data key = " type " > clusterpeer </ data >
1
76
5.3. Ein-/Ausgabemodell
< data key = " ressource " > dateiname_npwc ,
dateiname_htjt </ data >
</ node >
< node id = " 0 _1 " >
< data key = " type " > clusterpeer </ data >
< data key = " ressource " > dateiname_grvj ,
dateiname_ltpc , dateiname_nvwf </ data >
</ node >
15
16
17
18
19
20
21
...
< edge source = " 0 " target = " 8 " >
< data key = " delay " > 100 </ data >
</ edge >
< edge source = " 0 " target = " 4 " >
< data key = " delay " > 50 </ data >
</ edge >
22
23
24
25
26
27
28
...
</ graph >
30 </ graphml >
29
Verbindung der Ebenen
Bei kooperierenden Simulationen mehrerer Ebenen, die jeweils unterschiedliche topologische Beziehungen aufweisen, muss eine Verbindungsmöglichkeit gegeben werden.
Diese Verbindungslogik kann ebenfalls als Eingabe betrachtet werden, da sie maßgeblich an dem Simulationsverlauf mitwirkt. Sie wird in Form eines Verweises auf einen
bestehenden Algorithmus in der Konfiguration ausgewählt. Wie in 2.3 beschrieben,
können beispielhaft mehrere organisatorische Elemente auf demselben Peer angeordnet sein, jedoch auch eine 1:1 Beziehung existieren. Um diese Zuweisung variabel zu
halten, ist eine entsprechende Logik als Eingabe in algorithmischer Form vorgesehen.
Topologie-Generatoren
Topologische Strukturen beeinflussen maßgeblich den Verlauf einer Suchanfrage in
einem Netzwerk. Um möglichst realitätsnahe Strukturen in die Untersuchung von
P2P-Architekturen einzubeziehen werden in dieser Arbeit Topoloiegeneratoren verwendet. Weiterhin stellt die Erstellung realer Topologien ein eigenes Forschungsgebiet
dar, auf das in dieser Arbeit nicht eingegangen wird.
In der Literatur werden häufig zwei Generatoren angesprochen. Die stellen verschiedene Modelle bereit und bieten Konvertierungsmöglichkeiten sowie Importmöglichkeiten zu anderen Formaten. Das Geogia Tech Internetwork Topology Model (GT-ITM)
77
5. Beschreibung der Simulation
[ZCB96] setzt sich zum Ziel reale Lokalitäts- und Hierarchiebeziehungen abzubilden
und bildet die Struktur mit nötigen Metainformationen in einem Graphmodell ab.
Zur Erstellung der Strukturen, wie sie im Internet erscheinen, jedoch auch in anderen Domänen existieren, wird ebenfalls häufig der Boston university Representative
Internet Topology gEnerator (BRITE) [MLMB01] verwendet. BRITE verfolgt einen
allgemeineren Ansatz, der eine hohe Anzahl an Strukturen unterstützt. Zusammenfassend sind diese Generatoren sowohl für die Abbildung physikalischer Strukturen
als auch zur Erstellung abstrakterer Ebenen zu verwenden. Tsoumakos und Roussopoulos verwenden in der Analyse von Suchmethoden in P2P-Netzwerken GT-ITM
[Tso03; TR03c] (siehe auch 3.2.4). Chen Dongfeng, Yang Shoubao und Peng Xiaoyan verwenden hingegen in TaChord [DSX04](siehe auch 3.3.1) zur Erstellung eines
hierarchischen Chord-Ringes den Generator BRITE.
In dieser Arbeit entstammen die in dem GraphML-Format beschriebenen Topologien dem GT-ITM Topologiegenerator. Wegen der einfacheren Handhabung und der
leichten Erweiterbarkeit von GraphML wurde eine Konvertierung durchgeführt.
5.3.3. Such- und Routingstrategien
Schwerpunkt dieser Arbeit sind Such- und Routingstrategien. Um eine möglichst
einfache und flexible Simulation dieser zu schaffen, werden Suchstrategien als Eingabe betrachtet. Suchverfahren, wie auch Konfiguration, Topologien und Suchanfragen
werden dem Simulator während der Laufzeit hinzugefügt (siehe Abb. 5.5). Die unterschiedlichen Eingaben können weitestgehend miteinander kombiniert werden, so dass
als Beispiel dieselbe Topologie von unterschiedlichen Suchstrategien genutzt wird.
5.3.4. Suchanfragen
Suchanfragen können dem Simulator vordefiniert als Eingabe bereitgestellt werden.
Da zum Vergleich verschiedener Suchverfahren die Voraussetzungen übereinstimmen
müssen, werden sowohl Suchanfragen wie auch die Topologie des Netzwerkes extern
als Eingabe gehalten.
Die notwendigen Elemente zur Formulierung einer Suche sind die Zeit (time), der
Suchende (initiator, type) und eine Beschreibung der Kriterien, die jetzt erläutert
werden.
time Die Zeit (time) stellt den Beginn einer gestellten Suchanfrage dar. Diese wird
durch die Ablaufsteuerung registriert und bei Eintreten des entsprechenden Simulationsschrittes gestartet.
78
5.3. Ein-/Ausgabemodell
initiator Suchanfragen werden von suchenden Elementen (initiator) initiiert, die
allen Ebenen entstammen können. Das jeweilige Element erhält zur gewählten Zeit
die Nachricht und stellt somit den ersten Empfänger dar.
type Da Elemente unterschiedlicher Ebenen namentlich nicht eindeutig unterscheidbar sein müssen, ist die Angabe eines speziellen Elementtypen (type) anzugeben, der
die Eindeutigkeit ermöglicht.
item Jede Anfrage enthält einen Eintrag (item) zur Suchspezifizierung. Abhängig
von der durchsuchten Ebene, existieren unterschiedliche Eintragsbeschreibungen.
ˆ organisatorisch: Organisatorische Suchanfragen beinhalten drei Variablen, mittels derer exakte wie auch ungenaue Suchanfragen durchgeführt werden können.
Alle Elemente dieser Ebene gehen Beziehungen zu anderen Elementen ein. Eine
Beziehung ist ein 3-Tupel bestehend aus Ursprung, Beziehungsname und
Ziel (siehe Abschnitt 2.3).
ˆ virtuell: In der virtuellen Ebene wird die Suche lediglich durch ein frei definiertes
Suchkriterium beschrieben.
Die Interpretation der Suchkriterien obliegt einzig den verwendeten Suchstrategien,
so dass eine möglichst hohe Flexibilität gewährleistet ist.
Das Listing 5.3 verdeutlicht den Aufbau der zu tätigenden Suchanfragen.
Listing 5.3. Spezifizierung der Suchanfragen als Eingabebeispiel
<? xml version = " 1.0 " encoding = " UTF -8 " ? >
< queries xmlns:xsi = " http: // www . w3 . org /2001/ XMLSchema instance " x s i : n o N a m e s p a c eS c h e m a L o ca t i o n = " query . xsd " >
3
< query time = " 0 " initiator = " 1 _3_3_2 #1 " type = " member " >
4
< item source = " * " relation = " gro_mem " target = " 0 _0_1_5
#1 " / >
5
</ query >
6
< query time = " 0 " initiator = " 1 _3_3_2 #1 " type = " member " >
7
< item source = " 0 _0_1_5 #1 " relation = " mem_gro " target = "
*"/>
8
</ query >
9
..
10
< query time = " 0 " initiator = " 1 _3_3_2 #1 " type = " member " >
11
< item source = " 0 _0_1_5 #1 " relation = " mem_mem " target = "
0 _0_1_5 #1 " / >
12
</ query >
1
2
79
5. Beschreibung der Simulation
< query time = " 0 " initiator = " Peer_29 #1 " type = " superpeer " >
< item criteria = " Peer_31 #1 " / >
15
</ query >
16 </ queries >
13
14
5.3.5. Ausgabebericht
Der Ausgabebericht wird nach jeder Simulation einer Konfiguration erstellt und enthält neben den Konfigurationseinstellungen auch die statistischen Angaben über den
Verlauf. Je nach gewählter Metrik variiert der Umfang dieser Meldungen. Neben dem
Ausgabebericht werden weitere Dokumente erstellt, die zusätzlichen Aufschluß über
den Ablauf des Experimentes geben. Es existieren daneben Informationen über den
zeitlichen Ablauf der Nachrichteninitialisierungen und - weiterleitungen (sog. trace),
sowie Fehlermeldungen und Debugmeldungen. Ebenfalls ist es möglich, neben den
automatisch generierten Meldungen, manuelle Ausgaben in den Suchstrategien zu
formulieren.
Zur Weiterverarbeitung der gelieferten Rohdaten, die durch die verwendeten Metriken
einer Simulation entstehen, wird eine csv1 -Datei erstellt, die in gängigen Tabellenkalkulationen verarbeitet werden kann.
1
csv: comma separated values
80
6. Entwurf und Implementierung
In diesem Abschnitt wird auf den Entwurf des Simulators sowie die damit verbundene
Implementierung eingegangen. Der Grobentwurf veranschaulicht die Verbindung der
Super-Peer-Architektur mit dem Aufbau organisatorischer Strukturen. Der anschließende Feinentwurf, mit abschließender Implementationsbeschreibung rundet dieses
Kapitel ab.
6.1. Grobentwurf
Für die Modellierung eines P2P-Systems mit der Erweiterung domänenspezifischer
organisatorischer Elemente werden zwei unterschiedliche Ansätze vorgestellt und
schließlich der Eingesetzte genauer beschrieben.
Der erste Ansatz beschreibt die Beziehung mittels Metadaten, um die ein Peer erweitert wird. So könnte ein Peer neben seinen bisherigen Ressourcen weitere der Suche
bereitstellen, die Aufschluss über die organisatorische Funktion und die vorhandenen Relationen geben. Diese Metadaten werden entweder durch eine Änderung des
P2P-Protokolls oder der Suchverfahren berücksichtigt.
Im zweiten Ansatz wird der virtuellen P2P-Ebene eine Ebene übergeordnet, die die
organisatorischen Elemente mit ihren Beziehungen beinhaltet. Die Verbindung der
beiden Ebenen wird durch einen Vermittler (Mediator) geleistet.
Der folgende Entwurf basiert auf dem zweiten Ansatz, da er intuitiver, strukturierter
und dynamischer ist. Die organisatorische Ebene beschreibt semantisch höherwertige Beziehungen als die virtuelle Ebene. Die Viefalt (organisatorischer) Elemente in
anderen Domänen kann variieren und eigenständig mittels Suchverfahren simuliert
werden. Organisatorische Elemente können unterschiedlichen Suchstrategien genügen.
Die Einführung einer separaten Ebene erscheint daher sinnvoll. Die zur Verknüpfung
der beiden Ebenen notwendige Verbindung ist je nach realen Gegebenheiten unterschiedlich und wird daher extern definiert, so dass es in erstellten Experimenten variert werden kann. Weiterhin ist die Simulation ohne Verbindung einer angrenzenden
Ebene möglich, so dass Ebenen unabhängig voneinander simuliert werden können.
Der erste Ansatz kann über das gewählte Datenformat der Topologien leicht verfolgt
werden, indem den Peers lediglich spezielle Metadaten übergeben werden müssen.
Dieser wird jedoch aus beschriebenen Gründen nicht näher vorgestellt.
81
6. Entwurf und Implementierung
6.1.1. Architektur
Zur Identifizierung der Architektur des Simulators werden kurz einige Architekturmuster [BMR+ 96] vorgestellt, die der Verständlichkeit dienen. Es wird auf das Schichtenmodell, Intorspektion und das Forwarder-Receiver-Pattern eingegangen.
Die Anordnung von aufeinander aufbauenden Ebenen/Schichten wird in der Literatur häufig als Schichtenmodell bzw. ’Layers-Pattern’ beschrieben. Einzelne Ebenen
operieren losgelöst voneinander und kooperieren über eine feste Schnittstelle. Ebenen sind in der Regel anhand ihres Abstraktionsgrades angeordnet, so dass abstraktere Ebenen mit weniger abstrakten kommunizieren, die wiederum nach demselben
Prinzip verfahren. Als Veranschaulichung eines Schichtenmodells dient das in der Literatur ausführlich beschriebene ISO-OSI-Referenzmodell1 . Eine Einschränkung des
Schichtenmodells besagt, dass eine Ebene jeweils nur mit einer direkt angrenzenden kommunizieren darf. Dieses eingeschränkte Schichtenmodell liegt dem Simulator
zugrunde, so dass die organisatorische Ebene lediglich mit der virtuellen Schicht interagiert, nicht jedoch die physikalische Ebene kontaktieren darf.
Im Zuge der Entwicklung adaptiver Systeme existieren weitere Architekturmuster in
Verwendung, die im Entwurf des Simulators berücksichtigt wurden. Um die Konfigurierbarkeit (im weiteren Sinne) zu erhöhen, werden neben den Einstellungen in einer
Konfigurationsdatei, alle Suchverfahren, Mappingverfahren sowie Topologiegeneratoren mit deren Visualisierung mittels Introspektion zur Laufzeit geladen. Introspektion
(ebenfalls als Reflektion bekannt) ermöglicht es, Informationen über den Aufbau von
Klassen während der Laufzeit einzuholen und diese zu integrieren. Die beschriebene Funktionalität wird dem Simulator dann über feste Schnittstellen bereitgestellt.
Durch die Auslagerung wesentlicher logischer Funktionen entsteht ein minimaler Kern
an Basisfunktionalität. Die Einbindung sowie die Schnittstellen werden im Abschnitt
6.2 besprochen.
Zur Verbergung von Kommunikationsprotokollen dient ein Dispatcher bzw. ’ForwarderReceiver-Pattern’, welches die Übermittlung der Nachrichten übernimmt. Die Aufgabe der Nachrichtenübermittlung wird als Basisfunktionalität bereitgestellt, die von
den Ebenen in Anspruch genommen werden muss.
Durch die Verwendung der beschriebenen Muster soll ein möglichst generischer und
strukturierter Aufbau geschaffen werden.
6.2. Feinentwurf
Der Feinentwurf beschreibt den Aufbau des Simulators sowie die Integration eines bestehenden Rahmenwerkes und einer Anwendung zur grafischen Darstellung der Statis1
http://www.iso.org/, zuletzt besucht am 14.08.2005
82
6.2. Feinentwurf
tiken. Zur zeitdiskreten Simulation wird das DESMO-J Rahmenwerk [PLC00; Cla01]
verwendet, das von der Univeristät Hamburg entwickelt wurde. Es dient der Entwicklung von objekt-orientierten Simulationsmodellen und stellt viele der in Abschnitt 5.1
beschriebenen Konstrukte bereit. Die grafische Darstellung der Statistiken wird von
einer Klassenbibliothek namens JFreeChart [Gil05] getätigt. JFreeChart unterstützt
neben den genutzten Zeitreihendarstellungen und Balkendiagrammen viele weitere
Visualisierungsmöglichkeiten, die zur weiteren Entwicklung des Simulators herangezogen werden können.
6.2.1. Abgrenzung von bestehenden Rahmenwerken zur Simulation
Angesichts der unterschiedlichsten Suchverfahren für P2P-Netzwerke existieren einige
Simulatoren, die häufig sehr spezielle Schwerpunkte setzen. Im Folgenden werden
einige dieser kurz vorgestellt. Je nach Forschungsintensität wurden Simulatoren für
einzelne Protokolle entworfen. Chord, FreeNet, Gnutella und Pastry stellen eigene
Simulatoren bereit, die zur Simulation dieser Verfahren entwickelt wurden.
Für das Verfahren Chord entstand in dem Ursprungsprojekt IRIS 2 ein Simulator
namens p2psim3 . Dieser Simulator unterstützt neben der Simulation von Chord einige
weitere angelehnte Verfahren. Weitere Verfahren wie Kademlia, Kelips und Tapestry
werden ebenfalls unterstützt.
Für FreeNet wurden bisher zwei Simulatoren entwickelt - Serapis und Aurora. Serapis wurde zur Untersuchung unterschiedlichen Cacheverhaltens entworfen. Beide
Simulatoren werden der Freenet-Distribution beigelegt.4
Zahlreiche Evaluationen beziehen sich auf das Gnutella-Netzwerk. Die Tauschbörse Limewire5 verwendet zur Simulation des Gnutella-Protokolls den Simulator Gnu(tella)Sim6 , der für die Simulation von Gnutella-Netzwerken und weiteren unstrukturierten
Netzwerkes konzipiert wurde.
Das auf der Basis von Plaxtons Suchalgorithmus (siehe Abschnitt 3.3.3) aufbauende
Verfahren Pastry verwendet ebenfalls einen eigenen Simulator namens FreePastry7 .
Neben den protokoll-spezifischen Simulatoren existieren weitere, die unterschiedliche
Protokolle unterstützen, wie auch jegliche Restriktionen bzgl. dieser auslassen. Der
Simulator 3LS abstrahiert von speziellen Protokollen und gibt dem Entwickler die
Möglichkeit, neue Protokolle zu simulieren. Hierzu ist ein Schichtenmodell vorgesehen, dass drei Schichten unterscheidet - die Benutzerebene, die Protokollebene und
2
http://project-iris.net/papers/, zuletzt besucht am 14.08.2005
http://pdos.csail.mit.edu/p2psim/, zuletzt besucht am 14.08.2005
4
http://www.freenet.sourceforge.net, zuletzt besucht am 14.08.2005
5
http//www.limewire.com, zuletzt besucht am 14.08.2005
6
http://www.cc.gatech.edu/computing/compass/gnutella/, zuletzt besucht am 14.08.2005
7
http://freepastry.rice.edu/FreePastry/, zuletzt besucht am 14.08.2005
3
83
6. Entwurf und Implementierung
die Netzwerkebene. Das Projekt Anthill [BMM02] stellt ein Rahmenwerk dar, das
den Schwerpunkt auf den Entwurf, die Implementation und Evaluation von P2PAnwendungen setzt. Ein Prototyp basiert auf der JXTA-Technologie8 , die sich zum
Ziel setzt, eine Standardisierung von Peer-to-Peer-Anwendungen durch frei zugängliche Protokolle zu ermöglichen. Der Peer-to-Peer Simulator (Peersim) [Jes05] stellt
ebenfalls keine Einschränkungen an zu simulierende Protokolle. Entstanden ist dieser
Simulator in dem Projekt BISON9 , das komplexe adaptive Systeme untersucht und
hiermit einen geeigneten Simulator bereitstellt.
Mit der intensiven Erforschung von P2P-Systemen der letzten Jahre geht eine hohe
Anzahl an Simulatoren einher, so dass nur eine kleine Auswahl dieser angesprochen
werden konnte. Bei der Recherche fällt auf, dass unterschiedliche Ziele untersucht
werden und somit eine Vielzahl an Simulatoren nicht in direkter Konkurrenz zueinander stehen. Trotz dieser Spezialisierungen ist die Tendenz zu erkennen, allgemeine
P2P-Simulatoren zu entwickeln, wie es in den Projekten Anthill und Peersim bereits
geschehen ist. Ähnlich den letztgenannten beiden Simulatoren wird in der vorliegenden Arbeit der Abstraktionsgrad der Modellierung erweitert und die Möglichkeit gegeben, auf diesem Abstraktionsniveau das Routing von Nachrichten zu untersuchen.
Die Simulationsmöglichkeiten sollen jedoch weiter gefasst werden als in bisherigen
Anwendungen. Von besonderem Interesse ist hierbei die Simulation einzelner wie
auch zusammenhängender Ebenen und deren selektive Ausblendung. Die einfache
Darstellung der Ebenen in einem Schichtenmodell erlaubt das Hinzufügen weiterer
Schichten, wie es in dieser Arbeit in der ’organisatorischen’ Ebene vollzogen wird. Der
Protokollaustausch wird in Form von austauschbaren Logikbausteinen zur Suche gewährleistet, die in dortiger Form leicht in bestehende Anwendungen portiert werden
kann. Eine Modellierung unterschiedlicher Architekturstile ist zusätzlich über die Definition der Elementtypen möglich, so dass neben reinen P2P-Architekuren ebenfalls
Super-Peer- und Client-Server-Architekturen simuliert werden können. Möglichkeiten
innerhalb eines Experimentes verschiedene Suchstrategien zu kombinieren, ist ebenfalls eine Neuerung gegenüber bisherigen Simulatoren. Neben einer häufig genutzten
textuellen Ausgabe, die in weiteren Schritten durch externe Anwendungen visualisiert werden müssen, erfolgt hier eine Darstellung während der Laufzeit. Auf weitere
nicht-funktionale Eigenschaften wie Erweiterbarkeit, Nutzbarkeit, Konfigurierbarkeit
und Flexibilität wird wie in anderen Simulatoren besonderen Wert gelegt.
6.2.2. Strukturelle Sicht
Die strukturelle Sichtweise gibt einen Einblick in die Paketstruktur, die Klassenstruktur und die Integration externer Algorithmen.
8
9
http://www.jxta.org, zuletzt besucht am 14.08.2005
http://www.cs.unibo.it/bison/, zuletzt besucht am 14.08.2005
84
6.2. Feinentwurf
Paketstruktur
Die Abbildung 6.1 verdeutlicht den Aufbau des Simulators in sieben Pakete. Im
Folgenden wird auf die Funktionalität der einzelnen Pakete eingegangen und im Anschluss werden die Klassen in Abbildung 6.2 detailliert beschrieben.
Bild 6.1.. Paketaufbau des Simlators
core Die Basis des Simulators stellt das Paket core dar, das für die Initiierung, den
Simulationszyklus sowie die Nachrichtenhandhabung zuständig ist.
layers Alle zu simulierenden Ebenen mit ihren Elementen, sowie ihre Verknüpfung
sind in dem Paket layers enthalten.
extension Nicht zur direkten Ausführung der Simulation benötigte Klassen werden
in dem Paket extension gesammelt. Hierzu zählen insbesondere Klassen zur
Erstellung der Topologien und der Suchanfragen.
statistic Statistische Auswertungen, die in der Benutzeroberfläche visualisiert und
in den Ausgabebericht einfließen, sind in dem Paket statistic gesammelt. Die
hier definierten Metriken werden im Simulationszyklus aktiviert.
85
6. Entwurf und Implementierung
configuration Die Konfiguration des Simulators geschieht an zentraler Stelle in der
Klasse Configurator, die für die Bereitstellung der Parameter zuständig ist.
strategy Simulationelemente werden durch die in dem Paket strategy bereitgestellten
Suchstrategien um ihre logische Funktionalität erweitert.
gui Neben der textbasierten Simulation sind die Klassen zur grafischen Visualisierung
in dem Paket gui enthalten.
util Das Paket util stellt Klassen zur Erstellung von neuen Topologien und Anfragen
bereit. Weiterhin sind einige Hilfsklassen für die grafische Benutzeroberfläche
enthalten.
Klassenstruktur
Der beschriebene Aufbau enthält keine Beziehungen zwischen den Paketen. Diese
werden in einer kompakten Form in dem folgendem Klassendiagramm 6.2 dargestellt.
Es zeigt alle wichtigen Klassen und Beziehungen des Simulators. Aufgrund der Komplexität wurden unwesentliche Beziehungen außer Acht gelassen.
Als Entitäten werden alle Simulationselemente und Nachrichten modelliert. Die folgende Beschreibung dient der Erläuterung des Klassendiagramms in Abbildung 6.2.
Simulationselemente Simulationselemente sind für jede Ebene spezifisch und treten
als physikalische, virtuelle und organisatorische Elemente mit entsprechenden
Verfeinerungen auf. Trotz ihrer spezifischen Funktion weisen sie signifikante
Übereinstimmungen auf. Jedes Element besitzt eine Basisfunktionalität, die
die topologischen Aktivitäten wie das Eintreten und Verlassen des Netzwerkes
und die Weiterleitung von Nachrichten implementieren [VL03; Tso03; LCP+ 04].
Diese Funktionen werden durch die Klassen PhysicalElement, VirtualElement und OrganisationalElement bereitgestellt oder vorgeschrieben. Die
Oberklasse SimulationElement hebt die Gemeinsamkeit, dass alle Simulationselemente Suchstrategien verwenden, hervor.
Nachrichten Nachrichten werden von den Simulationselementen anhand einer Strategie verarbeitet und untereinander weiterversendet. Anfragen stellen eine gesonderte Nachricht dar, die wiederum anhand ihrer Ebenenzugehörigkeit unterteilt werden. In einer abstrakten Ebene initiierte Nachrichten können innerhalb
dieser oder einer Abstraktionsebene tiefer versendet werden. In dem zweiten
Fall wird eine, der konkreteren Ebene entsprechende, Nachricht erstellt, die
die abstraktere Nachricht kapselt. Durch die Kapselung wird die ursprüngliche
Nachricht mitverschickt und kann bei Eintreten in eine höhere Ebene wieder
verarbeitet werden.
86
6.2. Feinentwurf
Strategie Jedes Simulationselement verwendet eine bestimmte ihrer Zugehörigkeit
entsprechende Strategie. Je nach Vielfalt unterschiedlicher Funktionen der Elemente einer Ebene können diese verschiedene Suchstrategien verwenden. Diese
Zuordnung ermöglicht das Anwenden unterschiedlicher Strategien innerhalb einer Ebene, so dass u.U. ein Projektelement eine andere Strategie als ein Gruppenelement verwenden kann.
Topologie Topologien aller Ebenen werden einheitlich verarbeitet und erst abschließend den Ebenen zugeordnet. Sie enthalten neben ihren Graph-basierten Eigenschaften (Knoten, Kante) zusätzliche Metadaten, die erst bei der Zuordnung
eines Overlays berücksichtigt werden. So wird die Möglichkeit geschaffen, eine
Topologie für unterschiedliche Overlays zu verwenden, da nur die spezifischen interpretiert werden. Die Erstellung einer Topologie geschieht statisch zu Beginn
Bild 6.2.. Die wichtigsten Klassen und Beziehungen innerhalb des Simulators
87
6. Entwurf und Implementierung
der Simulation und verändert sich währenddessen nicht. Um eine Erweiterung
hinsichtlich der Dynamik möglichst einfach zu gestalten, sind definierte Schnittstellen zum Eintreten sowie Austreten des Netzwerkes geschaffen, die initial
verwendet werden. Über einen in dieser Arbeit nicht vorgesehenen Dienst kann
somit mit geringem Aufwand eine topologische Dynamik während der Laufzeit
erreicht werden.
Mapping Zwei angrenzende Ebenen werden über einen Algorithmus miteinander verbunden, indem Elemente beider Ebenen Referenzen aufeinander erhalten. Diese
Algorithmen werden extern zugeführt und zählen somit zur Konfiguration des
Simulators.
Simulationszyklus Die Klasse SimulationCycle stellt ein externes Ereignis während der Simulation dar. Innerhalb eines jeden Zyklus wird bei geplanent anstehenden Anfragen die Klasse MessageGenerator aufgerufen, die zur Versendung dieser initialen Nachricht zuständig ist. Weiterhin werden Simulationselemente mit eingehenden neuen Nachrichten zur Verarbeitung dieser aktiviert.
Weiterversendete Nachrichten werden erst bei Beginn des nächsten Zyklus von
den Empfängern verarbeitet, die daraufhin als Versender agieren können. Der
Abschluß ist durch die Aktualisierung aller aktivierten Statistiken gekennzeichnet.
Generatoren Generatoren dienen der Erstellung neuer Topologien und Anfragen und
gehören daher nicht direkt zur Simulation. Sie erstellen lediglich die Eingabedaten.
Integration der Suchstrategien
Bei der Simulation wird der Schwerpunkt auf das Verhalten der Simulationselemente
und des Systems bei Variation verschiedener Suchstrategien gelegt. Suchstrategien
stellen die Dynamik des Systems dar, indem sie für die Versendung von Nachrichten
zuständig sind. Um den Austausch dieser zu ermöglichen, wird jegliche Logik bzgl. der
Weiterleitung in ihnen gekapselt. Simulationselemente werden somit als Datenobjekte
modelliert. Mittels des Besucher-Entwurfsmuster s [GHJV95] werden Simulationselemente und Strategien miteinander verbunden. Elemente werden daher - anders als
der intuitive Ansatz - passiv dargestellt. Sie können in einem Simulationsschritt einen
Nachrichtenempfänger wie auch Nachrichtensender darstellen. Dabei werden sie selbst
nicht direkt aktiv, sondern delegieren die Verarbeitung an eine Suchstrategie. Wie in
der Abbildung 6.3 ersichtlich wird, delegieren sie eine eintreffende Nachricht mittels
der ’accept’-Methode an eine Strategie, welche die von den Simulationselementen bereitgestellten Daten verarbeitet. Suchstrategien sind statisch erstellte Objekte, die
keinen Zustand besitzen. Sie fungieren als Dienstleister, die von den Simulationselementen in Anspruch genommen werden können. Zur einfachen Erweiterung werden
88
6.2. Feinentwurf
alle verwendeten Suchstrategien von der abstrakten Klasse AbstractStrategy abgeleitet, die die Implementierung der Methoden search() und inform(), sowie getDefaultValues() und getDescription() vorschreibt. Die letzteren beiden Methoden dienen lediglich der grafischen Verwendung im Simulator mittels Introspektion.
Bild 6.3.. Darstellung der Integration von Suchstrategien
Im Anhang A wird der Aufbau der Suchverfahren detailliert beschrieben. Darauffolgende Beispiele zeigen die Implementierung einiger der in Abschnitt 3 beschriebenen
Suchverfahren.
Integration spezifischer Ebenenzuordnungen
Ähnlich der Integration von Suchstrategien werden selbstdefinierte Algorithmen zur
Zuordnung der Ebenen verwendet. Statt eines ’Besucher-Entwurfsmusters’ wird als
Schnittstelle das Interface Mapping verwendet, das entsprechend implementiert werden kann. Zwei zu verbindende Ebenen stehen in ihrer Menge an Elementen zur Verfügung. Sie stellen Methoden zur Registrierung zur bereit. Konfiguriert werden die
Implementierungen über die in Abschnitt 5.3.1 beschriebene Konfigurationsdatei.
6.2.3. Verhaltenssicht
Simulationselemente stellen im Kontext einer Simulation Entitäten dar. Anders als
die intuitive Abbildung der Realität es vermuten lässt, wird in dieser Arbeit das Verhalten der Entitäten in Strategien ausgelagert. Strategien beinhalten das Verhalten
einer Elementtyps des modellierten Architekturstils, so dass nicht jedes Element eine
89
6. Entwurf und Implementierung
eigene Strategie verwendet, sondern alle Elemente gleichen Typs dieselbe Strategie
nutzen. Dies kann jedoch nur funktionieren, wenn Strategien zustandslos sind, wie
es durch das angewandte Besucher-Entwurfsmuster geschehen ist. Zustände werden
hier durch die Daten einer Entität gewahrt.
6.2.4. Ablaufsicht
Um die Interna des Simulators näher zu verstehen, werden der Initialisierungsablauf
und die Nachrichtenverarbeitung detailliert angesprochen. Abschließend wird auf die
Validation einer Simulation eingegangen.
Initialisierungsprozess
Der Initialisierungsprozess übernimmt die Initialisierung des Simulators und das
Bootstrapping-Verfahren (siehe Abschnitt 2). Da in den Experimenten immer von
einer statischen Topologie ausgegangen wird, stellt das Bootstrapping den finalen
Topologie-Zustand dar. Die Erweiterung des dynamischen Verhalten wird über Methoden des Eintretens wie auch Austretens realisiert, die während der Erstellung
genutzt werden. Das Sequenzdiagramm 6.4 demonstriert den Ablauf, wobei die Instanz der Klasse SimlatorModel den Start auslöst. Der Configurator wird beauftragt, die Konfiguration einzulesen, aus der die zu erstellenden Topologien und deren Verknüpfung entnommen wird. Die Initialisierung der gewünschten Metriken zur
statistischen Auswertung bilden den nächsten Schritt. Abschließend wird der Simulationszyklus gestartet, indem der MessageGenerator und der Simulationcycle in
die Warteschlange der Ablaufsteuerung eingereiht werden.
Bild 6.4.. Initialisierungsprozess des Simulators
90
6.2. Feinentwurf
Nachrichtenversand
Wie anfangs beschrieben stellen Simulationselemente Datenobjekte dar, die Methoden zur Bearbeitung bereitstellen. Das Sequenzdiagramm 6.5 verdeutlicht den Ablauf
des Nachrichtenversandes und -empfanges über zwei Simulationsschritte. Im ersten
Simulationsschritt lagert die Strategy des sendenden Elementes die zur Weiterleitung
bestimmten Nachricht bei dem Empfängerelement ein. Nach Ablauf aller Einlagerungen wird zum Zeitpunkt t=0.5 die Klasse SimulationCycle aufgerufen, die für jedes Simulationselement, dass mindestens eine neue Nachricht zu verarbeiten hat, ein
Ereignis ausgelöst. Aus Performanzgründen musste dieser Weg gewählt werden, da
sonst für jede neue Nachricht ein eigenes Ereignis ausgelöst wird. Weiterhin werden
alle verwendeten Metriken berechnet.
Nach Abarbeitung aller in diesem Simulationsschritt getätigten Aufgaben, ruft die
Ablaufsteuerung zum Zeitpunkt t=1.0 die Methode eventRoutine aller eingetroffenen Ereignisse auf, die dann die Ausführung der accept()-Methode der ereignisbezogenen Elemente bewirkt. Da Elemente keine Logik beeinhalten, rufen sie ihre
zugewiesene Strategie zur endgültigen Verarbeitung auf. Die Wiederholung dieser
Weiterleitungen hängt von den gewählten Strategien ab, da diese durch anfängliche
Parametrisierung die Suchtiefe u.ä. festlegen. Sind Beendigungskriterien der Strategien erfüllt und erfolgen keine dem System neu hinzugefügten Nachrichten, so kehrt
das System in seinen ursprünglichen inaktiven Zustand zurück.
6.2.5. Validation
Die Schwierigkeit der Validation einer Abbildung der realen Gegebenheiten wurde
in Abschnitt 5.1.2 angesprochen. Als zur Verfügung stehende Mittel werden die Ausgabedokumente, sowie eine grafische Visualisierung der verwendeten Topologien angeboten. Der Verlauf während des Weiterleitens von Nachrichten wird automatisch
generiert und kann manuell erweitert werden. Die Sichtweise von Ausschnitten dieses Dokumentes wird von dem Rahmenwerk ’Desmo-J’ bereitgestellt und ist in dem
Simulator integriert. Um sich einen Einblick in den Aufbau der gewählten Topologien zu verschaffen, können diese durch eine grafische Darstellungsfunktion betrachtet
werden.
91
6. Entwurf und Implementierung
Bild 6.5.. Ablauf des Nachrichtenversandes von einem Simulationselement zu einem
Empfänger
92
6.3. Implementierung
6.3. Implementierung
Der kurzen Beschreibung der Entwicklungsumgebung folgt die Darstellung der Implementation des vorangegangenen Entwurfes aus Benutzersicht. Die wichtigsten Funktionen zum Umgang mit der grafischen Version des Simulators werden aufgezeigt.
6.3.1. Entwicklungsumgebung
Zur Einhaltung der Plattformunabhängigkeit wurde Java— in der Version 1.42 als Programmiersprache gewählt. Die Implementierung des beschriebenen Entwurfs erfolgt
mit Hilfe der Entwicklungsumgebung IntelliJ— IDEA10 in der Version 4.5. Die verwendeten Bibliotheken zur grafischen Visualisierung der Metriken (JFreeChart) und
das Rahmenwerk Desmo-J basieren ebenfalls auf Java—, so dass keine weitere Programmiersprache erforderlich ist und sich die Integration der Bibliotheken möglichst
vereinfacht gestaltet.
Als Buildmanagement-Werkzeug wurde Apache Ant11 in der Version 1.6 verwendet.
Eine detaillierte Beschreibung des Umgangs erfolgt im Anhang C.
6.3.2. Benutzerschnittstelle
Der Simulator kann in zwei verschiedene Arten betrieben werden. Es ist die Verwendung mit grafischer Oberfläche wie auch ohne vorgesehen. Der Ausgabebericht bleibt
hiervon unberührt. Jegliche Konfiguration basiert auf den Konfigurationsdateien und
kann manuell oder über die grafische Benutzungsoberfläche bearbeitet werden. Die
manuelle Konfiguration wurde in den wichtigsten Punkten unter 5.3.1 behandelt. Im
Folgenden wird auf die grafische Verwendung des Simulators eingegangen.
Konfiguration
Die Abbildungen 6.6 und 6.7 veranschaulichen einen Teil der Einstellungsmöglichkeiten. Unterschieden wird hierbei von Einstellungen bzgl. des Experimentes, der zu
simulierenden Overlays, den verwendeten Strategien und aktivierten Metriken. Über
eine Werkzeugleiste kann jederzeit eine bestehende Simulation gestartet und beeinflusst werden. Die Statusleiste verdeutlicht den Fortgang der Simulation anhand diskreter und realer Zeitschritte. Der aktuelle Stand innerhalb des Experimentes ist über
die Laufleiste ersichtlich.
10
11
http://www.jetbrains.com/idea/, zuletzt besucht am 20.10.2005
http://ant.apache.org/, zuletzt besucht am 20.10.2005
93
6. Entwurf und Implementierung
Bild 6.6.. Konfiguration der zu simulierenden Overlays
Bild 6.7.. Konfiguration der zu simulierenden Strategien
Die Einstellungen zu den Strategien erfolgen dynamisch zur Laufzeit mittels Introspektion (siehe 6.1). Somit ist die Möglichkeit geschaffen, ohne den Eingriff in die
Oberflächengestaltung neue Strategien zu entwickeln und sie über die Oberfläche zu
konfigurieren.
Werkzeuge
Dem Simulator sind einfache Werkzeuge hinzugefügt. Hierzu zählen Generatoren zu
den Topologien und Anfragen, die je nach Implementierung parametrisiert werden
können. Die Abbildung 6.8 veranschaulicht die Generierung einer virtuellen Topologie.
Als Eingabe wird eine Topologie für die Verbindung der Super-Peers verwendet, die
durch den Topologie-Generator gt-item geliefert wird. Die Größe der Cluster, sowie
die Verteilung von Ressourcen und die Größe sind als weitere Parameter anzugeben.
Zur visuellen Überprüfung der erstellten Topologien ist deren Visualisierung als
Graph in einem weiteren Werkzeug enthalten. Es kann hierbei jedoch lediglich von
einer subjektiven Überprüfung gesprochen werden, da der visuelle Überblick bei wenigen hundert Knoten nicht mehr gegeben ist. Zur Verbesserung der Übersichtlichkeit
ist eine Einschränkung der Knoten anhand ihres Grades vorzunehmen.
Start eines Experimentes
Nachdem alle gewünschten Einstellungen vorgenommen worden sind, kann die Simulation über die Werkzeugleiste gestartet werden. Der in dem Feinentwurf 6.2 beschriebene Initialisierungprozess bereitet hierbei die Simulation vor. Zur aktuellen
94
6.3. Implementierung
Bild 6.8.. Topologiegenerator zur Erzeugung einer virtuellen Topologie
Überwachung des Experimentes erscheint der in Abbildung 6.9 gezeigte Überwachungsbildschirm, der sich je nach gewählten Metriken voneinander unterscheiden
kann. Das Ende des Experimentes wird entweder durch eine vorgegebene Laufzeit
oder durch eine vorzeitige Beendigung erreicht. Die erzeugten Grafiken lassen sich
durch ein Kontextmenü abspeichern, drucken und in der Darstellung ändern.
Der Ausgabebericht
Der erzeugte Ausgabebericht kann über die Werkzeugleiste aufgerufen werden. Die
erzeugte Dokumente lassen sich dort je nach voreingestelltem Format darstellen. In
der Darstellung 6.10 ist eine HTML-Ausgabe erzeugt worden, die textuell die Experimentparameter und die statischen Werte anzeigt. Die schrittweise Darstellung der
Simulation (Beispiel in Abb.. 6.11) gibt Aufschluss über den detaillierten Ablauf der
Simulation. In dieser Auflistung sind alle Ereignisse dokumentiert, die sich während
der Simulation ereignet haben.
95
6. Entwurf und Implementierung
Bild 6.9.. Aktuelle Betrachung der Messergebnisse aller gewählten Metriken während der Laufzeit
Bild 6.10.. Ausgabebericht mit Darstellung der Experimenteinstellungen
und Ergebnisse
96
Bild 6.11.. Zeitliche Auflistung aller
während der Simulation eingetretenden Ereignisse
7. Experimente
Diese Kapitel soll den Einsatz des Simulators anhand von drei Experimenten verdeutlichen. Eine anschließende Bewertung und Validation rundet dieses Kapitel ab.
7.1. Abgrenzung eines Experimentes
Experimente können unterschiedlicher Art sein, so dass eine genauere Abgrenzung an
dieser Stelle unabdingbar ist. Um einen möglichst hohen Grad an Reproduzierbarkeit
zu erlangen, wird in dieser Arbeit nur von kontrollierten Experimenten ausgegangen,
die nach Prechelt [Pre01] als ”[..]Studie, bei der alle voraussichtlich für das Ergebnis relevanten Umstände (Variablen) konstant gehalten werden (Kontrolle), mit Ausnahme
von einem oder wenigen, die den Gegenstand der Untersuchung bilden (Experimentvariablen).[..]”.
7.2. Beschreibung der Experimente
Zur Demonstration der Verwendung des Simulators werden nun drei Experimente geführt, die die Overlays separat wie auch kombiniert simulieren. Die Implementation
der Verfahren ist dem Anhang A.3, A.4 und A.5 zu entnehmen. Jede vorgenommene
Konfiguration der Experimente sowie deren Beschreibung und Ergebnis ist im Anhang B zu finden. Da sich die folgenden Vergleiche auf die einzelnen Ergebnisse der
Konfigurationen beziehen, sollten diese vorher studiert werden. Weiterhin wird das
Verständnis der in Abschnitt 5.2.1 beschriebenen Metriken vorausgesetzt.
1. Das erste Experiment VRW-VC stellt das Random-Walks-Verfahren (Abschnitt 3.2.3) in drei Konfigurationen einem Chord-basierten Ansatz (Abschnitt
3.3.1) in zwei Konfigurationen gegenüber. Hierbei wird die virtuelle Ebene alleine simuliert.
2. In dem zweiten Experiment ORW-OIBFS werden innerhalb des organisatorischen Overlays das Random-Walks-Verfahren (ORW) mit einem verwandten
(OIBFS) verglichen, das jedoch organisatorische Beziehungen in höherem Ausmaß interpretiert.
97
7. Experimente
3. Das abschließende Experiment OIBFS-VC gibt Auskunft über die Kombinationsmöglichkeiten beider Overlays zur Unterstützung ungenauer Suchanfragen.
Hierbei werden die Verfahren VC und OIBFS kombiniert.
Die Bewertung im Anschluss bereitet die Rohdaten der Experimente exemplarisch
auf und zeigt einen Weg auf, Experimente mit Hilfe des vorgestellten Simulators
durchzuführen.
7.3. Analyse der Experimente
Um ein geeignetes Verfahren für organisations-orientierte Super-Peer-Architekturen
zu simulieren, wurden die Experimente (siehe Kapitel B) durchgeführt und werden nun hier analysiert. Die als Vergleichskriterium verwendeten Grafiken dienen
als Zusatz zu den Ausgabeberichten, da sie Rundungswerte gegenüberstellen und
hieraus Tendenzen ersichtlich machen. Die Relation der gegenübergestellten Daten
kann in ihrem Grad durchaus abweichen. Die nun vorgestellten Vergleiche resultieren
in der Verknüpfung zweier Verfahren (Experiment OIBFS-VC), die für die Suche in
organisations-orientierten Super-Peer-Architekturen verwendet werden können. Hierzu siehe ebenfalls Abschnitt 8.1.
7.3.1. Vergleich VRW-VC
Die Abbildungen 7.1 und 7.2 verdeutlicht die Auswirkungen unterschiedlicher Parametereinstellungen des Random-Walks Verfahren VRW sowie den Vergleich mit
einem parameterlosen Chord-basierten Ansatz VC. Die beiden dortigen Grafiken beziehen sich auf die Suche nach einem eindeutigen Kriterium sowie auf die Suche nach
mehrdeutigen Kriterien. Sie dienen jedoch lediglich der Hinführung zu den späteren
Experimenten und werden daher nur kurz angesprochen.
VRW1 und VRW2 sowie VRW4 und VRW5 zeigen Ähnlichkeiten in der Anzahl an
versendeten Nachrichten. Die jeweils erste Konfiguration VRW1 und VRW4 (Walkeranzahl=1)verursachen im Durchschnitt lediglich 40% bzw. 46% der Nachrichten des
entsprechenden Pendants VRW2 und VRW5 (Walkeranzahl=3). Da jeder empfangene Peer bis zu drei Walker aussenden darf, entsteht ein exponentielles Anwachsen
des Nachrichtenaufkommens, das durch die Metrik VMS in den Abbildungen B.2.1,
B.2.2 und B.2.4, B.2.5 zu sehen ist. Dieses exponentielle Anwachsen wird jedoch
nach wenigen Schritten durch eine Historie verringert, so dass im Durchschnitt nach
Ablauf der Simulation bei einer Verdreifachung der max. Walkeraussendungen (pro
Element) nur eine Verdopplung der Nachrichtenanzahl. Ausserdem werden in VRW2
und VRW5 die Antworten in vierfacher Geschwindigkeit gefunden (siehe QSR der
jeweiligen Abbildungen).
98
7.3. Analyse der Experimente
300
250
200
150
100
50
0
Dauer
HTL
Walker
QSR
APM
HPQ
VMS
VME
VRW1
250
200
1
0,75241
1,40627
49,3025
11,508
0,01151
VRW2
250
200
3
0,93952
2,21418
37,28749
VRW3
250
10
3
0,76512
0,76512
7,02881
6,76
0,00676
VC1
250
0,95441
0,95441
7,08177
0,568
0,000568
28,7
0,0287
Bild 7.1.. Gegenüberstellung der Verfahren VRW und VC. Suche nach eindeutigen
Peernamen.
Die Verfahren VRW3 und VC1 sowie VRW6 und VC2 sind zu vergleichen, da
realistische Suchtiefenbeschränkungen in die Konfiguration aufgenommen wurden
(HTL<10). Signifikante Unterschiede entstehen durch die logarithmische Suchdauer des Chord-basierten Verfahren gegenüber dem exponentiellen Nachrichtenaufkommen der Random-Walks basierten Verfahren (siehe ∆ VMS in 7.1 und 7.2). Somit
entstehen klare Unterschiede zugunsten VC1 und VC2, die in den einzelnen Ausgabeberichten (siehe B.2.3,B.2.7 und B.2.6,B.2.8) am deutlichsten werden.
300
250
200
150
100
50
0
Dauer
HTL
Walker
QSR
APM
HPQ
VMS
VME
VRW4
250
200
1
0,84565
3,59059
42,54255
7,676
0,00768
VRW5
250
200
3
0,94507
4,63514
20,99885
16,216
0,01622
VRW6
250
10
3
0,79025
2,1309
7,7687
7,324
0,007324
VC2
250
0,94934
0,94934
8,42996
0,588
0,000588
Bild 7.2.. Gegenüberstellung der Verfahren VRW und VC. Suche nach (mehrfach
vorhandenen) Ressourcen.
99
7. Experimente
7.3.2. Vergleich ORW-OIBFS
Die Gegenüberstellung der Verfahren ORW (Abschnitt B.3.1) und IBFS (Abschnitt
B.3.2) zeigt klare Vorteile des zweiten Verfahrens auf. Beide Verfahren basieren auf
einer Breitensuche. Die in dem zweiten Verfahren implementierte einfache Logik bzgl.
des Aufbaus der organisatorischen Ebene resultiert in einer hohen Nachrichtenabnahme gegenüber dem ersteren ’blinden’ Verfahren (∆OMS in Abbildung 7.3). Desweiteren ist zu erkennen, dass Dauer einer Nachrichtenversendung (∆HPQ) und die damit
verbundene Zeit zur Erfüllung aller Anfragen (∆QSR) steigt.
250
200
150
100
50
0
Dauer
QSR
APM
HPQ
VRW1
120
0,45637
0,45637
30,57263
223,70833
OMS
0,22371
OME
OIBFS
120
0,9177
3,42608
6,6558
9,94167
0,00994
Bild 7.3.. Gegenüberstellung der Verfahren ORW und OIBFS
7.3.3. Vergleich OIBFS-VC
Die Auswirkungen der unterschiedlichen Abbildungen der Ebenen in den Experimenten OIBFS-VC1 und OIBFS-VC1 sind durch die durchschnittlichen zu verarbeitenden Nachrichten der virtuellen Elemente und der benötigten Zeit zu erkennen.
Dem Experiment OIBFS-VC1 liegt eine zufällige Gleichverteilung aller Elemente einer Organisation über die Cluster der virtuellen Ebene zugrunde. Die Nachrichten
werden anhand der vereinfachten Chord-Protokolls über das gesamte Netzwerk geleitet, so dass die Höchstbelastung eines einzelnen Peers um fast die Hälfte reduziert werden konnte (siehe MVE in Abbildungen B.4.1 und B.4.2). Die Kosten dafür schlagen
jedoch in einer um ein Drittel höheren aggregierten Netzlast des ersteren Experimentes zu Buche, da keine Lokalitätseigenschaften berücksichtigt wurden (siehe ∆VMS
in Abbildung 7.4). Das Auslassen dieser Eigenschaften verursacht zudem eine längere
Laufzeit, die anhand der Durchschnittwerte ∆QSR, ∆APM und ∆HPQ ersichtlich
100
7.3. Analyse der Experimente
80
70
60
50
40
30
20
10
0
APM
HPQ
VMS
VME
OMS
OME
OIBFS-VC1
50
0,66
1,54286
4,19256
70,12
0,07012
17,96
0,01796
OIBFS-VC2
Dauer
50
0,72571
QSR
1,78857
4,45923
46,84
0,04684
17,96
0,01796
Bild 7.4.. Gegenüberstellung der Verfahren OIBFS-VC1 und OIBFS-VC2
werden. Ebenso ist eine erhöhte Anzahl des maximalen Nachrichtenaufkommens der
organisatorischen Elemente zu verzeichnen. Eine plausible Begründung liegt in den
kürzeren Laufzeiten der Nachrichten, die die Wege zwischen den Peers verkürzen und
so zu einem verfrühten Rückmelden innerhalb der organisatorischen Ebene führt. Die
weiteren getroffenen Metriken tragen einer Unterscheidung nicht bei.
Zusammenfassend ergeben beide Verfahren wesentliche Vorteile gegenüber den vorherigen Experimenten, die jedoch in der Komplexität dieser begründet sind. Beide
Verfahren garantieren eine logarithmische Suchkomplexität über die Menge der SuperPeers S und dem Durchmesser des hierarchischen Netzwerkes von O(logS*d), wobei
die zweite Variante durch Hinzunahme einer erweiterten Logik bezüglich der Suchinterpretation wie folgt optimiert werden kann.
Eine Suche (∗, ry , ex ), die durch ein organisatorisches Element ez initiert wurde, könnte statt einer schrittweisen Annäherung direkt durch die Metadaten des Super-Peers
an ex geleitet werden, da dieser über Metadaten der gesamten inner-organisatorischen
Elemente verfügt. Die Wahrscheinlichkeit, dass die dem Elemente ex naheliegenden
Elemente die Suche erfolgreich beenden können, ist bei einer hierarchischen Vernetzung höher als bei weit Entfernten.
7.3.4. Validation der Ergebnisse
Wie bereits in Abschnitt 5.1.2 angepsrochen wurde, ist eine Validation der Experimente schwierig. In jedem Experiment werden Annahmen getroffen, die voneinander
abweichen können. Den folgenden Vergleichen aus der Literatur liegen meist eine
unterschiedliche Struktur und Größe der Topologien sowie andere Suchanfragen zugrunde.
101
7. Experimente
Zwei der simulierten Verfahren werden nun mit den Ergebnissen in der Literatur
verglichen. Das Random-Walks-Verfahren, welches in den Experimenten VRW-VC
(Abschnitt B.2) und ORW-OIBFS (Abschnitt B.3), wird als erstes untersucht. Die
zweite Beschreibung geht auf das Chord-basierte Verfahren VC (Abschnitt B.2) ein.
Das Verfahren Random-Walks (Abschnitt 3.2.3) kann in zwei Alternativen eingesetzt
werden. Entweder werden initial eine feste Anzahl an Walkern definiert, die dann das
Netzwerk durchlaufen oder es werden bei jeder Weiterleitung neue Walker ausgesendet, so dass die Anzahl mit der Pfadlänge steigt.
Hier wurde die zweite Alternative betrachtet, die ohne Optimierung ein exponentiell steigendes Nachrichtenaufkommen mit steigender Pfadtiefe verursacht. Als Optimierung wurde eine Historie verwendet, so dass keine Knoten mehrfach besucht
werden und ein Backtracking-Algorithmus verwendet, der bei einer hohen Lebensdauer das komplette Netzwerk durchkämmt. Ein Vergleich mit den in der Literatur
[LCC+ 02; TR03c] vorgenommenen Simulationen erweist sich als äußerst schwierig, da
gerade bei Suchverfahren der ersten Generation viele Optimierungen vorgenommen
werden können, die einen Vergleich erschweren. Intuitiv verständlich ist, dass eine
Erhöhung der Anzahl an ausgesendeten Walker die Erfolgsrate und das Nachrichtenaufkommen erhöht.
Mizrak et.al [MCKS03] (Abschnitt 3.3.1) stellten ein Chord-basiertes Suchverfahren
für Super-Peer-Architekturen vor, in dem die Super-Peer auf einem Chord-Ring platziert werden. Die Autoren simulieren ungefähr 10000 Peers, die zwischen 55 und 125
Ressourcen besitzen. Die Topologie verändert sich während der Simulation durch beabsichtigtes Ein- und Austreten sowie durch unbeabsichtige Ausfälle. Die Ergebnisse
sind auf Speicherverbrauch, Skalierbarkeit und Nachrichtendurchsatz ausgerichtet.
Das in der hier vorliegenden Arbeit durchgeführte Experiment untersucht andere Eigenschaften wie Pfadlänge einer Nachricht, Nachrichtenaufkommen und Erfolgsrate.
Daher wird nun ein Vergleich zu dem ursprünglichen Chord-Verfahren gezogen.
Die Suchdauer (in hops) nach einer Ressource mittels des Chord-Verfahren steigt logarithmisch mit der Anzahl der vorhandenen Peers. Genau diese Zeit wird maximal
für die Suche innerhalb des Super-Peer-Ringes in dem hier vorgestellten Verfahren
verwendet. Zusätzlich dazu kommen maximal zwei Nachrichten für das Weiterleiten
innerhalb des Ursprungsclusters und des Zielclusters hinzu, falls Ursprung und Ziel
’einfache Peers’ sind.
Somit muss das Experiment VRW-VC folgende Daten liefern:
ˆ Die Suche nach einer existierenden Ressource ist immer erfolgreich (siehe QSR
in Abb. B.2.7 und B.2.8).
ˆ Es dürfen maximal log2 (S) + 2 Nachrichten versendet werden, wobei S die
Anzahl der Super-Peers ausdrückt. Da in den Experimenten jeweils 256 SuperPeers simuliert werden, darf die maximale Anzahl an Hops zehn Schritte nicht
überschreiten (siehe HPQ in Abb. B.2.7 und B.2.8).
102
8. Schlussfolgerung und Ausblick
In dem abschließenden Kapitel wird ein Vorschlag gegeben, wie sich Suchverfahren in
organisations-orientierten Super-Peer-Architekturen gestalten können. Hierbei wird
auf zwei Varianten eingegangen, die situationsbedingt Vor-und Nachteile aufweisen.
Im Anschluss daran erfolgt in einem Fazit eine Beurteilung der Möglichkeiten wie
auch Schwächen des erstellten Simulators. Die Arbeit endet mit einem Ausblick, in
wieweit die Entwicklung fortgesetzt werden kann und welche offenen Fragen noch
bestehen.
8.1. Vorschlag eines organisations-orientierten Suchverfahrens
für Super-Peer-Architekturen
Prinzipiell lassen sich alle Verfahren der virtuellen Ebene mit denen der organisatorischen verbinden. Zur Entwicklung und Kombination von Verfahren ist der im Laufe
der Arbeit beschriebene Simulator erstellt worden. Im Folgenden wird ein mögliches
Verfahren vorgestellt, das durch die in Abschnitt 7 beschriebenen Experimente entstanden ist. Dem Vorschlag liegt ein Chord- basiertes Suchverfahren der virtuellen
Ebene zugrunde, das an Mizrak u.a. (siehe Abschnitt 3.3.1) angelehnt ist. Die darauf
aufbauende organisatorische Suche ermöglicht neben exakten Suchanfragen ebenfalls
ungenaue Anfragen, die mittels bisheriger DHT-Verfahren nicht lösbar waren.
8.1.1. Aufbau der virtuellen Ebene
Der virtuellen Ebene liegt eine Super-Peer-Architektur zugrunde. Die dortigen SuperPeers pflegen ein Cluster, dessen Peers gewissen Bedingungen genügen müssen. Alle
in einem Cluster befindlichen Peers, sowie deren Super-Peer werden mittels einer
Hash-Funktion auf genau denselben Wert abgebildet. Als Funktionsparameter wird
der jeweilige Name des Peers herangezogen. Auf den Topologieaufbau sowie die dynamischen Veränderungen wird später eingegangen. Mit einer diesen Anforderungen
entsprechenden Topologie wird die Suchtiefe nach einem Peernamen stärker eingeschränkt, als es in der ursprünglichen Version der Chord-Protokolls möglich war. Die
Suchtiefe, die in der betrachteten diskreten Sichtweise der Suchzeit entspricht, ist
von logarithmischer Komplexität. Jedoch wird nicht die Anzahl aller Peers N zur
Berechnung herangezogen, sondern lediglich die Anzahl der Super-Peers S benötigt.
Die Suche nach einem Peernamen entspricht somit O(log(S)), S ∈ N .
103
8. Schlussfolgerung und Ausblick
Eine Anfrage erreicht nach maximal dlog(S) + 2e Schritten den entsprechenden ZielPeer und benötigt dann noch einen Schritt für die direkte Antwort zum Initiator.
Die logarithmische Suchzeit begründet sich durch den Einsatz eines Chord-Ringes.
Die weiteren zwei Suchschritte entstehen dadurch, dass ein ’einfacher Peer’ seinen
Super-Peer kontaktieren muss und der Ziel-Peer ebenfalls ein ’einfacher Peer’ ist.
8.1.2. Aufbau der organisatorischen Ebene
Die organisatorische Ebene wird vereinfacht als hierarchisch angesehen. Elemente unterschiedlicher (hierarchischer) Ebenen stehen in (gerichteten) Beziehungen, wobei
der Name einer Beziehung die semantische Bedeutung ausdrückt. Innerhalb dieser
Hierarchie können sowohl ungenaue als auch exakte Anfragen formuliert werden. Die
Anfragenformulierung beschränkt sich jedoch auf das 3-Tupel der Verbindungen (siehe Abschnitt 2.3). Anfragen werden durch die Angabe eines 3-Tupels
(E1 , mem mem, E1 ), E1 ∈ M ember oder (E1 , pro pro, E1 ), E1 ∈ P roject exakt formuliert.
Ungenaue Anfragen entsprechen einem 3-Tupel mit Sternchen-Operator wie folgt
(E1 , mem gro, ∗), E1 ∈ M ember oder (∗, pro gro, E1 ), E1 ∈ Group.
Aufbauend auf diesen Basisanfragen lassen sich durch Verknüpfung komplexere Suchen formulieren. Die Suchtiefe einfacher Anfragen hängt von dem Durchmesser des
hierarchischen Netzwerkes ab. Der ’Worst-Case’ tritt bei einer Suche eines Gruppenmitglieds nach einer Gruppe einer anderen Organisation unter Angabe eines Mitglieds
dieser ein ((∗, grom em, Ex )). Die Anfrage wird über die zuständige Organisation zur
Zielorganisation hinunter zu dem Gruppenmitglied Ex geleitet.
8.1.3. Verbindung der virtuellen und organisatorischen Ebene
Es werden nun zwei Varianten vorgestellt, die beiden Ebenen miteinander zu verbinden. In beiden Fällen werden die Elemente der Ebenen mit gleichen Eigenschaften bzgl. der Hochverfügbarkeit und Netzanbindung aufeinander abgebildet. In den
Experimenten werden Organisationen und Super-Peers ähnliche Eigenschaften zugeschrieben, da sie einen Kommunikationsengpass darstellen. So entspricht die Anzahl
der Organisationen denen der vorhandenen Super-Peers. Ebenso könnten Projekte
als weiterer Engpass angesehen werden, so dass die Anzahl an Super-Peers hiermit
steigen würde. Die Abbildung der weiteren Elemente auf Peers eines Clusters variiert
jedoch.
Variante 1
Alle weiteren organisatorischen Elemente treten im Netzwerk als einfache Peers auf.
Peers, die ein organisatorisches Element Ex darstellen, gehören dem Cluster eines
104
8.1. Vorschlag eines organisations-orientierten Suchverfahrens für
Super-Peer-Architekturen
Super-Peers Sy an, wobei eine Abbildungsfunktion h definiert wird, die ein organisatorisches Element eindeutig auf eine Super-Peer-ID abbildet und schließlich einem
beliebigen Peer Pz dieses Super-Peers zugeordnet wird (Ex − > Sy − > Pz ). Durch
eine Gleichverteilung der Abbildungfunktion stimmt die Größe der einzelnen Cluster
nahezu überein. Abbildung 8.1 veranschaulicht in einem Ausschnitt die gleichverteilten Verknüpfungen.
or
g
O0
or
P00
g_
o
pr
org_org
org
_p
ro
p
G010
O
h(
h(
0
01
1
g ro
ro _
O2
h
)=
0
P
(S
)=
h(
)
0
SP
p ro
gr o
CP0_0
G011
em
_m
gro
_m
em
CP1_5
SP1
SP0
CP0_1
CP2_3
SP2
SP3
CP3_4
Cluster SP0
_gr
o
CP1_9
)
0
rg
P01
M0110
M
o
g_
or
g
or
_o
r
O3
g_
or
g
O1
CP2_2
M0111
h(M0111)=
h(SP1)
h(G011)=h
h(P01
(SP2)
P3)
) =h ( S
CP3_7
Chord-Ring
Bild 8.1.. Ausschnitt der Ebenenverknüpfung, die durch die gleichverteilte Verbindungsfunktion h entstehen
Variante 2
In dieser Variante wird auf eine Gleichverteilung zu Gunsten der Lokalitätseigenschaften verzichtet. Jeder Teilast einer Hierarchie beginnend bei einer Organisation wird
auf einen Super-Peer und dessen Cluster abgebildet. Durch die hohe Lokalität werden Suchen innerhalb einer Organisation auch innerhalb eines Clusters geroutet. Im
Falle größerer Organisationen (wenige Organisationselemente) kann die Anzahl an
Super-Peers steigen, in dem Projekte ebenfalls auf Super-Peers abgebildet werden.
Bei obiger Suche würde dann ein fester Teilbereich des P2P-Netzwerkes durchsucht.
Die verursachte Last weitet sich nicht auf andere Bereiche des Netzwerkes aus. Abbil-
105
8. Schlussfolgerung und Ausblick
dung 8.2 veranschaulicht die Verknüpfungen mit bleibenden Lokalitätseigenschaften.
O1
0
)
Cluster SP0
)
M3110
P2
)
)=h
(SP
2
M0110
G011
em
_m
gro
gro
_m
em
h(SP2)
gro
(S
)=
h
10
31
CP1_5
CP1_9
CP0_0
CP0_1 SP1
CP0_2
SP0
SP2 CP2_3
CP2_2
SP3
CP2_5
CP3_4
CP3_7
h(
M
)
(SP
pro
_
3 11
0
)=h
G311
P01
h(G
(SP
0
P0)
)=h(S
)=h
h (O
_g
ro
h(P31)=
00
h(G010
h (P
G010
P31
pro
ro
_g
pro
h(SP0)
P00
pro
h(M0110)=
g
or
_p
ro
O2
org_org
org
_
org
h(O3)=h(SP2)
or
g_
or
g
rg
_o
org
O0
ro
_p
O3
g
or
g_
or
Chord-Ring
Bild 8.2.. Ausschnitt der Ebenenverknüpfung, die durch die Organisationen abbildende Verbindungsfunktion h entstehen
8.2. Zusammenfassung und Fazit
Motiviert durch eine organisations-orientierte Domäne wurde im Rahmen dieser Arbeit ein Überblick über bestehende Suchverfahren in Peer-to-Peer (P2P) Architekturen geschaffen, der Aufschluss über die Funktionsweise der Verfahren sowie deren
Gemeinsamkeiten und Unterschiede gibt. Dieser Überblick diente der Entwicklung
eines generischen Simulators, der keine Einschränkungen bezüglich der zu untersuchenden Verfahren stellt. Neben der Simulation von P2P-Architekturen sollte nun
ein organisations-orientierte Overlay zusätzlich berücksichtigt werden, um als abschließendes Ergebnis dieser Arbeit ein Suchverfahren für organisations-orientierte
Super-Peer-Architekturen vorzuschlagen.
Die vorgestellte Arbeit unterteilt sich demnach in verschiedene Teilaufgaben, die direkt voneinander abhängig sind, so dass der auf eigenen Simulationen beruhende
106
8.3. Anknüpfungspunkte und Ausblick
Vorschlag eines domänen-spezifischen Suchverfahrens die Erfüllung der vorangegangenen Teilaufgaben bedingt. Die resultierenden Ziele dieser Arbeit werden nun kurz
zusammengefasst.
Angesichts der starken Entwicklung von Suchverfahren für P2P-Architekturen, existiert eine Vielzahl an Verfahren, die jedoch bisher nicht zusammenfassend betrachtet
wurden. Der hier gegebene Überblick von ca. 40 Verfahren mit jeweiligen Verfeinerungen stellt einen umfassenden Einblick in die Entwicklung der vergangenen Jahre
dar.
Simulatoren für P2P-Architekturen sind keine Neuerung. Viele der bisherigen Simulatoren entstanden durch die Entwicklung neuer Suchverfahren, um diese auf ihre
Eigenschaften hin zu untersuchen. Hierbei wurden spezielle Annahmen getätigt, die
den generellen Einsatz ausschließen. Weitere Simulatoren entstanden, die entweder
spezielle Eigenschaften untersuchen und dahingehend ausgelegt sind oder den Einsatz
erschwierigen, da keine Dokumentation erstellt wurde. Die grafische Visualisierung
sowie die Bereitstellung von Exportmöglichkeiten der gelieferten Rohdaten wurden
fast ausnahmslos vernachlässigt.
Der in dieser Arbeit entwickelte Simulator eaSim wurde ganzheitlich entworfen. Die
nicht benötigte Funktionaltität des Ein- und Austretens von Peers kann durch die
Implementierung vorgegebener Schnittstellen erstellt werden. Durch die allgemeine
Modellierung lassen sich verschiedene Architekturstile simulieren. Die domänenspezifische Simulation ist optional, so dass ein Einsatzgebiet hierdurch nicht beschränkt
wird. Die Arbeit wird erleichtert, indem Suchalgorithmen per Introspektion durch
eine intuitive Oberfläche verwendet werden und diese den Fortgang der Simulation
durch eine grafische zeitabhängige Darstellung der gewählten Metriken visualisiert.
Der Vorschlag eines organisations-orientierten Suchverfahrens ist an das DHT-Suchverfahren von Mizrak et.al. (Abschnitt 3.3.1) angelehnt. Verfahren, die verteilte Hashtabellen verwenden, lassen keine ungenauen Suchanfragen zu, da hierüber kein eindeutiger Hash-Wert berechnet werden kann. Das vorgeschlagene Verfahren umgeht
diese Einschränkung durch die Hinzunahme eines anderen Verfahrens innerhalb des
organisatorischen Overlays, das ungenaue Suchanfragen interpretieren kann.
Zusammenfassend ermöglicht die vorliegende Arbeit in Verbindung mit dem erstellten
Softwareprodukt die Simulation unterschiedlichen Verhaltens von Architekturelementen (hier Peers).
8.3. Anknüpfungspunkte und Ausblick
Im Laufe einer Entwicklung und dem damit verbundenen tieferen Einblick in den
Untersuchungsbereich ergeben sich neue Fragen, die es zu klären gilt. Somit ergeben
sich auch hier weitergehende Ansätze.
107
8. Schlussfolgerung und Ausblick
Komplexe Zusammenhänge werden häufig aus Zeit- und Kostengründen simuliert.
Der, meiner Ansicht nach, wichtigste Aspekt dieser Simulationen, ist die Aussagekraft
dieser. Simulationen bedingen einer Verifikation und Validation, die sich jedoch häufig
als recht schwierig erweist. Systeme, die in der Realität noch nicht existieren, können
keine Informationen über den realen Ablauf liefern, so dass lediglich Hypothesen
überprüft werden können. Die automatische Überprüfung von Verhaltenshypothesen
wie auch von dem realen Verhalten eines Systems könnte dem Simulator durch eine
geeignete Datenstruktur beigefügt werden, so dass im Anschluss einer Simulation eine
automatische Überprüfung stattfände.
Für Simulationen mit wenigen Elementen wäre eine grafische Visualisierung der zurückgelegten Wege einzelner Nachrichten denkbar. Diese könnte in Form eines pulsierenden Netzwerkes ablaufen, das zur Laufzeit Aufschluss über Veränderungen aufzeigt.
Das Desmo-J Rahmenwerk hält eine Reihe an Konstrukten vor, die genutzt werden
können. Die Nutzung erwies sich als überaus positiv und soll an dieser Stelle weiterempfohlen werden. Durch Profiler-Test ergab sich jedoch eine erhöhte CPU-Zeit des
Schedulers, da sich die interne Struktur der Warteschlangen sehr allgemein, jedoch
für diese Arbeit weniger effizient erwies. Eine effizientere Arbeitsweise des Schedulers
könnte die Simulationsgeschwindigkeit beträchtlich erhöhen und ließe sich durch den
modularen Aufbau von Desmo-J mit wenig Aufwand vollziehen.
Der interne objekt-orientierte Aufbau aller Entitäten (Peers und Nachrichten) während der Simulation vereinfacht die Handhabung, birgt jedoch auch Performanzeinbußen. Simulationen von mehr als 50000 Elementen und regem Nachrichtenverkehr
sind angesichts der entstehenden Speicherlast nicht durchzuführen. Eine Verschlankung der Datenstruktur würde dieses Problem verringern.
108
Literaturverzeichnis
[AB05] Adelsberger, Heimo H. und Dr. M. Bick: Simulation - Begriffe und Modellierung. http://vawi74.wi-inf.uni-essen.de/ss05sim/
05Simulation_SS05.pdf, Letzter Zugriff 7.07.2005, 2005. Vorlesungsskript der Universität Duisburg-Essen.
[ALPH01] Adamic, Lada A., Rajan M. Lukose, Amit R. Puniyani und
Bernardo A. Huberman: Search in Power-Law Networks. CoRR,
cs.NI/0103016, 2001.
[BA99] Barabási, Albert-László und Réka Albert: Emergence of scaling
in random networks. In: Science 286, Seiten 509–512, 1999.
[Ban98] Banks, Jerry: Handbook of Simulation. Wiley-Interscience, 1998.
[Ban99] Banks, Jerry: Introduction to simulation. In: Winter Simulation Conference, Seiten 7–13, 1999.
[BCAA04] Barbosa, Marcelo Werneck, Melissa Morgado Costa, Jussara M. Almeida und Virgílio A. F. Almeida: Using locality
of reference to improve performance of peer-to-peer applications. SIGSOFT Softw. Eng. Notes, 29(1):216–227, 2004.
[BEH+ 01] Brandes, Ulrik, Markus Eiglsperger, Ivan Herman, Michael
Himsolt und M. Scott Marshall: GraphML Progress Report. In:
Graph Drawing, Seiten 501–512, 2001.
[Ben75] Bentley, J. L.: Multidimensional binary search trees used for associative searching. In: Communications of the ACM, Seiten 509–517, 1975.
Volume 18.
[BH04] Bischofs, L. und W. Hasselbring: A Hierarchical Super Peer Network for Distributed Software Development. In: Dustdar, S., H.C.
Gall und A. de Lucia (Herausgeber): Proceedings of the Workshop
on Cooperative Support for Distributed Software Engineering Processes
(CSSE 2004), Seiten 99–106, Linz, Austria, 9 2004. Austrian Computer
Society.
109
Literaturverzeichnis
[BHPW04] Bauer, Daniel, Paul Hurley, Roman Pletka und Marcel
Waldvogel: Bringing Efficient Advanced Queries to Distributed Hash
Tables, Mai 2004.
[BHW05] Bischofs, Ludger, Wilhelm Hasselbring und Timo Warns:
Handbuch der Software-Architektur, Kapitel Peer-to-Peer-Architekturen.
dpunkt Verlag, 2005. voraussichtliches Erscheinungsdatum Dez. 2005.
[BMM02] Babaoglu, Özalp, Hein Meling und Alberto Montresor: Anthill: A Framework for the Development of Agent-Based Peer-to-Peer Systems. In: ICDCS, Seiten 15–22, 2002.
[BMR+ 96] Buschmann, Frank, Regine Meunier, Hans Rohnert, Peter
Sommerlad und Michael Stad: Pattern-Oriented Software Architecture — A System of Patterns. John Wiley Press, 1996.
[BS05] Bischofs, Ludger und Ulrike Steffens: Organisation-oriented
Super-Peer Networks for Digital Libraries. In: Agosti, Maristella, Hans-Jörg Schek und Can Türker (Herausgeber): Peer-to-Peer,
Grid, and Service-Orientation in Digital Library Architectures: 6th Thematic Workshop of the EU Network of Excellence DELOS, S. Margherita
di Pula, Cagliari, Italy, 24-25 June, 2004. Revised Selected Papers, Band
3664 / 2005 der Reihe Lecture Notes in Computer Science, Seiten 45–62.
Springer, 2005.
[BY01] Beverly
Yang,
Hector
Garcia-Molina:
Efficient
Search
in
Peer-to-Peer
Networks.
Technischer
Bericht,
Computer
Science
Department,
Stanford
University,
http://www.cs.utexas.edu/users/browne/CS395Tf2002/Papers/GarciaMolina-showDoc.pdf, 2001.
[CGM02] Crespo, Arturo und Hector Garcia-Molina: Routing indices
for peer-to-peer systems. Technischer Bericht, Stanford University,
http://www-db.stanford.edu/crespo/publications/crespoa ri.pdf, 2002.
[Cla01] Claassen, Sönke: Entwicklung anwendungsspezifischer Modellkomponenten für Produktionssysteme im Rahmen eines Simulationsframeworks.
Diplomarbeit, Universität Hamburg, 2001.
[CNY03] Chen, Kathryn, Loai Naamani und Karim Yehia: miChord: Decoupling Object Lookup from Placement in DHT-Based Overlays, 2003.
[CSWH01] Clarke, Ian, Oskar Sandberg, Brandon Wiley und Theodore W. Hong: Freenet: A Distributed Anonymous Information Storage
110
Literaturverzeichnis
and Retrieval System. Lecture Notes in Computer Science, 2009:46+,
2001.
[DLS+ 04] Dabek, Frank, Jinyang Li, Emil Sit, James Robertson,
M. Frans Kaashoek und Robert Morris: Designing a DHT for
Low Latency and High Throughput. In: NSDI, Seiten 85–98, 2004.
[DSX04] Dongfeng, Chen, Yang Shoubao und Peng Xiaoyan: TaChord:
a Chord System Using Topology-Aware Routing and Super Peers, 2004.
Department of Computer Science, University Science and Technology of
China.
[ER59] Erdos, P. und A. Renyi: On random graphs, 1959. Publ. Math. Debrecen, 6:290–297.
[Fer03] Ferber, Reginald: Information Retrieval: Suchmodelle und DataMining-Verfahren für Textsammlungen und das Web. dpunkt Verlag,
März 2003.
[FM03] Freedman, Michael J. und David Mazières: Sloppy Hashing and
Self-Organizing Clusters. In: IPTPS, Seiten 45–55, 2003.
[GBL+ 03] Gupta, Indranil, Ken Birman, Prakash Linga, Al Demers und
Robbert van Renesse: Kelips: Building an Efficient and Stable P2P
DHT Through Increased Memory and Background Overhead. In: Proceedings of the 2nd International Workshop on Peer-to-Peer Systems (IPTPS ’03), 2003.
[GGG+ 03] Gummadi, P. Krishna, Ramakrishna Gummadi, Steven D. Gribble, Sylvia Ratnasamy, Scott Shenker und Ion Stoica: The
impact of DHT routing geometry on resilience and proximity. In: SIGCOMM, Seiten 381–394, 2003.
[GHJV95] Gamma, Erich, Richard Helm, Ralph Johnson und John Vlissides: Design Patterns : Elements of Reusable Object-Oriented Software.
Addison Wesley, March 1995.
[Gil05] Gilbert, David: The JFreeChart Class Library. http://www.jfree.
org/jfreechart/jfreechart-1.0.0-rc1-install.pdf, Letzter Zugriff 7.07.2005, 2005.
[GS93] Garlan, David und Mary Shaw: An Introduction to Software Architecture. In: Ambriola, V. und G. Tortora (Herausgeber): Advances
in Software Engineering and Knowledge Engineering, Seiten 1–39, Singapore, 1993. World Scientific Publishing Company.
111
Literaturverzeichnis
[GSG02] Gummadi, P. Krishna, Stefan Saroiu und Steven D. Gribble: A
measurement study of Napster and Gnutella as examples of peer-to-peer
file sharing systems. Computer Communication Review, 32(1):82, 2002.
[GSGM03] Ganesan, P., Q. Sun und H. Garcia-Molina: YAPPERS: A Peerto-Peer Lookup Service Over Arbitrary Topology, 2003.
[Har04] Hargreaves, Tom: giFT-FastTrack.
http://gift-fasttrack.
berlios.de/, Letzter Zugriff 7.07.2005, 2004.
[HF56] Hall, A. D. und R. E. Fagen: Definition of System. General Systems
1, 1956.
[HJS+ 03] Harvey, Nicholas, Michael B. Jones, Stefan Saroiu, Marvin
Theimer und Alec Wolman: Skipnet: A scalable overlay network with
practical locality properties. In: In proceedings of the 4th USENIX Symposium on Internet Technologies and Systems (USITS ’03), Seattle, WA,
March 2003.
[Hor00] Horstmann, O.: Finite-Elemente-Gitter für das Küsteningenieurwesen
auf der Basis hierarchischer Gebietsmodelle. Dissertation, BTU Cottbus,
2000. ISBN 3-934934-01-3.
[Jes05] Jesi, Gian Paolo: PeerSim: build a new protocol for the peersim simulation framework. http://peersim.sourceforge.net/tutorial1/
tutorial1.pdf, Letzter Zugriff 7.07.2005, 2005.
[Jos03] Joseph, Sam: An Extendible Open Source P2P Simulator. P2P Journal,
Seiten 1–15, November 2003.
[KAD+ 04] Karbhari, Pradnya, Mostafa H. Ammar, Amogh Dhamdhere,
Himanshu Raj, George F. Riley und Ellen W. Zegura: Bootstrapping in Gnutella: A Measurement Study. In: PAM, Seiten 22–32,
2004.
[KGZY02] Kalogeraki, Vana, Dimitrios Gunopulos und D. ZeinalipourYazti: A Local Search Mechanism for Peer-to-Peer Networks. In: Proceedings of the Eleventh International Conference on Information and
Knowledge Management (CIKM), Seiten 300–307, 2002. http://www.
cs.ucr.edu/~vana/kalogeraki-cikm02.pdf.
[KK03] Kaashoek, M. Frans und David R. Karger: Koorde: A simple
degree-optimal distributed hash table. In: Proceedings of the 2nd International Workshop on Peer-to-Peer Systems (IPTPS ’03), 2003.
112
Literaturverzeichnis
[Kle00] Kleinberg, Jon: The Small-World Phenomenon: An Algorithmic Perspective. In: Proceedings of the 32nd ACM Symposium on Theory of
Computing, 2000.
[LCC+ 02] Lv, Qin, Pei Cao, Edith Cohen, Kai Li und Scott Shenker:
Search and replication in unstructured peer-to-peer networks. In: ICS,
Seiten 84–95, 2002.
[LCP+ 04] Lua, Eng Keong, Jon Crowcroft, Marcelo Pias, Ravi Sharma und Steven Lim: A Survey and Comparison of Peer-to-Peer Overlay Network Schemes. Technischer Bericht, IEEE COMMUNICATIONS
SURVEY AND TUTORIAL, 2004.
[LK99] Law, Averill M. und David M. Kelton: Simulation Modeling and
Analysis. McGraw-Hill Higher Education, 1999.
[Mat02] Matthies, Michael: Einführung in die Systemwissenschaft, 2002. Vorlesungsskript Uni Kassel WS 2002 / 2003.
[MBR03] Manku, G., M. Bawa und P. Raghavan: Symphony: Distributed hashing in a small world. In: 4th USENIX Symposium on Internet Technologies and Systems, 2003.
[MCKS03] Mizrak, Alper Tugay, Yuchung Cheng, Vineet Kumar und
Stefan Savage: Structured Superpeers: Leveraging Heterogeneity to
Provide Constant-Time Lookup. In: Proceedings of the Third IEEE Workshop on Internet Applications (WIAPP’03), Seiten 104–111, San Jose,
California, 2003.
[Mil67] Milgram, S.: The small world problem. In: Psychology Today, (2):60–
67, 1967.
[MK02] Menascé, Daniel A. und Lavanya Kanchanapalli: Probabilistic scalable P2P resource location services. SIGMETRICS Perform.
Eval. Rev., 30(2):48–58, 2002.
[MLMB01] Medina, Alberto, Anukool Lakhina, Ibrahim Matta und
John W. Byers: BRITE: An Approach to Universal Topology Generation. In: MASCOTS, Seiten 346–, 2001.
[MM02] Maymounkov, P. und D. Mazieres: Kademlia: A peer-to-peer information system based on the XOR metric, 2002.
[MNR02] Malkhi, Dahlia, Moni Naor und David Ratajczak: Viceroy: a
scalable and dynamic emulation of the butterfly. In: PODC, Seiten 183–
192, 2002.
113
Literaturverzeichnis
[Mon05] Monk: EMule - Network Guide. http://www.emule-project.net/
home/perl/help.cgi?l=1&rm=show_topic&topic_id=232, Letzter Zugriff 7.07.2005, 2005. EMule - Network Guide.
[MS03a] Mischke, Jan und Burkhard Stiller: Peer-to-Peer Overlay Network
Management through AGILE. In: Integrated Network Management, Seiten 337–350, 2003.
[MS03b] Mischke, Jan und Burkhard Stiller: Rich and Scalable Peer-toPeer Search with SHARK. In: Active Middleware Services, Seiten 112–
121, 2003.
[NW03] Naor, Moni und Udi Wieder: Novel architectures for P2P applications: the continuous-discrete approach. In: SPAA, Seiten 50–59, 2003.
[Pag91] Page, Bernd: Diskrete Simulation, Eine Einführung mit Modula-2.
Springer-Verlag, 1991.
[PLC00] Page, Bernd, Tim Lechner und Sönke Claassen: Objektorientierte
Simulation in Java. Libri Books on Demand, 2000.
[PR04] Pyun, Young June und Douglas S. Reeves: Constructing a Balanced, (log(N)/loglog(N))-Diameter Super-Peer Topology for Scalable P2P
Systems. In: Peer-to-Peer Computing, Seiten 210–218, 2004.
[Pre01] Prechelt, Lutz: Kontrollierte Experimente in der Softwaretechnik.
Springer Verlag, 2001.
[PRR97] Plaxton, C. Greg, Rajmohan Rajaraman und Andrea W. Richa: Accessing Nearby Copies of Replicated Objects in a Distributed Environment. In: ACM Symposium on Parallel Algorithms and Architectures,
Seiten 311–320, 1997.
[Pug90] Pugh, William: Skip Lists: A Probabilistic Alternative to Balanced
Trees. Commun. ACM, 33(6):668–676, 1990.
[RFH+ 01] Ratnasamy, Sylvia, Paul Francis, Mark Handley, Richard M.
Karp und Scott Shenker: A scalable content-addressable network. In:
SIGCOMM, Seiten 161–172, 2001.
[RMH98] Renesse, Robbert Van, Yaron Minsky und Mark Hayden: A
Gossip-Style Failure Detection Service. In: Proceedings of the IFIP International Conference on Distributed Systems Platforms and Open Distributed Processing, 1998.
114
Literaturverzeichnis
[RV03] Reynolds, Patrick und Amin Vahdat: Efficient Peer-to-Peer Keyword Searching. In: Middleware, Seiten 21–40, 2003.
[Sch01] Schollmeier, Rüdiger: A Definition of Peer-to-Peer Networking for
the Classification of Peer-to-Peer Architectures and Applications. In:
Peer-to-Peer Computing, Seiten 101–102, 2001.
[Shi00] Shirky, Clay: What is P2P... And What Isn’t? http://www.openp2p.
com/pub/a/p2p/2000/11/24/shirky1-whatisp2p.html, zuletzt besucht am 17.10.2005, 2000.
[SM04] Schindelhauer, Christian und Peter Mahlmann: Algorithmen für
Peer-to-Peer-Netzwerke. Vorlesungsskript der Fakultät EIM, Institut für
Informatik Universität Paderborn, 2004. Version 4.4.1.
[SMK+ 01] Stoica, Ion, Robert Morris, David R. Karger, M. Frans Kaashoek und Hari Balakrishnan: Chord: A scalable peer-to-peer lookup
service for internet applications. In: SIGCOMM, Seiten 149–160, 2001.
[SMZ03] Sripanidkulchai, K., B. Maggs und H. Zhang: Efficient Content
Location Using Interest-Based Locality in Peer-toPeer Systems, 2003.
[SR01] Singla, Anurag und Christopher Rohrs: Ultrapeers: Another Step
Towards Gnutella Scalability. http://rfc-gnutella.sourceforge.
net/Proposals/Ultrapeer/Ultrapeers.htm, Letzter Zugriff 7.07.2005,
2001. Working Draft.
[SR02] Singla, Anurag und Christopher Rohrs: Ultrapeers:Another Step
Towards Gnutella Scalability. http://rfc-gnutella.sourceforge.
net/src/Ultrapeers_1.0.html, 2002. Version 1.0.
[SW03] Steinmetz, R. und K. Wehrle: Peer-to-Peer-Networking und - Computing. Informatik-Spektrum, 27(1):51-54, Februar 2004, 2003.
[TD03] Ting, Nyik San und Ralph Deters: 3LS – A Peer-to-Peer Network
Simulator. In: P2P ’03: Proceedings of the 3rd International Conference
on Peer-to-Peer Computing, Seiten 212–213. IEEE Computer Society
Press, 2003.
[TR03a] Tsoumakos, Dimitrios und Nick Roussopoulos: Adaptive probabilistic search for peer-to-peer networks. Technischer Bericht, University of Maryland, http://www.cs.umd.edu/dtsouma/objects/P2P2003.pdf,
2003.
[TR03b] Tsoumakos, Dimitrios und Nick Roussopoulos: A Comparison of
Peer-to-Peer Search Methods. In: WebDB, Seiten 61–66, 2003.
115
Literaturverzeichnis
[TR03c] Tsoumakos, Dimitrios und Nick Roussopoulos: A Comparison of
Peer-to-Peer Search Methods. In: WebDB, Seiten 61–66, 2003.
[TR05] Tsoumakos, Dimitrios und Nick Roussopoulos: AGNO: An Adaptive Group Communication Scheme for Unstructured P2P Networks. In:
Euro-Par, Seiten 1183–1193, 2005.
[Tso03] Tsoumakos, Dimitrios: Analysis and Comparison of P2P Search Methods, 2003.
[TXM03] Tang, Chunqiang, Zhichen Xu und Mallik Mahalingam: pSearch:
information retrieval in structured overlays. Computer Communication
Review, 33(1):89–94, 2003.
[VL03] Vuong, Son T. und Juan Li: ECSP: An Efficient Cluster Based P2P
Architecture. In: International Conference on Internet Computing, Seiten
860–865, 2003.
[VRBR94] Victor R. Basili, Gianluigi Caldiera und H. Dieter Rombach:
Goal Question Metric Paradigm. In: Encyclopedia of Software Engineering, Seiten 528–532. John Wiley & Sons, 1994.
[WL03] Wang, Chonggang und Bo Li: Peer-to-peer overlay networks: A survey. Technischer Bericht, Department of Computer Science, HKUST,
2003.
[XMH03] Xu, Zhiyong, Rui Min und Yiming Hu: HIERAS: A DHT Based
Hierarchical P2P Routing Algorithm. In: ICPP, Seiten 187–, 2003.
[XZ02] Xu, Zhichen und Zheng Zhang: Building low-maintenance expressways for p2p systems. Technischer Bericht HPL-2002-41, HP Laboratories Palo Alto, 2002.
[Yat03] Yatin, Yatin Chawathe: Making Gnutella-like P2P Systems Scalable,
2003.
[YGM02] Yang, Beverly und Hector Garcia-Molina: Improving Search in
Peer-to-Peer Systems. In: Proceedings of the 22nd International Conference on Distributed Computing Systems (ICDCS), 2002.
[YGM03] Yang, Beverly und Hector Garcia-Molina: Designing a SuperPeer Network. In: ICDE, Seiten 49–, 2003.
[YJB02] Yook, Soon-Hyung, Hawoong Jeong und Albert-Laszlo Barabasi: Modeling the Internet’s large-scale topology. PNAS, 99(21):13382–
13386, 2002.
116
Literaturverzeichnis
[ZCB96] Zegura, Ellen W., Kenneth L. Calvert und Samrat Bhattacharjee: How to Model an Internetwork. In: INFOCOM, Seiten 594–
602, 1996.
[ZDH+ 02] Zhao, Ben Y., Yitao Duan, Ling Huang, Anthony D. Joseph
und John Kubiatowicz: Brocade: Landmark Routing on Overlay Networks. In: IPTPS ’01: Revised Papers from the First International Workshop on Peer-to-Peer Systems, Seiten 34–44, London, UK, 2002. SpringerVerlag.
[ZKJ01] Zhao, B. Y., J. D. Kubiatowicz und A. D. Joseph: Tapestry: An
Infrastructure for Fault-tolerant Wide-area Location and Routing. Technischer Bericht UCB/CSD-01-1141, UC Berkeley, April 2001.
117
A. Suchstrategien
Suchstrategien stellen einen Schwerpunkt innerhalb des Simulators dar. Um bestehende Suchstrategien zu verwenden und zu konfigurieren, sowie neue zu erstellen wird
im Folgenden detailliert auf den Aufbau dieser eingegangen und anschließend anhand
eines Beispiels verdeutlicht.
A.1. Aufbau einer Suchstrategie
Um eine neue Suchstrategie zu entwicklen müssen einige Voraussetzungen erfüllt werden. Jede Suchstrategie bildet eine Instanz der abstrakten Klasse easim.strategy.AbstractStrategy (Listing A.1). Hierbei müssen die vier beschriebenen abstrakten Methoden implementiert werden. Die ersten beiden Methoden getDescription() und
getDefaultValues() werden zur Darstellung der Strategie in der grafischen Version des Simulators verwendet. Besonderse Achtsamkeit ist bei der Implementierung
der Methode getDefaultValues() geboten, da hier die Reihenfolge und die korrekte Typisierung der initialen Parameter mit denen des parametrisierten Konstruktors
übereinstimmen muss. Ein parameterloser Konstruktor ist zudem zu implementieren,
um mittels Introspektion die genannten Methoden aufzurufen. In dem Listing A.2
werden die beiden zuletzt beschriebenen Vorraussetzungen am Beispiel deutlich.
Von entscheidender Bedeutung für die Verwendung der Strategien ist die Methoden
search(). Zu jedem Zeitpunkt während der Simulation, zu dem ein Element eine neue
Nachricht erhält werden diese Methoden in der abgebildeten Reihenfolge aufgerufen.
Jegliche logische Funktionalität ist somit in dieser Methode enthalten.
1
package easim . strategy ;
2
3
public abstract class AbstractStrategy {
4
5
6
7
8
9
10
/* *
* Description of this strategy algorithm
*
* @return mapping description
*/
public abstract String getDescription () ;
11
12
118
/* *
A. Suchstrategien
* Getter for all default values . </ br >
* The order of defined public fields must be the same
as in the returned array
* @return default values for specified public fields
*/
public abstract Object [] getDefaultValues () ;
13
14
15
16
17
18
/* *
* This method contains the implementation of a search
algorithm , </ br >
* which will be assigned to an simulation element .
Because elements needs </ br >
* specific data , for each element an implementation
should be written .
*
* @param element Element to seach
* @param msg
Message with search criteriy etc .
* @return success of searching local
*/
public abstract boolean search ( SimulationElement
element , Message msg ) ;
19
20
21
22
23
24
25
26
27
28
29
}
Listing A.1. Aufbau einer abstrakten Suchstrategie
A.2. Beispiel einer Suchstrategie
Das in dem Listing A.2 dargestellte Listing verdeutlicht den Rumpf einer Beispielstrategie ohne Suchalgorithmus. Zubeachten sind die globalen Felder global var1
und global var2. Globale Felder (ausgedrückt durch das Schlüsselwort ’public’) entsprechen in ihrer Reihenfolge und Typisierung genau denen des parametrisierten
Konstruktors und Rückgabewertes der Methode getDefaultValues(). In der aktuellen Version des Simulators werden als Typen lediglich java.lang.String und
java.lang.Integer unterstützt. Primitive Typen wie int und short sind mittels Introspektion nicht zu erfassen und können daher nicht verwendet werden.
119
A. Suchstrategien
1
package easim . strategy ;
2
3
public class O r g a n i s a t i o n al S t r a t e g y _S a m p l e extends
AbstractStrategy {
4
public Integer global_var1 ;
public Integer global_var2 ;
5
6
7
private int local_var1 ;
8
9
/* *
* Default constructor for retrieving the default values
of declared fields
*/
public O r g a n i s a t i o n a l S t r a t e g y _ R a n d o m W a l k s () {}
10
11
12
13
14
public O r g a n i s a t i o n a l S t r a t e g y _ R a n d o m W a l k s ( Integer var1 ,
Integer var2 ) {
this . global_var1 = var1 ;
this . global_var2 = var2 ;
15
16
17
18
local_var1 = 1;
19
}
20
21
public String getDescription () {
return " This message will be displayed in the
strategy settings panel . " ;
}
22
23
24
25
public Object [] getDefaultValues () {
return new Object []{ new Integer (1) , new Integer (8) };
};
26
27
28
29
public boolean search ( SimulationElement element , Query
msg ) {
..
}
30
31
32
33
}
Listing A.2. Beispiel einer Suchstrategie
120
A. Suchstrategien
A.3. Beispiel ORW
Der in A.3 dargestellte Algorithmus beschreibt aus Platzgründen lediglich die wichtigsten Konstrukte der Suchmethode ORW, die in dem Experiment ORW-OIBFS
(Abschnitt B.3.1) verwendet wurde.
..
2 public void search ( SimulationElement element , Query query )
{
3
O rg an i sa t io na l El em e nt myElement = ( OrganisationalElement )
element ;
4
Orga nisation alQuery myQuery = ( OrganisationalQuery ) query ;
1
5
// for later backtracking
myQuery . getHistory () . addElementToHistory ( element ) ;
6
7
8
// only messages with with same id or new initial messages
are forwared
// a copy of a already forwarded message will not forwarded
again
if (! myElement . h as A l r ea d yForwardedMsg ( myQuery .
getI nitialM essageI d () )
|| ( myElement . h a s A lr e a d y ForwardedMsg ( myQuery .
getI nitialM essageI d () )
&& myElement . h a sA l r e ad y F orwardedMsg ( myQuery . getId () ) ) ) {
9
10
11
12
13
14
// remember this message
myElement . rem em ber Fo rwa rdedMsg ( myQuery . getId () ) ;
myElement . rem em ber Fo rwa rdedMsg ( myQuery .
getI nitialM essageI d () ) ;
15
16
17
18
// test on query matching and sends an answer
boolean answered = canAnswerMessage ( myElement , myQuery ) ;
19
20
21
if ((! answered || query . getAnswerSize () < maxAnswers )
&& ! query . maxHopsReached ( maxDepth . intValue () ) ) {
forward ( myElement , myQuery ) ;
} else {
// stop forwarding
}
} else {
// message was already forwarded before
}
22
23
24
25
26
27
28
29
30
31
}
121
A. Suchstrategien
32
..
Listing A.3. Beispiel einer Suchstrategie für organisatorische Elemente basierend
auf dem Verfahren Random-Walks mit Backtracking
A.4. Beispiel VC
Folgender Algorithmus beschreibt die wichtigsten Konstrukte der Suchstrategie VC
in Experiment ORW-VC (Abschnitt B.2.7).
..
public void search ( SimulationElement element , Query query )
{
3
SuperPeer myElement = ( SuperPeer ) element ;
4
VirtualQuery myQuery = ( VirtualQuery ) query ;
1
2
5
6
7
// ringsize for calculating difference between self and
target
int ringsize = Configurator . model . superPeers . length ;
8
9
10
// get the search criteria and the type
String searchType = myQuery . getSearchType () ;
11
12
String searchCriteria = myQuery . getSearchCriteria () ;
13
14
15
16
// my name and hash id
String myName = element . getName () ;
int myhashId = Integer . parseInt ( myName . substring (5 , myName
. length () - 2) ) ;
17
18
19
// target name and hash id
int targetHashId = ge tM appedSup er PeerId ( searchCriteria ) ;
20
21
22
// calculate difference on ring
int difference = getDifference ( myHashId , targetHashId ,
ringSize ) ;
23
24
25
26
122
// get the maximal 2 - exponent smaller than difference
int targetFingerId = getTargetFingerId ( difference ) ;
A. Suchstrategien
// get the target instance
if ( targetFingerId != 0) {
29
// target is a super - peer
30
SuperPeer target = getTargetFinger ( myElement ,
targetFingerId ) ;
31
// forward the message
32
sendMessage ( myElement , target , myQuery ) ;
33
} else {
34
if ( myElement . getElementData ( " organisationalName " ) .
contains ( searchCriteria ) ) {
35
// the target is the super - peer itself
36
// send to the upper layer
37
sendUp ( element , query ) ;
38
} else {
39
// the target is a known cluster - peer
40
destination = myElement . getMetadata () . getHostingPeer (
searchCriteria ) ;
41
// forward the message
42
sendMessage ( element , destination , query ) ;
43
}
44
}
45 ..
46 }
27
28
Listing A.4. Beispiel einer Suchstrategie für Super-Peers basierend auf dem ChordVerfahren
A.5. Beispiel OIBFS
Die Suchstrategie OIBFS des Experimentes ORW-OIBFS (Abschnitt B.3.2) ist in
Listing A.5 dargestellt.
public void search ( SimulationElement element , Query query )
{
2
O rg an i sa t io na l El e me nt myElement = ( OrganisationalElement )
element ;
3
Orga nisatio nalQuery myQuery = ( OrganisationalQuery ) query ;
1
4
5
if (! myQuery . getHistory () . historyContainsElement ( myElement
)) {
123
A. Suchstrategien
6
myQuery . getHistory () . addElementToHistory ( myElement ) ;
7
8
self = element . getName () ;
9
10
// set flags for searched element types
interpretQuery ( myQuery ) ;
11
12
13
// test whether this element is searched
boolean isDestination = sendAnswer ( myElement , myQuery ) ;
14
15
16
if (! isDestination ) {
// forward to a subset of all known neighbors bases on
their known relationship
forward ( myElement , myQuery ) ;
}
17
18
19
20
}
21
22
}
Listing A.5. Beispiel einer Suchstrategie für organisatorische Elemente basierend auf
einem Hierarchischen Verfahren mit Interpretation der vorhandenen Beziehungen
124
B. Experimente
Die in der Arbeit angesprochenen Experimente und Konfigurationen werden im Folgenden beschrieben. Zum Verständnis der Ausgaben sollten die in Abschnitt 5.2.1
dargestellten Metriken gelesen werden.
B.1. Aufbau der Beschreibungen
Den Konfigurationen der Experimente sind die jeweiligen Experimentvariablen zu
entnehmen. Weiterhin wird in textueller Form auf die Struktur (Topologie), das Verhalten (Suchverfahren) und den Treiber (Suchanfragen) eingegangen.
Zielsetzung Jeder methodisch aufgebaute Versuch beginnt mit einer Zielsetzung und
Erwartung, die an das Experiment gestellt wird. Hypothesen über den Ausgang
werden hierbei vernachlässigt.
Strukturbeschreibung durch die verwendete Topologie Da es sich um zu simulierende Netzwerke handelt, werden die Topologien als konstante Variablen modelliert. Die Detailliertheit der Beschreibungen wird gering gehalten, da die
Verwendung identischer Topologien im Vordergrund steht.
Verhaltensbeschreibung durch Ausprägung der Suchverfahren Der Vergleichbarkeit angemessen, werden nur geringe Änderungen in aufeinanderfolgenden Konfigurationen getätigt. Dieser Abschnitt ist für die Unterscheidung der Experimentvariablen verantwortlich.
Treiber in Form von Suchanfragen Die Initiierung der Simulation entsteht durch
die versendeten Suchanfragen. Diese werden nur in den ersten Simulationszyklen der Simulation gestellt. Eine fortwährende (realistische) Aussendung ist
nicht vorgesehen. Allgemein unterscheiden sich Anfragen anhand ihrer exakten
oder ungenauen Kriterien.
Rohdaten als Ausgabe Die Visualisierung der Simulation ist nur in der grafischen
Ansicht dargestellt. Die textuelle Ausgabe des Berichtes wird nur zur Berechnung der späteren Bewertung herangezogen, da dieser exakte Werte zu entnehmen sind.
125
B. Experimente
B.2. Experiment VRW-VC
B.2.1. Konfiguration VRW1“
”
Dieses Experiment1 ist darauf ausgelegt, die nötige Suchtiefe bei einer optimalen
Erfolgsrate und minimalen Netzlast zu ermitteln, wobei das Verfahren Random-Walks
(siehe Abschnitt 3.2.3) betrachtet wird. Es wird die virtuelle Ebene simuliert.
Topologie
Das betrachtete Netzwerk umfasst 1000 Knoten, bestehend aus 100 Super-Peers und
900 Peers, die jeweils gleichverteilt in Clustern den Super-Peers zugeordnet sind. Als
zur Suche bereitstehende Daten existieren lediglich die eindeutigen Namen der Peers,
die eine eindeutige Suche ermöglichen.
Suchverfahren
Jeder Typ des gewählten Architekturstils verfügt über eine eigene Suchstrategie.
Super-Peers verwenden das Verfahren Random-Walks. Die Aussendung der Walker,
sowie die maximale Tiefe einer Suchnachricht und deren Höchstgrenze an Antworten
beeinflussen als Parameter die Suche. Einfache Peers, die einem Cluster angehören,
werden lediglich durch die Parameter Suchtiefe und Antwortbegrenzung parametrisiert. Die Tabelle B.1 veranschaulicht die relevanten Parameter.
Tabelle B.1.. Parametereinstellungen zum Experiment VRW1
Parameter / Knotentyp
Super-Peer Peer
Maximale Tiefe
200
200
Maximale Anzahl an Walker
1
Höchstgrenze an Antworten
5
5
Suchanfragen
Suchanfragen beziehen sich auf Peernamen. Ressourcen werden in diesem Experiment
nicht berücksichtigt. Jeder Peername ist eindeutig. In den ersten zehn Simulationsschritten werden pro Zyklus durchschnittlich zwei Anfragen gestellt. Die Initiatoren
werden zufällig aus der Menge der Super-Peers wie auch Peers ermittelt.
1
Eine detaillierte Beschreibung des Experimentes ist der Konfigurationsdatei ’/input/config exp1.xml’ des Simulators zu entnehmen. Die Ausführung erfolgt mittels des ant-Aufrufes
’ant exp1’
126
B. Experimente
Bild B.1.. Ausgabe Experiment 1: a) Anfragen-Antworten Verhältnis (QAR) b)
Erfolgsrate der Anfragen (QSR) c) Anzahl an Antworten pro Anfrage (APM) d)
Schritte pro Antwort (HPQ) e) Virtuelle Nachrichten im System (VMS) f) Virtuelle
Nachrichten pro Element (VME)
127
B. Experimente
B.2.2. Konfiguration VRW2“
”
Dieses Experiment2 ist darauf ausgelegt, die Auswirkungen einer Erhöhung der Aussendung an Nachrichten auf die Erfolgsrate zu beobachten, wobei das Verfahren
Random-Walks (siehe Abschnitt 3.2.3) betrachtet wird. Es wird die virtuelle Ebene unabhängig simuliert.
Topologie
Die verwendete Topologie entspricht der in dem Experiment B.2.1 Beschriebenen.
Suchverfahren
Die Beschreibung entspricht dem vorangegangenen Experiment. Die Tabelle B.2 veranschaulicht die relevanten Parameter.
Tabelle B.2.. Parametereinstellungen zum Experiment VRW2
Parameter / Knotentyp
Super-Peer Peer
Maximale Tiefe
200
200
Maximale Anzahl an Walker
3
Höchstgrenze an Antworten
5
5
Suchanfragen
Es werden die gleichen Suchanfragen wie zuvor verwendet.
2
Eine detaillierte Beschreibung des Experimentes ist der Konfigurationsdatei ’/input/exp/config exp2.xml’ des Simulators zu entnehmen. Die Ausführung erfolgt mittels des ant-Aufrufes
’ant exp2’
128
B. Experimente
Bild B.2.. Ausgabe Experiment 2: a) Anfragen-Antworten Verhältnis (QAR) b)
Erfolgsrate der Anfragen (QSR) c) Anzahl an Antworten pro Anfrage (APM) d)
Schritte pro Antwort (HPQ) e) Virtuelle Nachrichten im System (VMS) f) Virtuelle
Nachrichten pro Element (VME)
129
B. Experimente
B.2.3. Konfiguration VRW3“
”
Dieses Experiment3 ist darauf ausgelegt, das Suchverhalten bei realen Suchtiefen4 zu
untersuchen, wobei das Verfahren Random-Walks (siehe Abschnitt 3.2.3) betrachtet
wird. Es wird die virtuelle Ebene unabhängig simuliert.
Topologie
Die verwendete Topologie entspricht der in dem Experiment B.2.1 Beschriebenen.
Suchverfahren
Die Beschreibung entspricht dem vorangegangenen Experiment. Die Tabelle B.3 veranschaulicht die relevanten Parameter.
Tabelle B.3.. Parametereinstellungen zum Experiment VRW3
Parameter / Knotentyp
Super-Peer Peer
Maximale Tiefe
10
10
Maximale Anzahl an Walker
3
Höchstgrenze an Antworten
5
5
Suchanfragen
Es werden die gleichen Suchanfragen wie zuvor verwendet.
3
Eine detaillierte Beschreibung des Experimentes ist der Konfigurationsdatei ’/input/config exp3.xml’ des Simulators zu entnehmen. Die Ausführung erfolgt mittels des ant-Aufrufes
’ant exp3’
4
Gängige Suchtiefen in verwendeten Sucherverfahren liegen zwischen fünf und zehn
130
B. Experimente
Bild B.3.. Ausgabe Experiment 3: a) Anfragen-Antworten Verhältnis (QAR) b)
Erfolgsrate der Anfragen (QSR) c) Anzahl an Antworten pro Anfrage (APM) d)
Schritte pro Antwort (HPQ) e) Virtuelle Nachrichten im System (VMS) f) Virtuelle
Nachrichten pro Element (VME)
131
B. Experimente
B.2.4. Konfiguration VRW4“
”
Dieses Experiment5 ist darauf ausgelegt, das Suchverhalten bei unterschiedlichen Ergebnissen zu beobachten, wobei das Verfahren Random-Walks (siehe Abschnitt 3.2.3)
betrachtet wird. Es wird die virtuelle Ebene unabhängig simuliert.
Topologie
Die Topologie drückt die vorher beschriebene Struktur aus. Peers stellen Ressourcen bereit, die durch zugehörige Super-Peers indexiert werden und somit der Suche
zugänglich sind. Aus einer Menge von 10000 unterschiedlichen Ressourcen werden
jedem Peer 5 bis 100 unterschiedliche Ressourcen zugeteilt.
Suchverfahren
Die Beschreibung entspricht dem vorangegangenen Experiment. Die Tabelle B.4 veranschaulicht die relevanten Parameter.
Tabelle B.4.. Parametereinstellungen zum Experiment VRW4
Parameter / Knotentyp
Super-Peer Peer
Maximale Tiefe
200
200
Maximale Anzahl an Walker
1
Höchstgrenze an Antworten
5
5
Suchanfragen
Die Suche erstreckt sich, wie eingangs beschrieben, über die gesamte Topologie. Als
Suchkriterien werden vorhandene Ressourcen verwendet, die über die Topologie mehrfach existieren können.
5
Eine detaillierte Beschreibung des Experimentes ist der Konfigurationsdatei ’/input/config exp4.xml’ des Simulators zu entnehmen. Die Ausführung erfolgt mittels des ant-Aufrufes
’ant exp4’
132
B. Experimente
Bild B.4.. Ausgabe Experiment 4: a) Anfragen-Antworten Verhältnis (QAR) b)
Erfolgsrate der Anfragen (QSR) c) Anzahl an Antworten pro Anfrage (APM) d)
Schritte pro Antwort (HPQ) e) Virtuelle Nachrichten im System (VMS) f) Virtuelle
Nachrichten pro Element (VME)
133
B. Experimente
B.2.5. Konfiguration VRW5“
”
Dieses Experiment6 ist darauf ausgelegt, die Auswirkungen einer Erhöhung der Aussendung an Nachrichten auf die Erfolgsrate zu beobachten, wobei das Verfahren
Random-Walks (siehe Abschnitt 3.2.3) betrachtet wird. Es wird die virtuelle Ebene unabhängig simuliert.
Topologie
Die verwendete Topologie entspricht der in dem Experiment 2 Beschriebenen.
Suchverfahren
Die Beschreibung entspricht dem vorangegangenen Experiment. Die Tabelle B.5 veranschaulicht die relevanten Parameter.
Tabelle B.5.. Parametereinstellungen zum Experiment VRW5
Parameter / Knotentyp
Super-Peer Peer
Maximale Tiefe
200
200
Maximale Anzahl an Walker
3
Höchstgrenze an Antworten
5
5
Suchanfragen
Es werden die gleichen Suchanfragen wie zuvor verwendet.
6
Eine detaillierte Beschreibung des Experimentes ist der Konfigurationsdatei ’/input/config exp5.xml’ des Simulators zu entnehmen. Die Ausführung erfolgt mittels des ant-Aufrufes
’ant exp5’
134
B. Experimente
Bild B.5.. Ausgabe Experiment 5: a) Anfragen-Antworten Verhältnis (QAR) b)
Erfolgsrate der Anfragen (QSR) c) Anzahl an Antworten pro Anfrage (APM) d)
Schritte pro Antwort (HPQ) e) Virtuelle Nachrichten im System (VMS) f) Virtuelle
Nachrichten pro Element (VME)
135
B. Experimente
B.2.6. Konfiguration VRW6“
”
Dieses Experiment7 ist darauf ausgelegt, das Suchverhalten bei realen Suchtiefen8 zu
untersuchen, wobei das Verfahren Random-Walks (siehe Abschnitt 3.2.3) betrachtet
wird. Es wird die virtuelle Ebene unabhängig simuliert.
Topologie
Die verwendete Topologie entspricht der in dem Experiment 5 Beschriebenen.
Suchverfahren
Die Beschreibung entspricht dem vorangegangenen Experiment. Die Tabelle B.6 veranschaulicht die relevanten Parameter.
Tabelle B.6.. Parametereinstellungen zum Experiment VRW6
Parameter / Knotentyp
Super-Peer Peer
Maximale Tiefe
10
10
Maximale Anzahl an Walker
3
Höchstgrenze an Antworten
5
5
Suchanfragen
Es werden die gleichen Suchanfragen wie zuvor verwendet.
7
Eine detaillierte Beschreibung des Experimentes ist der Konfigurationsdatei ’/input/config exp6.xml’ des Simulators zu entnehmen. Die Ausführung erfolgt mittels des ant-Aufrufes
’ant exp6’
8
Gängige Suchtiefen in verwendeten Sucherverfahren liegen zwischen fünf und zehn
136
B. Experimente
Bild B.6.. Ausgabe Experiment 6: a) Anfragen-Antworten Verhältnis (QAR) b)
Erfolgsrate der Anfragen (QSR) c) Anzahl an Antworten pro Anfrage (APM) d)
Schritte pro Antwort (HPQ) e) Virtuelle Nachrichten im System (VMS) f) Virtuelle
Nachrichten pro Element (VME)
137
B. Experimente
B.2.7. Konfiguration VC1“
”
Dieses Experiment9 veranschaulicht die Suche mittels des Chord-Routing-Verfahrens
(siehe Abschnitt 3.3.1). Als Suchanfragen werden Ressourcen betrachtet. Es wird die
virtuelle Ebene unabhängig simuliert.
Topologie
Die der Simulation zugrunde liegende Topologie besteht aus 256 Super-Peer und
744 einfachen Peers, die in Clustern angeordnet sind. Alle Super-Peers sind auf einem Chord-Ring angeordnet. Super-Peers indexieren Informationen der registrierten
Peers. Ressourcen, die den Peers eines Clusters X bekannt sind, genügen einer modulo Funktion, die alle Ressourcen als eindeutigen ganzzahligen Wert interpretiert und
auf den Chord-Ring gleichverteilt. Ressourcen mit dem Wert 500 (500 modulo 256 =
244) werden somit im Cluster des Super-Peers ’244’ gesucht.
Suchverfahren
Jeder Typ des gewählten Architekturstils verfügt über eine eigene Suchstrategie.
Super-Peers verwenden das Verfahren Chord und stellen keine weiteren Parameter
bereit, wohingegen Peers eines Clusters lediglich die Suchtiefe und die Antwortbegrenzung berücksichtigen. Die Tabelle B.7 veranschaulicht die relevanten Parameter.
Tabelle B.7.. Parametereinstellungen zum Experiment VC1
Parameter / Knotentyp
Super-Peer Peer
Maximale Tiefe
200
Höchstgrenze an Antworten
5
5
Suchanfragen
Die Suchanfragen werden wie in den vorherigen Verfahren gestellt, wobei in diesem
Experiment nur nach Ressourcen gesucht wird.
9
Eine detaillierte Beschreibung des Experimentes ist der Konfigurationsdatei ’/input/config exp7.xml’ des Simulators zu entnehmen. Die Ausführung erfolgt mittels des ant-Aufrufes
’ant exp7’
138
B. Experimente
Bild B.7.. Ausgabe Experiment 7: a) Anfragen-Antworten Verhältnis (QAR) b)
Erfolgsrate der Anfragen (QSR) c) Anzahl an Antworten pro Anfrage (APM) d)
Schritte pro Antwort (HPQ) e) Virtuelle Nachrichten im System (VMS) f) Virtuelle
Nachrichten pro Element (VME)
139
B. Experimente
B.2.8. Konfiguration VC2“
”
Dieses Experiment10 veranschaulicht die Suche mittels des Chord-Routing-Verfahrens
(siehe Abschnitt 3.3.1). Als Suchanfragen werden Peernamen betrachtet, die im System eindeutig sind. Es wird die virtuelle Ebene unabhängig simuliert.
Topologie
Die verwendete Topologie entspricht der zuvor Untersuchten.
Suchverfahren
Es werden die gleichen Suchverfahren wie im vorherigen Experiment verwendet.
Suchanfragen
Suchanfragen entsprechen den vorherigen Experimenten, wobei hier lediglich Peernamen als Kriterium verwendet werden.
10
Eine detaillierte Beschreibung des Experimentes ist der Konfigurationsdatei ’/input/config exp8.xml’ des Simulators zu entnehmen. Die Ausführung erfolgt mittels des ant-Aufrufes
’ant exp8’
140
B. Experimente
Bild B.8.. Ausgabe Experiment 8: a) Anfragen-Antworten Verhältnis (QAR) b)
Erfolgsrate der Anfragen (QSR) c) Anzahl an Antworten pro Anfrage (APM) d)
Schritte pro Antwort (HPQ) e) Virtuelle Nachrichten im System (VMS) f) Virtuelle
Nachrichten pro Element (VME)
141
B. Experimente
B.3. Experiment ORW-OIBFS
B.3.1. Konfiguration ORW“
”
Als Strategie des folgenden Experimentes11 der organisatorischen Ebene ist, wie zuvor,
das Random-Walks-Verfahren verwendet worden. Ziel ist es hierbei ein möglichst einfaches Verfahren mit geringer Netzwerklast zu erstellen, indem eine unterschiedliche
Anzahl an Walkern verwendet wird.
Topologie
Die Topologie unterliegt einer hierarchischen Struktur, in der vier Elementtypen existieren. Es bestehen vier ungerichtete Verbindungstypen zwischen den Elementen, die
die unterschiedlichen Hierarchiestufen miteinander verbinden.
Suchverfahren
Als Suchverfahren wird für alle Elemente das in den vorangegangenen Experimenten dargestellte Random-Walks Verfahren eingesetzt. Die Anzahl an auszusendenden
Nachrichten unterscheidet sich jedoch bei den Elementen der organisatorischen Ebene.
Organisationen senden (siehe Tabelle B.8) bis zu fünf Walker aus, um eine möglichst
schnelle Abdeckung des Suchraumes zu ermöglichen.
Tabelle B.8.. Parametereinstellungen zum Experiment ORW
Parameter / Knotentyp
Organisation Projekt Gruppe Mitglied
Anzahl Walker
5
1
1
1
Maximale Tiefe
120
120
120
120
Höchstgrenze an Antworten
5
5
5
5
Suchanfragen
Suchanfragen werden in den ersten zehn Simulationsschritten erstellt. Pro Simulationsschritt werden durchschnittlich zwei Anfragen an zufällig ermittelten Elementen
initiiert. Als Suchkriterien werden ausschließlich Namen organisatorischer Elemente
verwendet.
11
Eine detaillierte Beschreibung des Experimentes ist der Konfigurationsdatei ’/input/config exp9.xml’ des Simulators zu entnehmen. Die Ausführung erfolgt mittels des ant-Aufrufes
’ant exp9’
142
B. Experimente
Bild B.9.. Ausgabe Experiment 9: a) Anfragen-Antworten Verhältnis (QAR) b)
Erfolgsrate der Anfragen (QSR) c) Anzahl an Antworten pro Anfrage (APM) d)
Schritte pro Antwort (HPQ) e) Organisatorische Nachrichten im System (OMS) f)
Organisatorische Nachrichten pro Element (OME)
143
B. Experimente
B.3.2. Konfiguration OIBFS“
”
Dieses Experiment12 veranschaulicht die Suche mittels hierarchischer Metainformationen. Die Suche kann entweder durch exakte Angabe eines gesuchten organisatorischen
Elementes wie auch durch eine ungenaue Spezifizierung mittels der in Abschnitt 2.3
und 5.3 beschrieben Suche beschrieben werden. In diesem Experiment wird die organisatorische Ebene unabhängig simuliert.
Topologie
Die verwendete Topologie verdeutlicht einen einfachen hierarchischen Aufbau, in dem
Verbindungen zu den jeweils anliegenden Ebenen unterschiedlicher Tiefe bestehen.
Angesichts der vier unterschiedlichen Ebenen existieren vier Verbindungenstypen, die
in einer gerichteten Sichtweise auf acht Verbindungstypen ansteigen. Zudem hat jedes
Mitglied eine implizit vorhandene selbst-reflexive Beziehung, die nicht in der Topologie modelliert wird, jedoch in den Suchverfahren herangezogen werden kann.
Suchverfahren
Das simulierte Suchverfahren liegt allen Elementen zugrunde. Entscheidungen basieren auf den vorhandenen Beziehungen und gewährleisten eine optimale Suchtiefe, die
dem Durchmesser des Netzwerkes entspricht. Der Aussendungsgrad einer Nachricht
steigt auf ein Maximum, falls keine relevanten direkten und transitiven Beziehungen
ersten Grades bestehen.
Suchanfragen
Es treten in den ersten zehn Simulationsschritten durchschnittlich zwei Suchanfragen pro Schritt auf. Sie bestehen aus einer zufälligen Anzahl an exakten wie auch
unscharfen Formulierungen.
12
Eine detaillierte Beschreibung des Experimentes ist der Konfigurationsdatei ’/input/config exp10.xml’ des Simulators zu entnehmen. Die Ausführung erfolgt mittels des ant-Aufrufes
’ant exp10’
144
B. Experimente
Bild B.10.. Ausgabe Experiment 10: a) Anfragen-Antworten Verhältnis (QAR) b)
Erfolgsrate der Anfragen (QSR) c) Anzahl an Antworten pro Anfrage (APM) d)
Schritte pro Antwort (HPQ) e) Organisatorische Nachrichten im System (OMS) f)
Organisatorische Nachrichten pro Element (OME)
145
B. Experimente
B.4. Experiment OIBFS-VC
B.4.1. Konfiguration OIBFS-VC1“
”
Die in den Experimenten B.2.8 und B.3.2 dargestellten Experimente berücksichtigen
jeweils nur eine Ebene. Das anfolgende Experiment13 verbindet diese beiden Simulationen, indem eine Verbindung der Elemente vorgenommen wird. Das Experiment
verfolgt das Ziel, unscharfe Suchanfragen der organisatorischen Ebene mittels des
Chord-Routingprotokolls der virtuellen Ebene zu erfüllen.
Topologie
Die verwendeten Topologien entsprechen den Experimenten B.2.8 und B.3.2. Sie werden verbunden, indem alle Organisationen auf Super-Peers abgebildet werden. Die
weiteren organisatorischen Elemente werden auf einfache Peers abgebildet. Die Zuordnung wird durch eine Abbildungsfunktion gleichverteilt, so dass alle Cluster nahezu
die gleiche Größe besitzen. Lokalitätsbeziehungen zwischen organisatorischen Elementen werden nicht berücksichtigt. Genauere Informationen sind dem Abschnitt 8.1 zu
entnehmen. Dieses Experiment simuliert 1000 Elemente der jeweiligen Ebene mit
acht Organisationen.
Suchverfahren
Die verwendeten Suchverfahren der einzelnen Elemente entsprechen den vorangegangenen Experimenten. Super-Peers verfügen zudem über die Berechnung der
Abbildungsfunktion, mittles derer organisatorische Namen auf einen Super-PeerBezeichner abgebildet werden können.
Suchanfragen
Es werden sieben teils ungenaue organisatorische Anfragen in den ersten Simulationszyklen gestellt.
13
Eine detaillierte Beschreibung des Experimentes ist der Konfigurationsdatei ’/input/config exp12.xml’ des Simulators zu entnehmen. Die Ausführung erfolgt mittels des ant-Aufrufes
’ant exp12’
146
B. Experimente
Bild B.11.. Ausgabe Experiment 12: a) Anfragen-Antworten Verhältnis (QAR) b)
Erfolgsrate der Anfragen (QSR) c) Anzahl an Antworten pro Anfrage (APM) d)
Schritte pro Antwort (HPQ) e) Virtuelle Nachrichten im System (VMS) f) Virtuelle
Nachrichten pro Element (VME) g) Organisatorische Nachrichten im System (OMS)
h) Organisatorische Nachrichten pro Element (OME)
147
B. Experimente
B.4.2. Konfiguration OIBFS-VC2“
”
Das folgende Experiment14 entspricht dem Vorangegangenen mit der Ausnahme, dass
statt einer möglichst guten Gleichverteilung Lokalitätsbeziehungen der organisatorischen Elemente berücksicht werden.
Topologie
Lokalitätseigenschaften bleiben erhalten, indem neben der Abbildung der Organisationen auf Super-Peers alle weiteren Elemente einer Organisation dem Cluster des
entsprechenden Super-Peers zugeordnet werden.
Suchverfahren
Die Suchverfahren unterscheiden sich zum vorherigen Experiment nur durch eine
geänderte Abbildungsfunktion.
Suchanfragen
Die gleichen Suchanfragen wie zuvor werden verwendet.
14
Eine detaillierte Beschreibung des Experimentes ist der Konfigurationsdatei ’/input/config exp13.xml’ des Simulators zu entnehmen. Die Ausführung erfolgt mittels des ant-Aufrufes
’ant exp13’
148
B. Experimente
Bild B.12.. Ausgabe Experiment 13: a) Anfragen-Antworten Verhältnis (QAR) b)
Erfolgsrate der Anfragen (QSR) c) Anzahl an Antworten pro Anfrage (APM) d)
Schritte pro Antwort (HPQ) e) Virtuelle Nachrichten im System (VMS) f) Virtuelle
Nachrichten pro Element (VME) g) Organisatorische Nachrichten im System (OMS)
h) Organisatorische Nachrichten pro Element (OME)
149
C. Buildmanagement
Dem Simulator liegen mehrere Bibliotheken zugrunde, die mittels eines Ant1 -Skriptes
erstellt und manipuliert werden können. Der grobe Aufbau sowie die daraus resultierende Verzeichnisstruktur nun kurz beschrieben.
C.1. Aufbau und Umgang
Die verwendete build-Datei ist in Listing C.1 in ihren wichtigsten Einstellungen zu
sehen. Zum Starten einer Simulation existieren zwei Varianten. Die grafische Oberfläsche wird mittels ant startGui gestartet, wohingegen eine textuelle Simulation
mittels ant start direkt begonnen wird. Als Parameter wird die zu verwendende
Konfigurationsdatei und das Zielverzeichnis angegeben.
Die Erstellung neuer Strategien erfolgt durch die im Feinentwurf 6.2 beschriebene Vorkehrungen. Diese Strategie kann dann in das Verzeichnis src/easim/strategy/ abgelegt werden und durch den Aufruf ant easim-strategy in die Bibliothek bin/easimstrategy.jar aufgenommen werden, die zum Start des Simulators verwendet wird.
Die in dem Abschnitt 7 dargestellten Experimente können direkt über das Ant-Skript
nachvollzogen werden (ant expX).
Listing C.1. Aufbau der build.xml
< project basedir = " . " default = " usage " >
..
3
<! -- Building libraries -- >
1
2
4
5
6
7
1
< target name = " easim - all " depends = " easim - core , easim strategy , easim - mapping , easim - extension " description
= " compile and deploy all source files " / >
< target name = " easim - core " depends = " compile - core , deploy core " description = " compile and deploy all core source
files " / >
< target name = " easim - strategy " depends = " compile_strategy ,
deploy_strategy " description = " compile and deploy all
strategy source files " / >
http://ant.apache.org
150
C. Buildmanagement
8
9
10
< target name = " easim - mapping " depends = " compile_mapping ,
deploy_mapping " description = " compile and deploy all
mapping source files " / >
< target name = " easim - extension " depends = "
compile_extension , deploy_extension " description = "
compile and deploy all extension source files " / >
< target name = " easim - desmoj " depends = " compile_desmoj ,
deploy_desmoj " description = " compile and deploy all
desmoj source files " / >
11
12
<! -- Starting simulator -- >
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
< target name = " startGui " depends = " easim - all , easim - desmoj
" description = " Starts the simulator with gui " >
< java jar = " £{ easim . deploy . dest }/£{ easim . core . deploy .
file } " classpathref = " glob alCla sspat hAndD eploy "
fork = " true " >
< jvmarg line = " - Xmx384m " / >
< sysproperty key = " easim . config " value = " bin / input
/ config . xml " / >
< sysproperty key = " easim . output " value = " bin /
output " / >
</ java >
</ target >
< target name = " start " depends = " easim - all , easim - desmoj "
description = " Starts the simulator on the console " >
< java classname = " easim . core . SimulatorModel "
classpathref = " g lob alCla sspat hAndD eploy " fork = "
true " >
< jvmarg line = " - Xmx384m " / >
< sysproperty key = " easim . output " value = " bin /
output / " / >
< sysproperty key = " easim . config " value = " bin / input
/ config . xml " / >
</ java >
</ target >
28
29
<! -- Experiment settings -- >
30
31
32
< target name = " exp1 " depends = " easim - all , easim - desmoj "
description = " starts the 1 st experiment " >
< mkdir dir = " bin / output / exp1 / " / >
151
C. Buildmanagement
33
34
35
36
37
38
39
40
< java jar = " £{ easim . deploy . dest }/£{ easim . core . deploy .
file } " classpathref = " glo balCla sspat hAndD eploy "
fork = " true " >
< jvmarg line = " - Xmx384m " / >
< sysproperty key = " easim . config " value = " bin / input
/ exp / config_exp1 . xml " / >
< sysproperty key = " easim . output " value = " bin /
output / exp1 " / >
</ java >
</ target >
..
</ project >
C.2. Verzeichnisstruktur
Die Verzeichnisstruktur ist in Abbildung C.1 zu sehen. Die Verzeichnisse src, input und lib werden durch das Ant-Skript in das bin-Verzeichnis kopiert und dort
verwendet.
/easim
/bin
/input
/lib
/output
/easim-core.jar
/easim-desmoj.jar
/easim-extension.jar
/easim-mapping.jar
/easim-strategy.jar
/src
/input
/lib
/build.xml
Bild C.1.. Verzeichnisstruktur des Simulators
152
D. Danksagung
Nach meinem nunmehr sechs-jährigen Studium möchte ich an dieser Stelle einigen
Menschen für die Unterstützung in dieser Zeit danken. Mein besonderer Dank gilt
meinen Eltern, ohne die das Studium wahrscheinlich nicht möglich gewesen wäre und
meiner Freundin, die mir während dieser Zeit stets zur Seite stand.
Weiterhin möchte ich mich für die gute Betreuung und Atmosphäre der letzten sechs
Monate bei Herrn Dipl.-Inform. Ludger Bischofs und Herrn Prof. Dr. Wilhelm Hasselbring bedanken.
Abschließend gebührt Stefan Brüggemann für die kritische Betrachtung dieser Arbeit
ein besonderer Dank.
153
Herunterladen