ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

Σχετικά έγγραφα
ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ. Εργαστηριακές Ασκήσεις για το Μάθημα «Δίκτυα Υπολογιστών I»

ΔΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ Εργαστηριακή Άσκηση 3

ΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ Εργαστηριακή Άσκηση 3

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ. Εργαστηριακές Ασκήσεις για το Μάθημα: Δίκτυα Υπολογιστών I

ΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ Εργαστηριακή Άσκηση 7 ρομολόγηση ιανύσματος Αποστάσεων

ΔΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ Εργαστηριακή Άσκηση 6 Δρομολόγηση Διανύσματος Αποστάσεων

Εργαστηριακή Άσκηση 1

ΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ Εργαστηριακή Άσκηση 1

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ. Εργαστηριακές Ασκήσεις για το Μάθημα: «Δίκτυα Υπολογιστών I»

ΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ Εργαστηριακή Άσκηση 2

Εργαστήριο Δικτύων. 6 η Διάλεξη: Network Simulator NS

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

ΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ Εργαστηριακή Άσκηση 9 Επαναληπτικά Θέματα στη Μελέτη Πρωτοκόλλων με το NS2

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ

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

Εργαστηριακή Άσκηση 4

Τί είναι ο Network Simulator-2

ΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ Εργαστηριακή Άσκηση 4

ΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ Εργαστηριακή Άσκηση 4

ΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ Εργαστηριακή Άσκηση 5

ΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ Εργαστηριακή Άσκηση 6 Επίδοση Τοπικών ικτύων IEEE 802.3

Ns-allinone. Currently the package contains:

Εργαστήριο 4 Πρωτόκολλα Δρομολόγησης

Εργαστηριακές Ασκήσεις για το Μάθημα «Δίκτυα Υπολογιστών ΙI»

Δίκτυα Ι. Πρόγραμμα Προπτυχιακών Σπουδών Τμήμα Ψηφιακών Συστημάτων. Καθ. Π. Δεμέστιχας Δρ. Κ. Τσαγκάρης Δ. Καρβουνάς

Προσομείωση ασύρματων δικτύων με τη χρήση του OPNET Modeler

ΙΚΤΥΑ ΕΠΙΚΟΙΝΩΝΙΩΝ Εργαστηριακή Άσκηση 5 Επίδοση Τοπικών ικτύων 802.3

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ. «Μελέτη συστήματος αναμονής M/M/1 με χρήση του Network Simulator-2»

Επικοινωνιακή Διάταξη Σημείου-προς-Σημείο

Ενότητα 4. Πρωτόκολλα ροµολόγησης: Αρχές Λειτουργίας του OSPF (Open Shortest Path First)

Χρόνοι Μετάδοσης και Διάδοσης

Αρχιτεκτονικές Δικτύων & Πρωτόκολλα Ι

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

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

ΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΔΙΚΤΥΑ Η/Υ

Αυτόνομα Συστήματα (ΑΣ)

Δίκτυα Υπολογιστών Ι. Εγκατάσταση του Network Simulator-2 σε περιβάλλον Cygwin. Δ. Καρβουνάς, Δρ. Κ. Τσαγκάρης, Καθηγ. Π.

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

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

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

Μεταγωγή Τοπικής Κλίμακας

2η Σειρά Ασκήσεων ΗΥ-335α Network layer Παράδοση Παρασκευή 27/11/ :55

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

Ειδικά Θέματα Δικτύων Ι

ΤΙΤΛΟΣ ΜΑΘΗΜΑΤΟΣ: Δίκτυα Μεταγωγής & Τεχνικές Μεταγωγής Σε Δίκτυα Ευρείας Περιοχής

ΕΛΕΓΧΟΣ ΣΥΜΦΟΡΗΣΗΣ ΣΕ ΑΣΥΡΜΑΤΑ ΔΙΚΤΥΑ

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

Δίκτυα ΙΙ Τομέας Πληροφορικής,

Αρχιτεκτονικές Δικτύων & Πρωτόκολλα Ι

RIP : Routing Information Protocol

8 η ιάλεξη: σε δίκτυα δεδομένων

Δίκτυα ΙΙ. Κεφάλαιο 7

