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

Description

In the code segment given below, each node is configured with 2 interfaces and 2 channels. In network layer AODV routing protocol is used. AODV is an Ad-Hoc On-Demand routing protocol that perform calculation of the route based on demand and in other words only use when route is needed. There are four types of messages involved in AODV routing process that involve in AODV nodes which are route request (RREQ), route reply (RREP), route error (RERR) and HELLO messages.

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)AODV;#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(ni)2;# number of interfaces
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 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(ni)} {incr i} {

set chan_($i) [new $val(chan)]

}

#configure for interface and channel

$ns_ node-config -ifNum $val(ni) -channel $chan_(0)

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

$ns_ add-channel $i $chan_($i)

}

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

}

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