Как принять и доставить мультикаст-потоки без сбоев
При построении IPTV-сервиса на основе мультикаста возникает проблема с потерями мультикаст-пакетов. Чаще всего клиентские устройства не умеют обрабатывать потери мультикаст-пакетов, поэтому необходимо минимизировать потери со стороны источника. В зависимости от того, провайдер вы или клиент зависит то, какую задачу вы решаете:
Как принять мультикаст-потоки без сбоев
Предположим, у вас есть несколько разных источников мультикаста с одним и тем же контентом. Надежность источников по отдельности невысока и вы хотите, чтобы ваш сервис автоматически переключался на рабочий источник.
Если настроить получение мультикаст-пакетов из нескольких разных мультикаст-групп, то возникнет сложность управления такой архитектурой. При увеличении числа провайдеров контента и их мультикаст-групп, соответственно, усложняется управление парами коммутатор-приемник.
Если настроить фильтрацию по IP-источнику на приемнике, то приемник будет получать весь трафик мультикаст-группы от коммутатора, нагружая канал между коммутатором и приемником. При большом количестве провайдеров, передающих трафик в одну мультикаст-группу, канал перегрузится.
Так для решения задачи бесперебойного приема мультикаст-потоков используется механизм SSM (Source Specific Multicast).
Note
При таком подходе сетевой коммутатор и приемник должны поддерживать IGMPv3.
SSM работает следующим образом:
- В каждом мультикаст-пакете в заголовке передается IP-адрес источника. Основной и резервный источники вещают одновременно в одну и ту же мультикаст-группу.
- Flussonic запрашивает у коммутатора по IGMPv3 пакеты от основного источника с указанием IP-адреса источника.
- Если Flussonic фиксирует потери от основного UDP-источника в течение source_timeout по умолчанию равному минуте, то он переключается на резервный. Flussonic запрашивает у коммутатора по IGMPv3 пакеты от резервного источника с указанием IP-адреса источника.
- Находясь на резервном источнике, Flussonic каждую минуту опрашивает основной UDP-источник на наличие мультикаст-пакетов.
- Когда основной источник возвращается в эфир и начинает передавать пакеты, то Flussonic переключается на него с резервного источника.
Схема 1. SSM с рабочим основным источником
Схема 2. SSM с выключенным основным источником и рабочим резервным источником
Чтобы настроить SSM (Source Specific Multicast) для мультикаст-потока в Flussonic Admin UI, выполните следующие шаги:
-
Перейдите в вкладку Input в настройках потока.
-
Add a primary source if you don't have one or modify the existing one Добавьте основной источник, если он не указан, или измените уже существующий, указав мультикаст-группу, порт и IP-адрес основного источника в следующем виде:
udp://239.1.1.1:1234?sources=10.10.10.1
, где:
239.1.1.1
— мультикаст-группа,1234
— порт, который Flussonic будет слушать,10.10.10.1
— IP-адрес источника.
-
Добавьте резервный источник, указав данные резервного источника, как в шаге 2.
-
Примените настройки, нажав Save.
Как доставить мультикаст-потоки без сбоев
Допустим, вы провайдер и у вас есть сервер осуществляющий мультикаст-вещание. Вы хотите доставлять мультикаст-потоки с максимальной надежностью так, чтобы сервер автоматически переключался на рабочий источник без прерывания вещания. Вы можете зарезервировать этот сервер мультикаст-вещания с помощью потоков Flussonic, вещающих в standby-режиме.
Note
Такой подход работает с любым IGMP на приемнике, так что вашим клиентам не нужно покупать специальное оборудование.
Standby-режим работает следующим образом:
- Основной и резервный серверы формируют идентичный набор программ. Основной сервер вещает поток в мультикаст-группу.
- Резервный сервер постоянно проверяет, ведется ли вещание в эту мультикаст-группу, но сам не вещает, находясь в standby-режиме (режиме ожидания).
- Если основной сервер прекращает вещание, то резервный сервер выходит из режима ожидания и начинает вещать.
- Как только в эфире появляется основной сервер, резервный прекращает вещание и возвращается в standby-режим.
Схема 3. Standby-режим с рабочим основным сервером
Схема 4. Standby-режим с выключенным основным сервером и рабочим резервным сервером
Чтобы включить standby-режим для мультикаст-потока в Flussonic Admin UI, выполните следующие действия:
- Зайдите в настройки потока и откройте вкладку Output.
-
В колонке URL раздела Push live video to certain URLs укажите мультикаст-группу, порт и IP-адрес основного источника следующим образом:
udp://239.1.1.1:1234
где:
239.1.1.1.1
— мультикаст-группа,1234
— порт, который Flussonic будет слушать.
-
Добавьте резервный источник, указав данные резервного источника, как в шаге 2.
-
Откройте Options и включите standby-режим для резервного источника, установив флажок Standby.
-
Примените изменения, нажав кнопку Save.