Εργαστήριο Δικτύων Omnet++ 2015 vol2

Post on 23-Jan-2016

272 views 0 download

description

Εργαστήριο Δικτύων Omnet++ 2015 vol2

Transcript of Εργαστήριο Δικτύων Omnet++ 2015 vol2

Εργαστήριο Τηλεπικοινωνιακών

Δικτύωνχρησιμοποιώντας OMNET++τονπροσομοιωτή

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

Αθήνα 2015

Το Omnet++ ..μελίγαλόγια

• Το Omnet++ είναι ένα αντικειμενοστραφές framework προσομοίωσης ανοιχτού κώδικα, ελεύθερο για μη κερδοσκοπική χρήση

• Είναι object-orianted, βασισμένο σε διακριτά γεγονότα• Δεν είναι από μόνο του τηλ/νιακό δίκτυο αλλά μας επιτρέπει

να δημιουργούμε δικά μας• Το OMNeT++ περιλαμβάνει ένα IDE βασισμένο στο

περιβάλλον Eclipse• Αναπτύχθηκε από το Τεχνικό Πανεπιστήμιο της Βουδαπέστης

από τον Andras Varga.

Παραδείγματαχρήσηςτου Omnet++

• Μοντελοποίηση ενσύρματων και ασύρματων δικτύων επικοινωνιών

• Μοντελοποίηση πρωτοκόλλων• Μοντελοποίηση δικτύων ουρών• Μοντελοποίηση πολυεπεξεργαστικών και κατανεμημένων

hardware συστημάτων• Εκτίμηση της απόδοσης πολύπλοκων λογισμικών συστημάτων

ΙεράρχησηΟντοτήτων

• Το Omnet++ αποτελείται από εμφωλευμένες οντότητες που επικοινωνούν στέλνοντας μηνύματα

• Ιεραρχικά το κορυφαίο module αποτελεί το σύστημα. Αυτό περιέχει submodules και αυτά με την σειρά τους περιέχουν άλλα submodules

• Η πιο απλή οντότητα που διαθέτει κάποια λειτουργικότητα και τους αλγορίθμους ονομάζεται simple module και αποτελεί μια C++ κλάση.

• τα simple modules είναι επαναχρησιμοποιήσιμα και μπορούν να συνδυαστούν μεταξύ τους σχηματίζοντας τα compound modules

, , Μηνύματα Πύλες Σύνδεσμοι

• Τα μηνύματα μπορούν να περιέχουν αφηρημένα δεδομένα ή σύνθετες δομές δεδομένων. Τα simple modules μπορούν να στείλουν σε άλλα modules ή στον εαυτό τους (self messages) και από τα μικρότερα επίπεδα δικτύου στα μεγαλύτερα (και αντίστροφα)

• Πύλες (gates) είναι οι είσοδοι και έξοδοι των modules στις οποίες φτάνουν (input gates) ή από τις οποίες στέλνονται (output gates) μηνύματα.

• Οι σύνδεσμοι (links) ενώνουν μοναδικά δύο modules του ίδιου επιπέδου

ΜοντελοποίησηΜετάδοσηςΔεδομένων

• Για την υλοποίηση δικτύων επικοινωνίας, οι σύνδεσμοι μπορούν να χρησιμοποιηθούν ως φυσικοί σύνδεσμοι μεταξύ κόμβων.

• Σε μια σύνδεση μπορούν να αντιστοιχηθούν παράμετροι για ρεαλιστική μοντελοποίηση ενός δικτύου, όπως data rate, propagation delay, bit error rate and packet error rate

• Αυτές οι παράμετροι μαζί με τους αλγορίθμους που τους αφορούν αποτελούν την δομή του διαύλου (channel) και μπορούν να παραμετροποιηθούν ανάλογα τις ανάγκες

Παράμετροι

