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

Omnet++ Omnetpp.ini-如何为主机参数创建循环,omnet++,Omnet++,我有1000个主人。我需要模拟主机[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[

我有1000个主人。我需要模拟主机[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 number和destAddr每增加一点时,将startTime和stopTime增加0.1s

请帮帮我!
谢谢大家!

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

**.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")
paretnIndex()
以主机向量reference返回主机的索引。对于最后一个节点(即
host[999]
),手动设置
destAddr
,因为
parentIndex()+1
将返回1000,并且没有
host[1000]


第二个NED函数-
replaceUnit()
-用于计算结果

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

**.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")
paretnIndex()
以主机向量reference返回主机的索引。对于最后一个节点(即
host[999]
),手动设置
destAddr
,因为
parentIndex()+1
将返回1000,并且没有
host[1000]


第二个NED函数-
replaceUnit()
-用于计算结果

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

字符串destAddr=default(“”;//目标地址,用空格分隔,“*”表示整个模拟中的所有IPv4/IPv6接口

指定“*”允许ping中所有配置的网络接口 整个模拟。这有助于检查主机是否可以访问所有其他主机 网络中的主机(即路由表设置正确)

要指定发送到单个目标地址的ping请求数, 使用“计数”参数。在指定的ping请求数之后 发送到目标地址后,应用程序将进入睡眠状态“睡眠持续时间”。 一旦睡眠计时器过期,应用程序将切换到下一个目标 然后又开始发出砰砰声。应用程序在所有目标完成后停止ping 已测试地址或模拟时间达到“停止时间”


因此,如果您在网络中只有这些主机,并且您不介意在开始时主机本身也会ping,
destAddr=“*”
count=1

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

字符串destAddr=default(“”;//目标地址,用空格分隔,“*”表示整个模拟中的所有IPv4/IPv6接口

指定“*”允许ping中所有配置的网络接口 整个模拟。这有助于检查主机是否可以访问所有其他主机 网络中的主机(即路由表设置正确)

要指定发送到单个目标地址的ping请求数, 使用“计数”参数。在指定的ping请求数之后 发送到目标地址后,应用程序将进入睡眠状态“睡眠持续时间”。 一旦睡眠计时器过期,应用程序将切换到下一个目标 然后又开始发出砰砰声。应用程序在所有目标完成后停止ping 已测试地址或模拟时间达到“停止时间”


因此,如果您在网络中只有这些主机,并且您不介意在开始时主机本身也会ping,
destAddr=“*”
count=1
我将@Rudi和@JerzyD的答案结合起来。并得到了可行的解决方案:

**.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")

我综合了@Rudi和@JerzyD的答案。并得到了可行的解决方案:

**.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")

请注意,此解决方案在发送主机之间创建了一种环形拓扑,而OP询问主机[0]是唯一发送节点的位置,并且它依次ping所有其他主机。在运行时更改目标地址不受ping应用程序的支持,而不需要对PingApp的C++代码进行代码更改,我看不出有什么方法能真正创建具有不同参数的999个ping应用程序。您应该使用
index
host[0],而不是使用
parentIndex()
,应该指定numApps=999
。这是对资源的浪费…@鲁迪:是的,你是对的。我没有仔细阅读这个问题。@Rudi:我结合了你的答案,得到了一个可行的解决方案。非常感谢。如果你想的话就检查一下。@JerzyD。我综合了你的答案,找到了一个可行的解决办法。非常感谢。如果需要,请检查它。请注意,此解决方案在发送主机之间创建了一种环形拓扑,而OP询问主机[0]是唯一的发送节点,并且它会依次ping所有其他主机。在运行时更改目标地址不受ping应用程序的支持,而不需要对PingApp的C++代码进行代码更改,我看不出有什么方法能真正创建具有不同参数的999个ping应用程序。您应该使用
index
host[0],而不是使用
parentIndex()
,应该指定numApps=999
。这是对资源的浪费…@鲁迪:是的,你是对的。我没有仔细地读这个问题。@Rudi:我把你的答案组合起来,得到了一个可行的解决方案。非常感谢。如果你想的话就检查一下。@JerzyD。我综合了你的答案,找到了一个可行的解决办法。非常感谢。如果这是正确的答案,我建议将其正确格式化为代码块,并将此代码块标记为正确的代码块,以便其他用户将来也能看到。允许自己回答,但您必须等待几天才能标记自己的答案。@Rudi谢谢!如果这是正确的答案,我建议将其正确格式化为代码块,并将此代码块标记为正确的代码块,以便其他用户在