
IV. The first Tcl script
[Previous section] [Next section] [Back to the index]
In this section, you are going to develop a Tcl script for ns which simulates a simple topology. You are
going to learn how to set up nodes and links, how to send data from one node to another, how to monitor
a queue and how to start nam from your simulation script to visualize your simulation.
IV.1. How to start
Now we are going to write a 'template' that you can use for all of the first Tcl scripts. You can write your
Tcl scripts in any text editor like joe or emacs. I suggest that you call this first example 'example1.tcl'.
First of all, you need to create a simulator object. This is done with the command
Now we open a file for writing that is going to be used for the nam trace data.
The first line opens the file 'out.nam' for writing and gives it the file handle 'nf'. In the second line we
tell the simulator object that we created above to write all simulation data that is going to be relevant for
nam into this file.
The next step is to add a 'finish' procedure that closes the trace file and starts nam.
You don't really have to understand all of the above code yet. It will get clearer to you once you see
what the code does.
The next line tells the simulator object to execute the 'finish' procedure after 5.0 seconds of simulation
time.
You probably understand what this line does just by looking at it. ns provides you with a very simple
way to schedule events with the 'at' command.
The last line finally starts the simulation.
You can actually save the file now and try to run it with 'ns example1.tcl'. You are going to get an error
message like 'nam: empty trace file out.nam' though, because until now we haven't defined any objects
(nodes, links, etc.) or events. We are going to define the objects in
set ns [new Simulator]
set nf [open out.nam w]
$ns namtrace-all $nf
proc finish {} {
global ns nf
$ns flush-trace
close $nf
exec nam out.nam &
exit 0
}
$ns at 5.0 "finish"
$ns run
Marc Greis' Tutorial for the UCB/LBNL/VINT Network Simulator "ns"
http://www.isi.edu/nsnam/ns/tutorial/nsscript1.html