• Οι μονάδες μπορούν να έχουν χαρακτηριστικά με τη μορφή παραμέτρων τα οποία ορίζονται κατά την δημιουργία ευέλικτων τοπολογιών. Έτσι υπάρχει η δυνατότητα να δημιουργηθούν στιγμιότυπα της ίδιας μονάδας. Οι παράμετροι ρυθμίζουν την συμπεριφορά των μοντέλων και κατ’ επέκταση των δικτύων

• Οι παράμετροι μπορεί να είναι :• Numeric - Αριθμητικά• String - Σειρές χαρακτήρων• Bool - Σωστό/Λάθος• XML data trees

Τύποιαρχείωνστο Omnet++

.neddefinitions of simulation components and networks

.cc, .hC++ source files of simulation components

.msgmessage descriptions (e.g. protocol headers) that are automatically translated to C++ classes

_m.cc, _m.hgenerated files, created from msg files during the build process

.iniparameter settings and configuration options for simulations

Αναλύονταςτααποτελέσματα

• Τα αρχεία αποτελεσμάτων είναι με κατάληξη “.sca” (scalar) ή “.vec” (vector). Τα αρχεία με κατάληξη .vec καταγράφουν χρονοσειρές δεδομένων, δηλαδή ζευγάρια που αποτελούνται από μια τιμή και μια χρονοσφραγίδα. Τα αρχεία με την κατάληξη .sca καταγράφουν μόνο τιμές δεδομένων ανά την προσομοίωση.

• Το Omnet++ προσφέρει εργαλεία για την ανάλυση των αποτελεσμάτων

• Τα αρχεία αποτελεσμάτων είναι line-oriented text files και μπορούν να αναλυθούν με μια ποικιλία εργαλείων όπως το Matlab, GNU R, Perl, Python and spreadsheets

Specialized Component Libraries

• Η ανάπτυξη και η χρησιμότητα του OMNeT++ οδήγησε στην ανάγκη να δημιουργηθούν εργαλεία τα οποία να εξειδικεύουν την προσομοίωση σε συγκεκριμένους τύπους και σχηματισμούς δικτύων.

• Mobility Framework -- for mobile and wireless simulations• INET Framework -- for wired and wireless TCP/IP based

simulations• Castalia -- for wireless sensor networks• MiXiM -- for mobile and wireless simulations• OverSim -- for overlay and peer-to-peer networks (INET-based)• Consensus Positif and MAC Simulator -- for sensor networks

Getting Started ..

• Ξεκινήστε τον προσομοιωτή • Ανοίξτε το τερματικό και πληκτρολογήστε /local-disk/omnetpp-

4.5/ide/omnetpp

Getting Started cont ..• Στην συνέχεια θα σας ζητηθεί να επιλέξετε ένα workspace της

επιλογής σας• Ως workspace πληκτρολογήστε την θέση :

/local-disk/tmp/stdXXXXX , προσθέτοντας τα στοιχεία από το Α.Μ. σας.

Getting Started cont ..•Πατήστε Χ στο Welcome Page•Κάντε uncheck την επιλογή “Install INET Framework” όπως είναι στην εικόνα και πατήστε «ΟΚ»

Exploring the Models• Αριστερά στο πλαίσιο Project

Explorer έχουν φορτωθεί κάποια μοντέλα.

• Ανοίγουμε με δεξί click>open project το φάκελο inet

• Στο φάκελο src περιέχει τα components του μοντέλου (protocols, apps , etc) ενώ στο φάκελο examples περιέχονται έτοιμα παραδείγματα

Launching Simulations• Ανοίγουμε το φάκελο

examples>manetrouting>net80211_control• Θα ασχοληθούμε με την ασύρματη επικοινωνία μη

κεντρικοποιημένων δικτύων όπως είναι τα ΜΑΝΕΤ (Mobile Ad Hoc Network)

• ο χρήστης μπορεί να τρέξει το παράδειγμα με κάποιο πρωτόκολλο δρομολόγησης όπως το AODV , DSR , DSDV , DYMO ,OLSR.

