Потоковая передача RTP с использованием VLC. На моем ПК происходит огромная потеря пакетов UDP. Почему?

Потоковая передача RTP с использованием VLC. На моем ПК происходит огромная потеря пакетов UDP. Почему?

У меня возникли странные проблемы на моем ПК с Windows 7: я попытался настроить медиаплеер VLC для потоковой передачи звука через RTP, однако при этом теряется огромное количество исходящих UDP-пакетов.

После некоторой отладки я заметил, что мой ПК может абсолютно нормально получать те же потоковые пакеты с другого ПК (без входящих потерь UDP), однако, когда мой ПК настроен на передачу потока, я получаю более 26% потерь пакетов UDP. Даже когда ПК подключены с помощью прямого куска кабеля CAT5.

Из некоторых проверок Wireshark, похоже, мой ПК вообще не отправляет эти пакеты. Что-то мешает их отправке. Что может быть причиной? Понятия не имею.

Спасибо за любые подсказки.

//EDIT: Я забыл добавить, неважно, является ли поток одноадресным или многоадресным. Результаты те же.

решение1

Наконец, я нашел решение: как я и беспокоился с самого начала, проблема действительно была в Windows. По какой-то причине по умолчанию стек IP использует только 8 кбайт буферов. (Забавно, не правда ли?) Этого недостаточно для нескольких кбайт UDP-всплесков, которые производит VLC.

Существует возможность увеличить размеры буфера отправки/приема стека IP, используя ключи реестра. По какой-то причине на моей машине эти ключи полностью отсутствовали, поэтому размер был установлен по умолчанию.

Чтобы изменить размеры буфера отправки/приема, обновите (или создайте) этот ключ реестра. В моем случае установка размера буфера в 64 КБ решила проблему. Теперь никаких исходящих потерь UDP.

[HKEY_LOCAL_MACHINE \SYSTEM \CurrentControlSet \Services \Afd \Parameters]
DefaultReceiveWindow = 65536
DefaultSendWindow = 65536

Оба значения имеют тип DWORD (32 бита), если вам нужно, создайте их.

(Я также повозился с настройками размера буфера в сетевых контроллерах, но это ни к чему не привело.)

Связанный контент