3 – Simple Network Δελτούζος Κωνσταντίνος Δρ. Ηλεκτρολόγος Μηχανικός και Τεχνολογίας Υπολογιστών deltouzos@upatras.gr
Προσομοίωση απλού δικτύου Σενάριο tcl 4 κόμβοι (n0, n1, n2, n3) συνδεδεμένοι σε τοπολογία αστέρα 2 κόμβοι (n0, n1) γενούν πακέτα με παραλήπτη τον n3 Ο n2 έχει μια ουρά που αποθηκεύει τα πακέτα που παραλαμβάνει, η οποία όταν γεμίσει δεν αποθηκεύονται νέα πακέτα (DropTail) Δημιουργία trace file και αναπαράσταση με το εργαλείο NAM
Προσομοίωση απλού δικτύου
Εκτέλεση σεναρίου ns ns-simple.tcl
Αρχικοποίηση προσομοίωσης set ns [new Simulator] Δημιουργεί ένα στιγμιότυπο αντικειμένου NS simulator και το αναθέτει στην μεταβλητή ns Το αντικείμενο "Simulator" έχει αρκετές μεθόδους που κάνουν τα παρακάτω: Δημιουργία αντικειμένων όπως κόμβοι δικτύων και ζεύξεις Διασύνδεση δημιουργούμενων αντικειμένων (πχ. attach- agent) Καθορισμός παραμέτρων δικτύου Δημιουργία συνδέσεων μεταξύ των agents (πχ. διασύνδεση μεταξύ ενός "tcp" και ενός "sink" agent)
Χρωματισμός ροών πακέτων $ns color [fid] [color] $ns color 1 Blue $ns color 2 Red Καθορισμός χρώματος των πακέτων για μια ροή με id (fid) Δεν επηρεάζει την ίδια την εξομοίωση αλλά μόνο την αναπαράσταση στο εργαλείο NAM
Δημιουργία trace file set tf [open out.tr w] $ns trace-all $tf Δημιουργία ενός αρχείου "out.tr" στο οποίο θα αποθηκευτεί το trace file της εξομοίωσης Το tf είναι η μεταβλητή που χρησιμοποιούμε για να αναφερθούμε στο αρχείο αυτό Ομοίως και για το trace file της οπτικοποίησης με το εργαλείο NAM
Ορισμός διαδικασίας Post-simulation proc finish {…} Ορισμός διεργασίας που θα εκτελεστεί στο τέλος της εξομοίωσης με την εντολή $ns at 5.0 "finish« Ουσιαστικά περιγράφουμε τις διεργασίες που πρέπει να εκτελεστούν μετά την εξομοίωση (κλείσιμο αρχείων, εκτέλεση εργαλείου NAM)
Δημιουργία κόμβων set n0 [$ns node] set n1 [$ns node] Κάθε κόμβος είναι ένα σύνθετο αντικείμενο που αποτελείται από μια διεύθυνση και ένα port
Δημιουργία ζεύξεων $ns duplex-link [node1] [node2] [bandwidth] [delay] [queue-type] $ns duplex-link $n0 $n2 2Mb 10ms DropTail $ns duplex-link $n1 $n2 2Mb 10ms DropTail $ns duplex-link $n2 $n3 1.7Mb 20ms DropTail Αμφίδρομη σύνδεση (duplex) μεταξύ δύο κόμβων με συγκεκριμένα στοιχεία (bandwidth, delay, queue)
Τύποι ουρών DropTail: Ουσιαστικά μια FIFO ουρά RED (Random Early-Detection): Παρακολουθεί το μέγεθος της ουράς και κάνει drop τα πακέτα με βάση την πιθανότητα να προκύψει overflow της ουράς FQ (Fair Queuing): Κατανέμει τους κοινόχρηστους πόρους δίκαια SFQ (Stohastic Fair Queuing): Fair Queuing με μια στοχαστικότητα DRR (Deficit Round Robin): Round-robin με βάρος σε κάθε κόμβο CBQ (Class-Based Queueing): Διαμοιρασμός πόρων ιεραρχικά βάσει διευθύνσεων IP, πρωτοκόλλων και τύπων εφαρμογών
Μέγεθος ουράς $ns queue-limit [node1] [node2] [number] $ns queue-limit $n2 $n3 10 Ορίζουμε ότι η ουρά εξυπηρέτησης πακέτων από τον n2 στον n3 έχει μέγεθος 10
Ορισμός τοπολογίας για το NAM $ns duplex-link-op [node1] [node2] [options...] $ns duplex-link-op $n0 $n2 orient right-down $ns duplex-link-op $n1 $n2 orient right-up $ns duplex-link-op $n2 $n3 orient right
Παρακολούθηση ουράς για το NAM $ns duplex-link-op [node1] [node2] [options...] $ns duplex-link-op $n2 $n3 queuePos 0.5
Ορισμός agent για πρωτόκολλα δικτύου set tcp [new Agent/TCP] άλλοι agents: Agent/TCP, Agent/TCPSink, Agent/UDP, Agent/Null $ns attach-agent [node] [agent] Σύνδεση του agent σε κάποιον υπάρχοντα κόμβο
Ορισμός agent για εφαρμογές/κίνηση set ftp [new Application/FTP] set cbr [new Application/Traffic/CBR] Διασύνδεση μεταξύ 2 agents $ns connect [agent1] [agent2]
Εκτέλεση εντολών κατά τη διάρκεια του σεναρίου $ns at [time] ["string"] $ns at 0.1 "$cbr start" $ns at 1.0 "$ftp start“ $ns at 4.0 "$ftp stop“ $ns at 4.5 "$cbr stop“ $ns at 4.5 "$ns detach-agent $n0 $tcp ; $ns detach- agent $n3 $sink“ $ns at 5.0 "finish"
Εκτύπωση αποτελεσμάτων στην κονσόλα puts "CBR packet size = [$cbr set packet_size_]“ puts "CBR interval = [$cbr set interval_]"
Εκτέλεση σεναρίου $ns run
Contact: deltouzos@upatras.gr Τέλος Παρουσίασης Ερωτήσεις; Contact: deltouzos@upatras.gr