Προσομοίωση Δικτύων 1 - Εισαγωγή Δελτούζος Κωνσταντίνος Δρ. Ηλεκτρολόγος Μηχανικός και Τεχνολογίας Υπολογιστών deltouzos@upatras.gr
Στόχοι του εργαστηρίου Γνωριμία με τα πιο διαδεδομένα λογισμικά προσομοίωσης δικτύων Μελέτη δικτυακών και επικοινωνιακών θεμάτων μέσα από σενάρια προσομοίωσης Μελέτη/ανάλυση μετρικών απόδοσης δικτύων
Τεχνικοί στόχοι Σχεδίαση και ανάπτυξη έγκυρων προγραμμάτων προσομοίωσης Εξοικείωση με τα βασικά μέρη ενός σεναρίου εξομοίωσης Εξάσκηση τόσο σε σενάρια ενσύρματων όσο και ασύρματων δικτύων Εξάσκηση στον προγραμματισμό και στην αποσφαλμάτωση σχετικών προγραμμάτων
Χρονοδιάγραμμα 1η εβδομάδα: Εισαγωγικό μάθημα 2η – 6η εβδομάδα: Εργαστηριακές ασκήσεις προσομοίωσης δικτύων 7η εβδομάδα: Πρόοδος στην ενδιάμεση ύλη Προαιρετική Μετράει 40% του τελικού βαθμού
Χρονοδιάγραμμα 8η -12η εβδομάδα: Εργαστηριακές ασκήσεις προσομοίωσης δικτύων 13η εβδομάδα: Τελική εξέταση Αν ο φοιτητής έχει συμμετάσχει στην πρόοδο: Τελικός βαθμός = (βαθμός προόδου) Χ 0.4 + (βαθμός εξέτασης) Χ 0.6 Αλλιώς μετράει 100% ο βαθμός της τελικής εξέτασης
Γενικά
Γιατί χρησιμοποιούμε προσομοιωτές δικτύων; Τα δίκτυα είναι ένας από τους μεγαλύτερους ερευνητικούς κλάδους στην επιστήμη των υπολογιστών. Δυστυχώς, η έρευνα και ο πειραματισμός σε πραγματικά δίκτυα είναι ανέφικτος Περιορισμένοι πόροι Χρονοβόρα παραμετροποίηση (Ρύθμιση συστημάτων, εγκατάσταση τοπολογίας κ.λ.π.) Κλιμάκωση (Scalability)
Γιατί χρησιμοποιούμε προσομοιωτές δικτύων; Μέσω ενός προσομοιωτή, τα παραπάνω προβλήματα αντιμετωπίζονται αποτελεσματικά. Χωρίς κανένα κόστος, δίνεται η δυνατότητα στον ερευνητή να πειραματιστεί μέσω προσομοιώσεων των δικτύων. Η συλλογή δεδομένων γίνεται ευκολότερη. Αξιόπιστη αναπαράσταση του πραγματικού περιβάλλοντος.
Διαδεδομένοι προσομοιωτές δικτύων Γνωρίζετε κανέναν; NS (Network Simulator) NS-2 NS-3 OPNET Modeler / Riverbed Modeler OMNeT++ (Objective Modular Network Testbed in C++)
Τι κοινά έχουν; Ορισμός τοπολογίας δικτύου Ορισμός κίνησης στο δίκτυο Προσομοίωση διακριτών γεγονότων
NS
Τι είναι ο NS? Η διαδικασία πειραμάτων στον NS διαχωρίζεται σε 3 στάδια: Preprocess Execution Post Process NS code execution
Τι είναι ο NS? Προσομοιωτής δικτύου διακριτών γεγονότων Στόχος: Η δημιουργία μίας επεκτάσιμης πλατφόρμας ανοιχτού κώδικα στα πλαίσια της έρευνας και της εκπαίδευσης.
Εξάπλωση του NS O ns είναι πια ένας από τους πιο διαδεδομένους προσομοιωτές δικτύων. Κύριοι παράγοντες: Ανοιχτού κώδικα (Open Source) Επεκτασιμότητα (Extensibility )
NS-2 Ο κυρίαρχος προσομοιωτής δικτύων ΕΛ/ΛΑΚ Ευρύτατη χρήση σε Ερευνητικό και Ακαδημαϊκό τομέα για πάνω από μία 10ετία Επέκταση και συντήρηση από μεγάλη κοινότητα έως σήμερα Ισχυρό λογισμικό με πολλές δυνατότητες προσομοίωσης
NS-2 History Απόγονος του NS-1 (Real Network Simulator) - 1989 1995 - Ευρεία επέκταση μέσω χρηματοδοτούμενων έργων (DARPA, VINT, Xerox PARC, USC/ISI) 1996-97 - Πρώτη stable έκδοση και συνεχής επέκταση από την κοινότητα έως σήμερα Νεότερη έκδοση ο ns-2.35, Νοέμβρης 2011
NS2 - Today Ίσως ο πιο ώριμος προσομοιωτής με τις περισσότερες επεκτάσεις Αποτελείται από 300,000 γραμμές κώδικα στον πυρήνα του και άλλες τόσες υπολογίζονται σε επεκτάσεις Εκτέλεση δυνατή σε περιβάλλοντα GNU/Linux, FreeBSD, Solaris, Mac OS X και Windows (Cygwin) Χρήση σύμφωνα με τη GNU General Public License
NS-2 - Features Μερικές από τις δυνατότητες του NS-2: Πρωτόκολλα δικτύων - (TCP, UDP, HTTP, routing αλγόριθμοι ..) Traffic Models - (CBR, VBR, Web ..) Error Models - (Uniform, bursty ..) Radio propagation, Mobility και Energy models Wireless networks (Ad Hoc, WLAN, Hybrid ..) Ενσωμάτωση με εξωτερικά εργαλεία (Visualization, Generators ..) Πληθώρα επεκτάσεων (Multimedia streaming, Satellite, Underwater, Urban city simulation ..)
NS-2 - Overview Υλοποιημένος σε 2 γλώσσες: C++ : Back-end λειτουργίες με υψηλή ταχύτητα εκτέλεσης. Υλοποίηση αντικειμένων και μεθόδων στο επίπεδο του πυρήνα. OTcl: Front-end λειτουργίες και σύνταξη σεναρίων. Αποτελεί μικρό τμήμα του πυρήνα.
NS-2 - Σενάρια Δημιουργία σεναρίων με Tcl Γραφικό περιβάλλον για την παραμετροποίηση υπάρχει μόνο σε contributed κώδικα Εύκολος αυτοματισμός εκτέλεσης πολλών πειραμάτων με εξωτερικά scripts Εκτέλεση στη κονσόλα με την εντολή ./ns
NS-2 - Εγκατάσταση (1) Ο NS-2 βρίσκεται: http://www.isi.edu/nsnam/ns/ http://nsnam.isi.edu/nsnam/index.php/Main_Page Λήψη επιθυμητής έκδοσης και αποσυμπίεση Τελευταία έκδοση ο ns-allinone-2.35.tar.gz Βήματα για Unix Based συστήματα: tar -xzf ns-allinone-2.35.tar.gz cd ns-allinone-2.35 ./install
NS-2 - Εγκατάσταση (2) Μετά την ολοκλήρωση της εγκατάστασης πρέπει να προσθέσουμε κάποια path ώστε να είναι εκτελέσιμη η εντολή ns
NS-2 - File Dirs NS-2 - Home Directory
NS-2 - Nam Nam: Εργαλείο γραφικής απεικόνισης δικτύων
NS-2 - First Tcl script (1)
NS-2 - First Tcl script (2) Βασικά τμήματα κώδικα πειραμάτων
NS-2 - First Tcl script (3)
NS-2 – Support Google groups https://groups.google.com/forum/#!forum /ns-users NS-2 Mailing lists http://www.isi.edu/nsnam/ns/ns- lists.html Infinite tutorials και blogs
NS-3 Διάδοχος του NS-2. Σταδιακά γίνεται μετάβαση του κοινού από τον NS-2 στον NS-3. Ραγδαία ανάπτυξη του έργου Με κάθε νέα έκδοση δίνονται πολλές περισσότερες δυνατότητες Η αρχιτεκτονική του κάνει πολύ εύκολη την επέκταση
NS-3 Ανάπτυξη από την αρχή, δεν βασίστηκε στον προκάτοχό του Ανάπτυξη από την αρχή, δεν βασίστηκε στον προκάτοχό του Γραμμένος εξολοκλήρου σε C++. Εκτός από C++ περιέχει και δεσμούς με την Python Τα προγράμματα προσομοίωσης καλούνται είτε μέσω των εκτελέσιμων, είτε μέσω εντολών Python Συνολικά αποτελείται από περίπου 350,000 γραμμές κώδικα.
NS-3 Πρώτη έκδοση 3.1, Ιούνιος 2008 Νέα έκδοση ανά 3 μήνες. Τελευταία έκδοση 3.26
Στόχοι του NS3 Μεγαλύτερη συμβολή στην έρευνα δικτύων Ευέλικτο API χαμηλού επιπέδου Τμηματοποίηση (modularity) Κλιμάκωση Υλοποίηση σύγχρονων μοντέλων δικτύων
Δυνατότητες (1)
Δυνατότητες (2) Υποστήριξη των περισσότερων αρχιτεκτονικών Υποστήριξη των περισσότερων αρχιτεκτονικών Ποικιλία πρωτοκόλλων και σχεδιασμών σε όλα τα επίπεδα του μοντέλου OSI Έμφαση σε ασύρματα δίκτυα και LTE
Συμβατότητα Άμεση συμβατότητα Linux FreeBSD OS X Για Windows, η συμβατότητα είναι εφικτή με την χρήση άλλων εργαλείων, όπως το Cygwin (https://www.cygwin.com/)
Σύγκριση με άλλα προιόντα Αντίθετα με την πλειοψηφία των υπόλοιπων προσομοιωτών, o ns-3 χειρίζεται μέσω εντολών στην κονσόλα Τα σενάρια (πειράματα) γράφονται απευθείας σε C++ και Python Δεν χρησιμοποιείται κάποια γραφική διεπαφή (GUI) για την δημιουργία σεναρίων
Διεξαγωγή πειραμάτων Δημιουργία σεναρίων (ns-3 scripts) Μεγαλύτερο μέρος του κώδικα περιγραφικό. Εμπλουτίζεται από κομμάτια κώδικα για την συλλογή των δεδομένων, και όπου χρειάζεται, μπορούν να γίνουν επιπλέον ενέργειες.
Λήψη NS-3 Λήψη από: https://www.nsnam.org/release/ns-allinone-3.21.tar.bz Ή μέσω terminal: wget http://www.nsnam.org/releases/ns-allinone- 3.20.tar.bz2 tar xjf ns-allinone-3.20.tar.bz2 Μετάβαση στο φάκελο του ns-3.xx, που βρίσκεται μέσα στον αποσυμπιεσμένο φάκελο.
Λήψη NS-3 Εναλλακτική λύση #1: Λήψη του κώδικα από το development repository Γίνεται με χρήση Mercurial hg clone http://code.nsnam.org/ns-3-dev Δεν περιέχονται βοηθητικές εφαρμογές, όπως το netanim
Λήψη NS-3 Λήψη του κώδικα για το Bake από το development repository Γίνεται με χρήση Mercurial hg clone http://code.nsnam.org/bake Ρύθμιση έκδοσης προς λήψη ./bake.py configure -e ns-3.21 Έλεγχος dependencies ./bake.py check Λήψη ./bake.py download
Εγκατάσταση NS-3 Waf: Python script για την εκτέλεση διάφορων λειτουργιών στον ns-3 Full build ./waf Ρυθμίσεις παραμέτρων εγκατάστασης ./waf configure ./waf configure --enable-examples --enable-tests Μεταγλώττιση κώδικα ./waf build Καθαρισμός Project ./waf clean
Εγκατάσταση NS-3 Make: Kλασικό εργαλείο για μεταγλώττιση C/C++ projects Full build make Ρυθμίσεις παραμέτρων εγκατάστασης make configure Μεταγλώττιση κώδικα make install Καθαρισμός Project make clean
Εγκατάσταση NS-3 Build.py: Python script as well ./build.py --enable-examples --enable-tests Bake ./bake.py build
Ρύθμιση παραμέτρων εγκατάστασης
NS-3 Compilation
NS-3 - Πρώτο Σενάριο
Εκτέλεση σεναρίου Τα σενάρια ΠΡΕΠΕΙ να τοποθετούνται στον φάκελο 'scratch' του ns-3 Για την εκτέλεση του πειράματος ./waf --run <file> <file>: Το όνομα του αρχείου, χωρίς την κατάληξη .cc
PyViz Ο προκαθορισμένος τρόπος εκτέλεσης δεν έχει γραφικά. Το πρόγραμμα εκτελείται στην κονσόλα και τα μηνύματα και τα γεγονότα εμφανίζονται στον χρήστη με κείμενο. Ωστόσο, υπάρχει και γραφική εκτέλεση με την χρήση του PyViz. Εντολή: ./waf --run <file> --vis
PyViz
NetAnim Εναλλακτικό εργαλείο για visualization. Διαθέτει περισσότερες δυνατότητες από το PyViz. Δεν εκτελεί το πείραμα σε πραγματικό χρόνο. Απαιτεί το trace file του πειράματος, το οποίο έχει εκτελεστεί εκ των προτέρων.
NetAnim
NS-3 - Support https://groups.google.com/forum/#!forum/ns-3-users Google groups https://groups.google.com/forum/#!forum/ns-3-users Mailing list http://www.nsnam.org/support/mailing-list/ Infinite tutorials και blogs
Ερωτήσεις; Contact: deltouzos@upatras.gr Τέλος Παρουσίασης Ερωτήσεις; Contact: deltouzos@upatras.gr