ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ. ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διπλωματική Εργασία Μεταπτυχιακού Διπλώματος Ειδίκευσης Σχεδίαση και ανάπτυξη επέκτασης (extension) του πρωτοκόλλου επιπέδου γραμμής Selective Repeat για παροχή υπηρεσιών μερικής ανάκαμψης Λουκάς Ελευθέριος Επιβλέπων: Ξυλωμένος Γεώργιος ΑΘΗΝΑ, ΙΟΥΝΙΟΣ 2007
- 2 -
1. Περίληψη Οι ασύρματες επικοινωνίες έχουν εξελιχθεί εντυπωσιακά τα τελευταία χρόνια. Το Internet, το μεγαλύτερο δίκτυο της εποχής μας έχει επιπτώσεις σε κάθε πτυχή της ζωής του ανθρώπου στη σύγχρονη κοινωνία. Ο κόσμος απορρόφησε την καινοτομία αυτή και κατέδειξε ότι τα ενσύρματα δίκτυα είναι ανεπαρκή να καλύψουν τις προσδοκίες ενός σύγχρονου τρόπου ζωής. Οι παροχείς δικτυακών υπηρεσιών έχουν στρέψει την προσοχή τους στη δημιουργία ασύρματων δικτύων με συνεχή πρόσβαση στις πληροφορίες και τις υπηρεσίες από οποιονδήποτε, οποτεδήποτε και με υψηλή ταχύτητα. Ένα σημαντικό θέμα που έχει προκύψει με το Internet είναι η ποιότητα των παρεχόμενων υπηρεσιών. Στην προσπάθεια μας να αυξήσουμε την απόδοση των εφαρμογών βελτιώνοντας έμμεσα την ποιότητα των υπηρεσιών σκεφτήκαμε να εξελίξουμε ένα υπάρχον πρωτόκολλο επιπέδου γραμμής και να μελετήσουμε κάτω υπό ποιες συνθήκες είναι καταλληλότερο και για ποια είδη κίνησης μπορεί να εφαρμοστεί. Μελετώντας την οικογένεια πρωτοκόλλων επιλεκτικής επανάληψης (Selective Repeat, SR) που ανήκουν στην κατηγορία πρωτοκόλλων πλήρους ανάκαμψης δημιουργήσαμε μια επέκταση (extension), ένα μηχανισμό ελέγχου ο οποίος επιτρέπει την περιορισμένη ανάκτηση δεδομένων σε περιβάλλοντα με ισχυρή παρουσία λαθών. Ο μηχανισμός αυτός είχε σα συνέπεια τη δημιουργία μιας νέας οικογένειας πρωτοκόλλων επιλεκτικής επανάληψης περιορισμένης ανάκαμψης (Selective Repeat Limited Recovery, SRLR) Στην προσπάθεια μας να εξάγουμε συμπεράσματα για την αναγκαιότητα ύπαρξης πρωτοκόλλων περιορισμένης ανάκαμψης προσομοιώσαμε ένα σύνολο από σενάρια. Συγκρίνοντας τις επιδόσεις (Throughput) συγκεκριμένων εφαρμογών, όπως FTP, WWW Browsing (ΗΤΤP) και CBR υπό καλά ορισμένες συνθήκες (σενάρια) εντοπίσουμε τις περιπτώσεις εκείνες που αξίζει να περάσουμε την δικτυακή μας κίνηση πάνω από πρωτόκολλα περιορισμένης ανάκαμψης προκειμένου να επιτύχουμε βέλτιστη απόδοση. Επιβλέπων: Γεώργιος Ξυλωμένος Αναπληρωτής Καθηγητής Τμήμα Πληροφορικής Οικονομικό Πανεπιστήμιο Αθηνών - 3-2 ος Αξιολογητής: Γεώργιος Πολύζος Καθηγητής Τμήμα Πληροφορικής Οικονομικό Πανεπιστήμιο Αθηνών
Abstract Wireless communications have been developed impressively in the last few years. The Internet, the biggest network of our days, has repercussions in each aspect of our life in the modern society. People absorbed this innovation and they showed that the wired networks are insufficient to cover modern way s expectations. Network suppliers are interested in creating wireless networks that provide continuous information access and services. The quality of provided services is very important issue. Trying to increase the performance of applications, we thought of evolving an existing link layer protocol specifying more suitable conditions. Studying the group of Selective Repeat (SR) protocols which are full recovery protocols we created an extension, a control mechanism which allow the limited data recovery in environments with powerful presence of errors. This mechanism created a new group of Selective Repeat Limited Recovery (SRLR) protocols. Trying to export results for the necessity of existing limited recovery protocols we run extended group of simulations. Comparing the performance of various types of traffic (FTP, HTTP and CBR) we allocated the cases for which it s optimal to send data from limited recovery protocols than from full recovery protocols. - 4 -
Ευχαριστίες Η διπλωματική εργασία εκπονήθηκε στα πλαίσια απόκτησης μεταπτυχιακού διπλώματος στην Επιστήμη των Υπολογιστών στο τμήμα Πληροφορικής του Οικονομικού Πανεπιστημίου Αθηνών. Θερμές ευχαριστίες στον επόπτη καθηγητή μου κ. Γεώργιο Ξυλωμένο, που πίστεψε σε μένα και μου έδωσε την ευκαιρία ν ασχοληθώ σε ερευνητικό επίπεδο με το θέμα της εργασίας αυτής. Θα ήθελα επίσης να ευχαριστήσω τον καθηγητή κ. Γεώργιο Πολύζο για την αποδοχή του να αποτελέσει το δεύτερο αξιολογητή. Τέλος θα ήθελα να ευχαριστήσω τους γονείς μου για την πλήρη στήριξή τους σε κάθε βήμα των σπουδών μου. - 5 -
Πίνακας Περιεχομένων 1. Περίληψη... - 3-2. Εισαγωγή... - 8-3. Multi-Service Link Layer (MSLL)... - 10-3.1 MSLL Αρχιτεκτονική... - 10-3.2 Τύποι Ασύρματης Ζεύξης και Μοντέλα Σφάλματος... - 12-3.3 Τοπολογία... - 13-3.4 Τύπος Κίνησης... - 14-3.4.1 File Transfer Protocol (FTP)... - 14-3.4.2 Hypertext Transfer Protocol (HTTP)... - 15-3.4.3 Constant Bit Rate (CBR)... - 16-4. MSLL Full Recovery Services... - 17-4.1 Selective Repeat Protocol (SR)... - 17-4.2 Selective Repeat Multiple NACKs (per Window) Protocol (SR/M1)... - 21-4.3 Selective Repeat Multiple NACKs (per Packet) Protocol (SR/M2)... - 24-5. MSLL Limited Recovery Services... - 27-5.1 Selective Repeat Limited Recovery (SRLR)... - 27-5.1.1 Λειτουργία SRLR... - 27-5.1.2 SRLR Deadlock... - 29-5.1.3 Συγχρονισμός... - 31-5.2 Selective Repeat LR Multiple NACKs (per Window) Protocol (SRLR/Μ1)... - 33-5.3 Selective Repeat LR Multiple NACKs (per Packet) Protocol (SRLR/M2)... - 34-6. Εργαλείο Προσομοίωσης... - 35-6.1 Προσομοιωτής... - 35-6.2 Προσομοίωση vs. Υλοποίηση... - 36-7. Σενάρια Προσομοίωσης... - 37-7.1 Απόδοση FTP... - 37-7.2 Απόδοση HTTP... - 46-8. Συμπεράσματα... - 37-9. Βιβλιογραφία... - 53-10. Παράρτημα... - 57-10.1 Αρίθμηση Πακέτων Modulo 2n... - 57-10.2 Ευρετήριο Σχημάτων Πινάκων Διαγραμμάτων... - 58-10.3 Ακρωνύμια... - 59 - - 6 -
- 7 - Αφιερώνεται στους γονείς μου και την αδερφή μου Βενετία
2. Εισαγωγή Το Internet εξαιτίας της μεγάλης απήχησης του, έχει καταφέρει να ενοποιήσει ένα πλήθος από διαφορετικές τεχνολογικές φιλοσοφίες κάτω από την ίδια σκέπη και να μετατραπεί από δίκτυο μεταφοράς δεδομένων σε δίκτυο μεταφοράς πολυμεσικού περιεχομένου. Καταφέρνει να αποκρύψει την πολυπλοκότητα του κάτω από το επίπεδο IP (Internet Protocol) το οποίο επιτυγχάνει την υπέρ-δικτύωση των διάφορων τεχνολογιών. Η τεχνολογία η οποία έχει καταφέρει να ξεχωρίσει είναι αυτή των ασύρματων δικτύων, τα οποία αποτελούν έναν από τους ταχύτερα αναπτυσσόμενους τομείς της επιστήμης των υπολογιστών. Εξαιτίας της υψηλής ταχύτητας που επιτυγχάνουν, του χαμηλού κόστους, της ευκολίας στην εγκατάσταση και της ελευθερίας στην κίνηση αποτελούν τη βέλτιστη επιλογή για κάθε κινούμενο χρήστη. Βέβαια παρόλη την ανάπτυξη του Internet, των τεχνολογιών που το υποστηρίζουν και των ευρυζωνικών συνδέσεων ένα μείζον θέμα τα τελευταία χρόνια είναι η αξιοπιστία στη μετάδοση και η ποιότητα των παρεχόμενων υπηρεσιών. Το γενικότερο συμπέρασμα είναι ότι ένα σύνολο από διαφορετικές εφαρμογές έχουν διαφορετικές απαιτήσεις ποιότητας υπηρεσίας (Quality of Service, Q.o.S). Για το λόγο αυτό κρίνεται επιτακτική η ανάγκη συνύπαρξης διαφορετικών πρωτοκόλλων επιπέδου γραμμής πάνω από την ίδια ζεύξη και η χρησιμοποίηση του κατάλληλου ανάλογα με την εφαρμογή. Υπάρχουν διαφορετικές κατηγορίες εφαρμογών ανάλογα με το σκοπό που επιτυγχάνει η κάθε μια. Υπάρχουν εφαρμογές λιγότερο ανεκτικές σε λάθη αλλά ελαστικές ως προς την καθυστέρηση, ενώ υπάρχουν και εφαρμογές μη ανεκτικές στην καθυστέρηση, χωρίς ν απαιτούν όμως μεγάλη αξιοπιστία στη μετάδοση. Οι εφαρμογές της πρώτης κατηγορίες πρέπει να μεταδίδονται από πρωτόκολλα επιπέδου γραμμής πλήρους ανάκαμψης (full recovery protocols) ενώ οι εφαρμογές της δεύτερης κατηγορίας πρέπει να μεταδίδονται από πρωτόκολλα περιορισμένης ανάκαμψης (limited recovery protocols). Έχει αναπτυχθεί μια αρχιτεκτονική πολλαπλών υπηρεσιών επιπέδου γραμμής (Multi- Service Link Layer, MSLL), η οποία παρέχει μια καθολική λύση στο πρόβλημα της μειωμένης απόδοσης του Internet πάνω από ασύρματα δίκτυα. Το MSLL επιτρέπει την πολυπλεξία πολλών διαφορετικών πρωτοκόλλων πάνω από το ίδιο φυσικό μέσο. Στο Κεφάλαιο 3 παρουσιάζεται η αρχιτεκτονική του MSLL ενώ στα Κεφάλαια 4 και 5 παραθέτονται ένα πλήθος από πρωτόκολλα-υπηρεσίες (Services) που πολυπλέκονται πάνω από το υπάρχον επίπεδο γραμμής. - 8 -
Το MSLL έχει σχεδιαστεί και υποστηρίζει ένα πλήθος από διαφορετικά Services καθένα από τα οποία είναι κατάλληλο για διαφορετικό είδος κίνησης. Στην παρούσα εργασία τα Services που μελετάμε και αναπτύσσουμε ανήκουν στην ευρύτερη κατηγορία των πρωτοκόλλων επιλεκτικής επανάληψης (Selective Repeat, SR). Τα πρωτόκολλα της οικογένειας Selective Repeat είναι πρωτόκολλα επιπέδου γραμμής τα οποία παρέχουν απόλυτη αξιοπιστία και είναι κατάλληλα για την πρώτη κατηγορία εφαρμογών. Για τις εφαρμογές που απαιτούν μικρή καθυστέρηση κατά τη μετάδοση αναπτύξαμε μια νέα οικογένεια πρωτοκόλλων επιλεκτικής επανάληψης περιορισμένης ανάκαμψης (Selective Repeat Limited Recovery, SRLR) τα οποία δίνουν την δυνατότητα στην εφαρμογή και κατά συνέπεια στον χρήστη να καθορίσει τα επίπεδα αξιοπιστίας του δικτύου με βάση τις ανάγκες του. Η οικογένεια πρωτοκόλλων SRLR έχει κληρονομήσει όλα τα χαρακτηριστικά των πρωτοκόλλων SR και υλοποιεί επιπλέον έναν μηχανισμό ελέγχου ο οποίος επιτρέπει την περιορισμένη ανάκτηση δεδομένων σε περίπτωση πληθώρας λαθών κατά τη μετάδοση. Αυτό δίνει τη δυνατότητα στην εφαρμογή να επιλέξει το πλήθος των αναμεταδόσεων και ν αγνοήσει τα πακέτα που αδυνατούν να παραδοθούν. Το πλήθος των αναμεταδόσεων αποτελεί σχεδιαστική παράμετρο των πρωτοκόλλων και μπορεί να μεταβάλλεται από την εφαρμογή ανάλογα με το επίπεδο ποιότητας υπηρεσίας που θέλει να επιτύχει. - 9 -
3. Multi-Service Link Layer (MSLL) Το MSLL είναι μια αρχιτεκτονική πολλαπλών υπηρεσιών (πρωτοκόλλων) επιπέδου γραμμής πάνω από την ίδια φυσική ζεύξη, που επιτρέπει τη χρήση του κατάλληλου πρωτοκόλλου ανάλογα με τις απαιτήσεις της εκάστοτε εφαρμογής [2]. Για να μπορέσει ένα τέτοιος μηχανισμός να λειτουργήσει σωστά και να θεωρηθεί επιτυχημένος θα πρέπει να διαθέτει κάποια βασικά χαρακτηριστικά. Μερικά από τα σημαντικότερα είναι ότι το MSLL είναι ανεξάρτητο από την τοπολογία του δικτύου, τον τύπο της κίνησης και την κατεύθυνση της κίνησης. Επίσης καταφέρνει να εσωκλείει την πολυπλοκότητα του και να την αποκρύπτει από τα υπόλοιπα επίπεδα του δικτύου. Τέλος είναι εύκολο στην υλοποίηση και αποδοτικό ως προς τους πόρους του δικτύου καθώς για οποιαδήποτε ασύρματη ζεύξη υπάρχει ένα πρωτόκολλο επιπέδου γραμμής που βελτιστοποιεί την απόδοση της. 3.1 MSLL Αρχιτεκτονική Η αρχιτεκτονική του MSLL απεικονίζεται στο σχήμα που ακολουθεί (βλ. Εικόνα 3.1) δείχνοντας τη ροή των δεδομένων από τα υψηλότερα επίπεδα προς τα χαμηλότερα (στην πλευρά του αποστολέα) και από τα χαμηλότερα επίπεδα προς τα υψηλότερα (στην πλευρά του παραλήπτη). Ένα από τα βασικά πλεονεκτήματα της αρχιτεκτονικής αυτής είναι ότι καταφέρνει να κρύψει της πολυπλοκότητα της και να την απομονώσει στο εσωτερικό της. Η σχεδίαση αυτή απομονώνει τις υπηρεσίες τη μια από την άλλη χρησιμοποιώντας ένα σύνολο από μηχανισμούς εισόδου-εξόδου για την επικοινωνία μεταξύ τους και με τις υπόλοιπες δομικές μονάδες του συστήματος. Ουσιαστικά οι υπηρεσίες λειτουργούν ανεξάρτητα και αυτόνομα σα να βρίσκονταν η κάθε μια σε μια αποκλειστικά δική της ζεύξη. Συνοψίζοντας και προτού προχωρήσουμε στην ανάλυση του μηχανισμού θα πρέπει να είναι ξεκάθαρο ότι το MSLL συνεργάζεται με την υπάρχουσα υποδομή και ενσωματώνεται μεταξύ του επιπέδου δικτύου και του υπάρχοντος επιπέδου γραμμής. Εικόνα 3.1: Αρχιτεκτονική MSLL - 10 -
Θα παραθέσουμε τώρα τον τρόπο με τον οποίο ένα πακέτο δεδομένων περνάει από το επίπεδο δικτύου του αποστολέα και στέλνεται μέσω ασύρματου δικτύου στον παραλήπτη χρησιμοποιώντας το MSLL. Αρχικά το πακέτο θα έπρεπε από το επίπεδο δικτύου να περάσει στο υπάρχον επίπεδο γραμμής και στη συνέχεια στο φυσικό επίπεδο για μετάδοση. Αυτή η διαδικασία θα ακολουθούνταν αν απουσιάζει το MSLL. Τώρα, το πακέτο θα φύγει από το επίπεδο δικτύου, θα περάσει στον Packet Classifier ο οποίος θα εξετάσει την επικεφαλίδα του κάθε πακέτου και με βάση αυτή θα περάσει το πακέτο στην κατάλληλη υπηρεσία. Η κάθε υπηρεσία είναι υλοποιημένη με βάση το πρωτόκολλο επιπέδου γραμμής που ταιριάζει περισσότερα στον τύπο κίνησης που θέλουμε να μεταδώσουμε. Αφού επιλεγεί, στη συνέχεια λειτουργεί σα να είναι το αποκλειστικό πρωτόκολλο επιπέδου γραμμής της ασύρματης ζεύξης. Κάθε υπηρεσία διαθέτει μια ουρά αναμονής στην οποία τοποθετούνται τα πακέτα αφού γίνει η επεξεργασία τους σε αυτήν. Από εκεί αναλαμβάνει ο Scheduler ο οποίος προσθέτει τον αριθμό υπηρεσίας στην επικεφαλίδα κάθε πακέτου και αποφασίζει ποίο πακέτο θα μεταδοθεί την επόμενη φορά που η γραμμή θα είναι διαθέσιμη. Ακολούθως το πακέτο περνάει στο υπάρχον επίπεδο γραμμής προτού φτάσει στο φυσικό επίπεδο για μετάδοση. Μόλις ένα πακέτο ληφθεί από το υπάρχον επίπεδο γραμμής του παραλήπτη και εφόσον έχει παραληφθεί επιτυχώς, εκτελούνται όλες οι απαραίτητες ενέργειες (αφαιρούνται επικεφαλίδες κλπ) και στην συνέχεια ανεβαίνει προς τα επόμενα επίπεδα στην ιεραρχία των πρωτοκόλλων. Προτού φτάσει στο επίπεδο δικτύου πρέπει πρώτα να περάσει μέσα από το MSLL (του παραλήπτη) και πιο συγκεκριμένα από τον Frame Demultiplexer, ο οποίος ελέγχει τον αριθμό υπηρεσίας του κάθε πακέτου και το παραδίδει στην κατάλληλη υπηρεσία του παραλήπτη, αυτή τη φορά για επεξεργασία. Μόλις ολοκληρωθεί η επεξεργασία το πακέτο περνάει στο επόμενο επίπεδο που βρίσκεται ο Packet Multiplexer, ο οποίος είναι υπεύθυνος να παραδώσει το πακέτο στο επίπεδο δικτύου. Προτού ολοκληρώσουμε τη σύντομη παρουσίαση του MSLL θα περιγράψουμε με σαφήνεια τα δομικά στοιχεία της αρχιτεκτονικής. Classifier: Δρομολογεί τα εισερχόμενα πακέτα στα πρωτόκολλα επιπέδου γραμμής (Services) που είναι διαθέσιμα, υπολογίζει το Bandwidth που διαμοιράζεται σε κάθε πρωτόκολλο, ελέγχει την κίνηση που στέλνει το επίπεδο δικτύου και στην περίπτωση που αδυνατεί να την εξυπηρετήσει αναστέλλει τη λειτουργία του. Services: Λειτουργούν αυτόνομα και ανεξάρτητα, μόλις τα πακέτα δρομολογηθούν προς κάποιο πρωτόκολλο εκτελεί όλες τις απαραίτητες ενέργειες που αυτό ορίζει (εισαγωγή parity bit, εμπλουτισμός επικεφαλίδας πακέτου κλπ). - 11 -
Scheduler: Προσθέτει τον αριθμό υπηρεσίας στην επικεφαλίδα του κάθε πακέτου, αποφασίζει ποιο πακέτο θα μεταδοθεί την επόμενη φορά που η γραμμή θα είναι διαθέσιμη. Demultiplexer: Λαμβάνει πακέτα από το υπάρχον επίπεδο γραμμής, διαβάζει τις επικεφαλίδες των πακέτων και τα προωθεί στις κατάλληλες υπηρεσίες. Multiplexer: Προωθεί τα πακέτα από τις υπηρεσίες στο επίπεδο δικτύου. Το MSLL κλείνοντας επιτυγχάνει σε μεγάλο βαθμό τους στόχους του και παρέχει μια αξιόπιστη λύση στο πρόβλημα της χαμηλής απόδοσης του Internet πάνω από ασύρματες εφαρμογές. Τα βασικά του πλεονεκτήματα είναι ότι το κάθε πρωτόκολλο επιπέδου γραμμής (υπηρεσία) λειτουργεί αυτόνομα σα να έτρεχε μόνο του πάνω σε μια εικονική ζεύξη. Ο Scheduler επιτυγχάνει δίκαιη αλλά και ταυτόχρονα αποδοτική κατανομή της γραμμής σε όλες τις υπηρεσίες που έχουν πακέτα να μεταδώσουν. Ενώ τέλος η επεκτασιμότητα του συστήματος απαιτεί την προσθήκη νέων υπηρεσιών στις ήδη υπάρχουσες. 3.2 Τύποι Ασύρματης Ζεύξης και Μοντέλα Σφάλματος Digital Cellular (Cellular), οι ζεύξεις αυτές προσομοιώνουν τις ψηφιακές κυψελωτές τηλεφωνικές γραμμές με ταχύτητες μετάδοσης 64 Kbps, καθυστέρηση διάδοσης 50 ms και μέγεθος πακέτου 250 bytes. Το μοντέλο σφάλματος που προσομοιώνεται είναι Independent Frame Losses και οι ρυθμοί απώλειας 1.5%, 2.5%, 5.4%, και 9.8% [1]. Χαρακτηριστικά της ζεύξης αυτής συγκεντρώνονται στον πίνακα που ακολουθεί. Transmission Speed Propagation Delay Frame Size Error Model 64 Kbps 50 ms 250 bytes Independent Frame Losses Loss Rates Error Level 1 1.5% Error Level 2 2.5% Error Level 3 5.4% Error Level 4 9.8% Πίνακας 3.1: Χαρακτηριστικά γραμμής Digital Cellular Personal Communication Systems (PCS), οι ζεύξεις αυτές προσομοιώνουν τα συστήματα προσωπικής επικοινωνίας επιτυγχάνοντας ταχύτητες μετάδοσης 64 Kbps, χρόνο μετάδοσης 50 ms και μέγεθος πακέτου 250 bytes. Το μοντέλο σφάλματος που προσομοιώνεται είναι Two State with Exponential Durations, με τις δύο καταστάσεις να διαφέρουν τόσο στο χρόνο παραμονής όσο και στο ρυθμό εμφάνισης σφαλμάτων [1]. - 12 -
Στη Good State ο χρόνος παραμονής είναι 10 sec ενώ στη Bad State ανάλογα με το ρυθμό απώλειας που θέλουμε να προσομοιώσουμε μεταβάλλεται και ο χρόνος παραμονής. Λεπτομέρειες παραθέτονται στον πίνακα που ακολουθεί. Transmission Speed 64 Kbps Propagation Delay 50 ms Frame Size 250 bytes Error Model Two State Exponential Durations Bit Error Rate in Good State 10-6 Bit Error Rate in Bad State 10-2 Average Good State Duration 10 seconds Average Bad State Durations Error Level 1 100 ms for 1% error rate Error Level 2 200 ms for 2% error rate Error Level 3 500 ms for 3% error rate Error Level 4 1000 ms for 10% error rate Πίνακας 3.2: Χαρακτηριστικά γραμμής PCS 3.3 Τοπολογία Η τοπολογία είναι η απλούστερη τοπολογία δικτύου που προσομοιώνεται. Όπως φαίνεται και στο σχήμα (βλ. Εικόνα 3.2) δύο κόμβοι επικοινωνούν μέσω TCP ή UDP, με τον ασύρματο κόμβο να επικοινωνεί αρχικά με τον σταθμό βάση (Base Station) ο οποίος λειτουργεί και ως IP δρομολογητής. Η ασύρματη γραμμή μπορεί να είναι είτε Cellular είτε PCS. Η ενσύρματη γραμμή μπορεί να είναι είτε γραμμή LAN 10Mbps με χρόνο διάδοσης 1 ms είτε γραμμή WAN 2Mbps με χρόνο διάδοσης 50 ms. Αυτές οι δύο τοπολογίες αναφέρονται ως LAN και WAN αντίστοιχα. Η κατεύθυνσης της κίνησης είναι από τον ενσύρματο κόμβο προς τον ασύρματο [1]. Για κίνηση UDP ή TCP μόνο προς μια κατεύθυνση αυτό σημαίνει ότι ο ενσύρματος κόμβος είναι ο αποστολέας και ο ασύρματος ο παραλήπτης. Για αμφίδρομη κίνηση αυτό σημαίνει ότι ο μεγαλύτερος όγκος κίνησης μεταφέρεται από τον ενσύρματο κόμβο στον ασύρματο. - 13 -
Εικόνα 3.2: Τοπολογία δικτύου με ασύρματη ζεύξη (LAN και WAN) 3.4 Τύπος Κίνησης 3.4.1 File Transfer Protocol (FTP) Το FTP ανήκει στην κατηγορία εφαρμογών που χρησιμοποιούν το TCP για τη μεταφορά αρχείων από άκρο σε άκρο. Διαθέτει πολλά ενδιαφέροντα χαρακτηριστικά όπως δημιουργία καταλόγου αρχείων (listing files), εναλλαγή φακέλων και φυσικά αποστολή και παραλαβή αρχείων. Το δικό μας ενδιαφέρον στρέφεται στη μελέτη του FTP όσον αφορά τη μεταφορά αρχείων. Για να προσομοιώσουμε το FTP χρησιμοποιήσαμε το υπάρχον μοντέλο που διαθέτει ο ns-2 [8], το οποίο ορίζει ότι όσο η εφαρμογή FTP έχει δεδομένα να στείλει, το TCP τα μεταδίδει έως ότου ολοκληρωθεί η μετάδοση. Για την τοπολογία LAN και WAN έχουμε ορίσει ότι η μεταφορά αρχείων γίνεται με κατεύθυνση από τον ενσύρματο κόμβο (Wired Host) προς τον ασύρματο (Wireless Host). Η μετρική που χρησιμοποιείται για τον υπολογισμό της απόδοσης σε μεταφορά αρχείων είναι το Throughput (Όγκος Δεδομένων), το οποίο ορίζεται από την εξής φόρμουλα: Throughput = (Total_Bytes_Received * 8) / Total_Time_per_Flow Total_Time_per_Flow = Last_Ack_Time First_Packet_Sent_Time Για μεταφορά αρχείων σταθερού όγκου η έννοια του Throughput και του χρόνου που διαρκεί η μετάδοση ταυτίζονται αλλά το Throughput προτιμάται καθώς είναι έννοια συγκρίσιμη με το Bandwidth του συνδέσμου. Εξαιτίας του τρόπου που το TCP αντιδρά στα λάθη το Throughput παρουσιάζει μεγάλες διακυμάνσεις σε περιβάλλοντα με - 14 -
υψηλούς ρυθμούς απώλειας. Εξαιτίας αυτού απαιτούνται μεταδόσεις μεγάλης διάρκειας προκειμένου να υπολογιστεί σωστά το Average Throughput. Στην πραγματικότητα όμως κανείς δε θα ήταν σε θέσει να πραγματοποιήσει προσομοιώσεις που θα διαρκούσαν πολύ χρόνο, έτσι αποφασίσαμε να χρησιμοποιήσουμε διαφορετικό μέγεθος πακέτου (βλ. Πίνακα 3.3) στα FTP τεστ μας ανάλογα με τον τύπο της ασύρματης ζεύξης. Link Type Transfer Size Packet Size Number of Packets Cellular 10 Mbytes 250 bytes 40.000 PCS 10 Mbytes 250 bytes 40.000 Πίνακας 3.3: Παράμετροι FTP 3.4.2 Hypertext Transfer Protocol (HTTP) Το HTTP ανήκει στην κατηγορία των διαδραστικών εφαρμογών και χρησιμοποιείται για την επικοινωνία του πελάτη (client) με τον εξυπηρετητή (server) κατά την πλοήγηση στο Internet (WWW Browsing). Το HTTP ορίζει μηνύματα ζήτησης (request) και προσφοράς (reply) για τη μεταφορά αντικειμένων όπως εικόνες, βίντεο, κείμενο κλπ (βλ. Εικόνα 3.3) και χρησιμοποιεί το πρωτόκολλο TCP για την ανταλλαγή τους [1]. Εικόνα 3.3: Ακολουθία γεγονότων HTTP Session Το μοντέλο που χρησιμοποιήσαμε για να προσομοιώσουμε HTTP κίνηση στο ns-2 αποτελείται από κατανομές οι οποίες παράγουν μηνύματα requests και replies καθώς και το πλήθος των ενσωματωμένων αντικειμένων (objects) ανά σελίδα [1]. Όπως και στο FTP έτσι και στο HTTP χρησιμοποιούμε ίδιο πλήθος και μέγεθος πακέτων για κάθε ασύρματη ζεύξη (βλ. Πίνακα 3.3). Για ν αυξήσουμε το πλήθος των συναλλαγών (transactions) μηδενίσαμε το χρόνο απόκρισης (think time) του client έτσι ώστε κάθε φορά που ολοκληρώνεται ένα transaction να ξεκινάει ένα νέο. - 15 -
3.4.3 Constant Bit Rate (CBR) Σε μια κατηγορία σεναρίων προσομοιώνουμε TCP και UDP κίνηση μαζί. Για το λόγο αυτό εισάγουμε έναν επιπλέον τύπο κίνησης ο οποίος χρησιμοποιείται σε εφαρμογές τηλεδιάσκεψης. Τέτοιου είδους εφαρμογές είναι εξαιρετικά απαιτητικές ως προς την καθυστέρηση και πολύ ανεκτικές σε σφάλματα. Το γενικότερο μοντέλο για τέτοιου είδους εφαρμογές αποτελείται από συνεδρίες μεταξύ πολλών μερών με έναν ενεργό αποστολέα κάθε στιγμή και πολλαπλούς παραλήπτες. Εμείς προσομοιώνουμε ένα απλοποιημένο μοντέλο με έναν αποστολέα και ένα παραλήπτη (βλ. Εικόνα 3.4). Ο αποστολέας παραμένει στην κατάσταση Talking για διάστημα εκθετικά κατανεμημένο και μέσο χρόνο παραμονής 1 sec, ενώ αντίστοιχα ο παραλήπτης παραμένει στον κατάσταση Silent κατά μέσο όρο 1.35 sec [1]. Εικόνα 3.4: Μοντέλο Τηλεδιάσκεψης πραγματικού χρόνου - 16 -
4. MSLL Full Recovery Services Στο κεφάλαιο αυτό θα μελετήσουμε την οικογένεια πρωτοκόλλων επιλεκτικής επανάληψης (Selective Repeat) τα οποία παρέχουν απόλυτη αξιοπιστία κατά τη μετάδοση. Στην οικογένεια αυτή ανήκει το απλό πρωτόκολλό Selective Repeat (SR) το οποίο επιτρέπει τη μετάδοση μιας αρνητικής επιβεβαίωσης (Negative Acknowledgment, NACK) ανά μεταδιδόμενο παράθυρο [3]. Ένας απόγονος του SR, ο οποίος αυξάνει την απόδοση του είναι το πρωτόκολλο Selective Repeat Multiple NACKs (per Window) (SR/M1), το οποίο επιτρέπει την αποστολή ενός NACK για κάθε πακέτο ανά μεταδιδόμενο παράθυρο. Τέλος, ο τελευταίος εκπρόσωπος της κατηγορίας αυτής είναι το πρωτόκολλο Selective Repeat Multiple NACKs (per packet) (SR/M2), το οποίο δίνει τη δυνατότητα αποστολής πολλαπλών NACKs για κάθε πακέτο στη διάρκεια ενός παραθύρου. 4.1 Selective Repeat Protocol (SR) Το πρωτόκολλο επιλεκτικής επανάληψης (Selective Repeat, SR) βελτιώνει την απόδοση καθώς επιτρέπει σε περισσότερα από ένα πακέτα να παραμένουν ανεπιβεβαίωτα την ίδια χρονική στιγμή. Όπως υποδηλώνει το όνομα του, επαναλαμβάνει μόνο επιλεγμένες μεταδόσεις δηλαδή αυτές που δεν έχουν επιβεβαιωθεί εμπρόθεσμα ή μεταδόσεις για τις οποίες έχει φτάσει αρνητική επιβεβαίωση (NACK) [4]. Όταν χρησιμοποιείται SR, το επίπεδο γραμμής (Link Layer) στον παραλήπτη πρέπει να παραδίδει ακριβώς ένα αντίγραφο για κάθε πακέτο στη σωστή σειρά. Παρ όλα αυτά το επίπεδο γραμμής του παραλήπτη μπορεί να λάβει τα πακέτα σε λανθασμένη σειρά από το φυσικό επίπεδο (Physical Layer). Αυτό θα συμβεί στην περίπτωση που κάποιο λάθος μετάδοσης συμβεί στο πρώτο πακέτο αλλά όχι στο δεύτερο. Αυτό έχει σαν αποτέλεσμα το δεύτερο πακέτο να παραδοθεί από το φυσικό επίπεδο του παραλήπτη στο επίπεδο γραμμής πριν από το πρώτο. Το επίπεδο γραμμής στον παραλήπτη χρησιμοποιεί μια αποθηκευτική μνήμη για την αποθήκευση των πακέτων που φθάνουν εκτός σειράς. Όταν έχει μια ομάδα από διαδοχικά πακέτα στη μνήμη του, μπορεί να τα παραδώσει στο επόμενο επίπεδο του MSLL ή στο επίπεδο δικτύου αν το MSLL απουσιάζει. Και ο αποστολέας χρησιμοποιεί μνήμη για να αποθηκεύσει αντίγραφα των πακέτων που δεν έχουν επιβεβαιωθεί. Οι καταχωρητές τόσο στον αποστολέα όσο και στον παραλήπτη χρειάζεται να μπορούν να κρατούν μόνο πεπερασμένο αριθμό πακέτων [4]. Ο αριθμός αυτός (Window Size) είναι σχεδιαστική παράμετρος του SR. Το SR απαιτεί μια πλήρως αμφίδρομη ζεύξη (Full Duplex) ώστε ο παραλήπτης να μεταδίδει τις επιβεβαιώσεις στον αποστολέα ενόσω ο αποστολέας μεταδίδει πακέτα στον παραλήπτη. - 17 -
Λειτουργία SR Θα παραθέσουμε ένα παράδειγμα μετάδοσης πακέτων μέσω SR με απλουστευμένη τεχνική αρίθμησης (ακολουθιακή). Έστω ότι οι καταχωρητές στον αποστολέα και τον παραλήπτη έχουν τη δυνατότητα να κρατούν τέσσερα πακέτα. Η διαδοχή των γεγονότων φαίνεται στο σχήμα που ακολουθεί (βλ. Εικόνα 4.1). Ο αποστολέας μεταδίδει τα πρώτα τέσσερα πακέτα τα οποία αριθμεί 1, 2, 3, 4, και κρατά αντίγραφα των πακέτων στη μνήμη του. Στην συνέχεια περιμένει για την επιβεβαίωση (Acknowledgment, ACK ) του πακέτου 1. Εάν η ACK1 φτάσει πριν τη λήξη του χρόνου αναμονής (TIMEOUT) ο αποστολέας μεταδίδει το επόμενο πακέτο αριθμημένο με 5 και αντικαθιστά το αντίγραφο του πακέτου 1 με αυτό του πακέτου 5 στη μνήμη του. Εάν η ACK1 δεν έρθει μέσα στο χρόνο αναμονής ο αποστολέας αναμεταδίδει ένα αντίγραφο του πακέτου 1. Στο παράδειγμα μας ο παραλήπτης προτού λήξει το TIMEOUT του πακέτου 1 αντιλαμβάνεται ότι έχει συμβεί ένα λάθος στη μετάδοση 1 και στέλνει μια NACK. Στο SR ο παραλήπτης μπορεί να στείλει NACK μόνο για το πρώτο πακέτο που λαμβάνει εκτός σειράς. Έχει δικαίωμα δηλαδή να στείλει μια NACK ανά μεταδιδόμενο παράθυρο (Window), με τον τρόπο αυτό κάθε NACK αποτελεί επιβεβαίωση όλων των πακέτων που προηγήθηκαν. Έχει μελετηθεί και αποδειχθεί ότι η ύπαρξη των αρνητικών επιβεβαιώσεων αυξάνει την απόδοση του πρωτοκόλλου SR [4]. Μια αρνητική επιβεβαίωση (NACK) στέλνεται μόλις ο παραλήπτης αναγνωρίσει ένα λανθασμένο πακέτο. Αυτό συμβαίνει όταν (ο παραλήπτης) διαπιστώσει ένα κενό στην αρίθμηση των πακέτων που λαμβάνει. Ο αποστολέας τότε μπορεί να αναμεταδώσει αμέσως ένα αντίγραφο του αλλοιωμένου πακέτου χωρίς να χρειάζεται να περιμένει τη λήξη του TIMEOUT, όπως θα συνέβαινε αν δεν υπήρχαν NACKs. Εικόνα 4.1: Στιγμιότυπο μετάδοσης SR με χρήση NACK 1 Άφιξη πακέτου εκτός σειράς (OUT OF SEQUENCE), έφτασε το πακέτο 2 προτού φτάσει το πακέτο 1-18 -
Ο αποστολέας συνεχίζοντας τις μεταδόσεις προσέχει ώστε οι αριθμοί των ανεπιβεβαίωτων πακέτων να διαφέρουν λιγότερο από τέσσερα. Ο παραλήπτης μόλις λάβει τα πακέτα με αρίθμηση 2, 3 και 4 τα αποθηκεύει στη μνήμη του δίχως όμως να τα επιβεβαιώνει. Όπως προαναφέραμε, μόλις αντιληφθεί ότι έλαβε ένα πακέτο εκτός σειράς (OUT OF SEQUENCE) στέλνει ένα NACK στον αποστολέα και αποθηκεύει τα πακέτα που λαμβάνει εκτός σειράς. Ο αποστολέας από την πλευρά του μόλις λάβει ένα NACK ανασύρει από τη μνήμη του αντίγραφο του πακέτου που χάθηκε και το αναμεταδίδει. Ένα σημαντικό μειονέκτημα του SR σε σχέση με άλλα μεταγενέστερα πρωτόκολλα όπως το SR/M1 είναι ότι για κάθε πακέτο επιτρέπεται μόνο μια NACK ανά Window ενώ στο SR/M1 επιτρέπεται ένα NACK για κάθε πακέτο που λαμβάνεται εκτός σειράς. Μετά την αποστολή μιας NACK ο μόνος τρόπος ν αντιληφθεί ο αποστολέας τη λάθος μετάδοση είναι με τη λήξη του TIMEOUT [3]. Στο σχήμα που ακολουθεί (βλ. Εικόνα 4.2) παρατηρούμε ότι για το πακέτο με αριθμό 3 συμβαίνει λάθος στη μετάδοση δύο φορές. Την πρώτη φορά ο παραλήπτης ενημερώνει τον αποστολέα με μία NACK. Τη δεύτερα φορά, ο μόνος τρόπος να αντιληφθεί ο αποστολέας τη λάθος μετάδοση είναι με τη λήξη του TIMEOUT. Τα διπλότυπα των πακέτων που φθάνουν στον παραλήπτη, καταστρέφονται. Τέλος παρατηρούμε και μια ακόμα σημαντική ιδιότητα του SR, την αθροιστική επιβεβαίωση (Cumulative Acknowledgement) η λήψη της οποίας επιβεβαιώνει όλα τα πακέτα που προηγήθηκαν αυτής [4]. Εικόνα 4.2: Αποτυχία μετάδοσης με TIMEOUT Στο διάγραμμα καταστάσεων του αποστολέα για το πρωτόκολλο SR (βλ. Εικόνα 4.3) καταγράφεται η ροή ελέγχου και οι αποφάσεις που λαμβάνονται για την αποστολή ενός πακέτου στον παραλήπτη. Στην Εικόνα 4.4 απεικονίζεται το αντίστοιχο διάγραμμα καταστάσεων για τον παραλήπτη. - 19 -
Εικόνα 4.3: Διάγραμμα καταστάσεων αποστολέα Εικόνα 4.4: Διάγραμμα καταστάσεων παραλήπτη Για λόγους απλότητας ισχυριστήκαμε ότι τα πακέτα αριθμούνται ακολουθιακά. Η τεχνική αρίθμησης αυτή δεν είναι πρακτική διότι χρησιμοποιεί αυθαίρετα μεγάλους αριθμούς. Το SR που υλοποιείται σε δίκτυα επικοινωνιών αριθμεί τα πακέτα με πεπερασμένο πλήθος διαφορετικών αριθμών. Η αρίθμηση που χρησιμοποιείται είναι γνωστή ως Modulo 2W, όπου W είναι το πλήθος των πακέτων που μπορούν να κρατήσουν οι καταχωρητές του αποστολέα και του παραλήπτη [4]. Με άλλα λόγια είναι το μέγεθος του παραθύρου (Window Size) του SR. Για περισσότερες πληροφορίες σχετικά με την μέθοδο αρίθμησης συμβουλευτείτε το Παράρτημα. - 20 -
4.2 Selective Repeat Multiple NACKs (per Window) Protocol (SR/M1) Το πρωτόκολλο SR/M1 είναι ίδιο με το SR με τη μόνη διαφορά ότι επιτρέπει την αποστολή περισσότερων από μια NACK κατά τη διάρκεια μετάδοσης των πακέτων ενός παραθύρου. Για κάθε κενό που δημιουργείται στη μνήμη του παραλήπτη το SR/M1 επιτρέπει τη μετάδοση ενός NACK. Βέβαια εξαιτίας αυτού κάθε NACK παύει ν αποτελεί επιβεβαίωση των πακέτων που προηγήθηκαν και κάθε πακέτο επιβεβαιώνεται ανεξάρτητα. Στο σχήμα που ακολουθεί (βλ. Εικόνα 4.5) παρουσιάζεται ένα στιγμιότυπο μετάδοσης του SR/M1. Ο αποστολέας μεταδίδει τα πακέτα 1, 2, 3, 4 και 5. Τα πακέτα 2 και 5 λαμβάνονται κανονικά ενώ τα πακέτα 1, 2 και 4 χάνονται κατά τη μετάδοση. Με την παραλαβή του πακέτου 2 ο παραλήπτης αντιλαμβάνεται ότι έλαβε ένα πακέτο εκτός σειράς και στέλνει μια NACK για το πακέτο 1. Ακολούθως λαμβάνει το πακέτο 5 (εκτός σειράς και αυτό) και στέλνει NACK για τα πακέτα 3 και 4. Στο SR/M1 ο αποστολέας έχει το δικαίωμα να στείλει μια NACK για κάθε πακέτο. Επομένως ο μόνος τρόπος ν αντιληφθεί ότι το πακέτο 3 χάθηκε για δεύτερη φορά είναι μέσω TIMEOUT. Εικόνα 4.5: Στιγμιότυπο μετάδοσης SR/M1 Στο σημείο αυτό θα παρουσιάσουμε το μηχανισμό ελέγχου του SR/M1 για το πλήθος των NACKs κάθε πακέτου και ένα στιγμιότυπο της μνήμης του παραλήπτη για να κατανοήσουμε πως λειτουργεί και πως εναλλάσσονται τα γεγονότα. Ο μηχανισμός αυτός αναπτύσσεται στην πλευρά του παραλήπτη και αυτό που κάνει είναι να ελέγχει - 21 -
τα πακέτα που λαμβάνει και μόλις πάρει πακέτο εκτός σειράς να στέλνει NACKs για τα ενδεχόμενα κενά που προηγούνται στη μνήμη του. Εικόνα 4.6: Ακολουθία γεγονότων που εναλλάσσονται στη μνήμη του παραλήπτη Η μνήμη του παραλήπτη διαθέτει τρεις δείκτες (βλ. Εικόνα 4.6). Οι δύο από αυτούς δείχνουν στα όρια τις μνήμης (rseqno και rxedge) και ο τρίτους (rxhigh) δείχνει στο πρώτο κενό (gap) της μνήμης. Το πρώτο πακέτο που λαμβάνει ο παραλήπτης είναι το 2, το οποίο αφού ελέγξει ότι βρίσκεται στα αποδεκτά όρια μνήμης το αποθηκεύει. Στη - 22 -
συνέχεια ελέγχει εκ νέου το πακέτο 2 αν βρίσκεται στα αποδεκτά όρια μεταξύ των rxhigh 2 και rxedge ώστε να διαπιστώσει αν για ενδεχόμενα gaps έχουν σταλεί NACKs. Μετά τους ελέγχους αυτούς ο παραλήπτης γνωρίζει ότι οι θέσεις μνήμης 0 και 1 είναι κενές και στέλνει NACKs για τα πακέτα 0 και 1 (βλ Εικόνα 4.6). Ο δείκτης rxhigh μεταφέρεται στη θέση 3. Το επόμενο πακέτο που λαμβάνει ο παραλήπτης είναι το 5. Μόλις κάνει τους απαραίτητους ελέγχους διαπιστώνει ότι υπάρχει κενό στη μνήμη στους καταχωρητές 3 και 4 και στέλνει τ αντίστοιχα NACKs ενώ μεταφέρει τον rxhigh στη θέση 6. Ακολούθως λαμβάνει το πακέτο 7, που είναι και το τελευταίο πακέτο εντός του παραθύρου του, καθώς το παράθυρο έχει μέγεθος 8 (από 0 έως 7). Μόλις λάβει το 7 στέλνει NACK για το κενό στη θέση 6 και μεταφέρει τον δείκτη rxhigh στη θέση 8. Στη συνέχεια ο παραλήπτης λαμβάνει τα πακέτα 3, 4, 1 και 6 για τα οποία όμως δεν κάνει καμία ενέργεια πέρα από τα να τ αποθηκεύσει και να τα επιβεβαιώσει μιας και έχει στείλει όλα τα απαραίτητα NACKs. Ο παραλήπτης παραδίδει τα πακέτα μόλις λάβει το πακέτο 1 και αδειάζει τα περιεχόμενα της μνήμης του, αναμένοντας νέα πακέτα. Το διάγραμμα καταστάσεων που ακολουθεί περιγράφει την ροή ελέγχου και τις αποφάσεις που λαμβάνονται στον παραλήπτη. Ο επιπλέον μηχανισμός που διαθέτει το SR/M1 και το διαφοροποιεί από το SR υλοποιείται στον παραλήπτη και πιο ειδικά στο σημείο που γίνεται ο έλεγχος των NACKs. Εξαιτίας αυτού μόνο το διάγραμμα καταστάσεων του παραλήπτη διαφοροποιείται. Εικόνα 4.7: Διάγραμμα καταστάσεων παραλήπτη στο SR/M1 2 Ο έλεγχος που γίνεται είναι ο εξής : Για όσο ισχύει ότι rxhigh <= seq < rxedge αν rxhigh!= seq στείλε NACK και αύξησε το rxhigh. - 23 -
4.3 Selective Repeat Multiple NACKs (per Packet) Protocol (SR/M2) Η διαφορά του SR/M2 σε σχέση με το SR/M1 είναι ότι επιτρέπει πολλαπλά NACKs για κάθε πακέτο στη διάρκεια αποστολής ενός παραθύρου. Και εδώ ισχύει ότι κάθε NACK παύει ν αποτελεί επιβεβαίωση των πακέτων που προηγήθηκαν και κάθε πακέτο επιβεβαιώνεται ανεξάρτητα. Ένα στιγμιότυπο μετάδοσης πακέτων μέσω του SR/M2 παρουσιάζεται στο σχήμα που ακολουθεί (βλ. Εικόνα 4.8). Ο αποστολέας μεταδίδει τα πακέτα 1, 2, 3, 4 και 5. Τα πακέτα 2 και 5 λαμβάνονται κανονικά ενώ τα πακέτα 1, 2 και 4 χάνονται κατή τη μετάδοση. Με την παραλαβή του πακέτου 2 ο παραλήπτης αντιλαμβάνεται ότι έλαβε ένα πακέτο εκτός σειράς και στέλνει μια NACK για το πακέτο 1. Ακολούθως λαμβάνει το πακέτο 5 (εκτός σειράς και αυτό) και στέλνει NACK για τα πακέτα 3 και 4. Στο SR/M2 ο παραλήπτης έχει το δικαίωμα να στείλει πολλαπλά NACKs για κάθε πακέτο. Μόλις λάβει το πακέτο 4, αντιλαμβάνεται ότι είναι εκτός σειράς και ξαναστέλνει NACK για το πακέτο 3. Ο μηχανισμός αυτός προσδίδει στο SR/M2 ένα επιπλέον χαρακτηριστικό σε σχέση με το SR/M1. Ο αποστολέας δεν χρειάζεται ν αναμένει τη λήξη του TIMEOUT για ν αντιληφθεί ότι το πακέτο 3 χάθηκε για δεύτερη φορά. Αντιθέτως λαμβάνοντας μια επιπλέον NACK αναμεταδίδει το πακέτο 3 δίχως να περιμένει τη λήξη του TIMEOUT. Εικόνα 4.8: Στιγμιότυπο μετάδοσης SR/M2-24 -
Στο σημείο αυτό θα παρουσιάσουμε το μηχανισμό ελέγχου του SR/M2 για το πλήθος των NACKs κάθε πακέτου και ένα στιγμιότυπο της μνήμης του παραλήπτη για να κατανοήσουμε πως λειτουργεί και πως εναλλάσσονται τα γεγονότα. Ο μηχανισμός αυτός αναπτύσσεται στην πλευρά του παραλήπτη και αυτό που κάνει είναι να ελέγχει τα πακέτα που λαμβάνει και μόλις πάρει πακέτο εκτός σειράς να στέλνει NACKs για τα ενδεχόμενα κενά που προηγούνται στη μνήμη του. Τα NACKs στέλνονται σε γύρους και σε κάθε γύρο στέλνονται με αύξουσα σειρά. Μπορούμε δηλαδή να στείλουμε NACK για n-οστή φορά για το πακέτο k αν έχουμε στείλει n ή περισσότερα NACKs για όλα τα εκκρεμεί πακέτα που προηγούνται. Εικόνα 4.9: Ακολουθία γεγονότων που εναλλάσσονται στη μνήμη του παραλήπτη Η μνήμη του παραλήπτη διαθέτει τρεις δείκτες (βλ. Εικόνα 4.9). Οι δύο από αυτούς δείχνουν στα όρια τις μνήμης (rseqno και rxedge) και ο τρίτους (rxhigh) δείχνει στο πρώτο κενό (gap) της μνήμης. Το πρώτο πακέτο που λαμβάνει ο παραλήπτης είναι το 3, το οποίο αφού ελέγξει ότι βρίσκεται στα αποδεκτά όρια μνήμης το αποθηκεύει. Στη συνέχεια ελέγχει εκ νέου το πακέτο 3, αν βρίσκεται στα αποδεκτά όρια μεταξύ των rxhigh και rxedge ώστε να διαπιστώσει αν για ενδεχόμενα gaps έχουν σταλεί NACKs. Μετά τους ελέγχους αυτούς ο παραλήπτης γνωρίζει ότι οι θέσεις μνήμης 0, 1 και 2 είναι κενές και στέλνει NACKs για τα πακέτα 0, 1 και 2. Ο δείκτης rxhigh μεταφέρεται στη θέση 4. Το επόμενο πακέτο που λαμβάνει ο παραλήπτης είναι το 2. Μόλις κάνει τους απαραίτητους ελέγχους διαπιστώνει ότι υπάρχει κενό στη μνήμη στις θέσεις 0 και 1 και στέλνει τ αντίστοιχα NACKs. Ακολούθως λαμβάνει το πακέτο 1 και στέλνει τρίτο NACK για το πακέτο 0. Ο παραλήπτης παραδίδει τα πακέτα μόλις λάβει το πακέτο 0 και αδειάζει τα περιεχόμενα της μνήμης του, αναμένοντας νέα πακέτα. - 25 -
Όπως και στο SR/M1, ο επιπλέον μηχανισμός ελέγχου του SR/M2 υλοποιείται στον παραλήπτη επομένως μόνο το διάγραμμα καταστάσεων του παραλήπτη διαφοροποιείται. Εικόνα 4.10: Διάγραμμα καταστάσεων παραλήπτη στο SR/M2-26 -
5. MSLL Limited Recovery Services Στο κεφάλαιο αυτό θα παρουσιάσουμε μια νέα οικογένεια πρωτοκόλλων επιλεκτικής επανάληψης περιορισμένης ανάκαμψης (Selective Repeat Limited Recovery, SRLR) που είναι ιδιαίτερα χρήσιμα σε περιβάλλοντα με υψηλή παρουσία λαθών και για εφαρμογές που απαιτούν μικρή καθυστέρηση κατά τη μετάδοση. Τα πρωτόκολλα της κατηγορίας SRLR έχουν κληρονομήσει όλα τα χαρακτηριστικά των πρωτοκόλλων SR και επιπλέον υλοποιούν έναν μηχανισμό ελέγχου του πλήθους των αναμεταδόσεων και παράληψης των πακέτων που αδυνατούν να παραδοθούν μετά από συγκεκριμένο πλήθος αποστολών [9]. Στην οικογένεια SRLR εκτός από το απλό SRLR πρωτόκολλο ανήκουν τα SRLR/M1 και SRLR/M2 τα οποία είναι παρόμοια με τ αντίστοιχα πρωτόκολλα πλήρους ανάκαμψης SR/M1 και SR/M2, με επιπλέον τον μηχανισμό ελέγχου των αναμεταδόσεων. 5.1 Selective Repeat Limited Recovery (SRLR) Το SRLR είναι ένα πρωτόκολλο το οποίο είναι βασισμένο στο SR με την διαφορά ότι παύει ν ανήκει στην κατηγορία των πρωτοκόλλων πλήρους ανάκαμψης δεδομένων (full data recovery) και ανήκει στην κατηγορία των πρωτοκόλλων περιορισμένης ανάκαμψης (limited data recovery). Αυτό σημαίνει ότι το SRLR είναι ακατάλληλο για εφαρμογές που απαιτούν απόλυτη αξιοπιστία κατά τη μετάδοση διότι μόλις ο αριθμός των αναμεταδόσεων (retransmissions) υπερβεί ένα άνω όριο (threshold) τότε το πακέτο καταστρέφεται και το SRLR προχωράει στην μετάδοση του επόμενου κατά σειρά πακέτου. Το άνω όριο των αναμεταδόσεων αποτελεί σχεδιαστική παράμετρο του SRLR. 5.1.1 Λειτουργία SRLR Το σημείο που απαιτεί ιδιαίτερη προσοχή στο SRLR είναι αυτό του συγχρονισμού ανάμεσα στον αποστολέα και τον παραλήπτη. Αν ο αποστολέας διαπιστώσει ότι ένα πακέτο αδυνατεί να μεταδοθεί και έχει ξεπεράσει το άνω όριο τότε θα το αγνοήσει και θα προχωρήσει στην μετάδοση του επόμενου πακέτου. Όμως την ενέργεια του αυτή θα πρέπει να τη γνωστοποιήσει στον παραλήπτη για να συνεχιστεί η ορθή λειτουργία του πρωτοκόλλου και να μπορέσει να τερματίσει μόλις ολοκληρωθεί η μετάδοση. Είναι πιθανό ο αποστολέας να αποφασίσει μετά από ένα πλήθος αναμεταδόσεων να αγνοήσει ένα πακέτο και να προχωρήσει στο επόμενο. Μπορεί όμως το πακέτο αυτό ο παραλήπτης να το αναμένει ώστε να παραδώσει αυτό και όσα το ακολουθούν και έχουν αποθηκευτεί στη μνήμη του. Αν ο παραλήπτης δε λάβει ποτέ αυτό το πακέτο τότε θα μπει σε μια κατάσταση από την οποία δε θα μπορέσει να βγει ποτέ και το SRLR - 27 -
δε θα τερματίσει τη λειτουργία του. Για το λόγο αυτό είναι απαραίτητο να ενημερωθεί ο παραλήπτης ότι το συγκεκριμένο πακέτο ο αποστολέας δε θα το στείλει ποτέ και να σταματήσει να το αναμένει αλλά να αναμένει το επόμενο πακέτο που θα συμπληρώσει κάποιο ενδεχόμενο κενό στη μνήμη του. Για να μπορέσουμε να καταλάβουμε τη λειτουργία του SRLR παραθέτουμε ένα παράδειγμα. Έστω ότι ο αποστολέας με μέγεθος παραθύρου τρία ξεκινάει να μεταδίδει πακέτα προς τον παραλήπτη (βλ. Εικόνα 5.1). Για κάθε πακέτο που στέλνει διατηρεί ένα μετρητή που κρατάει το πλήθος των αναμεταδόσεων του κάθε πακέτου. Την πρώτη φορά θέτει στον μετρητή την τιμή μηδέν καθώς δεν πρόκειται για αναμετάδοση αλλά για την αρχική μετάδοση ενώ κάθε φορά που αναμεταδίδει το πακέτο είτε λόγω μιας NACK είτε λόγω TIMEOUT αυξάνει το μετρητή. Για να διατηρήσουμε το σχήμα ευανάγνωστο αναγράφονται οι τιμές του μετρητή μόνο για το πακέτο με αριθμό 1. Αρχικά ο αποστολέας στέλνει τα πακέτα 1, 2 και 3. Το πακέτο με αριθμό 1 χάνεται ενώ τα πακέτα 2 και 3 φτάνουν κανονικά στον παραλήπτη. Το SRLR λειτουργεί όπως και το SR. Αποθηκεύει τα πακέτα που λαμβάνει εκτός σειράς και στέλνει μια NACK στον αποστολέα να τον πληροφορήσει ότι το πακέτο 1 χάθηκε. Ο αποστολέας με τη σειρά του λαμβάνει το NACK και πριν τη λήξη του TIMEOUT φτιάχνει ένα αντίγραφο του πακέτου 1, αυξάνει το μετρητή των αναμεταδόσεων για το πακέτο 1 και το στέλνει ξανά στον παραλήπτη. Επίσης αναμεταδίδει τα πακέτα 2 και 3 καθώς λήγει το TIMEOUT. Εικόνα 5.1: Στιγμιότυπο μετάδοσης SRLR, μέγιστο πλήθος αναμεταδόσεων 3 Το πακέτο 1 χάνεται για τρίτη φορά και ο αποστολέας μετά τη λήξη του TIMEOUT επαναλαμβάνει την ίδια διαδικασία τόσο για το πακέτο 1 όσο και για τα υπόλοιπα. Το πλήθος των αναμεταδόσεων του πακέτου 1 είναι τρία ενώ το άνω όριο για να αγνοήσει ο αποστολέας το πακέτο και να προχωρήσει στη μετάδοση του επόμενου είναι τέσσερα. Στην τρίτη αναμετάδοση και στην τέταρτη συνολικά, μαζί με την αρχική - 28 -
μετάδοση, το πακέτο λαμβάνεται σωστά από τον παραλήπτη, συμπληρώνεται το κενό στη μνήμη του και τα πακέτα 1, 2 και 3 παραδίδονται στο επόμενο επίπεδο. Στη συνέχεια ο αποστολέας επιβεβαιώνει τη σωστή λήψη των πακέτων με cumulative ACK, αδειάζει τους καταχωρητές και αναμένει την παραλαβή νέων πακέτων. Ο μηχανισμός ελέγχου των αναμεταδόσεων υλοποιείται στον αποστολέα και πιο συγκεκριμένα εκεί που γίνεται ο έλεγχος των TIMEOUTS και των RECEIVE NACKs. Επομένως για το πρωτόκολλο μερικής ανάκαμψής SRLR μόνο ο αποστολέας διαφοροποιείται σε σχέση με το απλό SR. Ο παραλήπτης μένει ως έχει (βλ. Εικόνα 4.4). Εικόνα 5.2: Διάγραμμα καταστάσεων αποστολέα στο SRLR 5.1.2 SRLR Deadlock Στο σημείο αυτό και προτού παρουσιάσουμε τον τρόπο με τον οποίο ο αποστολέας ενημερώνει τον παραλήπτη ότι αδυνατεί να μεταδώσει ένα πακέτο, το αγνοεί και επιχειρεί τη μετάδοση του επόμενου, θα παρουσιάσουμε ένα σενάριο το οποίο οδηγεί σε αδιέξοδο και κάνει το SRLR να μην τερματίζει ποτέ (βλ. Εικόνα 5.3). Θα πρέπει να - 29 -
τονίσουμε ότι τέτοιες καταστάσεις είναι ανεπιθύμητες και πρέπει να αποφεύγονται. Το μηχανισμό αποφυγής τέτοιο καταστάσεων θα μελετήσουμε αργότερα. Αρχικά ο αποστολέας μεταδίδει τα πακέτα 1, 2 και 3. Το πακέτο 1 μεταδίδεται κανονικά, φτάνει στον παραλήπτη και παραδίδεται στον επόμενο επίπεδο. Το πακέτο 2 χάνεται ενώ το πακέτο 3 λαμβάνεται από τον παραλήπτη και αποθηκεύεται στον καταχωρητή καθώς είναι εκτός σειράς. Με τη σειρά το ο παραλήπτης στέλνει μια NACK ενημερώνοντας τον αποστολέα ότι το πακέτο 2 δεν το έλαβε σωστά. Ο αποστολέας μόλις λάβει τη NACK φτιάχνει ένα αντίγραφο του πακέτου 2, αυξάνει τον μετρητή αναμεταδόσεων και ξαναστέλνει τα πακέτα 2 και 3. Το πακέτο 2 χάνεται για τρίτη φόρα και ακολουθείται η ίδια διαδικασία με τη διαφορά ότι δεν στέλνεται NACK αλλά η απώλεια γίνεται αντιληπτή μέσω TIMEOUT. Εικόνα 5.3: SRLR Deadlock Για το πακέτο 2 αυξάνεται ο μετρητής αναμεταδόσεων από δύο σε τρία και στον έλεγχο που γίνεται διαπιστώνεται ότι έχει υπερβεί το άνω όριο που έχουμε θέσει και το οποίο είναι ίσο με δυο. Επομένως ο αποστολέας πρέπει να αγνοήσει το πακέτο 2 και να προχωρήσει στη μετάδοση του πακέτου 4. Η πληροφορία αυτή όμως πρέπει με κάθε τρόπο να γίνει γνωστή και στον παραλήπτη ώστε να συγχρονιστούν και το επόμενο πακέτο που να αναμένει να είναι το 4. Αν ο παραλήπτης δεν πληροφορηθεί ότι το πακέτο 2 αγνοήθηκε από τον αποστολέα και δε θα μεταδοθεί ποτέ τότε ο παραλήπτης θα μπει σε μια κατάσταση στην οποία θα αναμένει για πάντα το πακέτο 2 και θα καταστρέφει τα υπόλοιπα πακέτα που λαμβάνει. - 30 -
5.1.3 Συγχρονισμός Στο παραπάνω σενάριο έχει χαθεί ο συγχρονισμός ανάμεσα στον αποστολέα και τον παραλήπτη. Αυτό έχει σαν αποτέλεσμα το SRLR να οδηγείται σε αδιέξοδο και να τερματίζει τη λειτουργία του. Αυτό συμβαίνει διότι ο αποστολέας μόλις αγνοήσει το πακέτο 2 προχωράει στην αποστολή του 3 που είναι γι αυτόν το πρώτο πακέτο που εκκρεμεί για επιβεβαίωση. Αντιθέτως για τον παραλήπτη το πακέτο που εκκρεμεί να λάβει ώστε να παραδώσει όλα τα πακέτα στο επόμενο επίπεδο και να αδειάσει τη μνήμη του είναι το πακέτο 2 το οποίο όμως θα αναμένει για πάντα. Αν μπορούσε με κάποιο τρόπο να πληροφορηθεί την αναπροσαρμογή του παραθύρου τότε θα κατάφερνε να συγχρονιστεί με τον αποστολέα και να συνεχίσει να λειτουργεί κανονικά. Ένας τρόπος να το επιτύχουμε είναι να εισάγουμε επιπλέον πληροφορία στο πακέτο που μεταδίδεται (βλ. Εικόνα 5.4) ώστε να επιτυγχάνεται ο συγχρονισμός αποστολέαπαραλήπτη. Αυτό που κάναμε ήταν να προσθέσουμε ένα ακόμα πεδίο στην επικεφαλίδα του πακέτου, στο οποίο θ αναγράφεται το κάτω όριο του παραθύρου του αποστολέα. Η πληροφορία αυτή για λόγους συμμετρίας και ομοιογένειας προστέθηκε και στους τρεις τύπους πακέτων. Εικόνα 5.4: MSLL επικεφαλίδα πακέτου Το πεδίο αυτό κρατάει τον αριθμό του πρώτου πακέτου που εκκρεμεί στον αποστολέα να επιβεβαιωθεί. Και οι τρεις τύποι πακέτων (Data, ACK, NACK) μεταφέρουν την πληροφορία αυτή, επομένως ο παραλήπτης σε κάθε πακέτο που λαμβάνει έχει τη δυνατότητα να συγχρονιστεί με τον αποστολέα ώστε να μη μπει ποτέ στην αδιέξοδη κατάσταση που προαναφέραμε. Ο παραλήπτης για κάθε πακέτο που λαμβάνει ελέγχει τα όρια της μνήμης του ώστε να είναι συγχρονισμένος με τον αποστολέα. Το SRLR διατηρεί ένα σύνολο από τέσσερις μεταβλητής για τον έλεγχο των ορίων της μνήμης και αρκετές ακόμα για την ορθή λειτουργία του πρωτοκόλλου. Στον Πίνακα 5.1 που ακολουθεί παραθέτουμε τις πιο σημαντικές. - 31 -
Μεταβλητές n_ oldseqno_ sseqno_ rseqno_ rxedge_ win_lim_ retransmit_array retransmit_threshold Χρήση Μεταβλητών Ορίζει το μέγεθος του παραθύρου Δείκτης στο πρώτο ανεπιβεβαίωτο πακέτο του αποστολέα Δείκτης στο επόμενο (ακολουθιακά) προς αποστολή πακέτο Δείκτης στο επόμενο (ακολουθιακά) προς παραλαβή πακέτο Δείκτης στο άνω όριο της μνήμης του παραλήπτη Δείκτης στο πρώτο ανεπιβεβαίωτο πακέτο του αποστολέα Πίνακας που αποθηκεύει το πλήθος των αναμεταδόσεων Άνω όριο αναμεταδόσεων για κάθε πακέτο Πίνακας 5. 1: Μεταβλητές ελέγχου ορίων μνήμης αποστολέα-παραλήπτη Στιγμιότυπο της μνήμης του παραλήπτη φαίνεται στο σχήμα που ακολουθεί (βλ. Εικόνα 5.5). Ο παραλήπτης έχει λάβει με επιτυχία τα πακέτα 1, 2, 4, 6, 8 και 9 δε μπορεί όμως να παραδώσει τα πακέτα 1 και 2 καθώς λείπει το πακέτο 0. Όσα πακέτα έχει λάβει μέχρι αυτή τη χρονική στιγμή των πληροφορούν ότι το πρώτο ανεπιβεβαίωτο πακέτο στον αποστολέα είναι το πακέτο με αριθμό 0 (win_lim_ = 0). Την επομένη χρονική στιγμή λαμβάνει πακέτο του οποίου το πεδίο Window Limit έχει αλλάξει και δείχνει ότι το πρώτο ανεπιβεβαίωτο πακέτο στον αποστολέα έχει γίνει το 3. Στο σημείο αυτό ο παραλήπτης θα πρέπει να συγχρονιστεί με τον αποστολέα. Επομένως αυτό που κάνει είναι να αγνοήσει το κενό που έχει δημιουργηθεί στη μνήμη, να παραδώσει τα πακέτα 1 και 2 και να μετακινήσει του δείκτες rseqno_ και rxedge_ τρεις θέσει δεξιά μέχρι το επόμενο κενό. Εικόνα 5.5: Στιγμιότυπο μνήμης παραλήπτη - 32 -
5.2 Selective Repeat Limited Recovery Multiple NACKs (per Window) Protocol (SRLR/Μ1) Το πρωτόκολλο SRLR/M1 είναι παρόμοιο με το SR/M1 με τη διαφορά ότι υλοποιεί επιπλέον έναν μηχανισμό ελέγχου του πλήθους των αναμεταδόσεων και παράληψης των πακέτων που αδυνατούν να παραδοθούν μετά από συγκεκριμένο πλήθος αποστολών. Το νέο πρωτόκολλο διαθέτει όλα τα χαρακτηριστικά του προκατόχου του συν το γεγονός ότι έχει αποκτήσει μεγαλύτερη ευελιξία σε περιβάλλοντα με ισχυρή παρουσία λαθών. Την ιδιότητα αυτή το SRLR/M1 την απέκτησε καθώς γνωρίζει πως πρέπει ν αντιδράσει σε καταστάσεις στις οποίες ο υψηλός ρυθμός απώλειας πακέτων δεν του επιτρέπουν να παραδώσει πακέτα συγκεκριμένων μεταδόσεων. Στο παρακάτω σχήμα (βλ. Εικόνα 5.6) παρουσιάζουμε ένα στιγμιότυπο μετάδοσης του SRLR/M1. Έχουμε τη δυνατότητα να παρατηρήσουμε τόσο τη λειτουργία του μηχανισμού ελέγχου των αναμεταδόσεων όσο και το γεγονός ότι για κάθε κενό στη μνήμη του παραλήπτη στέλνεται ένα NACK, χαρακτηριστικό που υιοθετήθηκε από το SR/M1. Εικόνα 5.6: Στιγμιότυπο μετάδοσης SRLR/M1 Το διάγραμμα καταστάσεων του αποστολέα για το SRLR/M1 είναι ίδιο με το διάγραμμα καταστάσεων του SRLR (βλ. Εικόνα 5.2) ενώ του παραλήπτη με το διάγραμμα καταστάσεων του SR/M1 (βλ. Εικόνα 4.7). - 33 -
5.3 Selective Repeat Limited Recovery Multiple NACKs (per Packet) Protocol (SRLR/M2) Η διαφορά του πρωτοκόλλου SRLR/M2 με το SRLR/M1 είναι ίδια με τη διαφορά του SR/M1 με το SR/M2. Το μόνο που αλλάζει είναι το πλήθος των NACKs που στέλνονται για κάθε πακέτο. Το στιγμιότυπο μετάδοσης του SRLR/M2 συνοψίζει όλα τα χαρακτηριστικά του πρωτοκόλλου. Εικόνα 5.7: Στιγμιότυπο μετάδοσης SRLR/M2 Παρατηρούμε ότι ο παραλήπτης στέλνει πολλαπλά NACKs για κάθε πακέτο, ενώ ο μηχανισμός ελέγχου των αναμεταδόσεων δεν επιτρέπει στα πακέτα που αδυνατούν να παραδοθούν μετά από ένα ορισμένο πλήθος αποστολών να μεταδοθούν ξανά και τ απορρίπτει. Το διάγραμμα καταστάσεων του αποστολέα για το SRLR/M1 είναι ίδιο με το διάγραμμα καταστάσεων του SRLR (βλ. Εικόνα 5.2) ενώ του παραλήπτη με το διάγραμμα καταστάσεων του SR/M2 (βλ. Εικόνα 4.10). - 34 -
6. Εργαλείο Προσομοίωσης Το πιο δημοφιλές εργαλείο προσομοίωσης είναι κατά πολλούς ο Network Simulator ή αλλιώς ns-2. Ο ns-2 είναι open source εργαλείο και τρέχει κυρίως σε περιβάλλον Linux. Σκοπός του είναι να παρέχει ένα καλό, και όσο το δυνατόν πιο ακριβές, περιβάλλον προσομοίωσης για έρευνα πάνω σε ενσύρματα, και ασύρματα δίκτυα ενώ είναι σχεδιασμένο να μελετά και θέματα απόδοσης και επίδοσης πρωτοκόλλων του Internet. Πρέπει να τονίσουμε, ότι o ns-2, όπως και κάθε προσομοιωτής άλλωστε, ενδέχεται να παράγει αποτελέσματα που να απέχουν από τα πραγματικά, αλλά το λάθος στατιστικά είναι μικρό και ελεγχόμενο. Ενώ υπάρχει ιδιαίτερη αποδοχή στο ns-2, δεν είναι ένα ολοκληρωμένο προϊόν, αλλά το αποτέλεσμα μιας συνεχούς προσπάθειας έρευνας και ανάπτυξης. Ειδικότερα, λάθη στο λογισμικό του προγράμματος ακόμα ανακαλύπτονται και διορθώνονται. Οι χρήστες του ns-2 είναι αρμόδιοι για να επαληθεύσουν ότι οι προσομοιώσεις τους είναι έγκυρες και αξιόπιστες. Για να βοηθηθεί ο χρήστης σε αυτό το πρόβλημα καταβάλλεται μεγάλη προσπάθεια με τη επέκταση και την αυτοματοποίηση των προγραμμάτων ελέγχου της αξιοπιστίας των παραγόμενων αποτελεσμάτων. Τέλος οι χρήστες είναι αρμόδιοι για να επαληθεύσουν ότι οι προσομοιώσεις τους δεν ακυρώνονται επειδή το πρότυπο που εφαρμόζεται στον προσομοιωτή δεν είναι το πρότυπο που ανέμεναν. 6.1 Προσομοιωτής Ο ns-2 είναι ένας αντικειμενοστραφής προσομοιωτής (Object Oriented Simulator), ο οποίος χρησιμοποιεί στο προσκήνιο την γλώσσα προγραμματισμού OTcl (Object Tool Command Language) και στο παρασκήνιο την C++. Αν και θα μπορούσαμε να υλοποιήσουμε τα πάντα σε όποια γλώσσα προγραμματισμού θέλουμε από τις δύο, καλό είναι την OTcl να τη χρησιμοποιούμε κυρίως για να ρυθμίζουμε τη δικτυακή τοπολογία μας και τις διάφορες παραμέτρους της, ενώ τη C++ για να υλοποιούμε πολύπλοκους και απαιτητικούς αλγόριθμους δρομολόγησης, ελέγχου λαθών, πρωτοκόλλων εφαρμογών, δικτύου κλπ. Αποφασίσαμε να χρησιμοποιήσουμε τον ns-2 για την έρευνα μας διότι ο πηγαίος κώδικας είναι ελεύθερα διαθέσιμος σε όλους, αν χρειαστεί μπορεί να τροποποιηθεί και να παραμετροποιηθεί ανάλογα με τις ανάγκες του καθενός. Είναι δυνατόν να προστεθεί οποιαδήποτε λειτουργία, όπως μηχανισμοί ανάκαμψης σφαλμάτων επιπέδου γραμμής (link layer error recovery mechanisms), μοντέλα σφαλμάτων (error models), εφαρμογές, πρωτόκολλα επιπέδου γραμμής κλπ. - 35 -
6.2 Προσομοίωση vs. Υλοποίηση Για οποιαδήποτε προσομοίωση δικτύου αυτόματα γεννιούνται ερωτήσεις όσον αφορά την ακρίβεια του μοντέλου και την αξιοπιστία των αποτελεσμάτων. Για λόγους απόδοσης αποφεύγεται η προσομοίωση ενός συστήματος στην πλήρη του διάσταση, κάποια χαρακτηριστικά παραλείπονται ενώ κάποια άλλα μοντελοποιούνται προσεγγιστικά. Για τη μελέτη μας αποφύγαμε να τροποποιήσουμε την τρέχουσα λειτουργία του ns-2 και προσπαθήσαμε να προσεγγίσουμε όσο το δυνατόν περισσότερο τη δική μας επέκταση (extension) στην πραγματική λειτουργία. Κάποια χαρακτηριστικά όπως συμφόρηση (congestion) και δυναμική δρομολόγηση (dynamic routing) χρησιμοποιήθηκαν χωρίς οποιαδήποτε τροποποίηση. Παρόλες τις παραδοχές που έγιναν και τους περιορισμούς που θέτει μια προσομοίωση, πιστεύεται ότι τα αποτελέσματα προσεγγίζουν με μεγάλη ακρίβεια την πραγματικότητα. Ο βασικός λόγος που επιλέξαμε την προσομοίωση από την υλοποίηση ενός πραγματικού συστήματος ήταν ότι δεν θέλαμε να θέσουμε κάποιο όριο ως προς την έκταση και το εύρος των πειραμάτων που θα μελετούσαμε. Προσομοιώσαμε μια αρχιτεκτονική πολλαπλών υπηρεσιών επιπέδου γραμμής πάνω από την ίδια φυσική ζεύξη με πλήθος πρωτοκόλλων σε διάφορες τοπολογίες και με διαφορετικά μοντέλα σφαλμάτων. Κάτι τέτοιο θα ήταν απαγορευτικό σε ένα πραγματικό σύστημα καθώς προηγούμενες μελέτες έχουν δείξει ότι τόσο μεγάλης έκτασης πειράματα είναι αδύνατον να γίνουν σε πραγματικά συστήματα. Τέτοιου είδους περιορισμοί δεν θέτονται σε περιβάλλοντα προσομοίωσης. - 36 -