IGMP snooping: forwarding multicast packets

Wi-Fi

What is IGMP snooping?

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

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

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

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

Мультикастовые MAC-адреса

Так какие MAC-адреса назначения вставляются в Ethernet-заголовок таких пакетов? Трансмиссия? Нет. Существует специальный диапазон MAC-адресов, к которым привязываются IP-адреса многоадресной рассылки.

Эти специальные адреса начинаются с 0x01005e, и следующие 25 битов должны быть равны 0 (попробуйте ответить, почему это так). Оставшиеся 23 бита (помните, что всего в MAC-адресе 48 бит) переносятся из IP-адреса.

Здесь кроется не очень серьезная, но проблема. Диапазон многоадресных адресов определяется маской 224.0.0.0/4, что означает, что первые 4 бита зарезервированы: 1110, а остальные 28 бит могут быть изменены. Таким образом, у нас есть 2^28 многоадресных IP-адресов и только 2^23 MAC-адреса — недостаточно 5 бит для сопоставления 1 к 1. Поэтому берутся только последние 23 бита IP-адреса и передаются один к одному на MAC-адрес, остальные 5 отбрасываются.

MAC-адрес многоадресной рассылки

Это фактически означает, что 2^5=32 IP-адреса будут сопоставлены с одним многоадресным MAC-адресом. Например, группы 224.0.0.1, 224.128.0.1, 225.0.0.1 и так далее до 239.128.0.1 будут отображены на один MAC-адрес 0100:5e00:0001.

Существуют и другие многоадресные MAC-адреса, которые никак не связаны с многоадресной рассылкой IPv4 (щелкните). Все они, кроме того, характеризуются тем, что последний бит первого октета равен 1.

Очевидно, что ни одна сетевая карта не может быть настроена с таким MAC-адресом, поэтому он никогда не будет находиться в поле Source MAC кадра Ethernet и не появится в таблице MAC-адресов. Поэтому такие кадры должны быть отправлены как любой Unknown Unicast на все порты в VLAN.

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

Соображения по конфигурациям IGMP Snooping

Конфигурация сети с IGMP обычно выглядит следующим образом:

  1. Источник многоадресной рассылки;
  2. Независимое устройство протокола многоадресной рассылки IPv4 (PIM);
  3. Устройство протокола обнаружения источников многоадресной рассылки (MSDP);
  4. Устройство, передающее многоадресные данные из одной сети PIM в другую;
  5. Устройство Multicast VPN, IGMP querier;
  6. Устройство IGMP snooping;
  7. Приемник.

Все устройства важны для правильного распределения многоадресных передач. Коммутатор или маршрутизатор с включенным IGMP Snooping создает таблицу многоадресной рассылки уровня 2. Для поддержки такой сети на маршрутизаторе, компьютере или телевизоре обязательно должен быть установлен клиент многоадресной рассылки.

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

IGMP snooping with L3 aware ASICs

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

многоадресная рассылка igmp snooping l3 asic aware

Выше показаны изменения, которые были внесены в таблицу CAM:

  • Первая запись указывает коммутатору перенаправлять весь IGMP-трафик с пунктом назначения 0100.5exx.xxx на внутренний интерфейс. Это позволяет процессору просматривать различные сообщения IGMP.
  • Вторая запись указывает коммутатору перенаправлять весь трафик, не относящийся к IPMP, с пунктом назначения 0100.5e01.0101 (группа 239.1.1.1) на интерфейсы Gi0/1 и Gi0/4.

Теперь коммутатор будет перехватывать все IGMP сообщения, они будут отправляться только на внутренний интерфейс, что дает нашему коммутатору полный контроль над всем IGMP трафиком.

IGMP Group Leave

Продолжим историю, допустим, H1 и H2 слушают многоадресную группу 239.1.1.1. Внезапно H1 больше не заинтересован, поэтому он посылает сообщение о выходе из группы:

multicast igmp snooping igmp leave group

Сообщения группы Leave всегда отправляются в многоадресную группу 224.0.0.2, используя MAC-адрес назначения 0100.5e00.0002. Когда коммутатор получает сообщение IGMP leave, он пересылает его по внутреннему интерфейсу на CPU.

