Αξιόπιστη μεταφορά δεδομένων πάνω από αναξιόπιστο δίκτυο Κατανεμημένα Συστήματα lalis@inf.uth.gr
Μοντέλο δικτύου Το δίκτυο δέχεται και επιστρέφει πακέτα κάθε πακέτο μεταφέρει έναν περιορισμένο αριθμό bytes Το δίκτυο μπορεί να είναι (απεριόριστα;) αργό Το δίκτυο μπορεί να χάσει πακέτα Το δίκτυο μπορεί να αλλάξει την σειρά των πακέτων Το δίκτυο μπορεί να δημιουργήσει διπλότυπα πακέτα Σημείωση: το δίκτυο μπορεί να είναι οποιαδήποτε υπηρεσία μεταφοράς μηνυμάτων, σε ψηλό επίπεδο Κατανεμημένα Συστήματα lalis@inf.uth.gr
Μετάδοση δεδομένων FIFO Ο Α στέλνει στον Β δεδομένα που μεταφέρονται ως μια ακολουθία από μικρότερα πακέτα snd: αποστολή επόμενου πακέτου rcv: παραλαβή του επόμενου πακέτου Ζητούμενο: ένα πρωτόκολλο το οποίο να εγγυάται πως όλα τα πακέτα που στέλνει ο Α τελικά θα παραδοθούν στον Β, και με τη σωστή σειρά Κατανεμημένα Συστήματα lalis@inf.uth.gr
Α Β app-snd app-rcv protocol P net-snd network 0000 network net-deliver Κατανεμημένα Συστήματα lalis@inf.uth.gr
# Σειριακή παράδοση πακέτων επισυνάπτει αύξοντα σειριακό αριθμό σε κάθε (καινούργιο) πακέτο που στέλνει παραδίδει τα πακέτα που λαμβάνει με βάση τους σειριακούς αριθμούς τους Καλή εκμετάλλευση της χωρητικότητας του δικτύου Όμως, αν χαθεί ένα πακέτο, αυτό δεν ξαναστέλνεται, οπότε και μπλοκάρεται η παράδοση πακέτων Κατανεμημένα Συστήματα 5 lalis@inf.uth.gr
init: n=0; app-snd(<data>): n++; net-snd(<dat,n,data>); init: n=0; buf[]={}; app-rcv(<data>): while (!fnd(buf,n+)) {} data=rmv(buf,n+); n++; net-deliver(<dat,k,data>): if (full(buf)) return; if ((k>n) &&!fnd(buf,k)) { add(buf,k,data); } Κατανεμημένα Συστήματα 6 lalis@inf.uth.gr
A p 5 p p p p5 5 5 5 Κατανεμημένα Συστήματα 7 lalis@inf.uth.gr
A p p p p 5 p5 5 5 5 5 Κατανεμημένα Συστήματα 8 lalis@inf.uth.gr
A p p p p Κατανεμημένα Συστήματα 9 lalis@inf.uth.gr
A p p p p 5 p5 Κατανεμημένα Συστήματα 0 lalis@inf.uth.gr
A p p p p 5 p5 6 p6 5 6 5 Κατανεμημένα Συστήματα lalis@inf.uth.gr
# Αναμονή για ρητή επιβεβαίωση στέλνει επιβεβαίωση για κάθε πακέτο που τοποθετεί ή έχει ήδη τοποθετήσει στην αποθήκη του περιμένει να λάβει επιβεβαίωση, προτού συνεχίσει με την αποστολή του επόμενου πακέτου αν δεν λάβει επιβεβαίωση μέσα σε χρονικό διάστημα Τ, ξαναστέλνει το προηγούμενο (ανεπιβεβαίωτο) πακέτο Κακή εκμετάλλευση της χωρητικότητας του δικτύου Όσο παραμένει γεμάτη η αποθήκη του παραλήπτη, η αποστολή του επόμενου πακέτου γίνεται άσκοπα (το πακέτο απλά θα πεταχτεί στην άλλη πλευρά) Κατανεμημένα Συστήματα lalis@inf.uth.gr
init: n=0; ack=0; buf[]={}; app-snd(<data>): while (full(buf)) {} n++; add(buf,n,data); if (n==ack+) do-snd; net-deliver(<ack,k>): if (k<ack+) return; ack++; // ack=k; rmv(buf,ack); if (ack<n) do-snd; init: n=0; buf[]={}; app-recv(<data>): while (!fnd(buf,n+)) {} data=rmv(buf,n+); n++; net-deliver(<dat,k,data>): if (full(buf)) return; net-snd(ack,k); if ((k>n) &&!fnd(buf,k)) { add(buf,k,data); } do-snd: data=get(buf,ack+); net-snd(dat,ack+,data); settimer(t,do-snd); Κατανεμημένα Συστήματα lalis@inf.uth.gr
A p p a p a a Κατανεμημένα Συστήματα lalis@inf.uth.gr
A p p a Τ p a p a Κατανεμημένα Συστήματα 5 lalis@inf.uth.gr
A p p a Τ a p a p a Κατανεμημένα Συστήματα 6 lalis@inf.uth.gr
A p p a a p a p t p Κατανεμημένα Συστήματα 7 lalis@inf.uth.gr
Παραλλαγή: Alternating it Protocol Έστω ότι υπάρχει γνωστό άνω όριο μετάδοσης Τ ενός πακέτου πάνω από το δίκτυο επικοινωνίας Έστω ότι το δίκτυο δεν αναπαράγει πακέτα Το πρωτόκολλο # δεν χρειάζεται σειριακούς αριθμούς Αρκεί ένα μοναδικό bit για να γίνει ο διαχωρισμός ανάμεσα στο «επόμενο» και το «προηγούμενο» πακέτο Δεν τίθεται θέμα «υπερχείλισης» σειριακών αριθμών Κατανεμημένα Συστήματα 8 lalis@inf.uth.gr
# Χωρίς αναμονή για επιβεβαίωση στέλνει το επόμενο πακέτο χωρίς να περιμένει επιβεβαίωση για το προηγούμενο τα ανεπιβεβαίωτα πακέτα ξαναστέλνονται, μετά από πάροδο χρονικού διαστήματος Τ Εκμετάλλευση της χωρητικότητας του δικτύου Οι επιβεβαιώσεις είναι πλέον «ανταγωνιστικές» με τα πακέτα δεδομένων, αν το δίκτυο είναι half-duplex Αν γεμίσει η αποθήκη του παραλήπτη, γίνονται ακόμα περισσότερες άσκοπες αποστολές πακέτων Κατανεμημένα Συστήματα 9 lalis@inf.uth.gr
A p p a p a p a a Κατανεμημένα Συστήματα 0 lalis@inf.uth.gr
A p p a p a p p a a Κατανεμημένα Συστήματα lalis@inf.uth.gr
A p p a p a p a p a a Κατανεμημένα Συστήματα lalis@inf.uth.gr
A p p p a+ p a+ Κατανεμημένα Συστήματα lalis@inf.uth.gr
# Αρνητικές επιβεβαιώσεις στέλνει αρνητική επιβεβαίωση όταν εντοπίσει κενό στην ακολουθία των πακέτων που λαμβάνει υποθέτοντας ότι τα ενδιάμεσα πακέτα χάθηκαν ξαναστέλνει ένα πακέτο μόνο αν ζητηθεί ρητά μέσω αρνητικής επιβεβαίωσης Ακόμα καλύτερη εκμετάλλευση του δικτύου Όμως, αν δεν χαθεί κανένα πακέτο, η αποθήκη του αποστολέα θα γεμίσει χρειάζεται κατάλληλη επέκταση του πρωτοκόλλου Εξακολουθεί να υφίσταται το πρόβλημα της υπερχείλισης της αποθήκης του παραλήπτη Κατανεμημένα Συστήματα lalis@inf.uth.gr
A p p p p Κατανεμημένα Συστήματα 5 lalis@inf.uth.gr
A p p p p p n Κατανεμημένα Συστήματα 6 lalis@inf.uth.gr
A p p p p p n Κατανεμημένα Συστήματα 7 lalis@inf.uth.gr
Έλεγχος ροής Α πιο αργός από τον Β: δεν είναι πρόβλημα Β πιο αργός από τον Α: υπερχείλιση αποθήκης, άσκοπη αποστολή πακέτων (σπατάλη πόρων) Μηχανισμός ελέγχου ροής (flow control): καλή εκμετάλλευση χωρητικότητας δικτύου, αλλά χωρίς να (ξανα)στέλνονται πακέτα που με μεγάλη πιθανότητα θα αναγκαστεί να πετάξει ο παραλήπτης λόγω έλλειψης αποθηκευτικού χώρου Παρόμοιο πρόβλημα υφίσταται και για τους ενδιάμεσους δρομολογητές (αν υπάρχουν) Κατανεμημένα Συστήματα 8 lalis@inf.uth.gr
Sliding window παράθυρο 0 5 6 7 8 9 0 πακέτα που έχουν σταλεί και έχουν επιβεβαιωθεί πακέτα που έχουν σταλεί αλλά δεν έχουν επιβεβαιωθεί ακόμα πακέτα που δεν έχουν σταλεί ακόμα λήψη επιβεβαίωσης για το πακέτο αποστολή του πακέτου 8 0 5 6 7 8 9 0 Κατανεμημένα Συστήματα 9 lalis@inf.uth.gr
Επιλογή window Το μέγεθος του παραθύρου μπορεί να οριστεί μετά από κατάλληλη «συνεννόηση» των δύο πλευρών πολύ μικρό μέγεθος => κακή εκμετάλλευση του δικτύου πολύ μεγάλο μέγεθος => πολλές άσκοπες επανεκπομπές Η στατική επιλογή είναι μη βέλτιστη η κατάσταση του δικτύου μεταβάλλεται δυναμικά Μπορεί να γίνεται δυναμική προσαρμογή με βάση την τρέχουσα κατάσταση του δικτύου Πως «βλέπουμε» την κατάσταση του δικτύου; παρασκηνιακές μετρήσεις για την απώλεια πακέτων ως συνάρτηση του ρυθμού αποστολής, με αντίστοιχη αυξομείωση του παραθύρου Κατανεμημένα Συστήματα 0 lalis@inf.uth.gr
Επιλογή timeouts Τα timeouts για την αποστολή ανεπιβεβαίωτων πακέτων είναι ιδιαίτερα κρίσιμη παράμετρος απόδοσης πολύ μικρά timeouts => άσκοπη αποστολή πακέτων πολύ μεγάλα timeouts => άσκοπη καθυστέρηση Η στατική επιλογή είναι μη βέλτιστη η κατάσταση του δικτύου μεταβάλλεται δυναμικά Μπορεί να γίνεται δυναμική προσαρμογή με βάση την τρέχουσα κατάσταση του δικτύου Πως «βλέπουμε» την κατάσταση του δικτύου; παρασκηνιακές μετρήσεις για το round-trip-time, και αντίστοιχη αυξομείωση των timeouts Κατανεμημένα Συστήματα lalis@inf.uth.gr
A άσκοπες αποστολές πακέτων δεδομένων και επιβεβαιώσεων k k pk Τ k k k Τ Τ pk pk pk ak ak k k k ak ak Κατανεμημένα Συστήματα lalis@inf.uth.gr
άσκοπη αναμονή A k k pk Τ pk ak k k k Κατανεμημένα Συστήματα lalis@inf.uth.gr
Άλλες βελτιστοποιήσεις Μαζικές επιβεβαιώσεις (mass-acks) ο παραλήπτης στέλνει μια μοναδική επιβεβαίωση για περισσότερα πακέτα που έχει λάβει Προσάρτηση επιβεβαιώσεων (ack piggy-backing) οι επιβεβαιώσεις προσαρτώνται στα πακέτα δεδομένων που (τυχόν) στέλνονται προς την άλλη κατεύθυνση Και στις δύο περιπτώσεις, μειώνεται ο αριθμός των μεμονωμένων πακέτων που στέλνονται στο δίκτυο από την πλευρά του προορισμού προς την πηγή Κατανεμημένα Συστήματα lalis@inf.uth.gr
Αργοπορημένα πακέτα Σε ασύγχρονο σύστημα, δεν υπάρχει άνω χρονικό όριο για την καθυστέρηση μετάδοση πακέτων Αργοπορημένα πακέτα δεν πρέπει να ληφθούν υπόψη στο πλαίσιο μεταγενέστερων μεταδόσεων Απαγορεύεται η «ανακύκλωση» αναγνωριστικών και σειριακών αριθμών ακόμα και με επανεκκίνηση στην πράξη Σημείωση: διαφορετικά αναγνωριστικά χρειάζονται και για την πολυπλεξία ξεχωριστών μεταδόσεων Κατανεμημένα Συστήματα 5 lalis@inf.uth.gr
A k pk Τ pk ak k A k pk ak k ak Κατανεμημένα Συστήματα 6 lalis@inf.uth.gr
Το πρόβλημα της τελευταίας επιβεβαίωσης Το τελευταίο πακέτο πρέπει και αυτό να επιβεβαιωθεί Αυτή η τελευταία επιβεβαίωση μπορεί να χαθεί απαιτείται επιβεβαίωση της επιβεβαίωσης και επιβεβαίωση της επιβεβαίωσης της επιβεβαίωσης Πάντα, μια από τις δύο πλευρές (αυτή που έστειλε το τελευταίο μήνυμα) θα έχει αμφιβολίες για το κατά πόσο η άλλη πλευρά όντως έλαβε το μήνυμα της Πρόβλημα: η πλευρά που έχει την αμφιβολία πρέπει να είναι σε θέση να δεχτεί/αναγνωρίσει και να επιβεβαιώσει το πακέτο που ίσως στείλει (κάποια στιγμή) η άλλη πλευρά Κατανεμημένα Συστήματα 7 lalis@inf.uth.gr
A Ν Ν pν ΟΚ έφτασε το pν; Ν aan aν Ν έφτασε το aν; Ν έφτασε το aan; aaaan aaan έφτασε το aaan; έφτασε το aaaan; aaaaan έφτασε το aaaaan; Κατανεμημένα Συστήματα 8 lalis@inf.uth.gr
A Ν Ν pν ΟΚ έφτασε το pν; Ν aν Ν Ν να θυμάμαι ότι μπορεί κάποτε να λάβω πακέτο pn που πρέπει να επιβεβαιώσω Κατανεμημένα Συστήματα 9 lalis@inf.uth.gr
A Ν Ν pν έφτασε το pν; Ν pν aν Ν Ν έφτασε το pν; ΟΚ έφτασε το pν; Ν Ν pν aν να θυμάμαι ότι μπορεί κάποτε να λάβω πακέτο pn που πρέπει να επιβεβαιώσω Κατανεμημένα Συστήματα 0 lalis@inf.uth.gr
Το πρόβλημα της συντονισμένης επίθεσης για στρατηγούς/στρατούς Attack? Attack? Δύο στρατηγοί έχουν στήσει ενέδρα, αλλά πρέπει να συμφωνήσουν για την ώρα της επίθεσης Επικοινωνούν μέσω αγγελιοφόρων, που μπορεί να «χαθούν» (να πιαστούν αιχμάλωτοι από τον εχθρό) Πως μπορεί να επιτευχθεί συμφωνία; ΑΔΥΝΑΤΟ! Κατανεμημένα Συστήματα lalis@inf.uth.gr
Γιατί; Α: στέλνει μήνυμα «επίθεση στις 0:00» στον Β Α: δεν ξέρει αν ο Β έλαβε το μήνυμα, παρά μόνο αν λάβει ρητή επιβεβαίωση από τον Β Β: στέλνει επιβεβαίωση «ΟΚ για τις 0:00» στον Α Β: δεν ξέρει αν ο Α έλαβε το μήνυμα, παρά μόνο αν λάβει επιβεβαίωση από τον Α Μπορεί να αποδειχθεί, και τυπικά, πως δεν υπάρχει πρωτόκολλο το οποίο να λύνει αυτό το πρόβλημα Γενίκευση του προβλήματος της συμφωνίας: θα συζητηθεί προς το τέλος του μαθήματος Κατανεμημένα Συστήματα lalis@inf.uth.gr