IGMP snooping: понятие и использование. Типы передачи данных

Для более рационального использования пропускной способности и снижения требований к выделяемым каналам связи необходимо использовать технологии экономичного расходования ресурсов вычислительной сети. Рассмотрим всем известные технологии передачи потоков данных от источника к заинтересованным получателям – Multicast и Unicast.

Multicast и Unicast: ключевые различия

Между технологиями Multicast и Unicast есть принципиальная разница в способе передачи данных.

На рисунке приведено сравнение Unicast-технологии (сверху) копирования потоков данных в соответствии с числом получателей и Multicast-технологии (снизу) с возможностью передавать одну копию большому числу получателей.

Unicast – классическая технология, позволяющая передавать поток данных строго заинтересованному получателю. Используемые протоколы и методы обработки хорошо известны, поэтому не будем на этом подробно останавливаться.

Технология Multicast позволяет передавать потоки данных по IP-сетям, без излишнего дублирования, широкому кругу заинтересованных получателей (рабочие места видеонаблюдения, мобильные устройства, абоненты IPTV, терминалы видеоконференцсвязи), экономя пропускную способность канала. Unicast для вышеописанных целей крайне неэффективен, так как единый источник данных вынужден отправлять столько копий одних и тех же данных, сколько было запрошено. Это приводит к чрезмерной нагрузке на источник данных и локальную сеть (при большом количестве приемников).

Тонкости IP Multicast IP

Multicast использует UDP-пакеты (User Datagram Protocol), что позволяет передавать данные с меньшими задержками, но не отслеживает потери пакетов. Есть возможность компенсировать этот недостаток классификацией трафика (технология QoS).

IP Multicast оперирует группами подписчиков – для получения данных от каждого источника. Каждый подписчик определяет свою принадлежность к той или иной группе, отправляя IGMP-ответ (Internet Group Management Protocol) устройству (часто маршрутизатору), которое опрашивает сеть о существующих группах рассылки с использованием IGMP-сообщений. В результате формируются группы получателей. Для каждой группы источник генерирует один поток данных, а сетевые устройства (маршрутизаторы и коммутаторы) обеспечивают получение этого потока каждым подписчиком конкретной группы.

Прогрессивное применение Multicast

Технологию Multicast крайне целесообразно применять в случаях, когда источники видеосигнала (будь то видеокамера или видеосервер) находятся на значительном удалении от приемников данного сигнала. Это могут быть разные терминалы аэропорта, разные здания промышленного назначения с единым постом видеонаблюдения. Или обратная ситуация, когда приемники видеосигнала (например, АРМ видеонаблюдения) размещаются на значительном удалении от источников и не имеют широкополосного канала связи.

Бесспорная выгода использования технологии обусловлена тем, что у источника сигнала (видеокамеры или видеосервера) отсутствует необходимость генерировать количество одинаковых потоков в соответствии с числом приемников, которые одновременно желают получать видеоданные. Технология позволяет экономить не только пропускную способность интерфейсов источников, но и их вычислительные возможности. Экономия вычислительных возможностей – крайне актуальная тема для видеосерверов, поскольку на эти устройства возложен ряд серьезных задач, таких как прием, дешифрование, шифрование, распределение, дополнительное сжатие и преобразование, запись потоков видеоданных, реализация алгоритмов видеоаналитики.

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

Памятка инсталляторам

Ретрансляция потоков данных
Технология Multicast относится к функциональности 3-го уровня и потому полноценно поддерживается маршрутизаторами. При этом возможно обойтись без маршрутизаторов, применяя коммутаторы 2-го уровня, но с функцией IGMP snooping.

Многие коммутаторы 2-го уровня могут прослушивать IGMP-сообщения, относящиеся к 3-му уровню, и добавлять соответствующих получателей в таблицу входящих в группу Multicast-хостов – этот механизм и называется IGMP snooping.

С использованием IGMP snooping коммутатор 2-го уровня ретранслирует потоки данных только тем адресатам, которые подписывались на получение Multicast-трафика в конкретную Multicast-группу. В некоторых коммутаторах прослушиванием и анализом IGMP-сообщений занимается отдельная интегральная плата. Она освобождает центральный процессор коммутатора от трудоемкой задачи анализа каждого Multicast-пакета и поиска в нем сообщений о присоединении или оставлении группы.

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

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

