Требования к сети для ST 2022-7

Важно

Бета-версия 2.1. Описанное здесь есть только в бета-версии 2.1: она ставится из бета-репозитория и только с лицензией, в стабильной версии 2.0.2 и в демоверсии этого нет. Бета-версия поставляется без гарантий, поддержка — по возможности (Программа бета-тестирования).

SMPTE ST 2022-7 — бесшовное резервирование: один и тот же поток RTP идёт к приёмнику двумя путями, и приёмник собирает их в один по порядковым номерам RTP-пакетов. Пакет, потерянный на одном пути, берётся с другого; переключения нет, и на выходе приёмника потеря не видна. Защита ровно настолько надёжна, насколько независимы пути: всё, что у двух путей общее, остаётся единой точкой отказа.

В Perfect Streamer второй путь настраивается у входа и выхода типа RTP (RTP):

  • вход принимает второй путь — path2-address и path2-port, интерфейс path2-bind-if, источник для SSM path2-ssm-address и окно ожидания path-skew-ms;

  • выход отправляет те же пакеты вторым путём — path2-address и path2-port, интерфейс path2-mcast-if.

Оба пути должны нести один и тот же поток: тот же SSRC и ту же нумерацию пакетов. Если пути различаются, они не смешиваются — используется только первый путь, а узел поднимает алерт кода 76 (input-paths-differ, Перечень алертов). Вход и выход Pro-MPEG работают со вторым путём так же, как RTP; FEC второго пути идёт на его собственные FEC-порты, а мультиплексирование Pro-MPEG со вторым путём не сочетается (Pro-MPEG).

Два независимых пути

Главное требование — две раздельные сети, условно «красная» и «синяя», каждая со своими коммутаторами, линиями и питанием. Общий коммутатор, общий магистральный канал или общий источник питания на обоих путях — единая точка отказа, и при её сбое пропадают оба пути сразу.

На узле желательны две сетевые карты, по одной на каждую сеть. Входу второй путь назначается полем path2-bind-if, выходу — полем path2-mcast-if (имя интерфейса или его IPv4-адрес; пустое значение — интерфейс системы по умолчанию). Если второй путь выхода открыть не удалось, например path2-mcast-if называет адрес, которого на этом сервере нет, выход продолжает отправку первым путём, а ошибка второго пути показывается в статистике выхода.

Multicast

Если пути — multicast-группы, обе сети должны пропускать multicast сами по себе:

  • на коммутаторах включён IGMP snooping;

  • в каждой из двух сетей работает IGMP querier. Без него snooping через несколько минут перестаёт пересылать группу, и путь пропадает без видимой причины;

  • при приёме с указанием источника (SSM, path2-ssm-address для второго пути) сеть должна поддерживать IGMPv3;

  • если пути проходят через маршрутизаторы — в обеих сетях настроен PIM, а TTL пакетов достаточен, чтобы пройти все участки.

Полоса

Каждый путь несёт поток целиком, поэтому трафик удваивается: на каждую сеть закладывайте полный битрейт потока. Если к потоку добавляется FEC, его доля тоже идёт по каждому пути (Планирование полосы, задержки и портов).

Разница задержек путей

Задержки двух путей различаются, и разница должна укладываться в окно приёмника path-skew-ms: от 10 до 1000 мс, по умолчанию 450 мс — класс C стандарта ST 2022-7 (потоки ниже 270 Мбит/с). Это наибольшее время, которое приёмник ждёт пропущенный пакет с отстающего пути. Ожидание отсчитывается с момента, когда пропуск обнаружен, то есть когда опережающий путь уже доставил следующие пакеты. Потеря нескольких пакетов на опережающем пути восстанавливается, пока отстающий путь отстаёт не больше чем на path-skew-ms плюс длительность этих пакетов.

В реальных сетях пути обычно различаются на единицы или десятки миллисекунд. Если задержки путей известны и близки, path-skew-ms можно уменьшить: приёмник будет добавлять меньшую задержку. Собственная задержка потока на узле должна покрывать это окно.

Что не требуется

  • Jumbo-кадры. Семь TS-пакетов в RTP-пакете укладываются в обычный MTU 1500 байт.

  • PTP и синхронизация часов. Пути сводятся по порядковым номерам RTP-пакетов, а не по времени, — в отличие от SMPTE ST 2110.

  • Особые функции ST 2022-7 в коммутаторах. Достаточно обычной передачи unicast или multicast.

Рекомендации

  • В общей с другим трафиком сети дайте потокам приоритет QoS (DSCP), иначе всплеск чужого трафика задержит или потеряет пакеты сразу на обоих путях.

  • Не ведите оба пути через один агрегированный канал (LAG) или один магистральный канал: это та же единая точка отказа, что и общий коммутатор.

  • У выхода в группе резерва оба пути отправляет узел, выбранный отправителем группы. Задайте path2-mcast-if на каждом участнике группы: по второму пути узлы тоже следят за отправителем.