File: test-tmix.tcl

package info (click to toggle)
ns2 2.35%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 78,120 kB
  • sloc: cpp: 172,923; tcl: 107,127; perl: 6,391; sh: 6,143; ansic: 5,846; makefile: 812; awk: 525; csh: 355
file content (118 lines) | stat: -rw-r--r-- 4,009 bytes parent folder | download | duplicates (7)
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
108
109
110
111
112
113
114
115
116
117
118
# test-tmix.tcl
#
# Simulation script to simulate the tmix-ns component
#
# useful variables
set length 10;                         # length of traced simulation (s)
set window 16;                         # max TCP window size in KB
set bw 1000;                           # link speed (Mbps)
set warmup 0;                          # warmup interval (s)
set end $length
set debug 1

set DATADIR "."
set FILE "sample"
set INBOUND "sample-alt.cvec"
set OUTBOUND "sample-alt.cvec";   # same traffic in both directions

#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Setup Simulator
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

remove-all-packet-headers;             # removes all packet headers
add-packet-header IP TCP;              # adds TCP/IP headers
set ns [new Simulator];                # instantiate the Simulator

#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Setup Topology
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

# create nodes
set n(0) [$ns node]
set n(1) [$ns node]
set n(2) [$ns node]
set n(3) [$ns node]

# setup TCP
Agent/TCP/FullTcp set segsize_ 1460;           # set MSS to 1460 bytes
Agent/TCP/FullTcp set nodelay_ true;           # disabling nagle
Agent/TCP/FullTcp set segsperack_ 2;           # delayed ACKs
Agent/TCP/FullTcp set interval_ 0.1;           # 100 ms

#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Setup TmixNode
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

set tmix(0) [new Tmix]
$tmix(0) set-init $n(0);                 # name $n(0) as initiator
$tmix(0) set-acc $n(1);                  # name $n(1) as acceptor
$tmix(0) set-ID 7
$tmix(0) set-cvfile "$INBOUND"
$tmix(0) set-TCP Newreno

set tmix(1) [new Tmix]
$tmix(1) set-init $n(3);                 # name $n(3) as initiator
$tmix(1) set-acc $n(2);                  # name $n(2) as acceptor
$tmix(1) set-ID 8
$tmix(1) set-cvfile "$OUTBOUND"
$tmix(1) set-TCP Newreno

#
# Setup tmixDelayBox
#
set tmixNet(0) [$ns Tmix_DelayBox]
$tmixNet(0) set-cvfile "$INBOUND" [$n(0) id] [$n(1) id]
$tmixNet(0) set-lossless

set tmixNet(1) [$ns Tmix_DelayBox]
$tmixNet(1) set-cvfile "$OUTBOUND" [$n(3) id] [$n(2) id]
$tmixNet(1) set-lossless

# create link
$ns duplex-link $n(0) $tmixNet(0) 1000Mb 0.1ms DropTail
$ns duplex-link $n(2) $tmixNet(0) 1000Mb 0.1ms DropTail
$ns duplex-link $tmixNet(0) $tmixNet(1) 1000Mb 0.1ms DropTail
$ns duplex-link $tmixNet(1) $n(1) 1000Mb 0.1ms DropTail
$ns duplex-link $tmixNet(1) $n(3) 1000Mb 0.1ms DropTail

# set queue buffer sizes (in packets)  (default is 20 packets)
$ns queue-limit $n(0) $tmixNet(0) 500
$ns queue-limit $tmixNet(0) $n(0) 500
$ns queue-limit $n(2) $tmixNet(0) 500
$ns queue-limit $tmixNet(0) $n(2) 500
$ns queue-limit $tmixNet(0) $tmixNet(1) 500
$ns queue-limit $tmixNet(1) $tmixNet(0) 500
$ns queue-limit $tmixNet(1) $n(1) 500
$ns queue-limit $n(1) $tmixNet(1) 500
$ns queue-limit $tmixNet(1) $n(3) 500
$ns queue-limit $n(3) $tmixNet(1) 500

# setup tracing
Trace set show_tcphdr_ 1;  
set qmonf [open "|gzip > tmix-trace.trq.gz" w]
$ns trace-queue $n(0) $tmixNet(0) $qmonf
$ns trace-queue $tmixNet(1) $n(1) $qmonf
$ns trace-queue $tmixNet(0) $n(0) $qmonf
$ns trace-queue $n(1) $tmixNet(1) $qmonf
$ns trace-queue $tmixNet(0) $tmixNet(1) $qmonf
$ns trace-queue $tmixNet(1) $tmixNet(0) $qmonf
$ns trace-queue $n(2) $tmixNet(0) $qmonf
$ns trace-queue $tmixNet(1) $n(3) $qmonf
$ns trace-queue $tmixNet(0) $n(2) $qmonf
$ns trace-queue $n(3) $tmixNet(1) $qmonf

#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Simulation Schedule
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

$ns at 0.0 "$tmix(0) start"
$ns at 0.0 "$tmix(1) start"
$ns at $end "$tmix(0) stop"
$ns at $end "$tmix(1) stop"
$ns at [expr $length + 1] "$ns halt"

#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Start the Simulation
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

$ns run