Кратко

  • RFC 9777 обнаруживает слушателей только на подключённом IPv6-канале; он не аутентифицирует запрос и не подтверждает сквозной путь.
  • Состояние сокетов объединяется на интерфейсе, затем сжимается в состояние INCLUDE/EXCLUDE маршрутизатора и ограничивается таймерами.
  • Для приёмки услуги нужны восемь отдельных квитанций: от разрешённого намерения до полезного потребления.

Положительный Source Timer легко принять за настоящее время. Но это сохранённое наблюдение из прошлого. Именно эту границу проводит RFC 9777, опубликованный в марте 2025 года как STD 101. Стандарт учит IPv6-маршрутизатор слушателям на прямом канале; всё, что происходит дальше, требует других механизмов.

Два уровня сжатия

Приложение задаёт сокет, интерфейс, группу, режим фильтра и источники. INCLUDE принимает перечисленные источники, EXCLUDE — все остальные. Если сокетов несколько, хост сводит их к состоянию интерфейса. Для INCLUDE берётся объединение; появление EXCLUDE меняет формулу. Report уже не перечисляет процессы.

Маршрутизатор снова агрегирует весь канал. В INCLUDE он хранит источники и их таймеры. В EXCLUDE — Requested List, Exclude List и Filter Timer. Requested List обеспечивает будущий переход к INCLUDE и быстрое блокирование, но не является самостоятельной таблицей разрешения. Строка маршрутизатора не называет живое приложение.

Даже принятый IP-пакет не равен доставке. Передача конкретному сокету зависит от его состояния и, возможно, транспортного порта. RFC 9777 не требует фильтрации источников отдельно для каждого сокета. Кадр, IP-пакет, данные сокета и результат приложения — разные наблюдения.

Таймер задаёт горизонт, а не гарантию

Current-State Reports обновляют состояние; State-Change Reports сообщают изменение и повторяются по Robustness Variable. При значениях по умолчанию 2, 125 секунд Query Interval и 10 секунд Query Response Interval MALI составляет 270 секунд. Это допуск на потерю сообщений и старение, а не свидетельство текущего здоровья процесса.

Fast leave тоже сначала проверяет наличие других слушателей. LLQI в одну секунду и два запроса дают LLQT в две секунды. Пока идёт проверка, MLD продолжает рекомендовать forwarding. В INCLUDE истечение Source Timer удаляет источник; в EXCLUDE оно может переместить его в Exclude List. Истечение Filter Timer переводит группу из EXCLUDE в INCLUDE. Без исходного режима слово «истёк» ничего не объясняет.

Совместимость снижает точность

MLDv1 General Query переводит хост в режим v1 на этом интерфейсе—на 260 секунд при стандартных настройках—и отменяет ожидающие ответы и повторы. Сведения о конкретных источниках больше не передаются.

MLDv1 Report аналогично переводит отдельную группу на маршрутизаторе в v1. BLOCK игнорируется, списки источников в TO_EX теряются. После возврата к v2 точность нужно выучить заново; нежелательный источник может оставаться открытым до MALI.

RFC 4604 для SSM требует не использовать старый неспецифичный Report для создания forwarding state. Хосты и маршрутизаторы должны одинаково понимать диапазон SSM. Совместимость — это временное изменение смысла, а не универсальный знак безопасности.

За локальным состоянием начинается дерево

RFC 9777 прямо говорит, что MLD не отменяет routing information. В PIM-SSM, согласно RFC 4607, Join (S,G) должен пройти к источнику hop-by-hop по пути без петель. RFC 7761 добавляет shared и source trees, переходы, репликацию, временные дубликаты и Prune. Локальный Report может быть правильным до завершения этой работы.

На последнем LAN собственное состояние имеет snooping-коммутатор. RFC 4541 разделяет обработку control и data, multicast-router ports и реакцию на топологию. MLDv2 также не имеет криптографической аутентификации: link-local адрес, Hop Limit 1 и Router Alert блокируют подделку извне канала, но не внутри него.

Восемь квитанций

Намерение сокета фиксирует процесс, разрешение, фильтр и время. Отправка Report подтверждает нужное сообщение. Querier записывает версию, QRV, QQI и таймеры. Состояние маршрутизатора сохраняет режим, списки и остаток времени. Совместимость объясняет downgrade. Upstream forwarding следует за Join/Prune и RPF. Репликация доказывает прохождение ветвей. Доставка измеряет порядок, потери, задержку, декодирование и полезное потребление.

У каждого наблюдения свой владелец и момент. Локальная запись не может удостоверить удалённое дерево, а байты в сокете — успешную работу приложения.

Источники

  1. RFC 9777 — MLDv2 для IPv6
  2. RFC 3810 — прежняя спецификация
  3. RFC 2710 — MLDv1
  4. RFC 4604 — MLDv2 для SSM
  5. RFC 4607 — SSM
  6. RFC 7761 — PIM-SM
  7. RFC 4541 — IGMP/MLD snooping