MotivationforSimulations
Repeatabilityhelpsaiddebugging
Disadvantages:Realsystemstoocomplexto model
FeaturesofNS2
NSisanobjectorienteddiscreteeventsimulator
NSStructure
BackendisC++eventscheduler
FrontendisoTCL
setx1 sety$x
TCLtutorial
ArithmeticExpression:
ControlStructures: if{$z==6}then{putsCorrect!}
for{seti=0}{$i<5}{incri}{ puts$i*$iequals[expr$i*$i] }
Procedures:
procsum{ab}{ return[expr$a+$b] }
NSprogrammingStructure
CreatingEventScheduler
Createeventscheduler:setns[newsimulator] Scheduleanevent:$nsat<time><event>
eventisanylegitimatens/tclfunction
$nsat5.0finish procfinish{}{ globalnsnf close$nf execnamout.nam& exit0 }
StartScheduler
$nsrun
Allpackettrace
Tracing
Variabletrace
TracingandAnimation
NetworkAnimator
Creatingtopology
Twonodesconnectedbyalink Creatingnodes
setn0[$nsnode] setn1[$nsnode]
Creatinglinkbetweennodes
$ns<link_type>$n0$n1<bandwidth><delay> <queuetype>
$nsduplexlink$n0$n11Mb10msDropTail
Sendingdata
CreateUDPagent
CreateCBRtrafficsourceforfeedingintoUDPagent
Createtrafficsink
Sendingdata
Connecttwoagents
$nsconnect$udp0$null0
Startandstopofdata
$nsat0.5$cbr0start $nsat4.5$cbr0stop
CreatingTCPConnections
CreateTCPagentandattachittothenode
settcp0[newAgent/TCP] $nsattachagent$n0$tcp0
CreateaNullAgentandattachittothenode
setnull0[newAgent/TCPSink] $nsattachagent$n1$null0
Connecttheagents
$nsconnect$tcp0$null0
TrafficontopofTCP
FTP
setftp[newApplication/FTP] $ftpattachagent$tcp0
Telnet
settelnet[newApplication/Telnet] $telnetattachagent$tcp0
IntroducingErrors
CreatingErrorModule
seterr[newErrorModel] $errunitpkt_ $errsetrate_0.01 $errranvar[newRandomVariable/Uniform] $errdroptarget[newAgent/Null]
InsertingErrorModule
$nslossmodel$err$n0$n1
Examples
NSInternals
n0
Port Classifier Addr Classifier entry_ Application/FTP dst_=1.0 Agent/TCP Linkn0n1
n1
Port Classifier Addr Classifier entry_ dst_=0.0 Agent/TCPSink
0 1
1 0
Linkn1n0
Summary
ReferenceMaterial
http://www.isi.edu/nsnam/ns/