UDP с многоадресными сокетами по беспроводной сети

Я написал простое клиентское приложение udp-сервера с многоадресными сокетами. Сервер отправляет пакеты трем клиентам каждые 6 мс. Размер пакета 1200 байт. Это 166,66 пакетов в секунду. Всякий раз, когда один из клиентов обнаруживает отсутствующий пакет, он отправляет пакет NACK на сервер через одноадресную рассылку.

Первый тест: сервер и три клиента были подключены к маршрутизатору TP-Link TL-WDR4300 (dd-wrt) через Ethernet, и все работало нормально.

Второй тест: только сервер был подключен к маршрутизатору через Ethernet, а остальные клиенты были подключены через беспроводную связь 2,4 ГГц и фиксированный канал. С беспроводной связью возникли две проблемы: Первая проблема — потеря пакетов, клиенты получают только 50% пакетов. И потери появляются в пакетах, например, 400 пакетов получены, 200 потеряны и т. д. Вторая проблема заключается в том, что когда клиенты отправляют обратно пакеты NACK на сервер, что я вижу на wireshark, но мое приложение не может' т получить их. Это странно, потому что код такой же, как и при подключении клиентов через Ethernet. Итак, есть идеи? я был бы благодарен

Код сервера:

while (1) {

    FD_ZERO(&readfds);
    FD_SET(sd, &readfds);

    tv.tv_sec = 0;
    tv.tv_usec = 0;

    rv = select(sd + 1, &readfds, NULL, NULL, &tv);

    while (rv == 1) {

        nack_processing(sd);
        rv = select(sd + 1, &readfds, NULL, NULL, &tv);


    }
}
return 0;

}

Я также сделал обновления для уменьшения трафика: Размер пакета: 800 байт Время прибытия между пакетами: 10 мс = 100 пакетов в секунду = 0,076 МБ/с

и я измерил трафик на стороне сервера и клиента: Сервер ~ 10 МБ/с Клиенты ~ 5 МБ/с

Все кажется хорошо


person user3852803    schedule 25.10.2014    source источник
comment
Пакеты идут по одному и тому же пути? В противном случае это может быть проблема с конфигурацией многоадресной рассылки для некоторого элемента n/w в пути.   -  person Arunmu    schedule 25.10.2014
comment
UDP не является надежным транспортом, поэтому пакеты могут быть отброшены. Во-вторых, в большинстве случаев широковещательные рассылки UDP регулируются сетевыми узлами, поэтому широковещательная рассылка видна только в определенной подсети устройств, которые находятся на одном кабеле или на одной стороне беспроводного маршрутизатора.   -  person Richard Chambers    schedule 25.10.2014
comment
Существует ряд причин для отбрасывания пакетов UDP, одна из которых заключается в том, что в сетевом стеке заканчиваются доступные буферы сетевых пакетов. Таким образом, если у вас большой трафик и сетевой узел не может передать уже полученные данные до того, как поступит больше данных, пакеты будут отброшены.   -  person Richard Chambers    schedule 25.10.2014
comment
Я не уверен, понимаю ли я это с путем... Все пакеты отправляются на многоадресный IP-адрес. Что такое n/w путь и где его проверить?   -  person user3852803    schedule 25.10.2014
comment
Я знаю, что UDP ненадежен и могу ожидать потерь, но эти всплески очень странные и необычные, и я думаю, что проблема где-то в другом. Ричард, у меня уменьшился трафик, который я отправляю, и проблема все еще остается. У тебя есть другие идеи? Кстати, клиенты находятся на той же стороне беспроводного маршрутизатора.   -  person user3852803    schedule 25.10.2014
comment
UDP ненадежен, а беспроводная сеть теряет больше данных, чем проводная, из-за таких причин, как радиочастотные помехи. Чтобы данные не терялись из-за переполнения UDP-буфера, следует увеличить параметр SO_RCVBUF в приемниках.   -  person nullptr    schedule 25.10.2014
comment
comment
И для лучшего тестирования вы должны проверить, какое значение SO_RCVBUF установлено на машинах с Linux, потому что вы можете получить непредсказуемые результаты из-за конфигурации сервера на ограничениях буфера.   -  person nullptr    schedule 25.10.2014
comment
И помните, что в большинстве случаев потери при всплесках связаны с переполнением буфера или перегрузкой либо на приеме, либо на маршрутизаторе/коммутаторе.   -  person nullptr    schedule 25.10.2014
comment
Не могли бы вы обновить свой вопрос, включив в него изменения, внесенные вами для уменьшения трафика? Один вопрос, который у меня есть, это скорость передачи вашей беспроводной сети, какова пропускная способность? Мне кажется, что есть комбинация ошибок, а также недостаточная пропускная способность беспроводной сети, если с кабелем Ethernet все работало нормально. Кабель обычно обеспечивает большую пропускную способность и более низкий уровень ошибок.   -  person Richard Chambers    schedule 25.10.2014
comment
Я обновил ответ. И в чем причина, если NACK от клиентов не приходят, но я вижу их в Wireshark... Я установил SO_RCVBUF на 2 МБ, но ситуация все та же   -  person user3852803    schedule 25.10.2014


