File: shuttle-mcast.tcl

package info (click to toggle)
ns2 2.35%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 78,796 kB
  • sloc: cpp: 172,923; tcl: 107,130; perl: 6,391; sh: 6,143; ansic: 5,846; makefile: 816; awk: 525; csh: 355
file content (107 lines) | stat: -rw-r--r-- 3,189 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#
# Copyright (C) 1999 by USC/ISI
# All rights reserved.                                            
#                                                                
# Redistribution and use in source and binary forms are permitted
# provided that the above copyright notice and this paragraph are
# duplicated in all such forms and that any documentation, advertising
# materials, and other materials related to such distribution and use
# acknowledge that the software was developed by the University of
# Southern California, Information Sciences Institute.  The name of the
# University may not be used to endorse or promote products derived from
# this software without specific prior written permission.
# 
# THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
# 

#
# Maintained by: Polly Huang Tue Feb  2 14:34:54 PST 1999
# Version Date: $Date: 1999/09/09 03:29:46 $
#
# @(#) $Header: /cvsroot/nsnam/ns-2/tcl/ex/shuttle-mcast.tcl,v 1.3 1999/09/09 03:29:46 salehi Exp $ (USC/ISI)
#
# Creating 3 multicast sessions over a partial mbone topology (1996)

source shuttle.tcl
set mcastConnection 3

set ns [new Simulator]
$ns multicast

# set colors for nam
for {set i 0} {$i < 10} {incr i} {
    set color [expr $i % 6]
    if {$color == 0} {
        $ns color $i blue
    } elseif {$color == 1} {
        $ns color $i red
    } elseif {$color == 2} {
        $ns color $i green
    } elseif {$color == 3} {
        $ns color $i yellow
    } elseif {$color == 4} {
        $ns color $i brown
    } elseif {$color == 5} {
        $ns color $i black
    }
}

# config output files
set f [open shuttle-mcast.out w]
$ns trace-all $f
set nf [open shuttle-mcast.nam w]
$ns namtrace-all $nf

# creating mbone shuttle session topology 
# generated from 1996 trace
puts "This simulation will take a long time..."
#Node expandaddr
create-topology

# mcast config
set mproto CtrMcast
set mrthandle [$ns mrtproto $mproto {}]

# create mcast sessions
for {set i 0} {$i < $mcastConnection} {incr i} {
    # groups config
    set g($i) [expr [Node allocaddr]]
    if {$mrthandle != ""} {
	$ns at 0.01 "$mrthandle switch-treetype $g($i)"
    }    

    # source config
    set udp($i) [new Agent/UDP]
    $ns attach-agent $n($i) $udp($i)
    set cbr($i) [new Application/Traffic/CBR]
    $cbr($i) attach-agent $udp($i)
    $udp($i) set dst_addr_ $g($i)
    $udp($i) set dst_port_ 0
    $udp($i) set fid_ $i
    $ns at [expr $i + 1] "$cbr($i) start"

    # member config
    set member1 [expr [expr $num_node - $i] - 1]
    set member2 [expr [expr $num_node / 2 ] - $i]
    set rcvr($i:$member1) [new Agent/Null]
    set rcvr($i:$member2) [new Agent/Null]
    $ns attach-agent $n($member1) $rcvr($i:$member1)
    $ns attach-agent $n($member2) $rcvr($i:$member2)
    $ns at 0.5 "$n($member1) join-group  $rcvr($i:$member1) $g($i)"
    $ns at 0.5 "$n($member2) join-group  $rcvr($i:$member2) $g($i)"
}

proc finish {} {
    global ns f nf
    $ns flush-trace
    close $f
    close $nf

    exec nam shuttle-mcast.nam
    exit
}

$ns at 13.0 "finish"
$ns run