Мультикастинг


Мультикастинг (multicasting) - это процесс одновременной доставки видео сигнала нескольким получателям. Все получатели имеют одинаковый сигнал в одно и то же время, как и в обычном телевидении. Можно сказать, что все ТВ вещание (спутниковое, эфирное, кабельное) соответствует концепции мультикастинга. Однако термин "мультикастинг" используется в основном в контексте с IP сетями.

Для более точного понимания термина мультикастинг, рассмотрим для начала процесс юникастинг (unicasting). При юникастинге каждый видеопоток предназначен только для одного получателя. Если несколько абонентов хотят смотреть одну и ту же программу (фильм), то источнику сигнала необходимо создать соответствующее число юникастовых потоков от источника до каждого получателя.

Говоря про юникастовое вещание в IP сетях, мы говорим о традиционном пути, по которому проходят пакеты видеопотока от источника до получателя. Источник видеопотока подготавливает каждый пакет с указанием IP адреса получателя и пакеты проходят по сети с незначительными модификациями, заключающимися в основном в изменении поля TTL (Time To Live). Соответственно, когда один и тот же видеопоток запрашивают несколько получателей, источник должен подготовить соответствующее количество IP пакетов со своими IP адресами получателей. При увеличении количества юникастовых запросов возрастает загрузка источника, что в конечном итоге приведет к невозможности создавать новые индивидуальные IP пакеты. Например, если мы хотим организовать вещание для 20-ти пользователей и передавать видеопоток со скоростью 2.5 Mbps, то нам необходимо обеспечить сетевое соединение источника с пропускной способностью по крайней мере 50 Mbps.

Основным преимуществом юникастового вещания является то, что абонент может посмотреть именно то, что он хочет в данный момент времени. Обычно системы юникастового вещания дополняются функциями обеспечивающими остановку, паузу и перемотку при просмотре. Системы юникастового вещания не требуют специального оборудования, как для мультикастовых приложений. Данные системы могут работать даже на базе Internet.

К недостаткам юникастовых систем можно отнести необходимость наличия большого процессорного и сетевого ресурса на источнике видеопотоков. Также необходима достаточная полоса пропускания между источником и получателем, даже в случае, когда, например, 50 получателей, находящихся в одном здании захотят одновременно смотреть каждый свою программу - в данном случае полоса пропускания сети должна быть по крайней мере в 50 раз больше, чем ширина канала, необходимая для передачи одного видеопотока. Источник видеосигнала должен следить за состоянием каждого сетевого устройства, пославшего запрос на просмотр, а это тоже отнимает ресурсы.

При мультикасте один видео поток могут получить одновременно все абоненты сети. Используя специальные протоколы, сеть направляет копии данного потока каждому получателю. Процесс создания копий видеопотока происходит внутри самой сети, не затрагивая ресурсы источника видеопотока. Копии видеопотока доставляются до каждого получателя, только если от него поступал соответствующий запрос.

