Skip to content

Мультикаст-источник

Типовая картина кабельного оператора: головная станция или энкодер раздаёт стримы транспортными потоками MPEG-TS в мультикаст-группы локальной сети — по группе на стрим. Эта страница подключает такую группу к стриму Catena.

Подключите группу

Создайте стрим и на вкладке Источники нажмите + Добавить источник. Выберите протокол MPEG-TS/UDP и заполните:

  • Хост — адрес мультикаст-группы, например 239.255.1.77.
  • Порт — порт группы, например 5500.
  • Входящий интерфейс — имя сетевого интерфейса или его локальный IPv4-адрес; пустое поле оставляет выбор системе.
  • Таймаут пира (мс) — сколько молчания в группе терпеть до перезапуска приёма. Пустое поле — разумное умолчание.

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

Мультикаст-источник подключён и работает

Выбор интерфейса приёма

Если мультикаст приходит через отдельную сетевую карту, укажите её в поле Входящий интерфейс на вкладке Источники у входа MPEG-TS/UDP. Например, задайте Хост 239.255.1.77, Порт 5500 и Входящий интерфейс eno2. Вместо имени можно указать IPv4-адрес этой карты, например 192.168.20.10. Подписка на группу будет создана на выбранном интерфейсе, даже если маршрут по умолчанию проходит через eno1.

Поле работает для IPv4-мультикаста, в том числе при приёме от конкретного отправителя (SSM). Для IPv6 оставьте его пустым: явный выбор интерфейса для IPv6 не поддерживается. Для юникаста это поле не выбирает интерфейс приёма. Чтобы вернуть выбор по таблице маршрутов ОС, очистите поле и сохраните настройки. Смена интерфейса пересоздаёт подписку и кратковременно прерывает приём.

Имя или адрес должны принадлежать стримеру, который принимает поток. Если интерфейс не найден или у него нет IPv4-адреса, источник не запустится; причина появится в состоянии входа. В кластере проверьте настройку на каждом стримере, где может быть размещён этот стрим.

Если источник задаётся URL, используйте udp://239.255.1.77:5500?interface=eno2. Также поддерживается формат udp://eno2@239.255.1.77:5500; если задан и параметр interface, он имеет приоритет.

Интерфейс для отправки мультикаста задаётся отдельно у каждого пуша.

Приёмный буфер

Ядро ОС держит у UDP-сокета очередь входящих датаграмм: пока стример занят другим, пакеты ждут в ней, а не пропадают. Поле Приёмный буфер (байт) у входа задаёт размер этой очереди. Пустое поле — умолчание 4 МиБ, около секунды целого мультиплекса в 30–40 Мбит/с; стоковых 212 КиБ хватило бы лишь на 40–50 мс, и любая заминка планировщика оборачивается потерями, которые в счётчиках выглядят как CC-ошибки.

Что важно знать:

  • Сокет один на адрес. Все стримы с одной группой и портом делят и буфер: действует последняя явная настройка любого из них, а смена применяется на лету, без пересоздания подписки.
  • Ядро может урезать запрос. Без прав CAP_NET_ADMIN размер ограничен системным параметром net.core.rmem_max — под полем появится предупреждение с фактическим размером. Поднимите rmem_max до запрошенного или дайте стримеру CAP_NET_ADMIN: тогда запрошенное применяется целиком.
  • Карточка здоровья называет причину. Если ядро начало терять датаграммы, вход помечается проблемой «Приёмный буфер мал», а под полем появляется подсказка «не меньше N» — сколько байт держат 200 мс текущего битрейта. CC-ошибки и разъезд дорожек рядом с ней — следствия: сначала поднимайте буфер.

Запаса меньше 200 мс битрейта не хватает — форма подсказывает, до скольких байт поднимать буфер

Потери датаграмм названы в карточке здоровья: причина — приёмный буфер, CC-ошибки и разъезд — её следствия

Что должно быть верно в сети

  • Мультикаст не ходит через интернет. Стример, принимающий группу, должен сидеть в том же сегменте сети, что и её источник, — или сеть между ними должна маршрутизировать мультикаст.
  • Подписку делает стример. Он шлёт IGMP-запрос на вступление в группу; коммутаторы с IGMP snooping доставляют поток только подписчикам. Ничего настраивать на стримере для этого не нужно — важно, чтобы сеть подписку пропускала.
  • Один вход — одна группа и порт. Каждому стриму — своя группа: так их раздаёт и головная станция.

Дальше по задачам

  • Поток из группы обычно уже сжат (H.264 или MPEG-2). H.264/AAC играется как есть; если головная станция отдаёт MPEG-2 — добавьте транскодер, иначе браузерные плееры поток не прочитают.
  • У TS-входов есть счётчик ошибок непрерывности: порог Лимит CC-ошибок переводит источник в «деградировал» при потерях пакетов — см. Резервирование источников.
  • Мультикаст-группа может быть и резервом: второй вход с приоритетом ниже основного.

Если группа не захватилась

  • Карточка «Мёртв», битрейта нет. До стримера не доходят пакеты: неверная группа или порт, другой VLAN, IGMP-запрос не пропущен коммутатором, файрвол режет UDP. Проверяйте с машины стримера — подписывается именно он.
  • Битрейт есть, стрим не зелёный. Поток приходит, но в нём не находится ожидаемых дорожек — смотрите карточку здоровья: что стример разобрал из потока.
  • Источник моргает: работает — деградировал. Потери пакетов в сети; счётчик CC-ошибок в карточке растёт. Это сетевая проблема, а не проблема стрима.