2016-06-13 26 views
0

我将Omnet ++仿真内核嵌入到我的应用程序中,我正在使用inet框架进行仿真。我遇到的问题是,我需要在女巫时间估计一个数据包将要到达目的地。在Omnet ++中获取数据包的ETA

所以更具体:有两个EtherHost,命名为H0和H1(inet.node.ethernet.EtherHost)和一个以太命名开关(inet.node.ethernet.EtherSwitch),三个连接这样的:

H0 < - “ç< - >切换< - ”ç< - > H1

C表示DatarateChannel与数据率= 100Mbps的和延迟=可达0.1us。当H0中的EtherAppCli发送EtherAppReq到H1时,我需要在传送所述分组期间在EterAppReq分组上获得ETA。

我的第一个想法是总是得到EtherAppReq的封装包,这是在EtherLLC和EtherMAC模块中添加的,但这并不像我想的那么简单..我需要将所有封装函数层总是得到一个指向封装包的指针,还是我错了?

或者还有另一种方法来获得数据包的中间传输的ETA?

编辑:对于我的目的,我只需要在下一模块的到达时间,因此,如果该数据包是H0的MAC模块中我需要在MAC层的到达时间的开关(所以没有多模块酒花)。就像你有一个cMessage一样,你可以在消息上调用getArrivalTime(),并且如果我没有弄错,可以估计到达时间。

非常感谢您的帮助提前!

回答

0

事先不可能获得分组的ETA。
数据包到达时间取决于很多因素(如在真实网络中),例如:主机和交换机队列中的当前数据包数量,交换机处理时间,交换机CPU数量,主机MAC层处理时间等因此在发送数据包时主机和模拟环境都不知道该数据包何时到达目的主机。所以我们准备一个模型并进行模拟以便这次测量并了解一些因素如何影响它。顺便说一句:你的数字中没有H1。

+0

感谢您的回答!我编辑了我原来的问题,我只需要到达下一个模块的到达时间,而不是整个行程的ETA。对不起,没有指定。 – phyratokar