Δρομολόγηση Μηνυμάτων

Για το σκοπό της δρομολόγησης μηνυμάτων, τα αναγνωριστικά κόμβων θεωρούνται ότι είναι μία ακολουθία ψηφίων στη βάση $ 2^b$ . Το Pastry δρομολογεί τα μηνύματα στον κόμβο του οποίου το αναγνωριστικό είναι αριθμητικά κοντινότερο στο δεδομένο κλειδί των μηνυμάτων. Αυτό επιτυγχάνεται ως εξής: Σε κάθε βήμα δρομολόγησης, ένας κόμβος, υπό κανονικές συνθήκες, προωθεί το μήνυμα σε έναν κόμβο του οποίου το αναγνωριστικό μοιράζεται με το κλειδί ένα πρόθεμα με μήκος τουλάχιστον ένα ψηφίο (ή $ b$ bits) περισσότερο από ότι το μήκος του προθέματος που μοιράζεται το κλειδί με το αναγνωριστικό του κόμβου που αποστέλλει το μήνυμα. Εάν δεν είναι γνωστός ή δεν υπάρχει ένας τέτοιος κόμβος, τότε το μήνυμα προωθείται στον κόμβο εκείνο που το αναγνωριστικό του μοιράζεται με το κλειδί ένα πρόθεμα μήκους όσου και αυτού του προθέματος μεταξύ του κλειδιού και του κόμβου που αποστέλλει το μήνυμα και που είναι αριθμητικά κοντινότερο στο κλειδί από ότι είναι ο κόμβος που αποστέλλει το μήνυμα. Για την υποστήριξη αυτής της διαδικασίας δρομολόγησης κάθε κόμβος διατηρεί κάποια κατάσταση δρομολόγησης (routing state), η οποία περιγράφεται στη συνέχεια.

Κάθε κόμβος του Pastry διατηρεί έναν πίνακα δρομολόγησης (routing table), ένα σύνολο γειτόνων (neighborhood set) και ένα σύνολο φύλλων (leaf set). Θα ξεκινήσουμε με την περιγραφή του πίνακα δρομολόγησης. Ο πίνακας δρομολόγησης ενός κόμβου, $ R$ , είναι οργανωμένος σε $ \lceil log_{2^b}N \rceil$ γραμμές με $ 2^b - 1$ εγγραφές η κάθε μία. Κάθε μία από αυτές τις εγγραφές της γραμμής $ n$ αναφέρεται στον κόμβο εκείνο του οποίου το αναγνωριστικό μοιράζεται με το αναγνωριστικό του τρέχοντος κόμβου ένα πρόθεμα μήκους $ n$ ψηφίων, αλλά το ψηφίο $ n + 1$ έχει κάποια από τις δυνατές τιμές στο διάστημα $ 2^b - 1$ και διαφέρει από το αντίστοιχο ψηφίο του αναγνωριστικού του τρέχοντος κόμβου.

Κάθε εγγραφή στον πίνακα δρομολόγησης περιέχει τη διεύθυνση IP ενός από τους εν δυνάμει πολλούς κόμβους των οποίων τα αναγνωριστικά έχουν το κατάλληλο πρόθεμα· στην πράξη αυτός ο κόμβος δεν επιλέγεται τυχαία, αλλά έχει την ιδιότητα να είναι ο πλησιέστερος κόμβος σύμφωνα με την μετρική εγγύτητας. Αποδεικνύεται ότι μία τέτοια επιλογή παρέχει καλές ιδιότητες τοπικότητας. Εάν δεν υπάρχει κάποιος κόμβος με κατάλληλο αναγνωριστικό, τότε η αντίστοιχη εγγραφή στον πίνακα δρομολόγησης αφήνεται κενή. Η ομοιόμορφη κατανομή των αναγνωριστικών των κόμβων εγγυάται ότι θα υπάρχουν κατά μέσο όρο μόνο $ \lceil log_{2^b}N \rceil$ γραμμές στον πίνακα δρομολόγησης.

Η επιλογή της παραμέτρου $ b$ εμπεριέχει έναν συνδυασμό ανάμεσα στο μέγεθος2.10 του πίνακα δρομολόγησης (περίπου $ \lceil log_{2^b}N \rceil * (2^b - 1)$ ) και του μέγιστου αριθμού απαιτούμενων αναπηδήσεων για τη δρομολόγηση μεταξύ οποιουδήποτε ζεύγους κόμβων ( $ \lceil log_{2^b}N \rceil$ ). Έτσι, με τιμή $ b = 4$ και $ 10^6$ κόμβους, ένας πίνακας δρομολόγησης περιέχει κατά μέσον όρο $ 75$ εγγραφές και ο αναμενόμενος αριθμός αναπηδήσεων δρομολόγησης είναι $ 5$ , ενώ και με $ 10^9$ κόμβους, ο πίνακας δρομολόγησης περιέχει κατά μέσο όρο μόλις $ 105$ εγγραφές και ο αναμενόμενος αριθμός αναπηδήσεων δρομολόγησης είναι μόλις $ 7$ . Γι' αυτό το λόγο προαναφέρθηκε ότι η τυπική τιμή του $ b$ είναι $ 4$ , η οποία είναι μία ````καλή'''' τιμή.

Στο Σχήμα 2.6, παρουσιάζεται μία υποθετική κατάσταση δρομολόγησης του κόμβου με αναγνωριστικό $ 10233102$ , $ b = 2$ και $ l = 8$ . Όλοι οι αριθμοί είναι με βάση το $ 4$ . Ο πίνακας δρομολόγησης έχει $ \lceil log_{2^b}N \rceil$ γραμμές και $ 2^b - 1$ στήλες. Η κορυφαία γραμμή του πίνακα δρομολόγησης είναι η μηδενική. Τα γραμμοσκιασμένα κελιά της γραμμής $ i$ περιέχουν την τιμή του $ i$ -οστού $ + $ $ 1$ ψηφίου του αναγνωριστικού του τρέχοντος κόμβου. Η πρώτη γραμμή περιέχει τους κόμβους που έχουν τα μηδέν πρώτα ψηφία του αναγνωριστικού τους ίδια με τα μηδέν πρώτα ψηφία του αναγνωριστικού του τρέχοντος κόμβου και το πρώτο ψηφίο διαφορετικό. Η δεύτερη γραμμή περιέχει τους κόμβους που έχουν το πρώτο ψηφίο του αναγνωριστικού τους ίδιο με το πρώτο ψηφίο του αναγνωριστικού του τρέχοντος κόμβου και το δεύτερο ψηφίο διαφορετικό. Η τρίτη γραμμή περιέχει τους κόμβους που έχουν τα δύο πρώτα ψηφία του αναγνωριστικού τους ίδια με τα δύο πρώτα ψηφία του αναγνωριστικού του τρέχοντος κόμβου και το τρίτο ψηφίο διαφορετικό κ.ο.κ. Τα αναγνωριστικά σε κάθε εγγραφή έχουν χωριστεί με μία παύλα για να δειχθεί το κοινό τους πρόθεμα με το $ 10233102$ - επόμενο ψηφίο - υπόλοιπα ψηφία αναγνωριστικού. Οι διευθύνσεις IP των κόμβων έχουν παραλειφθεί. Στο ίδιο σχήμα επίσης διακρίνεται το σύνολο φύλλων και το σύνολο γειτόνων.

Figure: Η Κατάσταση Δρομολόγησης ενός υποθετικού κόμβου του Pastry με αναγνωριστικό κόμβου 10233102, $ b = 2$ , και $ l = 8$ .
Image pastry_routing_state

Το σύνολο γειτόνων, $ M$ , περιέχει τα ζεύγη αναγνωριστικών-διευθύνσεων IP των $ \vert M \vert $ πλησιέστερων (σύμφωνα με τη μετρική εγγύτητας) κόμβων στον τρέχον κόμβο. Το σύνολο γειτόνων δεν χρησιμοποιείται υπό κανονικές συνθήκες στη δρομολόγηση μηνυμάτων· είναι, όμως, χρήσιμο στη διατήρηση ιδιοτήτων τοπικότητας. Η τυπική τιμή του $ \vert M \vert $ είναι ίση με $ 2 \times 2^b$ .

Το σύνολο φύλλων, $ L$ , είναι ένα σύνολο από κόμβους που οι $ \vert L \vert / 2 $ από αυτούς έχουν μεγαλύτερα αναγνωριστικά από τον τρέχον κόμβο, αλλά που είναι τα κοντινότερα σε αυτόν ως προς την αριθμητική τιμή και οι υπόλοιποι $ \vert L \vert / 2 $ έχουν μικρότερα αναγνωριστικά από τον τρέχον κόμβο, αλλά που είναι τα κοντινότερα σε αυτόν ως προς την αριθμητική τιμή. Το σύνολο φύλλων χρησιμοποιείται κατά τη διάρκεια της δρομολόγησης μηνυμάτων. Η τυπική τιμή του $ \vert L \vert $ είναι ίση με $ 2^b$ . Στη συνέχεια και για να γίνει κατανοητός ο τρόπος με τον οποίο χρησιμεύουν οι δομές που ορίστηκαν παραπάνω δίνεται ο αλγόριθμος δρομολόγησης που ακολουθείται από το σύστημα Pastry. Η διαδικασία δρομολόγησης φαίνεται στο Σχήμα 2.7, υπό τη μορφή αλγορίθμου. Ο αλγόριθμος εκτελείται όποτε καταφθάνει σε έναν κόμβο με αναγνωριστικό $ A$ ένα μήνυμα με κλειδί $ D$ . Θα ξεκινήσουμε την περιγραφή ορίζοντας μερικούς συμβολισμούς.

$ R^i_l$ : η εγγραφή του πίνακα δρομολόγησης $ R$ στην στήλη $ i, 0 \leq i < 2^b$ και γραμμή $ l, 0 \leq l < \lfloor 128/b \rfloor$ .

$ L_i$ : ο $ i$ -οστός αριθμητικά κοντινότερος κόμβος στο σύνολο φύλλων $ L$ , $ - \lfloor \vert L \vert / 2 \rfloor \leq i \leq \lfloor \vert L \vert / 2 \rfloor$ , όπου οι αρνητικοί / θετικοί δείκτες υποδεικνύουν κόμβους με μικρότερα / μεγαλύτερα αναγνωριστικά από τον τρέχον κόμβο αντίστοιχα.

$ D_l$ : η τιμή του $ l$ ψηφίου του κλειδιού $ D$ .

$ shl(A, B)$ : το μήκος του κοινού προθέματος μεταξύ των αναγνωριστικών / κλειδιών $ A$ και $ B$ , σε ψηφία.

Figure: Ο βασικός αλγόριθμος δρομολόγησης που χρησιμοποιεί το σύστημα Pastry, υπό τη μορφή ψευδοκώδικα.
Image pastry_routing_algo

Δεδομένου ενός μηνύματος, ο κόμβος ελέγχει αρχικά αν το κλειδί του βρίσκεται μεταξύ του διαστήματος που καλύπτουν τα αναγνωριστικά των κόμβων του συνόλου φύλλων (γραμμή $ 1$ ). Σε θετική απάντηση, το μήνυμα προωθείται κατ' ευθείαν (χωρίς την αποστολή του σε ενδιάμεσους κόμβους) στον κόμβο προορισμού, δηλαδή σε εκείνο τον κόμβο του συνόλου φύλλων που το αναγνωριστικό είναι αριθμητικά κοντινότερο στο κλειδί (πιθανότατα και στον τρέχον κόμβο) (γραμμή $ 3$ ).

Σε αρνητική απάντηση, δηλαδή, εάν το κλειδί δεν εμπίπτει στο διάστημα αναγνωριστικών που καλύπτεται από το σύνολο φύλλων, χρησιμοποιείται ο πίνακας δρομολόγησης και το μήνυμα προωθείται στον κόμβο του οποίου το αναγνωριστικό μοιράζεται με το κλειδί ένα πρόθεμα μήκους τουλάχιστον ενός ψηφίου μεγαλύτερου από αυτό που μοιράζεται το αναγνωριστικό του τρέχοντος κόμβου με το κλειδί (γραμμές 6-8). Σε συγκεκριμένες περιπτώσεις, είναι πιθανό η αντίστοιχη εγγραφή στον πίνακα δρομολόγησης να είναι κενή ή ο αντίστοιχος κόμβος να μην είναι προσιτός (γραμμές 11-14), όπου το μήνυμα προωθείται στον κόμβο που το αναγνωριστικό του μοιράζεται με το κλειδί ένα πρόθεμα μήκους όσου και αυτού του προθέματος μεταξύ του κλειδιού και του τρέχοντος κόμβου και που είναι αριθμητικά κοντινότερο στο κλειδί από ότι είναι ο τρέχον κόμβος. Ένας τέτοιος κόμβος πρέπει να περιέχεται στο σύνολο φύλλων (αυτό το εξασφαλίζει το κοινό πρόθεμα) υπό την προϋπόθεση ότι δεν έχουν αποτύχει ταυτόχρονα οι $ \lfloor \vert L \vert / 2 \rfloor$ κόμβοι του συνόλου αυτού.

Αυτή η απλή διαδικασία δρομολόγησης πάντα συγκλίνει, επειδή σε κάθε βήμα το μήνυμα αποστέλλεται σε έναν κόμβο, ο οποίος είτε

  1. μοιράζεται ένα μεγαλύτερου μήκους πρόθεμα με το κλειδί από ότι ο τρέχον κόμβος, είτε
  2. μοιράζεται το ίδιου μήκους πρόθεμα, αλλά το αναγνωριστικό του είναι αριθμητικά κοντινότερο στο κλειδί από ότι αυτό του τρέχοντος κόμβου.

Μπορεί να αποδειχθεί ότι ο αναμενόμενος αριθμός βημάτων δρομολόγησης είναι ίσος με $ \lceil log_{2^b}N \rceil$ , λαμβάνοντας ως δεδομένο ότι οι πίνακες δρομολόγησης είναι ακριβείς και ότι δεν έλαβε χώρα καμία αποτυχία κόμβου κατά την αποστολή του μηνύματος. Εν συντομία, αυτό μπορεί να δειχθεί από τις τρεις περιπτώσεις του παραπάνω αλγορίθμου. Εάν ένα μήνυμα προωθηθεί με την πρώτη περίπτωση (γραμμές 6-8), τότε το σύνολο των κόμβων, των οποίων τα αναγνωριστικά έχουν ένα κοινό και μεγαλύτερου μήκους πρόθεμα με το κλειδί του μηνύματος από ότι αυτού με το αναγνωριστικό του τρέχον κόμβου, μειώνεται σε κάθε βήμα κατά ένα παράγοντα ίσο με $ 2^b$ , το οποίο σημαίνει ότι το μήνυμα θα φθάσει στον προορισμό του σε $ \lceil log_{2^b}N \rceil$ βήματα. Εάν το κλειδί είναι μεταξύ του διαστήματος του συνόλου φύλλων (γραμμές 2-3), τότε το μήνυμα θα φθάσει στον προορισμό του σε ένα βήμα με μία αναπήδηση.

Η τρίτη περίπτωση που δεν αναφέρθηκε προηγουμένως προκύπτει ότι το κλειδί δεν είναι μεταξύ του διαστήματος του συνόλου φύλλων και δεν υπάρχει κατάλληλα εγγραφή στον πίνακα δρομολόγησης (γραμμές 11-14). Η πιθανότητα αυτής της περίπτωσης, δεδομένου της ομοιόμορφης κατανομής των αναγνωριστικών εξαρτάται από το $ \vert L \vert $ . Αναλύσεις έχουν δείξει ότι με $ \vert L \vert = 2^b$ ή $ \vert L \vert = 2 \times 2^b$ , η πιθανότητα εμφάνισης αυτής της περίπτωσης κατά τη διάρκεια αποστολής ενός μηνύματος είναι μικρότερη από $ 0.02$ και $ 0.006$ αντίστοιχα. Όταν αυτό συμβεί ο αριθμός των βημάτων με μεγάλη πιθανότητα είναι ίσος με $ \lceil log_{2^b}N \rceil + 1$ .

Σε περίπτωση πολλών ταυτόχρονων αποτυχιών κόμβων, ο αριθμός των απαιτούμενων βημάτων δρομολόγησης μπορεί να φτάσει στη χειρότερη περίπτωση να είναι γραμμικός ως προς το $ N$ , ενόσω οι κόμβοι ενημερώνουν την κατάστασή τους, δηλαδή τον πίνακα δρομολόγησης και τα σύνολα γειτόνων και φύλλων.

Charalampos Nikolaou 2008-04-02