Network Simulation
• One tool to simulation network protocols for the Internet is the network simulator (NS)
• The simulation environment needs to be set-up carefully to produce meaningful results
• The simulation set-up is called ‘simulation scenario’
Simulation Scenarios
• In general, a simulation scenario consists of three different main components (or dimensions)– Routed Topology– Connections, Traffic and Agents/end-host
protocols– External events and Failures
Routed Topology• Defines the number of nodes and their
connectivity• Defines the links connecting the nodes, their
bandwidth, delay, queuing discipline and other characteristics
• Defines the routing protocols running in the nodes in terms of unicast and multicast routing
• Can use topology generators (e.g., GT-ITM)
Connections, Traffic and Agents• Agents are end-host protocols, such as TCP, ftp,
Telnet, UDP.. etc.
• Traffic source can be: (uses a traffic model)– constant bit rate (CBR) at rate R
– with distribution (Poisson or Pareto)
– trace driven
• Connection definition includes spatial distribution of connections (TCP sender/receiver, or group members)
External events and Failures• External events include the temporal distribution
of connections:– start and end of TCP connections
– join/leave patterns for multicast group members
• Failures include link failures, packet loss patterns and congestion patterns and may follow a failure model or distribution
• Events may also include movement patterns of mobile hosts
The network simulator (NS)• It is a packet-level discrete-event simulator
• The simulation engine is written in C++ and mainly handles the event-queue and per packet processing (such as TCP and forwarding caches)
• Most protocols (such as unicast/multicsat) routing protocols are implemented in Otcl (Object Tcl)
• Check the vint project catarina.usc.edu/vint, and follow the on-line step-by-step tutorial
Getting Started• Download the ns from:
– http://www.isi.edu/nsnam/ns– Tcl/tk, otcl, tclcl, ns
• Install ns in your system– Binary release is provided for windows 9x/NT– NS-allinone package is strongly recommended
• Download nam if visualization is needed– http://www.isi.edu/nsnam/nam– Included in ns-allinone package
• Get help from [email protected]– check the mailing lists on the ns web page
What is ns
• otcl: Object-oriented support• tclcl: C++ and otcl linkage• Discrete event scheduler• Data network (the Internet) components
tcl8.0
otcl
tclcl
ns-2EventScheduler
Netw
orkC
omponent
Internals
• Discrete Event Scheduler
• Network Topology
• Routing
• Transport
• Application
• Packet Flow
Discrete Event Scheduler
time_, uid_, next_, handler_
head_ ->
handler_ -> handle()
time_, uid_, next_, handler_insert
head_ ->
Network Topology - Node
n0 n1
Addr Classifier
Port Classifier
classifier_
dmux_
entry_
Node entry
Unicast Node
Multicast Classifier
classifier_
dmux_
entry_
Node entry
Multicast Node
multiclassifier_
Network Topology - Link
n0 n1
enqT_ queue_ deqT_
drophead_ drpT_
link_ ttl_
n1 entry_head_
Routing
n0 n1
Addr Classifier
Port Classifier
classifier_
dmux_
entry_
Node entry 0
1enqT_ queue_ deqT_
drophead_ drpT_
link_ ttl_
n1 entry_head_
Routing (cont.)
n0 n1
Addr Classifier
Port Classifier
classifier_
dmux_
entry_
0
1
Addr Classifier
Port Classifier
classifier_
dmux_
entry_
1
0Link n0-n1
Link n1-n0
0
1
Transport
n0 n1
Addr Classifier
Port Classifier
classifier_
dmux_
entry_
0 Agent/TCP
agents_
Addr Classifier
Port Classifier
classifier_
dmux_
entry_
1
0Link n0-n1
Link n1-n0
0 Agent/TCPSink
agents_
dst_=1.0 dst_=0.0
Application
0
1
n0 n1
Addr Classifier
Port Classifier
classifier_
dmux_
entry_
0 Agent/TCP
agents_
Addr Classifier
Port Classifier
classifier_
dmux_
entry_
1
0Link n0-n1
Link n1-n0
0 Agent/TCPSink
agents_
dst_=1.0 dst_=0.0Application/FTP
Packet Flow
0
1
n0 n1
Addr Classifier
Port Classifier
entry_
0 Agent/TCP Addr Classifier
Port Classifier
entry_
1
0Link n0-n1
Link n1-n0
0 Agent/TCPSink
dst_=1.0 dst_=0.0Application/FTP
• NS\VINT web pages\tutorial:– http://catarina.usc.edu/vint– http://www.isi.edu/nsnam/vint– http://www.isi.edu/nsnam/ns/tutorial/
index.html