Протокол маршрутизации, предназначенный для работы в сетях с высокой подвижностью объектов. Примером такой сети является часть ATN (Airbone Tactical Network). Основная идея заключается в быстром распространении маршрутной информации, а также прогнозирование потери соединения на основе отношения сигнал/шум, полученного узлом от своих соседей.
Протокол имеет следующие типы сообщений:
- HELLO
- REPLY
- REQUEST
- DISCONNECT
- NOTIFY
Сообщение для обнаружения новых соседей. Узел передает на широковещательный адрес 255.255.255.0 информацию о своей таблице маршрутизации. Никак не влияет на принятие решения о мертвости соседа, потому что отключение будет происходить по другому механизму через DISCONNECT сообщение. Формат заголовка:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Reserved | Rtable Size |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Hop Count | Reserved | Additional Info |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Hop Count | Reserved | Additional Info |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...
Type (1 байт)
Тип сообщения из вышеперечисленных
Reserved (1 байт)
Поле добавлено для выравнивания к 4 байтам. Заполняется нулями.
Rtable Size (2 байта)
Размер последующей таблицы маршрутизации узла
Destination Address (4 байта)
IP адрес назначения.
Hop Count (1 байт)
Количество переходов от узла отправителя до узла назначения.
Additional Info (2 байта)
Дополнительная информация об узле. На всякий случай + выравнивание.
Reply, Request и Disconnect относятся к информационным сообщениям, т.е. таким сообщениям, которые заставляют принимать узел какое-то решение в части качества связи. Reply - ответ на запрос. Request - запрос на эхо ответ. Эхо необходимо для определения уровня сигнал/шум на запрашивающем узле. Disconnect - уведомление о скором разрыве соединения с узлом. Сообщение должно спровоцировать принимающий узел уведомить своих соседей о исчезновении пути до отправителя и поиск нового маршрута.
Формат этих типов сообщений одинаковый и выглядит следующим образом:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Reserved | Additional Info |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type (1 байт)
Тип сообщения
Reserved (1 байт)
Выравнивание
Additional Info (2 байта)
Для дополнительной информации, которую захочет передать разработчик
Сообщение должно рассылаться всем соседям, после приема Disconnect уведомления, кроме источника. Заставляет искать новый маршрут всех кто имеет маршрут до отключаемого в скором времени узла.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Reserved | Additional Info |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Disconnect Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type (1 байт)
Тип сообщения
Reserved (1 байт)
Выравнивание
Additional Info (2 байта)
Для дополнительной информации, которую захочет передать разработчик
Disconnect Address (4 байта)
Отключаемый узел