Distributed Networks. Kademlia, Pastry, Tapestry and P-Grid Analysis. Niki Kyriakou Panagiotis Kintis



Σχετικά έγγραφα
Κεφ.11: Ευρετήρια και Κατακερματισμός

Κινητά και Διάχυτα Συστήματα. Ενότητα # 6: Εφαρμογές DHT Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Συστήματα Peer To Peer (P2P Systems) Γαλάνης Δημήτριος Παπαδημητρίου Χριστίνα

Υλοποίηση Δικτυακών Υποδομών και Υπηρεσιών: Δρομολόγηση

Πρωτόκολλα Διαδικτύου

Δυναμικός Κατακερματισμός

Α2. Να γράψετε τους αριθμούς 1-5 από τη Στήλη Α και δίπλα το γράμμα της Στήλης Β που δίνει τη σωστή αντιστοίχηση.

Δροµολόγηση (Routing)

ιαδίκτυα & Ενδοδίκτυα Η/Υ

7.9 ροµολόγηση. Ερωτήσεις

Μάθημα 4: Πρότυπα, Πρωτόκολλα & Υπηρεσίες

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

Τα δεδομένα (περιεχόμενο) μιας βάσης δεδομένων αποθηκεύεται στο δίσκο

Δρομολόγηση (Routing)

Ερώτηση 1 η μεταγωγής κυκλώματος? : Ποια είναι τα κύρια χαρακτηριστικά της. Ερώτηση 2 η : Ποια είναι τα κύρια χαρακτηριστικά της μεταγωγής μηνύματος?

Συνοπτική Μεθοδολογία Ασκήσεων Κεφαλαίου 7. Ασκήσεις στο IP Fragmentation

Δίκτυα Επικοινωνιών ΙΙ: Δρομολόγηση

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΚΕΦΑΛΑΙΟ 4. Τεχνική Ανίχνευσης του. Πτυχιακή Εργασία Σελίδα 95

7.5 Πρωτόκολλο IP. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Διάλεξη 23: Τεχνικές Κατακερματισμού II (Hashing)

ΡΟΜΟΛΟΓΗΣΗ ΣΕ ΥΠΕΡΚΕΙΜΕΝΑ ΙΚΤΥΑ ROUTING IN OVERLAY NETWORKS

7.7 Πρωτόκολλο ARP. 1. Το πρωτόκολλο ARP μετατρέπει τις διευθύνσεις IP στις αντίστοιχες φυσικές. Σ Λ

T.E.I. ΗΠΕΙΡΟΥ ΤΜΗΜΑ ΤΗΛΕΠΛΗΡΟΦΟΡΙΚΗΣ & ΔΙΟΙΚΗΣΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Πρωτόκολλα Διαδικτύου Μέρος 2ο. Επικοινωνίες Δεδομένων Μάθημα 3 ο

ΔΙΚΤΥΑ (18-19) Π. Φουληράς

a. b. c. d ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap

Εργαστήριο 4 Πρωτόκολλα Δρομολόγησης

ΕΚΦΩΝΗΣΕΙΣ ΘΕΜΑ Α. α. Πριν εμφανιστεί η τεχνολογία ISDN οι υπηρεσίες φωνής, εικόνας και δεδομένων απαιτούσαν διαφορετικά δίκτυα.

Κατακερματισμός. 4/3/2009 Μ.Χατζόπουλος 1

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

8 η ιάλεξη: σε δίκτυα δεδομένων

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Αξιοποίηση της συσχέτισης μεταξύ λέξεων για τη βελτίωση του προσεγγιστικού φιλτραρίσματος πληροφορίας

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών Δίκτυα υπολογιστών. (και το Διαδίκτυο)

Τεχνολογία Πολυμέσων. Ενότητα # 16: Πολυεκπομπή Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Περίληψη Λαμπρόπουλος

7.3 Πρωτόκολλο TCP. 1. Το TCP πρωτόκολλο παρέχει υπηρεσίες προσανατολισµένες σε σύνδεση. Σ Λ

Γενικές Αρχές. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που

Εισαγωγή - ορολογία. Προώθηση (forwarding): Δρομολόγηση (routing):

1.5.1 ΓΕΦΥΡΑ (BRIDGE) Εικόνα Επίπεδα λειτουργίας επαναλήπτη, γέφυρας, δρομολογητή και πύλης ως προς το μοντέλο OSI.

Κατανόηση των βασικών σημείων των διευθύνσεων TCP/IP και της

Μάθημα 5: To Μοντέλο Αναφοράς O.S.I.

Επίπεδο Δικτύου: Διαδικτύωση

Σύστημα Διαμοιρασμού Βιβλιογραφικών Αναφορών. Κοντοτάσιου Ιωάννα ΑΜ 3125 Μπέσσας Απόστολος ΑΜ 3171

Είναι η διαδικασία εύρεσης της διαδρομής που πρέπει να ακολουθήσει ένα πακέτο για να φτάσει στον προορισμό του. Η διαδικασία αυτή δεν είναι πάντα

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΣΤΑ ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ Γ Τάξη Ε.Π.Α.Λ.

7.1 Επίπεδο δικτύου. Ερωτήσεις. λέξεις κλειδιά:

Διάρθρωση. Δίκτυα Υπολογιστών I Δίκτυα Μεταγωγής και Διαδίκτυα: Μέρος Β. Διάρθρωση. Αναγκαιότητα της διευθυνσιοδότησης. Ευάγγελος Παπαπέτρου

Δίκτυα Υπολογιστών Firewalls. Χάρης Μανιφάβας

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Εαρινό Εξάμηνο

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

ΔΙΑΣΥΝΔΕΣΗ ΔΙΚΤΥΩΝ (INTERNETWORKING)

ιαδίκτυα & Ενδοδίκτυα Η/Υ

ΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο Δεύτερη Προγραμματιστική Εργασία

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

Κατανεμημένα Συστήματα με Java. Ενότητα # 14: Κατανεμημένα συστήματα αποθήκευσης Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 7ο ΚΕΦΑΛΑΙΟ

Τι είναι ένα δίκτυο υπολογιστών; Αρχιτεκτονική επιπέδων πρωτοκόλλων. Δικτυακά πρωτόκολλα

Ethernet Ethernet ΙΕΕΕ CSMA/CD

Κατανεμημένα Συστήματα Ι

1 Συστήματα Αυτοματισμού Βιβλιοθηκών

Search and Replication in Unstructured Peer-to-Peer Networks

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Επικοινωνία με μηνύματα. Κατανεμημένα Συστήματα 1

Δίκτυα Υπολογιστών I

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο

ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET

Κάντε κλικ για έναρξη

Δομές Δεδομένων και Αλγόριθμοι

Δομές Δεδομένων. Ενότητα 13: B-Δέντρα/AVL-Δέντρα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο

Μάθημα 7: Διευθυνσιοδότηση σε Επίπεδο IP

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Κατακερματισμός. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Κατανεμημένα Συστήματα: Θεωρία και Προγραμματισμός. Ενότητα # 1: Εισαγωγή Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Διαχείριση Βάσης Δεδομένων (dbadmin)

Κινητά και Διάχυτα Συστήματα. Ενότητα # 5: Κατανεμημένοι πίνακες κατακερματισμού Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

ΤΕΛΟΣ 1ΗΣ ΑΠΟ 6 ΣΕΛΙΔΕΣ

Κατακερματισμός (Hashing)

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

7.7 Πρωτόκολλο ARP. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

Πρωτόκολλο TCP Διάλεξη ΙΙI

Κατανεµηµένασυστήµατα αρχείων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

ιαδίκτυα & Ενδοδίκτυα Η/Υ

Παράλληλη Επεξεργασία Κεφάλαιο 7 ο Αρχιτεκτονική Συστημάτων Κατανεμημένης Μνήμης

Πρωτόκολλα Επικοινωνίας Πρωτόκολλο IP

Δυναμικά Πολυεπίπεδα Ευρετήρια (Β-δένδρα) Μ.Χατζόπουλος 1

7.6 ιευθυνσιοδότηση. Ερωτήσεις

Αυτόνομα Συστήματα (ΑΣ)

Transcript:

Distributed Networks Kademlia, Pastry, Tapestry and P-Grid Analysis Niki Kyriakou Panagiotis Kintis