Ответы (1)


Обратите внимание, что вы сравниваете два разных интерфейса/носителя. Один проводной интерфейс, а другой беспроводной интерфейс.

Потеря пакетов в беспроводных сетях:

Это может быть связано с множеством причин. Однако первыми непосредственными контрольными точками должны быть SNR, RSSI и помехи на рабочей частоте/совмещенном канале. Wi-Fi-анализатор может приблизить вас к решению.

Расположение беспроводного маршрутизатора. Проверьте, расположен ли беспроводной маршрутизатор в центре области, требующей покрытия. Обеспечьте отсутствие дыр в покрытии с надлежащим перекрытием зон покрытия. Убедитесь, что между ними нет зданий, чтобы уменьшить помехи. Также обратите внимание, что существует зависимость между расстоянием и скоростью передачи данных для пользователя. Чем ближе пользователь, тем выше скорость передачи данных из-за снижения потерь на пути (поскольку это, в свою очередь, увеличивает SNR).

Тип антенны. Изотропная антенна обеспечивает зону покрытия в форме сферы. Дипольная антенна обеспечивает зону покрытия в виде бублика. Существуют также различные направленные антенны. Имейте в виду, что всенаправленная антенна может привести к проблеме со скрытым узлом в случае большого размера соты. Антенна с сфокусированным лучом может быть полезной. Многосекторная направленная антенна может дать большую пропускную способность, дальность действия. Тип антенны, ее расположение и коэффициент усиления определяют дальность радиопередачи и зону покрытия.

Канал связи/Рабочая частота. Наличие других точек доступа, работающих на той же частоте в той же зоне радиопокрытия, может вызвать помехи. В таких случаях рабочий канал и разделение каналов должны быть соответствующим образом изменены, чтобы уменьшить помехи, если поблизости находятся только устройства 802.11.

Уровень мощности. Более высокий уровень мощности может увеличить дальность действия, но при наличии поблизости точек доступа это может привести к помехам. Для более высокой пропускной способности точки доступа могут быть расположены близко друг к другу, в таких случаях для уменьшения помех предпочтительнее использовать низкий уровень мощности.

Другие устройства. Помехи также могут быть вызваны устройствами, не поддерживающими стандарт 802.11, такими как микроволновые печи, Bluetooth, беспроводные телефоны и т. д. В таких случаях лучше удалить эти устройства или экранировать их, чтобы избежать помех.

Потеря пакетов с точки зрения всплесков также предполагает, что стек не способен обрабатывать всплески трафика, и его политика формирования трафика может заключаться в том, чтобы просто отбрасывать такие всплески пакетов. Дважды проверьте, генерируется ли такой всплеск трафика.

NACK не доходит до сервера. Опять же, это может быть связано с проблемами, связанными со средой передачи, которые могут привести к потере NACK по радиоканалу. В случае, если NACK достиг хоста, но не серверного приложения/необработанного, это может быть связано с архитектурой сервера или конфигурацией ОС, связанной со стеком.

Типичные шаги для анализа сценариев потери пакетов

  1. Проверьте настройки брандмауэра, конфигурации ОС, конфигурации маршрутизатора и возможности/конфигурации сетевого оборудования (пропускная способность, режим работы), конфигурацию/возможности промежуточного узла (MTU, таблица маршрутизации/пересылки)
  2. На беспроводном пути проверьте местоположение точки доступа, рабочий диапазон (частоту), разделение каналов, SNR, RSSI, тип/усиление антенны, дыры в покрытии, расстояние от точки доступа, наличие других устройств 802.11 и устройств, не поддерживающих 802.11, в зоне покрытия.
  3. Проверяйте статистику пакетов по всем точкам ввода и вывода различных узлов и интерфейсов.
  4. Проверяйте статистику пакетов по всем точкам ввода и вывода в приложениях/уровнях протоколов.
  5. Повторные тесты для определения характера потери пакетов с различными комбинациями пропускной способности, размера пакета, продолжительности выполнения, различных приложений, различных размеров полезной нагрузки, различного количества пакетов, уровня мощности, местоположения точки доступа, канала... определить проблемную зону.
person Karthik Balaguru    schedule 26.10.2014
comment
Я проверю большинство из этих вещей, а затем, надеюсь, опубликую решение. Спасибо - person user3852803; 27.10.2014