[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [ns] topology generstor



Hi Vishnukant:

I am attaching an example script and the topology file that is sourced
from the main script.  The script runs SRM for a topology of 50 nodes
using sessionSim, but this is actually irrelevant for you.  I put some
comments in ss-50.tcl in the places I source the file and when I invoke
the function to create the topology.

Hope this helps.

Regards,
-Al

On Tue, 28 Mar 2000, Vishnukant Varma wrote:

> 
> Hi Alberto,
> thanks for the prompt reply. Could you please help me a bit more..I tried
> including the file in my ns script but ns failed to recogonize the node
> variables of the "source" file. Maybe I am typing the syntax wrong. Can
> you send me a small example where your NS script uses a topology generated
> by sgb2ns? I would really appreciate that.
> Looking forward to your email,
> Regards,
> Vishnukant
> 
> On Mon, 27 Mar 2000, Alberto Cerpa wrote:
> 
> > Hi Vishnukant:
> > 
> > The ITM software is in the gt-itm subdirectory of the ns distribution.
> > Check the README file to learn how to generate different types of
> > topologies and check out the examples. There is a file there call
> > Runconvert which basically call sgb2ns to transform the topologies in sgb
> > format to .tcl format.
> > Once you get the .tcl topology, from your ns tcl script do the following:
> > 
> > source <name of your topo file here>.tcl
> > 
> > and you are ready to go.
> > 
> > Regards,
> > -Alberto.
> > 
> > Vishnukant Varma wrote:
> > 
> > > Hi,
> > > can anyone email me a sample tcl script which uses a topology generated
> > > by georgia tech's ITM software ?
> > > Thanks,
> > > Vishnukant
> > > --
> > > Vishnu Varma
> > > Department of Electrical and Computer Engineering,
> > > North Carolina State University,
> > > Raleigh,
> > > NC, USA.
> > >
> > > Residence:
> > > 636, Chappel Drive,
> > > Raleigh,
> > > North Carolina, USA
> > > Ph. (919) 833-5480
> > > Emails: [email protected]
> > >         [email protected]
> > >
> > > Home Page:
> > > http://members.tripod.com/~vishnu_kant
> > 
> > 
> 
> Vishnu Varma
> Department of Electrical and Computer Engineering,
> North Carolina State University,
> Raleigh,
> NC, USA.
> 
> Residence:
> 636, Chappel Drive,
> Raleigh,
> North Carolina, USA
> Ph. (919) 833-5480
> Emails: [email protected]
> 	[email protected]
> 
> Home Page:
> http://members.tripod.com/~vishnu_kant
> 
> 
set nmax 50
set srmStats [open srmStats.tr w]

set ns [new SessionSim]

# Here we source the topology file
source topos/r50-0.tcl

set group [Node allocaddr]

# Here we create the topology (from the r50-0.tcl file)
create-topology ns n 1.5Mb

# now the agents
set fid 0
for {set i 0} {$i < $nmax} {incr i} {
    set srm($i) [new Agent/SRM/Deterministic]
    $srm($i) set dst_addr_ $group
    $srm($i) set fid_ [incr fid]
    $srm($i) log $srmStats
    $ns at 0.1 "$srm($i) start"

    $ns attach-agent $n($i) $srm($i)
    set sessionhelper($i) [$ns create-session $n($i) $srm($i)]
}


# And, finally, attach a data source to srm(1)
set packetSize 10
set s [new Application/Traffic/CBR]
$s set packet_size_ $packetSize
$s set interval_ 0.02

$s attach-agent $srm(1)
$srm(1) set tg_ $s
$srm(1) set app_fid_ 0
$srm(1) set packetSize_ $packetSize
$ns at 0.1 "$srm(1) start-source"

# SRMErrorModel takes arguments as pkt_type_, drop_cycle_, drop_offset_ 
# (chk errmodel.cc) every 10 srm data packets drop 1
set loss_module [new SRMErrorModel]
$loss_module drop-packet 2 200 1
$loss_module drop-target [$ns set nullAgent_]

#insert loss module to the link btw node1 and requester -need to modify
$ns insert-loss $loss_module $n(1) $n(8)

$ns at 4 "finish $s"

proc finish src {
    $src stop 

    global ns srmStats srmEvents srm
    $ns flush-trace		;# NB>  Did not really close out.tr...:-)
    close $srmStats
    
    set avg_info [open ses-avg-info w]
    puts $avg_info "avg:\trep-delay\treq-delay\trep-dup\t\treq-dup"
    foreach index [lsort -integer [array name srm]] {
	set tmplist [$srm($index) array get stats_]
	puts $avg_info "$index\t[format %7.4f [lindex $tmplist 1]]\t\t[format %7.4f [lindex $tmplist 5]]\t\t[format %7.4f [lindex $tmplist 9]]\t\t[format %7.4f [lindex $tmplist 13]]"
    }
    flush $avg_info
    close $avg_info

    puts "running nam..."
    exit 0
}

$ns run
# Generated by sgb2ns, created by Polly Huang
# GRAPH (#nodes #edges id uu vv ww xx yy zz):
# 50 114 geo(0,{50,50,3,0.033,0.000,0.000}) 50 

proc create-topology {nsns node linkBW} {
	upvar $node n
	upvar $nsns ns

	set verbose 1

	if {$verbose} { 
		puts "creating nodes..." 
}
		for {set i 0} {$i < 50} {incr i} {
			set n($i) [$ns node]
	}

	# EDGES (from-node to-node length a b):
	if {$verbose} { 
		puts -nonewline "Creating links 0..."
		flush stdout 
	}
	$ns duplex-link-of-interfaces $n(0) $n(46) $linkBW 570ms DropTail
	$ns duplex-link-of-interfaces $n(1) $n(8) $linkBW 220ms DropTail
	$ns duplex-link-of-interfaces $n(2) $n(44) $linkBW 130ms DropTail
	$ns duplex-link-of-interfaces $n(2) $n(38) $linkBW 220ms DropTail
	$ns duplex-link-of-interfaces $n(2) $n(25) $linkBW 120ms DropTail
	$ns duplex-link-of-interfaces $n(3) $n(34) $linkBW 180ms DropTail
	$ns duplex-link-of-interfaces $n(3) $n(19) $linkBW 330ms DropTail
	$ns duplex-link-of-interfaces $n(3) $n(10) $linkBW 270ms DropTail
	$ns duplex-link-of-interfaces $n(3) $n(9) $linkBW 50ms DropTail
	$ns duplex-link-of-interfaces $n(4) $n(20) $linkBW 390ms DropTail
	if {$verbose} { puts -nonewline "10..."; flush stdout }
	$ns duplex-link-of-interfaces $n(4) $n(9) $linkBW 120ms DropTail
	$ns duplex-link-of-interfaces $n(5) $n(49) $linkBW 330ms DropTail
	$ns duplex-link-of-interfaces $n(5) $n(38) $linkBW 200ms DropTail
	$ns duplex-link-of-interfaces $n(5) $n(31) $linkBW 260ms DropTail
	$ns duplex-link-of-interfaces $n(5) $n(13) $linkBW 220ms DropTail
	$ns duplex-link-of-interfaces $n(6) $n(17) $linkBW 130ms DropTail
	$ns duplex-link-of-interfaces $n(7) $n(26) $linkBW 180ms DropTail
	$ns duplex-link-of-interfaces $n(7) $n(9) $linkBW 140ms DropTail
	$ns duplex-link-of-interfaces $n(8) $n(30) $linkBW 120ms DropTail
	$ns duplex-link-of-interfaces $n(10) $n(45) $linkBW 140ms DropTail
	if {$verbose} { puts -nonewline "20..."; flush stdout }
	$ns duplex-link-of-interfaces $n(10) $n(24) $linkBW 110ms DropTail
	$ns duplex-link-of-interfaces $n(11) $n(44) $linkBW 340ms DropTail
	$ns duplex-link-of-interfaces $n(11) $n(38) $linkBW 130ms DropTail
	$ns duplex-link-of-interfaces $n(12) $n(42) $linkBW 350ms DropTail
	$ns duplex-link-of-interfaces $n(12) $n(39) $linkBW 260ms DropTail
	$ns duplex-link-of-interfaces $n(14) $n(45) $linkBW 290ms DropTail
	$ns duplex-link-of-interfaces $n(14) $n(43) $linkBW 110ms DropTail
	$ns duplex-link-of-interfaces $n(15) $n(19) $linkBW 230ms DropTail
	$ns duplex-link-of-interfaces $n(15) $n(18) $linkBW 500ms DropTail
	$ns duplex-link-of-interfaces $n(16) $n(45) $linkBW 530ms DropTail
	if {$verbose} { puts -nonewline "30..."; flush stdout }
	$ns duplex-link-of-interfaces $n(17) $n(37) $linkBW 120ms DropTail
	$ns duplex-link-of-interfaces $n(17) $n(36) $linkBW 210ms DropTail
	$ns duplex-link-of-interfaces $n(18) $n(23) $linkBW 390ms DropTail
	$ns duplex-link-of-interfaces $n(18) $n(21) $linkBW 470ms DropTail
	$ns duplex-link-of-interfaces $n(19) $n(48) $linkBW 130ms DropTail
	$ns duplex-link-of-interfaces $n(19) $n(41) $linkBW 360ms DropTail
	$ns duplex-link-of-interfaces $n(19) $n(28) $linkBW 290ms DropTail
	$ns duplex-link-of-interfaces $n(20) $n(25) $linkBW 120ms DropTail
	$ns duplex-link-of-interfaces $n(21) $n(41) $linkBW 430ms DropTail
	$ns duplex-link-of-interfaces $n(21) $n(36) $linkBW 220ms DropTail
	if {$verbose} { puts -nonewline "40..."; flush stdout }
	$ns duplex-link-of-interfaces $n(22) $n(40) $linkBW 390ms DropTail
	$ns duplex-link-of-interfaces $n(22) $n(29) $linkBW 290ms DropTail
	$ns duplex-link-of-interfaces $n(24) $n(47) $linkBW 160ms DropTail
	$ns duplex-link-of-interfaces $n(24) $n(44) $linkBW 130ms DropTail
	$ns duplex-link-of-interfaces $n(24) $n(26) $linkBW 330ms DropTail
	$ns duplex-link-of-interfaces $n(25) $n(42) $linkBW 200ms DropTail
	$ns duplex-link-of-interfaces $n(25) $n(29) $linkBW 130ms DropTail
	$ns duplex-link-of-interfaces $n(27) $n(44) $linkBW 170ms DropTail
	$ns duplex-link-of-interfaces $n(30) $n(39) $linkBW 140ms DropTail
	$ns duplex-link-of-interfaces $n(31) $n(46) $linkBW 290ms DropTail
	if {$verbose} { puts -nonewline "50..."; flush stdout }
	$ns duplex-link-of-interfaces $n(32) $n(48) $linkBW 250ms DropTail
	$ns duplex-link-of-interfaces $n(33) $n(49) $linkBW 50ms DropTail
	$ns duplex-link-of-interfaces $n(34) $n(36) $linkBW 270ms DropTail
	$ns duplex-link-of-interfaces $n(35) $n(45) $linkBW 610ms DropTail
	$ns duplex-link-of-interfaces $n(38) $n(48) $linkBW 20ms DropTail
	$ns duplex-link-of-interfaces $n(38) $n(40) $linkBW 180ms DropTail
	$ns duplex-link-of-interfaces $n(39) $n(40) $linkBW 90ms DropTail

	if {$verbose} { 
		puts -nonewline "57..."
		flush stdout
		puts "starting"
	}
	return 50}