这里给出测试的脚本:
#Author:Vivian
#File:test-mmapp.tcl#Written:08-26-10 set ns [new Simulator]set tracefd [open out.tr w]
$ns trace-all $tracefdproc finish {} { global ns tracefd $ns flush-trace close $tracefd exit 0}
set node_(s1) [$ns node]
set node_(s2) [$ns node]set node_(r1) [$ns node]set node_(r2) [$ns node]set node_(s3) [$ns node]set node_(s4) [$ns node]$ns duplex-link $node_(s1) $node_(r1) 5Mb 3ms DropTail
$ns duplex-link $node_(s2) $node_(r1) 5Mb 3ms DropTail$ns duplex-link $node_(r1) $node_(r2) 2Mb 10ms RED$ns duplex-link $node_(r2) $node_(s3) 5Mb 3ms DropTail$ns duplex-link $node_(r2) $node_(s4) 5Mb 3ms DropTail#setup RED queue parameter
$ns queue-limit $node_(r1) $node_(r2) 20Queue/RED set thresh_ 5Queue/RED set maxthresh_ 10Queue/RED set q_weight_ 0.002Queue/RED set ave_ 0#setup a MM UDP connection
set udp_s [new Agent/UDP/UDPmm]set udp_r [new Agent/UDP/UDPmm]$ns attach-agent $node_(s1) $udp_s$ns attach-agent $node_(s3) $udp_r$ns connect $udp_s $udp_r$udp_s set packetSize_ 1000$udp_r set packetSize_ 1000$udp_s set fid_ 1$udp_r set fid_ 1#setup a MM Application
set mmapp_s [new Application/MmApp]set mmapp_r [new Application/MmApp]$mmapp_s attach-agent $udp_s$mmapp_r attach-agent $udp_r$mmapp_s set pktsize_ 1000$mmapp_s set random_ false#setup a TCP conneciton
set tcp [$ns create-connection TCP/Reno $node_(s2) TCPSink $node_(s4) 0]$tcp set window_ 15$tcp set fid_ 2#setup a FTP Application
set ftp [$tcp attach-source FTP]$ns at 0.0 "$ftp start"
$ns at 1.0 "$mmapp_s start"$ns at 10.0 "finish"$ns run
基本上,这个实验到这就结束了,不过,我考虑如何测试s1是变速的发送MM包。目前我想到的方法是利用测量吞吐量的方法测试。以0.1s为时间间隔,最后得到吞吐量的图如下:
由于我们速率的缺省值分别为0.3mb,0.6mb,0.9mb,1.2mb,1.5mb。拥塞减半,畅通加1。吞吐量较为符合这个特征。
当然这样的测试也不是充分的,因为mmapp这个应用的吞吐量的变化还与另外的FTP流有关系。不知道大家有没有什么更好的方法。最好能直接记录rate的改变。如果知道的朋友请告知。感谢!
PS:这个实验做了两天。算是我第一次接触稍微复杂点的源码吧。大家见笑了,当然我还有很多不理解的地方。
1、首先对于supportMM()和enableMM()这两个函数不理解。到底在哪里判断传送来到时MM包还是非MM包。亦或是这个应用直接规定传送的都是MM包?这是我最不理解的地方。