set ns [new Simulator] $ns now // Returns the current simulation time |
set ns [new Simulator]
$ns at 1.0 {puts "Point 1: Now = [$ns now]"}
$ns at 8.0 {puts "Point 2: Now = [$ns now]"}
$ns at 4.0 {puts "Point 3: Now = [$ns now]"}
$ns run // Run simulation !
|
Point 1: Now = 1 Point 3: Now = 4 Point 2: Now = 8 |
Notice that Point 3 happens before Point 2
set ns [new Simulator]
$ns at 1.0 {puts "Point 1: ..."} // Schedule event at time 1.0
$ns at 8.0 {puts "Point 2: ..."} // Schedule event at time 8.0
$ns at 4.0 {puts "Point 3: ..."} // Schedule event at time 4.0
$ns run // Run simulation !
|
So when the simulation is run, the events are "fired" in chronological order
set ns [new Simulator]
... (set up simulation network)
$ns run // run simulation
|
set ns [new Simulator]
#Define the 'finish' procedure
proc finish {} {
exit 0
}
... (set up simulation network)
#Set simulation end time
$ns at 100.0 "finish"
$ns run // run simulation
|
proc person1 {x} {
global ns
puts "Person 1:"
puts " Hey, $x, time is [$ns now], it's your turn to say something"
$ns at [expr [$ns now] + 0.4] "$x person1"
}
proc person2 {x} {
global ns
puts "Person 2:"
puts " Hey, $x, time is [$ns now], it's your turn to say something"
$ns at [expr [$ns now] + 0.6] "$x person2"
}
set ns [new Simulator]
$ns at 0 "person1 person2"
$ns at 4.5 "exit 0"
$ns run
|
Person 1: Hey, person2, time is 0, it's your turn to say something Person 2: Hey, person1, time is 0.4, it's your turn to say something Person 1: Hey, person2, time is 1, it's your turn to say something Person 2: Hey, person1, time is 1.4, it's your turn to say something Person 1: Hey, person2, time is 2, it's your turn to say something Person 2: Hey, person1, time is 2.4, it's your turn to say something Person 1: Hey, person2, time is 3, it's your turn to say something Person 2: Hey, person1, time is 3.4, it's your turn to say something Person 1: Hey, person2, time is 4, it's your turn to say something Person 2: Hey, person1, time is 4.4, it's your turn to say something |
|
|
#Make a NS simulator
set ns [new Simulator]
# Define a 'finish' procedure
proc finish {} {
exit 0
}
# Create the nodes:
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
set n4 [$ns node]
set n5 [$ns node]
# Create the links:
$ns duplex-link $n0 $n2 2Mb 10ms DropTail
$ns duplex-link $n1 $n2 2Mb 10ms DropTail
$ns duplex-link $n2 $n3 0.3Mb 200ms DropTail
$ns duplex-link $n3 $n4 0.5Mb 40ms DropTail
$ns duplex-link $n3 $n5 0.5Mb 30ms DropTail
# Add a TCP sending module to node n0
set tcp1 [new Agent/TCP/Reno]
$ns attach-agent $n0 $tcp1
# Add a TCP receiving module to node n4
set sink1 [new Agent/TCPSink]
$ns attach-agent $n4 $sink1
# Direct traffic from "tcp1" to "sink1"
$ns connect $tcp1 $sink1
# Setup a FTP traffic generator on "tcp1"
set ftp1 [new Application/FTP]
$ftp1 attach-agent $tcp1
$ftp1 set type_ FTP (no necessary)
# Schedule start/stop times
$ns at 0.1 "$ftp1 start"
$ns at 100.0 "$ftp1 stop"
# Set simulation end time
$ns at 125.0 "finish" (Will invoke "exit 0")
# Run simulation !!!!
$ns run
|