Omnet++结果采集获取网络层正确消息数

Obtaining the number of correct messages in the network layer by the Omnet++ result collection

假设在一个有 25 个节点的无线网络中,我们有一个场景,其中每个节点中的一些节点根据路由协议(例如 AODV)向其他节点发送消息。 我们模拟这个网络。仿真完成后,如何通过Omnet++结果采集获取网络层正确报文数?定义了两个指标,sentPacketCount 和 receivedPacketCount。 正确消息是指目标地址字段是同一节点地址的节点接收到的消息。如果发生重传,接收端应该统计一次receivedPacketCount,实际上在目的节点接收到数据包时received Packet Count会增加。每发送一个数据包,sentPacketCount 都会增加。 如果一个节点有多个应用,则必须统计同一节点的所有应用产生的所有消息。

omnetpp.ini 文件的一部分用于节点:

*.hostA.numApps = 2
*.hostA.app[0].typename = "UdpBasicApp"
*.hostA.app[0].destAddresses = "hostB"
*.hostA.app[0].destPort = 5000
*.hostA.app[0].messageLength = 1000B
*.hostA.app[0].sendInterval = exponential(12ms)
*.hostA.app[0].packetName = "UDPData"

*.hostA.app[0].typename = "TcpBasicApp"
*.hostA.app[0].destAddresses = "hostC"
*.hostA.app[0].destPort = 5001
*.hostA.app[0].messageLength = 1024B
*.hostA.app[0].sendInterval = exponential(45ms)
*.hostA.app[0].packetName = "TCPData"

对于TcpBasicApp或任何其他TCP应用程序,数据包计数没有意义。 Tcp 应用程序有流,而不是数据包。即使您在一次写入操作中向 TCP 套接字发送 1000 字节,另一端也可能使用 3 次读取操作或 20 次...TCP 也保证数据包的传递,因此 成功的次数发送的数据包 = 成功接收的数据包数。所以字节数统计也无关紧要。

sent/received packets/bytes 的数量对 UDP 流量有意义。在 UDP 中有数据包的概念,并且没有保证交付。幸运的是 UdpBasicApp 默认收集这些统计数据。查看 packetReceivedpacketSent 统计数据。它收集数据包计数和总字节数。

您可能需要在所有应用上打开标量记录:

**.app[*].*.scalar-recording = true