Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

How do I use cbrgen tool in ns-2?

cbrgen tool 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 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) 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
set x [$u value]

if {$x
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
# 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#"


This post first appeared on Computex Academy, please read the originial post: here

Share the post

How do I use cbrgen tool in ns-2?

×

Subscribe to Computex Academy

Get updates delivered right to your inbox!

Thank you for your subscription

×