- IGMP
-
IGMP Название: Internet Group Management Protocol
Уровень (по модели OSI): Сетевой
Семейство: Назначение протокола: Управление групповой маршрутизацией
Спецификация: IGMP (англ. Internet Group Management Protocol — протокол управления группами Интернета) — протокол управления групповой (multicast) передачей данных в сетях, основанных на протоколе IP. IGMP используется маршрутизаторами и IP-узлами для организации сетевых устройств в группы.
Этот протокол является частью спецификации групповой передачи пакетов в IP-сетях. IGMP расположен на сетевом уровне.[1] Он во многом аналогичен ICMP для односторонней передачи. IGMP может использоваться для поддержки потокового видео и онлайн-игр, для этих типов приложений он позволяет использовать сетевые ресурсы более эффективно. IGMP уязвим к некоторым атакам[2][3][4][5], и брандмауэры обычно позволяют пользователю отключить этот протокол, если в нем нет необходимости.
IGMP используется только в сетях IPv4, так как в IPv6 групповая передача пакетов реализована через протокол Multicast Listener Discovery.
Содержание
Архитектура
Сеть, предоставляющая услуги групповой передачи данных (например, видео) с использованием IGMP, может иметь следующую базовую архитектуру:
IGMP используется клиентским компьютером и соседними коммутаторами для соединения клиента и локального маршрутизатора, осуществляющего групповую передачу. Далее между локальным и удаленным маршрутизаторами используется протокол Protocol Independent Multicast (PIM), с его помощью групповой трафик направляется от видеосервера к многочисленным клиентам групповой передачи.
Стандарты
Согласно Request for Comments (RFC), документу сообщества Internet Engineering Task Force (IETF), существует три версии IGMP. IGMPv1 определен в RFC 1112, IGMPv2 — в RFC 2236 и IGMPv3 — в RFC 3376.
Основным улучшением в IGMPv3 относительно IGMPv2 является поддержка фильтрации IP-адресов. С помощью этого механизма узел может сообщить, с каких адресов он хочет получать пакеты, а с каких нет.
Реализация
Протокол IGMP реализован в виде серверной и клиентской частей, первая из которых выполняется на маршрутизаторе, вторая — в узле сети, получающем групповой трафик. Клиент посылает уведомление о принадлежности к какой-либо группе локальному маршрутизатору, в это время маршрутизатор находится в ожидании уведомлений и периодически рассылает клиентам запросы.
Операционные системы FreeBSD, Linux и Windows поддерживают клиентскую часть протокола. В системе Linux IGMPv3 был добавлен в версии ядра 2.5. Для FreeBSD IGMPv3 был добавлен в версии 8.0.
Для реализации серверной части IGMP в Linux используются демоны, например, mrouted может действовать как IGMP маршрутизатор. Существуют также целые программные комплексы (такие, как XORP), позволяющие превратить обычный компьютер в полнофункциональный маршрутизатор групповой передачи.
Структура пакетов IGMPv3
Определена стандартом RFC 3376.
Запрос принадлежности (Membership Query Message)
Запросы принадлежности рассылаются маршрутизаторами для того, чтобы для каждого узла определить его принадлежность к каким-либо группам (group membership state) и список источников информации, от которых данный узел хочет получать сообщения (reception state). Существует три типа таких запросов:
- Общие запросы (General Queries) — позволяют получить полную информацию для каждого из узлов. Маршрутизатор периодически рассылает эти запросы всем системам, подключенным к его сети.
- Запросы с указанием группы (Group-Specific Queries) — используются для определения состояния подписки для заданной группы узлов. Такие запросы рассылаются по соответствующему групповому адресу.
- Запросы с указанием группы и источника (Group-and-Source-Specific Queries) — позволяет для каждого узла заданной группы определить, какие сообщения из всех, посылаемых заданными источниками, этот узел хочет получать.
Октет 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 0—3 Type = 0x11 Max Resp Code Checksum 4—7 Group Address 8—11 Resv S QRV QQIC Number of Sources (N) 12—15 Source Address [1] … … Source Address [N] - Код макс. ответа (Max Resp Code) — максимальное время (в 1/10 секунды) ожидания ответа, соответствующего данному запросу. Если значением является число, меньшее 128, оно используется напрямую. Если же значение больше или равно 128, оно интерпретируется как экспонента с мантиссой.
- Контрольная сумма (Checksum) — 16-битная контрольная сумма для всего IGMP-сообщения.
- Групповой адрес (Group Address) — групповой адрес, используемый в запросах с указанием группы. При общем запросе это поле устанавливается равным нулю.
- Resv — поле зарезервировано, его следует обнулять при посылке и игнорировать при получении.
- Флаг S (Прекратить серверную обработку, Suppress Router-side Processing) — установка этого флага указывает всем маршрутизаторам, получившим данное сообщение, прекратить обновления по таймеру.
- QRV (Переменная надежности запрашивающего, Querier’s Robustness Variable) — содержит переменную надежности (Robustness Variable), значение которой используется посылающим устройством. Маршрутизаторы должны обновлять их переменные надежности в соответствии с последним полученным запросом, пока это поле ненулевое.
- QQIC (Код интервала запроса, Querier’s Query Interval Code) — значение поля указывает интервал между запросами (Query Interval), используемый запрашивающим. Если значением является число, меньшее 128, оно используется напрямую. Если же значение больше или равно 128, оно интерпретируется как экспонента с мантиссой.
- Количество источников (Number of Sources, N) — определяет число адресов источников, присутствующих в этом запросе. Для общих запросов и запросов с указанием группы это значение равно нулю. Для запросов с указанием группы и источника это поле ненулевое, оно ограничено значением MTU сети.
- Адрес источника [i] (Source Address) — массив индивидуальных (не групповых) IP-адресов источников данных.
Отчёт о принадлежности (Membership Report Message)
Октет 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 0—3 Type = 0x22 Reserved Checksum 4—7 Reserved Number of Group Record (M) 8—11 Group Record [1] … … Group Record [M] - Reserved — должно устанавливаться в ноль при передаче и игнорироваться при приёме;
- Number of Group Record — количество полей Group Record в сообщении;
- Group Record — блок полей, содержащий информацию о членстве отправителя в группе:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Record Type Aux Data Len Number of Sources (N) Multicast Address Source Address [1] … Source Address [N] Auxilary Data -
- Record Type — тип записи:
- Текущее состояние — посылается в ответ на запрос, сообщает о текущем режиме фильтрации, относительно указанного группового адреса, принимает значения MODE_IS_INCLUDE и MODE_IS_EXCLUDE;
- Изменение режима — посылается при изменении режима фильтрации, принимает значения CHANGE_TO_INCLUDE_MODE и CHANGE_TO_EXCLUDE_MODE;
- Изменение списка источников — посылается при изменении списка источников без изменения режима фильтрации:
- ALLOW_NEW_SOURCES — в режиме INCLUDE адреса добавляются к списку, в режиме EXCLUDE — удаляются из списка;
- BLOCK_OLD_ SOURCES — в режиме EXCLUDE адреса добавляются к списку, в режиме INCLUDE — удаляются из списка.
- Aux Data Len — длина дополнительных данных в 32-битных словах.
- Number of Sources — количество адресов источников данных;
- Multicast Address — групповой адрес, к которому относится информация в записи;
- Source Address — массив индивидуальных IP-адресов источников данных;
- Auxilary Data — дополнительная информация, не должна использоваться в текущей версии протокола.
- Record Type — тип записи:
Другие типы пакетов
Тип Наименование Описание 0x12 Version 1 Membership report Должны поддерживаться для совместимости с предыдущими версиями 0x16 Version 2 Membership report 0x17 Version 2 Leave Group 0x13 Distance Vector Multicast Routing Protocol Экспериментальный протокол См. также
Примечания
- ↑ Network Sorcery — IGMP
- ↑ Spoofed IGMP report denial of service vulnerability.
- ↑ Fragmented IGMP packet may promote «Denial of Service» attack.
- ↑ IGMP Security Problem Statement and Requirements.
- ↑ Microsoft Security Bulletin MS06-007: Vulnerability in TCP/IP Could Allow Denial of Service (913446).
Ссылки
- Network Sorcery — IGMP
- IPv4 Multicasting Tools and Settings on Microsoft TechNet
- Different version and details on IGMP
Основные протоколы TCP/IP по уровням модели OSI (Список портов TCP и UDP) Физический Канальный Ethernet • PPPoE • PPP • L2F • 802.11 Wi-Fi • 802.16 WiMax • Token ring • ARCNET • FDDI • HDLC • SLIP • ATM • CAN • DTM • X.25 • Frame relay • SMDS • STP • ERPS
Сетевой Транспортный Сеансовый Представления Прикладной Другие прикладные OSCAR • CDDB • Multicast FTP • Multisource FTP • BitTorrent • Gnutella • Skype
Категории:- TCP/IP
- Сетевые протоколы
- Протоколы сетевого уровня
- Интернет-протоколы
Wikimedia Foundation. 2010.