Distance Vector Multicast Routing Protocol (DVMRP — Протокол дистанционно-векторной многоадресной маршрутизации) — протокол маршрутизации групповых датаграмм для IP-сетей. Протокол предназначен для использования внутри автономных систем, то есть является протоколом внутридоменной маршрутизации.
Описание протокола DVMRP находится в RFC 1075.
Основные положения
Протокол DVMRP реализует метод RPF (Reverse Path Forwarding) с усечением (Prune)[1]. Когда маршрутизатор получает пакет, он пересылает его на все интерфейсы, кроме исходного. Если в зоне ответственности маршрутизатора нет членов мультикаст-группы, тогда маршрутизатор посылает обратно сообщение об исключении, отсекая ненужные (не имеющие членов) ветки дерева рассылки.
Структура датаграмм протокола
DVMRP использует сообщения протокола IGMP для обмена информацией с другими маршрутизаторами — поле протокола в IP-пакете заполняется значением 2[2].
Структура датаграмм протокола[2]:
+
|
0—3
|
4—7
|
8—15
|
16—23
|
24—31
|
0
|
Версия
|
Тип
|
Код
|
Контрольная сумма
|
32
|
Тело DVMRP-сообщения
|
|
- Версия — текущее значение 1;
- Тип — должно быть 3;
- Код — определяет назначение пакета DVMRP[3]:
- 1 = Response — сообщение обеспечивает маршрутизацию для нескольких групп;
- 2 = Request — сообщение запрашивает маршрутизацию для нескольких групп;
- 3 = Non-membership report — сообщение обеспечивает доклад о неучастии в группах;
- 4 = Non-membership cancellation — сообщение отменяет предыдущий доклад о неучастии в группах;
- Контрольная сумма — рассчитывается при передаче пакета и проверяется при получении; при расчёте контрольной суммы поле контрольной суммы принимается за ноль;
- Тело сообщения — набор команд, выровненных по границе 16 бит:
- код команды (8 бит);
- данные (минимум 8 бит).
Команды
Команда |
Данные
|
код |
значение |
размер (бит) |
наименование |
значение
|
0 |
Пустая |
8 |
— |
игнорируются
|
2 |
Тип адреса |
8 |
family |
2 — IPv4
|
3 |
Маска подсети |
8(+32) |
count, mask |
count = 0 — нет поля mask, для следующих маршрутов используется маска сети назначения; 1 — есть поле mask, длина которого зависит от типа адреса
|
4 |
Метрика |
8 |
value |
Метрика следующих пунктов назначения относительно маршрутизатора, посылающего команду
|
5 |
Флаги |
8 |
value |
бит 7 — пункт назначения недоступен; бит 6 — скрываемый маршрут расщепления горизонта
|
6 |
Бесконечность |
8 |
value |
Значение метрики, считающееся бесконечностью
|
7 |
Адрес назначения |
8+32×N |
count, address1, …, addressN |
Количество адресов, массив адресов назначения; длина адреса зависит от его типа
|
8 |
Запрашиваемые адреса назначения |
8+32×N |
count, address1, …, addressN |
Количество адресов, массив адресов назначения, для которых запрашиваются маршруты; при count = 0 – запрашиваются все адреса
|
9 |
Неучастие в группе |
8+(32+32)×N |
count, address1, time1, …, addressN, timeN |
Количество элементов, массив из пар: групповой адрес, время действия; запрещает посылку датаграмм по указанным адресам на указанное время
|
10 |
Отмена неучастия в группе |
8+32×N |
count, address1, …, addressN |
Количество адресов, массив групповых адресов, для которых отменяется запрет посылки датаграмм
|
См. также
Примечания