Συστήματα Διαδικτύου SCRIBE: A large-scale and decentralized application-level multicast infrastructure Miguel Castro, Peter Druschel, Anne-Marie Kermarrec and Antony Rowstron Kαθ. Παναγίωτης Τριανταφύλλου 1/9/20141
Scribe - Εισαγωγή Το Scribe προσομοιάζει σε ένα σύστημα δημοσίευσης/συνδρομής υιοθετώντας το μοντέλο ομάδων (group-based publish/subscribe) Το Scribe εναλλακτικά είναι ένα σύστημα για multicast επικοινωνία IP multicast και τα σχετικά πρωτόκολλα δεν έχουν κατορθώσει να «τρέξουν» σε μεγάλες εφαρμογές και Δυσκολεύονται στην (δυναμική) καταγραφή των μελών μιας ομάδας. Το Scribe λειτουργεί πάνω από το p2p δίκτυο Pastry σε επίπεδο εφαρμογών Προσφέρει παράδοση μηνυμάτων μέσω multicast δέντρων Είναι πλήρως κατανεμημένο Υποστηρίζει μεγάλο αριθμό ομάδων (groups) Υποστηρίζει ομάδες με μεγάλο αριθμό χρηστών 1/9/20142
Scribe API Στο Scribe υποστηρίζονται οι παρακάτω διεπαφές create (credentials, group-id) Δημιουργία ομάδας με συγκεκριμένα πιστοποιητικά πρόσβασης join (credentials, group-id, message-handler) Συμμετοχή σε ομάδα με συγκεκριμένο group-id leave (credentials, group-id) Απομάκρυνση από ομάδα με συγκεκριμένο group-id multicast (credentials, group-id, message) Δημοσίευση του μηνύματος στην ομάδα. Τα πιστοποιητικά (credentials) χρησιμοποιούνται για τον έλεγχο πρόσβασης των χρηστών στην ομάδα. 1/9/20143
Το Σύστημα Scribe Το Scribe λειτουργεί πάνω από το δίκτυο Pastry. Σε κάθε κόμβο εκτελούνται οι διεπαφές του Scribe. Διαστρωματωμένη αρχιτεκτονική: σε κάθε κόμβο, στο πιο πάνω στρώμα τρέχει το λογισμικό του Scribe και στο κατώτερο στρώμα τρέχει το λογισμικό του Pastry. Οι διεπαφές του Scribe, χρησιμοποιούνται για την δρομολόγηση και την παράδοση των μηνυμάτων στους κατάλληλους χρήστες. Ένας κόμβος του Pastry μπορεί είτε να προωθεί ένα μήνυμα (Forwarder) είτε (και) να το παραδίδει (Deliverer) τοπικά στην περίπτωση που αυτός είναι αποδέκτης (μέλος της ομάδας). 1/9/20144
Τύποι Μηνυμάτων στο Scribe CREATE Δημιουργία ομάδας – από τον «ιδρυτή» JOIN Συμμετοχή σε ομάδα LEAVE Απομάκρυνση από ομάδα MULTICAST Δημοσίευση μηνύματος σε όλα τα μέλη της ομάδας 1/9/20145
Προώθηση και Παράδοση Μηνυμάτων (1)forward(msg, key, nextID) (2)switch msg.type is (3)JOIN: if !(msg.group in groups) (4)group = groups U msg.group (5)route(msg,msg.group) (6)groups[msg.group].children U msg.source (7)nextId = null // Stop routing original message (1)deliver(msg, key) (2)switch msg.type is (3)CREATE: groups = groups U msg.group (4)JOIN: groups[msg.group].children U msg.source (5)MULTICAST: node in groups[msg.group].children (6)send(msg, node) (7)if memberOf(msg.group) (8) invokeMsgHandler(msg.group, msg) (9)LEAVE:groups[msg.group].children -= msg.source (10)if (|groups[msg.group].children| = 0) (11)send(msg.groups[msg.group].parent 1/9/20146
Κόμβοι στο Scribe Ένας κόμβος στο Scribe μπορεί να: Δημιουργήσει μία ομάδα Να συμμετάσχει σε μία ομάδα Να γίνει η ρίζα του multicast δέντρου για την παράδοση μηνυμάτων της ομάδας Να δημοσιεύσει (προωθήσει/παραδώσει) νέα μηνύματα για κάποια ομάδα. 1/9/20147
Ομάδες στο Scribe Μία ομάδα στο Scribe Ορίζεται από ένα μοναδικό group-id Σχετίζεται με ένα multicast δέντρο που χρησιμοποιείται για την διάδοση των μηνυμάτων στους χρήστες Έχει ένα rendezvous κόμβο όπου είναι και η ρίζα του multicast δέντρου Μπορεί να περιέχει πολλαπλές πηγές μηνυμάτων (οποιοδήποτε μέλος της ομάδας μπορεί να στείλει μηνύματα). 1/9/20148
Multicast Δέντρο στο Scribe Στο Scribe δημιουργείται ένα multicast δέντρο για κάθε ομάδα με ρίζα τον rendezvous κόμβο, με σκοπό την διάδοση των μηνυμάτων Οι κόμβοι στο multicast δέντρο μπορούν να είναι: Forwarders Κόμβοι που απλά προωθούν τα μηνύματα και δεν είναι αναγκαίο να είναι μέλη της ομάδας. Διατηρούν πίνακες με τις ΙP διευθύνσεις των κόμβων-παιδιών στο multicast δέντρο μιας (ή περισσότερων) ομάδων Αυτοί οι πίνακες είναι επιπλέον των πινάκων που διατηρούν σαν κόμβοι του Pastry. Members Ενεργούν σαν Forwaders αλλά είναι και μέλη της ομάδας. Έτσι προωθούν αλλά και δέχονται (δηλαδή παραδίδουν τοπικά τα) μηνύματα. 1/9/20149
Διαδικασία Δημιουργίας Νέας Ομάδας Ο κόμβος στέλνει το μήνυμα CREATE με group-id ως κλειδί. Το δίκτυο Pastry αναλαμβάνει να παραδώσει το μήνυμα στον κόμβο με node-id αριθμητικά πιο κοντά στο group-id. Αυτός ο κόμβος είναι πλέον ο κόμβος rendezvous. Ελέγχονται τα πιστοποιητικά χρήσης της ομάδας. Η ομάδα προστίθεται στο σύνολο των ενεργών ομάδων που διατηρεί το σύστημα – δηλ. αρχικά στον κόμβο rendezvous. Group-id Προκύπτει χρησιμοποιώντας τη συνάρτηση κατακερματισμού (SHA-1) με όρισμα το αλφαριθμητικό όνομα του group και του δημιουργού του Άρα ανήκει στον ίδιο χώρο ονομάτων με τα nodeIds και άρα το δίκτυο Pastry μπορεί να τα δρομολογήσει. 1/9/201410
Συμμετοχή σε ομάδα Αποστολή JOIN μηνύματος με το group-id ως κλειδί Το Pastry δρομολογεί το μήνυμα στον rendezvous κόμβο χρησιμοποιώντας τη μέθοδο forward Αν ο ενδιάμεσος κόμβος είναι forwarder Προστίθεται αυτός ο κόμβος στον πίνακα παιδιών του forwarder Αν ο ενδιάμεσος κόμβος δεν είναι forwarder Δημιουργείται ένας πίνακας παιδιών (μελών της ομάδας) και προστίθεται αυτός ο κόμβος. Προωθεί το μήνυμα JOIN προς το rendezvous κόμβο. Προσέξτε ότι το κόστος για JOIN είναι το πολύ O(logN). Γιατί «το πολύ» ; 1/9/201411
Συμμετοχή σε ομάδα JOIN group Ρίζα rendezvous κόμβος JOIN group /9/201412
Απομάκρυνση από Ομάδα Ο κόμβος ενημερώνει τις τοπικές δομές ότι δεν είναι πλέον μέλος της ομάδας Ο κόμβος στέλνει ένα LEAVE μήνυμα στον πατέρα του Το μήνυμα ταξιδεύει προς τη ρίζα Το μήνυμα σταματάει σε ενδιάμεσο κόμβο που συνεχίζει να έχει παιδιά του στο group αυτό μετά την απομάκρυνση του κόμβου. 1/9/201413
Δημοσίευση Μηνύματος Ένας κόμβος που προτίθεται να δημοσιεύει πληροφορία στο Scribe στέλνει ένα MULTICAST μήνυμα στο rendezvous κόμβο. Αυτός ο κόμβος αποθηκεύει (σε cache) την IP διεύθυνση του rendezvous κόμβου (μετά την πρώτη δημοσίευσή του) για να μπορεί να του αποστείλει απευθείας τις επόμενες δημοσιεύσεις...(και να γλυτώσει έτσι τα O(logN) μηνύματα. Στο Scribe υπάρχει ένα multicast δέντρο ανά ομάδα. Με την παραλαβή του μηνύματος από το rendezvous κόμβο, ο το rendezvous κόμβος στέλνει το μήνυμα στα παιδιά του (που είναι μέλη αυτής της ομάδας). Το κάθε παιδί προωθεί το μήνυμα στα παιδιά του για αυτή την ομάδα. Ο έλεγχος πρόσβασης γίνεται στον rendezvous κόμβο 1/9/201414
Δημοσίευση Μηνύματος αποστολέας Μέλος ομάδας Μέλος ομάδας Ρίζα rendezvous κόμβος /9/201415
Ανοχή σε λάθη – Αναδόμηση Δέντρου Ανοχή / αντιμετώπιση «σπασμένων» συνδέσεων Αποτυχία/αστοχία ενδιάμεσου κόμβου οδηγεί στην αποκοπή ολόκληρων υποδένδρων από την υπόλοιπη ομάδα. Ανίχνευση: Κάθε ενδιάμεσος κόμβος στέλνει περιοδικά μηνύματα στα παιδιά του (“ping”, “are-you-alive”,…) μηνύματα, τα οποία αναμένονται από τα παιδιά. Ανάνηψη: Αν ένα παιδί δεν λάβει αυτό το μήνυμα Υποθέτει ότι ο πατέρας του έχει καταρρεύσει και βρίσκει νέο πατέρα στέλνοντας το JOIN μήνυμα με group-id ως κλειδί 1/9/201416
Αναδόμηση Δέντρου X JOIN JOIN /9/201417
Ανοχή σε λάθη – Αναδόμηση Δέντρου Κατάρρευση του rendevous κόμβου Η πληροφορία που κρατάει κάθε rendezvous κόμβος για τις ομάδες που διαχειρίζεται (δημιουργός, ACL, κλπ) αποθηκεύεται (αντιγράφεται) και στους k (~=5) (αριθμητικά) πιο κοντινούς κόμβους (που ανήκουν στο leaf set). Όταν η ρίζα καταρρεύσει, το δέντρο αναδομείται: τα παιδιά αποστέλλουν το μήνυμα JOIN πάλι Το Pastry θα το δρομολογήσει στο ζωντανό κόμβο που είναι αριθμητικά πιο κοντά στον κόμβο SHA-1(group_id) και επιλέγεται σαν νέα ρίζα ο κόμβος με node-id αριθμητικά πιο κοντά στο grou-id. Αυτός ο κόμβος έχει αποθηκευμένη την πληροφορία της προηγούμενης ρίζας (βρισκόταν στο leaf set του κόμβου που έφυγε) Προσέξτε: όλοι οι πιθανοί μελλοντικοί δημοσιευτές μένουν ανεπηρέαστοι! Η ανοχή σε λάθη και η ανάνηψη επιτυγχάνεται κατανεμημένα και με ανταλλαγή ελάχιστων μηνυμάτων. 1/9/201418
Παροχή Αξιόπιστης Παράδοσης Το Scribe χρησιμοποιεί το TCP πρωτόκολλο μεταξύ πατέρα- παιδιών. παρέχει αξιόπιστη παράδοση μηνυμάτων με σωστή σειρά μόνο όταν δεν παρουσιάζονται σφάλματα στο multicast δέντρο Υπό την παρουσία σφαλμάτων/λαθών το Scribe μπορεί να προσφέρει αξιόπιστη παράδοση παρέχοντας σχετικούς μηχανισμούς Το Scribe παρέχει χειριστές που μπορούν να χρησιμοποιήσουν κατάλληλα οι εφαρμογές που στηρίζονται στο Scribe Αυτοί οι χειριστές καλούνται πριν από την αντίστοιχη διεπαφή του Scribe και, στην ουσία τους, υλοποιούν μηχανισμούς αντίστοιχους με αυτούς του TCP αλλά πάνω στα overlay μονοπάτια (του mcast δένδρου). Απαιτείται αντιγραφή μηνυμάτων και στη ρίζα και σε ενδιάμεσους κόμβους και αρίθμηση μηνυμάτων (sequence numbers). 1/9/201419
Πειραματική Μελέτη Πειράματα Σύγκριση καθυστέρησης μετάδοσης, φόρτου στους κόμβους και στις συνδέσεις τους με το IP multicast Επεκτασιμότητα κάτω από μεγάλο αριθμό μικρών ομάδων Χαρακτηριστικά Πειραμάτων Το δίκτυο αποτελείται από δρομολογητές χρησιμοποιώντας τυχαίους γράφους GT-ΙΤΜ transit-stub model κόμβους του Scribe ομάδες Μέγεθος ομάδας: ελάχιστο 11 - μέγιστο /9/201420
Καθυστέρηση Μετρήθηκε η κατανομή των καθυστερήσεων για την παράδοση των μηνυμάτων σε κάθε μέλος χρησιμοποιώντας το Scribe και το IP multicast Μετρικές απόδοσης: Λόγος μέσης καθυστέρησης σε σχέση με το IP Multicast (RAD) 50% των ομάδων : 1.68 μέγιστο: 2 Λόγος μέγιστης καθυστέρησης σε σχέση με το IP Multicast (RMD) 50% των ομάδων: 1.69 Μέγιστο: 4.26 Η καθυστέρηση στο Scribe είναι μεγαλύτερη σε σχέση με το IP multicast. Μόνο στο 2.2% των ομάδων είναι μικρότερη Αθροιστική κατανομή καθυστέρησης σε σχέση με το IP Multicast 1/9/201421
Φόρτος στους κόμβους Για κάθε κόμβο μετράται ο αριθμός των ομάδων που υποστηρίζει Ο μέσος αριθμός πινάκων παιδιών ανά κόμβο είναι 2.4 με 1500 ομάδες στο σύστημα Τα αποτελέσματα δείχνουν ότι το Scribe κατανέμει τον φόρτο σε όλους τους κόμβους 1/9/201422
Φόρτος στις Συνδέσεις Μετράται ο αριθμός των πακέτων που αποστέλλονται πάνω από κάθε σύνδεση όταν μηνύματα αποστέλλονται στα μέλη 1500 ομάδων Ο μέσος αριθμός πακέτων ανά σύνδεση είναι Scribe : 2.4 (μέγιστη 4031) IP Multicast : 0.7 (μέγιστη 950) Στο Scribe παρατηρείται τετραπλάσιο φόρτος στις συνδέσεις σε σχέση με το IP Multicast 1/9/201423
Αντιμετώπιση Περιοχών Υψηλού Φόρτου Είναι δυνατό να μην έχουν όλοι οι κόμβοι την ίδια επεξεργαστική ισχύ ή bandwidth στις συνδέσεις τους με του υπόλοιπους Υπό υψηλό φόρτο, ορισμένοι κόμβοι (όχι και τόσο δυνατοί) μπορεί να υπερφορτωθούν και να καταρρεύσουν Η λύση είναι να μεταφερθεί ο πίνακας παιδιών ενός κόμβου Κ σε άλλο κόμβο Επιλογή της ομάδας στον Κ που προκαλεί τον περισσότερο φόρτο Επιλογή του πιο μακρινού παιδιού του Κ σε αυτή την ομάδα και αποστολή του πίνακα παιδιών σε αυτό Το συγκεκριμένο παιδί επιλέγει ανάμεσα στα υπόλοιπα παιδιά το καταλληλότερo (με βάση τις αποστάσεις τους) που θα παίξει το ρόλο του πατέρα 1/9/201424
Επεκτασιμότητα στο Scribe ομάδες με 11 μέλη ομάδες με 11 μέλη Το Multicast δέντρο στο Scribe δεν είναι αποδοτικό υπό την παρουσία πολλών μικρών ομάδων γιατί δημιουργούνται δέντρα με πολύ μακρινά μονοπάτια Λύση: απομάκρυνση από τα μονοπάτια κόμβων που δεν ανήκουν στην ομάδα και έχουν ένα μόνο παιδί στον πίνακα τους Παρατηρήθηκε μείωση του φόρτου στις συνδέσει από 6.1 σε 3.3, και μείωση στον αριθμό των παιδιών ανά κόμβο από 21.2 σε 8.5 1/9/201425
Συμπέρασμα Το Scribe είναι μία επεκτάσιμη υποδομή πάνω από το Pastry με επιτρέπει την παράδοση μηνυμάτων στα μέλη ομάδων δημιουργώντας multicast δέντρα για κάθε ομάδα Είναι πλήρως κατανεμημένο (Pastry) Αποδίδει ικανοποιητικά όσο ο αριθμός των ομάδων μεγαλώνει Μπορεί να λειτουργήσει υπό την παρουσία λαθών. Όμως: Δε λαμβάνει υπόψη του τα προβλήματα μεταβολών bandwidth του διαδικτύου και Δυνητικά υποφέρει από το πρόβλημα των «λεπτών» δένδρων (μεγάλα μονοπάτια ρίζα-φύλλο)... μεγάλη καθυστέρηση παράδοσης. 1/9/201426
Ερωτήσεις κλειδιά: Αφού είναι αρκετά πιο ακριβό από το IP multicast, γιατί το χρειαζόμαστε και δε χρησιμοποιούμε το IP multicast ; Τί γίνεται αν ο κόμβος rendezvous είναι «αργός» (ή κάποιος άλλος κόμβος στα πρώτα επίπεδα του δένδρου); Υπάρχει η πιθανότητα >1 κόμβων rendezvous ; (ή «σπασίματος» υποδένδρων σε «παράλληλα» υποδένδρα); Υπάρχει τρόπος να δημιουργήσουμε δένδρα με «ελεγχόμενη» δομή (π.χ. Μήκος μέγιστου βάθους); Είναι τα δένδρα η κατάλληλη δομή για mutlicasting; 1/9/201427