Еще один неприятный момент заключается в том, что устройства с сетевыми интерфейсами небольшой пропускной способности (в том числе и Fast Ethernet) при интенсивном Multicast-трафике перестают успевать отбрасывать ненужные им пакеты и принимать нужные пакеты в связи с переполнением буфера интерфейса. В итоге часть пакетов, предназначенных такому устройству, теряется. Для пользователей это будет выглядеть как рассыпание изображений (для видеоданных), прерывание и неразборчивость речи (для аудио). Чтобы локальная сеть выполняла предполагаемые задачи, крайне важно сконфигурировать механизм IGMP snooping на всех коммутаторах 2-го уровня. Эта настройка является важной частью инсталляции и должна быть выполнена грамотным специалистом.

Технология Multicast дает неоспоримые преимущества, но – как и любая задача – ее применение требует комплексного подхода для получения высокоэффективного решения

Резюмируя, хочу еще раз перечислить преимущества, которые дает технология Multicast при построении сети, предназначенной для передачи видео (в особенности мегапиксельного), и ключевых моментах, на которые следует обратить внимание.

  1. Multicast – эффективное решение при передаче большого количества потоков видео от источника к получателям.
  2. Оборудование, поддерживающее технологию Multicast, позволяет рационально использовать пропускную способность сети и вычислительные ресурсы устройств, участвующих в обработке пакетов данных.
  3. Наиболее рациональное использование технологии Multicast – распределение Multicast-потоков непосредственно от камер к приемникам видеоданных. Чуть менее рациональное – от видеосервера к приемникам видеоданных.
  4. Для организации сети с полной поддержкой Multicast необходимо внимательно ознакомиться с возможностями используемых видеокамер, маршрутизаторов и коммутаторов.
  5. В небольших сетях рационально ограничиться использованием коммутаторов 2-го уровня, но они должны поддерживать механизм IGMP snooping.
  6. IGMP snooping должен быть сконфигурирован для каждого устройства в целях обеспечения планируемых режимов работы сети.

Для объединения в группы сетевых устройств IP-узлы и маршрутизаторы используют протокол управления IGMP. Internet Group Management Protocol руководит multicast (групповой) в сетях. Он находится на сетевом уровне и соединяет клиентский компьютер с локальным маршрутизатором с целью передачи данных между ними. Затем групповой трафик направляется к остальным клиентам через протокол PIM. Он связывает локальный маршрутизатор с удаленным. Благодаря применению IGMP сетевые ресурсы ряда приложений (игры онлайн, потоковое видео) могут использоваться более эффективно.

Принять решение о трансляции трафика в те или иные интерфейсы позволяет использование функции IGMP snooping. процесс отслеживания IGMP-запросов от потребителей (хостов) к поставщикам (групповым маршрутизаторам).

Понятие и назначение IGMP snooping

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

В большинстве коммуникаторов функция IGMP snooping доступна, но требует предварительного включения.

Зачем отслеживать сетевой трафик?

Multicast-трафик может передаваться в том числе и к компьютерам, не заинтересованным в нем. Это называется широковещательной ретрансляцией. Для ее предотвращения, с целью снижения нагрузки на сеть, используется IGMP snooping. В то же время такого рода фильтрация требует дополнительных затрат памяти и повышает нагрузку на коммуникатор. Однако она оправдана.

Если коммуникатор начинает транслировать групповой трафик по всем своим портам, то:

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

Для исключения подобных ситуаций и существует функция IGMP snooping, значительно улучшающая работу всей сети. Она учитывает потребности на сетевом (третьем) уровне и таким образом оптимизирует канальный (второй) уровень передачи данных.


Включение функции прослушки

Для того чтобы отслеживать multicast-трафик, требуется сначала включить IGMP snooping и настроить его самостоятельно. Рассмотрим, как это сделать на коммуникаторах D-Link при реализации схемы многоадресной передачи данных. Команды для активизации сетевой прослушки:


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


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

Виды IGMP-прослушки

