ns lecture v2

Upload: aunik-rahman

Post on 10-Apr-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/8/2019 Ns Lecture v2

    1/33

    1

    Introduction to NS-2

    Tutorial overview of NSCreate basic NS simulation

    Walk-through a simple exampleModel specification

    Execution and trace analysis

    http://www-net.cs.umass.edu/~honggang/ns-cs653/

  • 8/8/2019 Ns Lecture v2

    2/33

    2

    NS-2, the network simulator

    Academic project over 10 years old freely distributed, open source

    Currently maintained by ISI (Information

    Sciences Institute)DARPA + NSF projects

    ~ 200K LoC, 403 page manualLarge user basemostly academics

    de facto standard in networking researchMain website: http://www.isi.edu/nsnam/ns

  • 8/8/2019 Ns Lecture v2

    3/33

    3

    NS Functionality

    Discrete event simulator Modeling Network Components

    Traffic models and applications Web, FTP, telnet, audio, sensor nets

    Transport protocols TCP (Reno, SACK, etc), UDP, multicast Routing and queueing

    static routing, DV routing, multicast, ad-hoc routing queueing disciplines: drop-tail, RED, FQ

    Link layer wired, wireless, satellite

    Providing Infrastructure tracing, visualization, error models, etc modify or create your own modules

  • 8/8/2019 Ns Lecture v2

    4/33

    4

    NS components

    NS, the simulator itself (this is all well have time for) NAM, the Network AniMator

    visualize NS (or other) output GUI input simple Ns scenarios

    pre-processing: traffic and topology generators

    post-processing: simple trace analysis, often in Awk, Perl, or Tcl

    Tutorial: http://www.isi.edu/nsnam/ns/tutorial NS by example: http://nile.wpi.edu/NS/

  • 8/8/2019 Ns Lecture v2

    5/33

    5

    NS Software Structure: C++ and OTCL

    Uses two languages

    C++ for the core of NS simulator per packet processing fast to run, detailed, complete control

    OTCL for control [our focus]

    simulation setup, configuration fast to write and change

  • 8/8/2019 Ns Lecture v2

    6/33

    6

    Steps when using NS

    Create OTCL script for your network model nodes, links, traffic sources, sinks, etc.

    Parameterize simulation objects

    Links: queue sizes, link speeds, Transport Protocols: TCP flavor and parameters(more than 30),

    Collect statisticsdump everything to trace, post process it gather stats during simulation within OTCL scriptmodify Ns source code

    Run NS multiple times confidence intervals

  • 8/8/2019 Ns Lecture v2

    7/33

    7

    Create a Basic NS Simulation

    1. Create event scheduler2. Create nodes and links

    3. Create connections4. Create traffic sources/sinks5. Enable tracing

  • 8/8/2019 Ns Lecture v2

    8/33

  • 8/8/2019 Ns Lecture v2

    9/33

    9

    Step 1: Creating Event Scheduler

    Create scheduler set ns [new Simulator]

    Schedule event$ns at

    : any legitimate Ns/TCL commands

    Start scheduler

    $ns run

  • 8/8/2019 Ns Lecture v2

    10/33

    10

    Create a Basic NS Simulation

    1. Create the event scheduler2. Create nodes and links

    3. Create connections4. Create traffic sources/sinks5. Enable tracing

  • 8/8/2019 Ns Lecture v2

    11/33

    11

    Step 2: Creating Network (Nodes + Links)

    Nodes set n0 [$ns node]

    set n1 [$ns node]

    Links: connect together two nodes$ns duplex-link $n0 $n1

    determines propagation delay determines queueing policy

    DropTail, RED, CBQ, FQ, SFQ, DRR

  • 8/8/2019 Ns Lecture v2

    12/33

    12

    Create a Basic NS Simulation

    1. Create the event scheduler2. Create nodes and links

    3. Create connections4. Create traffic sources/sinks5. Enable tracing

  • 8/8/2019 Ns Lecture v2

    13/33

    13

    Step 3: Create Connections

    Transports:TCP, UDP, multicast, etc.

    transport protocol instances attach to nodes

  • 8/8/2019 Ns Lecture v2

    14/33

    14

    Creating Transport Channels: UDP

    source and sink set u_src [new Agent/UDP]

    set u_dst [new Agent/NULL]

    attach them to nodes, then connect to eachother$ns attach-agent $n0 $u_src

    $ns attach-agent $n1 $u_dst

    $ns connect $u_src $u_dst

  • 8/8/2019 Ns Lecture v2

    15/33

    15

    Creating Transport Channels: TCP

    source and sink set t_src [new Agent/TCP/Newreno]

    set t_dst [new Agent/TCPSink]

    Newreno flavor of TCP

    attach to nodes and each other$ns attach-agent $n0 $t_src

    $ns attach-agent $n1 $t_dst

    $ns connect $t_src $t_dst

  • 8/8/2019 Ns Lecture v2

    16/33

    16

    Create a Basic NS Simulation

    1. Create the event scheduler2. Create nodes and links

    3. Create connections4. Create traffic sources/sinks5. Enable tracing

  • 8/8/2019 Ns Lecture v2

    17/33

    17

    Step 4: Create Traffic Models

    Traffic (applications):Web, ftp, telnet, audio, etc.

    application objects attach to transport protocol

    objects generates traffic into transport protocol

  • 8/8/2019 Ns Lecture v2

    18/33

    18

    Creating Traffic over TCP Channels

    How to create a FTP session over TCP?

    create traffic model set ftp [new Application/FTP]

    default is infinite file sizeattach to TCP channel$ftp attach-agent $t_src

    schedule start time$ns at $ftp start

  • 8/8/2019 Ns Lecture v2

    19/33

    19

    Creating Traffic over UDP Channels

    How to create a CBR (Constant Bit Rate)model over UDP? set cbr [new Application/Traffic/CBR]

    $cbr set packetSize_ 512$cbr set interval_ 0.250

    $cbr attach-agent $u_src

    $ns at $cbr start

  • 8/8/2019 Ns Lecture v2

    20/33

    20

    Create a Basic NS Simulation

    1. Create the event scheduler2. Create nodes and links

    3. Create connections4. Create traffic sources/sinks5. Enable tracing

  • 8/8/2019 Ns Lecture v2

    21/33

    21

    Tracing: dump everything into a file

    Trace packets on individual link

    Tracefile format: --

    + 1 0 2 tcp 900 ------- 1 0.0 3.1 7 15

    - 1 0 2 tcp 900 ------- 1 0.0 3.1 7 15

    r 1.00234 0 2 tcp 900 ------- 1 0.0 3.1 7 15

    + enqueue- dequeuer received drop

    time

    nodes involvedin this event

    Node 0 Node 1enqueue

    receivedequeuedrop

  • 8/8/2019 Ns Lecture v2

    22/33

    22

    Trace packets on individual links

    Tracefile format: --

    + 1 0 2 tcp 900 ------- 1 0.0 3.1 7 15

    - 1 0 2 tcp 900 ------- 1 0.0 3.1 7 15

    r 1.00234 0 2 tcp 900 ------- 1 0.0 3.1 7 15

    + enqueue- dequeuer received drop

    time

    nodes involvedin this event

    packettype

    packetlength

    packetflags

    flowID source

    destaddresses

    seqnumber

    packetID

    Tracing: dump everything into a file

  • 8/8/2019 Ns Lecture v2

    23/33

    23

    Tracing via Monitors

    Queue monitor: the queue to access a linkFlow monitor: particular flow within queue to specify a link, we need:

    set link [$ns link $n0 $n1] to create a flow monitor:

    set fmon [$ns makeflowmon Fid]

    $ns attach-fmon $link $fmon

    $ns at puts $fmon set pdrops_

  • 8/8/2019 Ns Lecture v2

    24/33

    24

    Introduction to NS-2:

    Tutorial overview of NS

    Create basic NS simulationWalk-through simple exampleModel specification

    Execution and trace analysis

  • 8/8/2019 Ns Lecture v2

    25/33

    25

    Walk-through example

    acks

    full duplex

    acks

    full duplex

    Node 2Node 0 Node 1

  • 8/8/2019 Ns Lecture v2

    26/33

    26

    Walk-through example

    2 FTPsources

    One On-OffSource (voice)

    acks

    12 TCP

    dest

    One On-Off destOne CBR dest

    2 Mbps full duplex5 msec prop delay100 packet bufferDrop-tail policy

    acks

    1 Mbps full duplex10 msec prop delay700 packet bufferDrop-tail policy

    10 FTPsources

    One UDP2 TCP SACK

    W_max = 32MSS = 1400

    10 TCP NewReno

    W_max = 32MSS = 1400Node 0 Node 1 Node 2

    One UDP

    One CBRsource 12 FTPdest

    Two UDPdest

    fat link thin link

    performance

    tracing

  • 8/8/2019 Ns Lecture v2

    27/33

    27

    Introduction to NS-2:

    Tutorial overview of NS

    Create basic NS simulationWalk-through simple exampleModel specification

    Execution and trace analysis

    See handout for source code

  • 8/8/2019 Ns Lecture v2

    28/33

    28

    NS Trace file (link n1->n2):NS-trace.txt

    ...

    + 11.533441 1 2 tcp 1440 ------- 12 1.2 2.4 96 2092

    r 11.535694 1 2 tcp 1440 ------- 12 1.2 2.4 65 1527

    - 11.537214 1 2 exp 180 ------- 100 0.2 2.13 284 1528

    - 11.538654 1 2 cbr 1440 ------- 101 1.11 2.14 155 1530

    r 11.547214 1 2 tcp 1440 ------- 12 1.2 2.4 66 1529

    + 11.54728 1 2 tcp 1440 ------- 12 1.2 2.4 97 2095r 11.548654 1 2 exp 180 ------- 100 0.2 2.13 284 1528

    + 11.55 1 2 cbr 1440 ------- 101 1.11 2.14 211 2096

    - 11.550174 1 2 tcp 1440 ------- 12 1.2 2.4 67 1534

    r 11.560174 1 2 cbr 1440 ------- 101 1.11 2.14 155 1530

    - 11.561694 1 2 exp 180 ------- 100 0.2 2.13 285 1532

    + 11.56222 1 2 tcp 1440 ------- 12 1.2 2.4 98 2097

    - 11.563134 1 2 tcp 1440 ------- 12 1.2 2.4 68 1537

    r 11.571694 1 2 tcp 1440 ------- 12 1.2 2.4 67 1534

    r 11.573134 1 2 exp 180 ------- 100 0.2 2.13 285 1532

    - 11.574654 1 2 exp 180 ------- 100 0.2 2.13 286 1536

    ...

    0.0114sec=180*8/(10^6)+0.01

  • 8/8/2019 Ns Lecture v2

    29/33

    29

    Flow Monitor (link n1->n2) Trace :packet-trace.txt

    ...

    10 356 1394.6939635123624 1262 906 0 4 7 3 0

    10.5 367 1575.3875777393503 1325 958 0 8 15 7 0 1 1 0 0

    11 366 1759.8340061666161 1384 1018 0 8 15 7 0 1 1 0 0

    11.5 370 1944.0583990191849 1448 1078 0 8 15 7 0 1 1 0 0

    12 380 2131.710863713804 1512 1132 0 8 15 7 0 1 1 0 012.5 382 2325.178644727122 1558 1176 0 8 15 7 0 1 1 0 0

    13 382 2516.7615454470124 1613 1231 0 8 15 7 0 1 1 0 0

    13.5 395 2710.8647514290892 1676 1281 0 8 15 7 0 2 3 1 0

    14 421 2912.3462186990751 1747 1326 0 16 31 15 0 2 3 1 0

    14.5 432 3130.3858423193769 1805 1373 0 16 31 15 0 2 3 1 0

    15 436 3344.5896974377333 1862 1426 0 16 31 15 0 2 3 1 0

    15.5 462 3571.3811182311597 1937 1475 0 16 31 15 0 2 3 1 0

    16 477 3804.653159658757 1995 1518 0 16 31 15 0 2 3 1 0

    16.5 495 4049.5929326563519 2057 1562 0 16 31 15 0 2 3 1 0

    17 531 4303.9211771379323 2136 1605 0 16 31 15 0 2 3 1 0

    ...

  • 8/8/2019 Ns Lecture v2

    30/33

    30

    Results - Queue Statistics

    Red - instantaneous

    Green - running average

    Blue - average w/o transient P

    urple - packet drops

  • 8/8/2019 Ns Lecture v2

    31/33

    31

    Results - Flow Statistics

    Red - TCP flow 1 Green - TCP flow 2

    Number of packets in queuemimics TCP Window behavior

  • 8/8/2019 Ns Lecture v2

    32/33

    32

    Results - Flow Statistics

    Congestion Windows of Flow 1and Flow 2

    Cumulative dropped packets ofFlow 1 and Flow 2

  • 8/8/2019 Ns Lecture v2

    33/33

    33

    Performance Queue Statistics

    Multiple runs to obtain confidence intervals