В чем разница между отправкой дейтаграммы UDP на IP-адрес через WIFI и трансляцией через WIFI, когда подключен только один клиент WIFI? - PullRequest
0 голосов
/ 02 ноября 2019

Я экспериментирую с многоадресной рассылкой и трансляцией WIFI, используя Raspberry PI в качестве клиентов. Если я транслирую подсеть или многоадресную рассылку через WIFI, то я теряю много пакетов. Если я «транслирую» на конкретный IP-адрес получателя, я не теряю никаких пакетов. У меня есть только 1 получатель / клиент, подключенный к моей точке доступа WIFI. Я использую QUD Framework QUDPSocket :: writeDatagram. Так что я просто должен установить там IP, и трансляция / подсеть-трансляция / многоадресная передача по своей природе выбрана. Я проверил, что соответствующие MAC-адреса установлены с помощью Wireshark, и все кажется правильным. Я не могу понять, почему я получаю такую ​​огромную разницу в производительности. Это все UDP и есть только один клиент WIFI. Любые идеи, пожалуйста?

Редактировать в ответ Сэму Мэйсону: QUDPSocket :: writeDatagram принимает IP-адрес. Этот IP-адрес определяет, используете ли вы одноадресную, многоадресную, широковещательную или подсетевую трансляцию. Я зацикливаюсь на этом вызове для достижения фиксированной скорости передачи 1,5 Мбит / с. (это медленный по сравнению с тем, что я должен быть в состоянии протолкнуть через мою сеть WIFI, поэтому я не требую много). Мой вопрос действительно заключается в том, почему одноадресная передача должна сбрасывать нулевые пакеты, тогда как все другие методы отбрасывают много пакетов. Мне известен аспект «наименьшего общего знаменателя» не одноадресной передачи, но у меня подключен только 1 клиент, так что ... что это значит?). Я действительно после того, как просто объясню, как обстоят дела с разницей между одноадресной передачей UDP и передачей UDP-вещания с одним клиентом.

Ответы [ 2 ]

1 голос
/ 04 ноября 2019

Краткий ответ: вы видите артефакты деталей реализации вашего конкретного маршрутизатора WLAN. Другие маршрутизаторы могут или не могут вести себя по-разному.

Подробности:

WLAN использует два основных режима связи на канальном уровне: индивидуально адресуемый или групповой адрес.

Для 1:В 1 сообщении он использует индивидуально адресуемый обмен данными, и это делается надежным благодаря подтверждениям и повторным передачам на канальном уровне. Это используется для одноадресной передачи UDP, а также для TCP и т. Д.

Для связи «один ко многим» используются кадры групповых адресов, и на канальном уровне вообще отсутствует защита от потери пакетов. Кроме того, в этом режиме маршрутизатор может переключиться на самую медленную скорость передачи WLAN (1 Мбит / с), чтобы убедиться, что каждая STA может его получить.

Теперь у маршрутизатора WLAN есть некоторая свобода, для какого режима он использует, для какогоIP-пакет:

Любой пакет (одноадресный / многоадресный / широковещательный) от отправителя к маршрутизатору WLAN: индивидуально адресуемый. Это всегда соотношение 1: 1 (один отправитель к одному маршрутизатору).

Одноадресная передача UDP, TCP и т. Д. Для отправки на целевую STA используются кадры с индивидуальной адресацией. Нет потери пакетов. Высокая скорость.

Многоадресная рассылка UDP: некоторые маршрутизаторы WLAN (на самом деле это довольно распространенное явление) являются интеллектуальными и по-прежнему используют кадры с индивидуальной адресацией, когда только один клиент зарегистрировался для получения этой группы многоадресной рассылки через IGMP. Когда несколько STA хотят получить многоадресные кадры, они, скорее всего, будут использовать групповые адреса (с видимой потерей пакетов). Маршрутизатор имеет свободу выбора скорости передачи данных. Обычно он будет использовать высокую скорость передачи данных, а не запасной вариант 1 МБ.

UDP-широковещание: большинство маршрутизаторов WLAN будут слепо использовать групповой адрес (с видимой потерей пакетов) и будут использовать запасную скорость передачи данных 1 МБ / с в качественаименьший общий знаменатель.

Многоадресная рассылка UDP и широковещательная рассылка UDP по WLAN ведут себя очень по-разному от многоадресной рассылки UDP и широковещательной передачи UDP по Ethernet. Вы должны ожидать множество артефактов, потерю пакетов, переупорядоченные пакеты, очень медленную скорость передачи данных.

Вышеприведенное объясняет, почему вы видите потерянные потерянные пакеты при запуске передач 1,5 МБ / с по медленному групповому адресу 1 МБ / с. ссылка с использованием резервной скорости передачи данных 1 МБ / с.

0 голосов
/ 02 ноября 2019

если я правильно интерпретирую ваш вопрос, то это потому, что одноадресная передача работает намного быстрее, чем широковещательная / многоадресная. см. https://superuser.com/a/695967 для получения дополнительной информации и связанного вопроса Для гуру широковещания UDP: проблемы с получением широкополосного аудио UDP-широковещания по WiFi (802.11N и 802.11G) также имеет значение

, чтобы процитировать соответствующую часть:

Любой тип многоадресной / широковещательной передачи по Wi-Fi будет медленным, потому что Wi-Fi требует, чтобы многоадресная передача и широковещательные рассылки были отправлены с некоторой «наименьшей частотой». знаменатель "скорость передачи.

было бы здорово, если бы вы включили несколько соответствующих строк кода, так как ваше словосочетание несколько неоднозначно. например, что вы подразумеваете под «широковещательной рассылкой» на конкретный IP получателя? Я предполагаю, что вы просто имеете в виду отправить!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...