PS1, SRT и RIST

Peer-протоколы надёжной передачи: потерянные пакеты передаются повторно по запросу приёмника, поэтому у всех трёх есть буфер приёма и запас полосы на ретрансмиссию. Выбор протокола, расчёт полосы и задержки описаны в Peer-протоколы надёжной передачи и Планирование полосы, задержки и портов, шифрование — в Шифрование потоков.

Сторону, устанавливающую соединение, каждый протокол определяет по-своему: у PS1 подключается всегда приёмник, у SRT сторону выбирают настройкой, у RIST она следует из адресов. Это решает, где нужен открытый порт, а где достаточно исходящего соединения.

PS1

Протокол собственной разработки (PS1 (Perfect Stream)). Соединение всегда устанавливает приёмник, поэтому вход подключается к передатчику, а выход слушает порт. Режима выбора стороны нет.

Вход

Поле

Назначение

Значения

Address (source host)

Узел-передатчик, к которому подключается приёмник. Обязательное поле.

адрес или имя хоста

Port

Порт передатчика. Обязательное поле.

1–65535

«Логин», «Пароль»

Учётные данные, которые приёмник предъявляет передатчику; тот сверяет их со своим списком логинов (Пользователи / Логины). Пустой логин означает авторизацию по IP-адресу приёмника. Значение должно быть короче 32 байт: более длинное приёмник отвергает сам, не отправляя запроса, и вход остаётся в ошибке. Вместо ручного ввода доступен автовход Meshwork — см. ниже.

по умолчанию пусто

Passphrase

Парольная фраза шифрования; должна совпадать с передатчиком. Несовпадение протокол не распознаёт: соединение установится, а поток не будет разбираться как MPEG-TS — в тексте ошибки узел напоминает, задана ли фраза на этой стороне.

10–64 байта либо пусто

Start timeout (s)

Сколько ждать ответа передатчика на запрос авторизации. Не дождавшись, приёмник переподключается.

5–3600, по умолчанию 10

Play timeout (s)

Сколько работающее соединение может молчать, прежде чем приёмник признает его разорванным. Это время реакции на аварию источника.

5–3600, по умолчанию 10

Latency (ms)

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

250–10000, по умолчанию 3000

RTT (initial estimate) (ms)

Начальная оценка времени прохождения сигнала, только на первые секунды после подключения: дальше приёмник измеряет его сам и подстраивает повторные передачи. Ноль здесь не означает «автоматически» — он просто ниже допустимого предела.

40–10000, по умолчанию 300

Автовход Meshwork. У входа PS1 логин и пароль можно не вводить: кнопка «Использовать автовход meshwork» переключает вход на доменную авторизацию, при которой учётные данные формируются автоматически и обновляются при каждом переподключении, а заводить учётную запись на передатчике не нужно (Соседи и секреты). Требуется домен узла. Обратное переключение — «Переключиться на ручной вход…» — очищает автовход и запрашивает подтверждение.

Выход

Поле

Назначение

Значения

Listening port

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

1–65534

Bind interface

Интерфейс, на котором слушается порт; выбирается из списка интерфейсов узла. Пустое значение — любой интерфейс. Отсутствующий на узле интерфейс ошибкой не считается: выход в этом случае слушает все интерфейсы, как при пустом поле.

по умолчанию любой

Passphrase

Парольная фраза шифрования; должна совпадать с приёмниками.

10–64 байта либо пусто

Latency (ms)

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

от 3000, по умолчанию 6000

Trace

Запись подключений и отказов в журнал потока.

по умолчанию выключено

SRT

Открытый протокол на базе UDP (SRT). Сторона, устанавливающая соединение, выбирается настройкой «Listen mode» — и она же меняет смысл нескольких полей, поэтому её задают первой.

«Listen mode» у входа выключен по умолчанию: вход подключается к передатчику сам (caller). У выхода он, наоборот, включён: выход слушает порт и раздаёт поток подключившимся (listener). Большинство полей окно показывает в обоих режимах, даже когда в текущем они не действуют; скрываются только два — «Enable billing» у выхода и предложение автовхода Meshwork у входа.

Вход

Поле

Назначение

Значения

Listen mode

Выключено — вход подключается к указанному адресу и порту. Включено — вход слушает порт и ждёт подключения.

по умолчанию выключено

Address

При выключенном «Listen mode» — узел-источник, к которому подключается вход; здесь допустимо и имя узла. При включённом — единственный адрес, с которого принимается подключение, и его задают числом: имя узла или опечатка распознаны не будут и равносильны отсутствию ограничения, как и пустое поле.

