Network Simulator Tutorial: Advanced Computer Networks (CS378)
Network Simulator Tutorial: Advanced Computer Networks (CS378)
Why Simulation? *
real-system not available, is complex/costly or dangerous (eg: space simulations, flight simulations) quickly evaluate design alternatives (eg: different system configurations) evaluate complex functions for which closed form formulas or numerical techniques not available
Simulation: advantages/drawbacks*
advantages:
sometimes cheaper find bugs (in design) in advance generality: over analytic/numerical techniques detail: can simulate system details at arbitrary level caution: does model reflect reality large scale systems: lots of resources to simulate (especially accurately simulate) may be slow (computationally expensive 1 min real time could be hours of simulated time) art: determining right level of model complexity statistical uncertainty in results *Jim Kurose, University of
Massachusets, Amherst
drawbacks:
Programming a simulation*
What s in a simulation program? simulated time: internal (to simulation program) variable that keeps track of simulated time system state: variables maintained by simulation program define system state
e.g., may track number (possibly order) of packets in queue, current value of retransmission timer each event has associate event time e.g., arrival of packet to queue, departure from queue precisely at these points in time that simulation must take action (change state and may cause new future events) model for time between events (probabilistic) caused by external environment
*Jim Kurose, University of Massachusets, Amherst
Simulator Structure*
simulation program maintains and updates list of future events: event list
Need: well defined set of events for each event: simulated system action, updating of event list
update statistics
n
done?
NS2 Outline
What is it? How do I get it? How do I use it? How do I add to it? Documentation Bug-Fixing
What is NS2?
Create Network Topologies Log events that happen under any load Analyze events to understand the network behavior
Creating Topologies
5Mbps, 10ms n3 500Kbps, 50ms n4 n2 2Mbps, 20ms 300Kbps, 100ms n6 300Kbps, 100ms
n1
n5
10
Creating Topologies
Nodes
Set properties like queue length, location Protocols, routing algorithms Set types of link Simplex, duplex, wireless, satellite Set bandwidth, latency etc.
Links
11
time
12
NAM:
Network Animator A visual aid showing how packets flow along the network
13
Outline
What is it? How do I get it? How do I use it? How do I add to it? Documentation Bug-Fixing
14
15
Outline
What is it? How do I get it? How do I use it? How do I add to it? Documentation Bug-Fixing
16
17
Internally, NS2 instantiates C++ classes based on the tcl scripts Output is in form of trace files
Vacha Dave, University of Texas at Austin
18
19
20
exit 0 }
21
Demo
22
Adding traffic
1Mbps,10ms n1 udp cbr node Packet Size: 500 bytes rate: 800Kbps cbr traffic
0.0 0.5 4.5
Vacha Dave, University of Texas at Austin
n2
null
agent source
link
5.0
time
23
Putting it together..
#create a udp agent and attach it to node n0 set udp0 [new Agent/UDP] $ns attach-agent $n0 $udp0 #Create a CBR traffic source and attach it to udp0 set cbr0 [new Application/Traffic/CBR] $cbr0 set packetSize_ 500 $cbr0 set interval_ 0.005 $cbr0 attach-agent $udp0 #create a Null agent(a traffic sink) and attach it to node n1 set null0 [new Agent/Null] $ns attach-agent $n1 $null0 #Connect the traffic source to the sink $ns connect $udp0 $null0 #Schedule events for CBR traffic $ns at 0.5 "$cbr0 start" $ns at 4.5 "$cbr0 stop" #call the finish procedure after 5 secs of simulated time $ns at 5.0 "finish"
24
Demo
25
26
27
28
29
30
31
#Detach tcp and sink agents (not really necessary) $ns at 4.5 "$ns detach-agent $n0 $tcp ; $ns detach-agent $n3 $sink" #Call the finish procedure after 5 seconds of simulation time $ns at 5.0 "finish" #Print CBR packet size and interval puts "CBR packet size = [$cbr set packet_size_]" puts "CBR interval = [$cbr set interval_]" #Run the simulation $ns run
32
Demo
33
Outline
What is it? How do I get it? How do I use it? How do I add to it? Documentation Bug-Fixing
34
Need to create the C++ class Need to create the OTcl Linkage http://www.isi.edu/nsnam/ns/tutorial/index.html Tutorial about how to add a simple protocol to NS2
35
Outline
What is it? How do I get it? How do I use it? How do I add to it? Documentation Bug-Fixing
36
NS2 Manual
Information about Otcl interpreter, C++ class hierarchy, parameters for various protocols http://www.isi.edu/nsnam/ns/doc/index.html Very detailed, useful when looking for something specific, like:
What are the shadowing models available for wireless? How do I select them? How do I make my routing strategy to be Distance Vector routing?
Vacha Dave, University of Texas at Austin
37
http://www.isi.edu/nsnam/ns/tutorial/index.html Good starting point for understanding the overall structure of NS2 Examples:
What is the relation between c++ classes and Otcl classes? basic info on instantiating NS2 instance, tcl scripting
38
http://www-sop.inria.fr/maestro/personnel/Eitan.Altman/COURS-NS/n3.pdf
More detailed than Marc Greis Tutorial More info on getting it up and running rather than internals Examples:
What does each line of a tcl script do? Most common examples of trace formats that are useful
39
Tcl Tutorial
Tcl Manual
40
Outline
What is it? How do I get it? How do I use it? How do I add to it? Documentation Bug-Fixing
41
Extensive NS2 mailing lists Chances are that other people have had the same problem are very high Responsive forums
42
Sometimes a good idea to start from a script that does something similar
43
44
Bug-Fixing Questions
What is the expected behaviour of the network? Have I connected the network right? Am I logging trace information at the right level? Can I change it to narrow down on the problem? Has anyone else out there had the same problem? Is there something similar in examples that I can look at, and build upon? Does the code really do what the protocol says? Are all the default parameters correct? Is Tcl being picky here?
Vacha Dave, University of Texas at Austin
45