В ответ коммутатор отправит общий запрос IGMP на интерфейс, подключенный к H1:

многоадресная рассылка igmp snooping общий запрос

Общий запрос IGMP отправляется только на интерфейс Gi0/1, и мы делаем это, чтобы узнать, есть ли на этом интерфейсе другие хосты, заинтересованные в многоадресной группе 239.1.1.1. Есть два возможных результата:

  • Если бы к интерфейсу Gi0/1 был подключен другой хост, который все еще был бы заинтересован в получении трафика для 239.1.1.1, то коммутатор просто отбросил бы сообщение о выходе группы, ничего бы не изменилось.
  • Если коммутатор не получает отчет о принадлежности, то CPU удаляет интерфейс Gi0/1 из таблицы CAM. Поскольку у нас все еще есть второй слушатель (H2), коммутатор не будет передавать сообщение о выходе группы на маршрутизатор.

Вот как теперь выглядит таблица CAM:

remove interface multicast igmp snooping

Выше видно, что интерфейс Gi0/1 был удален из таблицы CAM. Никакие сообщения не были переданы маршрутизатору.

Через несколько минут H2 решает, что он также хочет покинуть многоадресную группу 239.1.1.1, поэтому он отправляет сообщение IGMP leave group:

multicast imp snooping igmp leave group host 2

Why and when is IGMP snooping worth it?

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

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

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

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

Читайте также: Apple iPhone SE характеристики, обзор, отзывы, дата выхода

Куда идёт пакет

Приведем пример. В общем случае эта технология использует IP-адреса в диапазоне 224.0.0-239.255.255.255. Например, сервер отправляет один канал с адресом 224.2.2.4. Протокол IGMP используется только на сегменте между клиентом и ближайшим подключенным к нему маршрутизатором.

  1. Поэтому пользовательская программа посылает запрос ближайшему маршрутизатору на просмотр канала 224.2.2.4.
  2. Если маршрутизатор уже имеет поток и дерево каналов, запрошенное клиентом, проходит через него — тогда пакеты немедленно отправляются пользователю, и он видит изображение.
  3. Как только клиент выключает программу, маршрутизатор получает сигнал о том, что группа ушла, и сигнал туда больше не передается.
  4. Но маршрутизатор также постоянно посылает сигнал ближайшим включенным клиентам, чтобы убедиться, что они все еще получают трафик. Это происходит каждые 60 секунд. Клиент, получивший такой запрос, должен отправить ответ, иначе он будет отключен. Все это происходит в автономном режиме.

IGMP Snooping Querier

Querier IGMP Snooping

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

Также важно, чтобы сам IGMP Snooping Querier был настроен правильно, это может привести к прекращению запросов отчетов о членстве в группе и сбою в работе коммутатора.

Виды IGMP snooping

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

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

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

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

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

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

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

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

включить IGMP snooping

IGMP V2 или V3: в чем разница

Разница между IGMP Proxy V2 и V3 заключается в качестве фильтрации трафика. IGMPv3 поддерживает чистый SSM. Клиент сможет указать в запросе список источников, от которых он хочет или не хочет получать трафик. Во второй версии протокола весь трафик запрашивается без разделения источников.

Еще одно отличие между V3 и V2 заключается в том, что сообщение Report отправляется на адрес многоадресной службы, а не на адрес группы. Запрашиваемые групповые адреса находятся непосредственно в пакете. Это изменение упрощает работу IGMP Snooping.

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

Реализация

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

В то же время, это должно быть сделано таким образом, чтобы не создавалось кругового движения. Поэтому путь пакета будет выглядеть как дерево, и будет использоваться подобная топология. То есть, когда пакет покидает сервер, он попадает на один из узлов. Затем узел должен решить, куда отправить пакет дальше.

А теперь мы переходим к IGMP (Internet Group Management Protocol) — это протокол, который позволяет быстрому клиенту подключаться к ближайшему маршрутизатору. Это дает клиенту понять, что трафик необходим на том или ином канале. Если маршрутизатор не запрашивается, он просто простаивает, освобождая таким образом сетевые ресурсы.

Также используется Protocol Independent Multicast (PIM) — это система, которая строит адрес от сервера до конечного получателя через одну ветвь дерева. Таким образом, система постоянно контролирует путь, чтобы изменить его, если какой-то сегмент сломался или был перемещен.

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

