📄 test-suite-v1.tcl
字号:
ns run}proc test_renoA {} { global s1 s2 r1 k1 create_testnet [ns link $r1 $k1] set queue-limit 8 set tcp1 [ns_create_connection tcp-reno $s1 tcp-sink $k1 0] $tcp1 set window 28 set tcp2 [ns_create_connection tcp-reno $s1 tcp-sink $k1 1] $tcp2 set window 4 set tcp3 [ns_create_connection tcp-reno $s1 tcp-sink $k1 2] $tcp3 set window 4 set ftp1 [$tcp1 source ftp] ns at 1.0 "$ftp1 start" set ftp2 [$tcp2 source ftp] ns at 1.2 "$ftp2 start" $ftp2 set maxpkts 7 set ftp3 [$tcp3 source ftp] ns at 1.2 "$ftp3 start" $ftp3 set maxpkts 7 tcpDump $tcp1 1.0 tcpDump $tcp2 1.0 tcpDump $tcp3 1.0 # trace only the bottleneck link [ns link $r1 $k1] trace [openTrace 5.0 test_renoA] ns run}proc test_reno2 {} { global s1 s2 r1 k1 create_testnet [ns link $r1 $k1] set queue-limit 9 set tcp1 [ns_create_connection tcp-reno $s1 tcp-sink $k1 0] $tcp1 set window 50 set tcp2 [ns_create_connection tcp-reno $s2 tcp-sink $k1 1] $tcp2 set window 20 set ftp1 [$tcp1 source ftp] set ftp2 [$tcp2 source ftp] ns at 1.0 "$ftp1 start" ns at 1.0 "$ftp2 start" tcpDump $tcp1 1.0 # trace only the bottleneck link [ns link $r1 $k1] trace [openTrace 10.0 test_reno2] ns run}proc test_reno3 {} { global s1 s2 r1 k1 create_testnet [ns link $r1 $k1] set queue-limit 8 [ns link $k1 $r1] set queue-limit 8 set tcp1 [ns_create_connection tcp-reno $s1 tcp-sink $k1 0] $tcp1 set window 100 set tcp2 [ns_create_connection tcp-reno $s2 tcp-sink $k1 1] $tcp2 set window 16 set ftp1 [$tcp1 source ftp] set ftp2 [$tcp2 source ftp] ns at 1.0 "$ftp1 start" ns at 0.5 "$ftp2 start" tcpDump $tcp1 1.0 # trace only the bottleneck link [ns link $r1 $k1] trace [openTrace 8.0 test_reno3] ns run}proc test_reno4 {} { global s1 s2 r1 r2 s3 s4 create_testnet2 [ns link $r1 $r2] set queue-limit 29 set tcp1 [ns_create_connection tcp-reno $s1 tcp-sink-da $r2 0] $tcp1 set window 80 $tcp1 set maxcwnd 40 set ftp1 [$tcp1 source ftp] ns at 0.0 "$ftp1 start" tcpDump $tcp1 1.0 # trace only the bottleneck link [ns link $s1 $r1] trace [openTrace 2.0 test_reno4] ns run}proc test_reno4a {} { global s1 s2 r1 r2 s3 s4 create_testnet2 [ns link $r1 $r2] set queue-limit 29 set tcp1 [ns_create_connection tcp-reno $s1 tcp-sink-da $r2 0] $tcp1 set window 40 $tcp1 set maxcwnd 40 set ftp1 [$tcp1 source ftp] ns at 0.0 "$ftp1 start" tcpDump $tcp1 1.0 # trace only the bottleneck link [ns link $s1 $r1] trace [openTrace 2.0 test_reno4] ns run}proc test_reno5 {} { global s1 s2 r1 k1 create_testnet [ns link $r1 $k1] set queue-limit 9 set tcp1 [ns_create_connection tcp-reno $s1 tcp-sink $k1 0] $tcp1 set window 50 $tcp1 set bug-fix false set tcp2 [ns_create_connection tcp-reno $s2 tcp-sink $k1 1] $tcp2 set window 20 $tcp2 set bug-fix false set ftp1 [$tcp1 source ftp] set ftp2 [$tcp2 source ftp] ns at 1.0 "$ftp1 start" ns at 1.0 "$ftp2 start" tcpDump $tcp1 1.0 # trace only the bottleneck link [ns link $r1 $k1] trace [openTrace 10.0 test_reno5] ns run}proc test_telnet {} { global s1 s2 r1 k1 create_testnet [ns link $r1 $k1] set queue-limit 8 [ns link $k1 $r1] set queue-limit 8 set tcp1 [ns_create_connection tcp-reno $s1 tcp-sink $k1 0] set tcp2 [ns_create_connection tcp-reno $s2 tcp-sink $k1 1] set tcp3 [ns_create_connection tcp-reno $s2 tcp-sink $k1 2] set telnet1 [$tcp1 source telnet] ; $telnet1 set interval 1 set telnet2 [$tcp2 source telnet] ; $telnet2 set interval 0 # Interval 0 designates the tcplib telnet interarrival distribution set telnet3 [$tcp3 source telnet] ; $telnet3 set interval 0 ns at 0.0 "$telnet1 start" ns at 0.0 "$telnet2 start" ns at 0.0 "$telnet3 start" tcpDump $tcp1 5.0 # trace only the bottleneck link [ns link $r1 $k1] trace [openTrace 50.0 test_telnet] # use a different seed each time puts seed=[ns random 0] ns run}proc test_delayed {} { global s1 s2 r1 k1 create_testnet set tcp1 [ns_create_connection tcp $s1 tcp-sink-da $k1 0] $tcp1 set window 50 # lookup up the sink and set it's delay interval [$k1 agent [$tcp1 dst-port]] set interval 100ms set ftp1 [$tcp1 source ftp] ns at 1.0 "$ftp1 start" tcpDump $tcp1 1.0 # trace only the bottleneck link [ns link $r1 $k1] trace [openTrace 4.0 test_delayed] ns run}proc test_phase {} { global s1 s2 r1 k1 create_testnet [ns link $s2 $r1] set delay 3ms [ns link $r1 $s2] set delay 3ms [ns link $r1 $k1] set queue-limit 16 [ns link $k1 $r1] set queue-limit 100 set tcp1 [ns_create_connection tcp $s1 tcp-sink $k1 0] $tcp1 set window 32 set tcp2 [ns_create_connection tcp $s2 tcp-sink $k1 1] $tcp2 set window 32 set ftp1 [$tcp1 source ftp] set ftp2 [$tcp2 source ftp] ns at 5.0 "$ftp1 start" ns at 1.0 "$ftp2 start" tcpDump $tcp1 5.0 # trace only the bottleneck link [ns link $r1 $k1] trace [openTrace 25.0 test_phase] ns run}proc test_phase1 {} { global s1 s2 r1 k1 create_testnet [ns link $s2 $r1] set delay 9.5ms [ns link $r1 $s2] set delay 9.5ms [ns link $r1 $k1] set queue-limit 16 [ns link $k1 $r1] set queue-limit 100 set tcp1 [ns_create_connection tcp $s1 tcp-sink $k1 0] $tcp1 set window 32 set tcp2 [ns_create_connection tcp $s2 tcp-sink $k1 1] $tcp2 set window 32 set ftp1 [$tcp1 source ftp] set ftp2 [$tcp2 source ftp] ns at 5.0 "$ftp1 start" ns at 1.0 "$ftp2 start" tcpDump $tcp1 5.0 # trace only the bottleneck link [ns link $r1 $k1] trace [openTrace 25.0 test_phase1] ns run}proc test_phase2 {} { global s1 s2 r1 k1 create_testnet [ns link $s2 $r1] set delay 3ms [ns link $r1 $s2] set delay 3ms [ns link $r1 $k1] set queue-limit 16 [ns link $k1 $r1] set queue-limit 100 set tcp1 [ns_create_connection tcp $s1 tcp-sink $k1 0] $tcp1 set window 32 $tcp1 set overhead 0.01 set tcp2 [ns_create_connection tcp $s2 tcp-sink $k1 1] $tcp2 set window 32 $tcp2 set overhead 0.01 set ftp1 [$tcp1 source ftp] set ftp2 [$tcp2 source ftp] ns at 5.0 "$ftp1 start" ns at 1.0 "$ftp2 start" tcpDump $tcp1 5.0 # trace only the bottleneck link [ns link $r1 $k1] trace [openTrace 25.0 test_phase2] ns run}proc test_timers {} { global s1 s2 r1 k1 create_testnet [ns link $r1 $k1] set queue-limit 2 [ns link $k1 $r1] set queue-limit 100 set tcp1 [ns_create_connection tcp $s1 tcp-sink-da $k1 0] $tcp1 set window 4 # lookup up the sink and set it's delay interval [$k1 agent [$tcp1 dst-port]] set interval 100ms set tcp2 [ns_create_connection tcp $s2 tcp-sink-da $k1 1] $tcp2 set window 4 # lookup up the sink and set it's delay interval [$k1 agent [$tcp2 dst-port]] set interval 100ms set ftp1 [$tcp1 source ftp] set ftp2 [$tcp2 source ftp] ns at 1.0 "$ftp1 start" ns at 1.3225 "$ftp2 start" tcpDump $tcp1 5.0 # trace only the bottleneck link [ns link $r1 $k1] trace [openTrace 10.0 test_timers] ns run}proc printpkts { label tcp } { puts "tcp $label total_packets_acked [$tcp get ack]"}proc printdrops { label node1 node2} { set link [ns link $node1 $node2] puts "class: $label per-link total_drops [$link stat $label drops]" puts "class: $label per-link total_packets [$link stat $label packets]" puts "class: $label per-link total_bytes [$link stat $label bytes]"}proc printstop { stoptime } { puts "stop-time $stoptime"}proc test_stats {} { global s1 s2 r1 k1 create_testnet set stoptime 10.1 [ns link $s2 $r1] set delay 200ms [ns link $r1 $s2] set delay 200ms [ns link $r1 $k1] set queue-limit 10 [ns link $k1 $r1] set queue-limit 10 set tcp1 [ns_create_connection tcp $s1 tcp-sink $k1 0] $tcp1 set window 30 set tcp2 [ns_create_connection tcp $s2 tcp-sink $k1 1] $tcp2 set window 30 set ftp1 [$tcp1 source ftp] set ftp2 [$tcp2 source ftp] ns at 1.0 "$ftp1 start" ns at 1.0 "$ftp2 start" tcpDumpAll $tcp1 5.0 tcp1 tcpDumpAll $tcp2 5.0 tcp2 ns at $stoptime "printstop $stoptime" ns at $stoptime "printpkts 0 $tcp1" ns at $stoptime "printpkts 1 $tcp2" ns at $stoptime "printdrops 0 $r1 $k1" ns at $stoptime "printdrops 1 $r1 $k1" # trace only the bottleneck link [ns link $r1 $k1] trace [openTrace $stoptime test_stats] ns run}if { $argc != 1 } { puts stderr {usage: ns test-suite.tcl [ tahoe1 tahoe2 ... reno reno2 ... ]} exit 1}if { "[info procs test_$argv]" != "test_$argv" } { puts stderr "test-suite.tcl: no such test: $argv"}test_$argv
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -