ΠΡΟΛΟΓΟΣ. Θέµα: Προσοµοίωση MAC πρωτοκόλλων για LAN broadcast-and-select οπτικά δίκτυα τεχνολογίας WDM

Σχετικά έγγραφα
Πρωτόκολλα Ελέγχου προσπέλασης μέσου

Πρωτόκολλα τυχαίας προσπέλασης

Κεφάλαιο 5: Τοπικά ίκτυα

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΙΑΛΕΞΗ 6 Η. ίκτυα Υπολογιστών & Επικοινωνία. ιδάσκουσα: : ρ. Παντάνο Ρόκου Φράνκα. ίκτυα Υπολογιστών και Επικοινωνία. ιάλεξη 6: H Πολύπλεξη

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο

Λύση: Λύση: Λύση: Λύση:

Περιεχόμενα. Πρόλογος 9. Ευχαριστίες 15

Υπόστρωμα Ελέγχου Πρόσβασης Μέσου. Medium Access Control Sub-layer.

Κεφάλαιο 3 Πολυπλεξία

Ενότητα 3. Στρώµα Ζεύξης: Αρχές Λειτουργίας & Το Υπόδειγµα του Ethernet

Γενικές Αρχές. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

2 η Σειρά Ασκήσεων Data Link Layer

7.5 Πρωτόκολλο IP. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 1 ο ΚΕΦΑΛΑΙΟ

Φροντιστήριο στο Mac Layer Καραγκούνης Δημήτρης

7.3 Πρωτόκολλο TCP. 1. Το TCP πρωτόκολλο παρέχει υπηρεσίες προσανατολισµένες σε σύνδεση. Σ Λ

ΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ Ασκήσεις για το φυσικό στρώμα. λ από τον ρυθμό μετάδοσής της. Υποθέτοντας ότι ο κόμβος A

ΔΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ Ασκήσεις για το φυσικό στρώμα

Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που

Μάθηµα 9 ο : Συστήµατα πολλαπλής πρόσβασης

Υπόστρωµα Ελέγχου Πρόσβασης Μέσου. Medium Access Control Sub-layer.

A1. Φυσικό επίπεδο 1. Αντιπαραθέσετε (κάνετε τη σύγκριση) με 2-3 προτάσεις την στατιστική πολυπλεξία και την πολυπλεξία με διαίρεση χρόνου.

J. Glenn Brookshear. Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley

Σχήμα 1: TCP αποστολέας με παράθυρο αποστολέα = 1

ίκτυα - Internet Μάθηµα 5ο Ενότητες Μαθήµατος Παρασκευή 01 ΕΚ 2006 ιευθυνσιοδότηση στα Τοπικά ίκτυα (LAN).

Κινητές επικοινωνίες. Κεφάλαιο 6 Τεχνικές πoλυπλεξίας - CDMA

Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η

Ερώτηση 1 η μεταγωγής κυκλώματος? : Ποια είναι τα κύρια χαρακτηριστικά της. Ερώτηση 2 η : Ποια είναι τα κύρια χαρακτηριστικά της μεταγωγής μηνύματος?

ΔΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ Ασκήσεις στα Τοπικά Δίκτυα

Εγγυημένη ποιότητα υπηρεσίας

7.9 ροµολόγηση. Ερωτήσεις

ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη 16 Νοεμβρίου 2013

ΤΕΙ Κρήτης, Παράρτηµα Χανίων

Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η. Αρχές Δικτύων Επικοινωνιών

ΗΥ335 - Δίκτυα Υπολογιστών Χειμερινό εξάμηνο Φροντιστήριο Ασκήσεις στο TCP

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή σε Έννοιες των Δικτύων Υπολογιστών Κεφάλαιο 2 Αξιοπιστία Κεφάλαιο 3 Αλγόριθμοι Πολλαπλής Πρόσβασης...

Προχωρημένα Θέματα Προγραμματισμού Δικτύων

Πρωτόκολλα επανεκποµπής

Περιεχόµενα. Επικοινωνίες εδοµένων: Τρόποι Μετάδοσης και Πρωτόκολλα. Εισαγωγή

Νέες Επικοινωνιακές Τεχνολογίες

HY-335 : Δίκτυα Υπολογιστών

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET

Εργαστήριο ίκτυα Η/Υ ΙΙΙ

Τρίτη Σειρά Ασκήσεων ΑΣΚΗΣΗ 1 ΑΣΚΗΣΗ 1 ΛΥΣΗ ΑΣΚΗΣΗ 2

Πανεπιστήµιο Θεσσαλίας

ΚΕΦΑΛΑΙΟ 1: Τα είδη των Δικτύων Εισαγωγή

Εργαστήριο 9: Άλλες Λειτουργίες στα Δίκτυα Κινητών Επικοινωνιών

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

Επαναληπτικές Ασκήσεις Μαθήματος

Πολυπλεξία. Creative Commons License 3.0 Share-Alike

Πρωτόκολλα Διαδικτύου Μέρος 2ο. Επικοινωνίες Δεδομένων Μάθημα 3 ο

Ορισµός. (neighboring) καταστάσεων. ηλαδή στην περίπτωση αλυσίδας Markov. 1.2 ιαµόρφωση µοντέλου

ιαδίκτυα & Ενδοδίκτυα Η/Υ

KΕΦΑΛΑΙΟ 5 ΨΗΦΙΑΚΕΣ ΥΠΟΓΡΑΦΕΣ

7.6 ιευθυνσιοδότηση. Ερωτήσεις

Πολύπλεξη μήκους κύματος Wavelength Division Multiplexing

Δίκτυα Τηλεπικοινωνιών. και Μετάδοσης

Συνοπτική Μεθοδολογία Ασκήσεων Κεφαλαίου 7. Ασκήσεις στο IP Fragmentation

Μάθημα 4: Πρότυπα, Πρωτόκολλα & Υπηρεσίες

ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ. Παράδοση Ασκήσεων Κεφάλαιο 2 Ασκήσεις 3,6,8,9,15,22,24,26. Γεωργόπουλος Άλκης Α.Μ.: 39 Κοντογιώργης Αναστάσιος A.M.

Πρωτόκολλα Διαδικτύου

Δίκτυα Υπολογιστών I

Κινητές Επικοινωνίες & Τηλεπικοινωνιακά Δίκτυα

Κεφάλαιο 7.3. Πρωτόκολλο TCP

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΣΤΑ ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ Γ Τάξη Ε.Π.Α.Λ.

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

ιαδίκτυα & Ενδοδίκτυα Η/Υ

Άσκηση 1. (σημειώστε πως 1KB = 2 10 bytes, 1Mbps = 10 6 bits/sec).

ΠΑΡΑΛΛΗΛΗ ΕΠΕΞΕΡΓΑΣΙΑ

ιάθεση ασύρµατων πόρων

Δίκτυα Υπολογιστών Εργαστήρια

Ethernet Ethernet ΙΕΕΕ CSMA/CD

Τμήμα Μηχανικών Η/Υ και Πληροφορικής

Διάρθρωση. Δίκτυα Υπολογιστών I Δίκτυα άμεσου συνδέσμου: Μέρος Α. Διάρθρωση. Δίκτυα άμεσου συνδέσμου και μοντέλο OSI (1/2) Ευάγγελος Παπαπέτρου

Κεφάλαιο 6: Προσομοίωση ενός συστήματος αναμονής

1 η ΣΕΙΡΑ ΑΣΚΗΣΕΩΝ. / 2. Οι όροι Eb. και Ec

(Light Emitting Diodes)

Είναι η διαδικασία εύρεσης της διαδρομής που πρέπει να ακολουθήσει ένα πακέτο για να φτάσει στον προορισμό του. Η διαδικασία αυτή δεν είναι πάντα

1η Οµάδα Ασκήσεων. Τµήµα επεξεργασίας σήµατος του αναγεννητή

1η Οµάδα Ασκήσεων. Κόµβος Ν L 1 L 2 L 3. ηλεκτρονικής επεξεργασίας σήµατος km L N L N+1

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Παράλληλη Επεξεργασία Κεφάλαιο 7 ο Αρχιτεκτονική Συστημάτων Κατανεμημένης Μνήμης

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

Περίληψη. Ethernet Δίκτυα Δακτυλίου, (Token Ring) Άλλα Δίκτυα Σύνδεση Τοπικών Δικτύων.

... Αν ν = 16 εγκαταλείπει τις προσπάθειες μετάδοσης του πακέτου. Τοπολογία Διαύλου (BUS).

3. Προσομοίωση ενός Συστήματος Αναμονής.

Improving the performance of TCP in the case of packet reordering. Στρατάκη Μαρία

Φύλλο Κατανόησης 1.6

Διάρθρωση. Δίκτυα Υπολογιστών I Δίκτυα άμεσου συνδέσμου: Μέρος Α. Διάρθρωση. Δίκτυα άμεσου συνδέσμου και μοντέλο OSI (1/2) Ευάγγελος Παπαπέτρου

ΟΜΟΣΠΟΝ ΙΑ ΕΚΠΑΙ ΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑ ΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2012 ΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ / ΕΙ ΙΚΟΤΗΤΑΣ

Εργαστήριο Λειτουργικών Συστημάτων - Αλγόριθμοι Χρονοπρογραμματισμού. Εργαστηριακή Άσκηση

ΣΥΣΤΗΜΑΤΑ ΑΝΑΜΟΝΗΣ Queuing Systems Άσκηση Προσομοίωσης Στατιστικές Εξόδου Ουράς Μ/Μ/1 - Θεώρημα Burke Ανοικτά Δίκτυα Ουρών Μ/Μ/1 - Θεώρημα Jackson

Δροµολόγηση (Routing)

ιεργασίες και Επεξεργαστές στα Κατανεµηµένων Συστηµάτων

Τρίτη Πρόοδος [110 μονάδες] Απαντήσεις

Τηλεπικοινωνιακά Ψηφιακά Δίκτυα Ενότητα 10: Απελευθέρωση Τηλεπικοινωνιακής Αγοράς και Τηλεπικοινωνιακές Πολιτικές

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 7ο ΚΕΦΑΛΑΙΟ

7.7 Πρωτόκολλο ARP. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

Πρωτόκολλα Διαδικτύου

Transcript:

ΠΡΟΛΟΓΟΣ Θέµα: Προσοµοίωση MAC πρωτοκόλλων για LAN broadcast-and-select οπτικά δίκτυα τεχνολογίας WDM Επιβλέπων: Νικοπολιτίδης Πέτρος, Παπάζογλου Χρυσούλα, Σαρηγιαννίδης Παναγιώτης Χρόνος εκπόνησης εργασίας: 04/2006 01/2007 Η εργασία έχει σαν θέµα την προσοµοίωση ενός MAC πρωτοκόλλου επικοινωνίας για LAN broadcast-and-select δίκτυα τεχνολογίας WDM. Στόχος της εργασίας είναι αρχικά να δώσει στον αναγνώστη τις βασικές γνώσεις για τα οπτικά δίκτυα τεχνολογίας WDM και τα πρωτόκολλα επικοινωνίας που χρησιµοποιούνται σε αυτά και στη συνέχεια να δώσει µια λεπτοµερή ανάλυση του πρωτοκόλλου DAS και την προσοµοίωση του στη γλώσσα JAVA. Η εργασία µπορεί να χρησιµοποιηθεί από οποιονδήποτε ενδιαφέρεται να προσοµοιώσει ένα πρωτόκολλο της ίδιας ή και διαφορετικής µορφής καθώς ο κώδικας αποτελεί µια πολύ καλή βάση για αυτή τη δουλειά. Στο πρώτο κεφάλαιο της εργασίας περιγράφεται αναλυτικά η τεχνική WDM και τα χαρακτηριστικά των δικτύων που χρησιµοποιούν αυτήν την τεχνολογία καθώς και οι κατηγορίες των πρωτοκόλλων που χρησιµοποιούνται από αυτά τα δίκτυα, παρουσιάζοντας ένα αντιπροσωπευτικό πρωτόκολλο από κάθε κατηγορία. Στο δεύτερο κεφάλαιο παρουσιάζεται αναλυτικά το πρωτόκολλο DAS και στη συνέχεια περιγράφεται και αναλύεται ο κώδικας της προσοµοίωσης. Παρουσιάζεται η µορφή που πρέπει να έχει το κείµενο των παραµέτρων και τέλος παρατίθενται παραδείγµατα εκτέλεσης του προσοµοιωτή καθώς και ο πηγαίος κώδικας σε JAVA. Θα ήθελα να εκφράσω τις ευχαριστίες µου στον επιβλέποντα καθηγητή κ. Νικοπολιτίδη Πέτρο και τους βοηθούς του κ. Παπάζογλου Χρυσούλα και κ. Σαρηγιαννίδη Παναγιώτη για την πολύτιµη βοήθεια τους καθόλη την διάρκεια εκπόνησης της εργασίας. Απρίλιος 2007 Σουγλές Στέργιος 1

2

ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ 1: ΕΙΣΑΓΩΓΗ 1.1. Γενικά...5 1.2. WDM δίκτυα bradcast-and-select...7 1.3. Πρωτόκολλα µε προανάθεση...14 1.3.1. Πρωτόκολλα σταθερής ανάθεσης...16 1.3.2. Πρωτόκολλα τυχαίας προσπέλασης...19 1.4. Πρωτόκολλα µε συντονισµό πριν από τη µετάδοση...21 1.4.1. Πρωτόκολλα µε συγκρούσεις αποδέκτη...21 1.4.2. Πρωτόκολλα χωρίς συγκρούσεις αποδέκτη...25 ΚΕΦΑΛΑΙΟ 2: DAS & HTDM 2.1. Γενικά...28 2.2. DAS Περιγραφή & Ανάλυση...30 2.3. Προσοµοίωση...36 2.3.1. Ανάλυση Κώδικα...36 2.3.1.1. Class Station...36 2.3.1.2. Class Medium...39 2.3.1.3. Class RSATable...42 2.3.1.4. Class Packet...44 2.3.1.5. Class Analyzer...46 2.3.1.6. Class PacketGen...46 2.3.1.7. Class FileData...48 2.3.1.8. Class DAS...54 2.3.2. Κείµενο Παραµέτρων...55 2.3.3. Εκτέλεση Προσοµοίωσης...61 2.3.4. Πειράµατα Συµπεράσµατα...62 2.3.5. Πηγαίος Κώδικας...72 ΒΙΒΛΙΟΓΡΑΦΙΑ...95 3

4

1. ΕΙΣΑΓΩΓΗ 1.1 ΓΕΝΙΚΑ Τα οπτικά δίκτυα κάνουν χρήση µεταδόσεων οπτικού σήµατος για την ανταλλαγή πληροφορίας. Όπως όλα τα επικοινωνιακά συστήµατα, ένα οπτικό σύστηµα επικοινωνίας αποτελείται από µια πηγή (αποστολέα), έναν προορισµό (παραλήπτη) και το µέσο επικοινωνίας. Τα οπτικά δίκτυα κάνουν χρήση της οπτικής ίνας ως µέσο επικοινωνίας γι αυτό και είναι επίσης γνωστά ως συστήµατα επικοινωνιών µε οπτικές ίνες. Οι οπτικές ίνες προσφέρουν εξαιρετικά υψηλό εύρος ζώνης (περίπου 50 THz). Επειδή ακριβώς το εύρος ζώνης που προσφέρει µια οπτική ίνα είναι εξαιρετικά υψηλό είναι επιθυµητό να µπορούµε να διαµοιράσουµε τη συνολική χωρητικότητα µεταξύ αρκετών διαφορετικών σταθµών επικοινωνίας έτσι ώστε να µην σπαταλάται ένα µεγάλο µέρος του bandwidth όντας µη χρησιµοποιούµενο. Αυτή ακριβώς η διαµοίραση περιγράφεται µε τον όρο πολύπλεξη (Multiplexing). Γενικά υπάρχουν n είσοδοι στον πολυπλέκτη (multiplexer MUX) και n έξοδοι από τον αποπολυπλέκτη (demultiplexer DMUX). Ο MUX συνδυάζει τις n ροές δεδοµένων εισόδου σε ένα και µοναδικό σήµα που µεταδίδεται στην οπτική ίνα και ο DMUX αποπολυπλέκει τις ροές δεδοµένων από το σήµα και τις παραδίδει στις κατάλληλες εξόδους. Το σήµα αποτελείται από n διακριτά κανάλια, η ακριβής µορφή των οποίων καθορίζει και το συγκεκριµένο τύπο πολύπλεξης που χρησιµοποιείται. Υπάρχουν δύο τύποι πολύπλεξης: Πολύπλεξη µε διαίρεση µήκους κύµατος (Wavelength-Division Multiplexing WDM) Πολύπλεξη µε διαίρεση χρόνου (Time-Division Multiplexing TDM) Στην πολύπλεξη WDM κάθε ροή δεδοµένων διαµορφώνεται σε µια διαφορετική συχνότητα. Έτσι το οπτικό φάσµα συχνοτήτων διαιρείται σε οπτικά κανάλια µε κάθε κανάλι να εξυπηρετεί ένα διαφορετικό αποστολέα. Με 5

