所以我正在尝试使用OMNeT ++,并创建了一个具有Fat Tree拓扑的DataCenter。现在我想观察UDP应用程序如何工作(如实际获得)条件。我使用了INET Framework并实现了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
提前致谢。
答案 0 :(得分:1)
经过大量的研究,思考和测试,我设法达到了我想要的目标。我做的是这个:
由于数据中心的整个拓扑结构是以这种方式构建的,因此它将减少路由器的负载并平衡流量,采取必要的措施,我创建了一个较小的网络。只是来自INET Framework的简单3节点(StandardHost)和从节点A到节点B到midHost的简单UDP应用程序(例如nodeA ---> midHost ---> nodeB)。在.ini文件中应该有几个命令,如:
**.ppp[*].queueType = "DropTailQueue"
**.ppp[*].queue.frameCapacity = 50
**.ppp[*].numOutputHooks = 1
**.ppp[*].outputHook[*].typename = "ThruputMeter"
这些命令管理节点之间的链接,可以根据需要进行缩放(可能调整帧容量或队列类型)。通过建立这个小型网络,您可以轻松地对其进行自定义并获取所需的指标。我希望我能帮助那些想要做同样事情的人,让他们感受一下如何去做。