# Routage

Le routage est le mécanisme par lequel des chemins sont sélectionnés dans un réseau pour acheminer les données d'un expéditeur jusqu'à un ou plusieurs destinataires. Le routage est une tâche exécutée dans de nombreux réseaux, tels que le réseau téléphonique, les réseaux de données électroniques comme Internet, et les réseaux de transports. Sa performance est importante dans les réseaux décentralisés, c'est-à-dire où l'information n'est pas distribuée par une seule source, mais échangée entre des agents indépendants. C’est grâce à ça que par exemple les mails sont envoyés aux bons destinataires.

## Historique

Les réseaux informatiques ont mis beaucoup de temps à déployer le routage dans toute sa dimension en raison des monopoles dans les télécommunications.
Dans les années 1970 aux États-Unis, lors de la numérisation du réseau d'AT&T (voir Réseau téléphonique commuté), IBM et DEC créent les architectures SNA et DECnet, encore très centralisées et peu ouvertes.
En France, le réseau Cyclades, poussé par la CII et sa Distributed System Architecture, est plus ouvert et permet de partager les ressources informatiques des centres universitaires et de grandes entreprises en forte croissance comme EDF ou le Commissariat à l'énergie atomique, mais freiné par les prétentions du Réseau Transpac, imposé par les PTT et orienté vers la commutation de circuits plutôt que le routage. La Distributed System Architecture a cependant été reconnue par la création du Modèle OSI, encourageant l'étape suivante, avec les protocoles TCP/IP.

## Types de cardinalité de la communication

* Types de routage
* Anycast
* Broadcast
* Multicast
* Unicast
* Géocast
En fonction du nombre de destinataires et de la manière de délivrer le message, on distingue :
* unicast, qui consiste à acheminer les données vers une seule destination déterminée,
* broadcast qui consiste à diffuser les données à toutes les machines,
* multicast qui consiste à délivrer le message à l'ensemble des machines manifestant un intérêt pour un groupe,
* anycast qui consiste à délivrer les données à n'importe quel membre d'un groupe, mais généralement le plus proche, au sein du réseau.

## Application informatique du routage
### Concepts

Pour effectuer le routage, on considère deux types de machines ou composants du réseau :
* les routeurs, qui servent d'intermédiaire dans la transmission d'un message,
* les hôtes qui émettent ou reçoivent les messages.
Lorsque le routeur se trouve entre deux réseaux dépendant d'autorités différentes, comme entre le réseau local d'une entreprise et l'Internet, on utilise alors une passerelle ; cet élément peut être considéré comme plus évolué qu'un simple routeur en raison de la conversion entre protocoles effectuée.
Le routage est un processus décentralisé, c'est-à-dire que chaque routeur possède des informations sur son voisinage. Chaque routeur maintient une liste des réseaux connus, chacun de ces réseaux étant associé à un ou plusieurs routeurs voisins à qui le message peut être passé. Cette liste s'appelle la table de routage, et contient trois types de routes :
* les routes correspondant à des réseaux directement connectés : pour ces réseaux, le routeur peut acheminer le paquet directement à la destination finale en faisant appel au protocole de niveau 2 (Ethernet par exemple).
* les routes statiques, configurées en dur sur le routeur par l'administrateur du réseau,
* les routes dynamiques, apprises d'un protocole de routage dynamique dont le rôle est de diffuser les informations concernant les réseaux disponibles.
Une table de routage peut être réduite à sa plus simple expression en ne comportant que la liste des réseaux directement connectés ainsi qu'une route par défaut, c'est-à-dire que tous les paquets qui ne correspondent pas à un réseau connu dans la table de routage seront dirigés vers un routeur déterminé (le routeur par défaut). La route par défaut peut être statique ou bien apprise dynamiquement.
À l'inverse, un routeur qui ne dispose pas de route par défaut doit connaître toutes les destinations possibles. C'est le cas des routeurs participant à la dorsale d'Internet, on dit alors qu'ils disposent d'une table de routage complète (ce qui représentait plus de 360 000 réseaux individuels en 2011) ou qu'ils appartiennent à la default-free zone d'Internet.
Pour permettre à ce que les routeurs aient une idée de la topologie du réseau, et puissent ainsi employer des algorithmes de routage efficaces, il faut que les routeurs diffusent leurs informations. Cette diffusion s'effectue par le biais des protocoles de routage, spécifiant la façon dont les informations sont échangées entre les routeurs.

### Protocoles de routage dynamiques

Les protocoles de routages externe (EGP), tels que Border Gateway Protocol (BGP), échangent des informations de routage entre systèmes autonomes. Les protocoles de routage interne (IGP), échangent des informations de routage à l'intérieur d'un système autonome, par une des façons suivantes :
* dits à états de lien, ils transmettent la totalité des informations de routage à tous les routeurs participants et établissent des tables de voisins directs, c'est le cas d'OSPF ou d'IS-IS,
* dits à vecteur de distance, qui ne diffusent que leurs meilleures routes sur leurs interfaces, comme RIP ou IGRP
* ou encore un hybride des deux premiers, comme EIGRP
Exemples de protocoles de routage interne :
* Routing Information Protocol (RIP)
* Interior Gateway Routing Protocol (IGRP)
* Open Shortest Path First (OSPF)
* Integrated Intermediate System to Intermediate System (Integrated IS-IS)
* Enhanced Interior Gateway Routing Protocol (EIGRP)

### Implémentation

Dans le modèle OSI, le routage s'effectue en examinant les informations situées dans la couche de réseau tels que l'IP (il s'agit de la couche Internet dans le modèle TCP/IP).

## Aspects théoriques

On parle de routage inconscient (anglais oblivious routing) lorsque les chemins sont choisis à l'avance pour toute paire de source et destination et tout message doit emprunter l'un de ces chemins. Autrement dit, le trajet d'un message ne dépend que de la source et de la destination (et de l'heuristique effectuant le choix entre plusieurs chemins si le cas se présente). Le routage est adaptif si le chemin emprunté par un message dépend des autres communications survenant dans le réseau.