IGMP

Поделись знанием:
Перейти к: навигация, поиск
IGMP
Название:

Internet Group Management Protocol

Уровень (по модели OSI):

Сетевой

Семейство:

TCP/IP

Назначение протокола:

Управление групповой маршрутизацией

Спецификация:

RFC 3376

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 определен в [tools.ietf.org/html/rfc1112 RFC 1112], IGMPv2 — в [tools.ietf.org/html/rfc2236 RFC 2236] и IGMPv3 — в [tools.ietf.org/html/rfc3376 RFC 3376].

Основным улучшением в IGMPv3 относительно IGMPv2 является поддержка фильтрации IP-адресов. С помощью этого механизма узел может сообщить, с каких адресов он хочет получать пакеты, а с каких нет.

Реализация

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

Операционные системы FreeBSD, Linux и Windows поддерживают клиентскую часть протокола. В системе Linux IGMPv3 был добавлен в версии ядра 2.5. Для FreeBSD IGMPv3 был добавлен в версии 8.0.

Для реализации серверной части IGMP в Linux используются демоны, например, mrouted может действовать как IGMP маршрутизатор. Существуют также целые программные комплексы (такие, как XORP), позволяющие превратить обычный компьютер в полнофункциональный маршрутизатор групповой передачи.

Структура пакетов IGMPv3

Определена стандартом [tools.ietf.org/html/rfc3376#section-4 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 — дополнительная информация, не должна использоваться в текущей версии протокола.

Другие типы пакетов

Тип Наименование Описание
0x12 Version 1 Membership report Должны поддерживаться для совместимости с предыдущими версиями
0x16 Version 2 Membership report
0x17 Version 2 Leave Group
0x13 Distance Vector Multicast Routing Protocol Экспериментальный протокол

См. также

Напишите отзыв о статье "IGMP"

Примечания

  1. [www.networksorcery.com/enp/protocol/igmp.htm Network Sorcery — IGMP]
  2. Spoofed [www.securityfocus.com/bid/5020/info IGMP report denial of service] vulnerability.
  3. [support.microsoft.com/default.aspx?scid=kb;en-us;238329&sd=tech Fragmented IGMP packet] may promote «Denial of Service» attack.
  4. [www.securemulticast.org/GSEC/gsec3_ietf53_SecureIGMP1.pdf#search=%22igmp%20attacks%22 IGMP Security Problem Statement and Requirements].
  5. Microsoft Security Bulletin MS06-007: [www.microsoft.com/technet/security/Bulletin/MS06-007.mspx Vulnerability in TCP/IP Could Allow Denial of Service (913446)].

Ссылки

  • [www.networksorcery.com/enp/protocol/igmp.htm Network Sorcery — IGMP]
  • [technet2.microsoft.com/WindowsServer/en/Library/fe09af2c-3deb-4c6c-a79f-35c6953a8c9d1033.mspx IPv4 Multicasting Tools and Settings on Microsoft TechNet]
  • [www.commsdesign.com/article/printableArticle.jhtml?articleID=52200253 Different version and details on IGMP]

Отрывок, характеризующий IGMP

Ростова особенно поразила своей красотой небольшая чистопсовая, узенькая, но с стальными мышцами, тоненьким щипцом (мордой) и на выкате черными глазами, краснопегая сучка в своре Илагина. Он слыхал про резвость Илагинских собак, и в этой красавице сучке видел соперницу своей Милке.
В середине степенного разговора об урожае нынешнего года, который завел Илагин, Николай указал ему на его краснопегую суку.
– Хороша у вас эта сучка! – сказал он небрежным тоном. – Резва?
– Эта? Да, эта – добрая собака, ловит, – равнодушным голосом сказал Илагин про свою краснопегую Ерзу, за которую он год тому назад отдал соседу три семьи дворовых. – Так и у вас, граф, умолотом не хвалятся? – продолжал он начатый разговор. И считая учтивым отплатить молодому графу тем же, Илагин осмотрел его собак и выбрал Милку, бросившуюся ему в глаза своей шириной.
– Хороша у вас эта чернопегая – ладна! – сказал он.
– Да, ничего, скачет, – отвечал Николай. «Вот только бы побежал в поле матёрый русак, я бы тебе показал, какая эта собака!» подумал он, и обернувшись к стремянному сказал, что он дает рубль тому, кто подозрит, т. е. найдет лежачего зайца.
– Я не понимаю, – продолжал Илагин, – как другие охотники завистливы на зверя и на собак. Я вам скажу про себя, граф. Меня веселит, знаете, проехаться; вот съедешься с такой компанией… уже чего же лучше (он снял опять свой бобровый картуз перед Наташей); а это, чтобы шкуры считать, сколько привез – мне всё равно!
– Ну да.
– Или чтоб мне обидно было, что чужая собака поймает, а не моя – мне только бы полюбоваться на травлю, не так ли, граф? Потом я сужу…
– Ату – его, – послышался в это время протяжный крик одного из остановившихся борзятников. Он стоял на полубугре жнивья, подняв арапник, и еще раз повторил протяжно: – А – ту – его! (Звук этот и поднятый арапник означали то, что он видит перед собой лежащего зайца.)
– А, подозрил, кажется, – сказал небрежно Илагин. – Что же, потравим, граф!
– Да, подъехать надо… да – что ж, вместе? – отвечал Николай, вглядываясь в Ерзу и в красного Ругая дядюшки, в двух своих соперников, с которыми еще ни разу ему не удалось поровнять своих собак. «Ну что как с ушей оборвут мою Милку!» думал он, рядом с дядюшкой и Илагиным подвигаясь к зайцу.
– Матёрый? – спрашивал Илагин, подвигаясь к подозрившему охотнику, и не без волнения оглядываясь и подсвистывая Ерзу…
– А вы, Михаил Никанорыч? – обратился он к дядюшке.
Дядюшка ехал насупившись.
– Что мне соваться, ведь ваши – чистое дело марш! – по деревне за собаку плачены, ваши тысячные. Вы померяйте своих, а я посмотрю!
– Ругай! На, на, – крикнул он. – Ругаюшка! – прибавил он, невольно этим уменьшительным выражая свою нежность и надежду, возлагаемую на этого красного кобеля. Наташа видела и чувствовала скрываемое этими двумя стариками и ее братом волнение и сама волновалась.
Охотник на полугорке стоял с поднятым арапником, господа шагом подъезжали к нему; гончие, шедшие на самом горизонте, заворачивали прочь от зайца; охотники, не господа, тоже отъезжали. Всё двигалось медленно и степенно.
– Куда головой лежит? – спросил Николай, подъезжая шагов на сто к подозрившему охотнику. Но не успел еще охотник отвечать, как русак, чуя мороз к завтрашнему утру, не вылежал и вскочил. Стая гончих на смычках, с ревом, понеслась под гору за зайцем; со всех сторон борзые, не бывшие на сворах, бросились на гончих и к зайцу. Все эти медленно двигавшиеся охотники выжлятники с криком: стой! сбивая собак, борзятники с криком: ату! направляя собак – поскакали по полю. Спокойный Илагин, Николай, Наташа и дядюшка летели, сами не зная как и куда, видя только собак и зайца, и боясь только потерять хоть на мгновение из вида ход травли. Заяц попался матёрый и резвый. Вскочив, он не тотчас же поскакал, а повел ушами, прислушиваясь к крику и топоту, раздавшемуся вдруг со всех сторон. Он прыгнул раз десять не быстро, подпуская к себе собак, и наконец, выбрав направление и поняв опасность, приложил уши и понесся во все ноги. Он лежал на жнивьях, но впереди были зеленя, по которым было топко. Две собаки подозрившего охотника, бывшие ближе всех, первые воззрились и заложились за зайцем; но еще далеко не подвинулись к нему, как из за них вылетела Илагинская краснопегая Ерза, приблизилась на собаку расстояния, с страшной быстротой наддала, нацелившись на хвост зайца и думая, что она схватила его, покатилась кубарем. Заяц выгнул спину и наддал еще шибче. Из за Ерзы вынеслась широкозадая, чернопегая Милка и быстро стала спеть к зайцу.
– Милушка! матушка! – послышался торжествующий крик Николая. Казалось, сейчас ударит Милка и подхватит зайца, но она догнала и пронеслась. Русак отсел. Опять насела красавица Ерза и над самым хвостом русака повисла, как будто примеряясь как бы не ошибиться теперь, схватить за заднюю ляжку.
– Ерзанька! сестрица! – послышался плачущий, не свой голос Илагина. Ерза не вняла его мольбам. В тот самый момент, как надо было ждать, что она схватит русака, он вихнул и выкатил на рубеж между зеленями и жнивьем. Опять Ерза и Милка, как дышловая пара, выровнялись и стали спеть к зайцу; на рубеже русаку было легче, собаки не так быстро приближались к нему.
– Ругай! Ругаюшка! Чистое дело марш! – закричал в это время еще новый голос, и Ругай, красный, горбатый кобель дядюшки, вытягиваясь и выгибая спину, сравнялся с первыми двумя собаками, выдвинулся из за них, наддал с страшным самоотвержением уже над самым зайцем, сбил его с рубежа на зеленя, еще злей наддал другой раз по грязным зеленям, утопая по колена, и только видно было, как он кубарем, пачкая спину в грязь, покатился с зайцем. Звезда собак окружила его. Через минуту все стояли около столпившихся собак. Один счастливый дядюшка слез и отпазанчил. Потряхивая зайца, чтобы стекала кровь, он тревожно оглядывался, бегая глазами, не находя положения рукам и ногам, и говорил, сам не зная с кем и что.
«Вот это дело марш… вот собака… вот вытянул всех, и тысячных и рублевых – чистое дело марш!» говорил он, задыхаясь и злобно оглядываясь, как будто ругая кого то, как будто все были его враги, все его обижали, и только теперь наконец ему удалось оправдаться. «Вот вам и тысячные – чистое дело марш!»
– Ругай, на пазанку! – говорил он, кидая отрезанную лапку с налипшей землей; – заслужил – чистое дело марш!
– Она вымахалась, три угонки дала одна, – говорил Николай, тоже не слушая никого, и не заботясь о том, слушают ли его, или нет.
– Да это что же в поперечь! – говорил Илагинский стремянный.
– Да, как осеклась, так с угонки всякая дворняшка поймает, – говорил в то же время Илагин, красный, насилу переводивший дух от скачки и волнения. В то же время Наташа, не переводя духа, радостно и восторженно визжала так пронзительно, что в ушах звенело. Она этим визгом выражала всё то, что выражали и другие охотники своим единовременным разговором. И визг этот был так странен, что она сама должна бы была стыдиться этого дикого визга и все бы должны были удивиться ему, ежели бы это было в другое время.
Дядюшка сам второчил русака, ловко и бойко перекинул его через зад лошади, как бы упрекая всех этим перекидыванием, и с таким видом, что он и говорить ни с кем не хочет, сел на своего каураго и поехал прочь. Все, кроме его, грустные и оскорбленные, разъехались и только долго после могли притти в прежнее притворство равнодушия. Долго еще они поглядывали на красного Ругая, который с испачканной грязью, горбатой спиной, побрякивая железкой, с спокойным видом победителя шел за ногами лошади дядюшки.
«Что ж я такой же, как и все, когда дело не коснется до травли. Ну, а уж тут держись!» казалось Николаю, что говорил вид этой собаки.
Когда, долго после, дядюшка подъехал к Николаю и заговорил с ним, Николай был польщен тем, что дядюшка после всего, что было, еще удостоивает говорить с ним.


Когда ввечеру Илагин распростился с Николаем, Николай оказался на таком далеком расстоянии от дома, что он принял предложение дядюшки оставить охоту ночевать у него (у дядюшки), в его деревеньке Михайловке.
– И если бы заехали ко мне – чистое дело марш! – сказал дядюшка, еще бы того лучше; видите, погода мокрая, говорил дядюшка, отдохнули бы, графинечку бы отвезли в дрожках. – Предложение дядюшки было принято, за дрожками послали охотника в Отрадное; а Николай с Наташей и Петей поехали к дядюшке.
Человек пять, больших и малых, дворовых мужчин выбежало на парадное крыльцо встречать барина. Десятки женщин, старых, больших и малых, высунулись с заднего крыльца смотреть на подъезжавших охотников. Присутствие Наташи, женщины, барыни верхом, довело любопытство дворовых дядюшки до тех пределов, что многие, не стесняясь ее присутствием, подходили к ней, заглядывали ей в глаза и при ней делали о ней свои замечания, как о показываемом чуде, которое не человек, и не может слышать и понимать, что говорят о нем.