У меня есть программа, которая отправляет многоадресный пакет IPv6 (на ff12 :: 2: 0: 8afb: 382b: c053: 85f% en1) каждые 50 мс. У меня он работает в очень простой локальной сети с одним компьютером (Mac mini <-wifi-> Wi-Fi роутер Linksys <-cat5-> DSL-модем <-> Интернет). В моем тесте нет компьютеров, подключенных к этой многоадресной группе (т.е. никто не слушает эти пакеты)
Моя проблема в том, что когда эта программа запущена, производительность Wi-Fi на Mac падает более чем на 50%. По-видимому, проблема в том, что все эти многоадресные пакеты съедают большую часть моей полосы пропускания WiFi и вызывают перегрузку ... но я не понимаю, почему пакеты вообще передаются. Насколько я понимаю, многоадресная рассылка использует алгоритм связующего дерева, чтобы гарантировать, что многоадресные пакеты маршрутизируются только на хосты, которые действительно заинтересованы в их получении. Если это правда, и учитывая, что в моей локальной сети нет других компьютеров, подключенных к этому многоадресному адресу, не должен ли мой Mac осознавать это и фактически не отправлять какие-либо пакеты, если / пока какой-либо другой хост не присоединится к группе многоадресной рассылки? Или отсечение связующего дерева реализовано только на коммутаторе, а не самими хостами?
Чтобы добавить к ответу @ sysadmin1138 (этот комментарий был слишком длинным для поля комментариев) ...
Было бы хорошо отметить, что 802.11 усугубляет проблему по двум причинам: ретрансляция внутри BSS и низкая скорость многоадресной передачи.
В 802.11 кадры из беспроводной сети в одну и ту же точку доступа должны повторно передаваться точкой доступа по беспроводной связи в случае, если исходный отправитель не находится в диапазоне радиосвязи предполагаемого получателя. Этот процесс называется «ретрансляция внутри BSS» и решает так называемую «проблему скрытого узла», когда два беспроводных узла могут оба находиться в диапазоне действия точки доступа, но не в диапазоне (скрытом) друг от друга. Таким образом, каждый кадр, который поступает от одного беспроводного клиента AP и может потребоваться передать другому беспроводному клиенту AP (примечание: это включает все многоадресные и широковещательные передачи), передается по одному и тому же каналу дважды. Первый к точка доступа (известная как «К распределительной системе» или «ToDS»), а затем снова из AP («FromDS») как часть ретрансляции внутри BSS.
«ToDS» - это самая высокая скорость передачи данных, при которой клиент может успешно взаимодействовать с точкой доступа. Так что, если это современный клиент 3x3 N и точка доступа, использующая каналы 40 МГц с короткими защитными интервалами, это может быть 450 Мбит / с.
К сожалению, на этапе пути «FromDS» кадр должен быть отправлен с достаточно низкой скоростью передачи данных, чтобы все клиенты этой AP могли надежно их принять. Это связано с тем, что многоадресные рассылки не подтверждаются на уровне 802.11, потому что это может вызвать шторм подтверждения в ответ на каждую многоадресную рассылку.
Некоторые точки доступа позволяют явно установить скорость многоадресной рассылки. Другие позволяют вам определить ваш «базовый» или «обязательный» набор скорости, а затем точка доступа выбирает скорость многоадресной передачи из основных. Третьи просто позволяют вам установить режим совместимости b / g / n (или a / n) и иметь предопределенный базовый набор скорости и скорость многоадресной рассылки на основе этого. Многие точки доступа по умолчанию работают в режиме полной совместимости, вплоть до скорости передачи данных 802.11-1997 DSSS 1 и 2 Мбит / с (до того, как 802.11b добавлял 5,5 и 11 Мбит / с). Это означает, что ваша скорость многоадресной рассылки может составлять всего 1 Мбит / с.
Таким образом, в худшем случае ваши многоадресные рассылки могут съесть 451 раз канал-эфирное время будет занимать одноадресный фрейм того же размера между проводными (или беспроводными) передачами.
Также обратите внимание, что в некоторых проектах ретрансляция внутри BSS выполняется микрокодом в сетевом адаптере 802.11 AP, поэтому в этих архитектурах эти кадры не проходят через хост-процессор AP до того, как они будут ретранслированы. Таким образом, даже если бы точка доступа была «умным» коммутатором, который мог бы нарушить модель многоуровневости и выполнять отслеживание IGMP уровня 3 для сокращения многоадресного дерева, у нее не было бы шанса сделать это, пока радиоплата уже не выполнила внутреннюю BSS. реле на раме.
Многоадресная передача - штука непростая. Маршрутизаторы являются теми, кто разрешает многоадресные пакеты, а интеллектуальные коммутаторы иногда могут гарантировать, что пакеты не попадут туда, куда они не должны идти. Однако, если между мультикастером и вашими клиентскими станциями нет маршрутизатора (а его нет, если я правильно это понимаю), тогда многоадресная передача будет вести себя точно так же, как широковещательные передачи в этой подсети.
По умолчанию для многоадресной рассылки используется широковещательная передача, если она не полностью поддерживается локальным маршрутизатором (не коммутатором). Таким образом, он имеет тенденцию распространяться на все известные узлы в сегменте LAN.
Маршрутизаторы SoHo не очень известны своей полной или правильной поддержкой MultiCast. Многие зависят от восходящих маршрутизаторов и ожидают только клиентов на уровне LAN. Вы можете попробовать изменить настройки маршрутизатора, но если в вашей группе многоадресной рассылки нет подписчиков, почему бы не отключить ее на источнике?