Top Banner
NS-2 Tutorial Biplab Sikdar Associate Professor Department of ECSE Rensselaer Polytechnic institute Troy, NY 12180 USA
44

Ns Tutorial

Oct 01, 2015

Download

Documents

Cam Duong

All about NS2
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • NS-2 TutorialBiplab SikdarAssociate ProfessorDepartment of ECSERensselaer Polytechnic instituteTroy, NY 12180 USA

  • AcknowledgementsImportant input from students and colleagues: Sampad Mishra, David DoriaSome slides based on those of Padmaparna Haldar, Ya Xu, Aga Zhang and Polly Huang

  • OutlineNS fundamentalsExample walkthroughData Collection and VisualizationSimulating WiMAX scenariosConclusions

  • NS BackgroundStarted as REAL in 1989Discrete event packet level simulatorWritten in C++ with Otcl frontendWired, wireless and emulation modesLink layer and up for most wiredAdditional lower layers for wireless

  • ATG ExtensionsIEEE 802.16 MAC layerTDD operationUGS, rtPS and BE service classesBlock ARQOFDMA PHY layerITU PDP modulesPHY layer model libraryMobility extensions

  • PlatformsMost UNIX and UNIX-like systemsLinuxFreeBSDSunOS/SolarisHP/SGI (with some tweaking)Windows 95/98/NT/ME/2000

  • NS: Basic ModelDiscrete event simulatorScheduler main controller of eventsScheduler clock - simulator virtual time[$ns_ now] returns the current simulator timeEvent queue - holds events in the order of their firing timesEvents have a firing time and a handler function

  • Scheduler OperationEvent-driven simulatorMaintain a sorted event queue Dequeue head event Packet arrivalAssign event to its handler At TCP agentHandler processes eventUpdate Window Enqueue more events in the event queueSchedule delivery of ACK

  • Exampletime_, uid_, next_, handler_Four types of scheduler:List: simple linked list, order-preserving, O(N) Heap: O(logN)Calendar: hash-based, fastest, default, O(1)Real-time: subclass of list, sync with real-time, O(N)EventQueueDequeDispatchReschedule

  • NS ArchitectureBack-end C++Protocols & FrameworkFront-end Otcl (Object-Oriented Tcl)Scenarios, configuration (one time stuff)Split ObjectObject created in otcl has a corresponding object in C++Fast to run and easy to reconfigureThis tutorial only deals with tcl

  • Getting startedDownload the latest code (all-in-one package strongly recommended) from http://www.isi.edu/nsnam/nsDownload 802.16 extensionsCompile and installBasic skills:TclC++

  • C++ and OTcl SeparationC++ for dataPer packet actionOTcl for controlConfiguration, one-time taskAdvantage: Compromise between composibility and speedDisadvantage: Learning and debugging

  • OTcl and C++: The Duality

  • Short Introduction to tclVariablesset v1 10 set v2 $v1Array (String indexed)a($i)Printingputs $filename string (default filename is stdout)Arithmetic Expressionsset value [expr $v1+($v2 * 5.2)]Control Structuresif {condition} then {.}for {set i 0} {$i < 10} {incr i 2} {}Proceduresproc proc_name {arg1 arg2} { }

  • NS Communication ModelNodesHostsRoutersBase stationsLinksQueue managementQueue monitoringAgentsProtocols

  • Elements of a NS SimulationCreate the event scheduler[Turn on tracing]Create networkSetup routing[Insert errors]Create transport connectionCreate traffic

  • A Simple Script# Create a topologyset ns [new Simulator]set n0 [$ns node]set n1 [$ns node]$ns duplex-link $n0 $n1 1Mb 10ms DropTail

    # Add Transport agentsset tcp [new Agent/TCP]$ns attach-agent $n0 $tcpset tcpsink [new Agent/TCPSink]$ns attach-agent $n1 $tcpsink$tcp connect $tcpsink

    # Add applicationset ftp [new Application/FTP]$ftp attach-agent $tcp

    # Create a schedule

    $ns at 0.5 "$ftp start"$ns at 4.5 "$ftp stop"

    #Run the simulation$ns run

  • Script (cont.)Run your program % ns Simple.tcl

  • Script (cont.)

  • Script (cont.)

  • Script (cont.)

  • Script (cont.)

  • Setting up NS Nodes

  • Setting up a Network Link

  • Routing

  • Transportset tcp [new Agent/TCP]$ns attach-agent $n0 $tcp

  • Applicationset ftp [new Application/FTP]$tcp attach-agent $ftp

  • Packet Flown0n1Addr ClassifierPort Classifierentry_0Agent/TCPAddr ClassifierPort Classifierentry_Link n0-n1Link n1-n00Agent/TCPSinkApplication/FTP

  • Tracing and VisualizationTrace packets on all links$ns trace-all [open test.out w] -- + 1 0 2 cbr 210 ------- 0 0.0 3.1 0 0- 1 0 2 cbr 210 ------- 0 0.0 3.1 0 0r 1.00234 0 2 cbr 210 ------- 0 0.0 3.1 0 0

    Trace packets on all links in nam format$ns namtrace-all [open test.nam w]$ns namtrace-all-wireless [open wtest.nam w]

  • Visualization ToolsNam-1 (Network AniMator Version)Packet-level animationWell-supported by nsXgraphConvert trace output into xgraph format

  • Simulating WiMAX ScenariosExtensions developed by RPI under the aegis of AATGOther parties: NIST, Washington University, BUPT and ICU FeaturesIEEE 802.16 MAC layer OFDMA based PHYExtensions for mobility

  • Define MAC/PHY ParametersWimaxScheduler set dlratio_ 0.6Mac/802_16 set fbandwidth_ 20e+6set diuc 7Mac/802_16 set rtg_ 20Mac/802_16 set ttg_ 20Mac/802_16 set frame_duration_ 0.005Mac/802_16 set ITU_PDP_ 1Phy/WirelessPhy/OFDMA set g_ 0.25Phy/WirelessPhy set Pt_ 0.2 Phy/WirelessPhy set RXThresh_ 1.90546e-16Phy/WirelessPhy set CSThresh_ [expr 0.9*[Phy/WirelessPhy set RXThresh_]]

  • Parameters for Wireless Nodesset opt(chan) Channel/WirelessChannel set opt(prop) Propagation/OFDMA set opt(netif) Phy/WirelessPhy/OFDMA set opt(mac) Mac/802_16 set opt(ifq) Queue/DropTail/PriQueue set opt(ant) Antenna/OmniAntennaset opt(ifqlen) 50 set opt(x) 670set opt(y) 670set prop_inst [$ns set propInstance_]$prop_inst ITU_PDP VEHIC_A

  • Creating Base Stations$ns node-config -adhocRouting $opt(adhocRouting) \ -llType $opt(ll) \ -macType Mac/802_16/BS \ -ifqType $opt(ifq) \ -ifqLen $opt(ifqlen) \ -antType $opt(ant) \ -propType $opt(prop) \ -phyType $opt(netif) \ -channel $channel \ -topoInstance $topo \ -wiredRouting ON \ -agentTrace ON \ -routerTrace ON \ -macTrace OFF \ -movementTrace OFF

  • Base Station (cont.)set bstation [$ns node 1.0.0] $bstation random-motion 0

    $bstation set X_ 300.0$bstation set Y_ 300.0$bstation set Z_ 0.0

    [$bstation set mac_(0)] set-channel 0

  • Creating Mobile Stations$ns node-config -macType Mac/802_16/SS \ -wiredRouting OFF \ -macTrace OFF

    set wl_node [$ns node 1.0.0] $wl_node random-motion 0$wl_node base-station [AddrParams addr2id [$bstation node-addr]] $wl_node set X_ 100.0 $wl_node set Y_ 200.0$wl_node set Z_ 0.0[$wl_node set mac_(0)] set-channel 0 [$wl_node($i) set mac_(0)] setflow UL 10000 BE 700 2 0 0.05 15 1 0 0 0 0 0 0 0 0 0 0}

  • Other Utilities in NSNam editorAvailable as part of nam-1Tcl debuggerFor source and documentation, seehttp://www.isi.edu/nsnam/ns/ns-debugging.htmlTopology generatorhttp://www.isi.edu/nsnam/ns/ns-topogen.htmlScenario generatorhttp://www.isi.edu/nsnam/ns/ns-scengeneration.html

  • Other NS FeaturesOther areas in wired domainLANsDiffservMulticast Full TCPApplications like web-cachingWireless domainAd hoc routingMobile IPSatellite networkingDirected diffusion (sensor networks)

  • Other NS FeaturesEmulatorConnect simulator in a real networkCan receive and send out live packets from/into the real world

  • NS Related ResourcesNS distribution downloadhttp://www.isi.edu/nsnam/ns/ns-build.htmlInstallation problems and bug-fixhttp://www.isi.edu/nsnam/ns/ns-problems.htmlNs-users mailing [email protected] http://www.isi.edu/nsnam/ns/ns-lists.htmlArchives from above URL

  • More ResourcesMarc Greis tutorialhttp://www.isi.edu/nsnam/ns/tutorialNs-users archiveNs-manualhttp://www.isi.edu/nsnam/ns/ns-documentation.htmlTcl (Tool Command Language)http://dev.scriptics.com/scriptingPractical programming in Tcl and Tk, Brent WelchOtcl (MIT Object Tcl)~otcl/doc/tutorial.html (in distribution)

  • Extra Slides

  • Otcl BasicsCreating a classClass class_nameClass class_name superclass Base_classDefining instance proceduresclass_name instproc proc_name {args} {..}Defining instance variables$self instvar variable_name (inside a class method)Creating an instanceset new_inst [new class_name] Using value of an instance variable$new_inst set v1 10 or set v2 [$new_inst set v1]

  • Packet Formatheaderdata