RealTime в Asterisk: архитектура и конфигурация

RealTime в Asterisk: архитектура и конфигурация с 5 октября по 9 октября

Количество
свободных мест

8 Записаться

Курсы по Mikrotik MTCNA

Курсы по Mikrotik MTCNA с 6 апреля по 10 апреля

Количество
свободных мест

7 Записаться

Курс по Zabbix

Zabbix: мониторинг Asterisk и VoIP с 7 сентября по 11 сентября

Количество
свободных мест

8 Записаться
Asterisk SFU — что такое хорошо и что такое плохо
10
Доклад
Юрий Горличенко
Asterisk SFU — что такое хорошо и что такое плохо

Мир видеоконференций сегодня кажется привычным и простым: нажал кнопку — и ты в эфире. Однако за этой простотой скрывается серьезная инженерная борьба двух подходов к передаче медиаданных. Если говорить на уровне понятийного аппарата, то любое решение для видеосвязи строится либо по принципу MCU (Multipoint Control Unit), либо по схеме SFU (Selective Forwarding Unit). Выбор между ними — это не просто технический нюанс, а фундаментальное решение, которое определяет, будет ли «взлетать» ваш сервер или «закипать» ноутбук пользователя.

Понимание этих основ критически важно для тех, кто планирует развивать свои системы коммуникаций. Несмотря на то что Asterisk исторически считался инструментом для голоса, его развитие в сторону WebRTC и видео заставляет погружаться в детали маршрутизации видеопотоков. Грамотная установка Asterisk сегодня требует понимания того, как именно система будет справляться с видео-трафиком, чтобы не превратить сервер в бесполезную «печку».

Архитектура MCU: классический «микшер» медиапотоков

Технология MCU — это классика, пришедшая из мира «тяжелого» телекома. Представьте себе сервер, который работает как огромный видеоредактор в реальном времени. Каждый участник конференции отправляет на этот сервер один поток своего видео и аудио. Сервер принимает эти данные, расшифровывает их, расклеивает пакеты, меняет размер картинки и собирает из них общую мозаику — так называемую «сетку». Затем он заново кодирует этот результат в один поток и рассылает его всем участникам.

Основные характеристики работы MCU:

  • Низкая нагрузка на клиента. Пользователь получает всего один входящий поток, какой бы масштабной ни была конференция. Это идеально для старых планшетов или специализированных аппаратных терминалов.
  • Огромная нагрузка на сервер. Декодирование и повторное кодирование видео (транскодинг) — это невероятно ресурсозатратная задача. Чтобы обслуживать десятки таких конференций, требуются колоссальные мощности CPU и GPU.
  • Фиксированная верстка. Поскольку картинку формирует сервер, пользователь не может сам «перетащить» окно собеседника или изменить масштаб. Он видит то, что ему прислал «центр».

В open-source проектах полноценный MCU встречается редко именно из-за сложности реализации качественного микширования видео. Это дорого, сложно в разработке и требует специфического «железа». Чаще всего MCU используют там, где нужно объединить в одну сеть очень разношерстные устройства с разной пропускной способностью каналов.

Архитектура SFU: интеллектуальный роутер пакетов

SFU — это современный стандарт для WebRTC-решений и большинства популярных сервисов видеосвязи. Принцип работы здесь кардинально другой. Сервер перестал быть «микшером» и стал «интеллектуальным маршрутизатором». Когда участник отправляет свое видео, SFU-сервер не заглядывает внутрь видеопотока. Он просто берет эти пакеты и дублирует их всем остальным участникам, которые должны видеть этого спикера.

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

Почему SFU захватил мир:

  1. Масштабируемость. На одном стандартном сервере можно держать в разы больше участников, чем при использовании MCU.
  2. Гибкость интерфейса. Клиентское приложение само решает, кого из участников показывать крупно, а кого скрыть.
  3. Низкая задержка. Отсутствие этапа перекодирования на сервере значительно сокращает время доставки кадра от отправителя к получателю.

Если вы хотите глубоко разобраться в том, как настраивать подобные системы и управлять медиа-трафиком, стоит обратить внимание на специализированные курсы по Asterisk, где эти темы разбираются на практике.

Почему это сложно: проблема «взлетающего» MacBook

Часто можно услышать, что SFU — это легкая задача, ведь нужно «просто перекидывать пакеты». Но на практике это превращается в интенсивную задачу для клиентских устройств. Когда в конференции участвует 10–15 человек, ноутбук пользователя начинает активно шуметь вентиляторами. Это происходит потому, что декодирование 15 видеопотоков одновременно — это тяжелый труд для процессора.

Кроме того, возникает проблема сетевого канала. Если в MCU нагрузка на канал пользователя была константной (один поток), то в SFU она растет линейно с каждым новым участником. Если у вас 20 собеседников, и каждый шлет видео в хорошем качестве, ваш интернет-канал может просто не выдержать такой нагрузки.

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

Механизмы оценки полосы пропускания (EBR)

Ключевая задача любого хорошего ПО для конференций — это Bandwidth Estimation (оценка полосы пропускания). Без этого видеосвязь превращается в набор застывших кадров. Сервер должен постоянно отвечать на вопрос: «Сколько данных я могу впихнуть в этот канал прямо сейчас, чтобы ничего не сломалось?».

В протоколе RTP для этих целей используется обратная связь через RTCP-пакеты. Существует три основных подхода к этой задаче:

  1. RTCP Receiver Reports (RR). Самый старый и простой метод. Получатель раз в несколько секунд отправляет отчет: «Я получил столько-то пакетов, потерял столько-то». На основе этих потерь сервер делает вывод — если потери растут, значит, канал забит, надо снижать битрейт. Проблема в том, что этот метод работает «по хвостам»: когда отчет пришел, пользователь уже увидел плохую картинку.
  2. REMB (Receiver Estimated Maximum Bandwidth). Более продвинутый вариант, предложенный Google. Здесь клиент сам анализирует задержки между пакетами. Если пакеты начинают приходить с задержкой (джиттер растет), клиент понимает, что буферы на маршрутизаторах переполнены. Он вычисляет доступную полосу и говорит серверу: «Шли мне не больше 500 кбит/с». Сервер мгновенно реагирует.
  3. Transport-wide Congestion Control (TCC). Самый современный метод. Клиент вообще не занимается расчетами. Он просто шлет серверу очень короткие отчеты о каждом полученном пакете. А вся математика и логика принятия решений переносится на сервер. Это позволяет реализовывать очень сложные и быстрые алгоритмы адаптации.

Для защиты таких систем от внешних угроз и обеспечения их стабильности крайне важна правильная защита IP-ATC, так как открытые порты для видео — это всегда дополнительный риск.

Как это реализовано в Asterisk

Asterisk прошел долгий путь в работе с видео. В нем реализован модуль ConfBridge, который поддерживает режим SFU. Разработчики сознательно выбрали путь SFU, так как создание полноценного MCU-движка внутри Asterisk потребовало бы переписать значительную часть ядра и привело бы к колоссальным затратам ресурсов.

В текущей реализации Asterisk умеет работать с REMB. В коде RTP-движка можно найти механизмы, которые позволяют системе принимать сообщения о желаемом битрейте и транслировать их отправителю. Это позволяет Asterisk не просто «кидать пакеты», а участвовать в управлении качеством связи.

Особенности работы Asterisk с видео:

  • Система умеет обрабатывать RTCP-отчеты и понимать состояние канала.
  • Реализована поддержка различных видеокодеков (VP8, VP9, H.264), что важно для совместимости с разными браузерами.
  • Присутствуют механизмы для борьбы с потерями пакетов, такие как NACK (Negative Acknowledgment), когда клиент просит сервер переотправить конкретный потерянный пакет видео.

Однако стоит помнить, что видеосвязь — это всегда высокая нагрузка на сеть. Для стабильной работы может потребоваться приоритезация трафика QoS, чтобы пакеты видео и голоса не стояли в одной очереди с обычным скачиванием файлов.

Тонкие моменты и «подводные камни»

При эксплуатации SFU на базе Asterisk часто возникают вопросы по поводу эхоподавления. Важно понимать, что в видеоконференциях (в отличие от обычных звонков) эхо обычно давится на стороне клиента. Если сервер начнет пытаться анализировать пакеты и вырезать эхо в режиме SFU, это убьет всю производительность, так как придется декодировать потоки. Пытаться «давить эхо» на сервере в SFU-режиме — это путь к потере пакетов и огромным задержкам.

Еще один нюанс — работа в сетях со сложной топологией. Если у вас есть участники за NAT или в закрытых корпоративных сетях, вам неизбежно придется столкнуться с настройкой STUN/TURN серверов. Без них WebRTC-соединение в SFU-режиме часто просто не может установиться.

Если ваша система начинает вести себя странно — видео пропадает или звук идет рывками — возможно, дело не в самом софте, а в сетевых атаках или неправильной конфигурации безопасности. В таких случаях помогает профессиональный аудит IP-ATC, который поможет выявить реальные причины деградации качества.

 

Заключение

Подводя черту под этим техническим экскурсом, можно выделить несколько ключевых выводов:

  • MCU — это решение для специфических задач, когда нужно экономить трафик клиента ценой огромных затрат на сервер. Оно постепенно уходит в нишевые проприетарные продукты.
  • SFU — это стандарт де-факто для современной гибкой связи. Это то, что используется в Zoom, Teams и то, что доступно в Asterisk.
  • Качество видео напрямую зависит от механизмов оценки канала (EBR). Если ваша система не поддерживает REMB или TCC, вы получите «стробоскоп» при малейших проблемах с интернетом.
  • Asterisk — вполне рабочее решение для построения SFU, если понимать его ограничения и правильно настраивать взаимодействие с клиентами.
  • Главное в видеоконференциях — это баланс. Баланс между нагрузкой на процессор и качеством картинки, между задержками и стабильностью. Понимая, как пакеты бегают между MCU и SFU, вы сможете построить систему, которая будет работать стабильно, а не просто «картинку показывать».

Ежегодная конференция по Asterisk 2026!

Билеты уже в продаже!

Остались вопросы?

Я - Игорь Кондрашин, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

Наши
клиенты

Посмотреть все