Как работает функция IGMP Proxy в роутере

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

Когда пакеты многоадресных данных проходят через коммутаторы второго уровня, они транслируются на все узлы в домене, включая не входящие в группы распределения. Это происходит потому, что коммутатор уровня 2 не может распознать многоадресные MAC-адреса. В результате пропускная способность локальной сети сильно снижается.

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

Протокол PIM используется для многоадресной передачи между маршрутизаторами в сети. Он имеет два режима работы: Плотный режим (DM) и разреженный режим (SM). Когда DM активен, сеть наводняется многоадресным трафиком. Он используется, когда к сети подключено несколько клиентов, принадлежащих к разным многоадресным группам.

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

Давайте посмотрим, как работает протокол IGMP на примере подключения к каналу 227.1.1.6.

  1. Клиентское программное обеспечение отправляет запрос ближайшему маршрутизатору на получение данных по каналу 227.1.1.6.
  2. Если дерево канала проходит через это устройство, пользователь получает изображение.
  3. Когда канал меняется, маршрутизатор получает сообщение о выходе из группы. Отправка на остановку транспорта.
  4. Параллельно каждые 60 секунд маршрутизатор автоматически посылает сигналы подключенным клиентам, чтобы проверить, получили ли они трафик. Если клиент не отвечает, он автоматически отключается от этой рассылки. Процедура полностью автоматизирована.

Активируя или деактивируя IGMP-прокси, пользователь позволяет маршрутизатору принимать или отклонять пакеты данных IPTV. Если компьютер или телевизор не подключен к интерактивному телевидению, эту опцию можно отключить.

Каковы функции и приложения IGMP Snooping?

IGMP Snooping в основном выполняет следующие функции:

  • прослушивание диалога между хостом и маршрутизатором;
  • Распределение многоадресных потоков;
  • Своевременный мониторинг отключения пользователя от группы;
  • Оптимизация и ускорение работы с контентом;
  • Защита от перегрузки сети;
  • Предотвращение вредоносных атак.

Как уже упоминалось, без фильтрации запросов при распространении многоадресных пакетов пропускная способность резко падает, что также может привести к нестабильной и ненормальной работе сети. Без IGMP Snooping подключенные устройства могут стать уязвимыми для киберпреступников. Если ненужные данные не отсеиваются на уровне коммутатора, эти каналы могут быть заполнены собственными многоадресными пакетами и использованы для компрометации сети. Последствия могут быть самыми разными, включая утечку информации.

IGMP Snooping используется для IPTV, виртуальных мероприятий и локальных сетей. Однако, если в локальной сети низкий трафик и мало подключенных машин, IGMP snooping не принесет большой пользы. Во всех остальных случаях снупинг помогает оптимизировать производительность и ускорить передачу данных на устройства.

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

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

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

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

Активация функции IGMP snooping

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

Перед использованием коммуникатора в сети убедитесь, что место назначения (например, smart-tv) поддерживает режим snooping. Эти устройства обычно имеют соответствующую запись в разделе ‘Настройка сетевого подключения’, что заметно облегчает настройку многоадресной рассылки.

Рассмотрим подключение функции через командную строку на примере популярных коммутаторов D-Link:

  1. Откройте командную строку устройства через интерфейс CLI.
  2. Введите «enable-igmp-snooping». Эта команда включит функцию на коммутаторе и всех подключенных адресах.
  3. Введите «config-igmp-snooping-vlan-default-state-enable», который настроит протокол на VLAN.
  4. Команда «confog-multicast-vlan-filtering-mode-vlan-default-filter-unregistered-groups» позволяет коммуникатору фильтровать данные с нескольких адресов одновременно.
  5. Наконец, используйте «config-igmp-snooping-vlan-default-fast-leave-enable» на VLAN.

Последняя команда включает IGMP Snooping Fast Leave, которая исключает порт из сети, как только пользователь делает запрос на «уход». При использовании Fast Leave потребитель не будет получать ненужные данные и обрабатывать их. Это снизит нагрузку на сеть и позволит коммутатору работать более эффективно.

Оцените статью
Блог про беспроводные технологии