【发布时间】:2015-10-20 02:49:17
【问题描述】:
所以我正在试验 OMNeT++,并创建了一个具有 Fat Tree 拓扑的数据中心。现在我想观察一个 UDP 应用程序是如何在(真实的)条件下工作的。我使用了 INET 框架并实现了 VideoStream Client-Server 应用程序。
所以我的问题是:
我的网络似乎运行良好,但我不想这样做。我想测量客户端接收到的数据率并将其与服务器的广播数据率进行比较。但是,即使我将大量流量放入网络(几个 UDP 和 TCP 应用程序),接收到的数据速率与广播的数据速率完全相同,我猜测在实际条件下,这种流量负载预计会在如此高度动态的环境中发生变化。那么如何在 OMNeT++ 上实现正确的条件来模拟真实的通信(可能存在丢包和排队时间等),以便测量这些流量负载?
有使用的.ini文件:
[Config UDPStreamMultiple]
**.Pod[2].racks[1].servers[1].vms[2].numUdpApps = 1
**.Pod[2].racks[1].servers[1].vms[2].udpApp[0].typename = "UDPVideoStreamSvr"
**.Pod[2].racks[1].servers[1].vms[2].udpApp[0].localPort = 1000
**.Pod[2].racks[1].servers[1].vms[2].udpApp[0].sendInterval = 1s
**.Pod[2].racks[1].servers[1].vms[2].udpApp[0].packetLen = 20480B
**.Pod[2].racks[1].servers[1].vms[2].udpApp[0].videoSize = 512000B
**.Pod[3].racks[0].servers[0].vms[0].numUdpApps = 1
**.Pod[3].racks[0].servers[0].vms[0].udpApp[0].typename = "UDPVideoStreamSvr"
**.Pod[3].racks[0].servers[0].vms[0].udpApp[0].localPort = 1000
**.Pod[3].racks[0].servers[0].vms[0].udpApp[0].sendInterval = 1s
**.Pod[3].racks[0].servers[0].vms[0].udpApp[0].packetLen = 2048B
**.Pod[3].racks[0].servers[0].vms[0].udpApp[0].videoSize = 51200B
**.Pod[0].racks[0].servers[0].vms[0].numUdpApps = 1
**.Pod[0].racks[0].servers[0].vms[0].udpApp[0].typename = "UDPVideoStreamCli"
**.Pod[0].racks[0].servers[0].vms[0].udpApp[0].serverAddress = "20.0.0.47"
**.Pod[0].racks[0].servers[0].vms[0].udpApp[0].serverPort = 1000
**.Pod[1].racks[0].servers[0].vms[1].numUdpApps = 1
**.Pod[1].racks[0].servers[0].vms[1].udpApp[0].typename = "UDPVideoStreamCli"
**.Pod[1].racks[0].servers[0].vms[1].udpApp[0].serverAddress = "20.0.0.49"
**.Pod[1].racks[0].servers[0].vms[1].udpApp[0].serverPort = 1000
**.Pod[2].racks[0].servers[0].vms[1].numUdpApps = 1
**.Pod[2].racks[0].servers[0].vms[1].udpApp[0].typename = "UDPVideoStreamCli"
**.Pod[2].racks[0].servers[0].vms[1].udpApp[0].serverAddress = "20.0.0.49"
**.Pod[2].racks[0].servers[0].vms[1].udpApp[0].serverPort = 1000
**.Pod[2].racks[1].servers[0].vms[1].numUdpApps = 1
**.Pod[2].racks[1].servers[0].vms[1].udpApp[0].typename = "UDPVideoStreamCli"
**.Pod[2].racks[1].servers[0].vms[1].udpApp[0].serverAddress = "20.0.0.49"
**.Pod[2].racks[1].servers[0].vms[1].udpApp[0].serverPort = 1000
提前致谢。
【问题讨论】:
-
您能否提供有关您的模型的更多详细信息?您使用了哪种类型的附加 UDP 和 TCP 应用程序?它们是如何配置的?你是如何测量数据率的?你能把你模型的
ned和ini文件的内容加进去吗? -
@Jerzy 所有使用的 UDP 和 TCP 应用程序都来自 INET Framework(2.6 版)。我在模块之间配置了多个 UDP 和 TCP 连接。所有的模块要么是扩展 INET Framework 提供的 StandardHost 和 Router 的简单模块,要么是这些部分的复合模块。现在关于数据速率,在模拟运行的那一刻,我在一个模块上监视有关接收到的数据包的事件,并检查 OMNeT 自己保存的矢量图和直方图,我所看到的只是接收到的消息之间的间隔是相同的作为发送的间隔。
-
您在哪个模块中监控收到的数据包 - 在 networkLayer 模块或 tcp/udp 应用程序模块中?你使用 INET 的统计/标量/向量吗?哪一个?老实说,如果没有关于模型配置和 TCP/UDP 应用程序配置的详细信息,每个人都很难为您提供帮助。
-
@JerzyD。我编辑了帖子,以便您可以看到它使用的 .ini 部分
-
@JerzyD。是的,所有这些。我有两个 StandardHost 通信,在 udp 应用程序模块的网络层中,我正在监视接收到的包的事件,然后我使用创建的向量来查看数据速率。
标签: c++ network-programming udp simulation omnet++