Отправка пакетов UDP, по-видимому, приводит к потере входящих пакетов на разных сетевых картах.

594
Mathijs

Я использую Windows Server 2012 с приложением потокового аудио, которое транслируется по UDP. Другое приложение получает звук, который также передается по UDP, но поступает через отдельный сетевой адаптер. Однако кажется, что чем больше пакетов передает первое приложение, тем больше входящих пакетов теряется во втором приложении.

Общая загрузка ЦП системы составляет около 40%, поэтому в ней должно быть достаточно свободного места. Имеет ли этот вопрос какой-либо смысл? Что я могу сделать, чтобы улучшить это поведение?

0
Хорошо, подумайте об обновлении драйверов NIC и / или микропрограммного обеспечения BIOS и тому подобного, но я бы запустил трассировку Wireshark на каждом интерфейсе и был бы уверен, что нет ничего другого, вызывающего перегрузку пакетов, которую можно отключить. Pimp Juice IT 5 лет назад 0
Кроме того, вы можете сообщить нам, какое приложение для потоковой передачи аудио вы используете, если кто-то знает о каких-либо конкретных настройках этого приложения, которые можно настроить для решения таких проблем. Pimp Juice IT 5 лет назад 1
Нам нужно больше деталей, прежде чем можно будет ответить. Некоторые из них: сервер физический или виртуальный? Что делает / модель сетевых карт? Какие приложения выполняют потоковую передачу? Twisty Impersonator 5 лет назад 0
Все данные поступают через одно и то же интернет-соединение? Appleoddity 5 лет назад 0

1 ответ на вопрос

1
Mathijs

После долгих копаний я, кажется, нашел решение проблемы.

Microsoft предоставила исправление для Windows Server 2012, позволяющее обойти базовый механизм фильтрации для входящих многоадресных потоков: https://support.microsoft.com/en-us/help/2808584/datagram-loss-when-you-run-a- многоадресной приемо-приложения-в-окна

Тем не менее исправление недоступно для Windows Server 2012 R2. Но потом я нашел этот пост: https://personalnexus.wordpress.com/2017/02/06/the-case-of-multicast-message-loss-on-windows-server-2012-r2/

Итак, к настоящему времени у меня есть полный контрольный список вещей, которые нужно настроить на наших серверах, и убедиться, что в наших приложениях используются многоадресные сообщения, чтобы убедиться, что все работает гладко и потеря сообщений поддерживается на приемлемом уровне. Тем не менее, на наших последних машинах с Windows Server 2012 R2 у меня были приложения с серьезной потерей дейтаграмм, так как объем сетевого трафика (в общем, не только многоадресной) на машине увеличился.

Я исследовал проблему в Интернете и получил советы, которые вы ожидали: получить последние драйверы NIC, увеличить размеры приемного буфера NIC, включить разгрузку, включить масштабирование на стороне приема, точно настроить масштабирование на стороне приема, увеличить размеры буфера сокетов и т. Д. Конечно, я уже попробовал все эти вещи, и ни одна из них не сработала

Решение по сообщению в блоге:

К сожалению, в документе описана проблема в Windows Server 2012, и доступное там исправление не может быть установлено в Windows Server 2012 R2. К счастью, это не должно быть. Вы можете просто установить ключ реестра, и базовый механизм фильтрации поддерживает его из коробки.

New-ItemProperty HKLM:\System\CurrentControlSet\services\Tcpip\Parameters\ -Name UdpExemptPortRange -Value "XXXX-YYYY" -PropertyType MultiString -Force 

До сих пор потоки снова работают нормально. Очевидно, что BFE не может обрабатывать огромное количество входящего UDP-трафика, когда также имеется достаточное количество исходящего UDP-трафика.

Рад слышать, что мой блог был полезным :-) PersonalNexus 5 лет назад 0