RFC: 1112
Оригинал: Host Extensions for IP Multicasting
Предыдущие версии: RFC 966, RFC 988, RFC 1054
Категория: Стандарт Интернета
Дата публикации:
Автор:
Перевод: Николай Малых

RFC 1112, Страница 14 из 15

Диаграмма состояний

Поведение IGMP формально описывается приведенной ниже диаграммой состояний. Хост может находиться в одном из трех возможных состояний применительно к любой группе хостов IP на любом из сетевых интерфейсов:

  • Состояние Non-Member (хост не входит в группу)
  • начальное состояние для всех групп на всех сетевых интерфейсах. Это состояние не требует ресурсов хоста.
  • Состояние Delaying Member
  • говорит о том, что хост принадлежит к группе на данном интерфейсе и запущен таймер генерации отчета о принадлежности к группе.
  • Состояние Idle Member
  • говорит о том, что хост входит в группу, но таймер генерации отчета о принадлежности к группе не запущен.

Существует пять типов событий, которые могут вызывать изменения состояний IGMP:

  • Событие join group (подключение к группе)
  • связано с решением хоста о подключении к группе на данном интерфейсе. Это событие может быть связано только с хостами, находящимися в состоянии Non-Member.
  • Событие leave group (выход из группы)
  • происходит в тех случаях, когда хост покидает группу на данном интерфейсе. Это событие может происходить только для хостов, находящихся в состоянии Delaying Member или Idle Member.
  • Событие query received (получен запрос)
  • связано с получением хостом корректного сообщения IGMP Host Membership Query. Корректное сообщение Query должно иметь размер не менее 8 октетов, корректную контрольную сумму IGMP и IP-адрес получателя 224.0.0.1. Одно сообщение Query применимо ко всем фактам принадлежности (membership) на интерфейсе, из которого получено сообщение Query. Это сообщение игнорируется хостами, находящимися в состоянии Non-Member или Delaying Member.
  • Событие report received
  • связано с получением хостом корректного сообщения IGMP Host Membership Report (сообщение должно иметь размер не менее 8 октетов, корректную контрольную сумму IGMP и одинаковый адрес IP в поле получателя и адреса группы IGMP). Сообщение Report применимо только к принадлежности к группе, указанной в данном сообщении и относящейся к интерфейсу, через который принято сообщение Report. Это сообщение игнорируется хостами, находящимися в состоянии Non-Member или Delaying Member.
  • Событие timer expired
  • происходит при завершении времени, заданного для таймера задержки этой группы на данном интерфейсе. Событие может происходить только в состоянии Delaying Member.

Все прочие события (например, некорректные сообщения IGMP или сообщения IGMP, не являющиеся Query или Report) игнорируются в любом состоянии.

В ответ на перечисленные выше события может выполняться три типа операций:

  • Передача отчета (send report) для группы на данном интерфейсе.
  • Запуск таймера (start timer) для группы на данном интерфейсе с использованием случайной задержки в диапазоне от 0 до D секунд.
  • Остановка таймера (stop timer) для группы на данном интерфейсе.

На приведенной ниже диаграмме каждый переход обозначен меткой события, вызвавшего этот переход, и в скобках указаны действия, выполняемые в процессе перехода.

                     ________________
                    |                |
                    |                |
                    |                |
                    |                |
          --------->|   Non-Member   |<---------
         |          |                |          |
         |          |                |          |
         |          |                |          |
         |          |________________|          |
         |                   |                  |
         | leave group       | join group       | leave group
         | (stop timer)      |(send report,     |
         |                   | start timer)     |
 ________|________           |          ________|________
|                 |<---------          |                 |
|                 |                    |                 |
|                 |<-------------------|                 |
|                 |   query received   |                 |
| Delaying Member |    (start timer)   |   Idle Member   |
|                 |------------------->|                 |
|                 |   report received  |                 |
|                 |    (stop timer)    |                 |
|_________________|------------------->|_________________|
                       timer expired
                       (send report)

Группа all-hosts (адрес 224.0.0.1) рассматривается как специальный случай. Хост стартует в состоянии Idle Member по отношению к этой группе на всех интерфейсах, никогда не переходит в другие состояния и никогда не шлет сообщений о принадлежности к этой группе.

Параметры протокола

Максимальная задержка передачи отчета (D) составляет 10 секунд.

2007 - 2017 © Русские переводы RFC, IETF, ISOC.