• Στην INET βιβλιοθήκη το AODV και DSR αναφέρονται ως AODVUU και DSRUU. Το «UU» στο τέλος αναφέρεται στο πανεπιστήμιο της Ουψάλα (Uppsala University)

Net80211_control.ned• Πατάμε διπλό click στο αρχείο Net80211_control.ned

• Το channel control καθορίζει πληροφορίες για τη θέση και την κίνηση των κόμβων ενώ καθορίζει και το μοντέλο απωλειών (default value – free space model)

• To configurator ρυθμίσει τις διευθύνσεις IP και τους πίνακες δρομολόγησης για το δίκτυο με σκοπό την εύρεση του συντομότερου μονοπατιού

• Στο δίκτυο μας υπάρχουν κινητά που στέλνουν μηνύματα (στο παράδειγμά μας στέλνουν UDP packets)

AdhocHost.ned• Bλέπουμε τι βρίσκεται μέσα στους δυο κόμβους –

αποστολέας και παραλήπτη, χρησιμοποιείται η σύνθετη οντότητα (compound module) “AdhocHost”

Simulation Setup configuration from omnetpp.ini file)

Επιλέγουμε το αρχείο .ini (συνήθως είναι omnetpp.ini) Από το πεδίο Form αλλάζουμε τις παρακάτω μεταβλητέςΑπό το General• sim-time-limit 200sΑπό το Parameters • numHosts =10 , numFixHosts =0 • .constraintAreaMaxX / Y = 500m• **.udpApp[0].chooseDestAddrMode = perSend (για να

αλλάζουμε προορισμό πακέτων με κάθε νέο πακέτο)• **.udpApp[0].sendInterval = 0.01s (400 kbps) κάθε πότε θα

δημιουργεί η πηγή νέο πακέτο Από το Result Recording ελέγχουμε αν είναι «τικαρισμένα» τα

Enable recording of vectors & scalars

Launching Simulations• Για να τρέξουμε την προσομοίωση πατάμε την επιλογή Run

Running Simulations• Επιλέγουμε το Config name : DYMOUM -- "Aodv Simple test“ • Επιλέξουμε τον τρόπο με τον οποίο θα τρέξουμε την προσομοίωσή μας• Step by step - F4• Run - F5 (με βάση την ταχύτητα που έχουμε επιλέξει βλ. παρακάτω)• Fast – F6• Express – F7• Until (ένα συγκεκριμένο event / μήνυμα που μας ενδιαφέρει)Για να σταματήσουμε την προσομοίωσή μας πατάμε το Stop – F8 Για να αποθηκευτούν τα αποτελέσματά μας πρέπει να καλέσουμε την finish

() (το σημαιάκι)

• Στο κύριο παράθυρό μας τρέχει η προσομοίωση όπου μπορούμε να επιλέξουμε την ταχύτητα με την οποία θέλουμε να τρέξει

• Από κάτω φαίνονται τα event τα οποία πραγματοποιούνται • Μπορούμε να κάνουμε διπλό click για να μπούμε μέσα σε

κάποια οντότητα για να δούμε μέσα σε αυτήν τα events χαμηλότερου επιπέδου

Running Simulations

Αναλύοντας τααποτελέσματα• Τα αποτελέσματα

αποθηκεύονται στο φάκελο result εφόσον έχουμε κλείσει προηγουμένως την προσομοίωση με το finish

• Διπλό click για να ανοίξει κάποιο από τα αρχεία .vec ή .sca

• Το εργαλείο ανάλυσης των αποτελεσμάτων μετά την επεξεργασία των αποτελεσμάτων θα φτιάξει ένα αρχείο .anf το οποίο μετά μπορείτε να ξαναπροσπελάσετε για να δείτε τα αποτελέσματα.

Αναλύοντας τααποτελέσματα• Αφού έχουμε κλείσει την προσομοίωσή μας τότε πηγαίνουμε στο