Panagiotis Kintis Niki Kyriakou DHT Algorithms Table of Contents Introduction 5 Εισαγωγή 5 Οι βασικές αρχές του DHT 5 Kademlia Algorithm 7 Εισαγωγή 7 Ο αλγόριθμος 7 Ανάλυση 8 Characteristics 8 The Node 9 NodeID 9 Keys 9 Distance: the Kademlia Metric 9 The K-Bucket 9 Protocol 11 Node Lookup 11 Refresh 12 Join 12 Pastry Algorithm 13 Ανάλυση 13 Tapestry Algorithm 17 Δρομολόγηση στο Tapestry 17 Distributed Systems 3

DHT Algorithms Panagiotis Kintis Niki Kyriakou Διαχείριση σφαλμάτων 17 Δρομολόγηση ανεκτική σε σφάλματα 18 Εντοπισμός ανεκτικός σε σφάλματα 18 Εναλλακτική δρομολόγηση 19 Δυναμικοί αλγόριθμοι 19 Δυναμική είσοδος κόμβου 20 Συμπλήρωση πίνακα γειτνίασης 20 Ενημέρωση γειτονικών κόμβων 20 Φορτίο εύρους ζώνης 21 P-Grid 23 Ο Αλγόριθμος 23 Δομή 23 Compared 27 Bibliography 29 4 Distributed Systems

Panagiotis Kintis Niki Kyriakou DHT Algorithms Introduction Εισαγωγή Ο μηχανισμός P2P, βασίζεται και υλοποιείται σε ένα κατανεμημένο σύστημα, όπου κάθε επιμέρους σύστημα έχει σχεδόν την ίδια λειτουργία και αποστολή. Αυτά τα συστήματα πρέπει να ξεχωρίζουν μεταξύ τους και να μη στηρίζονται σε κεντρικό έλεγχο. Τα P2P συστήματα έχουν το χαρακτήρα της κεντρικοποίησης, όπου όλες οι πληροφορίες σχετικά με τα αποθηκευμένα δεδομένα και τη μεθοδολογία αναζητήσεων αποθηκεύονται σε ένα μόνο server. Καθ αυτού, η ασφάλεια και η ευρωστία τους είναι αδύναμη. Οι αναζητήσεις με τη μέθοδο της πλυμμήρας (flood searches), επιβαρύνουν το δίκτυο και τα ερωτήματα που μπορούν να πραγματοποιηθούν, όταν μεγαλώσει το σύστημα, δεν είναι επεκτάσιμα και δεν μπορούν να το καλύψουν στο έπακρον. Τέλος, οι αναζητήσεις περιορίζονται σε συγκεκριμένο περιεχόμενο, με αποτέλεσμα πολλές φορές το δίκτυο να μην εγκυάται τον εντοπισμό ακόμα και υπάρχοντων δεδομένων. Τα τελευταία χρόνια, πραγματοποιείται μεγάλη έρευνα για το πώς θα μπορούσαν να διασυνδεθούν ικανοποιητικοί αλγόριθμοι, που θα ανταπεξέρχονταν στη μεγένθυση ενός τέτοιου δικτύου, και θα είχαν την ικανότητα να απαντήσουν σε ερωτήματα των χρηστών ανεξάρτητα από το μέγεθος του P2P συστήματος, τη γεωγραφική του τοπολογία και τον όγκο των πληροφοριών που διακινούνται. Οι βασικές αρχές του DHT Ενας Distributed Hash Table, είναι ένας hash table ο οποίος είναι διαχωρισμένος ανάμεσα σε ένα σύνολο συμμετεχόντων κόμβων. Δεν υπάρχει κάποιο κεντρικό ευρετήριο που να καθορίζει ποιός κόμβος διαχειρίζεται ποιό κομμάτι. Αντί αυτού, όλοι οι κόμβοι είναι οργανωμένοι σε ένα overlay δίκτυο, έτσι ώστε τα ερωτήματα για οποιοδήποτε κλειδί να μπορούν να δρομολογηθούν στον κατάλληλο κόμβο. Πιο συγκεκριμένα, σε ένα δομημένο P2P δίκτυο, τα τερματικά συστήματα ονομάζονται κόμβοι (nodes) και τα δεδομένα ως object data. Οι κόμβοι, αναγνωρίζονται στο domain name system με το IP τους, ενώ από το P2P system, με βάση μια μοναδική μεταβλητή που φέρει κάθε συνδεδεμένος κόμβος, η οποία μπορεί να αντίθεται τυχαία, ή με σειριακή μέθοδο ή με κάποιον άλλο τρόπο, ανάλογα τον αλγόριθμο ονοματοδοσίας του συστήματος. Τα αρχεία σε ένα τέτοιο σύστημα, ονοματοδοτούνται με ένα ζευγάρι δύο μεταβλητών (K,V), όπου K είναι μια λέξη κλειδί που περιγράφει το αρχείο και μπορεί να πάρει την τιμή της είτε από το όνομα του αρχείου, είτε από meta- data που Distributed Systems 5

DHT Algorithms Panagiotis Kintis Niki Kyriakou υπάρχουν με το αρχείο, ενώ το V έχει την τιμή της διαδρομής του αρχείου, συμπεριλαμβανομένου της διεύθυνσης του κόμβου που το φιλοξενεί (IP + path). Αν όλα αυτά τα ζεύγη μεταβλητών τα συγκεντρώναμε σε έναν πίνακα, θα καταλήγαμε σε μία τεράστεια και δύσχρηστη δομή δεδομένων που θα περιλάμβανε ένα index όλων των αρχείων που διατίθενται από το σύστημα. Για το λόγο αυτό, ο πίνακας αυτός κατακερματίζεται σε μικρότερα τμήματα, τα οποία αποθηκεύονται σε διάφορους κόμβους που έχουν την αρμοδιότητα να συμμετέχουν στη διαδικασία των αναζητήσεων, απαντώντας στα ερωτήματα που πραγματοποιούν οι χρήστες του συστήματος. Οταν φτάσει λοιπόν ένα ερώτημα σε κάποιον τέτοιο υπεύθυνο κόμβο, απλά χρειάζεται να ελέγξει τον πίνακά του, για να βρει αν υπάρχει το K που αναζητά ο χρήστης και να επιστρέψει είτε αρνητική απάντηση, είτε το V, ώστε να συνεχιστεί η διαδικασία ανταλλαγής του αρχείου. Το πρόβλημα όμως που παραμένει με αυτή τη μέθοδο, είναι ότι οι κόμβοι θα πρέπει να συνηπάρχουν αρμονικά με τους γείτονές τους, ώστε να μπορεί να διατηρείται αυτό το hash table με τις λιγότερες μεταβολές. Ο κατακερματισμός του μεγάλου πίνακα, πρέπει να γίνεται με τέτοιο τρόπο ώστε κάθε κομμάτι του επικαλύπτοντος δικτύου, να μοιάζει με τα υπόλοιπα - να υπάρχουν δηλαδή συγκεκριμένοι κανόνες που θα καθορίζουν τον τρόπο δημιουργίας τους - για να μπορεί να επιτυγχάνεται η καλύτερη δυνατή δρομολόγηση των αρχείων. Φυσικά κάθε αλγόριθμος υλοποίησης ενός P2P συστήματος, έχει τα δικά του χαρακτηριστικά, γι αυτό και θα αναλύσουμε παρακάτω τη λειτουργία τεσσάρων αλγορίθμων και τον τρόπο που αυτοί αντιμετωπίζουν τα ανωτέρω προβλήματα, σχετικά με τη διασύνδεση, την αναζήτηση, τη δρομολόγηση και την αποσύνδεση. 6 Distributed Systems