Αναπαραγωγή με αρχεία ήχου

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

Υλοποίηση Δικτυακών Υποδομών και Υπηρεσιών: Δρομολόγηση

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

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

ΤΙΤΛΟΣ ΜΑΘΗΜΑΤΟΣ: Πρότυπο FDDI

Εισαγωγή - ορολογία. Προώθηση (forwarding): Δρομολόγηση (routing):

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

Τμήμα Τεχνολογίας Πληροφορικής και Τηλεπικοινωνιών. Βαρτζιώτης Φώτης. ΠΡΟΧΩΡΗΜΕΝΑ ΘΕΜΑΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΔΙΚΤΥΩΝ ] Εργαστήριο 2

Άσκηση 2 η Πρωτόκολλο επικοινωνίας TCP/IP

ΣΤΑΤΙΚΗ ΔΡΟΜΟΛΟΓΗΣΗ ΔΙΚΤΥΩΝ ΠΑΡΑΔΕΙΓΜΑ ΜΕ ΤΗΝ ΧΡΗΣΗ ΤΟΥ GNS3

Ειδικά Θέματα Δικτύων ΙΙ. Ενότητα 8: Δρομολόγηση κατάστασης ζεύξης (Μέρος 2) Νικολάου Σπύρος Τμήμα Μηχανικών Πληροφορικής ΤΕ

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

ΔΙΚΤΥΑ Η/Υ ΙΙ. Αρχές δρομολόγησης

8. Προσομοίωση Λειτουργίας Ασύρματων Δικτύων Υποδομής

Κλιμάκιο Πληροφορικής Σεμινάρια για τα λογισμικά κλειστού τύπου Κύκλος Α

ΔΙΑΣΥΝΔΕΣΗ ΔΙΚΤΥΩΝ (INTERNETWORKING)

7. Hubs ή Switches? 7.1 Εισαγωγή

ΛΟΓΙΣΜΙΚΟ ΠΡΟΣΟΜΟΙΩΣΗΣ ANYLOGIC

a. b. c. d ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

Εργαστήριο 1-1 η Άσκηση - Ανάλυση

7.1 Επίπεδο δικτύου. Ερωτήσεις. λέξεις κλειδιά:

Δίκτυα Υπολογιστών. Ασκήσεις επανάληψης

Σενάριο 14: Προγραμματίζοντας ένα Ρομπότ ανιχνευτή

Οδηγίες Χρήσης της MySQL

Δίκτυο Άμεσης Σύνδεσης με Έλεγχο Πρόσβασης στο Μέσο

6. Ethernet. 6.1 Εισαγωγή

Οδηγίες για την εγκατάσταση του πακέτου Cygwin

ΔΙΑΧΕΙΡΙΣΗ ΤΙΜΟΚΑΤΑΛΟΓΟΥ OTC

1. Το ηλεκτρικό ρεύμα και τα ηλεκτρικά κυκλώματα

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

POWERPOINT Είναι το δημοφιλέστερο πρόγραμμα παρουσιάσεων.

Δίκτυα Επικοινωνιών ΙΙ: Δρομολόγηση

2.9.3 Χρήση λογισμικού παρουσιάσεων για τη δημιουργία απλών παρουσιάσεων ρουτίνας

Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap

1ο Φύλλο Εργασίας. της παλέτας Ήχος. Πώς μπορούμε να εισάγουμε και να αναπαράγουμε έναν ήχο;

και εμφανίζεται η φόρμα αναζήτησης των εκκρεμοτήτων. Στο πεδίο "Κατάσταση" επιλέγουμε "Σε εκκρεμότητα" και πατάμε ανάκτηση.

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

Ειδικά Θέματα Δικτύων Ι

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

α. Συνόδου β. Μεταφοράς γ. Δικτύου δ. Διασύνδεσης δεδομένων ε. Φυσικού Επιπέδου (Μονάδες 5)

