Открыть сервис

AODV

AODV (Ad hoc On-Demand Distance Vector) — это протокол динамической маршрутизации, предназначенный для использования в беспроводных самоорганизующихся (ad hoc) сетях. Относится к классу реактивных (on-demand) протоколов, то есть маршруты устанавливаются только при необходимости передачи данных, а не поддерживаются постоянно. AODV является одним из наиболее распространённых протоколов маршрутизации в мобильных ad hoc сетях (MANET) и описан в стандарте RFC 3561.

История и развитие

Протокол AODV был разработан в конце 1990-х годов как результат исследований в области мобильных беспроводных сетей без фиксированной инфраструктуры. Основная цель создания AODV заключалась в объединении преимуществ двух существовавших на тот момент подходов: реактивного протокола DSR (Dynamic Source Routing) и проактивного протокола DSDV (Destination-Sequenced Distance Vector). От DSR была взята идея установления маршрутов по запросу, а от DSDV — механизм использования последовательных номеров для предотвращения образования петель маршрутизации.

Первая спецификация AODV была представлена в 1999 году Чарльзом Перкинсом, Элизабет Ройер и Сэмом Дасом. В 2003 году протокол был стандартизирован в RFC 3561. С тех пор AODV стал одним из эталонных протоколов для MANET и широко используется в академических исследованиях, а также в некоторых практических реализациях, включая военные и спасательные системы связи.

Принцип работы

AODV является реактивным протоколом, что означает, что узлы сети не обмениваются таблицами маршрутизации периодически. Вместо этого маршруты создаются и поддерживаются только для тех узлов, с которыми в данный момент ведётся обмен данными. Протокол работает на сетевом уровне модели OSI и использует IP-адреса для идентификации узлов.

Обнаружение маршрута

Когда узел-источник хочет отправить данные узлу-получателю, но не имеет в своей таблице маршрутизации записи для этого адресата, он инициирует процедуру обнаружения маршрута. Для этого источник широковещательно рассылает пакет RREQ (Route Request — запрос маршрута). Пакет RREQ содержит:

  • IP-адрес источника и получателя;
  • порядковый номер (sequence number) источника и последний известный порядковый номер получателя;
  • идентификатор запроса (broadcast ID);
  • счётчик переходов (hop count), изначально установленный в 0.

Каждый промежуточный узел, получивший RREQ, проверяет, не обрабатывал ли он уже этот запрос (по паре «IP-адрес источника — идентификатор запроса»). Если запрос новый, узел создаёт обратную запись в своей таблице маршрутизации, указывающую на узел, от которого пришёл запрос. Затем узел увеличивает счётчик переходов на 1 и пересылает RREQ дальше широковещательно. Если же узел уже обрабатывал этот запрос, он его игнорирует, что предотвращает лавинообразное распространение пакетов.

Процесс продолжается до тех пор, пока RREQ не достигнет узла-получателя или промежуточного узла, который имеет активный маршрут к получателю с порядковым номером не меньшим, чем указанный в запросе. Такой узел генерирует пакет RREP (Route Reply — ответ на запрос маршрута), который отправляется обратно к источнику по установленному обратному пути. RREP содержит порядковый номер получателя, счётчик переходов до получателя и время жизни маршрута.

Поддержание маршрута

AODV использует механизм поддержания маршрутов для обнаружения разрывов связи. Каждый узел, участвующий в активном маршруте, периодически отправляет своим соседям hello-сообщения (обычно каждые 1-2 секунды). Если узел не получает hello-сообщения от соседа в течение заданного времени (обычно трёх интервалов), он считает, что связь с этим соседом потеряна.

При обнаружении разрыва маршрута узел, обнаруживший проблему, генерирует пакет RERR (Route Error — ошибка маршрута). Этот пакет содержит список адресатов, которые стали недоступны из-за разрыва. RERR отправляется всем узлам, которые могли использовать этот маршрут. При получении RERR узлы помечают соответствующие записи в своих таблицах маршрутизации как недействительные. Если источник данных всё ещё нуждается в маршруте, он может инициировать новое обнаружение маршрута.

Порядковые номера

Ключевой особенностью AODV является использование порядковых номеров (sequence numbers) для каждого узла. Каждый узел поддерживает собственный порядковый номер, который увеличивается перед отправкой любого нового RREQ или RREP. Порядковые номера позволяют:

  • определять свежесть маршрутной информации;
  • предотвращать образование петель маршрутизации;
  • выбирать наиболее актуальный маршрут при наличии нескольких вариантов.

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

Характеристики и особенности

Преимущества

  • Адаптивность к изменениям топологии: AODV эффективно работает в сетях с подвижными узлами, быстро реагируя на разрывы связей.
  • Экономия ресурсов: В отличие от проактивных протоколов, AODV не поддерживает маршруты к неиспользуемым узлам, что снижает служебный трафик и энергопотребление.
  • Масштабируемость: Протокол может работать в сетях с сотнями узлов, хотя производительность снижается при очень большом количестве участников.
  • Отсутствие петель: Благодаря порядковым номерам AODV гарантирует отсутствие маршрутных петель.

Недостатки

  • Задержка при установлении маршрута: Первый пакет данных может быть отправлен только после завершения процедуры обнаружения маршрута, что увеличивает время задержки.
  • Широковещательный шторм: При частых запросах маршрутов широковещательные рассылки RREQ могут создавать значительную нагрузку на сеть.
  • Неоптимальные маршруты: AODV выбирает первый найденный маршрут, а не кратчайший, что может приводить к неоптимальному использованию ресурсов.
  • Уязвимость к атакам: Протокол не имеет встроенных механизмов безопасности, что делает его подверженным атакам типа «человек посередине» или подмене маршрутной информации.

Применение

AODV нашёл применение в различных областях, где требуется организация беспроводной связи без централизованной инфраструктуры:

  • Военные коммуникации: Тактические сети, где мобильные подразделения должны поддерживать связь на поле боя.
  • Спасательные операции: В зонах чрезвычайных ситуаций, где инфраструктура связи разрушена или отсутствует.
  • Сенсорные сети: Беспроводные сети датчиков, где узлы могут перемещаться или выходить из строя.
  • Интернет вещей (IoT): В некоторых реализациях, где устройства могут динамически менять своё расположение.
  • Автомобильные сети (VANET): Для организации связи между транспортными средствами.

Модификации и расширения

Существует несколько модификаций AODV, направленных на улучшение его характеристик в различных сценариях:

  • AODV-UU (Uppsala University) — реализация с улучшенной обработкой ошибок и поддержкой IPv6.
  • MAODV (Multicast AODV) — расширение для поддержки многоадресной рассылки.
  • SAODV (Secure AODV) — модификация с добавлением криптографических механизмов для защиты от атак.
  • AODV-DF (AODV with Direction Forwarding) — улучшение, учитывающее направление движения узлов для повышения стабильности маршрутов.

Критика

Основная критика AODV связана с его производительностью в крупных сетях и при высокой мобильности узлов. При увеличении числа узлов широковещательные рассылки RREQ могут приводить к значительному росту служебного трафика, что снижает пропускную способность сети. Кроме того, отсутствие встроенных механизмов безопасности делает протокол уязвимым для злонамеренных действий, таких как подмена маршрутной информации или атаки типа «отказ в обслуживании» (DoS).

Источники

  • RFC 3561 — Ad hoc On-Demand Distance Vector (AODV) Routing, 2003.
  • Perkins, C. E., Royer, E. M. — Ad-hoc On-Demand Distance Vector Routing, Proceedings of the 2nd IEEE Workshop on Mobile Computing Systems and Applications, 1999.
  • Perkins, C. E. — Ad Hoc Networking, Addison-Wesley, 2001.
  • Tanenbaum, A. S., Wetherall, D. J. — Computer Networks, 5th edition, Pearson, 2011.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →