How to modify this TCL code so that the MAC protocol used for this simulation is CSMA

19 views Asked by At

#===================================

Simulation parameters setup

#===================================

set val(chan) Channel/WirelessChannel ;# channel type

set val(prop) Propagation/TwoRayGround ;# radio-propagation model

set val(netif) Phy/WirelessPhy ;# network interface type

set val(mac) Mac/802_11 ;# MAC type

set val(ifq) Queue/DropTail/PriQueue ;# interface queue type

set val(ll) LL ;# link layer type

set val(ant) Antenna/OmniAntenna ;# antenna model

set val(ifqlen) 50 ;# max packet in ifq

set val(nn) 11 ;# number of mobilenodes

set val(rp) DSR ;# routing protocol

set val(x) 2104 ;# X dimension of topography

set val(y) 100 ;# Y dimension of topography

set val(stop) 50.0 ;# time of simulation end

if { $val(rp) == "DSR" } {

set val(ifq) CMUPriQueue

} else {

set val(ifq) Queue/DropTail/PriQueue

}

#===================================

Initialization

#===================================

#Create a ns simulator

set ns [new Simulator]

#Setup topography object

set topo [new Topography]

$topo load_flatgrid $val(x) $val(y)

create-god $val(nn)

#Open the NS trace file

set tracefile [open 11node.tr w]

$ns trace-all $tracefile

#Open the NAM trace file

set namfile [open 11node.nam w]

$ns namtrace-all $namfile

$ns namtrace-all-wireless $namfile $val(x) $val(y)

set chan [new $val(chan)];#Create wireless channel

#===================================

Mobile node parameter setup

#===================================

$ns node-config -adhocRouting $val(rp) \

            -llType        $val(ll) \

            -macType       $val(mac) \

            -ifqType       $val(ifq) \

            -ifqLen        $val(ifqlen) \

            -antType       $val(ant) \

            -propType      $val(prop) \

            -phyType       $val(netif) \

            -energyModel "EnergyModel" \

    -initialEnergy 10.0 \

    -txPower 1.0 \

    -rxPower 0.5 \

    -idlePower 0.5\

    -sleepPower 0.01 \

            -channel       $chan \

            -topoInstance  $topo \

            -agentTrace    ON \

            -routerTrace   ON \

            -macTrace      ON \

            -movementTrace ON

#===================================

Nodes Definition

#===================================

#Create 11 nodes

set n0 [$ns node]

$n0 set X_ 603

$n0 set Y_ 568

$n0 set Z_ 0.0

$ns initial_node_pos $n0 20

set n1 [$ns node]

$n1 set X_ 803

$n1 set Y_ 568

$n1 set Z_ 0.0

$ns initial_node_pos $n1 20

set n2 [$ns node]

$n2 set X_ 1003

$n2 set Y_ 568

$n2 set Z_ 0.0

$ns initial_node_pos $n2 20

set n3 [$ns node]

$n3 set X_ 1203

$n3 set Y_ 568

$n3 set Z_ 0.0

$ns initial_node_pos $n3 20

set n4 [$ns node]

$n4 set X_ 1403

$n4 set Y_ 568

$n4 set Z_ 0.0

$ns initial_node_pos $n4 20

set n5 [$ns node]

$n5 set X_ 600

$n5 set Y_ 414

$n5 set Z_ 0.0

$ns initial_node_pos $n5 20

set n6 [$ns node]

$n6 set X_ 800

$n6 set Y_ 414

$n6 set Z_ 0.0

$ns initial_node_pos $n6 20

set n7 [$ns node]

$n7 set X_ 1000

$n7 set Y_ 414

$n7 set Z_ 0.0

$ns initial_node_pos $n7 20

set n8 [$ns node]

$n8 set X_ 1200

$n8 set Y_ 414

$n8 set Z_ 0.0

$ns initial_node_pos $n8 20

set n9 [$ns node]

$n9 set X_ 1400

$n9 set Y_ 414

$n9 set Z_ 0.0

$ns initial_node_pos $n9 20

set n10 [$ns node]

$n10 set X_ 590

$n10 set Y_ 701

$n10 set Z_ 0.0

$ns initial_node_pos $n10 20

#===================================

Agents Definition

#===================================

#Setup a TCP connection

set tcp0 [new Agent/TCP]

$ns attach-agent $n10 $tcp0

set sink1 [new Agent/TCPSink]

$ns attach-agent $n9 $sink1

$ns connect $tcp0 $sink1

$tcp0 set packetSize_ 1500

#===================================

Applications Definition

#===================================

#Setup a CBR Application over TCP connection

set cbr0 [new Application/Traffic/CBR]

$cbr0 attach-agent $tcp0

$cbr0 set packetSize_ 1000

$cbr0 set rate_ 1.0Mb

$cbr0 set random_ null

$ns at 1.0 "$cbr0 start"

$ns at 50.0 "$cbr0 stop"

#===================================

Termination

#===================================

#Define a 'finish' procedure

proc finish {} {

global ns tracefile namfile

$ns flush-trace

close $tracefile

close $namfile

exec nam 11node.nam &

exit 0

}

for {set i 0} {$i < $val(nn) } { incr i } {

$ns at $val(stop) "\$n$i reset"

}

$ns at $val(stop) "$ns nam-end-wireless $val(stop)"

$ns at $val(stop) "finish"

$ns at $val(stop) "puts "done" ; $ns halt"

$ns run

0

There are 0 answers