Panagiotis Kintis Niki Kyriakou DHT Algorithms Kademlia Algorithm Εισαγωγή To Kademlia είναι ένα distributed hash table για αποκεντρωμένα P2P δίκτυα υπολογιστών που έχει σχεδιαστεί από τον Peter Maymounkov και David Mazières. Kαθορίζει τη δομή του δικτύου και την ανταλλαγή πληροφοριών μέσω κομβικών αναζητήσεων. Οι κόμβοι κατά τον Kademlia επικοινωνούν μεταξύ τους χρησιμοποιώντας UDP συνδέσεις και δημιουργείται ένα εικονικό ή επικαλύπτον δίκτυο που αποτελείται από τους συμμετέχοντες κόμβους. Κάθε κόμβος προσδιορίζεται από έναν αριθμό ή ένα μοναδικό node ID. To node ID δε χρησιμεύει μόνο ως αναγνωριστικό, αλλά ο αλγόριθμος Kademlia το χρησιμοποιεί για να εντοπίσει τιμές (συνήθως αρχεία hash ή λέξεις- κλειδιά). Στην πραγματικότητα, το node ID παρέχει άμεσο χάρτη για αρχεία hash και αποθηκεύει πληροφορίες για τον ααλγόριθμο σχετικά με το πού να αποκτήσει το αρχείο ή τον πόρο. Κατά την αναζήτηση για κάποια τιμή, ο αλγόριθμος πρέπει να γνωρίζει το σχετικό κλειδί και διερευνά το δίκτυο σε διάφορα στάδια. Σε κάθε στάδιο βρίσκει τους κόμβους που είναι πιο κοντά στο κλειδί μέχρι να φτάσει σε κόμβο με την ίδια τιμή και επιστρέφει την τιμή αυτή ή δεν βρίσκονται άλλοι κοντινοί κόμβοι. Οπως πολλά DHTs, ο Kademlia επικοινωνεί μόνο με O (log (n)) κόμβους κατά τη διάρκεια της αναζήτησης από το σύνολο των n κόμβων στο σύστημα. Ο αλγόριθµος To πρωτόκολλο Kademlia χρησιμοποιεί τη βασική προσέγγιση της αντιστοίχησης κάθε χρήστη με ένα κλειδί (NodeID) παρμένο από το χώρο των αριθμών που αναπαριστώνται με 160 bits και ένα ζεύγος {κλειδί,τιμή} αποθηκευμένο σε κόμβους με ID κοντινό στο κλειδί. Ο εντοπισμός τέτοιων κόμβων γίνεται με την χρήση ενός αλγορίθμου δρομολόγησης, βασισμένου στα NodeID. Κάθε μήνυμα που ανταλλάσσεται στο Kademlia φέρει το ID του αποστολέα, έτσι ώστε να μπορεί ο παραλήπτης να καταγράψει την ύπαρξη του. Ο εντοπισμός ενός ζεύγους {κλειδί,τιμή} γίνεται με την εκτίμησης της απόστασης μεταξύ δύο αναγνωριστών. Για παράδειγμα, αν a και b δύο 160- bit αναγνωριστές, η μεταξύ τους απόσταση είναι το bitwise exclusive OR (XOR), δηλαδή d(a, b) = a b = d(b, a) που είναι μια μη- Euclidean μετρική. Για κάθε δοθέν σημείο x και απόσταση d > 0, υπάρχει ακριβώς ένα σημείο y ώστε d(x, y) = d. Ενα απλό δίκτυο Kademlia, υπό μορφή γραφήματος, φαίνεται στο παρακάτω σχήμα (Σχήμα 1). Distributed Systems 7

DHT Algorithms Panagiotis Kintis Niki Kyriakou Σχήμα 1 Κάθε κόμβος αποθηκεύει τριάδες {IP address, UDP port, NodeID} για peers απόστασης μεταξύ 2*i και (2*i)+1 από τον εαυτό του. Οι λίστες με αυτές τις τριάδες ονομάζονται k- buckets. Ανάλυση Characteristics Ενα δίκτυο kademlia χαρακτηρίζεται από τρεις σταθερές alpha, B και k. Η πρώτη και η τρίτη είναι στάνταρ ορολογίες, ενώ η δεύτερη χρησιμοποιείται εδώ γιατί κάποιες υλοποιήσεις του kademlia διαφέρουν στο μέγεθος των κλειδιών. Η alpha είναι ένας μικρός αριθμός που αναπαριστά το βαθμό παραλληλοποίησης στο δίκτυο (συνήθως αντιστοιχεί στην τιμή 3). Β είναι το μέγεθος σε bits του κλειδιού που χρησιμοποιείται (στην κύρια υλοποίηση του kademlia είναι 160 - όσο και ένα SHA1 hash). k είναι ο μέγιστος αριθμός επαφών που αποθηκεύονται σε ένα bucket - συνήθως 20. Κάποιες ακόμα σταθερές, που δεν υπάρχουν στην αρχική αναφορά του kademlia είναι οι ακόλουθες: texpire = 86400s,ο χρόνος μετά τον οποίο λήγει ένα κλειδί (TTL). trefresh = 3600s, χρόνος μετά τον οποίο ένα αχρησιμοποίητο bucket πρέπει να ανανεωθεί. 8 Distributed Systems

Panagiotis Kintis Niki Kyriakou DHT Algorithms treplicate = 3600s, το μεσοδιάστημε μεταξύ των αντιγραφών, όταν ένας κόμβος απαιτείται να δημοσιεύσει όλη τη βάση δεδομένων του. trepublish = 86400s, ο χρόνος μετά τον οποίο πρέπει να επαναδημοσιευθεί ένα κλειδί από τον αυθεντικό συγγραφέα του. The Node Κάθε δίκτυο kademlia, αποτελείται από έναν αριθμό συνεργαζόμενων κόμβων που επικοινωνούν μεταξύ τους και αποθηκεύουν πληροφορίες ο ένας για τον άλλο. Κάθε κόμβος έχει ένα node ID, ένα ήμι- μοναδικό δυαδικό αριθμό που τον ταυτοποιεί στο δίκτυο. NodeID Το NodeID είναι δυαδικοί αριθμοί μεγέθους = Β ( = 160bits). Στο βασικό kademlia, κάθε κόμβος διαλέγει το δικό του ID, με κάποια απροσδιόριστη ημι- τυχαία διαδικασία. Είναι πολύ σημαντικό τα nodeids να είναι ομοιόμορφα μοιρασμένα καθώς η αρχιτεκτονική του δικτύου βασίζεται σε αυτά. Παρόλο που το προτόκολο δεν το απαιτεί, υπάρχουν πιθανά πλεονεκτήματα στη χρήση των ίδιων nodeid κάθε φορά που κάποιος κόμβος συνδέεται ξανά στο δίκτυο, από το να δημιουργείτο συνέχεια κάποιο καινούριο βασισμένο στη συνεδρία (session- specific nodeid). Keys Τα δεδομένα που αποθηκεύονται ή εξάγονται από ένα δίκτυο kademlia, πρέπει επίσης να φέρουν ένα κλειδί μεγέθους B, τα οποία επίσης πρέπει να κατανέμονται ομοιόμορφα. Υπάρχουν διάφοροι τρόποι για να επιτευχθεί αυτό, αλλά ο ποιο διαδεδομένος είναι η χρήση του 160bit SHA1 digest hash των δεδομένων. Distance: the Kademlia Metric Οι διαδικασίες του kademlia, βασίζονται στη χρήση του τελεστή XOR σα μέτρο. Η απόσταση ανάμεσα σε δύο κλειδιά ή nodeids x και y ορίζεται ώς distance(x, y) = x y Το αποτέλεσμα λαμβάνεται παίρνοντας ένα ένα τα XOR των bytes (bytewise) για τους τελεστές της εξίσωσης. The K-Bucket Ενας κόμβος στο σύστημα kademlia, οραγανώνει τις επαφές του, δηλαδή άλλους κόμβους που γνωρίζει σε buckets με μέγιστο αριθμό επαφών το k, γνωστά ως k- buckets. Distributed Systems 9

