⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test-drr.tcl

📁 对IEEE 802.11e里的分布式信道接入算法EDCA进行改进
💻 TCL
字号:
## Copyright (c) Xerox Corporation 1997. All rights reserved.#  # License is granted to copy, to use, and to make and to use derivative# works for research and evaluation purposes, provided that Xerox is# acknowledged in all documentation pertaining to any such copy or derivative# work. Xerox grants no other licenses expressed or implied. The Xerox trade# name should not be used in any advertising without its written permission.#  # XEROX CORPORATION MAKES NO REPRESENTATIONS CONCERNING EITHER THE# MERCHANTABILITY OF THIS SOFTWARE OR THE SUITABILITY OF THIS SOFTWARE# FOR ANY PARTICULAR PURPOSE.  The software is provided "as is" without# express or implied warranty of any kind.#  # These notices must be retained in any copies of any part of this software.## This file contributed by Sandeep Bajaj <bajaj@parc.xerox.com>, Mar 1997.## This script is a simple test for testing DRR functionality# This script creates a simple topology and places 6 CBR sources of different# rates. Finally it prints some stats to indicate the share of the bottleneck # link that each source gets.# The flows can be discriminated by each individual source or by each # node (using the setmask command line option) # Run this script as# ../../ns test-drr.tcl # or# ../../ns test-drr.tcl setmask # After running this script cat "out" to view the flow stats#default Mask parameterset MASK 0if { [lindex $argv 0] == "setmask" } {    set MASK 1    puts stderr "Ignoring port nos of sources"}set ns [new Simulator]# Create a simple four node topology:##	   n0#	     \ # 10Mb,0.01ms \   1Mb,0.01ms#	        n2 --------- n3# 10Mb,0.01ms /#	     /#	   n1set n0 [$ns node]set n1 [$ns node]set n2 [$ns node]set n3 [$ns node]set f [open out.tr w]#$ns trace-all $f$ns duplex-link $n0 $n1 1.0Mb 0.01ms DRR $ns duplex-link $n2 $n0 10.0Mb 0.01ms DRR $ns duplex-link $n3 $n0 10.0Mb 0.01ms DRR # trace the bottleneck queue $ns trace-queue $n0 $n1 $fSimulator instproc get-link { node1 node2 } {    $self instvar link_    set id1 [$node1 id]    set id2 [$node2 id]    return $link_($id1:$id2)}#Alternate way for setting parameters for the DRR queueset l [$ns get-link $n0 $n1]set q [$l queue]$q mask $MASK$q blimit 25000$q quantum 500$q buckets 7# create 6 cbr sources :#source 0 :set udp0 [new Agent/UDP]$ns attach-agent $n2 $udp0set cbr0 [new Application/Traffic/CBR]$cbr0 attach-agent $udp0$cbr0 set packetSize_ 250$cbr0 set interval_ 20ms$cbr0 set random_ 1#source 1 :set udp1 [new Agent/UDP]$ns attach-agent $n2 $udp1set cbr1 [new Application/Traffic/CBR]$cbr1 attach-agent $udp1$cbr1 set packetSize_ 250$cbr1 set interval_ 4ms$cbr1 set random_ 1#source 2:set udp2 [new Agent/UDP]$ns attach-agent $n2 $udp2set cbr2 [new Application/Traffic/CBR]$cbr2 attach-agent $udp2$cbr2 set packetSize_ 250$cbr2 set interval_ 2.5ms$cbr2 set random_ 1#source 3 :set udp3 [new Agent/UDP]$ns attach-agent $n3 $udp3set cbr3 [new Application/Traffic/CBR]$cbr3 attach-agent $udp3$cbr3 set packetSize_ 250$cbr3 set interval_ 2.5ms$cbr3 set random_ 1#source 4set udp4 [new Agent/UDP]$ns attach-agent $n3 $udp4set cbr4 [new Application/Traffic/CBR]$cbr4 attach-agent $udp4$cbr4 set packetSize_ 250$cbr4 set interval_ 4ms$cbr4 set random_ 1#source 5set udp5 [new Agent/UDP]$ns attach-agent $n3 $udp5set cbr5 [new Application/Traffic/CBR]$cbr5 attach-agent $udp5$cbr5 set packetSize_ 250$cbr5 set interval_ 20ms$cbr5 set random_ 1# receiver 0 :set lm0 [new Agent/Null]$ns attach-agent $n1 $lm0$ns connect $udp0 $lm0$ns connect $udp1 $lm0$ns connect $udp2 $lm0$ns connect $udp3 $lm0$ns connect $udp4 $lm0$ns connect $udp5 $lm0$ns at 0.0 "$cbr0 start"$ns at 0.0  "$cbr1 start"$ns at 0.0  "$cbr2 start"$ns at 0.0  "$cbr3 start"$ns at 0.0  "$cbr4 start"$ns at 0.0  "$cbr5 start"$ns at 2.0 "$cbr0 stop"$ns at 2.0 "$cbr1 stop"$ns at 2.0  "$cbr2 stop"$ns at 2.0  "$cbr3 stop"$ns at 2.0  "$cbr4 stop"$ns at 2.0  "$cbr5 stop"$ns at 3.0 "close $f;finish"proc finish {} {    puts "processing output ..."    exec awk  { 	{	    n[$9]=$9; \	    if ($1=="-") r[$9]++; \	    if ($1=="+") s[$9]++; \	    if ($1=="d") d[$9]++ \	    }	END \	    { 		printf ("Flow#\t#sent\t#recvd\t#drop\t%%recvd\n"); \		    for (i in r) \		    printf ("%1.1f\t%d\t%d\t%d\t%f\n",n[i],s[i],r[i],d[i],r[i]*1.0/s[i])\		}    } out.tr > out    exec cat out &    exit 0}$ns run

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -