Ο ns-3 προσομοιωτής είναι ένας προσομοιωτής δικτύου διακριτών-γεγονότων με στόχο την έρευνα και την εκπαιδευτική χρήση. Το πρόγραμμα |ns-3|, ξεκίνησε το 2006, είναι ένα ανοιχτού κώδικα πρόγραμμα ανάπτυξης ns-3.
Ο σκοπός αυτού του οδηγού είναι να εισαγάγει νέους χρήστες ns-3 στο σύστημα με ένα δομημένο τρόπο. Μερικές φορές είναι δύσκολο για τους νέους χρήστες να μαζέψουν τις απαραίτητες πληροφορίες από λεπτομερή εγχειρίδια και να τις μετατρέψουν στην εργασία προσομοίωσης. Σε αυτό το εγχειρίδιο, θα χτίσουμε αρκετά παραδείγματα προσομοιώσεων, εισαγωγής και εξήγησης των βασικών εννοιών και χαρακτηριστικών.
Καθώς το εγχειρίδιο συνεχίζει, θα εισάγουμε την πλήρη έκδοση του ns-3 και παρέχονται υποδείξεις για τον πηγαίο κώδικα για όσους ενδιαφέρονται να ψάξουν βαθύτερα μέσα στη λειτουργία του συστήματος.
Μερικά βασικά σημεία αξίζουν να σημειωθούν κατά την έναρξη:
Ο ns-3 έχει αναπτυχθεί για να παρέχει μια ανοιχτή, επεκτάσιμη πλατφόρμα προσομοίωσης δικτύου, για την δικτύωση της έρευνας και της εκπαίδευσης. Συνοπτικά, ο ns-3 παρέχει μοντέλα για το πώς τα πακέτα δεδομένων των δικτύων δουλεύουν και εκτελούνται, και παρέχει μια μηχανή προσομοίωσης για τους χρήστες να διεξάγουν πειράματα προσομοίωσης. Μερικοί από τους λόγους για να χρησιμοποιήσετε τον ns-3 περιλαμβάνουν την πραγματοποίηση μελετών που είναι πιο δύσκολο ή αδύνατο να διενεργηθεί με πραγματικά συστήματα, για να μελετήσουμε τη συμπεριφορά του συστήματος σε ένα ιδιαίτερα ελεγχόμενο, αναπαραγόμενο περιβάλλον, και να μάθουν για το πώς τα δίκτυα δουλεύουν. Οι χρήστες θα παρατηρήσουν ότι το διαθέσιμο πρότυπο που παρατίθεται στο ns-3 εστιάζει στην μοντελοποίηση πώς τα πρωτόκολλα του Διαδικτύου και των δικτύων δουλεύουν, αλλά ο ns-3 δεν περιορίζεται σε συστήματα Διαδικτύου - Οι διάφοροι χρήστες που χρησιμοποιούν ns-3 για τη μοντελοποίηση των συστημάτων που δεν βασίζονται στο Διαδίκτυο.
Υπάρχουν πολλά εργαλεία προσομοίωσης για μελέτες προσομοίωσης του δικτύου. Παρακάτω είναι μερικά χαρακτηριστικά γνωρίσματα του ns-3 σε αντίθεση με άλλα εργαλεία.
Για όσους είναι εξοικειωμένοι με 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-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 σχετικά με το έγγραφο που εργάζεστε, κλπ. θα ήταν εκτιμήσιμο.
Ο οδηγός υποθέτει ότι οι νέοι χρήστες αρχικά θα ακολουθήσουν μία απο τις παρακάτω ιστοσελίδες:
Ως αποτέλεσμα, έχουμε προσπαθήσει να οργανώσουμε τον οδηγό σύμφωνα με τα παραπάνω με ευρείες ακολουθίες γεγονότων.