In the code segment given below, collision free MAC Macng is used in which channel negotiation among nodes is done via the common control channel.
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(ant) | Antenna/OmniAntenna | ; #Antenna model |
set val(rp) | AODV | ;#Routing Protocol |
set val(ifq) | Queue/DropTail/PriQueue | ;# interface queue type |
set val(ifqlen) | 50 | ;# max packet in ifq |
set val(mac) | Mac/Macng | ;# MAC type |
set val(ll) | LL | ;# link layer type |
set val(nn) | 6 | ;# number of mobilenodes |
set val(channum) | 3 | ;# number of channels per radio |
set val(cp) | ./topo4.tcl | ; # topology traffic file |
set val(stop) | 50 | ;# simulation time |
# ==================================================================
# Main Program
# ======================================================================
# Initialize Global Variables
set ns_ [new Simulator]
set tracefd [open ./test.tr w]
$ns_ trace-all $tracefd
# set up topography object
set topo [new Topography]
$topo load_flatgrid 1000 1000
#create nam
set namtrace [open ./test.nam w]
$ns_ namtrace-all-wireless $namtrace 1000 1000
# Create God
set god_ [create-god $val(nn)]
# configure node
$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) -topoInstance $topo -agentTrace ON -routerTrace ON -macTrace ON -movementTrace ON
for {set i 0} { $i < $val(channum)} {incr i} {
set chan_($i) [new $val(chan)]
}
for {set i 0} {$i < $val(channum) } {incr i} {
$ns_ add-channel $i $chan_($i)
}
#Configure for channels
$ns_ node-config -channel $chan_(0) -ChannelNum $val(channum)
for {set i 0} {$i < $val(nn) } {incr i} {
set node_($i) [$ns_ node]
$node_($i) set recordIfall 1
$node_($i) random-motion 0 ;# disable random motion
}