Δίκτυα Υπολογιστών Εργαστήριο 1
Τί είναι ο Network Simulator-2 Ο Network Simulator-2 (NS-2) είναι ένας αντικειμενοστρεφής προσομοιωτής δικτύων, γραμμένος σε C++ και OTcl (αντικειμενοστρεφής έκδοση της γλώσσας TCL). Στον NS-2 είναι ενσωματωμένα τα γνωστότερα δικτυακά πρωτόκολλα : TCP – UDP Εφαρμογής (FTP, Telnet, Web, CBR) Ουρών Δρομολόγησης (DropTail, RED)
Τεχνολογίες Υλοποίησης Οι προγραμματιστές του NS-2 προκειμένου να ισορροπήσουν ανάμεσα στην υψηλού επιπέδου υλοποίηση και στην ευκολία προγραμματισμού χώρισαν τον προσομοιωτή σε δύο τμήματα. Το ένα τμήμα (κυρίως για την διασύνδεση με τον χρήστη) είναι γραμμένο στη γλώσσα OTcl και ο υπόλοιπος κώδικας είναι γραμμένος στην γλώσσα C++ ώστε το αποτέλεσμα να είναι υψηλού επιπέδου και να είναι αποδοτικός σε σχέση με την ταχύτητα.
OTCL Αποτελεί την αντικειμενοστρεφή έκδοση της TCL Παραδείγματα εντολών : Set a 43 puts "Program Started« for {set k 0} {$k < 10} {incr k} είναι το ίδιο με την : for (k=0;k<10;k++) της C set ns [new Simulator] set c [expr $a + $b]
Αρχικές Εντολές Εκτέλεση ns.bat από την επιφάνεια εργασίας copy template.tcl example1.tcl notepad example1.tcl
Το template.tcl (1/3) #Dimiourgoume ena antikeimeno typou Simulator set ns [new Simulator] #Anoigoume ena arxeio me onoma out.nam kai katagrafoume ta #apotelesmata. set nf [open out.nam w] $ns namtrace-all $nf
Το template.tcl (2/3) #Orizoume mia diadikasia me onoma 'finish' h #opoia kleinei to arxeio out.nam kai trexei thn #efarmogh Network Animator (nam) h opoia mas #deixnei epoptika auta pou katagrafikan sto arxeio #auto. proc finish {} { global ns nf $ns flush-trace #Close the trace file close $nf #Execute nam on the trace file exec nam out.nam & exit 0 }
Το template.tcl (3/3) #Edw topothetoume ton diko mas kwdika #Meta apo 5 deuterolepta xronou prosomoiwshs #kaloume thn methodo finish. $ns at 5.0 "finish" #Trexoume thn prosomoiwsh $ns run
Δημιουργία τοπολογίας και Link Προσθέτουμε τον παρακάτω κώδικα μετά την σειρά “#Edw topothetoume ton diko mas kwdika” set n0 [$ns node] set n1 [$ns node] $ns duplex-link $n0 $n1 1Mb 5ms DropTail
Εκτελούμε τον κώδικα Σώζουμε το αρχείο στο notepad Τον εκτελούμε με την βοήθεια της εντολής ns example1.tcl
Αποτέλεσμα
Αποστολή Δεδομένων Προσθήκη του παρακάτω κώδικα : set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005 $cbr0 attach-agent $udp0 set null0 [new Agent/Null] $ns attach-agent $n1 $null0 $ns connect $udp0 $null0
Scheduler Λέμε πότε θα ξεκινήσουν και πότε θα σταματήσουν τα πακέτα. $ns at 0.5 "$cbr0 start" $ns at 4.5 "$cbr0 stop"
Αποτέλεσμα