A Scalable Content-Addressable Network Μυρτώ Ντέτσικα Παναγιώτα Νικολαΐδου Ελένη Γεώργα Λαμπρινή Κώνστα Βαγγέλης Λάππας Γρηγόρης Τζώρτζης Γιώργος Καρπάθιος Δημήτρης Γερογιάννης
Peer-to-Peer Systems2 Εισαγωγή Καθοριστικό ρόλο στον σχεδιασμό ενός peer-to-peer συστήματος έχει το σχήμα δεικτοδότησης των δεδομένων Ένα scalable peer-to-peer σύστημα απαιτεί την ύπαρξη ενός scalable μηχανισμού δεικτοδότησης Παραδείγματα non-scalable σχημάτων υπάρχουν στο Napster και στο Gnutella Napster: Κεντρικό ευρετήριο Gnutella: Μέθοδος πλημμύρας CAN Ένα Content-Addressable Network (CAN) αποτελεί μία scalable λύση για τον τρόπο αναζήτησης των δεδομένων σε ένα peer-to-peer σύστημα
Peer-to-Peer Systems3 CAN Είναι ένα κατανεμημένο hash table Υποστηρίζει τις λειτουργίες της εισαγωγής, αναζήτησης και διαγραφής Κάθε κόμβος αποθηκεύει ένα τμήμα (zone) του hash table Κάθε κόμβος κρατάει πληροφορία για τους γειτονικούς του κόμβους Κάθε αίτημα δρομολογείται μέσω ενδιάμεσων κόμβων προς τον κόμβο του συστήματος που περιέχει τα σχετικά δεδομένα Ο σχεδιασμός του CAN είναι: Κατανεμημένος Scalable Ανεκτικός σε σφάλματα
Peer-to-Peer Systems4 Σχεδιασμός (1) Εικονικός χώρος d διαστάσεων οργανωμένος σε d-torus Ο χώρος συντεταγμένων διαμοιράζεται δυναμικά σε zones Σε κάθε κόμβο του συστήματος ανατίθεται ένα zone και κάθε κόμβος χαρακτηρίζεται από τις συντεταγμένες του zone που κατέχει Γειτονικοί κόμβοι σε d-διάστατο χώρο: Τα zones τους επικαλύπτονται στις d-1 διαστάσεις και συνορεύουν σε μία διάσταση ( , ) ( , ) ( , ) ( , ) ( , ) ( , ) ( , ) ( , ) (0,1) (0,0) (1,1) (1,0) Παράδειγμα 2-διάστατου [0,1]x[0,1] CAN με 8 κόμβους Γείτονες του ( , )
Peer-to-Peer Systems5 Σχεδιασμός (2) Αποθήκευση του (Κ,V): Εφαρμογή μίας ομοιόμορφης συνάρτησης κατακερματισμού στο κλειδί Κ Το Κ αντιστοιχίζεται μέσω αυτής σε ένα σημείο P του χώρου Το ζεύγος αποθηκεύεται στον κόμβο του οποίου το zone περιλαμβάνει το P Αναζήτηση του (Κ,V): Εφαρμογή της ίδιας συνάρτησης κατακερματισμού στο κλειδί Κ Απόκτηση του ζεύγους από τον κόμβο που περιέχει το P Αν το σημείο P δεν ανήκει στο zone του κόμβου που έκανε την ερώτηση ή στους γείτονές του, χρειάζεται δρομολόγηση
Peer-to-Peer Systems6 Δρομολόγηση (1) Κάθε κόμβος διατηρεί έναν πίνακα δρομολόγησης με πληροφορία για: Τις IP διευθύνσεις των γειτονικών του κόμβων Τα zones για κάθε έναν από αυτούς Χρησιμοποιείται greedy αλγόριθμος για την εύρεση του γείτονα που είναι κάθε φορά πλησιέστερος (π.χ. ευκλείδεια απόσταση) στον προορισμό Έναρξη αναζήτησης στον (0-0.25, ) h(k)=(x1,y1) στον ( , ) Έναρξη αναζήτησης στον (0-0.25, ) h(k)=(x1,y1) στον ( , )
Peer-to-Peer Systems7 Δρομολόγηση (2) Για χώρο διάστασης d χωρισμένο σε n ίσα zones: Αριθμός γειτόνων = 2d Μέση απόσταση = (d/4) (n 1/d ) Κάθε κόμβος διατηρεί πληροφορία μόνο για τους γείτονές του, ανεξάρτητη του αριθμού των κόμβων στο σύστημα Η προσθήκη νέων κόμβων αυξάνει την μέση απόσταση κατά Ο(n 1/d )
Peer-to-Peer Systems8 Εισαγωγή νέου κόμβου (1) Η διαδικασία εισαγωγής ενός νέου κόμβου στο σύστημα περιλαμβάνει: 1. Την εύρεση τουλάχιστον ενός κόμβου που ήδη υπάρχει στο σύστημα 2. Την δρομολόγηση του αιτήματος προς τον κόμβο το οποίου το zone θα διαμεριστεί 3. Την ενημέρωση των γειτονικών κόμβων του zone που διαμερίστηκε, ώστε ο νέος κόμβος να συμμετέχει στην δρομολόγηση Βήμα 1 Χρήση του DNS στο CAN για την εύρεση ενός bootstrap κόμβου Ο bootstrap κόμβος ενημερώνει τον νέο κόμβο για τις IPs κάποιων κόμβων που υπάρχουν στο σύστημα
Peer-to-Peer Systems9 Εισαγωγή νέου κόμβου (2) Βήμα 2 Επιλογή ενός τυχαίου σημείου P στον χώρο από τον νέο κόμβο Αποστολή ενός αιτήματος JOIN προς τον κόμβο του οποίου το zone περιέχει το P μέσω κάποιου από τους κόμβους που εντοπίστηκαν στο Βήμα 1 Διαμέριση του zone του ιδιοκτήτη του P κατά μήκος μίας διάστασης Ανάθεση του ενός τμήματος στον νέο κόμβο Βήμα 3 Ενημέρωση της κατάστασης του νέου κόμβου, του κόμβου που διαμέρισε το zone του και των γειτόνων τους Τρόπος: Αποστολή περιοδικών μηνυμάτων με τις συντεταγμένες του zone από κάθε κόμβο προς τους γειτονικούς του κόμβους Κόστος: Ο(d)
Peer-to-Peer Systems10 Εισαγωγή νέου κόμβου - Παραδείγματα n1 n2 (x, y) n3n4 n1 n3n4 n5n2 n1 n3n4 n6 n5 n2 Κατάσταση πριν την εισαγωγή του n5 Κατάσταση μετά την εισαγωγή του n5 Κατάσταση μετά την εισαγωγή και του n6
Peer-to-Peer Systems11 Αποχώρηση κόμβου (1) Οικειοθελής αποχώρηση κόμβου: Ο κόμβος παραδίδει το zone του και τα δεδομένα που κατέχει σε έναν από τους γείτονές του Αν το zone του κόμβου που αποχωρεί μπορεί να συγχωνευθεί με το zone κάποιου γείτονα, επιλέγεται ο συγκεκριμένος γείτονας Διαφορετικά, επιλέγεται ο γείτονας με το μικρότερο zone
Peer-to-Peer Systems12 Αποχώρηση κόμβου (2) Αποτυχία κόμβου: Ανιχνεύεται με την αποστολή περιοδικών μηνυμάτων Κάθε γειτονικός κόμβος ανεξάρτητα ξεκινά μία διαδικασία ανακατάληψης του zone στέλνοντας ένα TAKEOVER μήνυμα προς τους υπόλοιπους γείτονες του κόμβου που απέτυχε Ο χρόνος αποστολής ενός TAKEOVER μηνύματος από κάποιον κόμβο είναι ανάλογος του μεγέθους του zone που κατέχει Ο κόμβος με το μικρότερο zone θα καταλάβει το zone του κόμβου που απέτυχε
Peer-to-Peer Systems13 Αποχώρηση κόμβου - Παραδείγματα n1 n3n4 n6 n5 n2 n7 n1 n3n4 n6 n5 n7 n1 n3n4 n6 n5 Κατάσταση πριν την αποχώρηση του n2 Κατάσταση μετά την αποχώρηση του n2 Κατάσταση μετά την αποχώρηση και του n7