CBRGEN tool for NS-2
CBRGEN tool for NS-2 is used to create random connections between nodes in wireless ad hoc networks, actually cbrgen is a file cbrgen.tcl which content listed below.
the syntax for generating connection file is.
ns cbrgen.tcl [-type cbr|tcp] [-nn nodes] [-seed seed] [-mc connections] [-rate rate] > connections
Example is
ns cbrgen.tcl
ns cbrgen.tcl -type tcp -nn 10 seed 1.0 -mc 5 -rate 8.0 > tcp_5_connections
and the content of the tcp_5_connections file would be.
How to include in tcl file.
Include in your tcl network configuration file where you make connections manually.
by using this statement and delete all the manual traffic connections configuration.
source tcp_5_connections
———–Content of the tcp_5_connections .————————
nodes: 10, max conn: 5, send interval: 0.0, seed: 0.0
#
#
2 connecting to 3 at time 9.7817262214523399
#
set tcp_(0) [$ns_ create-connection TCP $node_(2) TCPSink $node_(3) 0]
$tcp_(0) set window_ 32
$tcp_(0) set packetSize_ 512
set ftp_(0) [$tcp_(0) attach-source FTP]
$ns_ at 9.7817262214523399 “$ftp_(0) start”
#
3 connecting to 4 at time 3.9844003152029588
#
set tcp_(1) [$ns_ create-connection TCP $node_(3) TCPSink $node_(4) 0]
$tcp_(1) set window_ 32
$tcp_(1) set packetSize_ 512
set ftp_(1) [$tcp_(1) attach-source FTP]
$ns_ at 3.9844003152029588 “$ftp_(1) start”
#
4 connecting to 5 at time 4.3255147451188023
#
set tcp_(2) [$ns_ create-connection TCP $node_(4) TCPSink $node_(5) 0]
$tcp_(2) set window_ 32
$tcp_(2) set packetSize_ 512
set ftp_(2) [$tcp_(2) attach-source FTP]
$ns_ at 4.3255147451188023 “$ftp_(2) start”
#
7 connecting to 8 at time 7.4712074396532069
#
set tcp_(3) [$ns_ create-connection TCP $node_(7) TCPSink $node_(8) 0]
$tcp_(3) set window_ 32
$tcp_(3) set packetSize_ 512
set ftp_(3) [$tcp_(3) attach-source FTP]
$ns_ at 7.4712074396532069 “$ftp_(3) start”
#
9 connecting to 0 at time 13.984318195834904
#
set tcp_(4) [$ns_ create-connection TCP $node_(9) TCPSink $node_(0) 0]
$tcp_(4) set window_ 32
$tcp_(4) set packetSize_ 512
set ftp_(4) [$tcp_(4) attach-source FTP]
$ns_ at 13.984318195834904 “$ftp_(4) start”
#
#Total sources/connections: 5/5
#
#————————cbrgen.tcl—————————-
set opt(nn) 0 ;# Number of Nodes
set opt(seed) 0.0
set opt(mc) 0
set opt(pktsize) 512
set opt(rate) 0
set opt(interval) 0.0 ;# inverse of rate
set opt(type) “”
======================================================================
proc usage {} {
global argv0
puts “\nusage: $argv0 [-type cbr|tcp] [-nn nodes] [-seed seed] [-mc connections] [-rate rate]\n”
}
proc getopt {argc argv} {
global opt
lappend optlist nn seed mc rate type
for {set i 0} {$i < $argc} {incr i} {
set arg [lindex $argv $i]
if {[string range $arg 0 0] != “-“} continue
set name [string range $arg 1 end]
set opt($name) [lindex $argv [expr $i+1]]
}
}
proc create-cbr-connection { src dst } {
global rng cbr_cnt opt
set stime [$rng uniform 0.0 20.0]
puts “#\n# $src connecting to $dst at time $stime\n#”
##puts “set cbr_($cbr_cnt) [\$ns_ create-connection \
##CBR \$node_($src) CBR \$node_($dst) 0]”;
puts “set udp_($cbr_cnt) [new Agent/UDP]”
puts “\$ns_ attach-agent \$node_($src) \$udp_($cbr_cnt)”
puts “set null_($cbr_cnt) [new Agent/Null]”
puts “\$ns_ attach-agent \$node_($dst) \$null_($cbr_cnt)”
puts “set cbr_($cbr_cnt) [new Application/Traffic/CBR]”
puts “\$cbr_($cbr_cnt) set packetSize_ $opt(pktsize)”
puts “\$cbr_($cbr_cnt) set interval_ $opt(interval)”
puts “\$cbr_($cbr_cnt) set random_ 1”
puts “\$cbr_($cbr_cnt) set maxpkts_ 10000”
puts “\$cbr_($cbr_cnt) attach-agent \$udp_($cbr_cnt)”
puts “\$ns_ connect \$udp_($cbr_cnt) \$null_($cbr_cnt)”
puts “\$ns_ at $stime \”\$cbr_($cbr_cnt) start\””
incr cbr_cnt
}
proc create-tcp-connection { src dst } {
global rng cbr_cnt opt
set stime [$rng uniform 0.0 20.0]
puts “#\n# $src connecting to $dst at time $stime\n#”
puts “set tcp_($cbr_cnt) [\$ns_ create-connection \
TCP \$node_($src) TCPSink \$node_($dst) 0]”;
puts “\$tcp_($cbr_cnt) set window_ 32”
puts “\$tcp_($cbr_cnt) set packetSize_ $opt(pktsize)”
puts “set ftp_($cbr_cnt) [\$tcp_($cbr_cnt) attach-source FTP]”
puts “\$ns_ at $stime \”\$ftp_($cbr_cnt) start\””
incr cbr_cnt
}
======================================================================
getopt $argc $argv
if { $opt(type) == “” } {
usage
exit
} elseif { $opt(type) == “cbr” } {
if { $opt(nn) == 0 || $opt(seed) == 0.0 || $opt(mc) == 0 || $opt(rate) == 0 } {
usage
exit
}
set opt(interval) [expr 1 / $opt(rate)]
if { $opt(interval) <= 0.0 } {
puts “\ninvalid sending rate $opt(rate)\n”
exit
}
}
puts “#\n# nodes: $opt(nn), max conn: $opt(mc), send interval: $opt(interval), seed: $opt(seed)\n#”
set rng [new RNG]
$rng seed $opt(seed)
set u [new RandomVariable/Uniform]
$u set min_ 0
$u set max_ 100
$u use-rng $rng
set cbr_cnt 0
set src_cnt 0
for {set i 0} {$i < $opt(nn) } {incr i} {
set x [$u value]
if {$x < 50} {continue;}
incr src_cnt
set dst [expr ($i+1) % [expr $opt(nn) + 1] ]
set dst [expr ($i+1) % [expr $opt(nn) ] ]
#if { $dst == 0 } {
#set dst [expr $dst + 1]
#}
if { $opt(type) == “cbr” } {
create-cbr-connection $i $dst
} else {
create-tcp-connection $i $dst
}
if { $cbr_cnt == $opt(mc) } {
break
}
if {$x < 75} {continue;}
set dst [expr ($i+2) % [expr $opt(nn) + 1] ]
set dst [expr ($i+2) % [expr $opt(nn)] ]
#if { $dst == 0 } {
#set dst [expr $dst + 1]
#}
if { $opt(type) == “cbr” } {
create-cbr-connection $i $dst
} else {
create-tcp-connection $i $dst
}
if { $cbr_cnt == $opt(mc) } {
break
}
}
puts “#\n#Total sources/connections: $src_cnt/$cbr_cnt\n#”