ΠΟΛΥΕΚΠΟΜΠΗ ΣΕ ΑΣΥΡΜΑΤΑ ΚΙΝΗΤΑ ΙΚΤΥΑ (MANET)( ΒΑΣΙΛΕΙΟΥ ΑΛΕΞΑΝ ΡΟΣ

ΣΥΣΤΗΜΑΤΑ ΑΝΑΜΟΝΗΣ Queuing Systems

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ #3 Στρώµα ικτύου:ip Πρωτόκολλο και Πρωτόκολλα ροµολόγησης

Βυζαντινός Ρεπαντής Κολλέγιο Αθηνών 2010

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

Υλοποίηση τεχνικών για την αποφυγή συμφόρησης σε τοπικά ασύρματα δίκτυα αισθητήρων

Transcript:

3P P Εργαστηριακή ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Εργαστηριακές Ασκήσεις για το Μάθημα: Δίκτυα Υπολογιστών I η άσκηση με χρήση του Network Simulator-2 Υπεύθυνοι: Λέκτορας ΠΔ/407 Κ. Τσαγκάρης Αναπλ. Καθ. Π. Δεμέστιχας

1 Μετάδοση δεδομένων σε δίκτυο με σύνθετη τοπολογία Στην άσκηση αυτή θα ασχοληθείτε με τη μετάδοση δεδομένων μεταξύ κόμβων που συνδέονται σε δίκτυο με σχετικά σύνθετη τοπολογία. Προς τούτο θα ορίσετε στο NS2 ένα δίκτυο που αποτελείται από εννέα κόμβους και θα επιλέξετε δύο κόμβους του δικτύου, που δεν συνδέονται άμεσα μεταξύ τους, να ανταλλάσσουν δεδομένα. Σκοπός είναι να δείτε πώς επηρεάζεται η δρομολόγηση της ροής των δεδομένων μεταξύ των κόμβων αποστολής και λήψης από τον αριθμό των παρεμβαλλόμενων κόμβων και ζεύξεων, καθώς και από το κόστος των ζεύξεων. Για να αρχίσετε, θα πρέπει να δημιουργήσετε ένα αρχείο, π.χ. exercise3.tcl, με τον τρόπο που περιγράφηκε στην Εργαστηριακή Άσκηση 1. Θα πρέπει πάντοτε να δημιουργείτε ένα αντικείμενο προσομοίωσης, να αρχίζετε την προσομοίωση με την ίδια εντολή και, αν θέλετε να τρέχει το ΝΑΜ και το Xgraph, θα πρέπει να ανοίγετε πάντα αρχεία trace.tr ή.nam, να τα αρχικοποιείτε και να ορίζετε μια διαδικασία που να τα κλείνει. 1.1 Τοπολογία Όπως πάντα, το πρώτο βήμα είναι ο ορισμός της τοπολογίας. Εισάγετε τις παρακάτω γραμμές στο αρχικό template του κώδικα της Εργαστηριακής Άσκησης 1, ώστε να δημιουργήσετε 9 κόμβους. Με τον τρόπο αυτό μπορείτε να δημιουργήσετε έναν μεγάλο αριθμό κόμβων σε ένα Tcl πίνακα (array) αντί να δίνετε σε κάθε κόμβο το δικό του όνομα.. for {set i 0 {$i < 9 {incr i { set n($i) [$ns node] Το παρακάτω τμήμα κώδικα Tcl δημιουργεί αμφίδρομες ζεύξεις μεταξύ των κόμβων. for {set i 0 {$i < 9 {incr i { $ns duplex-link $n($i) $n([expr ($i+1)%5]) 1Mb 10ms DropTail $ns duplex-link $n(3) $n(0) 1Mb 10ms DropTail $ns duplex-link $n(5) $n(8) 1Mb 10ms DropTail $ns duplex-link $n(6) $n(7) 1Mb 10ms DropTail $ns duplex-link $n(2) $n(7) 1Mb 10ms DropTail Μπορείτε τώρα να σώσετε και να τρέξετε την προσομοίωση. Μπορεί να φανεί στο ΝΑΜ, ότι η τοπολογία είναι λίγο άκομψη. Μπορείτε να κάνετε κλικ στο κουμπί Re-layout, ίσως και στο Reset, μερικές φορές για να φανεί καλύτερα. 1.2 Τα γεγονότα (events) Δημιουργήστε τώρα δύο UDP agents με πηγές που παράγουν κίνηση CBR και προσαρτήστε τους στους κόμβους n5 και n7, γράφοντας τον παρακάτω κώδικα μετά από αυτόν της 1.1. Έπειτα δημιουργήστε δύο Sink Agents και προσαρτήστε τους στους ίδιους κόμβους αλλά αντίστροφα. Επίσης, είναι προτιμότερο οι δυο ροές να είναι χρωματιστές. - 1 -

#Στρώμα ζεύξης, κόμβος 5: πηγή και προορισμός set udp5 [new Agent/UDP] $ns attach-agent $n(5) $udp5 $udp5 set fid_ 5 $ns color 5 red set sink5 [new Agent/LossMonitor] $ns attach-agent $n(5) $sink5 #κόμβος 7: πηγή και προορισμός set udp7 [new Agent/UDP] $ns attach-agent $n(7) $udp7 $udp7 set fid_ 7 $ns color 7 blue set sink7 [new Agent/LossMonitor] $ns attach-agent $n(7) $sink7 #Σύνδεση των πηγών και των προορισμών $ns connect $udp5 $sink7 $ns connect $udp7 $sink5 #Στρώμα εφαρμογής set cbr5 [new Application/Traffic/CBR] $cbr5 attach-agent $udp5 set cbr7 [new Application/Traffic/CBR] $cbr7 attach-agent $udp7 Είναι επιθυμητό, ο πρώτος CBR agent να αρχίσει να στέλνει στα 0.5 sec και ο δεύτερος στα 1.0 sec. Αντίστοιχα, ο πρώτος θα σταματήσει στα 2 sec, ενώ ο δεύτερος στα 2.5 sec. Η διαδικασία κλεισίματος καλείται στα 3 sec. #Ορισμός γεγονότων $ns at 0.5 "$cbr5 start" $ns at 1 "$cbr7 start" $ns at 2 "$cbr5 stop" $ns at 2.5 "$cbr7 stop" $ns at 3 "finish" Μπορείτε τώρα να αρχίσετε το script πληκτρολογώντας ns exercise3.tcl και ύστερα τρέξτε το animation. Ποια διαδρομή ακολουθούν τα πακέτα; Ελέγξτε αν η ροή των πακέτων και από τις δυο πλευρές ακολουθεί τη διαδρομή με τα λιγότερα βήματα. Υπάρχει συντομότερη διαδρομή από αυτήν που ακολουθούν, όσον αφορά τον αριθμό των βημάτων (ζεύξεων); 1.3 Στατική και δυναμική δρομολόγηση Στην προηγούμενη παράγραφο είδατε ότι η κίνηση ακολουθεί τη συντομότερη διαδρομή (αυτήν με τον μικρότερο αριθμό βημάτων) από τον κόμβο 5 στον κόμβο 7 και αντίστροφα. Θα δούμε στη συνέχεια τη διαφορά μεταξύ στατικής και δυναμικής δρομολόγησης και πώς το δίκτυο αντιμετωπίζει τις μεταβολές της τοπολογίας του στην κάθε περίπτωση. Γι αυτόν τον λόγο θα προσθέσουμε ένα ενδιαφέρον χαρακτηριστικό. Κάντε τη ζεύξη μεταξύ των κόμβων 1 και 2 (που χρησιμοποιείται για τη μετάδοση) να διακοπεί για 0.4 sec. Αυτό μπορεί να γίνει με την ακόλουθη εντολή. $ns rtmodel-at 1.2 down $n(1) $n(2) - 2 -

$ns rtmodel-at 1.6 up $n(1) $n(2) Μπορείτε τώρα να αρχίσετε το script πάλι και θα δείτε ότι μεταξύ 1.2 και 1.6 sec η ζεύξη θα διακοπεί και όλα τα δεδομένα που στέλνονται από τους δυο κόμβους χάνονται. Παρ όλ αυτά, οι δυο κόμβοι συνεχίζουν να εκπέμπουν πακέτα. Εξηγήστε τους λόγους για τους οποίους συμβαίνει αυτό. Τα πακέτα που χάθηκαν, θα ξαναμεταδοθούν από τους αντίστοιχους κόμβους, όταν επανέλθει η σύνδεση; Αλλάξτε τώρα τη δρομολόγηση σε δυναμική (distance vector routing protocol), έτσι ώστε να μπορούν οι κόμβοι να καθορίζουν αυτόματα τα θέματα δρομολόγησης και να αντιμετωπίζουν τέτοια προβλήματα. Συνεπώς προσθέστε την επόμενη γραμμή στην αρχή του Tcl script, μετά τη δημιουργία του object προσομοίωσης. $ns rtproto DV Αρχίστε πάλι την προσομοίωση και τρέξτε το ΝΑΜ. Τι παρατηρείτε αυτή τη φορά; Περιγράψτε με απλά λόγια τη διαδικασία που έλαβε χώρα στο animation. Ποιος από όλους τους κόμβους καθορίζει από ποια διαδρομή θα προωθηθούν κάθε φορά τα πακέτα; Για ποιο λόγο τα πακέτα ακολουθούν τις συγκεκριμένες διαδρομές αφότου πέσει η σύνδεση; Θα μπορούσαν να δρομολογηθούν από άλλους κόμβους; 1.4 Καθορισμός κόστους ζεύξης Έως αυτό το σημείο θεωρούσαμε ότι η προτιμώμενη δρομολόγηση των πακέτων είναι από εκείνη τη διαδρομή απ όπου η ροή θα περάσει από τους λιγότερους κόμβους. Αυτό ισχύει διότι στην περίπτωση της προσομοίωσής μας θεωρείται εξ ορισμού ότι όλες οι ζεύξεις έχουν κόστος ίσο με μια (1) μονάδα. Στην πραγματικότητα όμως, η διαδρομή που ακολουθείται σε κάθε περίπτωση βασίζεται στο κόστος των ζεύξεων μεταξύ των κόμβων. Ας δούμε πώς επηρεάζει η αλλαγή του κόστους των ζεύξεων την δρομολόγηση των πακέτων. Για να γίνει αυτό πιο παραστατικό, θα θεωρήσουμε ότι το κόστος μιας ζεύξης είναι ανάλογο της καθυστέρησής της. Αυξήστε τις καθυστερήσεις των ζεύξεων στις παρακάτω τιμές, αλλάζοντας τις κατάλληλες εντολές ορισμού των ζεύξεων. $ns duplex-link $n(3) $n(0) 1Mb 40ms DropTail $ns duplex-link $n(5) $n(8) 1Mb 40ms DropTail $ns duplex-link $n(6) $n(7) 1Mb 30ms DropTail $ns duplex-link $n(2) $n(7) 1Mb 20ms DropTail Στη συνέχεια να εισάγετε στον κώδικα, κάτω από τον ορισμό της τοπολογίας και των ζεύξεων, εντολές τις μορφής: $ns cost $n(x) $n(y) z έτσι ώστε να αυξήσετε το κόστος των ζεύξεων ανάλογα με την καθυστέρησή τους. Όπου x και y είναι οι αριθμοί των κόμβων και z είναι η τιμή του κόστους της ζεύξης. Δηλαδή με την παραπάνω εντολή, το κόστος της ζεύξης από τον κόμβο x στον κόμβο y αυξάνεται σε z μονάδες κόστους, μόνο όμως προς τη μια φορά (x y). Για να αυξηθεί το κόστος και προς την άλλη φορά της σύνδεσης (y x) θα πρέπει να εισαχθεί η εντολή: $ns cost $n(y) $n(x) z Θυμίζουμε ότι για καθυστέρηση 10ms το κόστος της ζεύξης είναι 1 μονάδα. Τρέξτε την προσομοίωση και περιγράψτε τι συμβαίνει χρησιμοποιώντας το ΝΑΜ. Ποιες διαδρομές - 3 -

ακολουθούν τα πακέτα πριν, μετά και κατά τη διάρκεια της πτώσης της σύνδεσης; Για ποιον λόγο τα πακέτα ακολουθούν τις συγκεκριμένες διαδρομές; Θα μπορούσαν να δρομολογηθούν από άλλους κόμβους; 1.5 Παρακολούθηση με το Xgraph Στην ενότητα αυτή θα χρησιμοποιήσετε το Xgraph για να δημιουργήσετε γραφικές παραστάσεις του ρυθμού μετάδοσης δεδομένων στο δίκτυο. Οι παρακάτω εντολές θα πρέπει να προστεθούν στην αρχή του script, κάτω από την εντολή $ns namtrace-all $nf. Θα πρέπει κατ αρχήν να δημιουργηθεί ένα αρχείο όπου θα καταχωρηθούν όλα τα δεδομένα της προσομοίωσης σχετικά με το Xgraph : set f0 [open out0.tr w] set f1 [open out1.tr w] Επίσης χρειαζόμαστε μια διαδικασία (procedure) καταγραφής των δεδομένων της κίνησης: proc record { { global sink5 sink7 f0 f1 set ns [Simulator instance] #Ορισμός της ώρας που η διαδικασία θα ξανακληθεί set time 0.1 #Καταγραφή των bytes set bw5 [$sink5 set bytes_] set bw7 [$sink7 set bytes_] #Λήψη της τρέχουσας ώρας set now [$ns now] #Υπολογισμός του bandwidth και καταγραφή αυτού στο αρχείο puts $f0 "$now [expr (($bw5/$time)*8)/1000000]" puts $f1 "$now [expr (($bw7/$time)*8)/1000000]" #Κάνει την μεταβλητή bytes 0 $sink5 set bytes_ 0 $sink7 set bytes_ 0 #Επαναπρογραμματισμός της διαδικασίας $ns at [expr $now+$time] "record" Επιπλέον τροποποιείστε τις εντολές διαδικασίας κλεισίματος των αρχείων ώστε να συμπεριλάβετε το κλείσιμο του ανοιχτού αρχείου για το Xgraph ως εξής: proc finish { { global ns nf f0 f1 $ns flush-trace close $nf close $f0 close $f1 exit 0 Τέλος, η επόμενη γραμμή καλεί την διαδικασία καταγραφής της κίνησης και πρέπει να είναι η πρώτη από τις εντολές καθορισμού των γεγονότων (events). - 4 -

$ns at 0.0 "record" Αφού γράψετε τα παραπάνω, μπορείτε να δείτε ταυτόχρονα τις γραφικές παραστάσεις του ρυθμού μετάδοσης των δεδομένων που συνέλεξαν και οι δύο sink agents για τις δύο ροές πληκτρολογώντας την εντολή xgraph out0.tr out1.tr. 1. Να κάνετε τις γραφικές παραστάσεις για όλες τις παραπάνω περιπτώσεις των παραγράφων 1.2 και 1.3 [δηλαδή α) στατική δρομολόγηση με και χωρίς πτώση της ζεύξης β) δυναμική δρομολόγηση με και χωρίς πτώση της ζεύξης.]. Να συγκρίνετε και να εξηγείστε τις προκύπτουσες γραφικές παραστάσεις. 2. Στη συνέχεια, να κάνετε τις γραφικές παραστάσεις στην περίπτωση αλλαγής του κόστους των ζεύξεων της παραγράφου 1.4. και θεωρώντας φυσικά ότι ισχύει η δυναμική δρομολόγηση. Υπάρχουν διαφορές? Αν ναι πού οφείλονται? 1.6 Παράρτημα (ενδεικτικός συνολικός κώδικας) set ns [new Simulator] set nf [open out.nam w] $ns namtrace-all $nf set f0 [open out0.tr w] set f1 [open out1.tr w] $ns rtproto DV proc finish { { global ns nf f0 f1 $ns flush-trace close $nf close $f0 close $f1 exit 0 proc record { { global sink5 sink7 f0 f1 set ns [Simulator instance] set time 0.1 set bw5 [$sink5 set bytes_] set bw7 [$sink7 set bytes_] set now [$ns now] puts $f0 "$now [expr (($bw5/$time)*8)/1000000]" puts $f1 "$now [expr (($bw7/$time)*8)/1000000]" $sink5 set bytes_ 0 $sink7 set bytes_ 0 $ns at [expr $now+$time] "record" for {set i 0 {$i < 9 {incr i { set n($i) [$ns node] - 5 -

for {set i 0 {$i < 9 {incr i { $ns duplex-link $n($i) $n([expr ($i+1)%5]) 1Mb 10ms DropTail $ns duplex-link $n(3) $n(0) 1Mb 10ms DropTail $ns duplex-link $n(5) $n(8) 1Mb 10ms DropTail $ns duplex-link $n(6) $n(7) 1Mb 10ms DropTail $ns duplex-link $n(2) $n(7) 1Mb 10ms DropTail set udp5 [new Agent/UDP] $ns attach-agent $n(5) $udp5 $udp5 set fid_ 5 $ns color 5 red set sink5 [new Agent/LossMonitor] $ns attach-agent $n(5) $sink5 set udp7 [new Agent/UDP] $ns attach-agent $n(7) $udp7 $udp7 set fid_ 7 $ns color 7 blue set sink7 [new Agent/LossMonitor] $ns attach-agent $n(7) $sink7 $ns connect $udp5 $sink7 $ns connect $udp7 $sink5 set cbr5 [new Application/Traffic/CBR] $cbr5 attach-agent $udp5 set cbr7 [new Application/Traffic/CBR] $cbr7 attach-agent $udp7 $ns at 0.0 "record" $ns at 0.5 "$cbr5 start" $ns at 1 "$cbr7 start" $ns rtmodel-at 1.2 down $n(1) $n(2) $ns rtmodel-at 1.6 up $n(1) $n(2) $ns at 2 "$cbr5 stop" $ns at 2.5 "$cbr7 stop" $ns at 3 "finish" $ns run - 6 -

2 Δρομολόγηση Διανύσματος Αποστάσεων Στο δεύτερο μέρος της άσκησης θα μελετηθεί αναλυτικότερα η συμπεριφορά του πρωτοκόλλου δρομολόγησης διανύσματος αποστάσεων (distance vector, DV). Συγκεκριμένα θα δημιουργήσετε ένα δίκτυο με σύνθετη τοπολογία με την οποία θα επαληθευθεί η λειτουργία του πρωτοκόλλου δρομολόγησης DV. 2.1 Επαλήθευση DV Σε αυτή την άσκηση δημιουργούμε το δίκτυο του Σχ. 1, όπου ο αριθμός πάνω σε κάθε ζεύξη είναι το κόστος της. Σχήμα 1: Τοπολογία άσκησης Ο τρόπος με τον οποίο δημιουργείται αυτή η τοπολογία σας είναι ήδη γνωστός, με βάση τις προηγούμενες ασκήσεις. Ο κόμβος C στέλνει κίνηση CBR πάνω από UDP προς τον κόμβο A και ο κόμβος F στον D. Ο κώδικας για την εκτέλεση αυτού του σεναρίου βρίσκεται στο Παράρτημα Ζητούμενα: 1. Ποιες διαδρομές ακολουθούν τα πακέτα για τις δύο μεταδόσεις; 2. Να εκτελέσετε με το χέρι τον αλγόριθμο διανύσματος αποστάσεων και να επαληθεύσετε την ορθή λειτουργία του πρωτοκόλλου. 3. Την χρονική στιγμή 1sec η γραμμή D-E τίθεται εκτός λειτουργίας. Ποιες διαδρομές ακολουθούν τώρα τα πακέτα για τις δύο ανωτέρω περιπτώσεις; Είναι οι συντομότερες διαθέσιμες διαδρομές; 4. Στην αρχική τοπολογία, το κόστος της γραμμής D-E γίνεται 3. Ποιες είναι στην περίπτωση αυτή οι διαδρομές για τις δύο μεταδόσεις; - 7 -

2.2 Παράρτημα (ενδεικτικός συνολικός κώδικας) ### Αρχείο προσομοίωσης για μελέτη επίδοσης πρωτοκόλλου ### δρομολόγησης Distance Vector (DV). Το σενάριο αποτελείται ### από 6 κόμβους συνδεδεμένους με ζεύξης διαφορετικού βάρους, ### στην τοπολογία του παρακάτω σχήματος. ### ### B--3--C Για την προσομοίωση ο κόμβος Α ονομάζεται ### 2/ / \5 node 0, o B->1, o C->2, o D->3, o E->4 και ### / / \ o F->5 ### A 2 3 1 F ### \ / / Ο κόμβος C στέλνει CBR κίνηση στον A, και ο ### 1\ / /2 F στέλνει CBR κίνηση στον D. ### D--1--E set ns [new Simulator] set nf [open out.nam w] $ns namtrace-all $nf set trf [open out.tr w] $ns trace-all $trf proc finish { { global ns nf f1 f2 trf $ns flush-trace close $nf close $f1 close $f2 close $trf exit 0 # Kathorismos protokollou dromologisis $ns rtproto DV # Dimiourgia Komvon Diktyou for {set i 0 {$i < 6 {incr i { set n($i) [$ns node] # Dimourgia zeykseon kai kathorismos costous $ns duplex-link $n(0) $n(1) 1Mb 20ms DropTail $ns cost $n(0) $n(1) 2 $ns cost $n(1) $n(0) 2 $ns duplex-link $n(0) $n(3) 1Mb 10ms DropTail $ns cost $n(0) $n(3) 1 $ns cost $n(3) $n(0) 1 $ns duplex-link $n(1) $n(2) 1Mb 30ms DropTail $ns cost $n(1) $n(2) 3 $ns cost $n(2) $n(1) 3 $ns duplex-link $n(1) $n(3) 1Mb 20ms DropTail $ns cost $n(1) $n(3) 2-8 -

$ns cost $n(3) $n(1) 2 $ns duplex-link $n(2) $n(3) 1Mb 30ms DropTail $ns cost $n(2) $n(3) 3 $ns cost $n(3) $n(2) 3 $ns duplex-link $n(2) $n(4) 1Mb 10ms DropTail $ns cost $n(2) $n(4) 1 $ns cost $n(4) $n(2) 1 $ns duplex-link $n(2) $n(5) 1Mb 50ms DropTail $ns cost $n(2) $n(5) 5 $ns cost $n(5) $n(2) 5 $ns duplex-link $n(3) $n(4) 1Mb 10ms DropTail $ns cost $n(3) $n(4) 1 $ns cost $n(4) $n(3) 1 $ns duplex-link $n(4) $n(5) 1Mb 20ms DropTail $ns cost $n(4) $n(5) 2 $ns cost $n(5) $n(4) 2 #Στρώμα Μεταφοράς, κόμβος 2: πηγή, κόμβος 03: προορισμός set udp1 [new Agent/UDP] $ns attach-agent $n(2) $udp1 $udp1 set fid_ 1 $ns color 1 red set sink1 [new Agent/LossMonitor] $ns attach-agent $n(0) $sink1 #Στρώμα Μεταφοράς, κόμβος 5: πηγή, κόμβος 3: προορισμός set udp2 [new Agent/UDP] $ns attach-agent $n(5) $udp2 $udp2 set fid_ 2 $ns color 2 blue set sink2 [new Agent/LossMonitor] $ns attach-agent $n(3) $sink2 #Σύνδεση των πηγών και των προορισμών $ns connect $udp1 $sink1 $ns connect $udp2 $sink2 #Στρώμα εφαρμογής set cbr1 [new Application/Traffic/CBR] $cbr1 attach-agent $udp1 set cbr2 [new Application/Traffic/CBR] $cbr2 attach-agent $udp2 # Didikasia Katagrafis kinisis proc record { { global sink1 sink2 f1 f2 set ns [Simulator instance] set time 0.1 set bw1 [$sink1 set bytes_] set bw2 [$sink2 set bytes_] set now [$ns now] - 9 -

puts $f1 "$now [expr (($bw1/$time)*8)/1000000]" puts $f2 "$now [expr (($bw2/$time)*8)/1000000]" $sink1 set bytes_ 0 $sink2 set bytes_ 0 $ns at [expr $now+$time] "record" set f1 [open out1.tr w] set f2 [open out2.tr w] $ns at 0.0 "record" $ns at 0.3 "$cbr1 start" $ns at 0.5 "$cbr2 start" $ns at 2.5 "$cbr1 stop" $ns at 2.5 "$cbr2 stop" $ns at 3 "finish" $ns run - 10 -