Протокол управления группами Интернета (IGMP ) - это протокол связи, используемый хостами и соседними маршрутизаторами в сетях IPv4 для установления членства в группах многоадресной рассылки. IGMP является неотъемлемой частью IP multicast и позволяет сети направлять многоадресные передачи только тем хостам, которые их запросили.
IGMP можно использовать для сетевых приложений «один ко многим», таких как онлайн потоковое видео и игры, и позволяет более эффективно использовать ресурсы при поддержке этих типов Приложения.
IGMP используется в сетях IPv4. Управление многоадресной рассылкой в сетях IPv6 осуществляется с помощью Multicast Listener Discovery (MLD), который является частью ICMPv6 в отличие от инкапсуляции IP-адреса IGMP.
Сеть, предназначенная для доставки услуги многоадресной рассылки с использованием IGMP, может использовать эту базовую архитектуру:
IGMP работает между хостом и локальным маршрутизатором многоадресной рассылки. Коммутаторы с функцией отслеживания IGMP получают полезную информацию, наблюдая за этими транзакциями IGMP. Протокол независимой многоадресной рассылки (PIM) затем используется между локальным и удаленным многоадресными маршрутизаторами для направления многоадресного трафика от хостов, отправляющих многоадресные рассылки на хосты, которые зарегистрировались через IGMP для их приема.
IGMP работает на сетевом уровне точно так же, как и другие протоколы управления сетью, такие как ICMP.
. Протокол IGMP реализован на конкретном хосте и в пределах маршрутизатор. Хост запрашивает членство в группе через свой локальный маршрутизатор, в то время как маршрутизатор прослушивает эти запросы и периодически отправляет запросы подписки. Для выполнения этой функции запроса выбирается один маршрутизатор на подсеть. Некоторые многоуровневые коммутаторы включают функцию запросов IGMP, позволяющую их функциям отслеживания IGMP работать в отсутствие возможности многоадресной IP-рассылки в более крупной сети.
IGMP уязвим для некоторых атак, и брандмауэры обычно позволяют пользователю отключить его, если в этом нет необходимости.
Существует три версии IGMP. IGMPv1 определяется RFC 1112, IGMPv2 определяется RFC 2236, а IGMPv3 изначально определяется RFC 3376 и был обновлен с помощью RFC 4604, который определяет как IGMPv3, так и MLDv2. IGMPv2 улучшает IGMPv1, добавляя возможность хосту сигнализировать о желании покинуть группу многоадресной рассылки. IGMPv3 улучшает IGMPv2, поддерживая многоадресную рассылку для конкретного источника и вводит агрегирование отчетов о членстве.
Эти версии обратно совместимы. Маршрутизатор, поддерживающий IGMPv3, может поддерживать клиентов, использующих IGMPv1, IGMPv2 и IGMPv3. IGMPv1 использует модель запрос-ответ. Запросы отправляются на 224.0.0.1. Отчеты о членстве отправляются на многоадресный адрес группы. IGMPv2 ускоряет процесс выхода из группы и регулирует другие таймауты. Сообщения о выходе из группы отправляются на 224.0.0.2. Представлен групповой запрос. Специфичные для группы запросы отправляются на групповой адрес многоадресной рассылки. Введены средства для выбора маршрутизаторами IGMP-запросчика для сети. IGMPv3 вводит возможность многоадресной передачи, зависящей от источника. Отчеты о членстве отправляются на 224.0.0.22.
Существует несколько типов IGMP-сообщений:
Сообщения IGMP передаются в чистых IP-пакетах с Номер IP-протокола 2. Подобно протоколу управляющих сообщений Интернета, для обмена сообщениями IGMP не используется транспортный уровень.
битовое смещение | 0–7 | 8–15 | 16–31 | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Тип | Максимальное время ответа | Контрольная сумма | |||||||||||||||||||||||||||||
32 | Адрес группы |
Где:
Сообщение отправляется с использованием следующих IP-адресов назначения:
Тип сообщения | Многоадресный адрес |
---|---|
Общий запрос | Все хосты (224.0.0.1) |
Групповой запрос | Запрашиваемая группа |
Отчет о членстве (все версии IGMP) | Группа, о которой сообщается |
Выйти из группы | Все маршрутизаторы (224.0.0.2) |
смещение бит | 0–3 | 4 | 5–7 | 8–15 | 16–31 | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Тип = 0x11 | Максимальный код ответа | Контрольная сумма | |||||||||||||||||||||||||||||
32 | Адрес группы | |||||||||||||||||||||||||||||||
64 | Resv | S | QRV | QQIC | Количество источников (N) | |||||||||||||||||||||||||||
96 | Адрес источника [1] | |||||||||||||||||||||||||||||||
128 | Адрес источника [2] | |||||||||||||||||||||||||||||||
... | ||||||||||||||||||||||||||||||||
Адрес источника [N] |
Где:
FreeBSD, Linux и Windows операционные системы поддерживают IGMP на стороне хоста.