A Discrete-Event Network Simulator
Tutorial

Εισαγωγή

Ο ns-3 προσομοιωτής είναι ένας προσομοιωτής δικτύου διακριτών-γεγονότων με στόχο την έρευνα και την εκπαιδευτική χρήση. Το πρόγραμμα |ns-3|, ξεκίνησε το 2006, είναι ένα ανοιχτού κώδικα πρόγραμμα ανάπτυξης ns-3.

Ο σκοπός αυτού του οδηγού είναι να εισαγάγει νέους χρήστες ns-3 στο σύστημα με ένα δομημένο τρόπο. Μερικές φορές είναι δύσκολο για τους νέους χρήστες να μαζέψουν τις απαραίτητες πληροφορίες από λεπτομερή εγχειρίδια και να τις μετατρέψουν στην εργασία προσομοίωσης. Σε αυτό το εγχειρίδιο, θα χτίσουμε αρκετά παραδείγματα προσομοιώσεων, εισαγωγής και εξήγησης των βασικών εννοιών και χαρακτηριστικών.

Καθώς το εγχειρίδιο συνεχίζει, θα εισάγουμε την πλήρη έκδοση του ns-3 και παρέχονται υποδείξεις για τον πηγαίο κώδικα για όσους ενδιαφέρονται να ψάξουν βαθύτερα μέσα στη λειτουργία του συστήματος.

Μερικά βασικά σημεία αξίζουν να σημειωθούν κατά την έναρξη:

  • Ο ns-3 είναι ανοιχτός-κώδικας, και το πρόγραμμα προσπαθεί να διατηρήσει ένα ανοιχτό περιβάλλον για τους ερευνητές ώστε να συμβάλλουν και να μοιράζονται το λογισμικό τους.
  • Ο ns-3 δεν είναι επέκταση του ns-2; Ο ns-3 είναι ένας νέος προσομοιωτής. Οι δύο εξομοιωτές είναι γραμμένοι σε C++ αλλά ο ns-3 είναι ένας νέος προσομοιωτής που δεν υποστηρίζει τις APIs του ns-2. Μερικά μοντέλα έχουν ήδη μεταφερθεί από τον ns-2 στον ns-3. Το πρόγραμμα θα συνεχίσει να διατηρεί τον ns-2 καθώς ο ns-3 θα χτίζεται, και θα μελετήσει μηχανισμούς μετάβασης και ολοκλήρωσης.

Σχετικά με τον ns-3

Ο ns-3 έχει αναπτυχθεί για να παρέχει μια ανοιχτή, επεκτάσιμη πλατφόρμα προσομοίωσης δικτύου, για την δικτύωση της έρευνας και της εκπαίδευσης. Συνοπτικά, ο ns-3 παρέχει μοντέλα για το πώς τα πακέτα δεδομένων των δικτύων δουλεύουν και εκτελούνται, και παρέχει μια μηχανή προσομοίωσης για τους χρήστες να διεξάγουν πειράματα προσομοίωσης. Μερικοί από τους λόγους για να χρησιμοποιήσετε τον ns-3 περιλαμβάνουν την πραγματοποίηση μελετών που είναι πιο δύσκολο ή αδύνατο να διενεργηθεί με πραγματικά συστήματα, για να μελετήσουμε τη συμπεριφορά του συστήματος σε ένα ιδιαίτερα ελεγχόμενο, αναπαραγόμενο περιβάλλον, και να μάθουν για το πώς τα δίκτυα δουλεύουν. Οι χρήστες θα παρατηρήσουν ότι το διαθέσιμο πρότυπο που παρατίθεται στο ns-3 εστιάζει στην μοντελοποίηση πώς τα πρωτόκολλα του Διαδικτύου και των δικτύων δουλεύουν, αλλά ο ns-3 δεν περιορίζεται σε συστήματα Διαδικτύου - Οι διάφοροι χρήστες που χρησιμοποιούν ns-3 για τη μοντελοποίηση των συστημάτων που δεν βασίζονται στο Διαδίκτυο.

Υπάρχουν πολλά εργαλεία προσομοίωσης για μελέτες προσομοίωσης του δικτύου. Παρακάτω είναι μερικά χαρακτηριστικά γνωρίσματα του ns-3 σε αντίθεση με άλλα εργαλεία.

  • Ο ns-3 έχει σχεδιαστεί ως ένα σύνολο βιβλιοθηκών που μπορούν να συνδυαστούν μεταξύ τους και επίσης με άλλες εξωτερικές βιβλιοθήκες λογισμικού. Ενώ ορισμένες πλατφόρμες προσομοίωσης παρέχουν στους χρήστες με ένα ενιαίο, ολοκληρωμένο γραφικό περιβάλλον χρήστη στις οποίες είναι όλες οι εργασίες που πραγματοποιούνται, ο ns-3 είναι περισσότερο σπονδυλωτός στο θέμα αυτό. Αρκετά εξωτερικά animators και ανάλυση δεδομένων και τα εργαλεία οπτικοποίησης μπορούν να χρησιμοποιηθούν με τον ns-3. Ωστόσο, οι χρήστες θα πρέπει να περιμένουμε για να εργαστούν στη γραμμή εντολών και με C++ και/ή Python εργαλεία ανάπτυξης λογισμικού.
  • Ο ns-3 χρησιμοποιείται κυρίως σε συστήματα Linux, αν και υπάρχει υποστήριξη για το FreeBSD, Cygwin (για Windows), και η υποστήριξη του Windows Visual Studio είναι στη διαδικασία της προετοιμασίας.
  • Ο | ns-3 | δεν είναι επίσημα προϊόν λογισμικού κάποιας εταιρείας. Υποστήριξη για τον | ns-3 | γίνεται με βάση λίστα με την καλύτερη δυνατή προσπάθεια για τους ns-3 χρήστες.

Για τους ns-2 χρήστες

Για όσους είναι εξοικειωμένοι με ns-2 (ένα δημοφιλές εργαλείο που προηγήθηκε του ns-3), η πιο ορατή αλλαγή κατά τη μετακίνηση προς ns-3 είναι η επιλογή γλώσσας του scripting. Προγράμματα σε ns-2 είναι γραμμένα σε OTcl και τα αποτελέσματα των προσομοιώσεων μπορούν να απεικονιστούν χρησιμοποιώντας το Network Animator nam. Δεν είναι δυνατόν να εκτελέσετε μια προσομοίωση σε ns-2 μόνο από την C++ (δηλαδή, ως ένα πρόγραμμα main () χωρίς OTcl). Επιπλέον, ορισμένα συστατικά του ns-2 είναι γραμμένα σε C++ και τα άλλα στην OTcl. Στην ns-3, ο προσομοιωτής είναι γραμμένος εξολοκλήρου σε C++, με επιλογή σε Python bindings. Σενάρια προσομοίωσης μπορούν να γραφούν σε C++ ή Python. Νέα animators και visualizers είναι διαθέσιμα και σε εξέλιξη. Από την στιγμή που ο ns-3 παράγει pcap packet trace files, άλλα εργαλεία μπορούν επίσης να χρησιμοποιηθούν για να αναλύσουν τα ίχνη. Σε αυτό τον οδηγό, αρχικά θα επικεντρωθούμε στην σε scripting απευθείας σε C++ και την ερμηνεία των αποτελεσμάτων μέσω αρχείων παρακολούθησης.

Από την άλλη έχουν και ομοιότητες καθώς (και τα δύο, για παράδειγμα βασίζονται σε C++, και ορισμένος κώδικας από τον ns-2 έχει ήδη μεταφερθεί στον ns-3). Θα προσπαθήσουμε να τονίσουμε τις διαφορές μεταξύ του ns-2 και του ns-3, καθώς προχωράμε αυτό τον οδηγό.

Μία ερώτηση που συχνά ακούμε είναι «Πρέπει ακόμα να χρησιμοποιώ τον ns-2 ή να μετακινηθώ στον ns-3;» Κατά την γνώμη του συγγραφέα, αν ο χρήστης κατά κάποιο τρόπο δεν ανήκει στον ns-2 (είτε με βάση την υπάρχουσα προσωπική άνεση και γνώση του ns-2, είτε βασίζεται σε ένα συγκεκριμένο μοντέλο προσομοίωσης που είναι διαθέσιμο μόνο στον ns-2), ένας χρήστης θα είναι πιο παραγωγικός στον ns-3 για τους ακόλουθους λόγους:

  • Ο ns-3 διατηρείται ενεργός με μία ενεργό, ενημερωτική λίστα χρηστών, ενώ ο ns-2 διατηρείται λιγότερο καθώς δεν έχει δεί σημαντική εξέλιξη στον κεντρικό κώδικα του για πάνω από μια δεκαετία.
  • Ο ns-3 παρέχει λειτουργίες που δεν είναι διαθέσιμες στον ns-2, όπως ένα περιβάλλον εκτέλεσης κώδικα εφαρμογής (επιτρέποντας στους χρήστες να τρέχουν τον πραγματικό κώδικα της εφαρμογής στον προσομοιωτή).
  • Ο ns-3 παρέχει ένα χαμηλότερο επίπεδο βάσης της αφαίρεσης σε σύγκριση με ns-2, επιτρέποντάς τον να προσαρμοστεί καλύτερα με το πώς πραγματικά τα συστήματα τοποθετούνται μαζί. Κάποιοι περιορισμοί που βρέθηκαν στον ns-2 (όπως η σωστή υποστήριξη πολλαπλών τύπων διεπαφών στους κόμβους) έχουν διορθωθεί στον ns-3.

