Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Σπύρος Δενάζης sdena@upatras.gr Εργαστήρια Δικτύων Υπολογιστών Εργαστήριο 2ο : Μοντελοποίηση δικτυακού κόμβου Σπύρος Δενάζης sdena@upatras.gr.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Σπύρος Δενάζης sdena@upatras.gr Εργαστήρια Δικτύων Υπολογιστών Εργαστήριο 2ο : Μοντελοποίηση δικτυακού κόμβου Σπύρος Δενάζης sdena@upatras.gr."— Μεταγράφημα παρουσίασης:

1 Σπύρος Δενάζης sdena@upatras.gr
Εργαστήρια Δικτύων Υπολογιστών Εργαστήριο 2ο : Μοντελοποίηση δικτυακού κόμβου Σπύρος Δενάζης

2 Στόχοι Εισαγωγικές έννοιες τρόπου κατασκευής και λειτουργίας του ΟΡΝΕΤ
Η μοντελοποίηση και μελέτη ενός κόμβου στον οποίο καταφθάνουν πακέτα, αποθηκεύονται (store-and-forward) και προωθούνται σε άλλους κόμβους του δικτύου Δημιουργία δικών μας κόμβων, διαδικασιών μέσω των Node Editor, και Process Editor και ενσωμάτωση αυτών στην Object Palette. Εξοικείωση και κατανόηση της προγραμματιστικής διεπαφής (ΑΡΙ) και του περιβάλλοντος προγραμματισμού του ΟΡΝΕΤ με χρήση/κλήση έτοιμων functions της βιβλιοθήκης.

3 Σύνοψη Βασικές εσωτερικές λειτουργίες ΟΡΝΕΤ Μοντελοποίηση κόμβου
Οι διαδικασίες (processes) στο ΟΡΝΕΤ και η αλληλεπίδρασή τους Μοντελοποίηση κόμβου Παράμετροι και μέσες τιμές Τα συστατικά μέρη του κόμβου-μοντέλου Δημιουργία δικού μας μοντέλου διαδικασίας (Process model) Δημιουργία και παραμετροποίηση κόμβου που χρησιμοποιεί το δικό μας μοντέλο διαδικασίας (Node model) Επιλογή κατάλληλων στατιστικών που επηρεάζουν τη συμπεριφορά του κόμβου Δημιουργία διαφορετικών σεναρίων Εκτέλεση εξομοίωσης, συλλογή στατιστικών και σύγκριση

4 Βασικές εσωτερικές λειτουργίες ΟΡΝΕΤ
Εξομοίωση με τη Μέθοδο Διακριτών Γεγονότων (Discrete Event Simulation) Η λίστα των γεγονότων και το εσωτερικό ρολόι του εξομοιωτή Ο πυρήνας του εξομοιωτή (Simulation Kernel) Τι είναι τα μηνύματα Διακοπών (Interrupts) Διαδικασίες (Processes) και Διακοπές (Interrupts)

5 Εξομοίωση με τη Μέθοδο Διακριτών Γεγονότων (Discrete Event Simulation)
Τα γεγονότα είναι συγκεκριμένες και διακριτές δραστηριότητες/οντότητες που συμβαίνουν σε συγκεκριμένες χρονικές στιγμές Η εξομοίωση και τα στατιστικά στο ΟΡΝΕΤ καθορίζονται από τα γεγονότα αυτά Ο χρόνος εξομοίωσης αυξάνεται όταν συμβεί ένα γεγονός Μια εναλλακτική μέθοδος εξομοίωσης είναι η δειγματοληψία σε τακτικά διαστήματα Μειονέκτημα αυτής της μεθόδου είναι η ακρίβεια των στατιστικών λόγω της εξάρτησης των στατιστικών από τη συχνότητα δειγματοληψίας ενώ η εξομοίωση είναι αναποτελεσματική όταν υπάρχουν μεγάλοι περίοδοι αδράνειας

6 Λίστα Γεγονότων Υπάρχει μία καθολική λίστα γεγονότων (event list)
Κοινό ρολόι και χρόνος εξομοίωσης των γεγονότων Τα γεγονότα προγραμματίζονται και εκτελούνται σε χρονική σειρά Με την ολοκλήρωση της εκτέλεσης του γεγονότος αυτό αφαιρείται από την ουρά

7 Ο πυρήνας του εξομοιωτή
Ο πυρήνας του εξομοιωτή αποτελεί το βασικό πρόγραμμα και τις λειτουργίες του εξομοιωτή. Διαχειρίζεται τη λίστα γεγονότων Παραδίδει το κάθε γεγονός στη σωστή χρονική σειρά και στο κατάλληλο δομοστοιχείο (διαδικασία) με τη μορφή μηνυμάτων διακοπών (interrupts) Λαμβάνει αιτήματα από τις διαδικασίες και εισαγάγει νέα γεγονότα στη λίστα

8 Δημιουργία και Ακύρωση Γεγονότων
Τα γεγονότα είναι διαφορετικών τύπων και μπορούν να δημιουργηθούν για διάφορους λόγους Αρχή/Τέλος της εξομοίωσης BEGSIM/ENDSIM interrupts Αυτοδημιουργούμενα γεγονότα Self interrupts π.χ. Λήξη χρονοδιακόπτη Αφίξεις πακέτων σε ροές STRM interrupts Εγγραφή σε στατιστικά statwire - STAT interrupts Τα γεγονότα είναι δυνατόν να ακυρωθούν πριν έλθει η ώρα τους να συμβούν

9 Διακοπές και η Χρήση τους (Interrupts)
Ο πυρήνας παραδίδει το μήνυμα διακοπής στο προκαθορισμένο δομοστοιχείο-παραλήπτη Δεδομένα που σχετίζονται με τη διακοπή μπορούν επίσης να ανακτηθούν από τον παραλήπτη Τα δομοστοιχεία Processors και Queues μπορούν να λάβουν διακοπές τύπου BEGSIM interrupts

10 Χρήση της Λίστας Γεγονότων
Ένα νέο γεγονός φτάνει στην κορυφή της ουράς της λίστας των γεγονότων. Αυτό σηματοδοτεί την παράδοση από τον πυρήνα του προγράμματος εξομοίωσης του μηνύματος διακοπής στο κατάλληλο δομοστοιχείο Η διαδικασία η οποία τρέχει στο δομοστοιχείο στο οποίο παραδόθηκε η διακοπή, αναλαμβάνει τον έλεγχο της ροής του προγράμματος εξομοίωσης – ανάλογο της κλήσης συνάρτησης από το κυρίως πρόγραμμα και επεξεργάζεται τη διακοπή ανάλογα με την λογική της διαδικασίας Το πρόγραμμα του πυρήνα αφαιρεί το γεγονός από τη λίστα των γεγονότων και προωθεί στην κορυφή το αμέσως επόμενο γεγονός. Το πρόγραμμα του πυρήνα ανακτά πάλι τον έλεγχο της ροής του προγράμματος

