Открыть сервисСервис

IGMP Snooping в компьютерных сетях

IGMP Snooping — механизм работы коммутатора (сетевого концентратора) на канальном уровне, который обеспечивает доставку широковещательных и многоадресных (мультикастовых) IP-пакетов только тем портам, на которые подключены устройства, запрашивающие соответствующий мультикастовый поток. Механизм реализует фильтрацию многоадресного трафика по протоколу IGMP (Internet Group Management Protocol) и предотвращает широковещательную рассылку мультикастовых пакетов на все порты коммутатора.

Принцип работы

Без IGMP Snooping коммутатор обрабатывает многоадресные пакеты (адреса в диапазоне 224.0.0.0–239.255.255.255) так же, как широковещательные, и рассылает их на все порты в VLAN. Это приводит к перегрузке портов устройств, которые не запрашивали соответствующий поток, и к лишней нагрузке на процессор коммутатора и каналы связи.

При включённом IGMP Snooping коммутатор анализирует («подслушивает», отсюда snooping — «подслушивание») содержимое IGMP-сообщений, передаваемых между хостами и маршрутизатором. На основании этой информации коммутатор строит таблицу мультикастовых групп и связанных с ними портов и перенаправляет многоадресные пакеты только на те порты, члены которых состоят в соответствующей группе.

Основные этапы работы

  1. Присоединение к группе. Устройство отправляет IGMP-запрос вида IGMP Membership Report (Join) на адрес группы 224.0.0.22. Коммутатор перехватывает сообщение, определяет номер группы и порт источника и добавляет запись в таблицу snooping.
  2. Доставка потока. Многоадресные пакеты, поступающие с порта маршрутизатора или источника, направляются только на порты, отмеченные в таблице как члены группы.
  3. Выход из группы. Устройство отправляет IGMP Leave Group. Коммутатор проверяет, остались ли на порту другие члены группы, и при необходимости отправляет IGMP-запрос вида Group-Specific Query для уточнения.
  4. Устаревание записей. Если в течение заданного интервала (обычно 260 секунд) от группы не поступает подтверждений, запись удаляется из таблицы.

Роль маршрутизатора и IGMP-версии

IGMP Snooping работает во взаимодействии с маршрутизатором, который выполняет функцию IGMP-квериера (queryer) и управляет членством устройств в группах. Поддерживаются все три версии протокола:

ВерсияГодКлючевые особенности
IGMPv11989Базовая подписка на группы, без механизма выхода
IGMPv21997Добавлены сообщения Leave Group и Group-Specific Query
IGMPv32002Поддержка источников (SSM), фильтрация по IP-адресу отправителя

В сетях с несколькими VLAN коммутатор ведёт отдельную таблицу snooping для каждого VLAN. В сетях с L3-коммутацией (маршрутизацией на уровне коммутатора) для каждого VLAN-интерфейса может работать собственный IGMP-квериер.

Влияние на производительность

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

Взаимодействие с другими протоколами

MLD Snooping

В сетях IPv6 вместо IGMP используется протокол MLD (Multicast Listener Discovery), построенный на ICMPv6. Коммутаторы с поддержкой MLD Snooping выполняют аналогичную функцию для IPv6-мультикаста.

IGMP Proxy

Режим IGMP Proxy позволяет коммутатору выступать в роли промежуточного агента между хостами и удалённым маршрутизатором: коммутатор агрегирует запросы устройств и передаёт их маршрутизатору от своего имени, сокращая число сообщений в сети.

Storm Control

Механизм Storm Control (контроль шторма) часто используется в паре с IGMP Snooping и ограничивает объём многоадресного трафика на порту как защита от некорректно работающих источников.

Примеры применения

  • IPTV-распространение. В сети оператора связи IGMP Snooping обеспечивает доставку телевизионных потоков только на те порты, чьи приставки подписаны на соответствующий канал.
  • Корпоративные видеоконференции. Многоадресная передача видео и аудио не перегружает порты рабочих станций, не участвующих в конференции.
  • Фондовые биржи и торговые системы. Потоки котировок, передаваемые по multicast, доставляются только подписчикам.
  • Системы распределённого хранения и резервного копирования. Протоколы синхронизации данных (например, vMotion в виртуализации) используют мультикаст, и snooping предотвращает избыточную нагрузку на сеть.

Настройка

На коммутаторах Cisco IOS включение механизма выполняется командой ip igmp snooping в глобальном режиме конфигурации. По умолчанию snooping включён в большинстве современных коммутаторов. Для управления поведением используются дополнительные команды: ip igmp snooping vlan <vlan-id> для настройки по VLAN, ip igmp snooping querier для включения режима квериера, ip igmp snooping fast-leave для немедленного удаления порта из группы при получении Leave-сообщения (рекомендуется в сетях с одним устройством на порт).

В коммутаторах других производителей (Juniper, Huawei, MikroTik, D-Link) набор команд отличается, но принцип работы механизма одинаков.

Ограничения

IGMP Snooping работает только с IP-мультикастом и не влияет на L2-мультикаст (например, протоколы STP, CDP, LLDP, использующие групповые MAC-адреса). Для фильтрации L2-мультикаста применяются отдельные механизмы, такие как MVR (Multicast VLAN Registration) или Group VLAN. Также snooping не защищает от подделки IGMP-сообщений (IGMP spoofing), поэтому в защищённых сетях рекомендуется использовать дополнительные средства контроля, например IGMP Filtering.

Источники

  • RFC 2236 — Internet Group Management Protocol, Version 2
  • RFC 3376 — Internet Group Management Protocol, Version 3
  • RFC 4541 — Considerations for Internet Group Management Protocol (IGMP) and Multicast Listener Discovery (MLD) Snooping Switches
  • Cisco Systems. Configuring IGMP Snooping. Cisco IOS Switching Configuration Guide
  • Кузнецов А. Основы компьютерных сетей. — СПб.: БХВ-Петербург
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru