Skip to content

Как принять и доставить мультикаст-потоки без сбоев

При построении IPTV-сервиса на основе мультикаста возникает проблема с потерями мультикаст-пакетов. Чаще всего клиентские устройства не умеют обрабатывать потери мультикаст-пакетов, поэтому необходимо минимизировать потери со стороны источника. В зависимости от того, провайдер вы или клиент зависит то, какую задачу вы решаете:

Как принять мультикаст-потоки без сбоев

Предположим, у вас есть несколько разных источников мультикаста с одним и тем же контентом. Надежность источников по отдельности невысока и вы хотите, чтобы ваш сервис автоматически переключался на рабочий источник.

Если настроить получение мультикаст-пакетов из нескольких разных мультикаст-групп, то возникнет сложность управления такой архитектурой. При увеличении числа провайдеров контента и их мультикаст-групп, соответственно, усложняется управление парами коммутатор-приемник.

Если настроить фильтрацию по IP-источнику на приемнике, то приемник будет получать весь трафик мультикаст-группы от коммутатора, нагружая канал между коммутатором и приемником. При большом количестве провайдеров, передающих трафик в одну мультикаст-группу, канал перегрузится.

Так для решения задачи бесперебойного приема мультикаст-потоков используется механизм SSM (Source Specific Multicast).

Note

При таком подходе сетевой коммутатор и приемник должны поддерживать IGMPv3.

SSM работает следующим образом:

  1. В каждом мультикаст-пакете в заголовке передается IP-адрес источника. Основной и резервный источники вещают одновременно в одну и ту же мультикаст-группу.
  2. Flussonic запрашивает у коммутатора по IGMPv3 пакеты от основного источника с указанием IP-адреса источника.
  3. Если Flussonic фиксирует потери от основного UDP-источника в течение source_timeout по умолчанию равному минуте, то он переключается на резервный. Flussonic запрашивает у коммутатора по IGMPv3 пакеты от резервного источника с указанием IP-адреса источника.
  4. Находясь на резервном источнике, Flussonic каждую минуту опрашивает основной UDP-источник на наличие мультикаст-пакетов.
  5. Когда основной источник возвращается в эфир и начинает передавать пакеты, то Flussonic переключается на него с резервного источника.

Схема 1. SSM с рабочим основным источником Схема SSM c основным источником

Схема 2. SSM с выключенным основным источником и рабочим резервным источником Схема SSM c резервным источником

Чтобы настроить SSM (Source Specific Multicast) для мультикаст-потока в Flussonic Admin UI, выполните следующие шаги:

  1. Перейдите в вкладку Input в настройках потока.

  2. 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-адрес источника.
  3. Добавьте резервный источник, указав данные резервного источника, как в шаге 2.

  4. Примените настройки, нажав Save.

Как доставить мультикаст-потоки без сбоев

Допустим, вы провайдер и у вас есть сервер осуществляющий мультикаст-вещание. Вы хотите доставлять мультикаст-потоки с максимальной надежностью так, чтобы сервер автоматически переключался на рабочий источник без прерывания вещания. Вы можете зарезервировать этот сервер мультикаст-вещания с помощью потоков Flussonic, вещающих в standby-режиме.

Note

Такой подход работает с любым IGMP на приемнике, так что вашим клиентам не нужно покупать специальное оборудование.

Standby-режим работает следующим образом:

  1. Основной и резервный серверы формируют идентичный набор программ. Основной сервер вещает поток в мультикаст-группу.
  2. Резервный сервер постоянно проверяет, ведется ли вещание в эту мультикаст-группу, но сам не вещает, находясь в standby-режиме (режиме ожидания).
  3. Если основной сервер прекращает вещание, то резервный сервер выходит из режима ожидания и начинает вещать.
  4. Как только в эфире появляется основной сервер, резервный прекращает вещание и возвращается в standby-режим.

Схема 3. Standby-режим с рабочим основным сервером Схема multicast failover

Схема 4. Standby-режим с выключенным основным сервером и рабочим резервным сервером Схема multicast failover

Чтобы включить standby-режим для мультикаст-потока в Flussonic Admin UI, выполните следующие действия:

  1. Зайдите в настройки потока и откройте вкладку Output.
  2. В колонке URL раздела Push live video to certain URLs укажите мультикаст-группу, порт и IP-адрес основного источника следующим образом:

    udp://239.1.1.1:1234

    где:

    • 239.1.1.1.1 — мультикаст-группа,
    • 1234 — порт, который Flussonic будет слушать.
  3. Добавьте резервный источник, указав данные резервного источника, как в шаге 2.

  4. Откройте Options и включите standby-режим для резервного источника, установив флажок Standby.

  5. Примените изменения, нажав кнопку Save.