11 Υλοποίηση Λίστας Γεγονότων
Ο πυρήνας χρησιμοποιεί ένα αποτελεσματικό αλγόριθμο για να συντηρεί και να διαχειρίζεται τη λίστα γεγονότων. Οι χρονικές στιγμές των γεγονότων εκφράζονται ως double-precision, floating-point μεταβλητές και χρησιμοποιούνται για να διατάσσουν τη λίστα γεγονότων Υποθέστε ότι αυτό το μήνυμα διακοπής είναι απόρροια του γεγονότος που συμβαίνει Ένα νέο γεγονός προστίθεται από το πρόγραμμα πυρήνα στη λίστα στη σωστή θέση

12 Απόδοση Διακοπών στις Διαδικασίες
Ο τρόπος με τον οποίο ο πυρήνας διαχειρίζεται τα μηνύματα διακοπής και τα αποδίδει στις διάφορες διαδικασίες που τρέχουν στα δομοστοιχεία είναι ο ακόλουθος: Όταν συμβεί ένα γεγονός τότε ο έλεγχος του προγράμματος (πυρήνα) περνάει στο δομοστοιχείο και συγκεκριμένα στη διαδικασία που τρέχει στο δομοστοιχείο αν αυτό είναι Processor ή Queue Υπάρχουν και άλλα είδη δομοστοιχείων από τα οποία αποτελείται ένας κόμβος όπως transmitters και receivers τα οποία καλύπτονται διαφορετικά

13 Γενικά περί Process & Process Model
Οι διαδικασίες στο ΟΡΝΕΤ μοντελοποιούνται βάσει διαγραμμάτων πεπερασμένων καταστάσεων (Finite State Machines – FSM) To FSM ορίζει τις καταστάσεις στις οποίες είναι δυνατόν να βρεθεί η κάθε διαδικασία καθώς και τα κριτήρια-συνθήκες βάσει των οποίων η διαδικασία αλλάζει καταστάσεις. Το FSM στην ουσία αντιπροσωπεύει τη λογική λειτουργία και τη συμπεριφορά της κάθε διαδικασίας Μετάβαση Κατάσταση Κατάσταση Μετάβαση

14 Γενικά περί Process Model
Για να μπορέσουμε να περιγράψουμε τον τρόπο λειτουργίας της διαδικασίας που μοντελοποιούμε χρειάζεται εκτός από τις καταστάσεις να ορίσουμε τις διεργασίες που συμβαίνουν στις παρακάτω τρεις περιπτώσεις Όταν εισερχόμαστε σε μία κατάσταση – Enter Executive Όταν εξερχόμαστε από μια κατάσταση – Exit Executive Και όταν είμαστε σε διαδικασία μετάβασης – Transition Executive Ο τρόπος που περιγράφουμε αυτές τις διεργασίες είναι μέσω ακολουθίας εντολών γλώσσας εντολών προγραμματισμού, στη συγκεκριμένη περίπτωση με αποσπάσματα C (ονομάζεται Proto C)

15 Γενικά περί Process Model
Τα προγράμματα εξομοίωσης συνήθως δουλεύουν βάσει της μεθόδου διακριτών γεγονότων (Discrete Event Simulation) Το ΟΡΝΕΤ έχει ένα simulation kernel o οποίος επικοινωνεί με το μοντέλο μέσω interrupts ανάλογο του τρόπου επικοινωνίας του λειτουργικού συστήματος με τις εφαρμογές. Έτσι λοιπόν κάθε φορά που συμβαίνει ένα γεγονός ένα συγκεκριμένου τύπου interrupt παραδίδεται στη διαδικασία η οποία βρίσκεται σε κάποια κατάσταση (π.χ. link_dn) και ο έλεγχος περνάει στη διαδικασία αυτή. Ανάλογα με την πληροφορία που μεταφέρεται από το interrupt η διαδικασία μεταβαίνει σε μια νέα κατάσταση (π.χ. link_up) εκτελώντας την ακολουθία των εντολών που μπορεί να περιέχονται στο χώρο των εντολών εξόδου της κατάστασης (Exit Executives) στο χώρο των εντολών μετάβασης (Transition Executives) και τέλος στο χώρο των εντολών εισόδου της νέας κατάστασης (Enter Executives) και στο σημείο αυτό σταματά η διαδικασία στη νέα κατάσταση παραδίδοντας πίσω τον έλεγχο της ροής του simulation στο simulation kernel. Την επόμενη φορά που θα κληθεί ξανά τη συγκεκριμένη διαδικασία θα πραγματοποιηθούν ακριβώς τα ίδια βήματα αλλά αυτή τη φορά από τη νέα κατάσταση (π.χ. link_up)

16 Πώς οι διαδικασίες χειρίζονται τις Διακοπές
Διάγραμμα ροής διαχείρισης μηνύματος διακοπής από τη διαδικασία.

17 Παράδειγμα μοντέλου διαδικασίας
Μοντέλο με διαφορετικού τύπου καταστάσεις και μεταβάσεις

18 Βασικά σημεία της λίστας γεγονότων
Για να ξεκινήσει κάθε εξομοίωση θα πρέπει να υπάρχουν γεγονότα στη λίστα Τα δομοστοιχεία processor ή queue μπορεί να είναι αποδέκτες του μηνύματος διακοπής begsim interrupt. Κάθε γεγονός μπορεί με τη σειρά του να δημιουργήσει νέα γεγονότα Η λίστα γεγονότων κατά τη διάρκεια της εξομοίωσης μπορεί να αυξομειώνεται δυναμικά ανάλογα με τη ροή της εξομοίωσης Ένα γεγονός θεωρείται ότι είναι σε αναμονή (εκκρεμεί) μέχρι να έρθει η χρονική σειρά του (να βρεθεί στο κεφάλι της ουράς) να εκτελεστεί Ένα γεγονός που είναι στην αναμονή μπορεί να ακυρωθεί

19 Εισαγωγή στη Λειτουργία του Πυρήνα
Υλοποιεί προκατασκευασμένες συναρτήσεις που αφορούν σε κοινές, δύσκολες και περίπλοκες λειτουργίες που είναι αναγκαίες για κάθε μοντέλο εξομοίωσης. Οι συναρτήσεις πυρήνα (kernel procedures) ελευθερώνουν του χρήστες από την ανάγκη να διαχειριστούν μνήμη, δομές δεδομένων και να επεξεργαστούν γεγονότα. Οι συναρτήσεις πυρήνα επικεντρώνουν συνήθως σε λειτουργίες που έχουν να κάνουν με την επικοινωνία μεταξύ των διαφόρων αντικειμένων ενός μοντέλου Στο ΟΡΝΕΤ όλες οι συναρτήσεις πυρήνα αρχίζουν με το πρόθεμα op_

20 Κοινές συναρτήσεις Πυρήνα
Από το μενού Help επιλέγουμε Online Documentation το οποίο ομαδοποιεί τις διάφορες συναρτήσεις πυρήνα ανάλογα το είδος τους