DHT Algorithms Panagiotis Kintis Niki Kyriakou Τα buckets οργανώνονται με βάση την απόσταση μεταξύ του κόμβου και των επαφών στο bucket. Συγκεκριμένα, για ένα bucket j, όπου 0 j < k ισχύει ότι 2 j <= distance(node, contact) < 2 (j+1) Δεδομένου του πολύ μεγάλου μεγέθους των διευθύνσεψν, ένα μηδενικό bucket έχει μόνο ένα πιθανό μέλος, το κλειδί δηλαδή που διαφέρει από το nodeid μόνο κάτα το μεγαλύτερο bit κατά σειρά, και δε συμπληρώνεται σε καμία περίπτωση. Σε αντίθετη περίπτωση, αν τα nodeids είναι ισοκατανεμημένα, είναι πολύ πιθανό ότι οι μισοί κόμβοι θα έχουν εύρος σε bucket B - 1 = 159. Bucket Size Η αναφορά του kademlia αναφέρει ότι το k έχει τιμή τέτοια ώστε να είναι απίθανο σε ένα μεγάλο δίκτυο να υπάρξει περίπτωση να εξαφανιστούν όλες οι επαφές μέσα σε μία ώρα. Αυτό στηρίζεται στις πιθανότητες και τις πολιτικές των δικτύων που πραμένουν σε λειτουργία για μεγάλο χρονικό διάστημα. Contacts Μια επαφή αποτελείται από μια τριπλέτα του nodeid του άλλου κόμβου, τη διεύθυνση IP του και το UDP port (και οι τρεις τιμές αντιμετωπίζονται ως big- endian μεταβλητές στη μνήμη των υπολογιστικών συστημάτων). Οι σχεδιαστές του kademlia, δεν έχουν υπολογίσει την περίπτωση χρήση IPv6 διευθύνσεων ή TCP/IP αντί για UDP, ούτε το ενδεχόμενο κόμβοι να έχουν πολλαπλές IP διευθύνσεις. Sor1ng Στα buckets, οι επαφές ταξινομούνται βάσει της πιο προσφατης επικοινωνίας, κατά φθείνουσα σειρά. Ο τελευταίος κόμβος με τον οποίο επικοινώνησε το σύστημα μπαίνει στο τέλος, ενώ αυτός που δεν έχει επικοινωνήσει για πολύ ώρα, μπαίνει στο τέλος, άσχετα με το ποιος ξεκίνησε τη σύνδεση ή έστειλε το μήνυμα. Updates Οποτε ένας κόμβος δέχεται εισερχόμενη επικοινωνία από κάποιον άλλο, τότε ανανεώνει το k- bucket του. Αν η επαφή υπάρχει ήδη, τότε μετακινείται στο τέλος του bucket. Εαν δεν υπάρχει τότε προστίθεται στο τέλος. Σε περίπτωση όμως, που το bucket είναι γεμάτο (contacts = k), τότε το σύστημα κάνει ping στον πρώτο κόμβο στη λίστα (τον πιο παλιό που επικοινώνησε μαζί του). Εαν εκείνος ο κόμβος δεν απαντήσει στο ping, τότε διαγράφεται από τη λίστα (bucket), και ο νέος κόμβος εισάγεται στο τέλος της λίστας. Εαν απαντήσει, τότε επιστρέφεται bucket upda ng error στον άλλο κόμβο και δεν ολοκληρώνεται η επικοινωνία. [ Σημαντικό: Κατά τη διάρκεια αναμονής για απάντηση στο ping στον κόμβο που βρίσκεται στην κορυφή της λίστας, 10 Distributed Systems

Panagiotis Kintis Niki Kyriakou DHT Algorithms υπάρχει περίπτωση το σύστημα αυτό να δεχθεί μήνυμα και από άλλο κόμβο που δεν είναι στο bucket του. Αυτό συνήθως συμβαίνει σε πολύ μεγάλα δίκτυα και κυρίως σε bucket B- 1=159, ο οποίος είναι υπεύθυνος για περίπου τους μισούς κόμβους. Σε τέτεοια περίπτωση, το σύστημα παρέχει τρύπα (πιθανό exploit), για DoS a ack. ]. Protocol Η αρχική αναφορά του kademlia, αναφέρει πως το προτόκολο αποτελείται από τέσσερεισ απομακρυσμένες κλήσεις, αλλά είναι σημαντικό να ακολουθούνται από μια σειρά άλλων επιπλέων λειτουργιών. PING Αποστέλεται ένα μήνυμα ping το οποίο ακολουθείται από απάντηση pong ανάμεσα σε δύο κόμβους. Η έννοια ύπαρξής του είναι δίσημη. Ο παραλήπτης του ping, πρέπει να ανανεώσει το bucket του, μετακινώντας την επαφή στο τέλος της λίστας και αν υπάρξει απάντηση, τότε και ο αποστολέας πρέπει να κάνει το ίδιο. Ολα τα πακέτα αυτά (Remote Procedure Call - RPC), φέρουν αναγνωριστικό του αποστολέα (ημι- τυχαίος αριθμός μήκους B - 160bits). STORE Ο αποστολέας της store RPC παρέχει ένα κλειδί και ένα μπλοκ δεδομένων που απαιτείται από τον παραλήπτη να το αποθηκεύσει και να το έχει διαθέσιμο για χρήση αργότερα. FIND_NODE Η RPC αυτή, περιέχει ένα 160bit κλειδί και ο παραλλήπτης επιστρέφει μέχρι k τριπλέτες IP, port, nodeid για τις επαφές που γνωρίζει και είναι κοντά στο κλειδί αυτό. Ο παραλλήπτης, πρέπει να επιστρέψει υποχρεωτικά k τριπλέτες, εκτός αν γνωρίζει (στο k- bucket του) λιγότερες. FIND_VALUE Η διαδικασία αυτή περιλαμβάνει ένα B=160bit κλειδί. Εάν μια τιμή ανταποκρίνεται σε αυτό το κλειδί, τότε επιστρέφονται τα σχετικά δεδομένα. Διαφορετικά, η RPC, εξομοιώνεται με τη διαδικασία FIND_NODE και επιστρέφονται k τριπλέτες. Node Lookup Με τη διαδικασία αυτή, ο kademlia βρίσκει τους k πλησιέστερους κόμβους σε κάποιον αρχικό. Η διαδικασία αναζήτησης ξεκινά επιλέγοντας alpha επαφές από ένα k- bucket που δεν είναι κενός και πλησιάζουν το κλειδί που αναζητάται. Σε περίπτωση που είναι κενό tο bucket επιλέγονται από άλλα buckets και σημειώνεται ο κοντινότερος κόμβος closestnode, δημιουργώντας μια shortlist. Τότε ο κόμβος ξεκινά να στέλνει FIND RPCs, στις alpha επαφές της shortlist. Εαν οι κόμβοι είναι σε λειτουργία, τότε επιστρέφουν k τριπλέτες, διαφορετικά αφαιρούνται από τη shortlist. Στη συνέχεια, πραγματοποιούνται παράλληλες αναζητήσεις με Distributed Systems 11

DHT Algorithms Panagiotis Kintis Niki Kyriakou τη χρήση FIND RPCs, και συνεχίζονται οι διαγραφές και οι εγγραφές στη shortlist, κρατώντας πάντα τον closestnode. Εάν κάποιος κύκλος τέτοιων αναζητήσεων καταλήξει στο ίδιο closestnode, τότε το σύστημα στέλνει για τελευταία φορά μια FIND σε κάθε k κοντινότερο κόμβο, δημιουργώντας το k- bucket του. Refresh Εαν δεν έχουν πραγματοποιηθεί ανταλλαγές μηνυμάτων για συγκεκριμένο χρονικό διάστημα (trefresh), τότε ο κόμβος επιλέγει έναν τυχαίο αριθμό και πραγματοποιεί ανανέωση χρησιμοποιώντας τον αριθμό σαν κλειδί. Join Ενας κόμβος για να συνδεθεί στο δίκτυο ακολουθεί μια συγκεκριμένη διαδικασία. Αρχικά αν δεν έχει nodeid, τότε δημιουργεί ένα. Στη συνέχεια εισάγει την τιμή κάποιου γνωστού κόμβου στο bucket του και ξεκινά την αναζήτηση για κόμβους από αυτόν. Τέλος, ανανεώνει όλα τα buckets πιο μακριά από τους γειτονικούς κόμβους, για να εισαχθεί στο bucket με τους λιγότερους ήδη κόμβους. 12 Distributed Systems

