Основная задача сетей ─ транспортировка информации от источника к получателю по одному из нескольких маршрутов. Проблему выбора наилучшего пути решают алгоритмы маршрутизации, которые являются основой любого протокола маршрутизации. 
В настоящее время беспроводные сети передачи данных продолжают активно развиваться, в том числе все большее распространение получает такой их класс, как сети Ad hoc. Основная отличительная черта сетей данного типа - отсутствие явно выраженной структуры связей между элементами сети. В данных сетях абонентские узлы являются полностью мобильными и могут соединяться между собой динамически произвольным образом. Пример структуры Ad hoc-сети изображен на рис. 1
 
Динамичность структуры подобных сетей, а так же их значительный рост с появлением новых недорогих технологий определяет необходимость разработки и исследования новых подходов к решению задачи управления передачей информации, позволяющих:
 ─ сократить время формирования маршрутов;
 ─ оптимизировать использование полосы пропускания каналов связи с учетом возможности организации множества маршрутов между абонентами.
 ─ сократить объем передаваемой служебной информации;
Поскольку в сети ad hoc нет точек доступа, то каждый из узлов является сети маршрутизатором. Поэтому маршрутом пересылки пакета по такой сети можно назвать последовательность маршрутизаторов, через которые этот пакет будет перенаправлен в процессе следования к своему адресату.
Маршрутизация пакетов включает в себя две основные задачи: определение оптимального маршрута пересылки пакета по составной сети и собственно пересылка пакета по сети.
Для облегчения процесса определения маршрута, алгоритмы маршрутизации инициализируют и поддерживают таблицы маршрутизации, в которых содержится маршрутная информация.  Современные протоколы маршрутизации предусматривают автоматическое формирование таблиц маршрутизации и поддержание их виртуального состояния на основе взаимодействия маршрутизаторов друг с другом. Полученная информация используется для построения и обновления таблицы маршрутизации.
   Каждая запись в таблице маршрутизации состоит из следующих информационных полей:
Рисунок 2. Структура таблицы маршрутизации 
1)  Идентификатор сети или адрес в межсетевой среде для маршрута к компьютеру. На IP-маршрутизаторах также имеется дополнительное поле маски подсети, которое определяет идентификатор IP-сети по IP-адресу получателя. 
 2)  Адрес пересылки - адрес, по которому пакет должен быть переслан. Адрес пересылки может быть аппаратным адресом или адресом в межсетевой среде. Для сетей, к которым компьютер или маршрутизатор непосредственно подсоединен, поле адреса пересылки может быть адресом интерфейса, подсоединенного к сети.  
3)  Интерфейс - сетевой интерфейс, который используется, когда пакеты пересылаются в сеть для данного идентификатора сети. Это порядковый номер сетевого адаптера или другой тип логического идентификатора. 
4) Метрика - мера предпочтения маршрута. Обычно, самая маленькая метрика соответствует наиболее предпочтительному маршруту. Если существует несколько маршрутов к заданной сети получателя, используется маршрут с самой низкой метрикой. Некоторые алгоритмы маршрутизации сохраняют только один маршрут для любого идентификатора сети в таблице маршрутизации, даже когда существует несколько маршрутов. В этом случае метрика используется маршрутизатором, чтобы определить то, какой маршрут необходимо сохранить в таблице маршрутизации
  Таким образом, таблица маршрутизации включает в себя набор оптимальных путей, используемых маршрутизатором при передаче
пакетов в данный момент времени. Определение оптимальности путей при формировании и обновлении таблицы маршрутизации может производиться в соответствии с такими критериями или их комбинациями, как:
  1) Длина маршрута, измеренная количеством маршрутизаторов, через которое  необходимо пройти до пункта назначения;
  2) Пропускная способность канала связи;
  3) Прогнозируемое суммарное время пересылки;
  4) Стоимость канала связи.
Рисунок 3. Поиск маршрута в сети Ad hoc.
  Рассмотрим алгоритм поиска маршрутов между узлами. Пусть необходимо найти путь между маршрутизаторами №1 и №10. Узел №1 генерирует специальный запрос маршрута Route Request и распространяет его по сети широковещательным способом. В больших сетях алгоритмом генерируется много широковещательных пакетов, поэтому для избежания излишней загрузки и для обнаружения адресата отправитель рассылает пакет запроса маршрута с шагом, равным 1. То есть запрос формируется для роутеров №2, №5 и №7 (в примере). Если ответ не приходит и путь по-прежнему неопределен, то посылается еще один запрос, но с шагом, равным 2, и т.д. Таким образом, поиск, начавшийся в какой-то локальной области, все больше расширяет свой охват.
