pm-delaybox.tcl
来自「一款用来进行网络模拟的软件」· TCL 代码 · 共 131 行
TCL
131 行
# pm-delaybox.tcl## Demonstrates the use of PackMime with DelayBox# useful constantsset CLIENT 0set SERVER 1set rate 32set run 2set stoptime 25# setup simulatorremove-all-packet-headers; # removes all packet headersadd-packet-header IP TCP; # adds TCP/IP headersset ns_ [new Simulator]; # instantiate the simulator$ns_ use-scheduler Heap; # use the Heap scheduler#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::# Setup network links and nodes#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::# build end nodesset client [$ns_ node]set server [$ns_ node]# build delayboxes and linksset db_(0) [$ns_ DelayBox]set db_(1) [$ns_ DelayBox]$ns_ duplex-link $db_(0) $db_(1) 10Mb 1ms DropTail$ns_ duplex-link $client $db_(0) 10Mb 1ms DropTail$ns_ duplex-link $server $db_(1) 10Mb 1ms DropTail# trace queuesTrace set show_tcphdr_ 1set db_qmonf [open "pm-delaybox-db.trq" w]$ns_ trace-queue $db_(0) $db_(1) $db_qmonf$ns_ trace-queue $db_(1) $db_(0) $db_qmonfset cli_qmonf [open "pm-delaybox-cli.trq" w]$ns_ trace-queue $client $db_(0) $cli_qmonf$ns_ trace-queue $db_(0) $client $cli_qmonfset srv_qmonf [open "pm-delaybox-srv.trq" w]$ns_ trace-queue $server $db_(1) $srv_qmonf$ns_ trace-queue $db_(1) $server $srv_qmonf# print drops$db_(0) set-debug 1$db_(1) set-debug 1#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::# Setup PackMime Traffic#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::# set rate per PackMimeset rate_ $rate# create PackMime and assign clients and server cloudsset pm_ [new PackMimeHTTP]$pm_ set-client $client$pm_ set-server $server$pm_ set-TCP Newreno# create RNGs (appropriate RNG seeds will be assigned automatically)for {set i 0} {$i < 5} {incr i} { set rng_($i) [new RNG] # advance the seeds for different experiment runs for {set j 1} {$j < $run} {incr j} { $rng_($i) next-substream }}# create random variablesset req_size [new RandomVariable/PackMimeHTTPFileSize $rate_ $CLIENT]set rsp_size [new RandomVariable/PackMimeHTTPFileSize $rate_ $SERVER]set client_delay [new RandomVariable/PackMimeHTTPXmit $rate_ $CLIENT]set server_delay [new RandomVariable/PackMimeHTTPXmit $rate_ $SERVER]set client_bw [new RandomVariable/Constant]; # bw 100 Mbps$client_bw set val_ 100set server_bw [new RandomVariable/Uniform]; # bw 1-20 Mbps$server_bw set min_ 1$server_bw set max_ 20set flow_arrive [new RandomVariable/PackMimeHTTPFlowArrive $rate_]set loss_rate [new RandomVariable/Uniform]; # loss at each DB$loss_rate set min_ 0$loss_rate set max_ 0.001set zero_loss_rate [new RandomVariable/Constant];$zero_loss_rate set val_ 0# assign RNGs to RandomVariables$req_size use-rng $rng_(0)$rsp_size use-rng $rng_(1)$client_delay use-rng $rng_(2)$server_delay use-rng $rng_(2)$client_bw use-rng $rng_(3)$server_bw use-rng $rng_(3)$flow_arrive use-rng $rng_(4)# setup rules for DelayBoxes$db_(0) add-rule [$client id] [$server id] $client_delay $loss_rate \ $client_bw$db_(0) add-rule [$server id] [$client id] $client_delay $zero_loss_rate \ $client_bw$db_(1) add-rule [$client id] [$server id] $server_delay $loss_rate \ $server_bw$db_(1) add-rule [$server id] [$client id] $server_delay $zero_loss_rate \ $server_bw# output delays to files$db_(0) set-delay-file "pm-delaybox-db0.out"$db_(1) set-delay-file "pm-delaybox-db1.out"# set PackMime variables$pm_ set-rate $rate_$pm_ set-req_size $req_size$pm_ set-rsp_size $rsp_size$pm_ set-flow_arrive $flow_arrive# record HTTP statistics$pm_ set-outfile "pm-delaybox.dat"#::::::::::::::::::# Schedule Traffic #::::::::::::::::::$ns_ at 0.0 "$pm_ start"$ns_ at $stoptime "$pm_ stop; $db_(0) close-delay-file; $db_(1) close-delay-file; exit 0"# start the simulation$ns_ run
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?