την τεχνική WDM oι µεταδόσεις των διαφόρων αποστολέων γίνονται ταυτόχρονα. Τα µήκη κύµατος που αποτελούν τα οπτικά κανάλια πάνω στα οποία µεταδίδουν οι διάφοροι σταθµοί πρέπει να διαχωρίζονται επαρκώς το ένα από το άλλο ώστε να αποφεύγονται οι παρεµβολές. Τα οπτικά δίκτυα που υιοθετούν την τεχνική WDM ονοµάζονται οπτικά δίκτυα πολλαπλών µηκών κύµατος ή πολυκαναλικά οπτικά δίκτυα (multiwavelength ή multi-channel optical networks) Η τεχνική WDM (wavelength-division multiplexing) είναι µια τεχνολογία που επιτρέπει το συνδυασµό - ένωση των σηµάτων πολλών οπτικών ινών σε µία και µόνη οπτική ίνα, χρησιµοποιώντας διαφορετικό µήκος κύµατος ενός laser για να µεταφέρει το κάθε σήµα. Αυτό επιτρέπει τον πολλαπλασιασµό της χωρητικότητας της οπτική ίνας, ενώ επιτρέπει ταυτόχρονα την αµφίδροµη επικοινωνία χρησιµοποιώντας µία και µόνη οπτική ίνα. Στην πολύπλεξη TDM ή OTDM (Optical Time-Division Multiplexing) τεµαχίζεται η διάσταση του χρόνου για το σχηµατισµό διακριτών καναλιών που θα χρησιµοποιηθούν για τις διαφορετικές ροές δεδοµένων. Σε µια δεδοµένη χρονοθυρίδα (time slot) χρησιµοποιείται εκ περιτροπής όλο το φάσµα της διαθέσιµης συχνότητας για την εξυπηρέτηση µιας συγκεκριµένης ροής δεδοµένων. Στην πράξη οι χρονοθυρίδες ανατίθενται περιοδικά στις εισόδους για τη µετάδοση ενός µικρού κάθε φορά τµήµατος των σηµάτων τους. Τα µικρά αυτά τµήµατα υφίστανται χρονική διαστρωµάτωση (time interleaving), δηλαδή συντονίζονται σε πλαίσια TDM και µεταδίδονται στην οπτική ίνα ως µοναδικό σήµα υψηλής ταχύτητας. Τα δίκτυα που χρησιµοποιούν την τεχνική WDM είναι γενικά περισσότερο εύκολο να υλοποιηθούν και έχουν ήδη εξαπλωθεί στην πράξη ως ένα βαθµό. Από την άλλη τα δίκτυα µε την τεχνολογία TDM χρειάζονται ακόµη λίγο χρόνο για να ωριµάσουν εµπορικά. Στη συνέχεια θα ασχοληθούµε µε τα WDM δίκτυα broadcast-and-select. 6

1.2 WDM δίκτυα broadcast-and-select Ένα δίκτυο WDM broadcast-and-select αποτελείται έναν συγκεκριµένο αριθµό κόµβων Ν και από ένα παθητικό συζεύκτη αστέρα (passive star coupler) NxN. Ο κάθε κόµβος είναι εξοπλισµένος µε έναν σταθερά συντονισµένο µεταδότη και έναν µεταβλητό αποδέκτη. Οι µεταδότες και οι αποδέκτες συνδέονται µε τον οπτικό συζεύκτη αστέρα µε διαφορετικές οπτικές ίνες. Έτσι ο κάθε κόµβος χρησιµοποιεί ένα ζευγάρι οπτικών ινών για την επικοινωνία του µε τον κεντρικό συζεύκτη. Η δοµή ενός WDM broadcast-and-select δικτύου µε τοπολογία αστέρα φαίνεται στα παρακάτω σχήµατα. 7

Ο παθητικός συζεύκτης αστέρα είναι όπως λέει και το όνοµα του µια παθητική συσκευή, η οποία δε χρειάζεται τροφοδοσία και η λειτουργία του είναι να διανέµει ισοµερώς την ισχύ ενός σήµατος που µεταδίδεται από µια θύρα εισόδου του σε όλες τις θύρες εξόδου του καθώς και να συνδυάζει οπτικά σήµατα από πολλαπλές οπτικές ίνες σε µία. Το σήµα που φτάνει σε κάθε θύρα εξόδου του είναι εξασθενηµένο και έχει ισχύ ίση µε 1/Ν της αρχικής ισχύος του σήµατος στην θύρα εισόδου. ηλαδή ισχύει: P out = P in / N Όπως είναι φυσικό αν ο αριθµός των σταθµών (δηλαδή το Ν) µεγαλώσει πολύ τότε η ισχύς των σηµάτων στις εξόδους του συζεύκτη θα ήταν πολύ µικρή και το δίκτυο δε θα µπορούσε να λειτουργήσει. Αυτός είναι και ο λόγος που αυτή η αρχιτεκτονική δικτύου µπορεί να εφαρµοστεί µόνο σε τοπικά και µητροπολητικά δίκτυα όπου ο αριθµός των σταθµών δεν είναι τόσο µεγάλος ώστε να προκαλεί εκφυλισµό της ισχύος του σήµατος στην έξοδο του συζεύκτη. Η λειτουργία ενός παθητικού συζεύκτη αστέρα φαίνεται στο παρακάτω σχήµα. Μια πιο λεπτοµερής περιγραφή της λειτουργίας ενός παθητικού συζεύκτη αστέρα φαίνεται στο παρακάτω σχήµα, στο οποίο φαίνονται και τα ενδότερα δοµικά στοιχεία της συσκευής. 8

Όπως φαίνεται και στα παραπάνω σχήµατα ο κάθε κόµβος µπορεί να µεταδίδει χρησιµοποιώντας το σταθερά συντονισµένο µεταδότη του Τx σε ένα και µόνο συγκεκριµένο µήκος κύµατος λ i το οποίο του έχει ανατεθεί για αποκλειστική χρήση. Στη συνέχεια ο παθητικό συζεύκτης αστέρα συνδυάζει όλα τα σήµατα που λαµβάνει σε ένα µοναδικό σήµα το οποίο αποτελεί τη µίξη των σηµάτων και το αποστέλλει προς όλους τους κόµβους. Τέλος ο κάθε κόµβος χρησιµοποιεί το µεταβλητό αποδέκτη του για να µπορέσει να παραλάβει το σήµα στο µήκος κύµατος που επιθυµεί. Θα πρέπει να τονίσουµε ότι υπάρχει περίπτωση ο αριθµών των σταθµών να είναι µεγαλύτερος από τον αντίστοιχο αριθµό των µηκών κύµατος κι έτσι να µην µπορούµε να έχουµε µια εκ των προτέρων σταθερή 1:1 ανάθεση µήκους κύµατος σε κάθε σταθµό για αποκλειστική χρήση. Ο κάθε κόµβος µπορεί να έχει περισσότερους του ενός µεταδότες ή/και αποδέκτες οι οποίοι µπορεί να είναι σταθερά συντονισµένοι ή µεταβλητοί. Όσον αφορά τον εξοπλισµό των κόµβων τους τώρα τα WDM broadcast-andselect δίκτυα µπορούν να χωριστούν στις εξής κατηγορίες: Fixed Transmitter(s) Fixed Receiver(s) (FT-FR) Fixed Transmitter(s) Tunable Receiver(s) (FT-TR) Tunable Transmitter(s) Fixed Receiver(s) (FT-TR) Tunable Transmitter(s) Tunable Receiver(s) (FT-TR) Αν θέλουµε να δηλώνουµε και τον ακριβή αριθµό µεταδοτών / αποδεκτών που εξοπλίζουν τον κάθε κόµβο µπορούµε να χρησιµοποιούµε έναν εκθέτη στον παραπάνω συµβολισµό ο οποίο θα δηλώνει αυτόν τον αριθµό. Π.χ. FT 3 9

FR 2. Ο ορισµός µπορεί να γίνει ακόµη πιο πλήρης αν δηλώσουµε και τον αριθµό των καναλιών ελέγχου που χρησιµοποιούνται. Αν στο παραπάνω παράδειγµα προσθέσουµε και το συµβολισµό για 2 ξεχωριστά κανάλια ελέγχου τότε ο ολοκληρωµένος συµβολισµός του δικτύου θα γίνει CC 2 - FT 3 FR 2. (CC Control Channel) Εκτός από τον εξοπλισµό που περιλαµβάνει κάθε κόµβος ένας άλλος σηµαντικός διαχωρισµός των WDM δικτύων εκποµπής-και-επιλογής είναι ο αριθµός των ενδιάµεσων κόµβων από τους οποίους πρέπει να περάσει ένα σήµα για να φτάσει από τον αποστολέα στον παραλήπτη. Συγκεκριµένα οι 2 κατηγορίες στις οποίες χωρίζονται τα δίκτυα σύµφωνα µε αυτό το κριτήριο είναι: ίκτυα ενός βήµατος. Το σήµα κάνει ένα µόνο «βήµα» (hop) πηγαίνοντας απευθείας από τον αποστολέα στον παραλήπτη. Το σήµα παραµένει οπτικό καθ όλη τη διάρκεια ζωής του και περνάει µόνο από οπτικά στοιχεία µεταγωγής. ίκτυα πολλών βηµάτων. Για να φτάσει το σήµα από τον αποστολέα στον παραλήπτη πρέπει να µεσολαβήσει ένας ή και περισσότεροι ενδιάµεσοι κόµβοι, ή αλλιώς το σήµα πρέπει να κάνει 2 η περισσότερα βήµατα (hops) για να φτάσει στον προορισµό του. Το σήµα µετατρέπεται σε οπτικό κάθε φορά που φτάνει σε έναν ενδιάµεσο κόµβο και επαναµετατρέπεται σε οπτικό για να µεταδοθεί ξανά στο οπτικό µέσο από αυτόν τον κόµβο. Για το πρωτόκολλο DAS στο οποίο αναφέρεται αυτή η εργασία τα δίκτυα που χρησιµοποιήθηκαν είναι WDM broadcast-and-select δίκτυα ενός βήµατος 10

Η κοινή στρατηγική που υλοποιείται στο δίκτυο και υιοθετείται από όλους τους κόµβους του προκειµένου να είναι εφικτή η µεταξύ τους επικοινωνία αποτελεί το πρωτόκολλο ελέγχου προσπέλασης µέσου (media access control protocol MAC protocol). Στα δίκτυα τεχνολογίας WDM το µέσο αυτό είναι τα οπτικά κανάλια µήκη κύµατος που χρησιµοποιούνται για την επικοινωνία των κόµβων του δικτύου. Τα MAC πρωτόκολλα περιγράφουν τον τρόπο µε τον οποίο γίνεται η προσπέλαση του διαθέσιµου µέσου. Ο βασικός στόχος ενός MAC πρωτοκόλλου είναι να προσδιορίζει το σύνολο των κανόνων µε βάση τους οποίους θα διευθετούνται και θα εκτελούνται οι λειτουργίες εκποµπής-και επιλογής. Με άλλα λόγια το πρωτόκολλο αυτό συντονίζει τις µεταδόσεις των σταθµών στο δίκτυο και επίσης, όταν αυτό είναι απαραίτητο, καθορίζει τον τρόπο µε τον οποίο ένας κόµβος θα πρέπει να επιλέξει µεταξύ των ταυτόχρονων εκποµπών που προορίζονται γι αυτόν σε συγκεκριµένη χρονική στιγµή. Όταν οι µεταδότες είναι µεταβλητοί και δύο ή περισσότεροι µεταδότες να προσπαθήσουν να µεταδώσουν στο ίδιο κανάλι τότε λέµε ότι προκύπτει σύγκρουση καναλιού και έχει ως συνέπεια την αλλοίωση των µεταδιδόµενων πληροφοριών και επιβάλλει την επαναµετάδοσή τους. Όταν ένας κόµβος διαθέτει µόνο ένα µεταβλητό αποδέκτη και δύο ή περισσότεροι σταθµοί µεταδώσουν (σε διαφορετικά µήκη κύµατος) ταυτόχρονα µηνύµατα που προορίζονται για τον ίδιο κόµβο τότε λέµε ότι προκύπτει σύγκρουση αποδέκτη. Ένα πρωτόκολλο MAC έχει συνήθως ως στόχο την αποφυγή των συγκρούσεων καναλιών (και πιθανώς και των συγκρούσεων αποδεκτών) και τον προσδιορισµό των διαδικασιών µε βάση τις οποίες θα γίνονται επιλογές όπου αυτό είναι απαραίτητο. Μπορεί να γίνει µια βασική κατηγοριοποίηση των πρωτοκόλλων MAC ως εξής: Πρωτόκολλα Προανάθεσης. Σε αυτά τα πρωτόκολλα δεν υπάρχει κάποιο κανάλι ελέγχου το οποίο να συντονίζει τις µεταδόσεις κι έτσι 11

υπάρχει κάποιας µορφής προανάθεση των µηκών κύµατος στους αποστολείς και στους παραλήπτες. Τα πρωτόκολλα αυτής της κατηγορίας χωρίζονται επιπλέον σε: Πρωτόκολλα Σταθερής Ανάθεσης ή Στατικής Προσπέλασης Πρωτόκολλα Τυχαίας Προσπέλασης Πρωτόκολλα µε συντονισµό πριν από τη µετάδοση. Στα πρωτόκολλα αυτής της κατηγορίας υπάρχει ένα κανάλι ελέγχου το οποίο χρησιµοποιεί ένα από τα διαθέσιµα µήκη κύµατος και χρησιµοποιείται από τους κόµβους για συντονισµό πριν από τη µετάδοση δεδοµένων. Τα πρωτόκολλα αυτής της κατηγορίας µπορούν να χωριστούν ανάλογα µε την πολιτική χειρισµού των συγκρούσεων αποδέκτη σε: Πρωτόκολλα µε συγκρούσεις αποδέκτη Πρωτόκολλα χωρίς συγκρούσεις αποδέκτη Επίσης ανάλογα µε τον τρόπο µε τον οποίο χρησιµοποιείται το κανάλι ελέγχου µπορούν να χωριστούν σε: Πρωτόκολλα «πες-και-ξεκίνα». Αυτά τα πρωτόκολλα προσδιορίζουν ότι ένας κόµβος πρέπει πρώτα να µεταδώσει ένα πακέτο ελέγχου στο κανάλι ελέγχου απλώς για να ενηµερώσει τους πιθανούς προορισµούς και αµέσως µετά να µεταδώσει τα δεδοµένα Πρωτόκολλα κρατήσεων µε συντονισµό πριν από τη µετάδοση. Στα πρωτόκολλα αυτής τη κατηγορίας ένας κόµβος που µεταδίδει ένα πακέτο ελέγχου πρέπει να περιµένει για χρόνο ίσο µε την καθυστέρηση διάδοσης µε επιστροφή µέχρις ότου να γυρίσει σε αυτόν µε επιτυχία. Στη συνέχεια µπορεί να του επιτραπεί να µεταδώσει ή όχι. Αυτό έχει ως αποτέλεσµα την 12

αύξηση της διεκπεραιωτικής ικανότητας του δικτύου αλλά και την αύξηση του χρόνου προσπέλασης. Πολιτική χειρισµού συγκρούσεων. Υπάρχουν πρωτόκολλα που εξαλείφουν και τα δύο είδη συγκρούσεων (συγκρούσεις καναλιών και συγκρούσεις αποδέκτη), πρωτόκολλα που εξαλείφουν µόνο έναν από τους δύο τύπους συγκρούσεων και πρωτόκολλα τα οποία δεν εξαλείφουν (µερικώς η ολικώς τις συγκρούσεις. Όσο περισσότερες συγκρούσεις εξαλείφει ένα πρωτόκολλο γίνεται πιο πολύπλοκο αλλά ταυτόχρονα αυξάνει τη διεκπεραιωτική ικανότητα του δικτύου. Πλήθος των καναλιών δεδοµένων και των καναλιών ελέγχου (εάν υπάρχουν). Τα πρωτόκολλα µπορεί να υποθέτουν ότι ο συνολικός αριθµός των καναλιών είναι µικρότερος από το πλήθος των κόµβων ή εναλλακτικά ότι ο αριθµός των καναλιών δεδοµένων ισούται µε τον αριθµό των κόµβων. Όταν υπάρχει συντονισµός πριν από τη µετάδοση, η διάκριση των πρωτοκόλλων µπορεί να γίνει σύµφωνα µε τον αριθµό των καναλιών ελέγχου που χρησιµοποιούνται. Χρονοδροµολόγηση των µεταδόσεων. Τα πρωτόκολλα που εφαρµόζουν την χρονοδροµολόγηση µεταδόσεων είναι τα πρωτόκολλα µε συντονισµό πριν από τη µετάδοση. Τα πρωτόκολλα που χρησιµοποιούν αυτήν την τεχνική κάνουν χρονοδροµολόγηση των µεταδόσεων και των λήψεων των πακέτων έτσι ώστε να αποφεύγονται, όσο αυτό είναι δυνατό, οι συγκρούσεις καναλιών και αποδεκτών και να βελτιώνεται σηµαντικά η διεκπεραιωτική ικανότητα του δικτύου. Αυτό επιτυγχάνεται µε κατάργηση του χαρακτηριστικού «πες-και-ξεκίνα» έτσι ώστε όλοι οι κόµβοι να έχουν τον απαραίτητο χρόνο προκειµένου να λάβουν τις απαραίτητες πληροφορίες ελέγχου και να δροµολογήσουν ανάλογα τις ενέργειές τους. Φυσικά αυτό έχει ως αποτέλεσµα την αύξηση της πολυπλοκότητας του δικτύου. Εάν ο αλγόριθµος δροµολόγησης είναι κατανεµηµένος, όλοι οι κόµβοι του δικτύου πρέπει να διατηρούν κάποιες καθολικές πληροφορίες για το δίκτυο τις οποίες πρέπει να ενηµερώνουν σύµφωνα µε τα στοιχεία που λαµβάνουν από το(α) κανάλι(α) ελέγχου. Παραδείγµατα της καθολικής πληροφορίας που µπορεί να διατηρεί ο κάθε σταθµός µπορεί να είναι: 13

Πίνακας µε τις απαιτήσεις κίνησης D=[d ij ], όπου το στοιχείο d ij ισούται µε το πλήθος των πακέτων δεδοµένων του κόµβου i που προορίζονται για τον κόµβο j. Πίνακας διαθεσιµότητας αποδεκτών (Receiver Available Time RAT). Αν RAT[j] = t, τότε ο κόµβος θα είναι αδρανής µετά από t χρονοθυρίδες. Πίνακας διαθεσιµότητας καναλιών (Channel Available Time CAT). Αν CAT[c] = t, τότε το κανάλι c θα είναι διαθέσιµο µετά από t χρονοθυρίδες. Όλοι οι κόµβοι εκτελούν τον ίδιο αλγόριθµο δροµολόγησης χρησιµοποιώντας τα ίδια καθολικά δεδοµένα κι έτσι προκύπτει µια κοινή χρονοδροµολόγηση µεταδόσεων και λήψεων για όλους τους σταθµούς. 1.3 ΠΡΩΤΟΚΟΛΛΑ ΜΕ ΠΡΟΑΝΑΘΕΣΗ Στα πρωτόκολλα αυτής της κατηγορίας όπως αναφέρθηκε δεν υπάρχει κάποιο διαµοιραζόµενο κανάλι ελέγχου για το συντονισµό των µεταδόσεων. Τα διαθέσιµα µήκη κύµατος ανατίθενται στους µεταδότες ή στους αποδέκτες µε κάποιο σταθερό τρόπο. Οι δύο συνηθέστεροι τρόποι ανάθεσης είναι οι εξής: Ανάθεση καναλιών µε παρεµβολή: λ i = i MOD W Ανάθεση καναλιών µε γειτνίαση: λ i = N W i 14

Ν ο αριθµός των κόµβων W ο αριθµός των διαθέσιµων µηκών κύµατος και όπως είναι φυσικό ισχύει: 0 i N-1 και 0 λ i W-1. Έτσι το κάθε κανάλι λ i µπορεί να υπολογιστεί αν είναι γνωστά τα i, N και W. Γι αυτό σε ένα δοθέν δίκτυο η ανάθεση των καναλιών στους κόµβους είναι σταθερή. Εφόσον ασχολούµαστε µε συστήµατα single hop, ο κάθε κόµβος θα πρέπει να µπορεί να επικοινωνήσει µε όλους τους άλλους κόµβους απευθείας. Έτσι ο κάθε κόµβος θα πρέπει να µπορεί να συντονιστεί µε ολόκληρο το φάσµα συχνοτήτων που χρησιµοποιείται στο εν λόγω δίκτυο είτε ενός µεταβλητού µεταδότη / αποδέκτη ικανού να συντονιστεί σε όλο το φάσµα συχνοτήτων είτε µέσω ενός πλήθους σταθερών µεταδοτών / αποδεκτών οι οποίοι να καλύπτουν όλο το φάσµα συχνοτήτων. Έτσι οι δύο πιο απλές προσεγγίσεις από άποψη εξοπλισµού είναι οι FT-TR και TT-FR. FT-TR Ο αποδέκτης κάθε κόµβου πρέπει να συντονίζεται στο κανάλι βάσης του κόµβου που τους µεταδίδει. Το πρόβληµα που προκύπτει αφορά τον τρόπο µε τον οποίο θα ειδοποιούνται οι κόµβοι έτσι ώστε να συντονίζονται στο κατάλληλο µήκος κύµατος.. Μία απλή µέθοδος που έχει προταθεί είναι ο αποδέκτης του κάθε κόµβου σε κάθε περίοδο συντονισµού να συντονίζεται εκ περιτροπής σε όλα τα µήκη κύµατος για κάποιο χρονικό διάστηµα. υστυχώς στα δίκτυα FT-TR είναι αδύνατον να εφαρµοστούν πιο σύνθετες µέθοδοι συντονισµού χωρίς την παρουσία διαµοιραζόµενου καναλιού µετάδοσης. TT-FR Τα προβλήµατα που παρουσιάζουν τα δίκτυα FT-TR φαίνεται ότι µπορούν να τα λύσουν τα δίκτυα TT-FR. Σε αυτά τα δίκτυα γίνεται ανάθεση των διαθέσιµων µηκών κύµατος στους αποδέκτες οι οποίοι είναι σταθεροί. Αν κάποιος κόµβος θελήσει να µεταδώσει σε κάποιον άλλο κόµβο το µόνο που 15

έχει να συντονίσει το µεταδότη του στο κανάλι που αντιστοιχεί στον αποδέκτη του άλλου κόµβου το οποίο είναι εκ των προτέρων γνωστό. Έτσι δεν υπάρχει ανάγκη συντονισµού. Εκτός των άλλων οι µεταβλητοί µεταδότες είναι φθηνότερες συσκευές από τους µεταβλητούς αποδέκτες. Έτσι τα συστήµατα TT-FR είναι αυτά που έχουν επικρατήσει για τα πρωτόκολλα προανάθεσης. 1.3.1 Πρωτόκολλα Σταθερής Ανάθεσης Τα πρωτόκολλα αυτής της κατηγορίας καθορίζουν τις ακριβείς χρονικές στιγµές κατά τις οποίες µπορεί ο κάθε κόµβος να προσπελάσει το κάθε ένα από τα διαµοιραζόµενα κανάλια. Με αυτή τη µέθοδο αποφεύγονται οι συγκρούσεις καναλιών αφού αποκλείεται δύο σταθµοί να προσπαθήσουν να µεταδώσουν ταυτόχρονα στο ίδιο κανάλι. Πρωτόκολλο I-TDMA Ένα χαρακτηριστικό παράδειγµα πρωτοκόλλου σταθερής ανάθεσης είναι το πρωτόκολλο I-TDMA. Θεωρείται ένα δίκτυο WDM broadcast-and-select δίκτυο µε αρχιτεκτονική TT- FR. ηλαδή ο κάθε κόµβος έχει ένα µεταβλητό µεταδότη µε δυνατότητα συντονισµού σε όλο το φάσµα συχνοτήτων που χρησιµοποιείται και χρόνο συντονισµού ο οποίος θεωρείται µηδενικός και ένα σταθερό αποδέκτη συντονισµένο στο κανάλι βάσης. Θεωρούµε ότι το δίκτυο αποτελείται από N κόµβους και ότι υπάρχουν W διαθέσιµα µήκη κύµατος. Ο χρόνος αρχικά διαιρείται σε κύκλους και κάθε κύκλος διαιρείται σε θυρίδες. Σε κάθε κόµβο αντιστοιχεί µια θυρίδα ανά κύκλο κατά την οποία µπορεί να µεταδώσει σε οποιοδήποτε κανάλι. Μια χρονοθυρίδα είναι ακριβώς ο χρόνος που χρειάζεται για τη µετάδοση ενός πακέτου δεδοµένων, το µέγεθος του οποίου θεωρείται σταθερό. 16

Ο κάθε κόµβος θεωρείται ότι διαθέτει µια ουρά στην οποία αποθηκεύει τα πακέτα που έχει προς µετάδοση. Κατά τη χρονική στιγµή που του έχει ανατεθεί από το πρωτόκολλο ο κόµβος επιλέγει το πακέτο που βρίσκεται στην κορυφή της ουράς του και συντονίζει το µεταδότη του στο κανάλι βάσης του προορισµού του. Αν ισχύει N=W τότε ο κάθε κύκλος χρόνου διαιρείται σε N-1 χρονοθυρίδες και γίνεται προανάθεση µια θυρίδας ανά κύκλο σε κάθε κόµβο, κατά τη διάρκεια της οποίας µπορεί να µεταδώσει προς οποιοδήποτε προορισµό εκτός από τον εαυτό του. Ένα παράδειγµα χάρτη ανάθεση µεταδοτών / αποδεκτών για N = W = 5 φαίνεται στον παρακάτω πίνακα: Μεταδότες Χάρτης Ανάθεσης Μεταδοτών / Αποδεκτών Αποδέκτες 0 1 2 3 4 1 2 3 4 1 0 2 3 4 0 2 3 4 2 0 1 3 4 0 1 3 4 3 0 1 2 4 0 1 2 4 4 0 1 2 3 0 1 2 3 Χρονοθυρίδες 1 2 3 4 1 2 3 4 Κύκλοι 1ος κύκλος 2ος κύκλος Στην πιο γενική περίπτωση κατά την οποία ισχύει N > W δεν µπορεί να γίνει αποκλειστική ανάθεση καναλιού σε κάθε κόµβο, αλλά πρέπει να γίνει διαµοίραση καναλιών σε ορισµένους κόµβους. Το µήκος του κάθε κύκλου είναι Ν χρονοθυρίδες και ο κάθε κόµβος έχει ακριβώς µια ευκαιρία να µεταδώσει προς οποιοδήποτε κανάλι σε κάθε κύκλο ενώ παραµένει αδρανής για N-W θυρίδες σε κάθε κύκλο. Παρακάτω δίνονται οι χάρτες ανάθεσης καναλιών / µεταδοτών και µεταδοτών / καναλιών για ένα δίκτυο µε N = 7 και W = 5. 17

Κανάλια Χάρτης Ανάθεσης Καναλιών / Μεταδοτών Μεταδότες 0 0 1 2 3 4 5 6 0 1 1 1 2 3 4 5 6 0 1 2 2 2 3 4 5 6 0 1 2 3 3 3 4 5 6 0 1 2 3 4 4 4 5 6 0 1 2 3 4 5 Χρονοθυρίδες 1 2 3 4 5 6 7 1 2 Κύκλοι 1ος κύκλος 2ος κύκλος Μεταδότες Χάρτης Ανάθεσης Μεταδοτών / Καναλιών Κανάλια 0 0 4 3 2 1 0 1 1 0 4 3 2 1 0 2 2 1 0 4 3 2 1 3 3 2 1 0 4 3 2 4 4 3 2 1 0 4 3 5 4 3 2 1 0 4 6 4 3 2 1 0 Χρονοθυρίδες 1 2 3 4 5 6 7 1 2 Κύκλοι 1ος κύκλος 2ος κύκλος Όπως φαίνεται από το δεύτερο πίνακα κάθε κόµβος παραµένει αδρανής για N W = 2 χρονοθυρίδες ανά κύκλο. Η απόδοση του πρωτοκόλλου είναι υψηλή για υψηλό φόρτο εργασίας και χαµηλή για χαµηλό φόρτο εργασίας όπου δεν υπάρχουν πολλά νέα πακέτα προς µετάδοση ένας κόµβος που έχει ένα πακέτο προς µετάδοση περιµένει χωρίς λόγο για ένα µεγάλο χρονικό διάστηµα µέχρι να έρθει η σειρά του να µεταδώσει. Μια παραλλαγή του I-TDMA η οποία µειώνει τις καθυστερήσεις που προκύπτουν είναι το I-TDMA* στο οποίο ο κάθε κόµβος διαθέτει W ουρές αναµονής, µία για κάθε µήκος κύµατος. 18

1.3.2 Πρωτόκολλα Τυχαίας Προσπέλασης Τα πρωτόκολλα τυχαίας προσπέλασης επιτρέπουν την προσπέλαση των διαµοιραζόµενων καναλιών από τους κόµβους µε τυχαίο τρόπο. Στα πρωτόκολλα που χρησιµοποιούν αυτήν την τεχνική παρουσιάζονται συγκρούσεις η συχνότητα των οποίων εξαρτάται από το φόρτο εργασίας του δικτύου. Πρωτόκολλο I-SA Interleaved Slotted Aloha Το πρωτόκολλο I-SA εφαρµόζεται σε δίκτυα τύπου TT-FR. Και σε αυτό το πρωτόκολλο ο χρόνος διαιρείται σε χρονοθυρίδες. Αµέσως µετά τη δηµιουργία του, το κάθε πακέτο τοποθετείται σε µια ουρά που διαθέτει ο κόµβος που το δηµιούργησε ανεξάρτητα από τον προορισµό του. Στην αρχή κάθε χρονοθυρίδας µεταδίδεται από κάθε σταθµό το πακέτο το οποίο βρίσκεται στην κορυφή της ουράς του. Ακριβώς επειδή η κεντρική ιδέα του πρωτοκόλλου είναι ο κάθε κόµβος να µεταδίδει αµέσως µόλις είναι έτοιµος για µετάδοση υπάρχει η πιθανότητα να προκύψει σύγκρουση καναλιού µε αποτέλεσµα η µετάδοση να είναι αποτυχηµένη. Η πιθανότητα αυτή επιστράτευσε το µηχανισµό των επιβεβαιώσεων (acknowledgements). Ένα κόµβος θεωρεί ότι η µετάδοση του είναι επιτυχηµένη αν λάβει µια επιβεβαίωση λήψης από τον παραλήπτη του πακέτου. Ο χρόνος που χρειάζεται για να σταλεί αυτή η επιβεβαίωση συµπεριλαµβάνεται στη χρονοθυρίδα και πρέπει να επαρκεί για την αποκωδικοποίηση της κεφαλίδας και τον έλεγχο της ακεραιότητας του πακέτου καθώς και για το συντονισµό στο κανάλι βάσης του µεταδότη. Αν µετά το πέρας της χρονοθυρίδας ο κόµβος αποστολέας δεν έχει λάβει επιβεβαίωση θα επαναλάβει τη µετάδοση, µε πιθανότητα p r, στις επόµενες χρονοθυρίδες. 19

Αν ο αριθµός των καναλιών είναι ίσος µε τον αριθµό των κόµβων τότε δεν υπάρχει περίπτωση σύγκρουσης επιβεβαιώσεων. Σε διαφορετική περίπτωση επιβάλλεται η εφαρµογή µια τεχνικής πολύπλεξης µε διαίρεση χρόνου η οποία αυξάνει περαιτέρω την πολυπλοκότητα του πρωτοκόλλου. Γενικότερα η µέθοδος των επιβεβαιώσεων κάνει το I-SA ευαίσθητο στις µεταβολές της καθυστέρησης διάδοσης, στο χρόνο συντονισµού και τη χρονική επιβάρυνση λόγω της επεξεργασίας που προβλέπεται από το πρωτόκολλο. Όπως και όλες οι παραλλαγές του θυριδωτού Aloha, η απόδοση του I-SA δεν είναι καλή ιδιαίτερα σε περιπτώσεις υψηλού φόρτου εργασίας καθώς προκύπτουν µεγάλος αριθµός συγκρούσεων καναλιών µε αποτέλεσµα την ανάγκη επαναµετάδοσης ενός µεγάλου ποσοστού πακέτων. Μια βελτιωµένη έκδοση του I-SA είναι το πρωτόκολλο I-SA*. Οι βασικές του διαφοροποιήσεις οι οποίες βελτιώνουν την απόδοση του πρωτοκόλλου είναι: 1. Η χρησιµοποίηση σε κάθε κόµβο W διακριτών ουρών αναµονής, γεγονός το οποίο επιλύει τα προβλήµατα συµφόρησης στην κορυφή της ουράς. 2. Έχει µικρότερο µέγεθος θυρίδας καθώς σε αυτήν δεν περιλαµβάνεται και η επιβεβαίωση, η οποία στέλνεται σαν ξεχωριστό πακέτο. 3. Επιτρέπει στους σταθµούς τη µετάδοση µιας σειράς πακέτων αφού συντονιστούν σε κάποιο κανάλι, γεγονός το οποίο µειώνει το χρόνο συντονισµού ανά πακέτο 20

1.4 ΠΡΩΤΟΚΟΛΛΑ ΜΕ ΣΥΝΤΟΝΙΣΜΟ ΠΡΙΝ ΑΠΟ ΤΗ ΜΕΤΑ ΟΣΗ Τα πρωτόκολλα αυτής της κατηγορίας όπως αναφέρθηκε και προηγουµένως χρησιµοποιούν ένα από τα διαθέσιµα µήκη κύµατος για το συντονισµό µεταξύ των κόµβων του δικτύου. Οι δύο βασικές υποκατηγορίες αυτών των πρωτοκόλλων αναλύονται παρακάτω. 1.4.1 Πρωτόκολλα µε συγκρούσεις αποδέκτη Όπως είναι προφανές και από την ονοµασία, αυτή η κατηγορία περιλαµβάνει πρωτόκολλα τα οποία δεν αποτρέπουν τις συγκρούσεις αποδέκτη. Τα πρωτόκολλα ονοµάζονται X/Y, όπου Χ το πρωτόκολλο το οποίο εφαρµόζεται στο κανάλι ελέγχου και Υ το πρωτόκολλο το οποίο εφαρµόζεται στα κανάλια δεδοµένων. Aloha / Aloha Το πρωτόκολλο Aloha / Aloha υποθέτει ένα WDM δίκτυο εκποµπής-καιεπιλογής µε τοπολογία αστέρα και η αρχιτεκτονική του συστήµατος είναι CC- TT-TR. Ο αριθµός των κόµβων N είναι γενικά µεγαλύτερος από τον αριθµό των καναλιών W. Ένα πακέτο ελέγχου έχει διάρκεια 1 µονάδα χρόνου και περιέχει τη διεύθυνση του αποστολέα και του παραλήπτη καθώς και το επιθυµητό κανάλι για τη µετάδοση, ενώ το πακέτο δεδοµένων έχει διάρκεια L µονάδων χρόνου. Το πρωτόκολλο Aloha / Aloha επιτρέπει σε κάθε κόµβο τη µετάδοση ενός πακέτου ελέγχου και αµέσως µετά τη µετάδοση του πακέτου. Οι προορισµοί καθώς και τα κανάλια µετάδοσης επιλέγονται τυχαία. Όπως είναι φανερό το 21

πρωτόκολλο επιτρέπει τόσο τις συγκρούσεις καναλιών ελέγχου και δεδοµένων όσο και τις συγκρούσεις αποδέκτη. εδοµένου ενός καναλιού ελέγχου λ 0 και ενός καναλιού δεδοµένων λ i, έχουµε τις παρακάτω µεταδόσεις από ένα σταθµό που θέλει να µεταδώσει στο κανάλι λ i, : Μετάδοση στο κανάλι ελέγχου: [t 0, t 0 + 1) Μετάδοση στο κανάλι δεδοµένων: [t 0 + 1, t 0 + L + 1) Ενδεχόµενο σύγκρουσης στο κανάλι ελέγχου: (t 0 1, t 0 + 1) o ιάρκεια: 2 Ενδεχόµενο σύγκρουσης στο κανάλι δεδοµένων: (t 0 L + 1, t 0 + L + 1) o ιάρκεια: 2L ιάρκεια επικίνδυνης περιόδου για ένα κανάλι: 2L 2 Όσον αφορά τις συγκρούσεις αποδέκτη είναι φανερό από τα παραπάνω ότι δεν αποφεύγονται από το συγκεκριµένο πρωτόκολλο. Για παράδειγµα στο παραπάνω σενάριο µεταδόσεων αν ένας άλλος σταθµός µεταδώσει ένα πακέτο έλεγχου στο χρονικό διάστηµα (t 0 L, t 0 + L) καθορίζοντας τον ίδιο κόµβο ως παραλήπτη αλλά διαφορετικό κανάλι µετάδοσης τότε οι δύο µεταδόσεις πακέτων θα επικαλύπτονται χρονικά µε αποτέλεσµα τη σύγκρουση αποδέκτη. Σύγκρουση αποδέκτη θα µπορούσε ακόµα να προκύψει αν σταλεί πακέτο ελέγχου στο κανάλι λ 0 σε ένα κόµβο ο οποίος εκείνη τη στιγµή παραλαµβάνει δεδοµένα σε κάποιο άλλο κανάλι. Slotted Aloha / Slotted Aloha Πρόκειται για µια επέκταση του πρωτοκόλλου Aloha / Aloha. Προτείνει την διαίρεση του χρόνου στο κανάλι ελέγχου και στα κανάλια δεδοµένων σε 22

θυρίδες. Η µετάδοση ενός πακέτου ελέγχου διαρκεί µια χρονοθυρίδα και η µετάδοση ενός πακέτου δεδοµένων διαρκεί L χρονοθυρίδες. Παίρνοντας και πάλι σαν δεδοµένο ότι ένας κόµβος θέλει να µεταδώσει στο κανάλι λ i έχουµε τις παρακάτω µεταδόσεις: Μετάδοση στο κανάλι ελέγχου: (t 0, t 0 + 1) Μετάδοση στο κανάλι δεδοµένων: (t 0 + 1, t 0 + L + 1) Ενδεχόµενο σύγκρουσης στο κανάλι ελέγχου: [t 0, t 0 + 1) o ιάρκεια: 1 Ενδεχόµενο σύγκρουσης στο κανάλι δεδοµένων: [t 0 L + 2, t 0 + L + 1) o ιάρκεια: 2L 1 ιάρκεια επικίνδυνης περιόδου για ένα κανάλι: 2L 2 Όπως και στο πρωτόκολλο Aloha / Aloha έτσι κι εδώ δεν αποφεύγονται οι συγκρούσεις αποδέκτη. Αν στο παραπάνω παράδειγµα σε κάποια χρονοθυρίδα κατά τη χρονική περίοδο [t 0 L + 1, t 0 + L), ένας άλλος σταθµός έστελνε ένα πακέτο ελέγχου το οποίο καθόριζε τον ίδιο παραλήπτη αλλά διαφορετικό κανάλι µετάδοσης θα είχαµε σύγκρουση αποδέκτη. Το ίδιο θα ήταν το αποτέλεσµα αν στέλναµε ένα πακέτο ελέγχου στο κανάλι λ 0 σε ένα σταθµό ο οποίος εκείνη τη στιγµή λάµβανε δεδοµένα σε κάποιο άλλο κανάλι. Το πρωτόκολλο Slotted Aloha / Slotted Aloha έχει 6 παραλλαγές οι οποίες συµβολίζονται ως SA / SA (1) SA / SA (6) τα οποία υποθέτουν το ίδιο µοντέλο δικτύου WDM εκποµπής-και-επιλογής µε N σταθµούς και W κόµβους και την ίδια αρχιτεκτονική CC-TT-TR. Οι διαφοροποιήσεις αυτών των παραλλαγών αφορούν τον τρόπο διαίρεσης του χρόνου σε θυρίδες στο κανάλι ελέγχου και στα κανάλια δεδοµένων οι οποίες έχουν πολύ σηµαντικό αντίκτυπο στη λειτουργία του πρωτοκόλλου. 23

SA / SA (1) Ο χρόνος διαιρείται σε κύκλους. Ο κάθε κύκλος αποτελείται από W µικροθυρίδες ελέγχου και 1 χρονοθυρίδα δεδοµένων ( = L µικροθυρίδες ελέγχου) Άρα η συνολική διάρκεια του κύκλου είναι W + L µικροθυρίδες. Σε κάθε κύκλο επιτρέπεται η µετάδοση πακέτων ελέγχου σε µία µόνο µικροθυρίδα ελέγχου η οποία αντιστοιχεί σε ένα από τα W κανάλια δεδοµένων. Μετά από τις W µικροθυρίδες ελέγχου µεταδίδεται ένα πακέτο δεδοµένων στο αντίστοιχο κανάλι δεδοµένων. Η επιτυχηµένη µετάδοση πακέτου ελέγχου εγγυάται και την επιτυχηµένη µετάδοση δεδοµένων στη συνέχεια του κύκλου SA / SA (2) Ο κάθε κύκλος διαρκεί µόνο L µικροθυρίδες κατά τις οποίες µεταδίδεται ένα πακέτο δεδοµένων, ενώ οι W µικροθυρίδες ελέγχου συµπίπτουν χρονικά µε αυτή τη µετάδοση δεδοµένων και καθορίζουν το κανάλι µετάδοσης δεδοµένων για τον επόµενο κύκλο. Και σε αυτήν την παραλλαγή η επιτυχηµένη µετάδοση πακέτου ελέγχου εγγυάται την επιτυχηµένη µετάδοση δεδοµένων στον επόµενο κύκλο SA / SA (3) Ο διαχωρισµός του χρόνου σε θυρίδες µοιάζει µε αυτόν του SA / SA (1) µε τη διαφορά ότι οι µικροθυρίδες ελέγχου δεν είναι W αλλά Χ κι έτσι δεν υπάρχει σταθερή προανάθεση στα κανάλια δεδοµένων. Η µικροθυρίδα ελέγχου επιλέγεται τυχαία από ένα σταθµό και στη συνέχεια του κύκλου µεταδίδει το πακέτο του. Ακόµη και µετά από επιτυχηµένη αποστολή πακέτου ελέγχου µπορεί να συµβεί σύγκρουση πακέτων δεδοµένων 24

SA / SA (4) Είναι ένας συνδυασµός των SA / SA (2) και SA / SA (3). ηλαδή χρησιµοποιεί Χ µικροθυρίδες ελέγχου οι οποίες επιλέγονται τυχαία από κάποιο σταθµό και καθορίζουν τη µετάδοση δεδοµένων στον επόµενο κύκλο. Ο κάθε κύκλος έχει διάρκεια Χ+L µικροθυρίδες. SA / SA (5) Ειδική περίπτωση του SA / SA (4), για X = L SA / SA (6) Οι κύκλοι για το κανάλι ελέγχου και για τα κανάλια δεδοµένων είναι ασύγχρονοι αλλά ίσοι σε διάρκεια (L+1 µικροθυρίδες). Το κανάλι ελέγχου διαιρείται σε W µικροθυρίδες και ταυτόχρονα µε την έναρξη της κάθε µιας από αυτές αρχίζει και ο κύκλος του αντίστοιχου καναλιού δεδοµένων ενώ µετά τη λήξη αυτής της µικροθυρίδας αρχίζει η µετάδοση του πακέτου σε αυτό το κανάλι δεδοµένων. Έτσι το κανάλι ελέγχου έχει (L + 1 W) αδρανείς µικροθυρίδες στο τέλος κάθε κύκλου ενώ το κάθε κανάλι δεδοµένων έχει 1 αδρανή µικροθυρίδα στην αρχή κάθε κύκλου. 1.4.2 Πρωτόκολλα χωρίς συγκρούσεις αποδέκτη Τα πρωτόκολλα αυτής της κατηγορίας µπορούν να εξαλείφουν τις συγκρούσεις αποδέκτη εµποδίζοντας τη µετάδοση πακέτων τα οποία µπορεί να εµπλακούν σε τέτοιες συγκρούσεις. Υπάρχουν δύο κύριοι µηχανισµοί µε 25

τους οποίους αποφεύγονται οι συγκρούσεις αποδέκτη. Ο πρώτος είναι µε την αποστολή κάποιων επιπλέον πακέτων ελέγχου στη θέση των «επίφοβων» πακέτων τα οποία θα µεταδοθούν αργότερα µετά από νέο έλεγχο και ο δεύτερος είναι η κατάστρωση µιας χρονοδροµολόγησης µε τη χρήση κάποιου κατάλληλου αλγορίθµου ο οποίος χρησιµοποιεί πληροφορίες για τη συνολική κατάσταση του δικτύου. Όταν όλοι οι κόµβοι µοιράζονται µια καθολική πληροφορία τότε ο αλγόριθµος δροµολόγησης λέγεται κατανεµηµένος. Όπως έχει αναφερθεί και νωρίτερα ένα χαρακτηριστικό παράδειγµα καθολικής πληροφορίας για την κατάσταση του δικτύου είναι ένας πίνακας µε τις απαιτήσεις κίνησης D=[d ij ], όπου το στοιχείο d ij ισούται µε το πλήθος των πακέτων δεδοµένων του κόµβου i που προορίζονται για τον κόµβο j. Μπορούν να γίνουν δύο διαχωρισµοί στους αλγόριθµους δροµολόγησης. Ο πρώτος από αυτούς είναι ο εξής: Offline. εν ξεκινούν το χρονοπρογραµµατισµό πριν να είναι διαθέσιµη ολόκληρη η πληροφορία ελέγχου για την κατάσταση του δικτύου. Αποδίδουν καλύτερα προγράµµατα χρονοδροµολόγησης από τους online αλγορίθµους. Online. Ξεκινούν το χρονοπρογραµµατισµό µε βάση τη µέχρι εκείνη τη στιγµή διαθέσιµη πληροφορία ελέγχου. Παράγουν χειρότερα προγράµµατα χρονοδροµολόγησης από τους offline αλγορίθµους αλλά έχουν το πλεονέκτηµα των πιο µικρών καθυστερήσεων µεταξύ των κρατήσεων των καναλιών και των µεταδόσεων σε αυτά. Ο δεύτερος διαχωρισµός γίνεται µε βάση την κατανοµή των απαιτούµενων χρονοθυρίδων σε ένα σταθµό για τη µετάδοση πακέτων δεδοµένων σε ένα συγκεκριµένο κανάλι. Με βάση αυτό το κριτήριο οι αλγόριθµοι χρονοδροµολόγησης χωρίζονται σε: 26

Preemptive. Οι χρονοθυρίδες που χρειάζεται κάποιος σταθµός για να µεταδώσει τα δεδοµένα που έχει για κάποιο κανάλι είναι συνεχόµενες. Έτσι ο κάθε κόµβος συντονίζεται µόνο µία φορά σε κάθε κανάλι δεδοµένων Non-preemptive. Οι απαιτούµενες από κάθε σταθµό χρονοθυρίδες για µετάδοση σε ένα συγκεκριµένο κανάλι κατανέµονται µε µη συνεχόµενο τρόπο και υπάρχουν περισσότεροι συντονισµοί σε κάθε πρόγραµµα. 27

2. DAS & HTDM 2.1 Γενικά Στα πρωτόκολλα αυτά θεωρείται ένα οπτικό WDM δίκτυο εκποµπής-καιεπιλογής µε τοπολογία αστέρα. Υπάρχουν Ν σταθµοί και W+1 µήκη κύµατος (όπου W=N). ηλαδή υπάρχουν τα µήκη κύµατος λ i (i = 1, 2, 3,, N) τα οποία αντιστοιχούν το καθένα σε ένα κόµβο και υπάρχει και ένα επιπλέον µήκος κύµατος, το οποίο χρησιµοποιείται για τη µετάδοση της πληροφορίας ελέγχου και χρησιµοποιείται από όλους τους σταθµούς. Από πλευράς εξοπλισµού σε κάθε κόµβο υπάρχει ένας σταθερά συντονισµένος ποµποδέκτης στο κανάλι ελέγχου, ένας σταθερά συντονισµένος µεταδότης για µετάδοση στο κανάλι βάσης του κάθε σταθµού και ένας µεταβλητός αποδέκτης µε ικανότητα συντονισµού σε όλο το φάσµα συχνοτήτων που χρησιµοποιείται. Το δίκτυο δηλαδή από πλευράς εξοπλισµού είναι CC-FT 2 -FR-TR. Εξ ορισµού ο χρόνος που χρειάζεται για τη µετάδοση ενός πακέτου δεδοµένων θεωρείται σταθερός και ίσο µε µια χρονοθυρίδα. Στο κανάλι ελέγχου µια χρονοθυρίδα διαιρείται σε Ν µικροθυρίδες (µία για κάθε σταθµό). Ο κάθε σταθµός µπορεί να προσπελάσει το κανάλι ελέγχου σε µία µόνο µικροθυρίδα ανά κύκλο κι έτσι αποφεύγονται οι συγκρούσεις. Ο κάθε κόµβος διαθέτει Ν ουρές, στις οποίες τοποθετούνται αντίστοιχα τα πακέτα προς µετάδοση που υπάρχουν στον εν λόγω σταθµό για τους υπόλοιπους. Για λόγους απλότητας θεωρείται ότι ο κάθε σταθµός µπορεί να στείλει πακέτο προς τον εαυτό του. Τα πακέτα θεωρούνται ότι έχουν ένα προκαθορισµένο µέγεθος b bits. Θεωρούµε ότι όλοι οι σταθµοί είναι συγχρονισµένοι µεταξύ τους. Ο χρόνος διαιρείται σε χρονοθυρίδες, µε την κάθε χρονοθυρίδα να ισούται µε το χρόνο που χρειάζεται για να µεταδοθεί ένα πακέτο δεδοµένων ο οποίος συµβολίζεται µε. Έτσι ισχύει η σχέση = C b seconds 28

όπου C είναι η χωρητικότητα του καναλιού. Τέλος θα συµβολίζουµε τη µέγιστη καθυστέρηση διάδοσης ή αλλιώς propagation time ανάµεσα σε δύο οποιουσδήποτε σταθµούς µε r. HTDM Το πρωτόκολλο θεωρεί ότι οι χρονοθυρίδες προανατίθενται σε ζεύγη µεταδοτών αποδεκτών όπως συµβαίνει και στο I-TDMA που περιγράφεται πιο πάνω µε τη διαφορά ότι ο κάθε σταθµός µπορεί να µεταδώσει και προς τον εαυτό του. Το µήκος του κάθε κύκλου θεωρείται ότι είναι ίσο µε Ν+Μ χρονοθυρίδες, όπου Ν είναι ο αριθµός των σταθµών και Μ είναι ένας ακέραιος αριθµός. Μετά από κάθε _N/M_ χρονοθυρίδες υπάρχει µια ανοιχτή χρονοθυρίδα στην οποία δεν υπάρχει προανάθεση ζευγών µεταδότη αποδέκτη. Στην αρχή κάθε τέτοιας ανοικτής θυρίδας εκτελείται σε κάθε κόµβο ο αλγόριθµος χρονοδροµολόγησης RSA (εξηγείται παρακάτω) για να καθορισθεί ένα πρόγραµµα µεταδόσεων για αυτή τη θυρίδα. Όσον αφορά τώρα την πληροφορία ελέγχου αυτή θεωρείται ότι χρειάζεται R µονάδες χρόνου για να φτάσει σε όλους τους κόµβους. Αυτή η πληροφορία µεταδίδεται στο τέλος κάθε ανοικτής θυρίδας και αφορά την τρέχουσα κατάσταση των ουρών προορισµού του κάθε σταθµού συµπεριλαµβανοµένων και των µεταδόσεων που θα έχουν γίνει στις R χρονικές µονάδες που µεσολαβούν µέχρι να παραλάβουν όλοι οι κόµβοι την πληροφορία αυτή. Παρακάτω φαίνεται ένας χάρτης ανάθεσης µεταδοτών / αποδεκτών για ένα δίκτυο µε Ν = W = 4 και Μ = 2. 29

Χάρτης Ανάθεσης Μεταδοτών / Αποδεκτών Μεταδότες Αποδέκτες 0 0 1 2 3 0 1 1 3 0 1 2 3 0 2 2 3 0 1 2 3 3 1 2 3 0 1 2 Χρονοθυρίδες 1 2 3 4 1 6 1 2 3 Κύκλοι 1ος κύκλος 2ος κύκλος 2.2 DAS ΠΕΡΙΓΡΑΦΗ & ΑΝΑΛΥΣΗ Το πρωτόκολλο αυτό όπως αναφέρθηκε και παραπάνω έχει πολλά κοινά στοιχεία όσον αφορά τη δοµή του δικτύου αλλά και τον εξοπλισµό των κόµβων µε το HTDM. Όπως προαναφέρθηκε ο κάθε σταθµός διατηρεί Ν ουρές µε τα πακέτα που έχει να στείλει για τον κάθε έναν από τους Ν κόµβους του δικτύου. Επίσης ο κάθε κόµβος διατηρεί ένα πίνακα απαιτήσεων κίνησης ο οποίος αντιπροσωπεύει τη συνολική κατάσταση σε όλες τις ουρές όλων των κόµβων του δικτύου. Αυτό ο πίνακας είναι ο πίνακας D=[d ij ], όπου το στοιχείο d ij ισούται µε το πλήθος των πακέτων δεδοµένων του κόµβου i που προορίζονται για τον κόµβο j. Στην αρχή κάθε κύκλου και χρησιµοποιώντας τον πίνακα D καταρτίζεται ένα πρόγραµµα µεταδόσεων τέτοιο ώστε να αποφεύγονται οι συγκρούσεις καναλιού και αποδέκτη. Το πρόγραµµα αυτό καταρτίζεται µε βάση τον αλγόριθµο RSA Random Scheduling Algorithm ο οποίος και αποτελεί τη βάση του πρωτοκόλλου. 30

RSA Επιλέγεται τυχαία ένας σταθµός από του N. Έστω ότι επιλέγεται ο σταθµός i, 1 i N. Στη συνέχεια επιλέγεται τυχαία µία από τις µη κενές ουρές του σταθµού i. Έστω ότι επιλέγεται η ουρά r, 1 r N. Στην επόµενη χρονοθυρίδα καθορίζεται ότι ο σταθµός i θα µεταδώσει στο σταθµό r το πακέτο που βρίσκεται στην κορυφή αυτής της ουράς κι έτσι ο αποδέκτης r θα πρέπει να συντονίσει το µεταδότη του στο κανάλι βάσης του σταθµού i. Αν όλες οι ουρές του σταθµού i είναι κενές τότε δεν επιλέγεται κανένας σταθµός ως παραλήπτης καθώς ο σταθµός i δεν έχει κανένα πακέτο προς αποστολή. Στο επόµενο βήµα επιλέγεται ένας δεύτερος σταθµός ως αποστολέας, έστω ο σταθµός j µε την απαραίτητη προϋπόθεση ότι i j καθώς για το σταθµό i έχει ήδη καθοριστεί ο σταθµός στον οποίο θα µεταδώσει. Στη συνέχεια επιλέγεται ανάµεσα στις µη κενές ουρές του j µια τυχαία ουρά s τέτοια ώστε s r έτσι ώστε να µην προκύψει σύγκρουση αποδέκτη. Έτσι καθορίζεται ότι στην επόµενη χρονοθυρίδα ο σταθµός j θα µεταδώσει στο σταθµό s το πακέτο που βρίσκεται στην κορυφή της συγκεκριµένης ουράς. Και πάλι ισχύει ότι αν δεν υπάρχουν µη κενές ουρές στο σταθµό j δεν επιλέγεται κανένας σταθµός ως αποδέκτης. Η διαδικασία συνεχίζεται µέχρι να παρθεί µια απόφαση µετάδοσης για όλους τους σταθµούς Μετά την εκτέλεση του RSA ο κάθε σταθµός µειώνει ανάλογα τις τιµές του πίνακα D που αντιπροσωπεύουν τον αριθµό των πακέτων που διατηρεί ο κάθε σταθµός στις ουρές του, καθώς στο slot που ακολουθεί θα γίνουν οι αποστολές πακέτων που προγραµµατίσθηκαν. Ο αλγόριθµος αυτός έχει πολλά πλεονεκτήµατα. Εφόσον ο αλγόριθµος εκτελείται σε όλους τους σταθµούς ταυτόχρονα και µε το ίδιο seed, όλοι οι σταθµοί παράγουν το ίδιο πρόγραµµα χρονοδροµολόγησης κάθε φορά και δεν προκύπτουν µεταξύ τους διαφορές. Αυτό επιτρέπει σε όλους τους 31

σταθµούς να ξέρουν όλα τα ζευγάρια µεταδοτών αποδεκτών σε κάθε κύκλο κι έτσι µπορούν να ενηµερώσουν τον πίνακα D που διατηρεί ο καθένας από αυτούς κατάλληλα. Επίσης εφόσον οι αποστολείς και οι παραλήπτες επιλέγονται µε τυχαίο τρόπο κάθε φορά υπάρχει µια δίκαιη κατανοµή των αποστολέων στους παραλήπτες. Ένα άλλο πλεονέκτηµα τυ αλγορίθµου είναι ο περιορισµός της επιλογής ανάµεσα στις µη κενές ουρές ο οποίος αυξάνει την απόδοση του πρωτοκόλλου καθώς δε σπαταλούνται άδικα χρονοθυρίδες χωρίς µεταδόσεις για κάποιους σταθµούς. Τέλος εφόσον µε τη χρήση αυτού του αλγορίθµου χρονοδροµολόγησης δεν υπάρχει η πιθανότητα συγκρούσεων, δεν υπάρχει η ανάγκη για τη χρήση µηνυµάτων επιβεβαιώσεων κι έτσι µειώνεται η διάρκεια της διεκπεραίωσης µιας αποστολής πακέτου κατά r. Για να εφαρµοσθεί όµως χωρίς σφάλµατα ο αλγόριθµος RSA υπάρχουν ορισµένες απαιτήσεις όσον αφορά την διάδοση της πληροφορίας ελέγχου έτσι ώστε να µπορεί να γίνεται σωστή ενηµέρωση του πίνακα D που διατηρεί ο κάθε κόµβος. Καταρχήν πρέπει να γίνει κατανοητός ο τρόπος µε τον οποίο ο κάθε κόµβος αποκτά πρόσβαση στο κανάλι ελέγχου λ 0. Ο συνολικός χρόνος που έχουν όλοι οι σταθµοί για να µεταδώσουν την πληροφορία ελέγχου συµβολίζεται µε F s και ισχύει F s = Ο χρόνος στο κανάλι ελέγχου (F s ) διαιρείται επιπλέον σε Ν µικροθυρίδες. Η κάθε µία από αυτές τις µικροθυρίδες προανατίθεται σε ένα από τους Ν σταθµούς κι έτσι δεν υπάρχουν συγκρούσεις στη χρήση του καναλιού ελέγχου. Ο κάθε σταθµός χρησιµοποιεί τη µικροθυρίδα του για να στείλει τα Ν bits της πληροφορίας ελέγχου. Στο τέλος της χρονοθυρίδας κατά την οποία γίνεται η µετάδοση των πακέτων ή αλλιώς στην αρχή του επόµενου κύκλου γίνεται ενηµέρωση του πίνακα D σε κάθε σταθµό, µέσω της πληροφορίας ελέγχου. Για την ακρίβεια ο κάθε σταθµός στέλνει κάποια πληροφορία ελέγχου στους υπόλοιπους σταθµούς 32

µέσω του καναλιού ελέγχου λ 0 για το πόσα πακέτα δηµιουργήθηκαν και για ποιους προορισµούς. Σε κάθε κύκλο η δηµιουργία πακέτων περιορίζεται σε ένα πακέτο για κάθε ουρά που διατηρεί ο κάθε σταθµός. Έτσι αυτή η πληροφορία µπορεί να παρασταθεί από µια σειρά Ν bits την οποία θα πρέπει να στείλει ο κάθε σταθµός στους υπόλοιπους. Αν αριθµήσουµε τα bits του πακέτου ελέγχου που στέλνει ένας σταθµός από 1 έως Ν, το i-οστό bit αντιπροσωπεύει τη δηµιουργία ή µη κάποιου πακέτου µε αποστολέα το σταθµό στον οποίο ανήκει το πακέτο ελέγχου και παραλήπτη το σταθµό i. Η τιµή 0 σηµαίνει ότι δεν υπάρχει δηµιουργία πακέτου ενώ η τιµή 1 σηµαίνει ότι έχει δηµιουργηθεί ένα πακέτο για τον αντίστοιχο προορισµό. Έτσι σε κάθε κύκλο η συνολική πληροφορία ελέγχου που διακινείται στο κανάλι ελέγχου είναι Ν 2 bits (N bits x N σταθµοί). Με βάση την πληροφορία ελέγχου που λαµβάνει ο κάθε σταθµός ενηµερώνει τον πίνακα απαιτήσεων κίνησης έτσι ώστε να αντιπροσωπεύει την τρέχουσα κατάσταση του δικτύου. Είναι εύκολο να καταλάβει κανείς ότι η καθυστέρηση διάδοσης ισχύει και εδώ κι έτσι η πληροφορία θα χρειαστεί r µονάδες χρόνου για να µεταδοθεί σε όλους τους σταθµούς. Έτσι αυτές οι r µονάδες χρόνου είναι η ελάχιστη καθυστέρηση που θα έχει ένα πακέτο στην ουρά. Όπως γίνεται φανερό η πληροφορία ελέγχου που χρειάζεται να µεταδίδεται σε κάθε κύκλο είναι αρκετή και αυτό αποτελεί ένα σηµαντικό µειονέκτηµα του πρωτοκόλλου. Εφόσον πρέπει να µεταδοθούν Ν 2 bits σε κάθε slot το οποίο διαρκεί χρονικές µονάδες, είναι εµφανές ότι απαιτούµενη χωρητικότητα καναλιού ελέγχου = 2 N Το γεγονός αυτό κάνει εµφανή την αδυναµία του πρωτοκόλλου να υποστηρίξει δίκτυα µε µεγάλο αριθµό κόµβων. Π.χ. αν δεχθούµε ότι το µέγεθος του κάθε πακέτου είναι 1000 bits και υποθέσουµε ότι η χωρητικότητα του κάθε καναλιού είναι 1 Gbps, τότε προκύπτει διαδοχικά 3 b 10 = sec = C 9 sec = 10-6 sec 10 33

C = 2 N 2 N = c = 10 9 10-6 = 1000 Άρα Ν 30. Ακόµη και αν θεωρήσουµε πολύ µεγαλύτερα πακέτα της τάξης των 1000 bytes, και πάλι ο αριθµός των σταθµών δεν µπορεί να ξεπεράσει τους 90. ηµιουργία πακέτων Για να µπορέσουµε να µελετήσουµε την απόδοση του DAS κάνουµε κάποιες βασικές υποθέσεις. Αρχικά υποθέτουµε ότι οι ουρές µε τα πακέτα προς αποστολή που διατηρεί ο κάθε σταθµός έχουν άπειρη χωρητικότητα και ότι τα πακέτα κάθε ουράς εξυπηρετούνται σύµφωνα µε τον αλγόριθµο FCFS. Αν συµβολίσουµε µε (i,j) την ουρά j στο σταθµό I, τότε τα πακέτα σε κάθε ουρά δηµιουργούνται σύµφωνα µε µια διαδικασία Bernoulli µε πιθανότητα p i,j τέτοια N ώστε p 1 και p 1. Όταν ισχύει η ισότητα στις δύο παραπάνω i= 1 i, j N j= 1 i, j σχέσεις έχουµε κατά µέσο όρο: 1 άφιξη πακέτου / κύκλο σε κάθε σταθµό 1 άφιξη πακέτου / κύκλο για κάθε σταθµό Στην ανάλυση απόδοσης που πραγµατοποιούµε διακρίνουµε δύο ξεχωριστές περιπτώσεις διαδικασίας δηµιουργίας πακέτων, την οµοιόµορφη (uniform traffic) και τη µη-οµοιόµορφη (non-uniform traffic). Κατά την οµοιόµορφη δηµιουργία πακέτων, τα πακέτα δηµιουργούνται στον κάθε σταθµό µε τον ίδιο ρυθµό. Επίσης το κάθε πακέτο που φθάνει σε ένα σταθµό έχει ίσες πιθανότητες (1/Ν) να έχει σαν παραλήπτη οποιονδήποτε από τους Ν σταθµούς και κατά συνέπεια να τοποθετηθεί σε οποιαδήποτε από τις N ουρές που διατηρεί ο σταθµός. Έτσι αν συµβολίσουµε µε p i = N l= 1 p i l, την πιθανότητα µε την οποία δηµιουργούνται πακέτα στο σταθµό i, τότε ισχύει p = 34

p i = p j. Έτσι η πιθανότητα που έχει το κάθε πακέτο να βρεθεί σε µία οποιαδήποτε ουρά είναι p/n. Έτσι αν δηµιουργήσουµε στον πίνακα µε τις πιθανότητες να δηµιουργηθεί ένα πακέτο σε κάποιο σταθµό i για ένα σταθµό j σε κάθε κύκλο, τότε θα έχουµε έναν πίνακα NxN ο οποίος θα έχει όλα τα στοιχεία του ίσα µε p/n. Όταν έχουµε µη-οµοιόµορφη δηµιουργία πακέτων τα πακέτα δε δηµιουργούνται µε την ίδια πιθανότητα σε όλους τους σταθµούς και ούτε και κατανέµονται µε την ίδια πιθανότητα στις ουρές αναµονής κα θε σταθµού. Οι µόνοι περιορισµοί που ισχύουν στον ανάλογο πίνακα πιθανοτήτων είναι N i= 1 p 1 και p 1, δηλαδή το άθροισµα κάθε στήλης και κάθε γραµµής i, j N j= 1 i, j δεν µπορεί να υπερβαίνει το 1. 35

2.3 ΠΡΟΣΟΜΟΙΩΣΗ 2.3.1 Ανάλυση Κώδικα Η προσοµοίωση του πρωτοκόλλου DAS έγινε χρησιµοποιώντας αντικειµενοστραφή προγραµµατισµό και συγκεκριµένα τη γλώσσα JAVA. Ο κώδικας έχει 8 κλάσεις οι οποίες περιγράφονται παρακάτω: 2.3.1.1 Class Station Η κλάση αυτή υλοποιεί όπως φαίνεται και από το όνοµα της τον κάθε έναν από τους σταθµούς του δικτύου. Μεταβλητές Οι βασικές µεταβλητές που χρησιµοποιούνται σε αυτήν την κλάση είναι οι εξής: int numberofchannels. Αντιπροσωπεύει τον αριθµό των καναλιών που χρησιµοποιούνται στο δίκτυό µας και ταυτόχρονα των αριθµό των σταθµών καθώς όπως είπαµε υπάρχει ένα κανάλι επικοινωνίας για κάθε σταθµό. Το κανάλι ελέγχου δεν συµπεριλαµβάνεται εδώ. int transmitchannel. Αποτελεί τον αριθµό του καναλιού στο οποίο εκπέµπει αποκλειστικά ο κάθε σταθµός και συνεπώς είναι η ταυτότητα του. int packetlength. Παριστάνει το µέγεθος (σε bits) του πακέτου που χρησιµοποιείται στο δίκτυο. boolean havesettranschan, havesetnumchan, havesetlabel. Μεταβλητές που λειτουργούν σαν flags για διάφορους ελέγχους. Αντικείµενα 36

Επίσης δηµιουργούνται τα παρακάτω αντικείµενα τα οποία εξασφαλίζουν επικοινωνία µε τις άλλες κλάσεις: Packet queues[][]. Είναι ένας πίνακας αντικειµένων Packet τα οποία υλοποιούν τα διάφορα πακέτα. Ο πίνακας αυτός χρησιµοποιείται για την υλοποίηση των ουρών αναµονής που διατηρεί ο κάθε σταθµός. Η πρώτη διάσταση αντιπροσωπεύει τον κάθε σταθµό κι έτσι είναι ίση µε τη τιµή της µεταβλητής numberofchannels ενώ η δεύτερη διάσταση αντιπροσωπεύει τον αριθµό των πακέτων προς αποστολή για τον κάθε σταθµό και προφανώς δεν είναι καθορισµένη εξ αρχής. Medium themedium RSATable thersatable PacketGen pgen Analyser theanalyser Συναρτήσεις void dosend(int time). Πραγµατοποιεί την αποστολή ενός πακέτου. Από τη συνάρτηση getreceiver του αντικειµένου thersatable βρίσκεται ο αριθµός-ταυτότητα του παραλήπτη και τοποθετείται στη µεταβλητή receiver. Γίνεται έλεγχος ότι ο παραλήπτης και ο αποστολέας του πακέτου δεν ταυτίζονται καθώς στην προσοµοίωση θεωρούµε ότι ο κάθε σταθµός δεν µπορεί να στείλει πακέτο στον εαυτό του. Καλείται η συνάρτηση settimesent(time) της κλάσης Packet µε την οποία αποθηκεύεται ο χρόνος αποστολής του πακέτου ο οποίος θα χρησιµέψει στις µετέπειτα µετρήσεις. Χρησιµοποιείται η συνάρτηση writepacket(transmitchannel,queues[receiver][0]) του αντικειµένου 37

themedium η οποία εγγράφει το προς αποστολή πακέτο στο κανάλι του µέσου που αντιστοιχεί στο συγκεκριµένο αποστολέα. Γίνεται διαγραφή του πακέτου που µόλις στείλαµε από την ουρά αναµονής που διατηρεί ο αποστολέας και δηµιουργείται µια καινούρια ουρά µε µήκος κατά ένα µικρότερο από την προηγούµενη στην οποία και τοποθετούνται τα εναποµείναντα πακέτα προς αποστολή. void doread(int time). ιαβάζει ένα πακέτο που εστάλη. Από τη συνάρτηση getsender του αντικειµένου thersatable βρίσκεται ο αριθµός-ταυτότητα του αποστολέα και τοποθετείται στη µεταβλητή sender. Γίνεται έλεγχος ότι ο παραλήπτης και ο αποστολέας του πακέτου δεν ταυτίζονται καθώς στην προσοµοίωση θεωρούµε ότι ο κάθε σταθµός δεν µπορεί να στείλει πακέτο στον εαυτό του. Χρησιµοποιείται η συνάρτηση readpacket(sender) του αντικειµένου themedium η οποία διαβάζει παίρνει το σταλµένο πακέτο από κανάλι του µέσου που αντιστοιχεί στον αποστολέα. Καλείται η συνάρτηση settimereceived(time) της κλάσης Packet µε την οποία αποθηκεύεται ο χρόνος παραλαβής του πακέτου ο οποίος θα χρησιµέψει στις µετέπειτα µετρήσεις. void packetcreation(int time). ηµιουργεί τα νέα πακέτα που θα έχει προς αποστολή ο σταθµός. Καλείται η συνάρτηση pgen.genpacket(transmitchannel,i) µέσω του αντικειµένου pgen η οποία δηµιουργεί µε µια σταθερή πιθανότητα τα πακέτα για όλους τους πιθανούς παραλήπτες. Για όσους παραλήπτες δηµιουργείται πακέτο καλείται η συνάρτηση addpacket(time,i) η οποία περιγράφεται παρακάτω. 38

void addpacket(int time,int i). Προσθέτει τα καινούρια πακέτα που δηµιουργούνται στις κατάλληλες ουρές αναµονής. Χρησιµοποιείται η συνάρτηση newpacket(transmitchannel,i) του αντικειµένου thersatable για να ενηµερωθεί ο RSATable. ηµιουργείται µια νέα ουρά αναµονής µε πλήθος στοιχείων ένα περισσότερο από την προηγούµενη στην οποία αντιγράφονται όλα τα προηγούµενα πακέτα προς αποστολή µαζί µε το καινούριο που µόλις δηµιουργήθηκε 2.3.1.2 Class Medium Η κλάση αυτή υλοποιεί το φυσικό µέσο επικοινωνίας το οποίο όπως έχουµε πει και στην περιγραφή του πρωτοκόλλου περιλαµβάνει 1 κανάλι ανά σταθµό. Μεταβλητές int numberofchannels. Αντιπροσωπεύει τον αριθµό των καναλιών που χρησιµοποιούνται στο δίκτυό µας και ταυτόχρονα των αριθµό των σταθµών καθώς όπως είπαµε υπάρχει ένα κανάλι επικοινωνίας για κάθε σταθµό. Το κανάλι ελέγχου δεν συµπεριλαµβάνεται εδώ. int time. Μεταβλητή η οποία κρατάει το χρόνο της προσοµοίωσης και η οποία αρχικοποιείται µε τιµή 0. int packetlength. Παριστάνει το µέγεθος (σε bits) του πακέτου που χρησιµοποιείται στο δίκτυο. int rateoftrans. Παριστάνει το ρυθµό µετάδοσης που υποστηρίζει το δίκτυο. 39

int travtime. Παριστάνει το χρόνο που χρειάζεται ένα πακέτο να δαπανήσει µέσα στο φυσικό µέσο επικοινωνίας ταξιδεύοντας από σταθµό σε σταθµό. int signaltime. Παριστάνει το πρώτο µέρος του κύκλου στο οποίος στέλνονται τα σήµατα ελέγχου και όπως φαίνεται και από τον Constructor της συγκεκριµένης κλάσης ισούται µε: numberofchannels*((numberofchannels/rateoftrans)+travtime). Είναι δηλαδή ίση µε το χρόνο που χρειάζονται όλοι οι σταθµοί µε τη σειρά να µεταδώσουν την πληροφορία ελέγχου τους και να αυτή να φτάσει στον προορισµό της. int packtime. Παριστάνει το δεύτερο µέρος του κύκλου στο οποίο στέλνονται τα δεδοµένα στον Constructor ορίζεται ίση µε: (packetlength/rateoftrans)+travtime. ηλαδή είναι ίση µε το χρόνο που χρειάζεται να µεταδοθεί ένα πακέτο και να φτάσει αυτό στο προορισµό του καθώς όλα τα πακέτα µεταδίδονται και ταξιδεύουν µέσα στο µέσο ταυτόχρονα. double prob. Μεταβλητή η οποία καθορίζει την πιθανότητα παραγωγής πακέτων. int numcycles. Καθορίζει τον αριθµό των κύκλων για τον οποίο θα τρέξει η προσοµοίωση boolean iscoord. Μεταβλητή η οποία ελέγχει αν τα πακέτα δηµιουργούνται βάση πιθανοτήτων ή αν η δηµιουργία νέων πακέτων είναι καθοδηγούµενη από δεδοµένα που καθορίζονται από το χρήστη. Αντικείµενα Packet packs[]. Πίνακας αντικειµένων κλάσης Packet ο οποίος περιλαµβάνει τα πακέτα που αποστέλλονται κάθε φορά. Station thestations[]. Πίνακας αντικειµένων κλάσης Station ο οποίος περιλαµβάνει όλους τους σταθµούς του δικτύου. 40

RSATable thersatable PacketGen pgen Analyser theanalyser FileData infile Συναρτήσεις void setupstations(). Γίνεται αρχικοποίηση του πίνακα thestations[] καλώντας για κάθε θέση του πίνακα τον Constructor της κλάσης Station. void writepacket(int n,packet a). Εγγράφει στο µέσο επικοινωνίας το πακέτο a του σταθµού n το οποίο παίρνεται από το πίνακα packs[]. Packet readpacket(int n). ιαβάζει το πακέτο που έστειλε ο σταθµός n από το µέσο επικοινωνίας κι έχει σαν τιµή επιστροφής το πακέτο που βρίσκεται στη θέση packs[n]. private void docycle(). Πραγµατοποιεί έναν κύκλο της προσοµοίωσης Ολόκληρη η συνάρτηση µπαίνει µέσα σε ένα βρόχο ο οποίος καθορίζει τον αριθµό των κύκλων για τον οποίο θα τρέξει η προσοµοίωση Αρχικά ελέγχεται µέσω της µεταβλητής iscoord ο τρόπος µε τον οποίο θα δηµιουργούνται τα πακέτα όπως εξηγήθηκε και παραπάνω. Αν καθοριστεί ότι τα πακέτα θα δηµιουργούνται µε βάση κάποια δεδοµένα που θα δίνει ο χρήστης και όχι µε βάση κάποια πιθανότητα, τότε διαβάζεται µέσω του αντικειµένου infile τα δεδοµένα του χρήστη. Σε διαφορετική περίπτωση καλείται για κάθε σταθµό η συνάρτηση packetcreation(time) η οποία και δηµιουργεί τα νέα πακέτα για κάθε σταθµό. 41

Με βάση και τα καινούρια πακέτα που δηµιουργήθηκαν εκτελείται ο αλγόριθµος RSA µέσω της συνάρτησης dorsatable() του αντικειµένου thersatable. Ο χρόνος της προσοµοίωσης προχωρά κατά signaltime. Γίνεται εκποµπή του πακέτου που έχει προς αποστολή ο κάθε σταθµός µέσω της συνάρτησης dosend(time) της κλάσης Station. Ο χρόνος της προσοµοίωσης προχωρά κατά packtime. Γίνεται ανάγνωση παραλαβή του κάθε πακέτου που εστάλη από τον κατάλληλο παραλήπτη µέσω της συνάρτησης doread(time) της κλάσης Station. 2.3.1.3 Class RSATable Η κλάση αυτή υλοποιεί τον πίνακα που χρησιµοποιεί ο αλγόριθµος RSA για να βγάλει το πρόγραµµα των µεταδόσεων και να δηµιουργήσει τα ζευγάρια αποστολέα παραλήπτη. Αυτός ο πίνακας είναι ο πίνακας D=[d ij ], όπου το στοιχείο d ij ισούται µε το πλήθος των πακέτων δεδοµένων του κόµβου i που προορίζονται για τον κόµβο j. Ουσιαστικά δηλαδή αντιπροσωπεύει την κατάσταση στις ουρές αναµονής όλων των σταθµών του δικτύου. Μεταβλητές int N. Αντιπροσωπεύει τον αριθµό των σταθµών και καθορίζει τη διάσταση των πινάκων που θα χρησιµοποιηθούν. int table[][]. Είναι ένας πίνακας ο οποίος καθορίζει τον αριθµό των πακέτων που έχει ο κάθε σταθµός για όλους τους υπόλοιπους. Είναι ουσιαστικά ο πίνακας πάνω στον οποίο εφαρµόζεται ο αλγόριθµος RSA. Όπως είπαµε και παραπάνω το στοιχείο d ij ισούται µε το πλήθος των πακέτων δεδοµένων του κόµβου i που προορίζονται για τον κόµβο j. boolean tsend[][]. Είναι ο πίνακας αποτέλεσµα του αλγορίθµου RSA. Αν το στοιχείο (i,j) του πίνακα είναι µονάδα, αυτό σηµαίνει ότι στη συνέχεια του 42

κύκλου ο αποστολέας i θα στείλει στον παραλήπτη j το πακέτο που έχει στην κορυφή της ουράς που διατηρεί για το συγκεκριµένο παραλήπτη. Random numgen. Γεννήτρια τυχαίων αριθµών. Συναρτήσεις void newpacket(int sender,int receiver). Ενηµερώνει το πίνακα table[][] αυξάνοντας κατά µία µονάδα το περιεχόµενο του στοιχείου table[sender][receiver] κάθε φορά που δηµιουργείται ένα νέο πακέτο µε αποστολέα τον sender και παραλήπτη τον receiver. int getreciever(int sender) & int getsender(int receiver). Η πρώτη επιστρέφει τον παραλήπτη για ένα συγκεκριµένο αποστολέα και η δεύτερη κάνει το αντίστροφο. Είναι συναρτήσεις που τις καλεί ο κάθε σταθµός για να στείλει και να διαβάσει το σωστό πακέτο. Η εύρεση της σωστής τιµής και στις δύο συναρτήσεις γίνεται µέσω του πίνακα tsend[][] ο οποίος δείχνει τα ζευγάρια αποστολέων παραληπτών. void dorsatable(). Εκτελεί τον αλγόριθµο RSA. ηµιουργούνται δύο νέοι µονοδιάστατοι πίνακες Boolean µε ονόµατα havechoseni[] και havechosenj[]. Οι πίνακες αυτοί δείχνουν ποιες γραµµές και στήλες του πίνακα RSA έχουν επιλεγεί κατά την εξέλιξη του αλγορίθµου. Αρχικοποιούνται οι δύο πίνακες που αναφέρθηκαν παραπάνω και φυσικά όλα τα στοιχεία τους παίρνουν την τιµή false. Για να επιλεγεί τυχαία ο επόµενος αποστολέας χρησιµοποιείται η συνάρτηση nextint της Random µεταβλητής numgen. Στη συνέχεια γίνεται έλεγχος του πίνακα havechoseni[] για να διαπιστωθεί αν ο συγκεκριµένος αποστολέας έχει επιλεγεί µέχρι τώρα. Αν κάτι τέτοιο ισχύει τότε επιλέγεται και πάλι τυχαία ένας αποστολέας µέχρις ότου 43

επιλεγεί κάποιος που δεν έχει επιλεγεί ξανά στην τρέχουσα εκτέλεση του αλγορίθµου. Στη συνέχεια σηµειώνουµε τον αποστολέα που επιλέγει στον πίνακα havechoseni[] µε true ώστε να µην επιλεγεί ξανά. Αφού έχει επιλεγεί ο αποστολέας γίνεται µια µέτρηση µέσω ενός βρόχου για το σε πόσους από τους µη επιλεγέντες µέχρι τώρα παραλήπτες έχει ο συγκεκριµένος αποστολέας κάποιο-α πακέτο-α να στείλει. Αυτός ο βρόχος εκτελείται εξετάζοντας σε κάθε βήµα την τιµή του στοιχείου table[sender][j] και του στοιχείου havechosenj[j]. Το πλήθος αυτών των σταθµών που µπορούν να είναι υποψήφιοι παραλήπτες περνάει στη µεταβλητή numofnonzeros. Εφόσον αυτός ο αριθµός δεν είναι 0, δηλαδή εφόσον αυτός ο σταθµός µπορεί να στείλει κάπου πακέτο, επιλέγεται τυχαία ο παραλήπτης του εν λόγω αποστολέα, χρησιµοποιώντας και πάλι τη συνάρτηση nextint. Η επιλογή αυτή γίνεται όσες φορές χρειαστεί µέχρις ότου να καταλήξουµε σε κάποιον από τους δυνατούς υποψήφιους παραλήπτες. Αφού επιλεγεί και ο παραλήπτης, αλλάζουµε και την τιµή του havechosenj[] για το συγκεκριµένο παραλήπτη ώστε να µην επιλεγεί ξανά στην τρέχουσα εκτέλεση του RSA. Εφόσον έχει επιλεγεί το ζευγάρι αποστολέα παραλήπτη, αλλάζουµε σε true την τιµή του πίνακα tsend[][] για το συγκεκριµένο ζευγάρι σταθµών και µειώνουµε κατά µια µονάδα το αντίστοιχο στοιχείο του πίνακα table[][]. Τα παραπάνω 3 βήµατα βρίσκονται µέσα σε ένα βρόχο και εκτελούνται N φορές (Ν αριθµός σταθµών) έως ότου βρεθεί ένας ή κανένας αποστολέας για κάθε σταθµό. 2.3.1.4 Class Packet Η κλάση αυτή υλοποιεί το πακέτο και όπως είναι φυσικό οι περισσότερες µεταβλητές της αφορούν τα χαρακτηριστικά του κάθε πακέτου. Μεταβλητές 44

int length. Καθορίζει το µέγεθος του κάθε πακέτου σε bits. int timesent. Αντιπροσωπεύει το χρόνο αποστολής του κάθε πακέτου. int timereceived. Αντιπροσωπεύει το χρόνο παραλαβής του κάθε πακέτου. int timecreated. Αντιπροσωπεύει το χρόνο δηµιουργίας του πακέτου. boolean havesetsent. Ελέγχει το αν έχει σταλεί το κάθε πακέτο. Αντικείµενα Analyser theanalyser. Χρησιµοποιείται για να προσθέτει το χρόνο αναµονής του κάθε πακέτου στο συνολικό χρόνο αναµονής όλων των πακέτων έτσι ώστε να µπορούν να βγουν τα στατιστικά αποτελέσµατα. Συναρτήσεις int getlength(). Επιστρέφει το µήκος του πακέτου. int gettimecreated(). Επιστρέφει το χρόνο δηµιουργίας του πακέτου. int gettimesent(). Επιστρέφει το χρόνο αποστολής του πακέτου. int gettimereceived(). Επιστρέφει το χρόνο παραλαβής του πακέτου. public void settimesent(int ts). Καθορίζει το χρόνο αποστολής του πακέτου και προσθέτει το χρόνο αναµονής του πακέτου στο συνολικό χρόνο αναµονής όλων των πακέτων. public void settimereceived(int tr). Καθορίζει το χρόνο παραλαβής του πακέτου. 45

2.3.1.5 Class Analyzer Αυτή η κλάση µαζεύει τις µετρήσεις των διαφόρων χρόνων αναµονή των διαφόρων πακέτων και βγάζει το µέσο χρόνο αναµονής για κάθε εκτέλεση του προσοµοιωτή. Μεταβλητές long packcount. Μετρητής των πακέτων που έχουν αποσταλεί. private long totdelay. Αντιπροσωπεύει το συνολικό χρόνο αναµονής όλων των πακέτων. Συναρτήσεις public void adddata(int delay). Καλείται κάθε φορά που κάποιο πακέτο φτάνει στον προορισµό του. Αυξάνει τον µετρητή πακέτων packcount κατά 1 και προσθέτει το όρισµα delay στο συνολικό χρόνο καθυστέρησης όλων των πακέτων totdelay. double getaveragedelay(). Εκτελεί τη µαθηµατική πράξη ((double)totdelay)/((double)packcount) και µας επιστρέφει το µέσο χρόνο αναµονής. 2.3.1.6 Class PacketGen Αυτή η κλάση είναι αυτή που καθορίζει το αν θα δηµιουργούνται πακέτα σε κάθε κύκλο και για κάθε σταθµό καθώς και την πιθανότητα µε την οποία αυτά δηµιουργούνται. 46

Μεταβλητές double prob. Χρησιµοποιείται µόνο αν έχουµε uniform traffic και καθορίζει την πιθανότητα µε την οποία δηµιουργούνται πακέτο σε κάθε σταθµό. Αποτελεί το system load της προσοµοίωσης. ys[][]. Χρησιµοποιείται µόνο για non-uniform traffic και καθορίζει την πιθανότητα δηµιουργίας πακέτου για κάθε ξεχωριστό ζεύγος αποστολέαπαραλήπτη. int numstations. Αντιπροσωπεύει τον αριθµό των σταθµών. Random rnums. Γεννήτρια τυχαίων αριθµών. boolean isuniform. Μεταβλητή Boolean η οποία ελέγχει αν έχουµε uniform traffic. Συναρτήσεις PacketGen(double pr,int n,long seed,filedata inf). (Constructor) Ελέγχεται το περιεχόµενο του αρχείου inf για να διαπιστωθεί αν έχουµε uniform traffic ή non-uniform traffic. Όπως έχει ειπωθεί και πιο πριν στο uniform traffic αρκεί να ορίσουµε µια πιθανότητα δηµιουργίας νέου πακέτου για κάθε σταθµό και αυτή ισχύει για όλους τους σταθµούς. Επίσης ο παραλήπτης καθορίζεται τυχαία και όλοι οι παραλήπτες έχουν την ίδια πιθανότητα να επιλεγούν (1/Ν). Αν υπάρχει non-uniform traffic τότε θα πρέπει να ορίσουµε έναν πίνακα πιθανοτήτων ΝxΝ ο οποίος θα καθορίζει την πιθανότητα δηµιουργίας πακέτου για κάθε ζεύγος αποστολέα-παραλήπτη χωριστά. 47

Αν υπάρχει uniform traffic υπολογίζεται η µαθηµατική έκφραση y=(int) (((pr*1000.0)/((double)(numstations-1)))+0.5). ηλαδή ουσιαστικά η πιθανότητα pr που είναι η πιθανότητα δηµιουργίας πακέτου σε ένα σταθµό διαιρείται µε το Ν για να αντιπροσωπεύει την πιθανότητα δηµιουργίας πακέτου για κάθε πιθανό παραλήπτη ξεχωριστά και στη συνέχει πολλαπλασιάζεται µε το 1000. Αν υπάρχει non-uniform traffic τότε δηµιουργείται ένας πίνακας ΝxΝ. Στη συνέχεια καλείται η συνάρτηση inf.getprob(i,j) η οποία παίρνει τις πιθανότητες από το αρχείο στο οποίο βάζει τα δεδοµένα ο χρήστης. Κάθε τέτοια τιµή πολλαπλασιάζεται µε το 1000 και τοποθετείται στο αντίστοιχο στοιχείο του πίνακα ys[][]. boolean genpacket(int st,int re). Καθορίζει για το αν θα δηµιουργηθεί πακέτο. ηµιουργείται ένας τυχαίος αριθµός µεταξύ 0 και 999 και τοποθετείται στη µεταβλητή x. Αν έχουµε uniform traffic, αυτή η µεταβλητή συγκρίνεται µε τον y που δηµιουργήσαµε παραπάνω και αν είναι µικρότερη τότε δηµιουργείται πακέτο. Σε διαφορετική περίπτωση δε δηµιουργείται πακέτο. Αν έχουµε non-uniform traffic, τότε αυτή η µεταβλητή x συγκρίνεται µε το στοιχείο ys[st][re] το οποίο αντιστοιχεί στο συγκεκριµένο ζευγάρι αποστολέα παραλήπτη. 2.3.1.7 Class FileData Αυτή η κλάση χρησιµεύει για να διαβάσει το αρχείο µε τις παραµέτρους που δίνει ο χρήστης και να µπορέσει να περάσει αυτές τις παραµέτρους στην προσοµοίωση του πρωτοκόλλου. Όπως είναι φυσικό το κείµενο το οποίο γράφει ο χρήστης για το πέρασµα των παραµέτρων πρέπει να έχει µια 48

αυστηρώς καθορισµένη µορφή για να µπορεί να το διαβάσει το πρόγραµµα χωρίς προβλήµατα. Μεταβλητές int numstations,seed,packetlength,travtime,rateoftrans,numcycles. Οι µεταβλητές αυτές χρησιµοποιούνται για να διαβαστούν οι παράµετροι: Αριθµός σταθµών, τυχαίος αριθµός για την παραγωγή πακέτων, µήκος πακέτου, propagation time, ρυθµός µετάδοσης δεδοµένων και αριθµός των κύκλων της προσοµοίωσης αντίστοιχα. int uniformtraffic. Καθορίζει το αν θα έχουµε uniform traffic. Αν η τιµή που θα διαβαστεί από το αρχείο είναι 1, τότε έχουµε uniform traffic, αν είναι 2 τότε έχουµε non-uniform traffic και αν είναι 3 τότε έχουµε coordinated traffic. double prob,probs[][]. Πιθανότητα δηµιουργίας πακέτου για uniform traffic ή πίνακας πιθανοτήτων για non-uniform traffic. File thefile. Αντικείµενο για το αρχείο FileInputStream thestream. Μεταβλητή για το stream µε το οποίο θα γίνεται η ανάγνωση του αρχείου. Συναρτήσεις int getnumstations(). Επιστρέφει τον αριθµό των σταθµών. int getseed().επιστρέφει τον τυχαίο αριθµό που χρησιµοποιείται ια τη δηµιουργία πακέτων. int getpacketlength(). Επιστρέφει το µήκος του πακέτου. 49

int gettravtime(). Επιστρέφει το χρόνο που ταξιδεύει ένα πακέτο µέσα στην οπτική ίνα (propagation time) int getrateoftrans(). Επιστρέφει το ρυθµό µετάδοσης δεδοµένων int getnumcycles(). Επιστρέφει τον αριθµό των κύκλων για τον οποίο θα τρέξει η προσοµοίωση. boolean isuniform(),boolean isnonuniform(),boolean iscoord(). Ανάλογα µε την τιµή της µεταβλητής uniformtraffic, αυτές οι τρεις συναρτήσεις καθορίζουν το είδος του traffic που θα έχουµε. double getprob(). Χρησιµοποιείται όταν έχουµε uniform traffic και επιστρέφει την πιθανότητα δηµιουργίας πακέτου σε έναν οποιονδήποτε σταθµό, ή αλλιώς το system load. double getprob(int i,int j). Χρησιµοποιείται όταν έχουµε non-uniform traffic και επιστρέφει την πιθανότητα δηµιουργίας πακέτου µε αποστολέα το σταθµό i και παραλήπτη το σταθµό j. getpacnum(int cyc,int station,int receiver). Χρησιµοποιείται αν έχουµε coordinated traffic και επιστρέφει τον αριθµό πακέτων που παράγονται κατά τον κύκλο cyc µε αποστολέα το σταθµό station και παραλήπτη το σταθµό receiver. private void readline(). ιαβάζει µια γραµµή κειµένου από το αρχείο των παραµέτρων και την αγνοεί µέχρις ότου να διαβάσει ένα χαρακτήρα \n οπότε και αλλάζει σειρά. Η ανάγνωση γίνεται χρησιµοποιώντας έναν επαναληπτικό βρόχο. Μέσα στο βρόχο τοποθετείται στην ακέραια µεταβλητή inbyte η αριθµητική τιµή του τρέχοντος χαρακτήρα και στη συνέχεια αυτή συγκρίνεται µε την τιµή του χαρακτήρα \n. Μόλις διαβαστεί ο χαρακτήρας \n ο βρόχος τερµατίζει. private int readint(). Η συνάρτηση διαβάζει τον επόµενο ακέραιο που βρίσκεται στην τρέχουσα γραµµή. Αγνοεί του χαρακτήρες που προηγούνται του αριθµού, καθώς και τον χαρακτήρα που ακολουθεί τον αριθµό. 50

Ορίζονται οι µεταβλητές inbyte και ans και παίρνουν αρχική τιµή 0. Η µεταβλητή inbyte κρατάει τον τρέχον χαρακτήρα κατά την ανάγνωση, ενώ η µεταβλητή ans αποθηκεύει την αριθµητική τιµή του ακεραίου που διαβάστηκε. Επίσης ορίζεται η Boolean µεταβλητή reachednum η οποία παίρνει αρχική τιµή false και η οποία θα πάρει την τιµή true µόλις η ανάγνωση φτάσει στο πρώτο ψηφίο του ακεραίου. Στη συνέχεια υπάρχει ένας επαναληπτικός βρόχος ο οποίος σε κάθε επανάληψη του διαβάζει τον επόµενο χαρακτήρα. Οι χαρακτήρες που δεν είναι ψηφία αγνοούνται. Μόλις διαβαστεί ένας χαρακτήρας ο οποίος έχει αριθµητική τιµή µεταξύ 0 και 9 η reachednum παίρνει την τιµή true και υπολογίζεται η αριθµητική τιµή του ακεραίου που έχει διαβαστεί µέχρι εκείνη τη στιγµή. Μόλις διαβαστεί ένας χαρακτήρας ο οποίος δεν είναι µεταξύ του 0 και του 9 και εφόσον η reachednum έχει την τιµή true (που σηµαίνει ότι η ανάγνωση έχει φτάσει στον ακέραιο) αυτό σηµαίνει ότι η ανάγνωση του ακεραίου έχει τελειώσει και ο βρόχος διακόπτεται Στη συνέχεια αγνοείται ο επόµενος χαρακτήρας αλλαγής γραµµής η συνάρτηση επιστρέφει την τιµή της µεταβλητής ans. private double readdouble(). Η συνάρτηση διαβάζει τον επόµενο double που βρίσκεται στην τρέχουσα γραµµή. Όπως και η readint() αγνοεί του χαρακτήρες που προηγούνται του αριθµού, καθώς και τον χαρακτήρα που ακολουθεί τον αριθµό. Ορίζονται οι µεταβλητές inbyte, intpart και decpart και παίρνουν αρχική τιµή 0. Η µεταβλητή inbyte χρησιµοποιείται για την αποθήκευση του τρέχοντος χαρακτήρα κατά την ανάγνωση, ενώ οι µεταβλητές intpart και decpart χρησιµοποιούνται για την αποθήκευση της αριθµητική τιµής του ακέραιου και του δεκαδικού τµήµατος του αριθµού αντίστοιχα. Επίσης ορίζεται η µεταβλητή declen η οποία παίρνει αρχική τιµή 1 και χρησιµεύει στο να κρατάει τη δύναµη του 10 µε την οποία πρέπει να διαιρεθεί η τιµή της decpart για να µας δώσει 51

την κανονική αριθµητική τιµή του δεκαδικού τµήµατος του δεκαδικού που διαβάζεται. Τέλος ορίζονται οι Boolean µεταβλητές reachednum και reacheddec µε αρχική τιµή false και η τιµή τους γίνεται true όταν η ανάγνωση φτάσει στο ακέραιο και στο δεκαδικό µέρος του αριθµού αντίστοιχα. Ο πρώτος βρόχος της συνάρτησης λειτουργεί όπως και ο βρόχος της συνάρτησης readint() µε τη διαφορά ότι προβλέπεται και η ανάγνωση του χαρακτήρα. ή, η οποία σηµατοδοτεί την έναρξη του δεκαδικού µέρους του αριθµού και συνεπώς αλλάζει την τιµή της reacheddec σε true. Ο υπολογισµός της αριθµητικής τιµής του ακέραιου τµήµατος γίνεται ακριβώς όπως και στη συνάρτηση readint(). Η τιµή αυτή αποθηκεύεται στη µεταβλητή intpart. Μόλις γίνει true η τιµή της reacheddec ο πρώτος βρόχος τερµατίζεται και αρχίζει ο δεύτερος για την ανάγνωση του δεκαδικού µέρους του αριθµού. Η αριθµητική τιµή του δεκαδικού τµήµατος υπολογίζεται µε τη µορφή ακεραίου. Για παράδειγµα κατά την ανάγνωση του δεκαδικού τµήµατος του αριθµού 153.485 στη µεταβλητή decpart αποθηκεύεται ο ακέραιος 485. Παράλληλα όµως η µεταβλητή πολλαπλασιάζεται µε το 10 σε κάθε επανάληψη κι έτσι υπολογίζεται η δύναµη του 10 µε την οποία πρέπει να διαιρεθεί η τιµή της decpart. Μόλις διαβαστεί χαρακτήρας του οποίου η τιµή δε βρίσκεται µεταξύ 0 και 9 τερµατίζεται και ο δεύτερος βρόχος. Στη συνέχεια ακολουθεί ο υπολογισµός της αριθµητικής τιµής του δεκαδικού αριθµού που µόλις διαβάστηκε. Έτσι υπολογίζεται η µαθηµατική έκφραση: (double)intpart+((double)decpart/(double)declen) και η τιµή της επιστρέφεται από τη συνάρτηση. private int readtype(). Η συνάρτηση αυτή διαβάζει µόνο ένα χαρακτήρα και επιστρέφει µια αριθµητική τιµή. Αν διαβάσει το χαρακτήρα U ή u επιστρέφει την τιµή 1, αν διαβάσει το χαρακτήρα Ν ή n επιστρέφει την τιµή 2, ενώ αν διαβάσει οποιοδήποτε άλλο χαρακτήρα επιστρέφει την τιµή 3. Η τιµή που 52

επιστρέφει αυτή η συνάρτηση καθορίζει τον τύπο traffic που θα συναντήσουµε κατά την προσοµοίωση. public FileData(String filename). (Constructor) ηµιουργείται ένα αντικείµενο τύπου File περνώντας σαν όρισµα το όνοµα αρχείου που περιέχει τις παραµέτρους. Το αντικείµενο έχει όνοµα thefile. Ελέγχεται αν υπάρχει το αρχείο που δόθηκε σαν όρισµα και αν δεν υπάρχει παράγεται µήνυµα σφάλµατος. Στη συνέχεια τα δεδοµένα του αρχείου παραµέτρων περνούν σαν stream για την ανάγνωση που θα ακολουθήσει. Με την πρώτη εντολή readline(); διαβάζεται από το αρχείο των παραµέτρων η γραµµή κειµένου DAS Simulation και στη συνέχεια διαβάζεται µε την εντολή readint(); ο ακέραιος της επόµενης γραµµής που συµβολίζει την έκδοση του προσοµοιωτή και πρέπει να έχει την τιµή 1 για να συνεχίσει κανονικά η ανάγνωση του αρχείου. Στη συνέχεια υπάρχει µια σειρά εντολών readline(); που διαβάζουν µια γραµµή κειµένου η οποία περιέχει την περιγραφή της παραµέτρου που ακολουθεί στην επόµενη γραµµή και εντολών readint(); και readtype(); οι οποίες διαβάζουν τις παραµέτρους και αποθηκεύουν τις τιµές τους στις κατάλληλες µεταβλητές. Ανάλογα µε την τιµή που θα αποθηκευτεί στη µεταβλητή uniformtraffic µε την εντολή uniformtraffic=readtype(); θα καθοριστεί και ο τύπος traffic που θα έχουµε συνεπώς η µορφή της παραµέτρου που ακολουθεί την γραµµή κειµένου System Load:. Ακολουθούν 2 εντολές readline(); οι οποίες στέλνουν την ανάγνωση στην τελευταία παράµετρο. Ελέγχεται η τιµή της uniformtraffic και ανάλογα µε την τιµή της εκτελείται ένα άλλο κοµµάτι κώδικα Αν έχουµε uniform traffic τότε διαβάζεται µόνο ένας αριθµός double και αποθηκεύεται στη µεταβλητή prob. 53

Αν έχουµε non-uniform traffic τότε διαβάζεται µια σειρά από Ν 2 double αριθµούς οι οποίοι γεµίζουν κατά γραµµές τον πίνακα probs ο οποίος έχει διαστάσεις ΝxN (όπου Ν ο αριθµός των σταθµών). Το στοιχείο του πίνακα probs[i][j] συµβολίζει την πιθανότητα δηµιουργίας πακέτου µε αποστολέα το σταθµό i και παραλήπτη το σταθµό j. Αν έχουµε coordinated traffic τότε διαβάζεται µια σειρά από numcycles Ν 2 ακέραιων αριθµών οι οποίοι γεµίζουν κατά γραµµές των πίνακα coord ο οποίος έχει διαστάσεις numcycles x Ν 2. Η κάθε γραµµή συµβολίζει τον αριθµό του κύκλου της προσοµοίωσης. Επίσης αν διαιρέσουµε τον αριθµό της στήλη ενός στοιχείου µε Ν, το πηλίκο που προκύπτει συµβολίζει το σταθµό-αποστολέα ενώ το υπόλοιπο της διαίρεσης συµβολίζει το σταθµό-παραλήπτη. Το κάθε στοιχείο αυτού του πίνακα συµβολίζει τον αριθµό πακέτων που δηµιουργούνται στο συγκεκριµένο κύκλο της προσοµοίωσης και για το συγκεκριµένο ζευγάρι αποστολέα-παραλήπτη. Μετά το διάβασµα και της τελευταίας αυτής παραµέτρου το αρχείο κλείνει. 2.3.1.8 Class DAS Η κλάση περιέχει τη συνάρτηση main και είναι αυτή που επικοινωνεί µε την κλάση FileData για να πάρει τις τιµές των παραµέτρων που διαβάζονται από αυτή. Συνάρτηση main(string args[]) ηµιουργείται ένα αντικείµενο κλάσης FileData µε το όνοµα infile. Το όνοµα του αρχείου που δίνουµε κατά την εκτέλεση του προσοµοιωτή περνάει σαν όρισµα στη δηµιουργία του αντικειµένου αυτού. Αν δε δοθεί κάποιο όνοµα αρχείου από το χρήστη τότε επιλέγεται σαν default όνοµα το das.das. 54

Στη συνέχεια αποθηκεύονται οι τιµές των παραµέτρων σε µεταβλητές µε τη χρήση των συναρτήσεων get της κλάσης FileData. ηµιουργείται ένα νέο αντικείµενο κλάσης Analyzer µε όνοµα theanalyzer το οποίο και θα εξάγει το µέσο χρόνο καθυστέρησης των πακέτων. Εµφανίζονται στην οθόνη της προσοµοίωσης οι τιµές των παραµέτρων που χρησιµοποιούνται και δηµιουργείται το αντικείµενο themedium (το οποίο είναι κλάσης Medium) µε ορίσµατα αυτές τις παραµέτρους. Μετά το τέλος της προσοµοίωσης εµφανίζεται στην οθόνη το µήνυµα Average packet delay: ακολουθούµενο από το µέσο χρόνο αναµονής πακέτου που υπολογίστηκε. 2.3.2 Κείµενο παραµέτρων Το κείµενο µε τις παραµέτρους θα πρέπει να έχει µια συγκειµένη µορφή καθώς αυτή είναι η µοναδική µορφή την οποία µπορεί να διαβάσει η κλάση FileData. Τη µορφή αυτή µπορεί κανείς να την εξάγει αν διαβάσει την περιγραφή της κλάσης FileData παραπάνω αλλά περιγράφεται και εδώ. Στην αρχή του κειµένου υπάρχει η φράση DAS Simulation αλλά ακόµη µπορεί να υπάρχει και οποιαδήποτε άλλη φράση κειµένου σαν τίτλος. Στην επόµενη γραµµή είναι απαραίτητο να υπάρχει ο αριθµός 1 που είναι η έκδοση του προσοµοιωτή. Στη συνέχεια το κείµενο πρέπει να έχει την εξής µορφή: <Γραµµή κειµένου - Περιγραφή παραµέτρου> Ακέραιος (Αριθµός σταθµών) 55

<Γραµµή κειµένου - Περιγραφή παραµέτρου> Ακέραιος (Seed Προσοµοίωσης) <Γραµµή κειµένου - Περιγραφή παραµέτρου> Ακέραιος (Μέγεθος πακέτου σε bits) <Γραµµή κειµένου - Περιγραφή παραµέτρου> Ακέραιος (Propagation Time) <Γραµµή κειµένου - Περιγραφή παραµέτρου> Ακέραιος (Ρυθµός µετάδοσης σε bit/sec) <Γραµµή κειµένου - Περιγραφή παραµέτρου> Ακέραιος (Αριθµός κύκλων προσοµοίωσης) <Γραµµή κειµένου - Περιγραφή παραµέτρου> Χαρακτήρας (Καθορισµός traffic) <Γραµµή κειµένου - Περιγραφή παραµέτρου> Uniform traffic. εκαδικός (System Load) Non-uniform traffic. N 2 δεκαδικοί Coordinated traffic. numcycles N 2 ακέραιοι Τρεις ενδεικτικές µορφές αρχείου παραµέτρων ανάλογα µε τον τύπο traffic που έχει επιλεγεί είναι οι ακόλουθες. 56

Παράδειγµα 1 DAS Simulation 1 Number of Stations: 64 Random number generator seed: 4 Packet length: 1024 Travel time of packet in medium: 0 Rate of data transmission (bit/second): 1024 Number of cycles to be simulated: 1000000 Traffic type ([U]niform / [N]onuniform / [C]oordinated): U System Load: 0.1 57

Παράδειγµα 2 DAS Simulation 1 Number of Stations: 5 Random number generator seed: 4 Packet length: 1024 Travel time of packet in medium: 0 Rate of data transmission (bit/second): 1024 Number of cycles to be simulated: 1000000 Traffic type ([U]niform / [N]onuniform / [C]oordinated): N System Load: 58

0.1 0.1 0.3 0.2 0.1 0.1 0.3 0.1 0.2 0.2 0.1 0.1 0.2 0.1 0.1 0.3 0.1 0.1 0.1 0.2 0.1 0.1 0.1 0.2 0.1 0.1 0.2 0.1 0.1 0.1 Παράδειγµα 3 DAS Simulation 1 Number of Stations: 5 Random number generator seed: 4 Packet length: 1024 Travel time of packet in medium: 0 Rate of data transmission (bit/second): 1024 59

Number of cycles to be simulated: 5 Traffic type ([U]niform / [N]onuniform / [C]oordinated): C System Load: 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 60

2.3.3 Εκτέλεση προσοµοίωσης Για να γίνει σωστά η εκτέλεση της προσοµοίωσης το αρχείο των παραµέτρων πρέπει να βρίσκεται στον ίδιο φάκελο µε τα αρχεία.class του κώδικα και η εκτέλεση γίνεται δίνοντας την εντολή: java DAS <όνοµα αρχείου παραµέτρων> Μια ενδεικτική εκτέλεση προσοµοίωσης φαίνεται παρακάτω: 61