адрес или имя хоста

Port

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

1–65535

Bind interface

Интерфейс: в режиме ожидания на нём слушается порт, при подключении к источнику с него уходит исходящее соединение. Выбирается из списка интерфейсов узла.

по умолчанию любой

«Логин», «Пароль»

При подключении к источнику из них формируется идентификатор потока (stream ID), предъявляемый передатчику. В режиме ожидания используется только логин — это идентификатор, который обязан предъявить подключающийся: сравнение точное, целой строкой (SRT: авторизация по логину и паролю в стороннем ПО).

по умолчанию пусто

Passphrase

Парольная фраза шифрования соединения. Обе стороны должны задать одинаковую фразу либо обе оставить поле пустым. При подключении к источнику несовпадение узнаётся по отказу партнёра: вход переходит в состояние ожидания администратора и вызывает оповещение. В режиме ожидания подключение просто не устанавливается, и вход продолжает ждать.

10–79 байт либо пусто

AES key length

Длина ключа шифрования. Действует только при заданной парольной фразе.

AES-128 (по умолчанию), AES-192, AES-256

Latency (ms)

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

от 120, по умолчанию 1000

Loss max TTL

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

от 0, по умолчанию 0

Overhead (%)

Запас полосы сверх битрейта потока, который протокол вправе потратить на повторные передачи. Действует, пока «Max bandwidth» равен нулю.

5–100, по умолчанию 25

Max bandwidth (B/s)

Жёсткий предел скорости отправки в байтах в секунду. Запас в процентах действует только при нуле: тогда предел выводится из измеренного битрейта и этого запаса. Значение −1 снимает ограничение, положительное задаёт предел прямо — и в обоих случаях запас в процентах перестаёт действовать.

от −1, по умолчанию 0

Connect timeout (ms)

Допустимое время молчания партнёра, по истечении которого соединение считается разорванным. Для стороны, устанавливающей соединение, это ещё и таймаут самого подключения.

от 0, по умолчанию 3000

Disable TSBPD

Отключает выдачу пакетов по меткам времени: пакеты отдаются сразу по приходе. Задержка минимальна, но выравнивания и упорядочивания на стороне SRT больше нет — и настройка Latency перестаёт управлять выдачей. Применяют на плотных приёмных узлах, где синхронизацию берёт на себя джиттер-буфер узла (Синхронизация).

по умолчанию выключено

Вход в режиме ожидания принимает одно подключение: пока приёмник занят одним источником, второй не подключится. Чтобы принимать несколько источников, добавляют несколько входов (Резервирование источников и раздача).

Автовход Meshwork доступен и здесь, при подключении к источнику: он подставляет доменный идентификатор потока вместо логина и пароля (Соседи и секреты). В режиме ожидания подключений этой возможности нет, но подключение от узла того же домена принимается и там — по доменному идентификатору, помимо обычной проверки.

Выход

Поля шифрования и настройки канала — те же, что у входа. Отличия:

Поле

Назначение

Значения

Listen mode

Включено — выход слушает порт, и к нему подключается несколько приёмников, каждый со своей авторизацией. Выключено — выход сам подключается к указанному адресу и отдаёт поток одному приёмнику.

по умолчанию включено

Address

Адрес приёмника. Обязателен, когда «Listen mode» выключен; в режиме ожидания подключений не используется.

адрес или имя хоста

Port

Локальный порт в режиме ожидания (можно оставить нулевым — узел подберёт свободный) либо порт приёмника при подключении. Обязательное поле.

1–65534

Bind interface

Интерфейс: в режиме ожидания на нём слушается порт, при подключении к приёмнику с него уходит исходящее соединение.

по умолчанию любой

Meshwork peer auth

Доменная авторизация вместо идентификатора потока — при подключении к приёмнику того же домена (Соседи и секреты). В отличие от входа, здесь это обычный выключатель, и в режиме ожидания он тоже показан, хотя не действует.

по умолчанию выключено

SRT stream id

Идентификатор потока, который выход предъявляет приёмнику при подключении к нему. В режиме ожидания не используется — там идентификатор предъявляет подключающийся.

по умолчанию пусто

Enable billing

Только при подключении к приёмнику: перед соединением выход запрашивает разрешение у сервера биллинга. Отказ или недоступность сервера останавливают выход до вмешательства администратора — поток не уходит неавторизованным. В режиме ожидания поле не показывается: там каждое подключение авторизуется отдельно.

