我有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。
请帮帮我! 谢谢!
答案 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")