Напомним, что IP сети поддерживают функцию, названную бродкастинг (broadcasting - широковещательные пакеты, при котором IP пакет доставляется каждому сетевому устройству. Каждое устройство, получившее такой широковещательный пакет, должно его обработать соответствующим образом. Широковещательные пакеты не должны использоваться для организации видео вещания, не смотря на то, что пакеты небольшие, они могут "забить" все сетевые устройства сети, даже если они данным устройством не запрашивались. В то же время большинство маршрутизаторов сетей сконфигурированы на запрет пересылки широковещательных пакетов из одной сети в другую, что также ограничивает возможность использования бродкастовых пакетов для организации видео вещания. IP мультикастинг в чистом виде подразумевает пересылку пакетов только тем устройствам, которые выполнили соответствующий запрос, тем самым присоединившись (joining) к мультикасту.

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

Большинство сетевых устройств (таких как маршрутизаторы) имеют возможности обработки мультикастовых пакетов, но по умолчанию в большинстве сетей данная функция заблокирована, ввиду значительного увеличения нагрузки по обработки данных пакетов. Например, предположим, что на 12-ть портов маршрутизатора поступили запросы на просмотр мультикастового вещания. Эти порты должны быть соединены либо с конечным получателем, либо с другим маршрутизатором, если запросы пришли из других подсетей. Мультикасту необходимо создать 12 копий мультикастовых пакетов и послать каждую копию на свой порт, откуда поступили запросы. В тоже время, маршрутизатор должен постоянно следить за каждым портом на предмет поступления новых запросов и/или окончания просмотра на одном из портов. Данная функция поддерживается соответствующим программным обеспечением маршрутизатора.

Отметим еще раз, что мультикаст является однонаправленной системой, по аналогии с эфирным вещанием. Не существует механизма по собиранию и отправки запросов от конечных получателей к источнику, влияющих на процесс мультикаста.

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

В мультикастовых системах все получатели могут смотреть одновременно один и тот же видеопоток. Вот почему, когда новый пользователь захочет смотреть этот поток, он должен присоединиться (join) к мультикастовому потоку. Источник мультикастового потока отвечает за периодическую рассылку доступности видеопотока для пользователей сети (за это отвечают SAP пакеты). Пользователи, которые хотят присоединиться к мультикастовому потоку должны сперва получить и проанализировать SAP пакеты, в которых содержится информация как сконфигурирован выбранный мультикастовый поток, после чего пользователь может выполнить подсоединение к потоку.
Когда маршрутизатор получил запрос от пользователя на присоединение к мультикасту, он должен выполнить несколько действий. Сперва маршрутизатор должен определить, формировал ли уже он нужные пакеты для другого пользователя. Если да, то ему остается только создать копию этих пакетов и послать их новому пользователю. Если же нет, то маршрутизатор должен сделать соответствующий запрос устройству, находящемуся ближе к источнику видеопотока (выше по сетевой иерархии). После получения ответа от него, маршрутизатор должен направить полученные мультикастовые пакеты получателю. В данном случае (при мультикасте) в сети присутствуют только копии одного видеопотока, что уменьшает занимаемую полосу пропускания всей сети по сравнению с юникастовыми системами.

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

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

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

Архитектура мультикаст систем

Мультикастинг в IP сетях основан на IGMP (Internet Group Management Protocol). Данный протокол был разработан в 80-х гг и подвергался нескольким доработкам. Наибольшее распространение получил протокол IGMP Version 2 (V2). Последней версией является V3, но она не так распространена.

Назначением IGMP является предоставление информации для маршрутизатора о мультикастовых потоках/пакетах. Маршрутизаторы выполняют большую работу по обработке мультикастовых пакетов: пересылка и замена мультикаст пакетов для всех получателей, которым эти пакеты предназначены; правильная пересылка пакетов между портами; копирование входных мультикаст пакетов на несколько выходных портов в случае такой необходимости.

SAP (Session Announcement Protocol) используется для периодического информирования мультикаст абонентов о программах (видео и звуковых потоках), которые присутствуют в мультикаст потоках сети. SAP напоминает телегид-сервис, присутствующий в некоторых кабельных сетях, когда в передаваемом списке присутствуют названия программ и номера их каналов. По аналогии, SAP используется для информирования о каждом мультикаст потоке, включая название программы и настройки для подключения к нему.

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

По умолчанию, SAP соединение происходит на групповом адресе 224.2.127.254 порт 9875. Специальное программное обеспечение на абонентских устройствах преобразует информацию полученную из SAP в список, удобный к просмотру пользователем. После выбора пользователем интересующей программы абонентское устройство (мультимедиа плеер) выполняет команду на подсоедиение (joining) к соответствующему мультикаст потоку.

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

Пользовательское устройство UD1 первым посылает команду "join" на просмотр доступного мультикаст потока. Маршрутизатор R3, являющийся ближайшим к UD1, определяет, что до этого момента он не получал данный мультикаст поток, поэтому он делает запрос на вышестоящий маршрутизатор R2, переправляющий в свою очередь запрос на R1. Маршрутизатор R1 начинает посылку мультикаст пакетов на R2. Тот - далее на R3, после чего пакеты попадают на UD1. Когда второй пользователь UD2 посылает запрос на получение мультикаст потока, цепочка запросов повторяется: UD2->R5->R4->R2. Т.к. R2 в этот момент времени уже пересылает нужный мультикаст поток другому получателю, то ему остается только сделать копию пакетов и направить их на R4 и далее до UD2 через R5. В следующий момент подключается третий пользователь UD3, подключенный напрямую к R4. Т.к. этому маршрутизатору не нужно инициировать новый поток, то он начинает просто копировать уже существующий.

Рассмотрим процесс отключения. Если пользователь UD1 решил прекратить просмотр, то он посылает команду "leave" (покинуть) на R3. R3 прекращает посылку мультикаст пакетов на UD1. Затем R3 должен проверить необходимость посылки данного мультикаст потока на другие порты и после подтверждения, что в данном потоке больше никто не нуждается, R3 посылает команду "leave" на R2. R2, в свою очередь, видя, что данный поток нужен другим получателям, просто прекращает "тиражирование" мультикаст пакетов на порт, к которому подключен R3. При этом, пользователи UD2 и UD3 продолжают получать мультикаст поток.

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

Напомним основные моменты:

  • между двумя точками сети пересылается только одна копия каждого из мультикаст потоков;
  • не имеет значения сколько получателей данного потока существует после маршрутизатора вниз по иерархии сети.

Важно отметить, что команда "leave" была введена только в версии IGMP V2. В версии 1 маршрутизатор должен был сам посылать запросы на состояние устройства, "слушающего" мультикаст. Если ответа от устройства не поступало, то маршрутизатор должен был самостоятельно прекращать передачу мультикаст пакетов. Если маршрутизатор выполнял такие запросы слишком часто, то это приводило к тому, что канал связи "забивался" такими запросами. Представьте себе ситуацию, если такой метод использовался бы для систем "Видео по запросу по DSL": соединение с устройством может быть быстро "заполнено" мультикаст потоком, которые пользователь больше не смотрит, но при этом абонентское устройство от сети не отсоединено. В версии IGMP V2 данная проблема решается посылкой команды "leave" после прекращения просмотра данного мультикаст потока, что освобождает канал для других приложений и/или мультикаст потоков.

Требования к ресурсам системы

Ввиду того, что большинство IP сетей развернуты с отключенной поддержкой мультикастинга, следует понимать, что произойдет, если эту поддержку включить. Рассмотрим изменения, затрагивающие маршрутизаторы, сервера и полосу пропускания сети.

Переконфигурирование маршрутизаторов

Невозможно описать все тонкости настройки тысяч моделей сетевого оборудования, поэтому перечислим основные функции, которые должны поддерживать маршрутизаторы:

  • Принимать, дублировать и пересылать далее SAP пакеты, которые посылаются каждому устройству, желающему принимать мультикаст вещание. Несмотря на то, что данные пакеты поступают не очень часто, они должны быть соответствующим образом обработаны и пересланы на все порты маршрутизатора, с которых возможны запросы на просмотр мультикаста.
  • Обработчик IGMP пакетов должен определять, когда абонентское устройство делает запрос на подсоединение (join) к мультикасту и запрос на отключение (leave) от мультикаста. Напомним, что при поступлении запроса на подсоединение, маршрутизатор, в случае если этот запрос является первым для данного мультикаста, должен сформировать соответствующий запрос вышестоящему по иерархии маршрутизатору. Соответствующие действия должны быть предприняты и в случае отключения от мультикаста.
  • Тиражирование мультикаст пакетов для обеспечения ими всех портов, с которых поступают запросы. Это может сильно увеличить нагрузку на маршрутизатор, особенно, если данная функция выполняется маршрутизатором программно, что характерно для устаревших маршрутизаторов. Для мультикаст вещания видеопотоков от маршрутизатора потребуется выполнение тиражирования нескольких сотен пакетов в секунду.

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

Загрузка сервера

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

Анализ полосы пропускания

В мультикастовых системах только одна копия видео потока пересылается между маршрутизаторами, и как следствие, канал менее загружен по сравнению с юникаст системами. Рассмотрим пример: сеть на 100 пользователей. 16 из них хотят смотреть одну и ту же программу. Предположим, что в сети 4 маршрутизатора, соединенных каждый с каждым (на техническом жаргоне - "full mesh"). Предположим, что видео источник соединен с одним из маршрутизаторов (А), а пользователи равномерно распределены между 4-мя маршрутизаторами (по 4 пользователя на каждый маршрутизатор). Посмотрим, что будет с нашим каналом.

В юникастовой системе (см. рис.) источник видео потока должен создать по одной копии потока для каждого из 16-ти пользователей - всего 16 потоков, посылаемых до маршрутизатора А. Маршрутизатор А должен принять каждый из них и переслать по назначению: четыре потока - локальным пользователям данного маршрутизатора и по четыре потока каждому из оставшихся маршрутизаторов В, С и D.

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

Другие три потока направляются на оставшиеся маршрутизаторы В, С и D. Каждый из этих маршрутизаторов должен создать по 4 копии пакетов видеопотока.

Большое отличие этих двух реализаций заметно в необходимой полосе пропускания между источником видео потока и маршрутизатором А. Во втором случае в качестве каналов связи могут использоваться более медленные соединения, что позволит значительно сэкономить в случае использования арендованных каналов.