routeur Cisco avec optimisation CEF

La fonction principale d’un routeur consiste à recevoir des paquets IP pour les orienter vers un autre routeur: il doit participer à acheminer le paquet vers sa destination finale. Mais avant de pouvoir aiguiller le paquet, le routeur doit disposer d’une table de routage correctement renseignée, notamment en s’appuyant sur les échanges de routage entre routeurs.

On voit bien que le routeur doit donc savoir gérer deux environnements distincts: les échanges de routage et le trafic qui transite par lui. Nous allons voir, dans cet article, que l’architecture interne d’un routeur moderne, performant et haut de gamme sépare effectivement ces deux aspects, on parle alors des plans de contrôle et de données (ou de forwarding).

L’idée de cet article est né en analysant finement les attentes de Cisco vis-à-vis des candidats à la certification Cisco CCNA. Le programme détaillé (voir extrait ci-dessous) impose au candidat une connaissance des concepts liés au fonctionnement interne du routeur – avec en point d’orgue, la partie 4.1.c intitulée « Process Switching/Fast Switching/CEF« .  

Extrait du programme ICND1 (certification CCENT)

Extrait du programme ICND1 (certification CCENT)

Mais, commençons progressivement, c’est à dire par le traitement des paquets IP par le routeur.

 

Concept de Routage: le Traitement du paquet IP

Après réception d’une trame, le routeur identifie l’adresse IP destination du paquet pour savoir si:

  • cette adresse IP est locale au routeur (c’est à dire que cette adresse IP a été attribuée à une interface du routeur). Dans ce cas, le paquet est traité localement par les processus locaux.
  • cette adresse IP n’est pas locale au routeur. Dans ce cas, il faut procéder au routage du paquet:
    • recherche de l’entrée correspondante à l’adresse destination dans la table de routage. Ainsi, grâce à la table de routage, le routeur peut identifier le prochain saut ou l’interface de sortie, suivant les cas;
    • encapsulation du paquet dans une trame adaptée. Il faut effectivement placer le paquet dans une trame avec les entêtes adéquates, notamment l’adresse destination associée à la couche 2 (Ethernet, par exemple). Dans le cas d’une encapsulation Ethernet, l’adresse MAC destination est identifiée à partir de l’adresse IP du prochain saut (que l’on a trouvée grâce à la recherche précédente dans la table de routage) en recherchant dans une autre table: la table ARP.

Cette approche du routage par un processus logiciel dédié est appelé « Process Switching« .

Il apparait donc que l’optimisation des performances d’un routeur est liée à l’optimisation des opérations de recherche dans les différentes tables (routage et ARP). Ceci se vérifie d’autant plus que les informations dans la table de routage nécessite une ou plusieurs recherches récursives comme dans l’exemple ci-dessous:

recursive

Le routage des paquets destinés à 172.16.1.1 se fait via l’interface Ethernet 0/1. On voit bien ici qu’il faut 3 recherches consécutives pour trouver le bon résultat !

 

Pourquoi parle-t-on d’optimisation ? Tout simplement parce qu’entre le premier routeur (dans les années 70) et ceux d’aujourd’hui, les débits et les besoins ont fortement augmenté. Les traitements pourtant satisfaisants hier sont trop longs aujourd’hui. Il faut que les routeurs optimisent les traitements pour ne pas ralentir le trafic!

 

L’optimisation des fonctions de routage

Cisco a inventé la mise en cache des informations de routage: le route caching. L’idée est la suivante: je viens de chercher une information dans la table de routage, plutôt que de faire la même chose pour tous les paquets qui vont suivre, pourquoi ne pas garder l’information dans une zone mémoire, un cache en somme. Le concept est né: on parle alors de « Fast Switching« .  

Mais, Cisco ne s’est pas arrêté là. Effectivement, l’utilisation d’un cache soulève de nouveaux problèmes lorsque les informations de routage viennent à changer souvent et rapidement. Il faut donc souvent rendre invalides les informations présentes dans le cache et donc utiliser la procédure habituelle (process switching). Ainsi, l’amélioration apportée par le Fast Switching dépend de la stabilité du réseau… 

Comment faire pour optimiser encore ce processus ? En passant d’un mode où les informations sont mises en cache « à la demande » à un mode où les informations sont mises en cache dès que les informations sont dans la table de routage !  Effectivement, pourquoi attendre qu’un paquet se présente pour 1) regarder la table de routage 2) router le paquet 3) garder l’information en cache. Autant directement créé un cache à partir de la table de routage ! Vous avez là une présentation synthétique de la technologie Cisco Express Forwarding (CEF).

Notez que la présentation de la technologie de fast-switching est désormais obsolète et présentée ici pour des raisons historiques (d’abord) et pédagogiques (pour les candidats à la certification CCNA).

 

Composants du Cisco Express Forwarding

Pour optimiser les performances, nous avons vu que l’optimisation repose sur la mise en cache des informations importantes:

  • la table de routage,
  • la table ARP.

Ceci explique pourquoi la technologie CEF repose sur deux tables !

L'architecture CEF / FIB présentée par Cisco

L’architecture CEF / FIB présentée par Cisco

 

 

Forwarding Information Base (FIB)

La table de routage s’appelle désormais la RIB (Routing Information Base) et les informations mises en cache sont accessibles dans ce que l’on appelle la FIB (Forwarding Information Base). 

Cette FIB peut, suivant les plateformes, être programmées dans un circuit électronique dédié pour assurer la fonction de routage en hardware ! Les performances sont fortement améliorées dans cette configuration.

 

Adjacency Table (AT)

De la même façon, les informations dans la table ARP sont placées dans une table exploitée par la technologie CEF: la Table des Adjacences (AT – Adjacency Table).

 

Avantages concrets de la technologie CEF

Tout d’abord, l’absence de traitement par un processus logiciel permet de traiter le paquet dès sa réception, c’est à dire dès qu’une interruption processeur est envoyée sans attendre que le processus de routage IP ne soit planifié.

Les informations sont rendues plus facilement accessibles (pas besoin de recherches récursives dans la table de routage comme c’était le cas dans l’exemple précédent).

recursive2

La commande « show ip cef » montre directement le contenu de la FIB: pas besoin de recherche récursive, elle a déjà été faite !

 

L’optimisation est telle que cette technologie est activée par défaut dans les routeurs Cisco. De nombreuses fonctionnalités peuvent être implémentées avec la technologie CEF et bénéficient donc d’un traitement rapide et optimisé. C’est le cas de la qualité de service, du filtrage (ACL, par exemple), de la translation d’adresses, etc. 

Du coup, seuls les paquets qui ne peuvent pas être traités par la technologie CEF sont traités en mode « process switching« . C’est le cas, par exemple, des paquets destinés au routeurs lui-même (SSH, SNMP, ICMP, etc.).

 

Du CEF au MPLS…

Sur la page Wikipedia relative à la technologie MPLS (cf. Wikipedia (MPLS)), il est indiqué une raison historique liée à sa naissance: « The major goal of MPLS development was the increase of routing speed.  » En français dans le texte, l’objectif principal du développement du MPLS était d’augmenter la vitesse de routage…  

La phrase suivante est également intéressante: « This goal is no longer relevant because of the usage of newer switching methods, such as ASICTCAM and CAM-based switching. » (Traduire par: « Cet objectif n’est plus pertinent à cause de l’utilisation des nouvelles méthodes de commutation telles que la commutation basée sur les technologies CAM, TCAM ou ASIC).

A la lecture de cet article, on comprendra (ou on devrait comprendre) que la technologie Cisco CEF est une de ces « nouvelles méthodes » de commutation (ou de routage). Avec CEF, il est effectivement possible de commuter rapidement un paquet IP sur la base de l’adresse IP destination: pas besoin d’étiquette supplémentaire (le fameux Label, le L de MPLS) pour gagner du temps. Ceci dit, cela explique pourquoi, en environnement Cisco, l’activation de la technologie CEF est un pré-requis à la mise en oeuvre des technologies MPLS…

 

Cet article traite d’un sujet délicat, lié à l’architecture et l’organisation interne des routeurs Cisco. Nous avons présenté les différents modes de routage existants: le CEF (le plus efficace, activé par défaut), le fast switching (obsolète désormais) et le process switching (pour ce qui ne peut pas être traité par la technologie CEF).

Laissez moi vos réflexions ou commentaires sur cet article dans la zone ci-dessous prévue à cet effet !