微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过Omnet++结果集合获取网络层正确报文数

如何解决通过Omnet++结果集合获取网络层正确报文数

假设在具有 25 个节点的无线网络中,我们有一个场景,其中每个节点中的一些节点根据路由协议(例如 AODV)向其他一些节点发送消息。 我们模拟这个网络。模拟完成后,如何通过Omnet++结果集合获取网络层正确报文数?定义了两个度量,sentPacketCount 和 receivedPacketCount。 通过正确的消息,我的意思是一个节点收到的消息,其目标地址字段是同一节点的地址。如果发生重传,接收端应该对receivePacketCount 进行一次计数,实际上当目的节点接收到数据包时,receive 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 也保证数据包的传递,所以成功发送的数据包数= 成功接收数据包的数量。所以字节数统计也无关紧要。

发送/接收的数据包/字节数对 UDP 流量有意义。在 UDP 中有一个数据包的概念,并且没有保证的交付。幸运的是,UdpBasicApp 默认会收集这些统计信息。查看 packetReceivedpacketSent 统计信息。它收集数据包计数和总字节数。

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。