Skip to content

Доставка в сеть

Главный выход головной станции — транспортный поток, отправленный в сеть: в мультикаст-группу кабельного оператора, на модулятор, на юникаст-адрес приёмника. Станция здесь активная сторона: она сама шлёт, никто к ней не подключается.

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

Отправьте поток в группу

Вкладка Исходящий поток, блок Пуши, кнопка + Добавить пуш. Протокол — MPEG-TS/UDP.

Поле Что задаёт Умолчание
Имя идентичность направления
Хост мультикаст-группа или юникаст-адрес приёмника
Порт порт получателя
TTL мультикаста сколько маршрутизаторов переживёт датаграмма 10
Исходящий интерфейс с какой сетевой карты уходит мультикаст выбирает система
Адрес привязки локальный адрес, к которому привязан сокет выбирает система

Переключатель Включён рядом с именем выключает направление, не удаляя его. Юникаст от мультикаста отличается только адресом: TTL и выбор интерфейса работают одинаково.

Мультикаст в реальной сети

Три вещи, на которых спотыкается доставка, и все три решаются полями выше.

  • Не та сетевая карта. На машине с несколькими интерфейсами система выбирает исходящий интерфейс по таблице маршрутов, и для мультикаста этот выбор часто оказывается не тем. Если сигнал «отдаётся», но приёмник его не видит, первым делом задайте Исходящий интерфейс явно.
  • TTL. Умолчание 10 позволяет пакету пережить маршрутизацию — принятый в ядре TTL 1 не выпустил бы поток даже за пределы подсети. Через несколько маршрутизаторов TTL поднимают, при жёсткой изоляции сегмента — опускают.
  • Приёмник должен подписаться. Станция шлёт в группу независимо от того, слушает ли её кто-нибудь: пакеты уходят и без подписчиков. «Ничего не приходит» на стороне приёмника — это, как правило, его собственная подписка или IGMP snooping на коммутаторе, а не станция.

RTP вместо голого TS

Часть приёмников ждёт MPEG-TS, упакованный в RTP по RFC 2250 / SMPTE ST 2022-2, а не голым потоком поверх UDP. Это тот же выход, отличается инкапсуляция: выберите протокол MPEG-TS/RTP вместо MPEG-TS/UDP.

Датаграмма получает RTP-заголовок, всё остальное — адресация, TTL, интерфейс, счётчики — общее с обычным UDP-пушем.

Соседний вариант в том же списке — RIST, когда принимающая сторона ждёт именно его.

Несколько направлений сразу

У стрима столько пушей, сколько нужно, и работают они независимо: упавший приёмник одного направления не задевает остальные.

Направления с одинаковыми эффективными настройками выхода делят один побайтово идентичный поток: сто одинаковых пушей стоят столько же, сколько один. Разными их делают только собственные служебные таблицы — свой PNR и свои PID у направления; тогда для него переписываются таблицы и PID, а раскладка пакетов, PCR и счётчики непрерывности остаются от общего выхода.

Поведение при обрыве

Собственной политики повторов у пушера нет — его переподнимает стрим. Раз в пять секунд стрим сверяет работающие направления с настройками и заменяет умершего пушера новым; счётчик реконнектов считает именно такие замены.

Отсюда практическое следствие: отправка на недоступный адресат не сдаётся и не требует ручного перезапуска. Она будет подниматься, пока направление включено.

Реконнектом не считаются:

  • правка настроек — пушер тоже перезапускается, но это решение оператора, а не отказ канала;
  • выключение и включение — выключение не удаление: настройки и накопленные счётчики остаются, отправки нет.

Удаление направления удаляет и его статистику: счётчики привязаны к имени.

Что проверять

Под каждым пушем идёт строка живой статистики: статус — Отдаёт, Ошибка или Выключен — скорость в кбит/с, ошибки в секунду, реконнекты, а у отказавшего ещё и причина. Разбор всех полей и рецепты алертинга — на странице Контроль доставки.

Статус Отдаёт при нулевой скорости означает, что отправлять нечего: проблема на входе, а не на выходе.

Что дальше