How to apply single-radio and multi-channel in CR (Cognitive Radio) enabled WCETT Routing Protocol using NS2 ?


In the code segment given below, each node is configured with single interface and 2 channels. In network layer on demand ad-hoc routing protocol, WCETT (Weight Cumulative Expected Transmission Time protocol) routing protocol is used. It selects the best path between source and destination during route discovery process.

TCL part :

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)WCETT;#Routing Protocol
set val(ifq)Queue/DropTail/PriQueue;# interface queue type
set val(ifqlen)50;# max packet in ifq
set val(mac)Mac/802_11;# MAC type
set val(ll)LL;# link layer type
set val(nn)20;# number of mobilenodes
set val(channum)2;# number of channels per radio
set val(cp)./random.tcl; # topology traffic file
set val(stop)50;# simulation time


# Main Program

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

# Initialize Global Variables

set ns_ [new Simulator]

set tracefd [open 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)

#$ns_ node-config -ifNum $val(ni)

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

set node_($i) [$ns_ node]

$node_($i) set SingleIfMultiChan 1

$node_($i) set recordIfall 1

$node_($i) random-motion 0 ;# disable random motion


source $val(cp) ; #source topology and traffic file generated by others