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 |