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.
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