Я программист, а не системный администратор, так что простите, пожалуйста, мою административную наивность. Мое программное обеспечение, написанное на C #, полагается на многоадресную рассылку UDP. Одна машина, сервер, передает события на известный групповой адрес UDP (настраиваемый, но по умолчанию 224.130.103.5), на который подписаны все клиенты в сети.
Обычно это прекрасно работает, но у некоторых моих клиентов это не работает вообще, и часто их сетевые администраторы не могут решить проблему. Мой вопрос: каковы общие причины того, что многоадресная рассылка UDP не работает? Могу ли я что-нибудь сказать администраторам сети о том, как это исправить или хотя бы где искать?
Если у тебя есть VirtualBox Host-Only Ethernet Adapter
активирован в вашей системе, что может быть проблемой, которая была для меня, поэтому попробуйте отключить ее. Видеть https://www.virtualbox.org/ticket/8698.
Вы можете использовать такой инструмент, как wirehark, для просмотра UDP-пакетов на проблемной машине. Исходя из этого, вы сможете определить, достигают ли даже UDP-пакеты этой машины.
Я бы сказал, что наиболее распространенная причина, по которой вам нужно будет искать, - это маршрутизированные сети, где весь набор систем, которые должны участвовать в группе многоадресной рассылки (клиенты и сервер), не находятся в одной и той же широковещательной передаче. домен.
Это первое, что нужно спросить у сетевых администраторов клиента. Что касается ее решения, если это так, это зависит от их сетевого оборудования; им нужно будет настроить PIM и отслеживание IGMP на их оборудовании маршрутизации.
Их оборудование, поддерживающее его, может быть повреждено или пропущено; это может стать серьезным препятствием для некоторых ваших клиентов. Возможно, вам придется искать альтернативные решения, которые не требуют, чтобы их сетевое оборудование хорошо работало с многоадресной передачей. Пара идей:
Попробуйте отключить брандмауэр Windows и проверьте, принимает ли ваше программное обеспечение пакеты. У меня были аналогичные проблемы с моей программой Java. Если проблема в брандмауэре, начните экспериментировать с правилами брандмауэра для входящего трафика.
У меня были аналогичные проблемы, когда на моей машине был активен адаптер виртуального Ethernet Hyper-V (рекламируемый как vEthernet (переключатель по умолчанию)).
С wirehark я мог видеть многоадресный сетевой трафик на моем сервере, но серверное приложение не отвечало, даже если оно было зарегистрировано на адрес и порт.
Так что Ответ в этом случае: Отключите адаптер виртуального Ethernet Hyper-V, если он включен.