IGMP (англ. Internet Group Management Protocol — протокол управления группами Интернета) — протокол управления групповой (multicast) передачей данных в сетях, основанных на протоколе IP. IGMP используется маршрутизаторами и IP-узлами для организации сетевых устройств в группы.
Этот протокол является частью спецификации групповой передачи пакетов в IP-сетях. IGMP расположен на сетевом уровне. Он во многом аналогичен ICMP для одноадресной передачи. IGMP может использоваться для поддержки потокового видео и онлайн-игр, для этих типов приложений он позволяет использовать сетевые ресурсы более эффективно. IGMP уязвим для некоторых атак и брандмауэры обычно позволяют пользователю отключить этот протокол, если в нем нет необходимости.
Когда клиент запускает подключение к multicast-группе, например, с адресом 224.2.2.4, он отправляет запрос IGMP Membership Report, указывая, что хочет получать мультикастовый трафик. Этот запрос действует только в пределах своего сетевого сегмента и не пересылается маршрутизаторами в другие сети.
После получения запроса маршрутизатор регистрирует наличие клиента за соответствующим интерфейсом и заносит информацию о нём в свою таблицу. С этого момента маршрутизатор начинает пересылать мультикастовый трафик на соответствующее устройство. Когда клиент отключается, маршрутизатор отправляет запрос всем подключенным устройствам, и те, кто хочет продолжать получать трафик, отвечают. После получения ответов маршрутизатор обновляет свои таблицы и продолжает доставку трафика только тем, кто остался в группе. Если устройство вышло из группы, ему отправляется IGMP-пакет, сообщающий об этом.
IGMP используется только в сетях IPv4, так как в IPv6 групповая передача пакетов реализована через протокол Multicast Listener Discovery.
Протокол IGMP, определенный в RFC 1112, позволяет хосту объявить о своей принадлежности к группе многоадресной рассылки соседним коммутаторам и маршрутизаторам. IGMP — это стандартный протокол, используемый в пакете протоколов TCP/IP для динамической многоадресной рассылки.
Что такое многоадресная рассылка?
Многоадресная рассылка — это тип передачи по сети, который позволяет отправлять сообщения выбранной группой адресатов из одного источника.
Динамическая многоадресная рассылка
Для правильной конфигурации динамической многоадресной рассылки требуется маршрутизатор или устройство, которое поддерживает уровень 3 и способно обрабатывать многоадресные группы. Устройство, поддерживающее уровень 3, использует протокол IGMP для прослушивания сообщений присоединение и исключения от клиентов. Устройство уровня 3 использует сообщения присоединение и исключение для добавления клиентов в многоадресную группу и удаления клиентов из этой группы. Многие устройства уровня 2 поддерживают IGMP Snooping. IGMP Snooping позволяет устройству уровня 2 «считывать» трафик IGMP между хостами и маршрутизаторами (или запросчиками), чтобы определять, когда порты присоединяются и исключаются из многоадресных групп, а также динамически перенаправлять трафик только на порты, участвующие в группе. Запросчик IGMP может периодически отправлять сообщения (называемые IGMP-запросами принадлежности, IGMP Membership Query) на известный IP-адрес многоадресной рассылки 224.0.0.1 (всем хостам, поддерживающим многоадресную рассылку) с заданным интервалом. Это позволяет устройству, поддерживающему уровень 3, отслеживать, какие порты относятся к многоадресной группе.
Протокол IGMP реализован в виде серверной и клиентской частей, первая из которых выполняется на маршрутизаторе, вторая — в узле сети, получающем групповой трафик. Клиент посылает уведомление о принадлежности к какой-либо группе локальному маршрутизатору, в это время маршрутизатор находится в ожидании уведомлений и периодически рассылает клиентам запросы.
Операционные системы семейств NetBSD, FreeBSD, OpenBSD, Linux и Windows поддерживают клиентскую часть протокола. В системе Linux IGMPv3 был добавлен в версии ядра 2.5. Для FreeBSD IGMPv3 был добавлен в версии 8.0.
Для реализации серверной части IGMP в Linux используются демоны, например, mrouted может действовать как IGMP маршрутизатор. Существуют также целые программные комплексы (такие, как XORP), позволяющие превратить обычный компьютер в полнофункциональный маршрутизатор групповой передачи.
В OpenBSD поддержка IGMP в ядре изначально включает в себя базовую поддержку маршрутизации, а имеющиеся в составе ОС демоны mrouted и dvmrpd позволяют решать более сложные задачи (например, туннелирование multicast-трафика)