【OMNeT++】ALOHA协议仿真中的channelUtilization

这个数据的定义在Server.ned源代码中:

 @statistic[channelUtilization](source="timeavg(receive)"; record=last; interpolationmode=linear; title="channel utilization");

以下为我对这句话的理解:(每个参数的准确定义见参考文献的 【4.15.2.2 Property Keys】小节及其之后的几小节)
source的意思是数据源,timeavg的意思是对括号中的内容求时间平均
record的意思是记录方式,这里是last,表示最新的值。其他的记录方式还有vector?—向量,mean----求平均,等等
interpolationmode的翻译是插值模式,这里的话就是插值模式为线性,不太理解具体的意思
title顾名思义,用来设置标题

其中它的数据源—receive的定义也在Server.ned中:

@signal[receive](type="long");  // for successful receptions (non-collisions): 1 at the start of the reception, 0 at the end of the reception

注释翻译过来就是对于成功传输(无碰撞)来说,receive这个值在开始接收时置为1,接收完成后置为0。

在server.cc中使用receive这个统计数据时,所有相关代码如下:

void Server::initialize()
{
	...
    receiveBeginSignal = registerSignal("receiveBegin");
    receiveSignal = registerSignal("receive");
    collisionSignal = registerSignal("collision");
    collisionLengthSignal = registerSignal("collisionLength");

    emit(receiveSignal, 0L);
    emit(receiveBeginSignal, 0L);
    ...
void Server::handleMessage(cMessage *msg)
{
    if (msg == endRxEvent) {
        EV << "reception finished\n";
        channelBusy = false;
        emit(channelStateSignal, IDLE);

        // update statistics
        simtime_t dt = simTime() - recvStartTime;
        if (currentCollisionNumFrames == 0) {
            // start of reception at recvStartTime
            cTimestampedValue tmp(recvStartTime, 1l);
            emit(receiveSignal, &tmp);
            // end of reception now
            emit(receiveSignal, 0);
        }
		...

可以看到,receive确实只与成功传输时有关。在成功的收到一个帧后,将在发送开始的时候将receive置为1,在发送结束时将receive置为0。
这种知道传输结果后的“时光倒流”再将receive在开始传输时刻置为1的做法是通过这两句话实现的:

cTimestampedValue tmp(recvStartTime, 1l);
emit(receiveSignal, &tmp);

cTimestampedValue类专门用于这种情况(参考文献【4.15.5 Emitting Signals】节):
在这里插入图片描述

综上,ALOHA协议仿真中的channelUtilization = 传输成功的帧所用时间 ÷ 仿真总时间

在这里插入图片描述

如图,信道利用率 = ( t1 + t2) / t0

参考:https://doc.omnetpp.org/omnetpp/manual/#sec:simple-modules:signals【4.15 Signal-Based Statistics Recording、4.15.5 Emitting Signals】

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值