(转)添加一个新的应用和代理(三)

时间:2021-02-05 03:01:24

这里给出测试的脚本:

#Author:Vivian
#File:test-mmapp.tcl
#Written:08-26-10


set ns [new Simulator]

set tracefd [open out.tr w]
$ns trace-all $tracefd

 


proc 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) 20
Queue/RED set thresh_ 5
Queue/RED set maxthresh_ 10
Queue/RED set q_weight_ 0.002
Queue/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包?这是我最不理解的地方。