Panagiotis Kintis Niki Kyriakou DHT Algorithms Pastry Algorithm Ανάλυση Στο Pastry κάθε κόμβος έχει ένα αναγνωριστικό από 128- bits, το οποίο χρησιμοποιείται για να τοποθετηθεί ο κόμβος σε έναν κυκλικό χώρο, που οριοθετείται μεταξύ 0 και 2 128-1. Το αναγνωριστικό του κόμβου δίνεται αυτόματα όταν ο κόμβος εισέρχεται στο σύστημα μέσω κάποιας συνάρτησης κατατεμαχισμού, ώστε τα αναγνωριστικά να είναι ομοιόμορφα κατανεμημένα και ανεξάρτητα από τη γεωγραφική τοποθεσία ή το περιεχόμενο που διαθέτουν. Οπως και στο Tapestry, κάθε αναζήτηση προχωράει προωθώντας το μήνυμα αναζήτησης στον επόμενο κόμβο που έχει τουλάχιστον ένα ψηφίο του αναγνωριστικού του πλησιέστερο σε σχέση με το κλειδί προς αναζήτηση. Ετσι, αν υπάρχουν Ν κόμβοι στο σύστημα, τότε μια αναζήτηση χρειάζεται το μέγιστο log2b N βήματα, όπου b είναι μια παράμετρος (με τυπική τιμή 4). Επίσης η αναζήτηση μπορεί να είναι επιτυχής ακόμα και όταν κόμβοι εγκαταλείπουν το σύστημα απότομα εφόσον ο αριθμός αυτών δεν ξεπερνά το όριο των L/2 γειτονικών κόμβων ταυτόχρονα, όπου L είναι επίσης μια παράμετρος με τυπική τιμή 16 ή 32. Κάθε κόμβος του Pastry διατηρεί έναν πίνακα δρομολόγησης, ένα σετ γειτόνων και ένα σετ φύλλου. Ο πίνακας δρομολόγησης κάθε κόμβου περιέχει log2bn σειρές με 2 b - 1 στοιχεία η καθεμία. Τα 2 b - 1 στοιχεία στην σειρά n του πίνακα δρομολόγησης αναφέρονται σε κόμβους που το αναγνωριστικό τους έχει τα πρώτα n ψηφία κοινά με τον κόμβο αλλά το n+1 ψηφίο έχει ένα από τα 2 b - 1 πιθανά ψηφία εκτός από το n+1 ψηφίο του παρόντα κόμβου. Η παράμετρος b καθορίζει τον αριθμό των κόμβων που αποθηκεύονται στον πίνακα δρομολόγησης και τον αριθμό των βημάτων που απαιτούνται για να γίνει μια επιτυχής αναζήτηση. Οσο αυξάνει ο πίνακας δρομολόγησης τόσο μειώνονται τα βήματα που απαιτούνται και το αντίστροφο. Node 10233102 Σετ Φύλλου Μικρότερα Μεγαλύτερα 10233033 10233021 10233120 10233122 10233001 10233000 10233230 10233232 Πίνακας Δρομολόγησης Distributed Systems 13

DHT Algorithms Panagiotis Kintis Niki Kyriakou Node 10233102-0-2212102 1-2-2301203-3-1203203 0 1-1-301233 1-2-230203 1-3-021022 10-0-31203 10-1-32102 2 10-3-23302 102-0-0230 102-1-1302 102-2-2302 3 1023-0-322 1023-1-000 1023-2-121 3 10233-0-02 1 10233-2-32 0 102331-2-0 2 Σετ Γειτόνων 13021022 10200230 11301233 31301233 2212102 22301203 31203203 33213321 Πίνακας 1. Τυπική δομή των αποθηκευμένων πληροφοριών σε ένα κόμβο Pastry Το σετ γειτόνων περιέχει τα αναγνωριστικά των Μ κόμβων που βρίσκονται πλησιέστερα στον κόμβο, με βάση μια συνάρτηση συσχέτισης που συγκρίνει τα αναγνωριστικά τους. Το σετ αυτό δεν χρησιμοποιείται για τη δρομολόγηση αλλά για λόγους τοπικής συσχέτισης, στο οποίο θα αναφερθούμε στο τέλος του κεφαλαίου αυτού. Το σετ φύλλου τέλος περιέχει τους L/2 κόμβους με αναγνωριστικά πλησιέστερα στον κόμβο με μεγαλύτερη αριθμητική τιμή και τους L/2 κόμβους με αναγνωριστικά πλησιέστερα στον κόμβο με μικρότερη αριθμητική τιμή. Οι κόμβοι αυτοί χρησιμοποιούνται στην δρομολόγηση των αναζητήσεων. Τυπικές τιμές για το L και το M είναι 2 b ή 2*2 b. Στον Πίνακας 1 φαίνεται η τυπική δομή των πληροφοριών που αποθηκεύονται σε έναν κόμβο του συστήματος Pastry. Ο πίνακας αναφέρεται σε έναν κόμβο με αναγνωριστικό 10233102, με παραμέτρους b = 2 και L = 8. Ολοι οι αριθμοί είναι με βάση το 4. Στον πίνακα δρομολόγησης τα σκιαγραφημένα νούμερα αναφέρονται στο ψηφίο του κόμβου και τα αναγνωριστικά των άλλων κόμβων εμφανίζονται με τη δομή «κοινό πρόθεμα - επόμενο ψηφίο υπόλοιπο αναγνωριστικό». Η διαδικασία δρομολόγησης στο Pastry είναι ως εξής. Οταν καταφθάνει μια αναζήτηση πρώτα ελέγχεται αν το κλειδί ανήκει σε έναν από τους κόμβους στο σετ φύλλου και προωθείται σε 14 Distributed Systems

Panagiotis Kintis Niki Kyriakou DHT Algorithms αυτόν με το πλησιέστερο προς το κλειδί αναγνωριστικό. Εάν δεν ανήκει στην αρμοδιότητα κανενός από αυτούς τους κόμβους τότε προωθείται στον κόμβο που βρίσκεται στον πίνακα δρομολόγησης και έχει τουλάχιστον ένα περισσότερο ψηφίο κοινό με το κλειδί από ότι ο ίδιος ο κόμβος. Αν δεν υπάρχει τέτοιο ψηφίο ή δεν είναι δυνατή η επικοινωνία με αυτόν τον κόμβο, τότε προωθείται στον κόμβο που βρίσκεται στον πίνακα δρομολόγησης και έχει τον ίδιο αριθμό ψηφίων κοινά με τον παρόντα κόμβο αλλά είναι αριθμητικά πλησιέστερος προς το κλειδί. Distributed Systems 15

Panagiotis Kintis Niki Kyriakou DHT Algorithms Tapestry Algorithm Δροµολόγηση στο Tapestry Οι βασικές λειτουργίες των μηχανισμών εντοπισμού και δρομολόγησης είναι παρόμοιες με αυτές του Plaxton. Κάθε πίνακας γειτνίασης οργανώνεται σε επίπεδα δρομολόγησης, με κάθε επίπεδο να περιέχει καταχωρήσεις που δείχνουν σε μια ομάδα κόμβων που είναι κοντινή σε απόσταση δικτύου, η οποία ταιριάζει με το επίθεμα για αυτό το επίπεδο. Κάθε κόμβος διατηρεί μια εναλλακτική λίστα δεικτών, που δείχνει σε κόμβους στους οποίους αναφέρεται σαν γείτονας. Ο μηχανισμός εντοπισμού του Tapestry είναι παρόμοιος με αυτόν του Plaxton. Κάθε κόμβος στη διαδρομή προς τον κόμβο- ρίζα αποθηκεύει την τοποθεσία του κοντινότερου αντιγράφου του, όταν υπάρχουν πολλαπλά αντίγραφα στο Plaxton. Στο Tapestry, αποθηκεύονται οι τοποθεσίες όλων των αντιγράφων για να αυξηθεί η ευελιξία στη σημασιολογία. Ετσι το Tapestry επιτρέπει στην εφαρμογή να προσδιορίσει κάποιο συγκεκριμένο αντίγραφο, ενώ το Plaxton επιστρέφει πάντα το πλησιέστερο. Κάθε αντικείμενο μπορεί να περιέχει μια επιπλέον τιμή που θα καθορίζεται από την εφαρμογή. Ετσι η εφαρμογή μπορεί έτσι να προσδιορίσει από το επιπλέον χαρακτηριστικό και την τιμή του, το κατάλληλο αντικείμενο. Διαχείριση σφαλµάτων Η ικανότητα του εντοπισμού, της παράκαμψης και της επαναφοράς από σφάλματα είναι ένας βασικός στόχος του Tapestry. Η επιλογή σχεδιασμού γίνεται ώστε τα μέρη του Tapestry να απευθύνονται στο θέμα της προσαρμογής σε σφάλματα, με τη χρήση των προσφάτως χρησιμοποιημένων δεδομένων για την επαναφορά από τα σφάλματα. Αυτό επιτρέπει στο Tapestry να χειρίζεται τα σφάλματα σαν μέρος της λειτουργίας του, αντί να τα αντιμετωπίζει σαν ξεχωριστές περιπτώσεις. Τα σφάλματα είναι ένα αναμενόμενο γεγονός στη λειτουργία σε ευρεία περιοχή. Στη συνέχεια επεξηγείται, πώς εντοπίζονται, παρακάμπτονται και επαναφέρεται το σύστημα από τα σφάλματα στη λειτουργία του εντοπισμού και της δρομολόγησης. Distributed Systems 17

DHT Algorithms Panagiotis Kintis Niki Kyriakou Δροµολόγηση ανεκτική σε σφάλµατα Τα είδη των αναμενομένων σφαλμάτων είναι διακοπές λειτουργίας του εξυπηρετητή, διακοπές συνδέσεων, και λάθη στους πίνακες γειτνίασης των εξυπηρετητών. Τα σφάλματα εντοπίζονται γρήγορα, διορθώνονται και στη συνέχεια αποκαθίσταται η λειτουργία των δρομολογητών. Για τον εντοπισμό της διακοπής λειτουργίας του εξυπηρετητή και τις διακοπές συνδέσεων, το Tapestry στηρίζεται στην εκπνοή TCP. Επιπλέον, κάθε κόμβος στέλνει περιοδικά, πακέτα που διαβεβαιώνουν τους γειτονικούς κόμβους ότι είναι αξιόπιστοι για δρομολόγηση. Ελέγχοντας το ID του κάθε κόμβου στον οποίο φτάνει ένα μήνυμα, μπορούν να εντοπιστούν εσφαλμένοι πίνακες γειτνίασης. Για τη λειτουργία κατά τη διάρκεια των σφαλμάτων, κάθε καταχώρηση στον χάρτη γειτνίασης διατηρεί δύο εναλλακτικούς γειτονικούς κόμβους επιπρόσθετα με τον πλησιέστερο γειτονικό κόμβο. Αυτοί αναφέρονται ως δευτερεύοντες γειτονικοί κόμβοι. Με την κατάρρευση του πρωτεύοντος γειτονικού κόμβου, γίνεται η προσαρμογή στον δευτερεύοντα γειτονικό κόμβο. Τέλος, αποφεύγονται οι επανασυνδέσεις των κόμβων όταν έχει επιδιορθωθεί μια βλάβη, λόγω κόστους. Οταν ένας κόμβος αντιλαμβάνεται ότι δεν έχει πρόσβαση σε έναν γειτονικό του κόμβο, συνεχίζει τη δρομολόγηση από εναλλακτική διαδρομή. Επειδή οι περισσότερες καταρρεύσεις κόμβων και οι διακοπές συνδέσεων εντοπίζονται και διορθώνονται σε σχετικά μικρό χρονικό διάστημα, δίνεται χρόνικό διάστημα δεύτερης ευκαιρίας κατά τη διάρκεια του οποίου στέλνονται μηνύματα στον εξυπηρετητή. Αν το μήνυμα δεν είναι επιτυχημένο τότε χρησιμοποιείται η εναλλακτική διαδρομή. Αλλιώς, το μήνυμα είναι επιτυχημένο, θεωρείται ότι το σφάλμα διορθώθηκε και επιλέγεται η αρχική διαδρομή. Αν λήξει η χρονική περίοδος χωρίς τη διόρθωση του σφάλματος,τότε ο αρχικός γειτονικός κόμβος απομακρύνεται από τον χάρτη γειτνίασης, προωθείται ο εναλλακτικός και επιλέγεται ένας άλλος για εναλλακτικός. Εντοπισµός ανεκτικός σε σφάλµατα Οπως διατυπώθηκε προηγουμένως ο κόμβος- ρίζα ενός αντικειμένου είναι μοναδικό σημείο αποτυχίας στον αλγόριθμο Plaxton. Στο Tapestry αυτό διορθώνεται αντιστοιχίζοντας πολλαπλούς κόμβους- ρίζες για για κάθε αντικείμενο. Για να επιτευχθεί αυτό, συνδέεται μια αλληλουχία ειδικών τιμών στο ID του κάθε αντικειμένου και στη συνέχεια με χρήση συνάρτησης ανάμειξης προκύπτουν οι κατάλληλοι κόμβοι- ρίζες. Αυτοί χρησιμοποιούνται για την εισαγωγή πληροφοριών εντοπισμού στο δίκτυο Tapestry. Κατά την αναζήτηση ενός αντικειμένου, το Tapestry υλοποιεί την ίδια συνάρτηση ανάμειξης με στόχο το ID του αντικειμένου, λαμβάνοντας σαν αποτέλεσμα μια ομάδα κόμβων- ριζών για αναζήτηση. 18 Distributed Systems

Panagiotis Kintis Niki Kyriakou DHT Algorithms Εναλλακτική δροµολόγηση Στον αλγόριθμο Plaxton, ο κόμβος- ρίζα επιλέγεται ως ο κόμβος ο οποίος ταιριάζει με το ID(έστω Ι), με το μεγαλύτερο αριθμό bit. Αφού μπορεί να υπάρχουν πολλοί κόμβοι που πληρούν τις προϋποθέσεις, επιλέγεται ένας μοναδικός κόμβος- ρίζα με την πρόσκληση όλων των κόμβων του δικτύου. Ο κόμβος με το καλύτερο αποτέλεσμα επιλέγεται σαν κόμβος- ρίζα. Ο εντοπισμός στο Plaxton λειτουργεί αναλύοντας το ID του αντικειμένου ψηφίο προς ψηφίο έως ότου συναντήσει μια κενή καταχώρηση για τους γειτονικούς κόμβους. Σε αυτό το σημείο κάνει ένα τελευταίο βήμα στον κόμβο- ρίζα. Το Tapestry χρησιμοποιεί τον αλγόριθμο εναλλακτικής δρομολόγησης για να υπολογίσει τον μοναδικό κόμβο- ρίζα. Ο αλγόριθμος είναι ντετερμινιστικός, κλιμακούμενος, και αποτελεσματικός από κάθε σημείο στο δίκτυο. Η εναλλακτική δρομολόγηση επιλέγει δοκιμαστικά τον κόμβο- ρίζα ενός αντικειμένου να έχει την ίδια ονομασία με το ID, I. Με δεδομένο το αραιό πλήθος των πιθανών ονομασιών είναι απίθανο αυτός να υπάρχει. Παρ όλα αυτά το Tapestry συνεχίζει τη δρομολόγηση σαν να υπήρχε. Η δρομολόγηση σε έναν ανύπαρκτο δείκτη, θα συναντήσει κενές καταχωρήσεις για τους γειτονικούς κόμβους. Ο στόχος είναι η επιλογή ενός κόμβου σαν εναλλακτικού συνδέσμου. Αυτή η επιλογή γίνεται με ντετερμινιστική επιλογή ανάμεσα στους γειτονικούς δείκτες. Η δρομολόγηση τερματίζεται όταν σε έναν χάρτη γειτνίασης, η μοναδική μη κενή καταχώρηση ανήκει στον τρέχοντα κόμβο. Αυτός ο κόμβος καθορίζεται ως ο εναλλακτικός κόμβος- ρίζα για το αντικείμενο. Ενας σύνδεσμος σε γειτονικό κόμβο μπορεί να είναι κενός μόνο αν δεν υπάρχουν υποψήφιοι κόμβοι σε ολόκληρο το δίκτυο. Ετσι, γειτονικοί κόμβοι σε ολόκληρο το δίκτυο θα έχουν κενές καταχωρήσεις στον χάρτη γειτνίασης αν και μόνο αν όλοι οι κόμβοι με αυτό το επίθεμα έχουν ακριβώς τις ίδιες κενές καταχωρήσεις. Ενας ντετερμινιστικός αλγόριθμος θα έφτανε στον στον ίδιο μοναδικό εναλλακτικό κόμβο- ρίζα από οποιαδήποτε τοποθεσία στο δίκτυο Tapestry. Η εναλλακτική δρομολόγηση παρέχει μια τεχνική με την οποία κάθε δείκτης μπορεί να αντιστοιχιστεί μοναδικά σε έναν κόμβο του δικτύου. Ενώ η εναλλακτική δρομολόγηση μπορεί να χρειαστεί μερικά βήματα παραπάνω σε σύγκριση με τον αλγόριθμο Plaxton, ο αριθμός των επιπρόσθετων βημάτων όμως παραμένει μικρός. Δυναµικοί αλγόριθµοι Ο μόνος περιορισμός στην πρόταση του Plaxton είναι η στατική φύση των αλγορίθμων του. Στο Tapestry προτείνονται αλγόριθμοι που επικεντρώνονται σε δυναμικές λειτουργίες με αποκεντρωμένη μέθοδο. Ετσι επιτυγχάνονται αρκετές από τις επιθυμητές ιδιότητες που έχουν αναφερθεί. Distributed Systems 19