Функция IGMP snooping может быть как пассивной, так и активной. В чем это проявляется?

  1. Пассивная не фильтрует трафик, а просто отслеживает его.
  2. Активная - осуществляются прослушивание и фильтрация пакетов данных для уменьшения загруженности группового маршрутизатора.

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


Функциональность IGMP snooping-коммуникатора помогает снизить нагрузку на сеть благодаря отслеживанию им процессов обмена данными между поставщиками (локальными маршрутизаторами) и потребителями (клиентскими компьютерами) группового трафика.

В сетях IP существует 3 основных способа передачи данных : Unicast, Broadcast, Multicast.

Unicast (юникаст) – процесс отправки пакета от одного хоста к другому хосту.

Multicast (мультикаст) – процесс отправки пакета от одного хоста к некоторой ограниченной группе хостов.

Broadcast (бродкаст) – процесс отправки пакета от одного хоста ко всем хостам в сети.

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

Unicast

Тип передачи данных Unicast (индивидуальный) используется для обычной передачи данных от хоста к хосту. Способ Unicast работает в клиент-серверных и пиринговых (peer-to-peer, от равного к равному) сетях.

В unicast пакетах в качестве IP адреса назначения используется конкретный IP адрес устройства, для которого этот пакет предназначен. IP адрес конкретного устройства состоит из порции адреса сети (в которой находится это устройство) и порции адреса хоста (порции, определяющей это конкретное устойчиво в его сети). Это все приводит к возможности маршрутизации unicast пакетов по всей сети.

Multicast и broadcast пакеты, в отличие от unicast пакетов, имеют свои собственные специальные (зарезервированные) IP адреса для использования их в заголовке пакетов в качестве пункта назначения. Из-за этого, broadcast пакеты в основном ограничены пределами локальной сети. Multicast трафик также может быть ограничен границами локальной сети, но с другой стороны также может и маршрутизироваться между сетями.

В IP сетях unicast адрес является адресом, то есть адресом конечного устройства (например, компьютера). Для типа передачи данных unicast, адреса хостов назначаются двум конечным устройствам и используются (эти адреса) как IP адрес источника и IP адрес получателя.

В течение процесса инкапсуляции передающий хост размещает свой IP адрес в заголовок unicast пакета в виде адреса источника, а ИП адрес принимающего хоста размещается в заголовке в виде адреса получателя. Используя эти два IP адреса, пакеты unicast могут передаваться через всю сеть (т.е. через все подсети).

Multicast

Тип передачи multicast разрабатывался для сбережения пропускной способности в IP сетях. Такой тип уменьшает трафик, позволяя хостам отправить один пакет выбранной группе хостов. Для достижения нескольких хостов назначения используя передачу данных unicast, хосту источнику было бы необходимо отправить каждому хосту назначения один и тот же пакет. С типом передачи данных multicast, хост источник может отправить всего один пакет, который может достичь тысячи хостов получателей.

Примеры multicast передачи данных:

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

Multicast клиенты

Хосты, которые хотят получить определенные multicast данные, называются multicast клиентами. Multicast клиенты используют сервисы инициированные (начатые) клиентскими программами для рассылки multicast данных группам.

Каждая multicast группа представляет собой один multicast IP адрес назначения. Когда хост рассылает данные для multicast группы, хост помещает multicast IP адрес в заголовок пакета (в раздел пункта назначения).

Для multicast групп выделен специальный блок IP адресов, от 224.0.0.0 до 239.255.255.255.

Broadcast (Широковещание)

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

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

Примеры, когда используется broadcast передача данных:

  • создание карты принадлежности адресов верхнего уровня к нижним (например, какой IP адрес на конкретном устройстве со своим MAC адресом)
  • запрос адреса (в качестве примера можно взять протокол ARP)
  • протоколы маршрутизации обмениваются информацией о маршрутах (RIP, EIGRP, OSPF)

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

Подобным образом, когда хосту необходимо отправить информацию всем хостам в сети, он создаёт широковещательный пакет с его информацией и передаёт его в сеть.

В отличие от unicast передачи, где пакеты могут быть маршрутизированы через всю сеть, broadcast пакеты, как правило, ограничиваются локальной сетью. Это ограничение зависит от настройки маршрутизатора, который ограничивает сеть и следит за типом широковещания (broadcast).

