IP Multicast

Материал из Xgu.ru

Перейти к: навигация, поиск
stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом.


Содержание

[править] Multicast адреса

Диапазоны адресов:

Диапазон Описание
224.0.0.0 - 224.0.0.255 Local Network Control Block
224.0.1.0 - 224.0.1.255 Internetwork Control Block
224.0.2.0 - 224.0.255.255 Ad hoc Block
224.1.0.0 - 224.1.255.255 Не назначен
224.2.0.0 - 224.2.255.255 SDP/SAP Block
224.3.0.0 - 231.255.255.255 Не назначен
232.0.0.0 - 232.255.255.255 Source Specific Multicast Block
233.0.0.0 - 233.255.255.255 GLOP Block
234.0.0.0 - 238.255.255.255 Не назначен
239.0.0.0 - 239.255.255.255 Administratively Scoped Block

Популярные зарезервированные адреса:

Адрес Описание
224.0.0.0 Base address (reserved)
224.0.0.1 The All Hosts multicast group that contains all systems on the same network segment
224.0.0.2 The All Routers multicast group that contains all routers on the same network segment
224.0.0.5 AllSPFRouters address. Используется для отправки Hello-сообщений всем OSPF-маршрутизаторам.
224.0.0.6 AllDRouters address. Используется для отправки OSPF-сообщений выделенным маршрутизаторам OSPF.
224.0.0.9 RIP версии 2
224.0.0.10 EIGRP-маршрутизаторы
224.0.0.18 VRRP
224.0.0.22 IGMP версии 3
224.0.0.102 HSRP версии 2
224.0.0.251 Multicast DNS address

Multicast адреса могут выдаваться [1]:

  • Static
  • Scope-relative -- старшие 256 адресов в каждом административном диапазоне адресов зарезервированы для relative assignments.
  • Dynamic

[править] Передача multicast трафика на сетевом уровне

[править] IGMP

Сообщения IGMP инкапсулируются в IP-пакеты с номером протокола 2, поле TTL равно 1. Так как TTL равно 1, то маршрутизаторы не передают пакеты IGMP.

[править] Querier

Querier -- это маршрутизатор, который отвечает за отправку multicast трафика в сегмент. Querier становится маршрутизатор у которого меньше IP-адрес.

Эта роль выбирается с помощью IGMP, так как могут использоваться различные протоколы маршрутизации multicast трафика. Если используются разные протоколы на маршрутизаторах, которые передают трафик в одну сеть, то маршрутизаторы не смогут обнаружить друг друга.

[править] Версии протокола

В IGMP версии 2 было добавлено сообщение Leave Group, которое позволяет маршрутизатору быстрее обнаружить отсутствие членов группы.

В IGMP версии 3 добавлена возможность указания списка источников. Это позволяет хосту указывать с каких адресов он хочет получать пакеты, а с каких нет.

[править] IGMPv1

[править] Формат сообщений IGMPv1

|       8       |       8       |       8       |       8       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| Type  |     Unused    |           Checksum            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Group Address                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Отличия сообщений IGMPv1 от IGMPv2:

  • первый октет разбит на два поля Version и Type,
  • второй октет, в котором указывается Maximum Response Time в IGMPv2, не используется. Его значение 0x00.
  • в IP-заголовке не устанавливается опция IP Router Alert.

[править] IGMPv2

Маршрутизаторы, на которых включен IGMP, отправляют Query:

  • General Query -- отправляется на адрес 224.0.0.1 (все системы в подсети).
  • Group-Specific Query -- отправляется в ответ на полученное сообщение Leave от клиента, для того чтобы проверить есть ли ещё участники группы для которой было получено сообщение Leave. Так как сообщение может не дойти до участников группы и, как следствие, маршрутизатор перестанет передавать трафик в сеть, то отправляются два сообщения Group-Specific Query с интервалом 1 секунду.

[править] Формат сообщений IGMPv2

|       8       |       8       |       8       |       8       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type      |    Maximum    |           Checksum            |
|               | Response Time |                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Group Address                          |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

IGMPv2 использует одинаковый формат сообщения для всех своих сообщений. Сообщения IGMP инкапсулируются в IP, в IP-заголовке IGMP соответствует номер протокола 2.

Так как сообщения IGMP не должны выходить за пределы сети, в которой они были сгенерированы, то поле TTL всегда установлено равным 1.

Кроме того, выставляется опция IP Router Alert, которая информирует маршрутизатор о том, что ему необходимо "более подробно анализировать этот пакет".