Ο ns-2 έχει ένα πιο διαφοροποιημένο σύνολο που συνέβαλαν στις ενότητες από ό,τι κάνει ο ns-3, λόγω της μακράς ιστορίας του. Ωστόσο, ο ns-3 έχει πιο λεπτομερή μοντέλα σε διάφορες δημοφιλείς περιοχές της έρευνας (συμπεριλαμβανομένων εξελιγμένα μοντέλα LTE και WiFi), και η υποστήριξη της εφαρμογής του κώδικα αναγνωρίζει ένα πολύ ευρύ φάσμα μοντέλων υψηλής πιστότητας. Οι χρήστες μπορούν να εκπλαγούν όταν μάθουν ότι ολόκληρη η στοίβα δικτύου του Linux μπορεί να περιοριστεί σε ένα ns-3 κόμβο, χρησιμοποιώντας την άμεση εκτέλεση κώδικα (Direct Code Execution - DCE) πλαίσιο. Τα μοντέλα του ns-2 μπορούν μερικές φορές να μεταφερθούν και στον ns-3, συγκεκριμένα όταν έχουν υλοποιηθεί σε C++.

Σε περίπτωση αμφιβολίας, μια καλή συμβουλή θα ήταν να δούμε τους δύο προσομοιωτές (καθώς και άλλους προσομοιωτές), και κυρίως τα διαθέσιμα μοντέλα για την έρευνά σας, αλλά να έχετε κατά νου ότι η εμπειρία σας μπορεί να είναι καλύτερη χρησιμοποιώντας το εργαλείο που είανι ενεργά αναπτυσσόμενο και διατηρείται (ns-3).

Συνεισφορά

Ο ns-3 είναι ένας ερευνητικός και εκπαιδευτικός προσομοιωτής, από και για την ερευνητική κοινότητα. Θα βασίζεται στις τρέχουσες εισφορές της κοινότητας για την ανάπτυξη νέων μοντέλων, διόρθωση ή διατήρηση των υπαρχόντων, και το μοίρασμα των αποτελεσμάτων. Υπάρχουν λίγες πολιτικές που ελπίζουμε ότι θα ενθαρρύνει τους ανθρώπους να συμβάλλουν στον ns-3 όπως έχουν συμβάλλει για τον ns-2:

Αντιλαμβανόμαστε ότι, αν διαβάζετε αυτό το έγγραφο, συμβάλλοντας πίσω στο έργο είναι πιθανόν να μην είναι η κύρια ανησυχία σας σε αυτό το σημείο, αλλά θέλουμε να γνωρίζετε ότι η συνεισφορά είναι στο πνεύμα του έργου και ότι ακόμη και η πράξη της εγκατάλειψής μας μια σημείωση για την πρώιμη εμπειρία σας με ns-3 (π.χ. «αυτό το τμήμα του οδηγού δεν ήταν σαφές ...”), reports σχετικά με το έγγραφο που εργάζεστε, κλπ. θα ήταν εκτιμήσιμο.

Οδηγός Οργάνωσης

Ο οδηγός υποθέτει ότι οι νέοι χρήστες αρχικά θα ακολουθήσουν μία απο τις παρακάτω ιστοσελίδες:

  • Προσπαθήστε να κατεβάσετε και να χτίσετε ένα αντίγραφο,
  • Προσπαθήστε να τρέξετε μερικά δείγματα-προγράμματα,
  • Κοιτάξτε στην έξοδο προσομοίωσης, και να προσπαθήστε να το ρυθμίσετε.

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

Table Of Contents

Previous topic

Οδηγός του ns-3

Next topic

Πόροι

This Page