DHT Algorithms Panagiotis Kintis Niki Kyriakou Δυναµική είσοδος κόµβου Ο αλγόριθμος για τη δυναμική είσοδο κόμβου δεν εγγυάται ιδανική τοπολογία, αλλά είναι μια καλή προσέγγιση που θα μπορεί να συγκλίνει σε αυτήν. Το βασικό μέρος του αλγορίθμου είναι το παρακάτω. Αρχικά, συμπληρώνονται οι πίνακες γειτνίασης του νέου κόμβου με δρομολόγηση στο ID.Στη συνέχεια αντιγράφονται και βελτιστοποιούνται σε κάθε βήμα από το δρομολογητή. Ενημερώνονται οι γειτονικοί κόμβοι για την άφιξη του νέου κόμβου, ώστε να ενημερώσουν τους δικούς τους πίνακες γειτνίασης. Συµπλήρωση πίνακα γειτνίασης Ο κόμβος Ν γνωρίζει τον κόμβο εξόδου G, που είναι ένας κοντινός του κόμβος σε απόσταση στο δίκτυο. Ξεκινώντας από τον κόμβο G, ο κόμβος Ν επιχειρεί να δρομολογήσει προς το new_id, που είναι το νέο αναγνωριστικό ID, και αντιγράφει έναν προσεγγιστικό πίνακα γειτνίασης από το βήμα i, H i με τον αρχικό κόμβο να είναι G = H 0. Με τη δρομολόγηση στο δικό του ID, ο κόμβος Ν γνωρίζει ότι μοιράζεται με το H i ένα επίθεμα μήκους i. Αντιγράφει τον πίνακα γειτνίασης και προσπαθεί να βελτιστοποιήσει κάθε καταχώρηση. Η βελτιστοποίηση γίνεται συγκρίνοντας τις αποστάσεις μεταξύ του Ν και κάθε γειτονικής καταχώρησης και των δευτερευόντων γειτονικών κόμβων. Ο νέος κόμβος σταματά να αντιγράφει πίνακες γειτνίασης, όταν η αναζήτηση δείχνει σε κενή καταχώρηση στο επόμενο βήμα. Τότε μετακινεί τα δεδομένα που προορίζονται για το new_id στον κόμβο Ν. Ενηµέρωση γειτονικών κόµβων Το επόμενο βήμα είναι η ενημέρωση των κόμβων για την άφιξη του νέου κόμβου Ν. Για τους κόμβους που έχουν άδεια καταχώρηση στη θέση που έπρεπε να είναι ο κόμβος Ν, διασχίζονται οι εναλλακτικοί δείκτες μεχρι το επίπεδο όπου η εναλλακτική δρομολόγηση ήταν απαραίτητη. Για την ενημέρωση των τοπικών κόμβων που μπορεί να επωφεληθούν από τον κόμβο Ν σαν νέο κόμβο δρομολόγησης, στέλνονται μηνύματα σε όλους τους γειτονικούς κόμβους σε κάθε επίπεδο. Οι κόμβοι που έχουν ειδοποιηθεί έχουν την επιλογή να υπολογίσουν την απόσταση με τον κόμβο Ν, και αν είναι κατάλληλος να αντικαταστήσουν την καταχώρηση με έναν γειτονικό κόμβο με το Ν. Με τη διαδικασία ενημέρωσης των κόμβων για την αλλαγή των καταχωρήσεών τους για τον κόμβο Ν, μπορεί ακούσια να αλλαχθεί ο εναλλακτικός τρόπος δρομολόγησης, λόγω της συμπλήρωσης κενής θέσης. Αυτό το πρόβλημα λύνεται με τον κόμβο Ν να αποθηκεύει αντιστοιχίσεις αντικειμένων με τις τοποθεσίες τους. Ετσι μπορούν να διατηρηθούν οι δρομολογήσεις προς τα αντικείμενα χωρίς διακοπές. 20 Distributed Systems

Panagiotis Kintis Niki Kyriakou DHT Algorithms Κάθε είσοδος κόμβου απαιτεί ένα μη αμελητέο χρονικό διάστημα. Αυτό είναι μέρος της λογικής για την εισαγωγή των διορθωμένων κόμβων. Η αναχώρηση κόμβων απαιτεί μικρότερο χρονικό διάστημα. Ενας κόμβος μπορεί να ενημερώσει τους υπόλοιπους για την αναχώρησή του. Παρ όλο που το δίκτυο αναμένεται να είναι δυναμικό, μόνο μικρό μέρος του δικτύου εισέρχεται ή εξέρχεται ταυτόχρονα. Φορτίο εύρους ζώνης Για τη διατήρηση ενημερωμένων δεικτών που δείχνουν σε αντικείμενα, η ανανέωση σε τακτά χρονικά διαστήματα είναι μια ικανή λύση, επιφέρει βάρος στο εύρος ζώνης της γραμμής. Το ίδιο ισχύει και για την ενημέρωση των πληροφοριών σχετικά με τους κόμβους. Ετσι, χρειάζεται μια προσέγγιση με ειδικές ανανεώσεις, τόσο για τους κόμβους όσο και για τα αντικείμενα. Η αντιστοίχιση των αντικειμένων στις τοποθεσίες χρειάζονται τα τρία χαρακτηριστικά ObjectID, ServerID, LastHopID. Αυτά αναφέρονται στα αντικείμενα, στον εξυπηρετητή και στο τελευταίο βήμα. Για κάθε βήμα προς τον κόμβο- ρίζα, κάθε εξυπηρετητής αποθηκεύει το ΙD του προηγούμενου κόμβου ως το LastHopID. Με αυτό τον τρόπο γίνεται καλύτερη κατανομή του φορτίου στο εύρος ζώνης. Distributed Systems 21

Panagiotis Kintis Niki Kyriakou DHT Algorithms P-Grid Ο Αλγόριθµος Το P- Grid, είναι μια open source εφαρμογή, ενός αλγορίθμου βασισμένη σε αποκεντροποιημένα επικαλύπτοντα δίκτυα με τη μορφή δέντρων, για εφαρμογές που απαιτούν την ανταλλαγή δεδομένων. Αποτελεί μια ώριμη τεχνολογία με δυνατότητα implementa on μιας λειτουργικής της έκδοσης στη Java. Συνεχώς αναπτύσσεται και δίνει τη δυνατότητα σε κάθε χρήστη να μπορεί να επέμβει στον πηγαίο κώδικα για να προσαρμόσει ό,τι αυτός επιθυμεί στις δικές του ανάγκες. Δοµή Ο αλγόριθμος του συστήματος αυτού παρέχει εξισορρόπηση στον αποθηκευτικό όγκο παρόλα τα δεδομένα που διακινούνται στο δίκτυό του. Πολλά ερωτήματα που αποστέλονται ανάμεσα σε υπολογιστικά σε συστήματα, μπορούν να επεξεργαστούν επιτυχώς λόγω της αυθαίρετης δενδρικής δομής, καθώς υποστιρίζει και την αυθαίρετη διαμοίραση κλειδιών στους κόμβους του συστήματος. Κάθε σύστημα έχει ένα δικό του κατάλογο αρχείων, με το δικό του κλειδί, παρέχοντας ταυτότητα που μπορεί να χρησιμοποιηθεί μεταξύ πολλών συνεδριών (mul - session). Τα αντιγραμμένα δεδομένα στους κόμβους, ενημερώνονται μεταξύ τους μέσω μεθόδου gossip. Πολλά P- Grid δίκτυα μπορούν να συγχωνευθούν, ώστε να δημιουργηθεί ένα αποκεντικοποιημένο επικαλύπτων δίκτυο. Τα ερωτήματα που ανταλλάσσονται μεταξύ των κόμβων, μπορούν να αποθηκευτούν προσωρινά (cache), ώστε να αποφευχθεί πιθανό overflow ή DoS. Το P- Grid, ξεφεύγει από τη βασική μορφή του DHT, χρησιμοποιώντας ένα αυθαίρετα δημιουργηθέν δέντρο, εκτελώντας ερωτήματα με βάση τα προθέματά τους. Η πραγματική τοπολογία δεν έχει κάποια ιεραρχία, χρησιμοποιώντας κάθε κόμβο κάθε τμήματος του δέντρου αυτόνομα, δίνοντας τη δυνατότητα η δρομολόγηση να γίνεται από τους πίνακες δρομολόγησης που διατηρεί κάθε πατέρας για τα φύλλα του υποδέντρου του. Σε κάθε επίπεδο κάθε δέντρου, διατηρούνται ακόμα και διπλοεγγραφές δρομολόγησης, ώστε να υπάρχει η δυνατότητα ανάκτησης πληροφοριών ακόμα και σε περίπτωση σφάλματος. Τέλος, σε κάθε κομμάτι του δέντρου, χρησιμοποιούνται περισσότεροι του ενός υπολογιστές, που διατηρούν αντίγραφα (replicas), συνδεδεμένοι μεταξύ τους σε ένα δικό τους υποδίκτυο και ενημερώνοντας ο ένας τον άλλο, επίσης με τη μέθοδο gossip. Επιτυγχάνεται έτσι καλύτερος Distributed Systems 23

DHT Algorithms Panagiotis Kintis Niki Kyriakou έλεγχος σφαλμάτων καθώς και σημαντική εξισορρόπηση των φορτίων που ανταλλάσσονται. Στο παρακάτω σχήμα (Σχήμα 2), φαίνεται πώς λειτουργεί ένα τέτοιο δίκτυο. Σχήμα 2 Το P- Grid, κατακερματίζει τα κλειδιά σε μικρά κομμάτια προσαρμοσμένα στον όγκο των πληροφοριών. Ως αποτέλεσμα, κάθε κόμβος του επικαλύπτοντος δικτύου, έχει παρόμοιο αποθηκευτικό χώρο, ώστε να μπορούν να διαμοιράζονται και ανομοιόμορφα δεδομένα. Με αυτό τον τρόπο, απεξαρτάται από τον τρόπο που μεταχειρίζονται τα κλειδιά οι αλγόριθμοι που βασίζονται καθαρά σε DHT. Τέλος, υπάρχει η δυνατότητα να διατηρηθεί ένα ισορροπημένο δίκτυο, όπου τα κλειδιά θα μπορούν να επεξεργαστούν σωστά, ανεξάρτητα του μεγέθους τους, δίνοντας τη δυνατότητα οι αναζητήσεις να είναι σαφέστερες και πιο έγκυρες σε πολύ μεγαλύτερο φάσμα ερωτημάτων (όπως φαίνεται στο Σχήμα 3). 24 Distributed Systems

Panagiotis Kintis Niki Kyriakou DHT Algorithms Σχήμα 3 Distributed Systems 25

Panagiotis Kintis Niki Kyriakou DHT Algorithms Compared Το Tapestry ομοιάζει αρκετά με το Pastry κυρίως στο γεγονός ότι και τα δύο χρησιμοποιούν αποκεντρωμένους και βασισμένους στην τυχαιότητα τρόπους για να επιτύχουν κατανομή φόρτου (load balancing) και τοπικότητα (locality) στη δρομολόγηση. Επίσης χρησιμοποιούν κοινά προθέματα και υποθέματα κατά τη δρομολόγηση. Επιπλέον κοινά στοιχεία έχουν κατά την εισαγωγή και την αποχώρηση των κόμβων αλλά και στο κόστος επιβάρυνσης για την αποθήκευση, αλλά και την διατήρηση επικοινωνίας μεταξύ των κόμβων. Συγκεκριμένα για τη δρομολόγηση, στο δίκτυο Pastry η δρομολόγηση γίνεται με την προώθηση των μηνυμάτων στον κόμβο με τον οποίο έχει κοινό πρόθεμα τουλάχιστον κατά ένα ψηφίο μεγαλύτερο από τον τρέχοντα κόμβο. Στο δίκτυο Tapestry η δρομολόγηση των μηνυμάτων γίνεται προς τον n κόμβο με τον οποίο έχει κοινό υπόθεμα τουλάχιστον κατά μήκος n. Το Tapestry και το Pastry διαφέρουν βασικά στον τρόπο με τον οποίο το κάθε ένα σύστημα προσπαθεί να επιτύχει την τοπικότητα του δικτύου αλλά και την υποστήριξη replica on. Οι υπάρχουσες εφαρμογές που χτίζονται πάνω από το Pastry περιλαμβάνουν το Past, ένα βοήθημα αποθήκευσης, και to Scribe, ένα σύστημα δημοσίευσης και προσυπογραφής. Στο δίκτυο Pastry μπορεί να υπάρχουν αντικείμενα τα οποία αντιγράφονται χωρίς έλεγχο από τον χρήστη. Με τη χρήση ενός αντικειμένου στο δίκτυο δημιουργούνται αντίγραφα τα οποία τοποθετούνται σε κόμβους με γειτονικά αναγνωριστικά. Στο υπερκείμενο δίκτυο Τapestry δεν υπάρχει ομάδα φύλλων ενώ χρησιμοποιείται και η τεχνική της εναλλακτικής δρομολόγησης η οποία αντιστοιχίζει κλειδιά σε έναν μοναδικό ενεργό κόμβο του δικτύου. Ενα μεταγενέστερο συστήμα βασισμένο σε Plaxton δέντρα είναι το Kademlia. Οι δημιουργοί του, το περιέγραψαν ως όμοιο του Pastry αλλά με τη διαφορά ότι χρησιμοποιεί την XOR συνάρτηση για τη μέτρηση των αποστάσεων. Τα συστήματα Pastry, Tapestry και Kademlia είναι δομημένα, δηλαδή η θέση των κόμβων και των δεδομένων πάνω στο σύστημα είναι συγκεκριμένη και ο προσδιορισμός της γίνεται με βάση ένα κατανεμημένο πίνακα κατακερματισμού (Distributed Hash Table - DHT). Τόσο οι κόμβοι όσο και τα δεδομένα πρέπει να έχουν ένα μοναδικό αναγνωριστικό. Τα κάθε δεδομένο (ή αντικείμενο) αντιστοιχίζεται και αποθηκεύεται σε έναν κόμβο με βάση μια συνάρτηση κατακερματισμού, επιτυγχάνοντας εν μέρει και εξισορρόπηση φορτίου (load balance). Κατά την διαδικασία της αναζήτησης, η θέση του επιθυμητού δεδομένου εντοπίζεται με μια συνάρτηση κατακερματισμού και η ερώτηση προωθείται. Τέλος, τα συστήματα αυτά διατηρούν δεντρική δομή (tree) και η αναζήτηση απαιτεί O(log2bN) όπου b παράμετρος του αλγορίθμου που συνήθως έχει τιμή 4 και N όπως και παραπάνω οι συνδεδεμένοι κόμβοι. Το Viceroy peer- to- peer σύστημα έχει δομή πεταλούδας (bu erfly) και η αναζήτηση διαρκεί το πολύ O(logN) βήματα. Distributed Systems 27

Panagiotis Kintis Niki Kyriakou DHT Algorithms Bibliography h p://xla«ce.sourceforge.net/components/protocol/kademlia/specs.html#intro h p://ntrg.cs.tcd.ie/undergrad/4ba2.02-03/p9.html#kademlia h p://ccsenet.org/journal/index.php/cis/ar cle/viewfile/4282/3729 h p://www.p- grid.org/ Sites PDFs & Presentations Ανακάλυψη Web Services σε συστήματα ομοτίμων (Peer- to- Peer), Καλαποδάς Γεώργιος 2006 ΔΡΟΜΟΛΟΓΗΣΗ ΣΕ ΥΠΕΡΚΕΙΜΕΝΑ ΙΚΤΥΑ ROUTING IN OVERLAY NETWORKS, ημήτριος Π. Συκαράς 2008 Μια Ομότιμη Αρχιτεκτονικη για Ανταλλαγή Περιεχομνου σε Υπερκείμενα Δίκτυα, Αθανάσιος- Δημήτριος Κ. Σωτηρίου 2008 Μελέτη και αξιολόγηση τεχνικών δημιουργίας ευρετηρίων αναζήτησης για p2p δίκτυα, Ευάγγελος Παπακηρύκου 2008 Υλοποίηση Ενεργού Μηχανισμού σε σύστημα Ομότιμων Βάσεων, ΕΛΛΗ ΑΝΔΡΟΥΛΑΚΗ Συστήματα Peer To Peer (P2P Systems), Γαλάνης ημήτριος & Παπαδημητρίου Χριστίνα Distributed Systems 29