21 Proto-C™ Ο πυρήνας χρησιμοποιεί την γλώσσα Proto-C να ορίζει
Διαγράμματα Καταστάσεων Κομμάτια κώδικα C/C++ Χρήση βιβλιοθήκης συναρτήσεων πυρήναs) Μεταβλητές καταστάσεων (κάτι σαν Process variable) Προσωρινές μεταβλητές

22 Σύνοψη Σύνοψη εσωτερικών λειτουργιών ΟΡΝΕΤ Μοντελοποίηση κόμβου
Οι διαδικασίες (processes) στο ΟΡΝΕΤ και η αλληλεπίδρασή τους Μοντελοποίηση κόμβου Παράμετροι και μέσες τιμές Τα συστατικά μέρη του κόμβου-μοντέλου Δημιουργία δικού μας μοντέλου διαδικασίας (Process model) Δημιουργία και παραμετροποίηση κόμβου που χρησιμοποιεί το δικό μας μοντέλο διαδικασίας (Node model) Επιλογή κατάλληλων στατιστικών που επηρεάζουν τη συμπεριφορά του κόμβου Δημιουργία διαφορετικών σεναρίων Εκτέλεση εξομοίωσης, συλλογή στατιστικών και σύγκριση

23 Πεπερασμένης ή Άπειρης
Μοντελοποίηση κόμβου Η διαδικασία μοντελοποίησης είναι μια διαδικασία αφαίρεσης ανάλογα με τους στόχους της εξομοίωσης που θέλουμε να επιτύχουμε. Πρέπει να επιλέξουμε παραμέτρους που να σχετίζονται με το πρόβλημα που θέλουμε να μελετήσουμε Αν για ένα δικτυακό κόμβο επιθυμούμε να μελετήσουμε φαινόμενα καθυστερήσεων δεν είναι τις περισσότερες φορές αναγκαίο να συμπεριλάβουμε λεπτομέρειες του τρόπου λειτουργίας του καθώς και επιμέρους καθυστερήσεις που συμβαίνουν κατά την επεξεργασία του πακέτου μέχρι να προωθηθεί μέσω του συνδέσμου στον επόμενο κόμβο. Αρκεί να ενσωματώσουμε όλες αυτές τις καθυστερήσεις σε μία παράμετρο που περιλαμβάνει το ρυθμό εξυπηρέτησης κάθε πακέτου Το παρακάτω μοντέλο με τις παραμέτρους του είναι πολλές φορές αρκετό για να μελετήσουμε τέτοια φαινόμενα. Καταχωρητής Πεπερασμένης ή Άπειρης χωρητικότητας Μέσος Ρυθμός Άφιξης Πακέτων Χωρητικότητα Συνδέσμου Χρόνος Διάδοσης Πακέτων Εξυπηρετητής λ p/sec C bits/sec Ρ Ρ Ρ Ρ Ρ Ρ Ρ Ρ Ρ Ρ Ρ 1/μ bits/p μC p/sec Μέσο Μέγεθος Πακέτου Μέσος Ρυθμός Εξυπηρέτησης

24 Σύνοψη Σύνοψη εσωτερικών λειτουργιών ΟΡΝΕΤ Μοντελοποίηση κόμβου
Οι διαδικασίες (processes) στο ΟΡΝΕΤ και η αλληλεπίδρασή τους Μοντελοποίηση κόμβου Παράμετροι και μέσες τιμές Τα συστατικά μέρη του κόμβου-μοντέλου Δημιουργία δικού μας μοντέλου διαδικασίας (Process model) Δημιουργία και παραμετροποίηση κόμβου που χρησιμοποιεί το δικό μας μοντέλο διαδικασίας (Node model) Επιλογή κατάλληλων στατιστικών που επηρεάζουν τη συμπεριφορά του κόμβου Δημιουργία διαφορετικών σεναρίων Εκτέλεση εξομοίωσης, συλλογή στατιστικών και σύγκριση

25 Παράδειγμα δημιουργίας νέας διαδικασίας
Θέλουμε να δημιουργήσουμε μια νέα διαδικασία η οποία θα μετράει τα πακέτα που φτάνουν στον κόμβο ο οποίος τρέχει αυτή τη διαδικασία. Το FSM θα πρέπει να περιέχει 3 καταστάσεις Μία αρχική κατάσταση (init) στην οποία μπορεί να βρεθεί η διαδικασία μας όταν κληθεί για πρώτη φορά κατά τη διάρκεια της εξομοίωσης. Μία κατάσταση αναμονής (idle) άφιξης πακέτου. Μία κατάσταση επεξεργασίας του πακέτου όταν αυτό φτάσει στον κόμβο (arrival).

26 Παράδειγμα νέας διαδικασίας
Το FSM θα πρέπει επίσης να περιέχει και μια σειρά από μεταβάσεις μεταξύ των καταστάσεων Όπου υπάρχει νόημα να υπάρχουν τέτοιες μεταβάσεις Με την κλήση του Process η διαδικασία βρίσκεται στην αρχική κατάσταση (init) Χρησιμοποιείται για τυχόν αρχικοποιήσεις Στη συνέχεια μεταβαίνει αμέσως στην κατάσταση αναμονής άφιξης πακέτου. Με την άφιξη του πακέτου σηματοδοτείται η μετάβαση στην κατάσταση αφίξεων (arrival) όπου σε αυτή αυξάνεται ο δείκτης που μετράει τα πακέτα που περνούν από τον κόμβο. Τέλος μετά την καταμέτρηση η διαδικασία επιστρέφει στην κατάσταση αναμονής (idle) περιμένοντας την επόμενη άφιξη.

27 Δημιουργίας νέας διαδικασίας μέσω του Process Editor
Εκκινώντας το OPNET επιλέγουμε στη συνέχεια File > New … επιλέγουμε Process Model και στην συνέχεια πατάμε ΟΚ όπου ανοίγει το παράθυρο του Process Editor. Από την μπάρα εργαλείων επιλέγουμε το κουμπί μέσω του οποίου θα δημιουργήσουμε τις 3 καταστάσεις. Κάνοντας 3 διαδοχικά κλικ στην επιφάνεια εργασίας του Process Editor δημιουργούμε τις 3 καταστάσεις όπως φαίνεται παρακάτω. (Με δεξί κλικ σταματάμε τη δημιουργία αντιγράφων καταστάσεων) Η πρώτη κατάσταση που δημιουργήσαμε έχει πάντα το ρόλο της αρχικής κατάστασης και σημειώνεται με το παχύ βέλος Πρέπει τώρα να ονομάσουμε τις 3 αυτές καταστάσεις με ονόματα που να έχουν κάποια σημασία σχετική με την διαδικασία. Έτσι ονομάζουμε τις τρεις καταστάσεις init, idle και arrival κάνοντας δεξί κλικ πάνω σε κάθε μία από αυτές και επιλέγοντας Set Name