Существует два типа broadcast передачи данных: направленное широковещание и ограниченное широковещание.

Направленный broadcast (направленное широковещание)

Направленный broadcast отправляется всем хостам какой-то конкретной сети. Этот тип широковещания удобно использовать для отправки broadcast трафика всем хостам за пределами локальной сети.

Например, хост хочет отправить пакет всем хостам в сети 172.16.5.0/24, но сам хост находится в другой сети. В данном случае хост-отправитель вложит в заголовок пакета в качестве адреса пункта назначения broadcast адрес 172.16.5.255. Хотя маршрутизаторы должны ограничивать (не передавать) направленный широковещательный трафик, их можно настроить на разрешение передачи broadcast трафика.

Ограниченный broadcast (ограниченное широковещание)

Ограниченный broadcast используется для передачи данных всем хостам в локальной сети. В такие пакеты в качестве пункта назначения вставляется IP адрес 255.255.255.255. Маршрутизаторы такой широковещательный трафик не передают. Пакеты, переданные ограниченным broadcast будут распространяться только в локальной сети. По этой причине локальные сети IP также называют широковещательным доменом (broadcast domain). Маршрутизаторы образуют границу для широковещательного домена. Без границы пакеты бы распространялись по всей сети, каждому хосту, уменьшая быстродействие сетевых устройств и забивая пропускную способность каналов связи.

Приведу пример ограниченного broadcast: хост находится внутри сети 172.16.5.0/24 и хочет передать пакет всем хостам в его сети. Используя в качестве пункта назначения IP адрес 255.255.255.255, он отправляет широковещательный пакет. Этот пакет примут и обработают все хосты только в этой локальной сети (172.16.5.0/24).

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

Multicast

На вопрос, что же такое Multicast легко найти ответ, так, например, Википедия считает, что это специальная форма широковещания, при которой сетевой пакет одновременно направляется определённому подмножеству адресатов - не одному (unicast), и не всем (broadcast). С данной формулировкой трудно не согласиться. Технология IP Multicast очень выгодна в использовании, когда один и тот же набор данных должны получать сотни и тысячи подписчиков на эти данные, без увеличения нагрузки на сеть. Довольно трудно себе представить сервер, способный выдать хотя бы пятимегабитный поток данных тысячам потребителей. Так как обслуживание двухсторонних соединений процесс довольно ресурсоемкий, да еще и дублирование одних и тех же данных явное свидетельство нерациональной расточительности.

IP Multicast - это диапазон IP адресов с 224.0.0.0 до 239.255.255.255. Для того, чтоб использовать Multicast рассылки в Вашей сети необходимо выполнить ряд условий:

Сегмент сети, в котором планируется использование Multicast, должен быть построен на управляемых коммутаторах;

Управляемые коммутаторы должны поддерживать протокол IGMP, при помощи которого определяется членство в Multicast группе порта.

Подходы к реализации Multicast вещания

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

  • PIM-DM в связке с IGMP-snooping;
  • PIM-SM в связке с IGMP-snooping;

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

PIM-SM (sparse mode) или режим, при котором рассылка начинается только тогда, когда появляется запрос на членство в группе.

Разница в этих режимах работы заключается в том, что при использовании режима PIM-DM multicast роутер рассылает все зарегистрированные на нем multicast группы и только потом отсекает те, в которые никто не подписался. Напротив, режим PIM-SM рассылает multicast потоки только после того, когда на него придет IGMP запрос на членство в группе multicast рассылки. Также существует еще одно существенное отличие между режимами PIM-DM и PIM-SM, заключается оно в том, что для режима PIM-SM необходима так называемая точка рандеву - RENDEZVOUS POINT (RP) . Точка рандеву - это место, где регистрируются все источники Multicast потоков. Таким образом, все Multicast потоки собираются в этой точке и из нее выдаются членам группы. В итоге, потребители Multicast потоков абсолютно ничего не знают об источнике потока.

Также существует еще один способ доставки IPTV потребителям - это MVR или, если перевести аббревиатуру, Регистрация Мультикастовых VLAN’ов . Суть данного способа заключается в том, что multicast трафик бежит по сети в отдельном VLAN, а вот уже MVR подмешивает этот трафик в порты, запросивших определенную Multicast группу клиентов.