Когда после конкретного числа шагов запроса маршрута, находится необходимый маршрут, то формируется ответ о наличии пути Route Reply. Последний отправляется в обратном пути в источнику запроса. При этом узлы, стоящие на указанном пути (№5 и №6) также получают информацию о маршруте к роутеру №10. После этого, узел №1  начинает передачу данных узлу №10.
Алгоритмы маршрутизации могут быть классифицированы по типам:
-Статические или динамические.
Статические алгоритмы представляют свод правил работы со статическими таблицами маршрутизации, которые настраиваются администраторами сети. Хорошо работают в случае предсказуемого трафика в сетях стабильной конфигурации. Динамические алгоритмы маршрутизации подстраиваются к изменяющимся обстоятельствам сети в масштабе реального времени. Они выполняют это путем анализа поступающих сообщений об обновлении маршрутизации. Если в сообщении указывается, что имело место изменение сети, программы маршрутизации пересчитывают маршруты и рассылают новые сообщения о корректировке маршрутизации. Такие сообщения пронизывают сеть, стимулируя маршрутизаторы заново прогонять свои алгоритмы и соответствующим образом изменять таблицы маршрутизации. Динамические алгоритмы маршрутизации могут дополнять, где это уместно, статические маршруты.
-Одномаршрутные или многомаршрутные алгоритмы.
Некоторые сложные протоколы маршрутизации обеспечивают множество маршрутов к одному и тому же пункту назначения. Такие многомаршрутные алгоритмы делают возможной мультиплексную передачу трафика по многочисленным линиям, одномаршрутные алгоритмы не могут делать этого. Многомаршрутные алгоритмы могут обеспечить значительно большую пропускную способность и надежность.
-Одноуровневые или иерархические алгоритмы.
Отличаются по принципу взаимодействия друг с другом. В одноуровневой системе маршрутизации все рутеры равны по отношению друг к другу. В иерархической системе маршрутизации пакеты данных перемещаются от роутеров нижнего уровня к базовым, которые осуществляют основную маршрутизацию. Как только пакеты достигают общей области пункта назначения, ониперемежаются вниз по иерархии до хоста назначения.
-Алгоритмы с маршрутизацией от источника.
В системах маршрутизации от источника роутеры действуют просто как устройства хранения и пересылки пакета, без всякий раздумий отсылая его к следующей остановке, они предполагают, что отправитель рассчитывает и определяет весь маршрут сам. Другие алгоритмы предполагают, что хост отправителя ничего не знает о маршрутах. При использовании такого рода алгоритмов роутеры определяют маршрут через сеть, базируясь на своих собственных расчетах.
-Внутридоменные или междоменные алгоритмы.
Некоторые алгоритмы маршрутизации действуют только в пределах доменов; другие - как в пределах доменов, так и между ними.
-Алгоритмы состояния канала и дистанционно-векторные.
Алгоритмы состояния канала направляют потоки маршрутной информации во все узлы сети. Каждый роутер отсылает только ту часть известной ему информации, которая описывает состояние его собственных каналов, но всем узлам маршрутизации. Дистанционно-векторные требуют от каждого роутера пересылки всей или части его таблицы но только соседям.
Рассмотрим передачу сообщения между 2 узлами на примере алгоритма маршрутизации AODV (Специализированный протокол векторарасстояния по запросу)
Узел 1 хочет послать пакет Узлу 7 Предположим, что Узел 6 знает текущий маршрут к Узлу 7 :
 Узел 1 посылает пакет запроса маршрута (RREQ) соседним Узлам 2 и 4:
 Узлы 2 и 4 проверяют, что это новый запросRREQ и пересылают его своим соседям:
RREQ приходит на Узел 6, которому известен маршрут к Узлу 7
 Узлы 3 и 5 будут ретранслировать пакет RREQ, однако приемники посчитают его дубликатом
Если узел принимает пакет RREQ и у него есть текущий маршрут к месту назначения, то он отошлет однонаправленный пакет с ответом маршрута (RREP) тому соседу, от которого он принял пакет RREQ. Узел 6 знает маршрут к Узлу 7 и посылает пакет RREP к Узлу 4:
 
 Узел 4 проверяет, что это новый ответ о маршруте, либо ответ, содержащий наименьшее число лучей, и, если это так, пересылает пакет RREP к Узлу 1:
Узел 1 теперь знает маршрут из трех лучей к Узлу 7 и может сразу использовать его для посылки пакета данных
Предположим, что Узел 7 переместился и связь 6-7 разорвалась
● Узел 6 посылает пакет RERR с указанием разрушенного маршрута
● RERR распространяется обратно к Узлу 1
● Узел 1 может начать поиск нового маршрута
Список использованных источников:
 1. http://pep687253.narod.ru/translate/lecture_08_manet.pdf
2. http://ru.wikipedia.org/wiki/Алгоритмы_маршрутизации
3. http://masters.donntu.edu.ua/2010/fknt/kondratyuk/diss/index.htm