Перейти до вмісту

IGMP

Матеріал з Вікіпедії — вільної енциклопедії.

IGMP, (англ. Internet Group Management Protocol — протокол керування групами Інтернету) — протокол керування груповою (multicast) передачею даних в мережах, базованих на протоколі IP. IGMP використовується маршрутизаторами і IP-точками для об'єднання мережевих пристроїв в групи.

Цей протокол є частиною специфікації групової передачі пакетів в IP-мережах. IGMP розташований вище мережевого рівня, хоча, насправді, функціонує не як транспортний протокол. Він в багато чому аналогічний ICMP для односторонньої передачі. IGMP може використовуватись для підтримки потокового відео і онлайн-ігор, для таких типів програм він дозволяє використовувати ресурси мережі ефективніше.

Брандмауери, зазвичай, дозволяють користувачу відключити цей протокол, якщо в ньому нема потреби.

IGMP використовується лише в мережах IPv4, оскільки в IPv6 групова передача пакетів реалізована інакше.

Архітектура

[ред. | ред. код]

Мережа, що надає послуги групової передача даних (наприклад, відео) із використанням 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) - дозволяє для кожного вузла заданої групи визначити, які повідомлення з усіх, що посилаються заданими джерелами, цей вузол хоче отримувати.

Код макс. відповіді (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 мережі. Адреса джерела - масив індивідуальних (не групових) IP-адрес джерел даних.

Звіт про приналежність (Membership Report Message)

[ред. | ред. код]
typefile
typefile

Reserved - повинно встановлюватися в нуль при передачі і ігноруватися при прийомі; Number of Group Record - кількість полів Group Record в повідомленні; Group Record - блок полів, що містить інформацію про членство відправника в групі:

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 - додаткова інформація,яка не повинна використовуватися в поточній версії даного протоколу, оскільки це є недоцільно.


Інші типи пакетів

Посилання

[ред. | ред. код]