Omnetpp.ini-如何为主机参数创建循环

时间:2019-04-07 20:45:43

标签: omnet++

我有1000位主机。我需要模拟host [0]根据时间表通过PingApp与其他999台主机连接的情况。

例如

**.host[0]*.numPingApps = 999 #number of hosts

**.host[0]*.pingApp[*].typename = "PingApp"

**.host[0]*.pingApp[*].packetSize = 42 B

**.host[0]*.pingApp[*].sendInterval = 1 s

**.host[0]*.pingApp[*].srcAddr = "host[0]"

**.host[0]*.pingApp[0].destAddr = "host[1]" 

**.host[0]*.pingApp[0].startTime = 0 s

**.host[0]*.pingApp[0].stopTime = 5s

**.host[0]*.pingApp[1].destAddr = "host[2]" 

**.host[0]*.pingApp[1].startTime = 0.1 s

**.host[0]*.pingApp[1].stopTime = 5.1 s

**.host[0]*.pingApp[2].destAddr = "host[3]" 

**.host[0]*.pingApp[2].startTime = 0.2 s

**.host[0]*.pingApp[2].stopTime = 5.2 s

**.host[0]*.pingApp[3].destAddr = "host[4]" 

**.host[0]*.pingApp[3].startTime = 0.3 s

**.host[0]*.pingApp[3].stopTime = 5.3 s

以此类推...

如何创建用于自动更改参数的循环:startTime,stopTime,destAddr,pingApp的数量? 我需要在pingApp编号和destAddr每增加1点的每一步中将startTime和stopTime增加0.1s。

请帮帮我! 谢谢!

3 个答案:

答案 0 :(得分:0)

实际上,每个主机应只有一个Ping应用程序。要实现您的目标,您可以使用以下设置:

0      True
1      True
2      True
3      True
4      True
5      True
6      True
7      True
8      True
9      True
10     True
11     True
12     True
13     True
14    False
15    False
16    False
17    False
18    False
19    False
20     True
21     True
22     True
23     True
Name: 0, dtype: bool

**.host[*].numApps = 1 **.host[*].app[0].typename = "PingApp" **.host[999].app[0].destAddr = "host[0]" **.host[*].app[0].destAddr = "host[" + string(parentIndex()+1) + "]" **.host[*].app[0].startTime = replaceUnit (0.1*(parentIndex()), "s") **.host[*].app[0].stopTime = replaceUnit (5 + 0.1*(parentIndex()), "s") 返回主机向量中的主机索引,引用为OMNeT++ Manual。对于最后一个节点(即paretnIndex()),手动设置了host[999],因为destAddr将返回1000,并且没有parentIndex()+1
第二个NED函数host[1000]-用于add the unit得出计算结果。

答案 1 :(得分:0)

这是另一个准解决方案: 从PingApp的文档中:

  

string destAddr = default(“”); //目的地址,以空格分隔,“ *”表示整个模拟中的所有IPv4 / IPv6接口

     

指定'*'可以ping通所有已配置的网络接口   整个模拟。这对于检查主机是否可以访问所有其他主机很有用   网络中的主机(即路由表已正确设置)。

     

要指定发送到单个目标地址的ping请求的数量,   使用'count'参数。在指定数量的ping请求之后   发送到目标地址后,应用程序进入“ sleepDuration”睡眠状态。   睡眠计时器到期后,应用程序将切换到下一个目标   然后再次开始ping通。一旦所有目的地,应用程序便停止ping通   地址经过测试或模拟时间达到“ stopTime”。

因此,如果网络中只有这些主机,并且您不介意主机也可以ping通自身,destAddr="*"count=1

答案 2 :(得分:0)

I combined answers of @Rudi and @JerzyD. and got the workable solution:

**.host[0]*.numPingApps = 999
**.host[0]*.pingApp[*].typename = "PingApp"
**.host[0]*.pingApp[*].sendInterval = 1 s
**.host[0]*.pingApp[*].packetSize = 42 B
**.host[0]*.pingApp[0..998].destAddr = "host[" + string(index()+1) + "]"
**.host[0]*.pingApp[0..998].startTime = replaceUnit (0.1 * (index()), "s")
**.host[0]*.pingApp[0..998].stopTime = replaceUnit (5 + 0.1 * (index()), "s")