Поскольку в рамки статьи не входит рассмотрение каждого из описанных выше подходов, то остановимся только на одном из них.

Реализация трансляции с использованием PIM-SM.

Для данной реализации использовался коммутатор BD-COM S3928GX, который вполне сгодиться для ядра довольно таки не маленькой сети, так как это полноценный L3 свитч на борту которого можно установить 4*10G порта XFP, а при условии, что цена очень гуманна, альтернатив сегодня не так уж и много.

На рисунке представлена примерная схема реализации:

Настройка коммутатора сводиться к следующим шагам:

1. Создадим VLAN 111 и включим в него наш стример порт 23.

2. Включим потребителя IPTV в уже существующий дефолтный VLAN 1 порт 21

3. Определим в каком режиме будет работать маршрутизация Multicast

router pim-sm

4. Включим в VLAN 1 поддержку IGMP

ip igmp enable

5. На VLAN 111 настроим поддержку PIM

Собственно, на этом настройка коммутатора заканчивается, а ниже я приведу полный конфиг свитча.

Switch#show conf
!version 2.1.0B build 7185
service timestamps log date
service timestamps debug date
!
no spanning-tree

!
aaa authentication login default local
aaa authentication enable default none
!
username XXXX password 0 XXXX
!

ip multicast-routing

!
interface Null0
!
interface GigaEthernet0/1
!
.
.
.

interface GigaEthernet0/20
!
interface GigaEthernet0/21
!
interface GigaEthernet0/22
!
interface GigaEthernet0/23
switchport pvid 111
!
interface GigaEthernet0/24
!
interface TGigaEthernet1/1
!
interface TGigaEthernet1/2
!
interface TGigaEthernet2/1
!
interface TGigaEthernet2/2
!
interface VLAN1
ip address 192.168.2.168 255.255.255.0
no ip directed-broadcast

ip igmp enable
!
interface VLAN111
ip address 10.10.10.1 255.255.255.0
no ip directed-broadcast

ip igmp enable
!
!
!
vlan 1,111
!
!
ip igmp-snooping
no ip igmp-proxy enable
!
ip route default 192.168.2.10
ip exf
!
router pim-sm
reg-rate-limit 1
!
Switch#

Теперь пришло время проверить, а все ли работает так, как нам хотелось. Потребителем IPTV будет выступать компьютер с установленным Linux и программой VLC Player (www.videolan.org). Для удобства просмотра я подготовил маленький плэйлист с двумя ранее настроенными каналами:

#EXTM3U
#EXTINF:5, Первый
udp://@239.255.1.90:1234
#EXTINF:5, Euronews
udp://@239.255.1.91:1234

Загрузив плэйлись в плэйер, на экране появился «Первый» канал. Теперь осталось убедиться в том, что мы все правильно настроили и в наш порт прилетает единственная multicast группа. Для это запустим tcpdump и посмотрим, а что же твориться на нашем сетевом интерфейсе.

# tcpdump -ni eth0


17:43:24.413102 IP 10.10.10.2.39109 > 239.255.1.90 .1234: UDP, length 1316
17:43:24.413147 IP 10.10.10.2.39109 > 239.255.1.90 .1234: UDP, length 1316
17:43:24.418339 IP 10.10.10.2.39109 > 239.255.1.90 .1234: UDP, length 1316
17:43:24.418384 IP 10.10.10.2.39109 > 239.255.1.90 .1234: UDP, length 1316

Теперь переключим канал и опять глянем в tcpdump

# tcpdump -ni eth0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
17:42:46.130451 IP 10.10.10.2.47782 > 239.255.1.91 .1234: UDP, length 1316
17:42:46.130495 IP 10.10.10.2.47782 > 239.255.1.91 .1234: UDP, length 1316
17:42:46.135728 IP 10.10.10.2.47782 > 239.255.1.91 .1234: UDP, length 1316
17:42:46.135782 IP 10.10.10.2.47782 > 239.255.1.91 .1234: UDP, length 1316

Как видим, при переключении телеканала IGMP отключается от одной группы и подключается к другой.


Мультикастинг (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 копии пакетов видеопотока.

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



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: