# Forwarding information base

Une table de commutation (FIB), également connue sous le nom de table de forwarding, est couramment utilisée en réseau dans la commutation, le routage et des fonctions similaires pour déterminer l'interface réseau de sortie appropriée vers laquelle un paquet ou une trame (provenant d'une interface d'entrée) doit être envoyé. C'est une table dynamique qui associe notamment des adresses (IP et/ou MAC) à des ports (physiques et/ou des sous-interfaces ou des VLANs).
La CAM (mémoire adressable par contenu) est une solution régulièrement utilisée pour implémenter efficacement la FIB, qui dans ce cas peut être appelée une table CAM (lorsqu'il s'agit du niveau 2 OSI) ou d'une TCAM (nécessaire pour implémenter le routage dans le cadre du niveau 3 OSI).
Il ne faut pas confondre les nombreuses tables des équipements réseaux: la RIB (table de routage), la FIB (table de commutation), la CAM (table de correspondance entre adresses MAC et interfaces), la table ARP (correspondance entre IP et MAC), etc.
Tout l'intérêt de la FIB est de constituer une table très rapide à consulter pour faire circuler les trames et paquets, par rapport à la RIB qui sert à la peupler (la RIB contient plus d'informations, permet de déterminer le meilleur chemin par rapport à plusieurs trajets disponibles, mais n'est de ce fait pas optimisée pour faire circuler les paquets car trop complexe).

## Applications au niveau de la couche liaison de données (Couche 2 modèle OSI)

Au niveau de la couche liaison de données, la FIB est notamment utilisée pour la commutation Ethernet selon les adresses MAC, et le Frame Relay.

### Switch (commutateur Ethernet)

Le rôle d'un commutateur Ethernet est de transmettre les trames Ethernet d'un port à un autre. La présence d'une FIB distingue le commutateur (switch) du concentrateur (hub).
* Dans le concentrateur, toutes les trames reçues sont renvoyées vers tous les autres ports, à l'aveugle.
* Dans le commutateur, les trames sont envoyées selon l'adresse MAC (adresse matérielle) de destination indiquée dans l'en-tête de la trame:
** vers le port où réside le périphérique réseau de destination (unicast / monodiffusion).
** vers tous les ports si la trame a pour destination une adresse de broadcast (diffusion), ou si l'adresse de destination unicast est inconnue (unknown unicast).
** vers plusieurs ports dans le cadre du multicast (multidiffusion), vers les périphériques réseaux abonnés au groupe multicast concerné.
Les commutateurs associent les adresses MAC aux ports en examinant l'adresse MAC source des trames reçues sur chaque port.
Dans ce contexte, la FIB d'un commutateur est une structure de mémoire utilisée par le commutateur Ethernet pour associer l'adresse MAC d'une station au port de commutateur auquel la station est connectée. Cela permet aux commutateurs de faciliter les communications à grande vitesse entre les stations connectées.

### Frame Relay (relais de Trames)

Le modèle général pour le Frame Relay est que les commutateurs ont des tables de commutation définies statiquement, par interface. Lorsqu'une trame est reçue sur une interface, son identificateur de connexion de liaison de données (DLCI) est recherché dans la table associée à cette interface, qui donne l'interface sortante et le nouveau DLCI à insérer dans le champ d'adresse de la trame.

### ATM (Asynchronous Transfer Mode)

Les commutateurs ATM ont des tables de commutation très similaires à celles utilisées dans le Frame Relay. Plutôt qu'un DLCI, les interfaces ont des tables de commutation qui spécifient l'interface sortante par un identificateur de chemin virtuel (VPI) et un identificateur de circuit virtuel (VCI). Ces tables peuvent être configurées de manière statique, ou elles peuvent être distribuées par le protocole PNNI (Private Network-to-Network Interface). Lorsque PNNI est utilisé, les commutateurs ATM aux extrémités du réseau associent l'un des identificateurs de bout en bout ATM standard (une adresse NSAP), au VPI / VCI du saut suivant.

## Applications au niveau du réseau (Couche 3 modèle OSI)

Dans ce cadre, les adresses de couche réseau, telles que les adresses IP, sont l'élément principal de la FIB.

### Routage IP

Dans le cadre du routage IP (ou IPv6, voire CLNS...), dans chaque routeur la FIB est créée à partir de la RIB (Routing Information Base) qui contient des informations de routage issus de configurations statiques et de protocoles de routages dynamiques. Elle associe des préfixes IP à la ou les interfaces de sortie (et l'adresse matérielle / MAC à placer sur la trame vers le nœud suivant, routeur ou station). Elle ne contient pas forcément l'adresse IP exacte de destination de chaque paquet ; c'est le préfixe le plus proche (cad le plus spécifique) qui est alors utilisé. C'est dans ce cadre que la notion de TCAM a évidemment un intérêt puisqu'elle permet de rechercher dans la FIB une entrée proche mais ne correspondant pas exactement à la destination.

### MPLS (Multiprotocol Label Switching)

MPLS présente de nombreuses similitudes, au niveau de la commutation, avec ATM, mais peut notamment s'appuyer sur le contenu de la RIB IP pour la création de sa table de commutation. Les routeurs MPLS de bordure associent suivant une LFIB (Label FIB) la destination (une adresse IP, par exemple l'adresse du routeur MPLS de sortie du réseau) à un label local à l'interface de sortie locale, dit label de transit.
À chaque saut MPLS, la LFIB de chaque routeur MPLS lui indique quel nouveau label de transit doit remplacer le label reçu et quelle interface sortante utiliser.
Un label MPLS supplémentaire, de bout en bout entre deux routeurs MPLS, dit de service, peut également être rajouté à l'entrée du réseau MPLS pour distinguer des plans de routages différents (VPN MPLS).

## Forwarding

La FIB est une table de routage optimisée pour une recherche rapide des adresses de destination et améliore les performances par rapport à l'utilisation directe de la base d'informations de routage (RIB). La RIB est optimisée pour une mise à jour efficace par des protocoles de routage et d'autres méthodes de plan de contrôle, et contient l'ensemble complet des routes apprises par le routeur. Les implémentations antérieures utilisaient une mise en cache d'un sous-ensemble des routes les plus fréquemment utilisées dans le transfert réel, et cela pouvait fonctionnait correctement dans des réseaux d'entreprises où il existe un sous-ensemble significatif le plus fréquemment utilisé. Les routeurs utilisés pour accéder à l'intégralité de l'Internet, cependant, ont rapidement eu des performances médiocres par ce système de cache, d'où l'apparition de FIBs implémentées différemment.

### Filtrage de sortie contre le déni de service

Une bonne pratique actuelle sur Internet (IETF BCP 38) contre l'usurpation d'adresse IP source (IP spoofing) est de filtrer le trafic sortant pour s'assurer que ses clients n'envoient pas de tels paquets. Une liste de contrôle d'accès IP peut être complexe à implémenter dans ce contexte si une grande précision est requise. Il est possible d'avoir recours à des fonctions uRPF (unicast reverse path forwarding), afin d'effectuer une consultation supplémentaire de la FIB pour s'assurer que la source du paquet est effectivement joignable par l'interface d'entrée. La FIB permet dans ce contexte une consultation rapide et une certaine automatisation de la vérification.

### Qualité de service (QoS)

Les services différenciés fournissent une méthode supplémentaire pour sélectionner les interfaces sortantes, sur la base d'un champ qui indique la priorité de transmission du paquet, ainsi que la préférence du paquet à détruire en présence de congestion. Les routeurs qui prennent en charge le service différencié doivent non seulement rechercher l'interface de sortie pour l'adresse de destination, mais également envoyer le paquet à l'interface qui correspond le mieux aux exigences des services différenciés. En d'autres termes, en plus de faire correspondre l'adresse de destination, la FIB doit correspondre aux points de code de services différenciés (RFC 2474).

### Contrôle d'accès et comptabilité

Des implémentations de routeur spécifiques peuvent, lorsqu'une adresse de destination ou un autre critère FIB est mis en correspondance, spécifier une autre action à effectuer avant le transfert (par exemple, la métrologie ou le chiffrement), ou appliquer une liste de contrôle d'accès pouvant entraîner la suppression du paquet.

## Attaques

Les tables CAM peuvent être la cible d'attaques réseau de couche 2 dans un réseau local pour mettre en place des attaques man-in-the-middle. Un attaquant contrôlant un appareil connecté à un commutateur Ethernet peut ainsi attaquer la table CAM du commutateur en saturant sa table CAM avec un grand nombre de paquets comportant de multiples adresses MAC sources (inondation MAC). Dans ce cas la plupart des commutateurs ne sont plus en mesure d'ajouter de manière fiable de nouvelles adresses MAC. En conséquence, le commutateur reviendra au transfert des trames Ethernet d'un port d'entrée vers tous les autres ports (unknown unicast). Cela peut permettre à l'attaquant de capturer le trafic de tous les appareils connectés au même commutateur et dégrade les performances du réseau.