写在最前
前一篇博客谢了关于ALOHA的一些原理,现在看OMNeT++这个网络仿真软件的sample是如何实现ALOHA网络的。
代码
Server.ned
simple Server
{
parameters:
@display("i=device/antennatower_l");
@signal[receiveBegin](type="long"); // increases with each new frame arriving to the server and drops to 0 if the channel becomes finally idle
@signal[receive](type="long"); // for successful receptions (non-collisions): 1 at the start of the reception, 0 at the end of the reception
@signal[collision](type="long"); // the number of collided frames at the beginning of the collision period
@signal[collisionLength](type="simtime_t"); // the length of the last collision period at the end of the collision period
@signal[channelState](type="long");
//source
@statistic[serverChannelState](source="channelState";title="Channel state";enum="IDLE=0,TRANSMISSION=1,COLLISION=2";record=vector);
@statistic[receiveBegin](source="receiveBegin"; record=vector?; interpolationmode=sample-hold; title="receive begin");
@statistic[channelUtilization](source="timeavg(receive)"; record=last; interpolationmode=linear; title="channel utilization");
@statistic[collisionMultiplicity](source=collision; record=vector?,histogram; title="collision multiplicity");
@statistic[collisionLength](record=vector?,histogram,mean,sum,max; title="collision length");
@statistic[receivedFrames](source="sum(receive)"; record=last; title="received frames");
@statistic[collidedFrames](source="sum(collision)"; record=last; title="collided frames");
gates:
input in @directIn;
}
.ned文件一般是用于OMNeT中模块与仿真内核的配置,里面一般包含该模块的parameter,gates,connections等等。其中这里Server.ned文件中,开头定义了一些signal,主要是配合后面的statistic来使用,用于统计仿真过程中需要的统计指标(如时延,信道利用率等)。还定义了一个输入