Для гуру широковещания UDP: проблемы с получением широкополосного аудиопотока UDP по WiFi (802.11N и 802.11G) - PullRequest
5 голосов
/ 15 ноября 2009

Я пытаюсь отправить многоканальное аудио по WiFi с одного сервера на несколько клиентских компьютеров с использованием широковещательной передачи UDP в частной сети.

Я использую программное обеспечение под названием Pure Data с инструментом широковещания UDP, называемым netsend ~ и netreceive ~. Код здесь: http://www.remu.fr/sound-delta/netsend~/

Короче говоря, я могу добиться отправки 9 каналов на один клиентский компьютер в сети точка-точка, но когда я пытаюсь сделать трансляцию для 2 клиентов (еще не пробовал больше) Я не получаю звука. Я могу сжимать аудио и отправлять 4 канала в сжатом виде (около 10% несжатого) по UDP-трансляции двум клиентам. Или я могу отправить 1 канал по широковещательной рассылке по протоколу UDP двум клиентам с некоторыми сбоями.

WiFi-маршрутизатор - это Linksys WRT300N. Все компьютеры работают под управлением Windows XP. IP-адреса: 192.168.1.x, с маской подсети 255.255.255.0 и широковещательным адресом подсети: 192.168.1.255.

Мне любопытно - что происходит с широковещательными пакетами UDP в маршрутизаторе? Если у меня маска подсети 255.255.255.0, то маршрутизатор делает 254 пакета для каждого пакета, отправленного с широковещательного адреса?

Пропускная способность моего Wi-Fi составляет не менее 100 Мбит / с, но я не могу послать аудио более чем 10 Мбит / с по UDP-широковещанию нескольким клиентам.

Что мешает мне отправлять аудио до предела пропускной способности WiFi?

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

спасибо Ник

Ответы [ 5 ]

6 голосов
/ 03 декабря 2010

Ваша проблема вызвана алгоритмом управления скоростью точки доступа. С помощью одноадресной передачи точка доступа отслеживает скорость передачи данных, которую каждый конкретный приемник может надежно принимать, и отправляет информацию об этой скорости. При многоадресной передаче точка доступа не знает, какие получатели заинтересованы в данных, поэтому простые точки доступа отправляют данные с самой низкой возможной скоростью (1 Мбит / с). Лучше реализованные точки доступа могут отправлять данные со скоростью, которую использует самый медленный подключенный клиент, а лучшие точки доступа используют отслеживание IGMP, чтобы увидеть, кто получает каждый многоадресный IP-поток, и они выберут самую медленную скорость из получателей для этого потока .

Самое простое решение - не использовать многоадресную рассылку, если у вас небольшое количество WiFi-приемников.

2 голосов
/ 30 ноября 2009

Все ли стороны подключены через WiFi или отправитель использует проводное подключение к точке доступа? Трансляция данных будет передаваться как одноадресные данные со станции на доступ точка и точка доступа будет затем повторно передать данные как широковещательный / многоадресный трафик, поэтому он будет использовать в два раза больше пропускная способность в эфире по сравнению с тем, когда отправитель сидит на проводная сторона AP.

При отправке одноадресного фрейма AP будет ожидать ACK от приемной станции, и он будет ретранслировать кадр до прибытия ACK (или тайм-аута). Широковещательного / многоадресного кадры не подтверждены и, следовательно, не переданы повторно. Если у вас занятая / шумная радиосвязь, это вызвать вероятность увеличения отброшенных пакетов, потенциально много, для многоадресного трафика по сравнению с одноадресным движение. В аудиоприложении это, безусловно, может быть слышно.

Кроме того, IIRC, широковещательный / многоадресный трафик не использует Процедура RTS / CTS для резервирования СМИ, которое освобождает проблема отброшенных пакетов.

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

Если вы можете, я бы предложил вам использовать wireshark, чтобы понюхать WiFi трафик и взгляните на адрес назначения в заголовке 802.11. Затем вы можете проверить, если пакеты на самом деле транслируются или не по воздуху.

1 голос
/ 28 ноября 2010

Ваш дизайн терпит неудачу из-за распространенного заблуждения со скоростью WiFi. В 802.11n число 300 Мбит / с - это скорость соединения, а не фактическая пропускная способность, доступная для пользовательских данных или даже уровня IP. Эффективная полоса пропускания ближе к 40 Мбит / с в лучшем случае, посмотрите FAQ на SmallNetBuilder.com, где это обсуждается более подробно.

http://www.smallnetbuilder.com/wireless/wireless-basics/31083-smallnetbuilders-wireless-faq-the-essentials

0 голосов
/ 16 ноября 2009

Новая информация: система определенно использует широковещательную рассылку, а не многоадресную.

Кроме того, я могу успешно транслировать 4 канала несжатого звука (2,8 Мбит / с) по проводному (cat5) соединению через ту же настройку широковещания UDP.
Когда я переключаюсь на 802.11N (скорость соединения достигает 200 - 300 Мбит / с), я не могу получить непрерывный поток из 4 каналов по широковещательной передаче UDP на 2 приемника. Но если я затем выполняю потоковую передачу «точка-точка» (на отдельный IP-адрес на тех же компьютерах-получателях), все еще при том же соединении WiFi, я могу получить чистый 4-канальный поток (2,8 Мбит / с).

Таким образом, кажется, что для широковещательной передачи по протоколу UDP существует дополнительная нагрузка на полосу пропускания по сравнению с прямым соединением UDP. Эти дополнительные издержки делают WiFi ненадежным в качестве транспорта, хотя проводное соединение все равно будет работать.

Почему вещание по WiFi такое плохое, и что я могу сделать, чтобы улучшить его?

0 голосов
/ 15 ноября 2009

Мне любопытно - что происходит с широковещательными пакетами UDP в маршрутизаторе? Если у меня маска подсети 255.255.255.0, то маршрутизатор делает 254 пакета для каждого пакета, отправленного с широковещательного адреса?

Нет, «маршрутизатор» не создает 254 отдельных пакета. Кроме того, я подозреваю, что протокол использует адреса «многоадресной рассылки», а не «широковещательный» адрес.

Поскольку широковещательный / многоадресный трафик можно легко использовать неправильно, существует множество сетевых устройств, которые по умолчанию ограничивают / блокируют такой трафик. Конечно, некоторые важные протоколы (например, ARP, DHCP) полагаются на широковещательные / многоадресные адреса для работы и по умолчанию не блокируются.

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

...