по умолчанию выключено

Packets per datagram

Сколько TS-пакетов укладывается в одно сообщение SRT. Семь пакетов заполняют стандартные 1316 байт; меньшее значение немного снижает задержку ценой заметно больших накладных расходов. Изменение переоткрывает выход.

1–7, по умолчанию 7

Trace

Запись подключений, отказов и отключений приёмников в журнал потока.

по умолчанию выключено

RIST

Открытый протокол на базе RTP/RTCP с повторной передачей по NACK (RIST). Пир у RIST не один: и вход, и выход работают со списком пиров, что даёт резервирование по нескольким путям и раздачу сразу нескольким получателям.

Профиль Main укладывает данные и служебный канал в один порт, и только в нём работает шифрование. Профиль Simple занимает два порта подряд, поэтому базовый порт должен быть чётным, а парольная фраза в этом профиле не действует.

Список пиров

Пиры задаются таблицей «Пиры RIST»: одна строка — один пир, столбцы Address, Port, Interface и Weight. В подписи столбца стоит подсказка о его обычном применении, и она разная у входа и выхода: на входе — Address (multicast) и Interface (unicast), на выходе — Address и Interface (multicast). Кнопка «Добавить пир» добавляет строку, «Удалить пир» — убирает; пустая таблица сопровождается надписью «Пиров пока нет.» Ноль в столбцах Port и Weight показан пустой ячейкой.

Столбец

Назначение

Значения

Address

Адрес пира. На входе это адрес, с которого принимается поток: группа multicast делает вход приёмником группы, пустая ячейка означает приём unicast — и тогда сокет привязывается к адресу из столбца Interface. На выходе — адрес получателя, и он обязателен. Смешивать группы multicast и адреса unicast в одном списке нельзя.

адрес

Port

Порт пира. Обязателен у каждой строки. В профиле Simple порт должен быть чётным — соседний порт занимает служебный канал.

1–65535

Interface

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

имя интерфейса или его адрес

Weight

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

от 0, по умолчанию 0

В каталог домена вход RIST попадает только пирами с адресом multicast; приём unicast там не объявляется (Общий каталог ресурсов).

Сохранение блокируется, пока таблица не заполнена: «Добавьте хотя бы один пир.», «У каждого пира должен быть порт от 1 до 65535.», «У каждого пира должен быть адрес.» — на выходе, «У каждого пира должен быть адрес (multicast) или интерфейс (unicast).» — на входе. Ещё три сообщения повторяют проверки узла, чтобы не встречать их отказом при сохранении: «В профиле Simple порт каждого пира должен быть чётным.», «Для unicast-пира на входе нужен интерфейс привязки.» и «Все пиры должны быть либо multicast, либо unicast — смешивать нельзя.»

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

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

Вход

Поле

Назначение

Значения

RIST profile

Формат передачи. Main — один порт, доступно шифрование. Simple — два порта подряд, без шифрования.

Simple, Main (по умолчанию)

Allowed peer IP

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

по умолчанию пусто

Passphrase

Парольная фраза шифрования; должна совпадать у обеих сторон. Длина не ограничивается, но учитываются только первые 127 байт. Действует лишь в профиле Main.

по умолчанию пусто

Session timeout (ms)

Сколько пир может молчать, прежде чем сессия будет разорвана. Меньшее значение ускоряет обнаружение отказавшего пути, слишком малое — вызывает разрывы на нестабильном канале.

от 100, по умолчанию 2000

Recovery RTT min (ms), Recovery RTT max (ms)

Границы, в которые укладывается измеренное время прохождения сигнала при расчёте интервала повторных запросов. Размер буфера восстановления они не задают — он фиксирован.

от 10; по умолчанию 50 и 500

Trace

Запись событий пиров в журнал потока. Изменение настройки перезапускает вход.

по умолчанию выключено

Выход

Та же таблица пиров, тот же профиль, парольная фраза и настройки восстановления. Отличия:

Поле

Назначение

Значения

Auth type

None — подключение принимается от любого пира. Embedded — пир авторизуется по IP-адресу по списку логинов узла (Пользователи / Логины); неизвестный адрес отклоняется.

None (по умолчанию), Embedded

Packets per datagram

Сколько TS-пакетов укладывается в одну датаграмму. Семь пакетов заполняют стандартные 1316 байт. Изменение переоткрывает выход.

1–7, по умолчанию 7