Здравствуйте.
Обнаружил проблему с IGMP на DFL-210. Прошивка 2.20.03.08-8260.
Со стороны WAN есть мультикастовый источник (Провайдер Корбина, IPTV). Там же находится IGMP Querier, опрашивающий хосты по протоколу IGMPv.2 каждые 125 секунд. Max Response Time у них 10 секунд. У меня давно настроенные правила на DFL-210 в режиме snooping, которые работали без проблем. Но увидев новую прошивку, прошился. Стал замечать стопы картинки при просмотре через VCL. Игра с параметрами и анализ в Wireshark показал следующее:
DFL, несмотря на наличие внешнего опросчика, игнорирует его и ведет свой собственный таймер. Как это выглядит. В сниффере видно, что сам DFL не шлет опросы на 224.0.0.1, это делает вышестоящий мультикаст-роутер. Но это не мешает DFL каждые IGMPQueryInterval, которые указаны в настройках, отсчитывать время, указанное в IGMPQueryResponseInterval и принимать решение - слать дальше мультикаст или блокировать. Конечно, он его блокирует.
Выявить проблему очень просто:
1) ставим в IGMPQueryInterval, допустим, 10000, что соответствует 10 секундам интервала между опросами на 224.0.0.1
2) ставим в IGMPQueryResponseInterval, допустим, 2000, что соответствует 2 секундам, в течение которых хосты по идее должны отослать report о текущей подписке.
Запускаем ТВ на VLC и видим, что поток через 12 секунд останавливается (на WAN лампочка мигает, значит, мультикаст от провайдера идет). Оно и понятно - ведь VLC никакого опроса не получил, следовательно, отвечать не на что. Картинка будет стоять до тех пор, пока не наступит время слать опросы со стороны провайдера. Получив такой запрос, VLC отвечает на него и картинка возобновляется.
Меняя параметры IGMPQueryInterval и IGMPQueryResponseInterval убеждаемся с помощью секундомера и глаз, что все вышесказанное подтверждается.
Это неправильная работа устройства в режиме snooping. Он не должен блокировать трафик, потому что он не шлет опросы и соответственно не может на отсутствующие опросы ожидать report'ы от хостов. Данное поведение больше похоже на режим proxy, но тогда обязательно должен быть опрос групп самим устройством. В предыдущей прошивке такой проблемы не было.
Временное решение довольно простое - поставить максимально возможную цифру в поле IGMPQueryInterval. Я поставил 3600000, что соответствует 1 часу внутреннего таймера. Стопы прекратились да и попасть на них если и получится, то всего на несколько секунд/десятков секунд не более одного раза в час. Может, и больше можно поставить, но мне и часа за глаза
Просьба сотрудникам проверить и подтвердить данный баг.
Спасибо.