Кратко

  • RGMP заменял флудинг к портам маршрутизаторов явным обновляемым спросом на группы и требовал одного включённого маршрутизатора непосредственно на порт.
  • Два маршрутизатора на одном порту могли потерять трафик после Leave одного из них; RFC считала такой заметный сбой лучше флудинга, скрывающего причину.

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

RGMP сделал спрос явным. Hello включал порт и таймер в пять интервалов. Join открывал группу и периодически обновлялся. Leave снимал спрос. Bye или истечение возвращали прежнее поведение. Состояние хранилось на порт, а не на каждый скрытый за ним маршрутизатор.

Отсюда физический инвариант: один RGMP-маршрутизатор напрямую на один порт. Если два устройства хотели группу G, Leave одного мог удалить G для обоих. Несколько адресов источника позволяли поднять тревогу, но не разделяли намерения.

RFC называла возврат к флудингу потенциально опасным. Чёрная дыра была заметна и давала меньше трафика. Флудинг внешне восстанавливал доставку, но отменял экономию. Ошибка подключения оставалась скрыта, пока рост не перегружал порт или маршрутизаторы; тогда следствие уже трудно было связать с причиной.

Join не доказывал доставку. Некоторые группы всегда пересылались. Разные IP-группы могли иметь один MAC, мешая выборочному фильтру. Другой механизм второго уровня мог сохранить группу после Leave. Сообщение, логическое состояние, аппаратная таблица и полученный пакет были разными квитанциями.

RGMP не ограничивал межкоммутаторные линии сам по себе, а несовместимые маршрутизаторы получали всё. PIM Dense Mode, DVMRP, DF в Bidir-PIM и прямые источники PIM-SM имели ограничения. Наличие функции не означало совместимости роли.

Безопасность опиралась на изолированный порт. Поддельные Hello или Leave могли создать потерю; Bye или Join могли вернуть нежелательную нагрузку и переполнить ёмкость, рассчитанную с учётом подавления.

Проверка начинается с порта, устройств, источников Hello/Bye, таймеров, группы, Join и Leave. Затем связываются MAC, параллельные фильтры, аппаратная таблица, счётчики, отбрасывания, загрузка и приём. Только так различаются правильное подавление, случайная чёрная дыра и скрытый флудинг.

Разделение уровней реальности Хэн Лу объясняет этот выбор. RFC 3488 выбрала локализуемую поломку, а не видимость непрерывности, стирающую причину и переносящую цену в будущее.

Источники