【问题标题】:omnet simulation of token bucket令牌桶全网模拟
【发布时间】:2014-04-30 12:42:05
【问题描述】:

我正在开发 omnet++ 上的仿真模型。基本上我的工作是开发与 LTE 相关的东西,但首先我需要开发一个简单的模型,该模型从源获取数据包并将其存储在队列中一段时间​​并交付它要下沉了……

我已经开发了这个模型,它对我来说很好用....

现在我需要在队列和接收器之间放置令牌桶计量器......以处理突发事件并将令牌计量器中的拒绝数据包发送回队列......类似于第二张附加图像......我已经采取了这个OMNET simuLTE 包中的 tokenbucketmeter...

当我模拟这个时,它会显示类似的错误

Quote: cannot cast (queueing::Job *)net.tokenBucketMeter.job-1 to type 'cPacket *' 

我不知道问题到底出在哪里,可能是正在使用的源正在创建作业,而 tokenbucket 仪表只接受数据包。如果是这样,那么我应该使用哪种类型的源?

你能澄清一下吗?会很感激的

【问题讨论】:

    标签: omnet++


    【解决方案1】:

    我现在也在一个项目中使用 OMNeT++。在之前只接触过一些 C99 的情况下学习使用 OMNeT++ 可能有点令人沮丧。

    通过检查您用作项目基础的演示项目 - 看起来 JobcPacket 不共享除 cObject 以外的任何有用类型,所以我不会尝试像这样投射。

    查看/queueinglib 项目处理作业中的PassiveQueue.cc - 一切都作为cMessage 传递并使用内置演员表进行转换:

    cMessage msg (comes in from method signature)
    
    Job *job = check_and_cast<Job *>(msg);
    

    您要使用的 cPackets 是此链接中显示的继承层次结构中 cMessage 的子代:

    http://www.omnetpp.org/doc/omnetpp/api/index.html

    我自己没有使用cPackets,但考虑到协议的工作方式,您似乎可以将消息转换为一个或多个数据包。

    【讨论】:

    • 是的,这是正确的..cPacket 是 cMessage 的派生类..但是 omnet 中有许多可用的组件仅适用于 cPacktes..因此在从 cMessage 到 cPacket 的类型转换方面面临困难。 .当我们尝试将此类组件与生成 cMessage 的源连接时,它们会生成 typecasr 错误..必须尝试从 cMessage 到 cPacket 的 trypecast ..否则你知道任何可以产生 cPackets 的源吗??
    • 在演示项目中搜索表明存在与上述相同的库转换为您需要的转换:cPacket *myPacket = check_and_cast&lt;cPacket *&gt;(msg); 参见示例:samples\routing\node\L2Queue.cc Line:82 你有任何示例代码可以在你的问题中发布吗?
    猜你喜欢
    • 1970-01-01
    • 2012-01-18
    • 2020-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多