/usr/share/doc/nam/examples/edu/B4-sliding-color.tcl is in nam-examples 1.15-4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 | # sliding window protocol in congestion
# features : labeling, annotation, nam-graph, and window size monitoring
# all packets look black cause of supporting nam-graph
# You could run 'B4-sliding-color.nam' to see the colors of each traffic
set ns [new Simulator]
$ns color 1 red
#$ns trace-all [open B4-sliding-color.tr w]
#$ns namtrace-all [open B4-sliding-color.nam w]
foreach i "s1 s2 r1 r2 s3 s4" {
set node_($i) [$ns node]
}
$node_(s2) color "red"
$node_(s4) color "red"
$node_(r1) color "blue"
$node_(r2) color "blue"
$node_(r1) shape "rectangular"
$node_(r2) shape "rectangular"
$ns at 0.0 "$node_(s1) label Sliding-W-sender"
$ns at 0.0 "$node_(s2) label CBR-sender"
$ns at 0.0 "$node_(s3) label Sliding-W-receiver"
$ns at 0.0 "$node_(s4) label CBR-receiver"
$ns duplex-link $node_(s1) $node_(r1) 0.5Mb 50ms DropTail
$ns duplex-link $node_(s2) $node_(r1) 0.5Mb 50ms DropTail
$ns duplex-link $node_(r1) $node_(r2) 0.5Mb 50ms DropTail
$ns duplex-link $node_(r2) $node_(s3) 0.5Mb 50ms DropTail
$ns duplex-link $node_(r2) $node_(s4) 0.5Mb 50ms DropTail
$ns queue-limit $node_(r1) $node_(r2) 10
$ns queue-limit $node_(r2) $node_(r1) 10
$ns duplex-link-op $node_(s1) $node_(r1) orient right-down
$ns duplex-link-op $node_(s2) $node_(r1) orient right-up
$ns duplex-link-op $node_(r1) $node_(r2) orient right
$ns duplex-link-op $node_(r2) $node_(s3) orient right-up
$ns duplex-link-op $node_(r2) $node_(s4) orient right-down
$ns duplex-link-op $node_(r1) $node_(r2) queuePos 0.5
$ns duplex-link-op $node_(r2) $node_(r1) queuePos 0.5
Agent/TCP set nam_tracevar_ true
# setting sliding window size to 4
Agent/TCP set maxcwnd_ 4
### sliding-window protocol between s1 and s3 (Black)
#set sliding [new Agent/TCP/SlidingWindow]
set sliding [new Agent/TCP]
$sliding set fid_ 0
$ns attach-agent $node_(s1) $sliding
#set sink [new Agent/TCPSink/SlidingWindowSink]
set sink [new Agent/TCPSink]
$ns attach-agent $node_(s3) $sink
$ns connect $sliding $sink
set ftp [new Application/FTP]
$ftp attach-agent $sliding
$ns add-agent-trace $sliding tcp
$ns monitor-agent-trace $sliding
$sliding tracevar cwnd_
### CBR traffic between s2 and s4 (Red)
set cbr [$ns create-connection CBR $node_(s2) Null $node_(s4) 1]
$cbr set fid_ 1
proc finish {} {
global ns
$ns flush-trace
# puts "filtering..."
# exec tclsh ../bin/namfilter.tcl B4-sliding-color.nam
puts "running nam..."
exec nam B4-sliding-color.nam &
exit 0
}
### set operations
$ns at 0.1 "$ftp start"
$ns at 2.35 "$ftp stop"
$ns at 0.1 "$cbr start"
$ns at 2.35 "$cbr stop"
$ns at 3.0 "finish"
### add annotations
$ns at 0.0 "$ns trace-annotate \"Sliding Window with packet loss \""
$ns run
|