Нет средств обнаружения столкновений на прикладном уровне? Хм

Учитывая степень бесполезности, которую можно было ожидать от обоих руководств.

https://inet.omnetpp.org/docs/tutorials/wireless/doc/step5.html

и справочные страницы:

https://doc.omnetpp.org/omnetpp/manual/#sec:ned-lang:warmup:network

как можно смоделировать столкновение на прикладном уровне?

Зачем закрывать вопрос? Понятно, что понятно, о чем спрашивают. Лол, даже ответили.

Sebi 13.12.2020 02:17

Его проголосовали за закрытие, вероятно, потому, что он содержал два несвязанных вопроса. Кроме того, название немного вводит в заблуждение, потому что вы имеете в виду «обнаружение столкновения», а в последующем обсуждении выясняется, что в вашей симуляции никогда не бывает столкновений. То, что вы ищете, - это определить, вышел ли узел «за пределы диапазона» приемника. На прикладном уровне (и во многих протоколах маршрутизации, где необходимо обнаруживать обрыв связи) это делается путем периодической отправки сообщения, а на принимающей стороне с помощью таймера, чтобы увидеть, не получили ли вы что-то в течение этого периода таймера.

Rudi 15.12.2020 13:52
Как создать страницу входа в систему с помощью HTML с использованием CSS
Как создать страницу входа в систему с помощью HTML с использованием CSS
Создание страницы входа в систему является важной частью создания веб-сайта или приложения, требующего аутентификации пользователя. Простую страницу...
4
2
107
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы не нашли туториал о том, как смоделировать столкновение на прикладном уровне просто потому, что на прикладном уровне столкновений не происходит.
Как правило, коллизия может произойти, когда к какой-либо среде (или слою) не могут получить одновременный доступ многие элементы. Однако для прикладного уровня такого ограничения нет. Приложение может отправить пакет в любое время, упакованный пакет будет обработан транспортным уровнем (TCP или UDP), а затем отправлен на сетевой уровень. Сетевой уровень имеет буфер, поэтому в ситуации, когда два и более приложения отправляют пакеты одновременно, конфликта не возникнет.

Согласно деталям, представленным в вашем вопросе:

  • как hostSink может проверить, отправляет ли еще hostA или hostB пакеты [первоначально: сигналы]? Ответ: hostSink не может определить, отправляет ли hostA пакеты. Моделирование отражает поведение реальной сети, и в реальной сети узел не знает, отправляет ли другой узел пакеты.
  • Как «проходит» время в симуляции? Ответ: OMNeT++ — это симулятор дискретных событий, и в соответствии с Руководством по моделированию:

Дискретно-событийная система — это система, в которой изменения состояния (события) происходят в дискретные моменты времени, а события происходят за нулевое время.

Это означает, что симуляция внутренне поддерживает переменную с именем currentSimtime. В начале currentSimtime=0. Когда первое событие (например, отправка пакета ARP) запланировано, например, на t=0,003 с, currentSimtime устанавливается на 0,003 с и выполняется отправка пакета ARP.

> Ответ: hostSink не может определить, отправляет ли еще hostA пакеты. Моделирование отражает поведение реальной сети, и в реальном сетевом узле неизвестно, отправляет ли еще другой узел пакеты. Это ни в коем случае не может быть правдой. Если оба хоста отправляют пакеты, даже если они "сталкиваются", они должны дойти до прикладного уровня приемника...

Sebi 13.12.2020 00:41

... Даже если поступление происходит не по порядку, ОБА пакета должны быть получены и отброшены приемником. Сток умеет записывать время приема и ставить таймер (логически, по крайней мере). Если пакет получен от любого хоста до истечения времени, то да, хосты все еще отправляют пакеты в приемник.

Sebi 13.12.2020 00:44

1. даже если они "сталкиваются", они должны добраться до прикладного уровня стока - не всегда. В своем вопросе вы упомянули UDP и помните, что UDP — ненадежный протокол. И когда в канале частота битовых ошибок больше 0, пакет может быть удален на физическом уровне. UDP не гарантирует, что каждый отправленный пакет достигнет пункта назначения.

Jerzy D. 13.12.2020 00:50

Я использую среду без шума/помех; пакет не должен быть поврежден. Или?

Sebi 13.12.2020 00:53

2. _Если пакет получен от любого хоста до истечения времени, _ - да, таким образом можно определить, что отправитель все еще активен. Но в своем вопросе вы не упомянули, что пакеты отправляются через определенные промежутки времени и что получатель знает значение периода.

Jerzy D. 13.12.2020 00:53

Но я не уверен, как настроить таймер; ясно, что время моделирования =/= фактическое время (ОС). Как я могу создать таймер, который ждет X OMNET секунд?

Sebi 13.12.2020 00:55

Я использую среду без шума/помех; пакет не должен быть поврежден. Или? Ну, в большинстве случаев его не следует отбрасывать. Но помните, что, как и в реальной сети, буфер на сетевом уровне имеет конечный размер, буфер в MAC тоже.

Jerzy D. 13.12.2020 00:56

Время моделирования полностью отличается от времени операционной системы! Я настоятельно рекомендую вам пройти TicToc Tutorial.

Jerzy D. 13.12.2020 00:58

Да, буфер имеет конечный размер, но я могу контролировать скорость ввода пакетов; отправка пакетов с интервалом 200 мс с максимум 6 узлов не так уж и много (реально буфер никогда не может быть заполнен)

Sebi 13.12.2020 01:01

Теперь, в вашем вопросе есть несколько вопросов. Согласно правилам SO, один вопрос должен поднимать только одну проблему. Предлагаю разделить этот вопрос на несколько вопросов. В противном случае я бы проголосовал за закрытие этого вопроса.

Jerzy D. 13.12.2020 01:05

Да, в туториале показаны только таймеры, установленные в ned-файле docs.omnetpp.org/tutorials/tictoc/part7. Мне нужен более тонкий контроль

Sebi 13.12.2020 01:06

Сделанный! Но, пожалуйста, перестаньте ссылаться на эти учебники. Их полезность на практике довольно низка, а лучше сказать, неприменима.

Sebi 13.12.2020 01:10

Я бы не сказал, что неприменимы. По крайней мере, шаг 3.6 TicToc «Моделирование задержки обработки» четко описывает, как реализовать таймеры в коде C++: docs.omnetpp.org/tutorials/tictoc/part3/… в вопросе, они действительно не связаны с вашей проблемой.

Rudi 15.12.2020 13:45

Другие вопросы по теме