Поля сообщения IGMPv2:

  • Type — поле определяет тип сообщения, размер 8 бит. Типы сообщений в IGMPv2:
    • Membership Query (значение поля = 0x11) — используется маршрутизаторами для того чтобы определить наличие хостов, которые хотят получать групповую рассылку:
      • General Membership Query устанавливает значение поля Group Address в 0.0.0.0.
      • Group-Specific Query устанавливает значение поля Group Address равным адресу группы в которой отправляется запрос. Это сообщение отправляет маршрутизатор после того как он получает от хоста сообщение Leave Group. Оно используется для того чтобы определить остались ли хосты в этой группе.
    • Version 1 Membership Report (значение поля = 0x12) — используется хостами IGMPv2 для обратной совместимости с IGMPv1.
    • Version 2 Membership Report (значение поля = 0x16) — отправляется членом группы для того чтобы сообщить маршрутизатору, что в группе есть как минимум один хост.
    • Leave Group (значение поля = 0x17) — отправляется членом группы для того чтобы сообщить маршрутизатору, что хост покидает группу.
  • Maximum Response Time — это поле используется только в сообщениях Query, 8 бит. Единицы измерения 1/10 секунды, по умолчанию значение поля 100 (10 секунд). Диапазон значений от 1 до 255 (0.1 до 25.5 секунд).
  • Checksum — контрольная сумма вычисленная отправителем, 16 бит. Вычисляется контрольная сумма всего IP-пакета без учета заголовка.
  • Group Address — устанавливается равным 0.0.0.0 в сообщениях General Query и равным адресу групповой рассылки в сообщениях Group-Specific. В сообщениях Membership Report это группа трафик которой хост хочет получать, а в сообщениях Leave Group это адрес группы которую хост хочет покинуть.

[править] Таймеры протокола

Таймеры протокола (значения соответствуют RFC 2236):

  • Query Interval — интервал времени, который указывает частоту отправки сообщений Query. По умолчанию 125 секунд.
  • Query Response Interval — максимальное время ожидания ответа от хоста на отправку периодических общих Query. По умолчанию 10 секунд. Диапазон значений от 1 до 255 (0.1 до 25.5 секунд).
  • Group Membership Interval — интервал времени в течение которого маршрутизатор ожидает получения IGMP Report. Если он не был получен, то маршрутизатор считает, что в данной сети больше нет хостов, которые принадлежат группе. По умолчанию 260 секунд.
  • Other Querier Present Interval — если в течение этого временного интервала маршрутизатор, который не стал querier, не получает IGMP Query от querier, то он считает, что querier не доступен. По умолчанию 255 секунд.
  • Last Member Query Interval — интервал времени, который указывает частоту отправки Group-Specific Queries для одной и той же группы. По умолчанию 1 секунд.
  • Version 1 Router Present Timeout — интервал времени в течение которого IGMPv2-хост ожидает получения IGMPv1 Query, если сообщение получено не было, то хост считает, что в сети нет маршрутизатора IGMPv1 и начинает отправлять сообщения IGMPv2. По умолчанию 400 секунд.

[править] Совместимость с IGMPv1

[править] Querier

Маршрутизатор с наименьшим IP-адресом становится Querier.

[править] IGMPv3

[править] Маршрутизация multicast трафика

Протокол Dense mode Sparse mode Source-Based Trees Shared Trees Implicit Join Explicit Join
PIM-DM Да Да Да
PIM-SM Да Да Да
DVMRP Да Да Да
MOSPF Да Да Да
CBT Да Да Да

[править] Protocol-Independent Multicast (PIM)

Сам протокол описан на странице PIM.

Его настройка на маршрутизаторах Cisco: PIM в Cisco.

Его настройка на коммутаторах ProCurve: PIM в ProCurve.

[править] Multicast OSPF (MOSPF)

MOSPF описан в RFC1584. Некоторые свойства протокола:

  • MOSPF использует group membership LSA, Type 6, которые передаются в пределах зоны маршрутизатора.
  • SPT высчитывается по требованию, когда приходит первый multicast пакет для группы.
  • При вычислении SPF все маршрутизаторы знают где находятся участники групп на основании полученных group membership LSA.
  • После того как выполнены вычисления SPF, соответствующие записи добавляются в таблицу маршрутизации multicast.
  • MOSFP также как и OSPFv2 вычисляет SPT без петель, поэтому проверка RPF не нужна.

[править] Distance Vector Multicast Routing Protocol (DVMRP)

  • DVMRP использует свой собственный дистанционно-векторный протокол маршрутизации, который похож на RIPv2:
    • отправляет обновления каждые 60 секунд,
    • 32 hop считается недостижимой метрикой маршрута.
  • DVMRP использует сообщения Probe для обнаружения соседей, отправляя их на адрес 224.0.0.4.
  • DVMRP использует truncated broadcast tree, которое аналогично SPT, с некоторыми исключенными линками.

[править] Multicast в ProCurve

Основная страница: Multicast в ProCurve

[править] Multicast в Cisco

Основная страница: Multicast в Cisco

[править] Multicast в Linux

Основная страница: Multicast в Linux

[править] Дополнительная информация

Источник — «http://xgu.ru/wiki/IP_Multicast»