Peer-to-Peer Τεχνικές Ευρετηρίασης 1 Λέκτορας Τσίχλας Κωνσταντίνος
Τι θα Πούμε 1.Τι είναι; 2.Μοντέλα 3.CHORD 4.… 2
Τι είναι P2P? Είναι μία τεχνολογία που επιτρέπει κάθε συσκευή σε ένα δίκτυο να παρέχει υπηρεσίες σε κάθε άλλη συσκευή στο δίκτυο Ένας ομότιμος (peer) σε ένα P2P δίκτυο εμφανίζεται τόσο σαν πελάτης όσο και σαν εξυπηρετητής σε σχέση με την παραδοσιακή αρχιτεκτονική πελάτη/εξυπηρετητή
P2P Συστήματα Κατανεμημένη εφαρμογή όπου οι κόμβοι είναι: Αυτόνομοι Πολύ χαλαρά συνδεδεμένοι Ίσοι σε ρόλο και δυναμικότητα??? Διαμοιράζονται και ανταλλάσσουν πόρους μεταξύ τους
Αντίστοιχοι Όροι •Διαμοίραση Αρχείων •π.χ.: Napster, Gnutella, Kaaza, E-Donkey, BitTorrent, FreeNet, LimeWire, Morpheus •Grid Computing •Autonomic Computing
P2P Τοπολογίες Κεντρικοποιημένη Δακτύλιος Ιεραρχική Αποκεντρικοποιημένη Υβριδική
Αξιολόγηση Τοπολογιών Διαχειρισιμότητα Πόσο δύσκολη είναι η διαχείρισή του; Συνεκτική Πληροφορία Πόσο κεντρικοποιημένη είναι η πληροφορία; Επεκτασιμότητα Πόσο εύκολο είναι να αυξηθεί η πληροφορία; Ανεκτικότητα σε Σφάλματα Πόσο εύκολα μπορεί να διαχειρισθεί σφάλματα;
Αξιολόγηση Τοπολογιών Αντίσταση σε νομική ή πολιτική παρέμβαση Πόσο εύκολο είναι να το κλείσεις; (μπορεί να είναι κακό ή καλό) Ασφάλεια Πόσο δύσκολη είναι η υπονόμευση; Μεταβλητότητα Πόσο μεγάλο μπορεί να γίνει;
Κεντρικοποιημένο Διαχειρίσιμο Συνεκτικό Επεκτάσιμο Ανεκτικό σε Λάθη Ασφαλές Νομική Παρέμβαση Μεταβλητό Το σύστημα σε ένα μέρος Όλη η πληροφορία σε ένα μέρος XΚανείς δεν μπορεί να προσθέσει στο σύστημα XΜοναδικό σημείο σφάλματος Ασφάλεια σε μία οντότητα XΕύκολο να το κλείσεις ?Μία μηχανή. Στην πράξη;
Ιεραρχικό ½Αλυσίδα Ιεραρχίας ½Κρυφές μνήμες ½Πρόσθεση φύλλων, επαναζύγιση ½Η ρίζα είναι ευάλωτη XΕύκολο να κάνεις spoofing στις ακμές XΑπλά κλείνουμε τη ρίζα Άνετα – DNS Διαχειρίσιμο Συνεκτικό Επεκτάσιμο Ανεκτικό σε Λάθη Ασφαλές Νομική Παρέμβαση Μεταβλητό
Αποκεντρικοποιημένο XΠολύ δύσκολο, πολλοί κάτοχοι XΔύσκολο, αναξιόπιστοι peer Όποιος θέλει μπαίνει! Πλεονασμός XΔύσκολο, ερευνητικά ανοικτό Ποιόν θα μηνύσεις; ?Θεωρητικά – ΝΑΙ : Πρακτικά – έτσι και έτσι Διαχειρίσιμο Συνεκτικό Επεκτάσιμο Ανεκτικό σε Λάθη Ασφαλές Νομική Παρέμβαση Μεταβλητό
Κεντρικοποιημένο + Αποκεντρικοποιημένο XΊδιο όπως το αποκεντρικοποιημένο ½Καλύτερο από το αποκεντρικοποιημένο Όποιος θέλει μπαίνει! Πλεονασμός XΊδιο όπως το αποκεντρικοποιημένο Δεν υπάρχει κανείς να κάνεις μήνυση ?Φαίνεται ελπιδοφόρο Καλύτερη αρχιτεκτονική για P2P; Διαχειρίσιμο Συνεκτικό Επεκτάσιμο Ανεκτικό σε Λάθη Ασφαλές Νομική Παρέμβαση Μεταβλητό
Γιατί P2P? Το διαδίκτυο έχει 3 θεμελιώδη περιουσιακά στοιχεία Πληροφορία Υπολογιστικούς Πόρους Εύρος ζώνης Όλα αυτά δεν χρησιμοποιούνται πλήρως και ένας λόγος που γίνεται αυτό είναι το παραδοσιακό μοντέλο εξυπηρετητή/πελάτη
Γιατί P2P? Πρώτον, καμία μηχανή αναζήτησης δεν μπορεί να διαχειρισθεί τον συνεχώς αυξανόμενο όγκο πληροφορίας στο Web μέσα σε λογικά χρονικά πλαίσια Επιπλέον, μεγάλος όγκος πληροφορίας είναι παροδικός και άρα δεν μπορούμε να τον βρούμε με τενχικές Web crawling Η Google ισχυρίζεται ότι ψάχνει περίπου 1.3x10 8 σελίδες Η εύρεση χρήσιμης πληροφορίας σε πραγματικό χρόνο θα γίνεται ολοένα δυσκολότερη!
Γιατί P2P? Το διαθέσιμο εύρος ζώνης λόγω οπτικών ινών χρησιμοποιείται ελάχιστα αν όλοι συνεχίζουν να πηγαίνουν στο Yahoo για περιεχόμενο ή στο eBay Αντί αυτού, τα σημεία συμφόρησης (hot spots) επιβαρύνονται ενώ η χρήση του εύρους ζώνης μειώνεται
Γιατί P2P? Δεν υπάρχει πια μοναδικό σημείο συμφόρησης Τα P2P μπορούν να χρησιμοποιηθούν για κατανομή δεδομένων και ελέγχου σε όλο το δίκτυο Δεν υπάρχει πια κίνδυνος λόγω μοναδικού σημείου κατάρρευσης Η P2P υποδομή, επιτρέπει άμεση προσπέλαση και διαμοιραζόμενο χώρο, και άρα υπάρχουν δυνατότητες απομακρυσμένης διαχείρισης
Βασικά P2P Στοιχεία Ομότιμοι: Ένας ομότιμος είναι ένας κόμβος του P2P δικτύου και είναι ο θεμελιώδης πυρήνας υπολογισμού. Κάθε ομότιμος έχει μία μοναδική ταυτότητα (ID) Κάθε ομότιμος ανήκει σε μία ή περισσότερες ομάδες ομότιμων Κάθε ομότιμος μπορεί να επικοινωνεί με άλλους ομότιμους στην ομάδα ή σε άλλες ομάδες
Τύποι Ομοτίμων Απλός ομότιμος: Ένας απλός ομότιμος αντιστοιχεί σε έναν χρήση για παροχή υπηρεσιών σε άλλους ή για χρήση υπηρεσιών από άλλους Ομότιμος συνάντησης: Ένας ομότιμος συνάντησης παρέχει σε άλλους ομότιμους μία θέση στο δίκτυο για χρήση από άλλους ομότιμους ώστε να ανακαλύψουν πόρους στο δίκτυο Ομότιμος δρομολόγησης: Ένας ομότιμος δρομολόγησης παρέχει έναν μηχανισμό για την επικοινωνία ομοτίμων με άλλους ομότιμους πίσω από ένα firewall κτλ.
Βασικά P2P Στοιχεία Ομάδα Ομοτίμων: Ένα σύνολο από ομότιμους που έχουν κοινό συμφέρον ή στόχο και που καθορίζεται από τους ομότιμους που λαμβάνουν μέρος Οι ομάδες ομότιμων παρέχουν υπηρεσίες στα μέλη τους που δεν είναι προσβάσιμες από άλλους ομότιμους στο P2P δίκτυο
Ομάδες Ομότιμων Οι ομάδες ομότιμων διαχωρίζονται με βάση τα εξής: Η εφαρμογή στην οποία συνεργάζονται σαν ομάδα Οι απαιτήσεις ασφαλείας των ομότιμων στην ομάδα Η ανάγκη ύπαρξης πληροφορίας κατάστασης στα μέλη της ομάδας
Υπηρεσίες Υπηρεσίες ομοτίμων: Η λειτουργικότητα που παρέχεται από τον ομότιμο προς τους υπόλοιπους Αυτή η υπηρεσία είναι μοναδική για τον ομότιμο και είναι διαθέσιμη μόνο όταν αυτός είναι συνδεδεμένος στο δίκτυο Όταν ο ομότιμος αποσυνδεθεί τότε η υπηρεσία δεν είναι διαθέσιμη
Υπηρεσίες Ομάδων Υπηρεσίες Ομάδων: Η λειτουργίες που παρέχονται από μία ομάδα ομοτίμων Αυτές οι λειτουργίες μπορούν να παρέχονται από αρκετά μέλη της ομάδας, με αποτέλεσμα να υπάρχει ο απαραίτητος πλεονασμός για αυτή την υπηρεσία Αν έστω και ένα μέλος της ομάδας συνδέεται με το δίκτυο και παρέχει την υπηρεσία, αυτή είναι διαθέσιμη για τους υπόλοιπους
Ταξινόμηση P2P Εφαρμογών P2P εφαρμογές Παραλληλοποιήσιμες Διαχείριση Δεδομένων Συνεργατικό Υπολογιστικά απαιτητικό Ομαδοποιήμένα Ανταλλαγή δεδομένων Συστήματα Αρχείων Εξόρυξη Δεδομένων Άμεση Επικοινωνία Διαμοιραζόμενες εφαρμογές Παιχνίδι Workflow JavaBeans Web Services Napster Gnutella OpenCOLA JXTA Search Yahoo! Skype Buzzpad PowerPoint WOW
Βασικά P2P στοιχεία Αυτό που πρέπει να κάνουν τα πρωτόκολλα είναι: Εύρεση ομότιμων στο δίκτυο Εύρεση υπηρεσιών που παρέχει κάθε ομότιμος Λήψη πληροφορίας κατάστασης από έναν ομότιμο Χρήση υπηρεσίας από έναν ομότιμο Δημιουργία, συμμετοχή και αναχώρηση από ομάδες ομότιμων Δημιουργία συνδέσεων δεδομένων σε ομότιμους Δρομολόγηση μηνυμάτων σε άλλους ομότιμους
Ψάξιμο σε P2P Σύστημα Πόροι: R 1,1, R 1,2,... Πόροι: R 2,1, R 2,2,... Πόροι: R 3,1, R 3,2,... Ερώτηση: Ποιος έχει το X;
Πόροι: R 1,1, R 1,2,... Πόροι: R 2,1, R 2,2,... Πόροι: R 3,1, R 3,2,... απαντήσεις Ερώτηση: Ποιος έχει το X; Ψάξιμο σε P2P Σύστημα
Πόροι: R 1,1, R 1,2,... Πόροι: R 2,1, R 2,2,... Πόροι: R 3,1, R 3,2,... απαντήσεις Απαίτηση πόρου Λήψη πόρου Ψάξιμο σε P2P Σύστημα Ερώτηση: Ποιος έχει το X;
2 Ακόμα Κατηγορίες Μη-δομημένα P2P συστήματα Η τοπολογία δικτύου δεν έχει προκαθορισμένη δομή (τυχαίος γράφος) Τα δεδομένα είναι στους ομότιμους που τα δημιουργούν Η εύρεση γίνεται με τυχαίους περιπάτους, flooding Μη αποδοτικό (εύρος ζώνης) και περιορισμένης εφαρμογής Δομημένα P2P συστήματα Το περιεχόμενο δεικτοδοτείται καθολικά Εύρεση μέσω της δομής δεικτοδότησης Η τοπολογία δικτύου είναι ελεγχόμενη
Μη δομημένα P2P Τυχαίο δίκτυο Καμία κεντρική δεικτοδότηση Ξεκινά από κόμβους που ξέρουν εξυπηρετητές ομότιμων και έπειτα πλημμυρίζει το δίκτυο Χαρακτηριστικά: Μεταβλητότητα Αναξιόπιστη/Μη αποδοτική αναζήτηση Εφαρμογές: Gnutella Peer 1 Peer 6 Peer 7 Peer 4 Peer 3 Peer 5 Peer 2
Μερικοί Στόχοι P2P συστήματα Μη-δομημένα Δομημένα Διαθεσιμότητα Δεδομένων •Αποκέντρωση •Μεταβλητότητα •Εξισορρόπηση φορτίου •Αντίσταση σε Λάθη Διαχείριση •Άφιξη/Αναχώρηση •Επιδιόρθωση Αποδοτικό Ψάξιμο •Κοντινότητα •Τοπικότητα Χρόνος ερώτησης, πλήθος μηνυμάτων, χρησιμοποίηση δικτύου, κτλ. •Αν υπάρχει Βρες το •Η πλημμύρα δεν έχει μεταβλητότητα •Το τυφλό ψάξιμο είναι μη αποδοτικό
Τι θα Πούμε 1.Τι είναι; 2.Μοντέλα 3.CHORD 4.… 31
Μοντέλα Δεν υπάρχουν τυπικά μοντέλα για P2P αλγόριθμους και δομές (όπως το cache- oblivious) Πώς μοντελοποιούμε ένα Peer-to-Peer δίκτυο (ή ένα γενικό δίκτυο)? Υπάρχουν κάποια βασικά χαρακτηριστικά 32
Μετρικές για Δίκτυα Επικοινωνία Συμφόρηση Αντίσταση σε Λάθη Κατανάλωση Ενέργειας Εξισορρόπηση Φορτίου Υπολογιστική Δύναμη Κόμβων …… 33
Η Δικτυακή Μηχανή Δεικτών Ένα γράφημα G =( V,E ) Οι κόμβοι είναι υπολογιστικές μηχανές (TM) ενώ οι ακμές είναι συνδέσεις Ο G είναι δυναμικός (κόμβους και ακμές) Μηνύματα σταθερού μεγέθους μέσω ακμών Είναι επιθυμητό ένα μικρό πλήθος ακμών από κάθε κόμβο. Η επικοινωνία είναι η κύρια μετρική 34 Επιτρέποντας κόμβους με μεγάλο βαθμό είναι σαν να επιτρέπουμε κεντρικοποιημένους αλγόριθμους
Μετρική Επικοινωνίας Συνολικό πλήθος μηνυμάτων Χρόνος καθυστέρησης (έχει σχέση με παραλληλισμό) 35 u v wx z y e1e1 e2e2 e3e3 e4e4 e5e5
Ένα απλό παράδειγμα Εύρεση αριθμού σε δίκτυο μορφής δυαδικού δένδρου, όπου κάθε κόμβος περιέχει ένα στοιχείο. Το δένδρο δεν είναι ταξινομημένο Συνολικό πλήθος μηνυμάτων O(n) Χρόνος καθυστέρησης O(logn) Μεγάλο κενό. Υπάρχουν άλλα προβλήματα με αντίστοιχη συμπεριφορά;
Τι θα Πούμε 1.Τι είναι; 2.Μοντέλα 3.CHORD 37
Επίστρωση – Δεικτοδότηση Η Επίστρωση (Overlay) είναι η δομή των κόμβων του G. Η Δεικτοδότηση είναι τα στοιχεία που αποθηκεύονται στους κόμβους του G. Η Τοπολογία Δικτύου είναι η υποδομή για την επίστρωση. Πώς θα μπορούσαμε να την μοντελοποιήσουμε; 38
Παράδειγμα 39 12,15 5,6,718,20,22,23 1,3,49,111624,25 Επίστρωση Δεικτοδότηση Τοπολογία Δικτύου
Chord – Εισαγωγή Αποδοτική εύρεση κόμβου που περιέχει στοιχεία για ένα συγκεκριμένο στοιχείο που ψάχνουμε. Μόνο μία πράξη: δοθέντος ενός κλειδιού, αντιστοιχεί το κλειδί σε έναν κόμβο.
Προβλήματα που Επιλύει Εξισορρόπηση Φορτίου: Η κατανεμημένη συνάρτηση κατακερματισμού απλώνει τα στοιχεία ομοιόμορφα σε όλους τους κόμβους Πλήρως κατανεμημένο Μεταβλητότητα: Η εύρεση αυξάνει λογαριθμικά σε σχέση με το πλήθος των κόμβων Διαθεσιμότητα: Αυτόματα αλλάζει τους εσωτερικούς πίνακες όταν αλλάζει το δίκτυο. Ευέλικτη Ονοματοδοσία: Δεν υπάρχουν περιορισμοί στα στοιχεία που αποθηκεύουμε.
Πρωτόκολλο Chord Υποθέτει ότι η επικοινωνία είναι συμμετρική και μεταβατική. Αναθέτει κλειδιά στους κόμβους με συνεπή κατακερματισμό Η συνάρτηση κατακερματισμού εξισορροπεί το φορτίο Όταν ο N-οστός κόμβος εισάγεται ή αναχωρεί τότε μόνο O(1/N) κλάσμα κλειδιών μεταφέρεται.
Πρωτόκολλο Chord Η συνεπής συνάρτηση κατακερματισμού αναθέτει σε κάθε κόμβο και κλειδί έναν m-bit αναγνωριστικό. Η IP διεύθυνση του κόμβου περνά στη συνάρτηση. Τα αναγνωριστικά ταξινομούνται σε έναν κύκλο αναγνωριστικών mod 2 m, τον chord δακτύλιο. succesor(k) = πρώτος κόμβος του οποίου το αναγνωριστικό του αναγνωριστικού του k στο χώρο αναγνωριστικών.
Chord Δακτύλιος Αντιστοιχεί κόμβους σε m-bit αναγν. hash(IP Addr) Node ID Αντιστοιχεί κλειδιά σε m-bit αναγν. hash(File Name) key Το κλειδί ανατίθεται στο 1 ο κόμβο με Node ID ≥ key Αναζήτηση(key) Πράξεις Αναζήτηση(9) N21 N1 N8 N21 N32 N42 N55 N51 (8,21] (1,8] m=6
Επόμενοι και Προηγούμενοι N56 N51 N48 N42 N38 N32 N21 N14 N8 N1 N1.succ N1.pred m=6
Θεώρημα Για κάθε σύνολο N κόμβων και K κλειδιών, με μεγάλη πιθανότητα: 1.Κάθε κόμβος είναι υπεύθυνος για το πολύ (1+e)K/N κλειδιά. 2.Όταν ο (N+1)-οστός κόμβος εισέρχεται ή αναχωρεί από το δίκτυο, μόνο O(K/N) κλειδιά αλλάζουν κυριότητα. e = O(log N)
Απλό Σχήμα Αναζήτησης N1 N8 N14 N21 N32 N38 N42 N48 K45
Σχήμα Αναζήτησης με Καλή Μεταβλητότητα N1 N8 N14 N21 N32 N38 N42 N48 N51 N56 N8+1N14 N8+2N14 N8+4N14 N8+8N21 N8+16N32 N8+32N42 Πίνακας Δεικτών για N8 δείκτης 1,2,3 δείκτης 4 δείκτης 6 δείκτης[k] = πρώτος κόμβος που είναι μετά το (n+2 k-1 )mod2 m δείκτης 5
Σχήμα Αναζήτησης με Καλή Μεταβλητότητα // ask node n to find the successor of id n.find_successor(id) if (id belongs to (n, successor]) return successor; else n0 = closest preceding node(id); return n0.find_successor(id); // search the local table for the highest predecessor of id n.closest_preceding_node(id) for i = m downto 1 if (finger[i] belongs to (n, id)) return finger[i]; return n;
Αναζήτηση με τον Πίνακα Δεικτών N56 N51 N48 N42 N38 N32 N21 N14 N8 N1 Αναζήτηση(K54)
Αναζήτηση με τον Πίνακα Δεικτών N56 N51 N48 N42 N38 N32 N21 N14 N8 N1 Αναζήτηση(K54)
Αναζήτηση με τον Πίνακα Δεικτών N56 N51 N48 N42 N38 N32 N21 N14 N8 N1 K54 Αναζήτηση(K54)
53 Πίνακας Δεικτών [1,2) [2,4) [4,0) Πίνακας δεικτών αρχήδιαστ.επομ. κλειδιά [2,3) [3,5) [5,1) Πίνακας δεικτών αρχήδιαστ.επομ. κλειδιά [4,5) [5,7) [7,3) Πίνακας δεικτών αρχήδιάστ.επόμ. κλειδιά 6
Σχήμα Αναζήτησης με Καλή Μεταβλητότητα Κάθε κόμβος προωθεί την ερώτηση τουλάχιστον στην μέση της απόστασης που απομένει μέχρι το στόχο Θεώρημα: Με μεγάλη πιθανότητα, το πλήθος των κόμβων που συμμετέχουν για την εύρεση του κατάλληλου κόμβου σε ένα δίκτυο N κόμβων είναι O(log N)
Δυναμικές Πράξεις και Λάθη Θα πρέπει να αντιμετωπίσουμε: Αφίξεις κόμβων και σταθεροποίηση Αντίκτυπο των αφίξεων σε αναζητήσεις Λάθη και Αντιγραφές Αναχωρήσεις κόμβων
Κύκλος αναγνωριστικών αναγνωριστικό κόμβος X κλειδί Επόμενοι Κόμβοι successor(1) = 1 successor(2) = 3successor(6) = 0
Αφίξεις και Αναχωρήσεις Κόμβων successor(6) = successor(1) = 3
58 Αφίξεις Κόμβων – Πίνακες Δεικτών [1,2) [2,4) [4,0) Πίνακας δεικτών αρχήδιαστ.επομ. κλειδιά [2,3) [3,5) [5,1) Πίνακας δεικτών αρχήδιαστ.επομ. κλειδιά [4,5) [5,7) [7,3) Πίνακας δεικτών αρχήδιαστ.επομ. κλειδιά Πίνακας δεικτών αρχήδιαστ.επομ. κλειδιά [7,0) [0,2) [2,6)
59 Αναχωρήσεις Κόμβων – Πίνακες Δεικτών [1,2) [2,4) [4,0) Πίνακας δεικτών αρχήδιαστ.επομ. κλειδιά [2,3) [3,5) [5,1) Πίνακας δεικτών αρχήδιαστ.επομ. κλειδιά [4,5) [5,7) [7,3) Πίνακας Δεικτών αρχήδιαστ.επομ. κλειδιά Πίνακας δεικτών αρχήδιαστ.επομ. κλειδιά [7,0) [0,2) [2,6)
Αφίξεις Κόμβων και Σταθεροποίηση Ο δείκτης προς τον επόμενο ενός κόμβου θα πρέπει να είναι πάντα ενημερωμένος Ώστε να εκτελούνται σωστά οι αναζητήσεις Κάθε κόμβος περιοδικά τρέχει ένα πρωτόκολλο σταθεροποίησης Ενημέρωση πίνακα δεικτών και δεικτών προς τον επόμενο.
Αφίξεις Κόμβων και Σταθεροποίηση Περιέχει 6 συνάρτησεις: create() join() stabilize() notify() fix_fingers() check_predecessor()
Create() Δημιουργεί ένα νέο δακτύλιο Chord n.create() predecessor = nil; successor = n;
Join() Ρωτά τον κόμβο j για να βρει τον επόμενο του n. Δεν ενημερώνει το υπόλοιπο δίκτυο για το n. n.join(j) predecessor = nil; successor = j.find_successor(n);
Stabilize() Καλείται περιοδικά για εύρεση νέων κόμβων Ρωτά τον αμέσως επόμενο του n σχετικά με τον αμέσως προηγούμενο: p Ελέγχει αν ο p πρέπει να είναι ο αμέσως επόμενος του n Επίσης ειδοποιεί τον αμέσως επόμενο του n για την ύπαρξη του n, έτσι ώστε αυτός να αλλάξει τον αμέσως προηγούμενό του στο n, αν είναι απαραίτητο n.stabilize() x = successor.predecessor; if (x (n, successor)) successor = x; successor.notify(n);
Notify() Ο κόμβος j πιστεύει ότι είναι ο αμέσως προηγούμενος του n n.notify(j) if (predecessor is nil or j (predecessor, n)) predecessor = j;
Fix_fingers() Καλείται περιοδικά για την ενημέρωση των πινάκων δεικτών Οι νέοι κόμβοι αρχικοποιούν τον πίνακα δεικτών Υπάρχοντες κόμβοι εισάγουν νέους κόμβους στους πίνακές τους n.fix_fingers() next = next + 1 ; if (next > m) next = 1 ; finger[next] = find_successor(n + 2 next-1 );
Check_predecessor() Καλείται περιοδικά για έλεγχο αν ο αμέσως προηγούμενος έχει αποτύχει. Αν ναι, σβήνει τον δείκτη προς τον προηγούμενο και τον ανανεώνει με κλήση στην notify() n.check_predecessor() if (predecessor has failed) predecessor = nil;
Σταθεροποίηση μετά από Άφιξη npnp succ(n p ) = n s nsns n pred(n s ) = n p Άφιξη n predecessor = nil n έχει τον n s σαν επόμενο μέσω ενός n΄ n ειδοποιεί τον n s ότι είναι ο καινούργιος προηγούμενος n s έχει τον n σαν προηγούμενο n p τρέχει σταθεροποίηση n p ρωτά n s για προηγούμενο (τώρα n) n p αποκτά n σας επόμενο n p ειδοποιεί n n θα αποκτήσει n p σαν προηγούμενο Όλοι οι προηγούμενοι και επόμενοι δείκτες είναι σωστοί Οι δείκτες πίνακα χρειάζονται ακόμα διόρθωση, αλλά οι παλιοί δείκτες δουλεύουν nil pred(n s ) = n succ(n p ) = n
Σταθεροποίηση Θεώρημα: Αν οποιαδήποτε ακολουθία από αφίξεις εκτελεσθεί μαζί με πράξεις σταθεροποίησης, τότε κάποια στιγμή μετά την τελευταία άφιξη οι δείκτες προς τους αμέσως επόμενους θα σχηματίσουν έναν κύκλο σε όλους τους κόμβους του δικτύου Εγγυάται την πρόσθεση κόμβων με τέτοιο τρόπο ώστε κάθε κόμβος να είναι προσεγγίσιμος Δεν μπορεί να διορθώσει ξεχωριστούς κύκλους που έχουν δημιουργηθεί αλλά αυτό δεν γίνεται (με μεγάλη πιθανότητα)
Αντίκτυπος των Αφίξεων στις Αναζητήσεις Ορθότητα Αν οι πίνακες δεικτών είναι σχετικά πρόσφατοι Η αναζήτηση βρίσκει τον κατάλληλό κόμβο σε O(log N) βήματα Αν οι επόμενοι δείκτες είναι σωστοί αλλά οι πίνακες δεικτών δεν είναι Ορθή αναζήτηση αλλά πιο αργή Αν λανθασμένοι επόμενοι δείκτες Η αναζήτηση μπορεί να αποτύχει
Αντίκτυπος Αφίξεων Κόμβων σε Αναζητήσεις Απόδοση Αν η σταθεροποίηση έχει ολοκληρωθεί Η αναζήτηση μπορεί να γίνει σε O(log N) χρόνο Αν η σταθεροποίηση δεν έχει ολοκληρωθεί Οι πίνακες δεικτών δεν είναι ενημερωμένοι Δεν επηρεάζει το χρόνο αναζήτησης Οι καινούργιοι κόμβοι μπορούν να επηρεάσουν την ταχύτητα αναζήτησης, αν οι νέοι κόμβοι είναι μεταξύ του κόμβου στόχου και του αμέσως προηγούμενού του Η αναζήτηση θα πρέπει να προωθηθεί γραμμικά μέσω των ενδιάμεσων κόμβων
Θεώρημα Αν έχουμε ένα σταθερό δίκτυο με N κόμβους και σωστούς πίνακες δεικτών, και σε αυτό το δίκτυο προστίθενται το πολύ N κόμβοι, και όλοι οι αμέσως επόμενοι δείκτες είναι σωστοί (αλλά ίσως όχι οι πίνακες δεικτών), τότε η αναζήτηση απαιτεί O(log N) χρόνο με μεγάλη πιθανότητα.
Αποτυχίες και Αντιγραφα Η ορθότητα του πρωτοκόλλου βασίζεται στην γνώση του αμέσως επόμενου στο δακτύλιο Για να βελτιώσουμε την αντοχή σε λάθη Κάθε κόμβος διατηρεί μία ακολουθία από r αμέσως επόμενους κόμβους Αυτό μπορεί να επιτευχθεί αλλάζοντας λίγο το πρωτόκολλο σταθεροποίησης Επίσης, είναι καλό η εφαρμογή που κάθεται πάνω στο δίκτυο να αντιγράφει τα κλειδιά
Αποτυχία Κόμβου NpNp NxNx NsNs k8 v8 k9 v9 k7 v7 Δεδομένα σε N x : Ο N x αποτυγχάνει!! - οι συνδέσεις καταστρέφονται - τα δεδομένα χάνονται
Πολλοί Επόμενοι Κόμβοι NpNp NxNx NsNs Αρχικά… Επιπλέον συνδέσεις σε επόμενους (r=2)
Μετά τον Έλεγχο του Προηγούμενου NpNp NsNs nil
Συνέχεια Παραδείγματος NpNp NsNs Αφού ο N p ανακαλύψει ότι ο N x έπεσε... nil
Τέλος Παραδείγματος NpNp NsNs Μετά την σταθεροποίηση...
Προστασία από Απώλεια Δεδομένων Βασική ιδέα: κόμβος ανεκτικός σε λάθη k8 v8 k9 v9 k7 v7 Κόμβος X.1 k8 v8 k9 v9 k7 v7 Κόμβος X.2 k8 v8 k9 v9 k7 v7 Κόμβος X.3 Ανεκτικός κόμβος X Πρωτόκολλα εφεδρικών αντιγράφων Πρωτόκολλα ανάκτησης
Θεωρήματα Αν r = O(log N) σε ένα αρχικά σταθερό δίκτυο, και έπειτα κάθε κόμβος αποτυγχάνει με πιθανότητα ½, τότε με μεγάλη πιθανότητα η find_successor επιστρέφει τον κοντινότερο αμέσως επόμενο κόμβο του κλειδιού που αναζητάμε Σε έναν δίκτυο αρχικά σταθερό, αν κάθε κόμβος αποτυγχάνει με πιθανότητα ½, τότε ο αναμενόμενος χρόνος εκτέλεσης της find_successor είναι O(log N)
Αναχωρήσεις Κόμβων Μπορούν να αντιμετωπισθούν σαν αποτυχίες κόμβων Δυο πιθανές βελτιστοποιήσεις Ο αναχωρών κόμβος μεταφέρει όλα τα κλειδιά του στον αμέσως επόμενο Ο αναχωρών κόμβος μπορεί να ειδοποιήσει τον προηγούμενο και επόμενο ώστε ο ένας να δείχνει στον άλλο
Συμπέρασμα Το πρωτόκολλο Chord επιλύει το πρόβλημα αναζήτησης με έναν αποδοτικά κατανεμημένο τρόπο Πληροφορία δρομολόγησης: O(log N) κόμβοι Αναζήτηση: O(log N) κόμβοι Ενημέρωση: O(log 2 N) μηνύματα Επίσης προσαρμόζεται δυναμικά σε αλλαγές της τοπολογίας του δικτύου
Διαφάνειες όχι μέσα 83
Δακτύλιος Manageable Coherent Extensible Fault Tolerant Secure Lawsuit-proof Scalable Simple rules for relationships Easy logic for state XOnly ring owner can add Fail-over to next host As long as ring has one owner XShut down owner Just add more hosts
Centralized + Ring Manageable Coherent Extensible Fault Tolerant Secure Lawsuit-proof Scalable Just manage the ring As coherent as ring XNo more than ring Ring is a huge win As secure as ring XStill single place to shut down Ring is a huge win Common architecture for web applications
Basic P2P elements Network Transport Endpoints—The initial source or final destination of any piece of data being transmitted over the network An endpoint corresponds to the network interfaces used to send and receive data Pipes—Unidirectional, asynchronous, virtual communications channels connecting two or more endpoints Messages—Containers for data being transmitted over a pipe from one endpoint to another
Basic P2P elements Services -- provide functionality that peers can engage to perform useful work on a remote peer transferring a file, providing status information, performing a calculation, or basically doing anything that you might want a peer in a P2P network to be capable of doing
Basic P2P elements Advertisement A structured representation of an entity, service, or resource made available by a peer or peer group as a part of a P2P network Every entity can be described by advertisements, including peers, peer groups, pipes, endpoints, ser- vices, and content
Chord protocol m = 6 10 κόμβοι