Смоделируйте реальное приложение UDP и измерьте нагрузку трафика на OMNeT ++

Итак, я экспериментирую с OMNeT ++ и создал DataCenter с топологией Fat Tree. Теперь я хочу понаблюдать, как приложение UDP работает в (настолько реально, насколько возможно) условиях. Я использовал INET Framework и реализовал клиент-серверное приложение VideoStream.

Итак, мой вопрос таков:

Кажется, моя сеть работает отлично, а я не хочу. Я хочу измерить данные, полученные клиентом, и сравнить их с широковещательными данными сервера. Но даже несмотря на то, что я вложил много трафика в сеть (несколько приложений 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

Заранее спасибо.


person Dimitris V.    schedule 29.07.2015    source источник
comment
Не могли бы вы подробнее рассказать о своей модели? Какие типы дополнительных приложений UDP и TCP вы использовали? Как они были настроены? Как вы измеряли данные? Не могли бы вы добавить содержимое ned и ini файлов вашей модели?   -  person Jerzy D.    schedule 29.07.2015
comment
@Jerzy Все используемые приложения UDP и TCP взяты из INET Framework (версия 2.6). Я настраиваю несколько соединений UDP и TCP между модулями. Все модули являются либо простыми модулями, расширяющими StandardHost и Router, предоставляемыми INET Framework, либо составными модулями с этими частями. Теперь о данных: в тот момент, когда выполняется симуляция, я отслеживаю события в модуле о полученных пакетах и ​​проверяю векторные графики и гистограммы, которые OMNeT хранит сам по себе, и все, что я вижу, это одинаковые интервалы между полученными сообщениями. как интервалы отправлены.   -  person Dimitris V.    schedule 30.07.2015
comment
В каком модуле вы отслеживаете полученные пакеты - в модуле networkLayer или в модуле приложения tcp / udp? Вы используете статистику / скаляры / вектор из INET? Какие онсы? Честно говоря, без подробностей о конфигурации вашей модели и конфигурации вашего приложения TCP / UDP всем очень сложно вам помочь.   -  person Jerzy D.    schedule 30.07.2015
comment
@JerzyD. Я отредактировал сообщение, чтобы вы могли видеть используемую часть .ini   -  person Dimitris V.    schedule 30.07.2015
comment
@JerzyD. Да все это. У меня есть два коммуникационных хоста StandardHost, и на сетевых уровнях в модулях приложения udp я отслеживаю события полученных пакетов, а затем использую векторы, созданные для просмотра данных.   -  person Dimitris V.    schedule 03.08.2015


Ответы (1)


Итак, после долгих исследований, размышлений и тестов мне удалось достичь желаемой цели. Я сделал вот что:

Поскольку вся топология центра обработки данных построена таким образом, чтобы снизить нагрузку на маршрутизаторы и сбалансировать трафик, для принятия необходимых мер я создал меньшую сеть. Просто 3 простых узла (StandardHost) из INET Framework и простое приложение UDP, которое переходит от узла A к узлу B через midHost (например, nodeA ---> midHost ---> nodeB). В файле .ini должна быть пара команд вроде:

**.ppp[*].queueType = "DropTailQueue"
**.ppp[*].queue.frameCapacity = 50
**.ppp[*].numOutputHooks = 1
**.ppp[*].outputHook[*].typename = "ThruputMeter"

Эти команды управляют связями между узлами и могут масштабироваться в соответствии с потребностями пользователя (возможно, отрегулируйте емкость кадра или тип очереди). Создав эту небольшую сеть, вы можете легко настроить ее и использовать нужные вам показатели. Я надеюсь, что смогу помочь любому, кто хотел сделать то же самое, понять, как это сделать.

person Dimitris V.    schedule 05.08.2015