Tymo – это реализация протокола Dymo в TinyOS[3], который является протоколом
маршрутизации для мобильных устройств в одноранговых сетях. Сперва протокол разрабатывался для поиска
маршрутов поверх IP уровня.
Поскольку, протокол Dymo, является реактивных протоколом, то он явно не хранит
топологию сети. В случае необходимости отправки данных узел устанавливает маршрут до места назначения. За счет
малого обмена информацией о маршрутизации, сокращается сетевой трафик, что позволяет экономить полосу
пропускания. За счет малых объемов хранимой информации о маршрутизации, Dymo легко встраивается в ограниченную
память мотов.
Когда узлу необходимо получить маршрут, он распространяет Route Request (RREQ) –
пакет запорашивающий маршрут между отправителем и получателем. Этот пакет распространяется по всей сети или в
пределах некоторого числа соседних узлов. Когда пакет достигает цели (или узла имеющего новый маршрут к цели),
узел отправляет Route Replay(RREP). Этот ответ очень похож на Route Request , отличие состоит лишь в том, что
пакет имеет одноадресный маршрут и не требует ответа.
Когда узлы получают RREQ или RREP, они сохраняют в кеше информации об отправителе,
таким образом они знают путь к источнику полученного пакета, который может быть использован позже (если путь
не устаревший), без отправления RREQ. Узлы имеют возможность накапливать путь сопровождаемый пакетом в пакете
непосредственно. Таким образом когда узлы отправляют RREQ или RREP в пакете ответа могут получить информацию
больше чем путь между двумя узлами .
Когда маршруты не используются в течении длительного времени, они удаляются. Если
узел запрашиваем отправку пакета через удаленный маршрут, то генерируется Route Error (RERR) сообщение, чтобы
предупредить узел отправитель (и другие узлы), что запрашиваемый маршрут более не доступен. В качестве еще
одного механизма обслуживания маршрута, Dymo использует порядковые номера и счетчики переходов для определения
полноценности и качества маршрута.