28 Δημιουργίας νέας διαδικασίας μέσω του Process Editor
Αναφερθήκαμε προηγουμένως στην περίπτωση όπου όταν εισέλθει η διαδικασία σε μία κατάσταση δεν χρειάζεται να περιμένει για να συμβεί κάποιο γεγονός, αλλά όταν εκτελέσει τις εντολές που περιέχονται σε αυτή τότε αναγκαστικά εξέρχεται αυτής και μεταβαίνει σε άλλη κατάσταση. Αυτού του είδους οι περιπτώσεις ορίζουν στο OΡΝΕΤ δύο τύπους καταστάσεων Μη εξαναγκασμένες καταστάσεις (Unforced) Εξαναγκασμένες καταστάσεις (Forced) Νέες καταστάσεις όταν δημιουργούνται μέσω του Process Editor είναι πάντα τύπου Unforced και για να τις αλλάξουμε επιλέγουμε Make State Forced μέσω δεξιού κλίκ πάνω στην κατάσταση. Στο παράδειγμά μας οι καταστάσεις init και arrival είναι τύπου Forced γιατί σε αυτές δεν αναμένεται κάποιο γεγονός να συμβεί. Αλλάζουμε αυτές τις 2 καταστάσεις σε forced (πράσινες).

29 Δημιουργίας νέας διαδικασίας μέσω του Process Editor
Το επόμενο βήμα είναι ο ορισμός μεταβάσεων μεταξύ των καταστάσεων που ορίσαμε. Υπάρχουν δύο τύποι καταστάσεων Μεταβάσεις υπό συνθήκη Μεταβάσεις απεριόριστες Στις περιπτώσεις μεταβάσεων υπό συνθήκη η μετάβαση από την κατάσταση αφετηρίας στην κατάσταση προορισμού πραγματοποιείται όταν η συνθήκη ικανοποιείται (αληθής). Για να δημιουργήσουμε μια μετάβαση στο ΟΡΝΕΤ συνδέοντας 2 καταστάσεις επιλέγουμε το κουμπί Create Transition από την μπάρα εργαλείων και στη συνέχεια συνδέουμε τις 2 καταστάσεις με δύο διαδοχικά κλικ (θυμηθείτε: δεξί κλικ για απενεργοποίηση) Αν θέλουμε να δημιουργήσουμε βέλη με καμπύλες κάνουμε ενδιάμεσα ένα επιπλέον κλικ πριν ενώσουμε την κατάσταση προορισμού. Ενώστε τις καταστάσεις init-idle με ευθεία μετάβαση και idle-arrival με καμπυλωτή μετάβαση. Και οι δύο καταστάσεις θεωρούνται αρχικά απεριόριστες (συνεχόμενο βέλος)

30 Δημιουργίας νέας διαδικασίας μέσω του Process Editor
Για να μετατρέψουμε την μετάβαση από την κατάσταση idle στην κατάσταση arrival σε μετάβαση υπό συνθήκη κάνουμε δεξί κλικ στην μετάβαση την οποία θέλουμε να αλλάξουμε επιλέγουμε Edit Attributes και στο μενού που εμφανίζεται δίνουμε στην παράμετρο conditional την τιμή ARRIVAL οπότε η μετάβαση μετατρέπεται σε υπό συνθήκη (διακεκομμένη γραμμή βέλους) ενώ φέρει και την ένδειξη (ARRIVAL) Κάνουμε το ίδιο και για την άλλη μετάβαση υπό συνθήκη: idle-idle Η επιλογή της ύπαρξης μετάβασης από μία κατάσταση στον εαυτό της είναι για να συμπεριλάβουμε άλλα ενδεχόμενα γεγονότα/συνθήκες οι οποίες είναι δυνατόν να παραδοθούν στην κατάσταση

31 Ορίζοντας συνθήκες και μεταβλητές
Οι διαδικασίες είναι στην ουσία προγράμματα που υλοποιούνται σε C (Proto-C). Συνεπώς έχουν τα χαρακτηριστικά C προγραμμάτων στα οποία κάποιος μπορεί να ορίσει header files, macros και να δηλώσει μεταβλητές. Στα πλαίσια αυτά το περιβάλλον του Process Editor δίνει τη δυνατότητα αυτή μέσω συγκεκριμένων κουμπιών της μπάρας εργαλείων. Δηλώσεις διαφόρων headers (#define, #include κλπ)  Header Block Δηλώσεις μεταβλητών (int, struct, type κλπ)  State Variables καi Temporary Variables Καλώντας αυτά τα εργαλεία ειδικά παράθυρα ενεργοποιούνται στα οποία πληκτρολογούνται οι σχετικές εντολές. Στα πλαίσια του παραδείγματος θα ορίσουμε τη συνθήκη μετάβασης σε μορφή μακροεντολής (#define) η οποία θα γίνεται αληθής σε περίπτωση άφιξης (δημιουργίας) πακέτου από τον πυρήνα του εξομοιωτή. Ενεργοποιώντας το παράθυρο μέσω του Header Block δίνουμε την μακροεντολή #define ARRIVAL (op_intrpt_type () == OPC_INTRPT_STRM) Και στη συνέχεια πατάμε File > Commit και κλείνουμε το παράθυρο. Η συνθήκη ARRIVAL που ορίσαμε ελέγχει αν το τρέχον interrupt (το οποίο ενεργοποίησε το FSM στην κατάσταση idle και εκτελεί στη συνέχεια τον κώδικα) είναι λόγω άφιξης πακέτου. Συγκρίνει την τιμή που επιστρέφει η συνάρτηση πυρήνα (Kernel Procedure) op_intrpt_type() με την σταθερά OPC_INTRPT_STRM. Αν είναι αληθής η συνθήκη τότε σημαίνει ότι το interrupt είναι λόγω άφιξης πακέτων από τη ροή εισόδου.

32 Ορίζοντας συνθήκες και μεταβλητές
Ορισμός των op_intrpt_type() και της σταθεράς OPC_INTRPT_STRM

33 Ορίζοντας συνθήκες και μεταβλητές
Δήλωση μεταβλητών στις διαδικασίες μπορούν να γίνουν σε 3 διαφορετικές ενότητες και αντιστοιχούν σε 3 διαφορετικά είδη Μεταβλητές που δηλώνονται ως μόνιμες (State Variables) διατηρούν τις τιμές τους μεταξύ διαδοχικών κλήσεων της διαδικασίας. Μεταβλητές που δηλώνονται ως προσωρινές (Temporary Variables) ΔΕΝ διατηρούν τις τιμές τους μεταξύ κλήσεων Μεταβλητές που δηλώνονται μέσα στα executives (enter, exit, transition) διατηρούν τιμές μόνο όταν εκτελείται το συγκεκριμένο μπλοκ κώδικα. Για τις ανάγκες του παραδείγματός μας θα χρειαστεί να ορίσουμε 2 μόνιμες μεταβλητές, μία για την αρίθμηση των πακέτων και μία για τη συλλογή στατιστικών πατώντας File > Commit και μετά ΟΚ Type Name Comments int pk_count Counts total packets Stathandle pk_cnt_stathandle Statistic to record packet count

34 Ορίζοντας συνθήκες και μεταβλητές
Μεταβλητές στατιστικών αποθηκεύουν τιμές που μας ενδιαφέρουν για να τις αναλύσουμε στη συνέχεια. Όταν θέλουμε να δημιουργήσουμε ένα στατιστικό θα πρέπει να δηλωθεί ως μεταβλητή στη διαδικασία που μοντελοποιούμε όπως παρακάτω: 1. Επιλέγουμε Interfaces > Local Statistics. 2. Πληκτρολογούμε packet count στη στήλη Stat Name. Αυτόματα εμφανίζονται οι τιμές Μode=Single, count=N/A, Low Bound=0.0, και High Bound=disabled στις υπόλοιπες στήλες. 3. Κάνουμε κλικ στο πεδίο Description της μεταβλητής packet count και ένα παράθυρο κειμένου ανοίγει όπου δίνουμε την περιγραφή Number of packets received που αντιστοιχεί στην μεταβλητή αυτή. 4. Επιλέγουμε File > Commit για να αποθηκεύσουμε τις αλλαγές και τις αποθηκεύουμε. Κλείστε το παράθυρο διαλόγου δήλωσης Local Statistics πατώντας ΟΚ

35 Προσθέτοντας κώδικα στις καταστάσεις
Το επόμενο βήμα είναι να προσθέσουμε κώδικα στις διάφορες καταστάσεις ή μεταβάσεις της διαδικασίας Η κατάσταση init χρησιμοποιείται συνήθως για να αρχικοποιούμε μεταβλητές ή ο,τιδήποτε άλλες ενέργειες χρειάζονται να γίνουν όταν η διαδικασία καλείται την ΠΡΩΤΗ φορά. Στη συγκεκριμένη περίπτωση θα πρέπει να μηδενίσουμε τον μετρητή και τη μεταβλητή των στατιστικών. 1. Κάνοντας διπλό κλικ στο πάνω μέρος της κατάστασης init ανοίγει το παράθυρο κώδικα (Enter Executive) 2. Πληκτρολογούμε τον παρακάτω κώδικα αρχικοποίησης των μεταβλητών pk_count = 0; pk_cnt_stathandle = op_stat_reg ("packet count", OPC_STAT_INDEX_NONE, ΟPC_STAT_LOCAL); 3. Επιλέγουμε Commit και σώζουμε τον κώδικά μας Η εντολή pk_cnt_stathandle = op_stat_reg ("packet count", …) μέσω της συνάρτησης πυρήνα op_stat_reg () συσχετίζει το στατιστικό packet count (που ορίσαμε παραπάνω) με τη μεταβλητή του αντίστοιχου τύπου (StatHandle) και το οποίο θα χρησιμοποιηθεί να αποθηκευτούν και να υπολογισθούν τα στατιστικά Όπως είπαμε υπάρχουν δεκάδες προκατασκευασμένες συναρτήσεις οι οποίες μπορεί να καλέσει κάποιος από τις διαδικασίες και διευκολύνουν στη δημιουργία περίπλοκων εξομοιώσεων. Τέτοιες συναρτήσεις μπορεί να είναι για τη διαχείριση ουρών, δημιουργία κινουμένων γραφικών (animations) κλπ

36 Προσθέτοντας κώδικα στις καταστάσεις
Επειδή ακριβώς υπάρχουν πάρα πολλές συναρτήσεις είναι δύσκολο να βρει κάποιος ποια είναι η πιο κατάλληλη και σε πιο περιεχόμενο θα πρέπει να χρησιμοποιηθεί. Θα δούμε τις πιο βασικές στη συνέχεια δίνοντας κώδικα στην κατάσταση arrival. 1. Κάνοντας διπλό κλικ στο πάνω μέρος της κατάστασης arrival ανοίγει το παράθυρο κώδικα (Enter Executive) Το γεγονός ότι είμαστε στην κατάσταση αυτή σημαίνει ότι θα πρέπει να αυξάνουμε τον μετρητή, να προσδιορίσουμε το είδος της ροής πακέτων στην οποία αναφέρεται η διακοπή (interrupt), να ανακτήσουμε τον δείκτη (pointer) του πακέτου για να μπορούμε να το καταστρέψουμε και έτσι να ελευθερώσουμε τη μνήμη που αποθηκεύει το πακέτο και τέλος να καταγράψουμε το στατιστικό. 2. Αυξάνουμε τη μεταβλητή pk_count variable μέσω της εντολής ++pk_count; 3. Για τις υπόλοιπες ενέργειες που χρειάζεται να γίνουν καταφεύγουμε στις συναρτήσεις πυρήνα (Kernel Procedures - ΚΡ) που χρησιμοποιούνται πιο συχνά. Επιλέγοντας Help > Essential Kernel Procedures βλέπουμε τις πιο βασικές (ΚΡ) στο παράθυρο του manual που ανοίγει. Όταν είμαστε στον Process Editor με <Control> + <h> βλέπουμε Essential Kernel Procedures Όταν είμαστε στον Process Editor με <Control> + <Shift> + <h> βλέπουμε All Kernel Procedures

37 Προσθέτοντας κώδικα στις καταστάσεις
4. Προσδιορισμός του είδους ροής πακέτων που σχετίζεται με τη διακοπή Βρείτε την Ενότητα «Ιnterrupt Processing». 5. Από τις περιγραφές των συναρτήσεων της ενότητας αυτή βρίσκουμε τον ορισμό της συνάρτησης op_intrpt_strm(). Επιλέγοντας την υπερσύνδεση του op_intrpt_stream () θα δούμε τον πλήρη ορισμό της συνάρτησης βιβλιοθήκης μαζί με παραδείγματα χρήσης

38 Προσθέτοντας κώδικα στις καταστάσεις
6. Τα επόμενα δύο βήματα απαιτούν τη διαχείριση του κάθε πακέτου Βρίσκοντας τον δείκτη του πακέτου  op_pk_get() Και αφού το καταγράψουμε το καταστρέφουμε  op_pk_destroy() δίνοντας ως παράμετρο το δείκτη του πακέτου 7. Πληκτρολογούμε ή εναλλακτικά αντιγράφουμε και επικολλούμε από τις Essential Procedures (τη συνάρτηση op_pk_destroy(pkptr) στο χώρο της κατάστασης arrival όπου γράφουμε κώδικα αμέσως μετά την εντολή αύξησης του δείκτη packet count Χρειάζεται να δώσουμε ως όρισμα της συνάρτησης τον δείκτη του πακέτου που έχει δημιουργηθεί από τη ροή των πακέτων που σχετίζονται με τη συγκεκριμένη διακοπή Τον δείκτη τον ανακτούμε μέσω δύο συναρτήσεων op_pk_get (op_intrpt_strm ()) Οπότε η ολοκληρωμένη εντολή που θα πρέπει να πληκτρολογήσουμε θα είναι op_pk_destroy (op_pk_get (op_intrpt_strm ())); Τέλος θα πρέπει να ενημερώσουμε το στατιστικό μας μέσω της συνάρτησης op_stat_write(). Δείτε μέσω του manual τους ορισμούς των παραπάνω συναρτήσεων. Ο συνολικός κώδικας που θα πρέπει να περιέχεται στην κατάσταση arrival είναι: ++pk_count; op_stat_write (pk_cnt_stathandle, pk_count); Σώζουμε τον κώδικα της κατάστασης File > Commit, και κλείνουμε το παράθυρο.

39 Ορίζοντας τη διεπαφή (ΑΡΙ) της διαδικασίας
Κάθε διαδικασία έχει εκ κατασκευής και μία διεπαφή με συγκεκριμένες παραμέτρους τις οποίες μας δίνεται η δυνατότητα μέσω αυτών να διαρθρώσουμε την διαδικασία ως προς τον τρόπο με τον οποίο θα πρέπει να συμπεριφερθεί κατά τη διάρκεια της εξομοίωσης. Επιλέγοντας Interfaces > Process Interfaces μπορούμε να δούμε το παράθυρο με αυτές τις παραμέτρους που μπορούμε να διαχειριστούμε. Αλλάζοντας π.χ. την αρχική τιμή της παραμέτρου begsim intrpt σε enabled υποχρεώνει τον πυρήνα του εξομοιωτή να παραδώσει τον έλεγχο στη διαδικασία και συγκεκριμένα στην κατάσταση init αμέσως μόλις ξεκινήσει η εξομοίωση μέσω αυτού του τύπου της διακοπής. Οι τιμές των υπολοίπων παραμέτρων παραμένουν ως έχουν ενώ οι τιμές της στήλης Status πρέπει να αλλάξουν σε hidden βλ. τον παρακάτω πίνακα: Η τιμή hidden σημαίνει ότι αυτές οι παράμετροι αυτές δεν θα εμφανιστούν και στο node editor όπου θα υιοθετήσουμε το συγκεκριμένο process model που κατασκευάσαμε.

40 Μεταγλώττιση της διαδικασίας
Έχοντας ολοκληρώσει τη δημιουργία της διαδικασίας μας (FSM και Κώδικα) πρέπει να κάνουμε τη μεταγλώττιση (compilation) και να δημιουργήσουμε τον object code για να εξασφαλίσουμε ότι δεν υπάρχουν λάθη συντακτικά. Επιλέγουμε το κουμπί Compile the Model Στο ερώτημα Save As σώζουμε τη διαιδκασία με το όνομα <Αρχικά>_packet_count Και με το τέλος της μεταγλώττισης κλείνουμε τον Process Editor (αν όλα έχουν πάει καλά)

41 Σύνοψη Σύνοψη εσωτερικών λειτουργιών ΟΡΝΕΤ Μοντελοποίηση κόμβου
Οι διαδικασίες (processes) στο ΟΡΝΕΤ και η αλληλεπίδρασή τους Μοντελοποίηση κόμβου Παράμετροι και μέσες τιμές Τα συστατικά μέρη του κόμβου-μοντέλου Δημιουργία δικού μας μοντέλου διαδικασίας (Process model) Δημιουργία και παραμετροποίηση κόμβου που χρησιμοποιεί το δικό μας μοντέλο διαδικασίας (Node model) Επιλογή κατάλληλων στατιστικών που επηρεάζουν τη συμπεριφορά του κόμβου Δημιουργία διαφορετικών σεναρίων Εκτέλεση εξομοίωσης, συλλογή στατιστικών και σύγκριση

42 Δημιουργία και παραμετροποίηση κόμβου χρησιμοποιώντας το μοντέλο διαδικασίας
Το μοντέλο κόμβου που θα υιοθετήσουμε αποτελείται από δύο γεννήτριες πακέτων οι οποίες στέλνουν τα πακέτα τους στο δομοστοιχείο (module) που χρησιμοποιεί ως διαδικασία το μοντέλο που δημιουργήσαμε προηγουμένως. Παρατηρείστε ότι η διαδικασία μας μπορεί να δέχεται πακέτα από διαφορετικές ροές εισερχόμενων πακέτων λόγω του ότι κατά τη διάρκεια του interrupt μπορεί και διαχωρίζει τις διαφορετικές ροές  op_intrpt_strm () 1. Επιλέγουμε File > New…, και στη συνέχεια από το μενού Node Model και πατάμε OK. 2. Από ομάδα εργαλείων επιλέγουμε Create Processor και δημιουργούμε στην επιφάνεια εργασίας 3 δομοστοιχεία τύπου processor (Δεξί κλικ για να σταματήσουμε να δημιουργούμε δομοστοιχεία). 3. Ενώνουμε τα τρία δομοστοιχεία όπως φαίνεται παρακάτω επιλέγοντας το κουμπί Create Packet Stream. Στη συνέχεια αλλάζουμε τα ιδιοχαρακτηριστικά (attributes) του κάθε δομοστοιχείου 1. Κάνοντας δεξί κλίκ στο ένα από τα δομοστοιχεία (p_0) το οποίο θα λειτουργήσει σαν γεννήτρια πακέτων επιλέγουμε Edit Attributes για να αποκτήσουμε πρόσβαση στα ορισμένα ιδιοχαρακτηριστικά.. 2. Αλλάζουμε το ιδιοχαρακτηριστικό name από p_0 σε src1. 3. Αλλάζουμε επίσης το μοντέλο της διαδικασίας σε simple_source και πατάμε ΟΚ.

43 Δημιουργία και παραμετροποίηση κόμβου χρησιμοποιώντας το μοντέλο διαδικασίας
Κάνουμε το ίδιο και στο δομοστοιχείο p_2 αλλάζοντας το όνομα σε src2 και επιλέγουμε πάλι simple_source με μία διαφοροποίηση η οποία θα μας δώσει τη δυνατότητα να παραμετροποιήσουμε τον κόμβο και να δημιουργήσουμε διάφορα σενάρια κατά τη διάρκεια της εξομοίωσης. Επιλέγοντας Packet Interarrival Time στην αριστερή στήλη κάνοντας δεξί κλικ και επιλέγοντας Promote Attribute to Higher Level δίνουμε τη δυνατότητα να αλλάξουμε την τιμή αυτού του ιδιοχαρακτηριστικού από το επίπεδο του Project Editror και να τρέξουμε διαφορετικά σενάρια. Το δομοστοιχείο p_1 θα λειτουργήσει βάσει της διαδικασίας packet count. Ακολουθώντας ακριβώς τα ίδια βήματα όπως προηγουμένως επιλέγουμε ως όνομα name=counter ενώ για process model βρίσκουμε και επιλέγουμε το όνομα της διαδικασίας μας όπως τη σώσαμε π.χ. <Αρχικά>_packet_count

44 Δημιουργία και παραμετροποίηση κόμβου χρησιμοποιώντας το μοντέλο διαδικασίας
Και οι δύο γεννήτριες πακέτων στέλνουν πακέτα στον counter. Η src1 στέλνει πακέτα με σταθερό ρυθμό ενώ η src2 με μεταβλητό ρυθμό βάσει κατανομής που θα καθορίζουμε κατά τη διάρκεια της εξομοίωσης. Μία ακόμα δυνατότητα που παρέχεται από το ΟΡΝΕΤ είναι η προαγωγή στατιστικών που έχουν οριστεί στα πλαίσια διαδικασιών στο επίπεδο του κόμβου. Ένα τέτοιο στατιστικό μπορεί να μετονομαστεί και να φέρει διαφορετική περιγραφή που να ταιριάζει καλύτερα για την περίπτωση. 1. Για να προάγουμε και μετονομάσουμε το στατιστικό packet count επιλέγουμε Interfaces > Node Statistics. 2. Στο πρώτο πεδίο της στήλης Orig. Name column, επιλέγουμε counter.packet count από τη λίστα που εμφανίζεται και κάνουμε κλικ στο Promote. 3. Αλλάζουμε το Prom. Name σε node packet count. 4. Αλλάζουμε και το πεδίο Desc. σε Number of packets received at the node level. 5. Σώζουμε File > Commit και κλείνουμε στη συνέχεια το παράθυρο κειμένου Description. 6. Κλείνουμε και το παράθυρο διαλόγου Statistic Promotion με ΟΚ 7. Τέλος σώζουμε και το μοντέλο κόμβου και κλείνουμε το Node Editor. File > Save με όνομα <Αρχικά>_packet_count. Τα μοντέλα κόμβου και διαδικασιών μπορούν να έχουν το ίδιο όνομα επειδή το OPNET προσθέτει στο αρχείο τις καταλήξεις .nd.m και .pr.m αντίστοιχα.

45 Σύνοψη Σύνοψη εσωτερικών λειτουργιών ΟΡΝΕΤ Μοντελοποίηση κόμβου
Οι διαδικασίες (processes) στο ΟΡΝΕΤ και η αλληλεπίδρασή τους Μοντελοποίηση κόμβου Παράμετροι και μέσες τιμές Τα συστατικά μέρη του κόμβου-μοντέλου Δημιουργία δικού μας μοντέλου διαδικασίας (Process model) Δημιουργία και παραμετροποίηση κόμβου που χρησιμοποιεί το δικό μας μοντέλο διαδικασίας (Node model) Επιλογή κατάλληλων στατιστικών που επηρεάζουν τη συμπεριφορά του κόμβου Δημιουργία διαφορετικών σεναρίων Εκτέλεση εξομοίωσης, συλλογή στατιστικών και σύγκριση

46 Δημιουργία δικτύου χρησιμοποιώντας το μοντέλο κόμβου – Στατιστικά – Σενάρια
Όπως ακριβώς επιλέξαμε το μοντέλο διαδικασίας για το νέο δικτυακό κόμβο που ορίσαμε, με ανάλογο τρόπο μπορούμε να χρησιμοποιήσουμε το κόμβο σε ένα νέο μοντέλο δικτύου (επίπεδο Project Editor) Στα πλαίσια του παραδείγματός μας θα ορίσουμε ένα δίκτυο αποτελούμενο αποκλειστικά από το μοντέλο του κόμβου packet_count και μέσω του Project Editor θα ορίσουμε στη συνέχεια στατιστικά καθώς και κινούμενα γραφικά που δείχνουν την κίνηση των πακέτων. 1. Δημιουργούμε ένα καινούριο Project  File > New..., και τέλος πατάμε OK για να ανοίξουμε ένα νέο project το οποίο ονομάζουμε <Αρχικά>_packet_count και το σενάριο constant. 2. Επιλέγουμε Quit στην πρώτη εμφάνιση του Startup Wizard. Στη συνέχεια θα δημιουργήσουμε τη δική μας κατηγορία αντικειμένων κάνοντας χρήση του εργαλείου object palette. 1. Ανοίγουμε την παλέτα εργαλείων μέσω του Open Object Palette. 2. Αλλάζουμε τον τρόπο παρουσίασης των αντικειμένων πατώντας  στη συνέχεια πατάμε Configure Palette… .  πατάμε Clear για να καθαρίσουμε τη λίστα με τα αντικείμενα (απομένουν τρία αντικείμενα) 3. Επιλέγουμε το κουμπί Νode Models και θέτουμε το Status του μοντέλου <Αρχικά>_packet_count node να συμπεριληφθεί (included)  ΟΚ για να κλείσουμε το παράθυρο Select Included Entries. Τρεις εκδόσεις του κόμβου <Αρχικά>_packet_count προστίθενται στην object palette: fixed, mobile, and satellite και πατάμε ΟΚ να κλείσουμε το παράθυρο Configure Palette. 4. Στην ερώτηση αποθήκευσης της νέας κατηγορίας δίνουμε <Αρχικά>_packet_count.

47 Δημιουργία δικτύου χρησιμοποιώντας το μοντέλο κόμβου – Στατιστικά – Σενάρια
1. Στη συνέχεια επιλέγουμε την έκδοση fixed node του μοντέλου <Αρχικά>_packet_count στην επιφάνεια εργασίας του Project Editor και κλείνουμε την object palette. 2. Επιλογή κατάλληλων στατιστικών  Δεξί κλικ και επιλογή Choose Individual DES Statistics η οποία ανοίγει το παράθυρο Choose Results από το οποίο επιλέγουμε . Animations > Node Animation checkbox. Node Statistics > node packet count checkbox. Δεξί κλίκ Node Statistics > node packet count Επιλέγουμε Record Statistic Animation. 3. Πατάμε ΟΚ να κλείσει το παράθυρο. Στα προηγούμενα βήματα Δημιουργήσαμε ένα κινούμενο γράφημα ροής πακέτων μέσα στον κόμβο (Animations > Node Animation). Καθορίσαμε ότι το στατιστικό κόμβου node packet count θα υπολογιστεί (Node Statistics > node packet count). Καθορίσαμε ότι και ο υπολογισμός του στατιστικού node packet θα προβληθεί ως κινούμενο γράφημα.

48 Δημιουργία δικτύου χρησιμοποιώντας το μοντέλο κόμβου – Στατιστικά – Σενάρια
Όταν δημιουργούσαμε το μοντέλο του κόμβου προαγάγαμε το ιδιοχαρακτηριστικό (attribute) Packet Interarrival Time της 2ης γεννήτριας πακέτων src_2 έτσι ώστε να μπορούμε να δώσουμε διαφορετική τιμή από το επίπεδο του μοντέλου του δικτύου (Project Editor) που θέλουμε να κατασκευάσουμε. 1. Στα πλαίσια του σεναρίου constant θα καθορίσουμε την κατανομή του κόμβου. Δεξί κλικ στον κόμβο, επιλέγουμε Edit Attributes  Κλικ στη στήλη Value του προαχθέντος ιδιοχαρακτηριστικού (promoted) src2.Packet Interarrival Time  Εμφανίζεται το παράθυρο Distribution Specification. 2. Επιβεβαιώστε ότι το παράθυρο αυτό έχει τις τιμές Distribution name=constant και Mean outcome = 1.0  ΟΚ να κλείσει το παράθυρο Για τη διαμόρφωση των εξομοιώσεων που θέλουμε να τρέξουμε 1. Choose DES > Configure/Run Discrete Event Simulation… 2. Δώστε τις παρακάτω τιμές στο παράθυρο Configure DES Duration: 100 seconds, Seed: 1471, Values per statistic: 100 3. Στο ίδιο παράθυρο εκτείνοντας το στοιχείο του καταλόγου με την ονομασία Outputs  Animation επιλέγουμε 2D και ελέγχουμε αν η επιλογή Send animation to history file είναι ενεργοποιημένη. 4.Επιλέγουμε Apply για να επικυρώσουμε τις αλλαγές στη διαμόρφωση του εξομοιωτή και κλείνουμε το παράθυρο Configure/Run DES πατώντας Cancel χωρίς να τρέξουμε ακόμα την εξομοίωση.

49 Δημιουργία δικτύου χρησιμοποιώντας το μοντέλο κόμβου – Στατιστικά – Σενάρια
Θέλουμε να μελετήσουμε πώς διαφορετικές κατανομές άφιξης πακέτων μπορούν να επηρεάσουν τα στατιστικά. Για το λόγο αυτό θα δημιουργήσουμε νέα σενάρια και θα συγκρίνουμε στη συνέχεια τα αποτελέσματα. Για τη δημιουργία νέου σεναρίου ακολουθούμε τα βήματα 1. Επιλέγουμε Scenarios > Duplicate Scenario... 2. Ονομάζουμε το νέο σενάριο exponential  ΟΚ και σώζουμε το αρχείο. 3. Δεξί κλικ στον κόμβο  Edit Attributes  κλικ στη στήλη Value του src2.Packet Interarrival Time  Άνοιγμα παραθύρου Specification  Επιλογή exponential και Mean=1.0. 4. Κλικ OK για να κλείσουν τα Specification και Attributes παράθυρα και Αποθηκεύουμε το project <Αρχικά>_packet_count.

50 Σύνοψη Σύνοψη εσωτερικών λειτουργιών ΟΡΝΕΤ Μοντελοποίηση κόμβου
Οι διαδικασίες (processes) στο ΟΡΝΕΤ και η αλληλεπίδρασή τους Μοντελοποίηση κόμβου Παράμετροι και μέσες τιμές Τα συστατικά μέρη του κόμβου-μοντέλου Δημιουργία δικού μας μοντέλου διαδικασίας (Process model) Δημιουργία και παραμετροποίηση κόμβου που χρησιμοποιεί το δικό μας μοντέλο διαδικασίας (Node model) Επιλογή κατάλληλων στατιστικών που επηρεάζουν τη συμπεριφορά του κόμβου Δημιουργία διαφορετικών σεναρίων Εκτέλεση εξομοίωσης, συλλογή στατιστικών και σύγκριση

51 Εκτέλεση εξομοίωσης, συλλογή στατιστικών και σύγκριση
Στο σημείο αυτό είμαστε έτοιμοι να εκτελέσουμε και τις δύο εξομοιώσεις μέσω του παραθύρου Manage Scenarios Επιλέγουμε Scenarios > Manage Scenarios…  αλλάζουμε την τιμή της στήλης Results για κάθε ένα σενάριο από <uncollected> σε <collect>  ΟΚ για να τρέξουν οι εξομοιώσεις (*). Το παράθυρο DES Execution Manager ανοίγει και δείχνει την πρόοδο των δύο προγραμματισμένων εξομοιώσεων ενώ οι πληροφορίες ανανεώνονται σε πραγματικό χρόνο  Μόλις οι εξομοιώσεις ολοκληρωθούν κλείνουμε το παράθυρο (*) ΠΡΟΣΟΧΗ! Πριν τρέξουμε τις εξομοιώσεις ελέγχουμε αν η τιμή του Network Simulation Repositories = (empty) [Edit > Preferences]

52 Εκτέλεση εξομοίωσης, συλλογή στατιστικών και σύγκριση
1. Επιλέγουμε να δούμε τα αποτελέσματα του σεναρίου exponential Scenarios > Switch To Scenario > exponential. 2. Δεξί κλικ στον κόμβο node_0 και επιλέγουμε View Results το οποίο ανοίγει το παράθυρο Results Browser για να επιλέξουμε στη συνέχεια τα στατιστικά που θέλουμε να δούμε. 3. Επιλέγουμε από την ιεραρχία των Object Statistics > node_0 > node packet count. 4. Πατάμε το Show

53 Εκτέλεση εξομοίωσης, συλλογή στατιστικών και σύγκριση
Η γραφική δείχνει τον αριθμό των πακέτων συναρτήσει του χρόνου καθώς και ότι τα πακέτα δεν έρχονται με σταθερό ρυθμό λόγω της εκθετικής κατανομής Αυτό μπορούμε να το δούμε και από μέσω της δυνατότητας μεγέθυνσης της γραφικής επιλέγοντας ένα τετράγωνο της γραφικής που θέλουμε να επικεντρώσουμε. Κλείνουμε τις γραφικές πατώντας Delete.

54 Εκτέλεση εξομοίωσης, συλλογή στατιστικών και σύγκριση
Κάνουμε ακριβώς τις ίδιες ενέργειες για να δούμε τη γραφική και για το σενάριο constant (Από το Results Browser παράθυρο επιλεγουμε Results For: constant) (εικόνα 1) Κάνοντας δεξί κλικ και επιλέγοντας Draw Style > Discrete βλέπουμε τη διακριτή γραφική αφού τα πακέτα αποστέλλονται κάθε 1 sec (Εικόνα 2) Εικόνα 1 Εικόνα 2

55 Εκτέλεση εξομοίωσης, συλλογή στατιστικών και σύγκριση
Τέλος μπορούμε να δούμε τις κινούμενες αναπαραστάσεις της εξομοίωσης και για τη δημιουργία στατιστικών γραφικών και της κίνησης των πακέτων. 1. Επιλέγουμε DES > Play 2D Animation. Το περιβάλλον του Animation Viewer ανοίγει και δείχνει την κινούμενη αναπαράσταση του στατιστικού για το σενάριο exponential. 2. Για να δούμε την αναπαράσταση της κίνησης των πακέτων επιλέγουμε το σχετικό παράθυρο Windows > Animation Viewer > top.node_0 packet flow. 3. Για να κλείσουμε τον Animation Viewer, επιλέγουμε File > Exit. Παρατηρείστε ότι ο Project Editor παραμένει ανοικτός. 4. Κανουμε το ίδιο και για το σενάριο constant αλλάζουμε από τον Project Editor το σενάριο  Scenarios > Switch to Scenario > constant)  DES > Play 2D Animation. 5. Κλείνουμε τον Animation Viewer. Για περισσότερες πληροφορίες μπορεί κάποιος να επισκεφτεί το εγχειρίδιο χρήσης του ΟΡΝΕΤ στην ενότητα Module>Animation Viewers.


Κατέβασμα ppt "Σπύρος Δενάζης sdena@upatras.gr Εργαστήρια Δικτύων Υπολογιστών Εργαστήριο 2ο : Μοντελοποίηση δικτυακού κόμβου Σπύρος Δενάζης sdena@upatras.gr."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google