φάκελο results που έχει δημιουργηθεί • Επιλέγουμε να ανοίξουμε το αρχείο .sca • Στο παράθυρο που θα μας ανοίξει επιλέγουμε το πεδίο Browse Data

(στο κάτω μέρος της καρτέλας που μας άνοιξε) για να δούμε τις μετρικές που μας ενδιαφέρουν

ΜετρικέςΚάποιες χαρακτηριστικές μετρικές είναι οι παρακάτω

• Number of CollisionsΌταν δύο οι περισσότερα πακέτα διασταυρωθούν σε κάποιο μονοπάτι την ίδια στιγμή τότε προκαλούνται παρεμβολές, οι οποίες έχουν ως αποτέλεσμα κάποια από αυτά τα πακέτα να τεθούν άχρηστα. • Average ThroughputΑποτελεί το ποσοστό επιτυχούς παράδοσης πακέτων ανά μονάδα χρόνου πάνω σε ένα κανάλι επικοινωνίας. Μετριέται σε bit/sec. • Number of received PacketsΕίναι ο συνολικός αριθμός των πακέτων που έλαβαν οι κόμβοι.• End – To – End DelayΕίναι ο χρόνος που χρειάζεται ένα πακέτο να φτάσει στον τελικό παραλήπτη από την στιγμή που δημιουργήθηκε στον κόμβο αποστολέα. Ο χρόνος αυτός λαμβάνει υπόψη και τους χρόνους που απαιτούνται για την αποστολή του πακέτου στους ενδιάμεσους κόμβους. • Packet Loss Rate Είναι το ποσοστό απώλειας πακέτων που στάλθηκαν από τους κόμβους πηγές και δεν έφτασαν στους τελικούς παραλήπτες.

Event Log • Μπορούμε να απεικονίσουμε τις αλληλεπιδράσεις σε ένα

δυναμικό διάγραμμα ακολουθίας. • Το διάγραμμα ακολουθίας λειτουργεί από το αρχείο

καταγραφής συμβάντων (.elog) • Για να ενεργοποιήσουμε το eventlog στο αρχείο .ini

>Form>Event Log > Enable eventlog recording

Event Log

Importing Inet Framework

• Για να το κατεβάσουμε πηγαίνουμε στην ιστιοσελίδα http://inet.omnetpp.org/index.php?n=Main.Download

• Στο IDE του Omnet επιλέγουμε File>Import>General>Existing Projects into Workspace>Next

• Ύστερα επιλέγουμε Browse βρίσκουμε τον φάκελο που έχουμε αποσυμπιέσει το Inet και το επιλέγουμε.

• Τσεκάρουμε τις επιλογές Copy project into workspace και Search for nested projects

• Πατάμε Finish• Για να ολοκληρώσουμε την διαδικασία πατάμε Ctrl+B για να

κάνει build το Inet και να μπορούμε να το χρησιμοποιήσουμε• Μπορείτε να βρείτε περισσότερες λεπτομέρειες στο

παρακάτω video

Χρήσιμα link

• András Varga. OMNΕT++, Discrete Event Simulation System, Version 4.4, http://www.omnetpp.org/

• INET Framework, http://inet.omnetpp.org/• Google Group “omnetpp”,

https://groups.google.com/forum/#!forum/omnetpp• OMNeT++ API Reference,

http://omnetpp.org/doc/omnetpp/api/index.html• C++ source documentation (Doxygen),

http://inet.omnetpp.org/doc/INET/doxy/index.html• OMNeT++ USER MANUAL

http://omnetpp.org/doc/omnetpp/manual/usman.html#toc_1• INET Framework API http://

inet.omnetpp.org/doc/INET/neddoc/index.html• YouTube Video from our friend Rupam (installing Omnet++ and

import a library) https://www.youtube.com/watch?v=XhklF78Lbbc