[问题]exponential distribution in packet size

楼主: bcza245682 (阿弘)   2014-04-07 23:21:15
大家好
想请问有关将封包大小设为exponential distribution
我的第一个方法是在TCLscript中,使用一个Expontial Variable
code如下
set exp [new Agent/Traffic/Exponential]
...
set rng [new RNG]
set rng seed 101
set size [new RandomVariable/Exponential]
$size set avg_ 123
$size use_rng $rng
$exp set packetSize_ [expr 1.0*[$size value]]
...
结果当我去看trace files时
每个封包都是一样的大小都是416
但若是我直接把size(Exponentila Varialbe)的值印出来确认,似乎又是对的
是不能直接把这个参数丢给packetSize吗?
想另外请教我之前的另一个作法
我是修改expoo.cc,借由加入一个ExponentialRandomVariable
已下是我的另一个作法中expoo.cc的片段
class EXPOO_Traffic : public TrafficGenerator {
...
protected:
...
ExponentialRandomVariable expSize_;
...
}
int EXPOO_Traffic::command(int argc, const char*const* argv){
if(argc==3){
if (strcmp(argv[1], "use-rng") == 0) {
burstlen_.seed((char *)argv[2]);
Offtime_.seed((char *)argv[2]);
return (TCL_OK);
}
if (strcmp(argv[1], "use-rng-size") == 0){
expSize_.seed((char *)argv[2]);
return (TCL_OK);
}
}
return Application::command(argc,argv);
}
其实我google不到.seed的用法..
只是依样画葫芦的试试看,但每次都跑出错误msg= =
想请问.seed中该传入的参数是否是rng型态的变量
还有其它像是.setavg_(123.0)是可以指定指数型分配的平均值在123
但是我却又不知道该如何修改再expoo.cc中
让每次的封包大小都呈现指数型分配
另外像bind的用处也很让我困惑
我曾经想说不让程式bind到packetsize
就把bind("packetSize_",&size_)这行注解掉
然后重新make clean 、make ns2
最后跑出来的结果还是没改变 冏
问题很多也很杂.. 真的很对不起QQ
希望能有大大为新手解答,如果我问了愚蠢的问题请见谅QQ..

Links booklink

Contact Us: admin [ a t ] ucptt.com