Algorithme de routage temporairement ordonné
# Algorithme de routage temporairement ordonné

L'algorithme de routage temporairement ordonné (TORA) est un algorithme de routage pour les réseaux mobiles ad-hoc (MANET).

L'algorithme a été inventé par Vincent D. Park et M. Scott Corson.

TORA appartient à la classe d'algorithme de routage dite à inversion de liens.

## Objectif

L'objectif principal de TORA est d'éviter la propagation des messages de contrôle dans un environnement sans infrastructure et mobile. Pour ce faire, c'est un protocole de routage hybride : chaque nœud est proactif avec ses voisins directs, mais la création d'une route entre la source d'un message et sa destination est réactive.

## Avantages

* L'algorithme est en partie réactif : calcule des routes à la demande.
* Crée plusieurs routes entre la source et la destination.
* Performant dans les réseaux denses.

## Inconvénients

* L'algorithme est en partie proactif : il doit maintenir le routage en l'absence de demande.
* Il n'est pas très utilisé, car DSR et AODV sont plus performants.
* Impossible à faire passer à l'échelle (c'est-à-dire optimiser pour des réseaux plus grands).

## Principe

TORA construit un graphe orienté acyclique dont l'origine est la destination. À mesure que les routes ne fonctionnent plus, le graphe doit être recalculé. Si le réseau est divisé, il est nécessaire d'effacer des routes. TORA utilise pour ce faire 3 types de messages :

* QRY(query) message pour créer une route.
* UPD(update) message pour maintenir (et créer) les routes.
* CLR (clear) message pour supprimer une route.

La topologie du réseau ad-hoc changeant au cours du temps, certains nœuds peuvent se retrouver sans sortie, par exemple, la seule route de sortie ne fonctionnant plus. Dans ce cas, le routage de message est menacé puisque ce nœud devient bloquant. (Seul le nœud destinataire du message ne doit pas avoir de route sortante.)

Pour éviter de recalculer le graphe entier lorsque la topologie du réseau change, ce qui est une opération coûteuse, TORA utilise l'inversion de liens.

### Inversion de liens

Ce processus est invoqué lors d'un changement de la topologie du réseau, par exemple lorsqu'un nœud ou une route ne fonctionne plus.

**Inversion complète**

Dans le cas où un nœud, qui n'est pas la destination, ne possède plus de route sortante : toutes les routes de ce nœud sont inversées (devenant toutes sortantes par conséquent).

**Inversion partielle**

Lors de chaque itération, chaque nœud conserve une liste de l'ensemble de ses voisins pour pouvoir inverser une partie des routes entre les voisins à chaque itération. À la fin de l'itération chaque nœud inverse les routes vers ses voisins n'appartenant pas à cette liste (c'est-à-dire n'ayant pas changé à cette itération.).

