Les fonctions de base des routeurs
Les routeurs sont souvent considérés comme les « postiers » du monde numérique, car leur rôle principal est d’acheminer le trafic entre différentes parties d’un réseau ou entre plusieurs réseaux. À la base de cet acheminement se trouve la couche réseau du modèle OSI, qui définit comment les paquets sont routés à travers des réseaux interconnectés.
Un routeur est équipé de plusieurs interfaces, chacune reliée à un segment de réseau différent. Quand un paquet arrive sur une de ces interfaces, le routeur doit choisir sur quelle autre interface l’envoyer pour qu’il parvienne à sa destination. Il se sert pour cela d’une table de routage, qui répertorie les chemins les plus efficaces vers différentes destinations. Mais avant de détailler la façon dont le routeur prend ses décisions de routage, il est utile de voir comment il gère les paquets en interne. Cela nous amène au concept de la matrice de commutation. Cette dernière est l’architecture interne du routeur qui gère la copie des paquets entre leurs entrées et ses sorties. Ce système assure que les paquets reçus d’une interface sont acheminés correctement vers l’interface de sortie appropriée, en suivant les instructions de la table de routage.
La Switching Fabric
La switching fabric est le cœur du routeur. Elle représente l’ensemble des voies physiques et logiques à travers lesquelles les paquets sont acheminés à l’intérieur du routeur. Une fois qu’un paquet arrive sur une interface du routeur, il est placé dans une file d’attente. Chaque interface ou port d’entrée du routeur a sa propre file d’attente pour stocker les paquets entrants avant qu’ils ne soient traités.
Une fois dans la file d’attente, le paquet attend d’être transféré vers la mémoire tampon centrale du routeur, où il sera ensuite analysé. Le routeur détermine alors par quelle interface ou port de sortie le paquet doit être acheminé. Si ce port de sortie est occupé, le paquet est placé dans une file d’attente spécifique à ce port, en attendant de pouvoir être transféré.
Il est à noter que la capacité de la switching fabric à acheminer les paquets à travers le routeur dépend fortement de sa conception. Une switching fabric basée sur des circuits logiques, c’est-à-dire construite matériellement, est bien plus performante qu’une approche reposant sur une recherche standard via un CPU et de la RAM. Grâce à ces composants matériels spécifiques, la switching fabric peut gérer plus de paquets simultanément, réduisant ainsi les latences et augmentant le débit global du routeur.
La file d’attente
Les files d’attente dans un routeur sont très utiles pour organiser le passage des paquets qui entrent et sortent à différentes vitesses. Elles agissent comme des zones de stockage temporaire, assurant que les paquets sont gérés de façon séquentielle et avec efficacité. Quand un paquet parvient à une interface du routeur, il n’est pas toujours possible de le traiter ou de le diriger vers le bon port de sortie immédiatement, surtout si d’autres paquets sont arrivés avant. Dans ces situations, le routeur met ce paquet dans une file spécifique à cette interface d’entrée.
Chaque interface d’entrée du routeur dispose de sa propre file d’attente. Cela permet de gérer indépendamment les paquets arrivant à différentes vitesses sur différentes interfaces. Si une interface reçoit une grande quantité de trafic, sa file d’attente peut commencer à se remplir rapidement. Il est important de noter que ces files d’attente ont une capacité limitée. Si un trop grand nombre de paquets arrive en peu de temps, la file d’attente peut atteindre sa capacité maximale. Dans un tel cas, tout paquet supplémentaire arrivant à cette interface serait alors rejeté ou abandonné, un phénomène connu sous le nom de « perte de paquet ».
De plus, il n’y a pas seulement une file d’attente à l’interface d’entrée, mais également à l’interface de sortie. Une fois qu’un paquet est traité par le routeur et qu’il est prêt à être expédié vers son port de sortie, il peut y avoir une autre file d’attente à ce niveau. Si le port de sortie est actuellement occupé à envoyer un autre paquet, le paquet en question est mis en attente dans la file d’attente spécifique à ce port de sortie, jusqu’à ce que le port soit libre.
La façon dont les files d’attente sont gérées a un impact majeur sur les performances d’un routeur. Les méthodes de gestion de ces files, comme la qualité de service (QoS), impactent la façon dont les paquets sont classés par ordre de priorité et gérés, ce qui permet une répartition du trafic plus fluide à travers le routeur.
La qualité de service (QoS)
La qualité de service, ou QoS, est un dispositif qui aide à mettre en avant certains types de trafic sur un réseau, surtout quand il s’agit de services qui ne tolèrent pas bien les retards, comme les appels via internet (VoIP), les vidéoconférences ou les jeux en ligne. Ces services ont besoin d’être traités rapidement. Le moindre petit retard ou interruption dans l’envoi des paquets peut tout de suite affecter l’expérience des utilisateurs. Pour la VoIP, par exemple, cela pourrait se manifester par des interruptions dans la conversation ou des mots qui manquent, et pour les jeux en ligne, par des actions qui se produisent en décalé ou un délai dans la réaction.
La QoS intervient pour remédier à ces problèmes. En utilisant la QoS, les administrateurs réseau peuvent définir des politiques qui déterminent la priorité des paquets en fonction de leur type. Ainsi, les paquets VoIP ou ceux liés au jeu en ligne pourraient être traités en priorité par rapport à d’autres types de trafic moins sensibles à la latence. Cela garantit que les services critiques bénéficient de la bande passante nécessaire pour fonctionner sans interruption, même lorsque le réseau est encombré.
L’application de la QoS est une affaire complexe. Tandis que la priorisation du trafic est vitale pour certains services, elle ne l’est pas forcément pour d’autres. Il y a aussi des questions éthiques sur le fait de favoriser certains types de trafic aux dépens d’autres. La décision d’activer la QoS et la façon de la configurer dépendent finalement de l’administrateur ou de l’utilisateur du réseau. Pour certains, la QoS est absolument nécessaire pour maintenir la qualité de leurs services sensibles, alors que d’autres préfèrent une stratégie plus nuancée, visant à répondre au mieux aux besoins de tous les utilisateurs du réseau.
La capacité de Switching
La capacité de commutation d’un routeur, ou switching capability, est intrinsèquement liée à sa capacité à déterminer rapidement la meilleure ligne dans la table de routage pour acheminer un paquet vers sa destination. Ce processus complexe requiert un algorithme sophistiqué pour assurer que les décisions de routage sont prises de manière rapide et précise.
Lorsqu’un paquet arrive sur une interface du routeur, le routeur extrait l’adresse de destination du paquet et commence le processus de recherche dans sa table de routage. La table de routage est une base de données qui stocke les différentes routes disponibles pour acheminer les paquets, et chaque entrée dans la table est associée à une interface de sortie spécifique. L’objectif est de trouver la correspondance la plus spécifique possible entre l’adresse de destination du paquet et les entrées dans la table de routage. Autrement dit, il s’agit de trouver l’entrée qui correspond le mieux à l’adresse de destination, tout en étant la plus spécifique possible. C’est ici que l’algorithme de Longest Prefix Match (LPM) entre en jeu.
Le principe est que, pour une adresse de destination donnée, il peut y avoir plusieurs entrées possibles dans la table de routage qui correspondent à des préfixes de cette adresse. L’objectif est de trouver l’entrée qui a le préfixe le plus spécifique, c’est-à-dire le plus long, qui correspond à l’adresse de destination. Il est possible d’exécuter cet algorithme de façon logicielle à l’aide de l’arbre RADIX, ou de façon hardware à l’aide de circuits imprimés spécifiques appelés TCAM.
L’arbre RADIX
Pour réaliser ce Longest Prefix Match de manière efficace, les routeurs modernes utilisent souvent une structure de données appelée RADIX Tree. Un RADIX Tree est une sorte d’arbre de recherche binaire, mais avec quelques optimisations spécifiques pour rendre la recherche d’adresses IP plus rapide. L’arbre stocke les différentes routes possibles sous forme de chemin dans un arbre, où chaque nœud représente un bit de l’adresse IP. Les feuilles de l’arbre stockent les informations sur l’interface de sortie associée à la route correspondante.
Lorsque le routeur reçoit un paquet, il extrait l’adresse IP de destination et commence à parcourir l’arbre RADIX depuis la racine. À chaque nœud, il vérifie le bit correspondant de l’adresse IP et descend dans l’arbre en conséquence : à gauche si le bit est 0, à droite si le bit est 1.
Lorsque le routeur atteint une feuille de l’arbre, il a trouvé une route qui correspond à l’adresse de destination. Cependant, il est possible qu’il existe une route plus spécifique (c’est-à-dire avec un préfixe plus long) plus loin dans l’arbre. Ainsi, le routeur continue à parcourir l’arbre jusqu’à ce qu’il ne puisse plus avancer ou jusqu’à ce qu’il atteigne un niveau de l’arbre qui correspond à la longueur du préfixe de la route la plus spécifique. À ce stade, il utilise l’interface de sortie stockée dans la feuille pour acheminer le paquet.
Cette méthode permet de réaliser le Longest Prefix Match de manière très rapide, car elle réduit le nombre de comparaisons nécessaires pour trouver la route appropriée. De plus, le RADIX Tree est dynamique et peut être mis à jour à la volée lorsque de nouvelles routes sont ajoutées assurant ainsi que le routeur a toujours accès aux informations de routage les plus à jour.
Les TCAM
Cependant, pour les routeurs qui se trouvent aux cœurs d’Internet, où le trafic est massif et les exigences de vitesse sont immenses, cette technique basée sur le RADIX Tree, bien qu’efficace, reste trop lente. Pour ces routeurs, qui doivent gérer une capacité de commutation de plusieurs centaines de Gbps, le besoin est d’atteindre un niveau de performance encore supérieur. Pour répondre à cette demande, on se tourne vers une technologie matériellement optimisée : les TCAMs (Ternary Content Addressable Memory).
La TCAM est un type spécial de mémoire qui permet une recherche de données à très haute vitesse. Contrairement aux mémoires RAM classiques, où l’on accède aux données en spécifiant une adresse, la TCAM permet d’accéder aux données en fonction de leur contenu. En d’autres termes, on fournit à la TCAM un motif de recherche, et la TCAM renvoie l’adresse où se trouve ce motif. Les cartes TCAM consomment plus d’énergie, coûtent plus cher que les mémoires RAM traditionnelles et ne sont pas adaptées à toutes les applications.
Ce qui distingue vraiment la TCAM, c’est sa capacité à gérer des recherches ternaires, c’est-à-dire des recherches qui peuvent inclure des ‘0’, des ‘1’, et des ‘X’ (où ‘X’ représente une valeur sans importance). Cette capacité est particulièrement utile pour la recherche de préfixes dans les tables de routage, car elle permet de rechercher des correspondances avec des masques de sous-réseau de longueurs variables.
Dans le contexte du routage, la table de routage est stockée dans la TCAM. Chaque entrée de la table de routage est stockée sous forme de paire (préfixe de l’adresse IP, masque de sous-réseau), et associée à l’interface de sortie correspondante. Lorsqu’un paquet arrive, le routeur prend l’adresse IP de destination du paquet et l’envoie à la TCAM. La TCAM effectue ensuite une recherche parallèle à travers toutes ses entrées et renvoie l’adresse de la première entrée qui correspond au motif. Grâce à sa nature parallèle, la TCAM peut effectuer cette recherche en un seul cycle d’horloge, permettant ainsi des temps de recherche extrêmement rapides.
Bien sûr, l’intégration d’une TCAM dans un routeur ne s’arrête pas simplement à la recherche de correspondances. Une fois que plusieurs correspondances possibles ont été identifiées dans la TCAM, il faut déterminer laquelle de ces correspondances est la plus spécifique, c’est-à-dire celle qui a le plus long préfixe. C’est là qu’intervient l’encodeur de priorité.
L’encodeur de priorité est un composant électronique qui analyse les résultats renvoyés par la TCAM pour déterminer quelle entrée a la plus grande priorité, ou dans le contexte de la recherche de routes, quel préfixe est le plus long. Lorsqu’une recherche est effectuée dans la TCAM, elle peut renvoyer plusieurs correspondances. Chacune de ces correspondances est associée à une certaine priorité, basée sur la longueur du préfixe. L’encodeur de priorité examine les résultats et sélectionne la correspondance avec la plus grande priorité. Dans le cas de la table de routage, cela signifie sélectionner l’entrée avec le préfixe le plus long.
Une fois que l’encodeur de priorité a identifié la correspondance avec le préfixe le plus long, le travail n’est pas encore tout à fait terminé. Cette correspondance, ou entrée spécifique dans la TCAM, possède une adresse ou un index associé. Cette adresse est utilisée pour consulter une mémoire RAM spécifique, souvent appelée table d’association, qui stocke des informations détaillées sur chaque entrée, notamment l’interface réseau correspondante. En d’autres termes, la TCAM fournit un moyen rapide de trouver la correspondance du préfixe, l’encodeur de priorité détermine la correspondance la plus spécifique, puis la RAM associée est consultée pour déterminer l’interface de sortie exacte à utiliser pour acheminer le paquet.
Ce processus se déroule en une fraction de seconde, garantissant que les paquets sont acheminés avec une rapidité et une efficacité optimales à travers le routeur. Ce flux coordonné d’opérations, alliant hardware et software, est ce qui permet à nos réseaux modernes de fonctionner à des vitesses et avec des performances époustouflantes.
La sécurité
Comme les routeurs sont au cœur du réseau, ils sont souvent la cible d’attaques malveillantes. Il est donc important d’adopter des mesures solides pour protéger ces appareils et les données qu’ils traitent. La première étape pour sécuriser un routeur est de bien configurer ses listes de contrôle d’accès (ACL). Ces listes déterminent les règles qui identifient les types de trafic permis ou interdit sur le réseau. En filtrant le trafic selon l’adresse IP, le port, et d’autres critères, les ACL sont fondamentaux pour bloquer les accès non souhaités et les attaques.
Les routeurs d’aujourd’hui offrent également des options de sécurité avancées comme les systèmes de prévention d’intrusion (DPI) et les pare-feu, qui examinent et filtrent le trafic en direct pour stopper toute activité douteuse ou malicieuse. Le pare-feu est particulièrement critique pour une stratégie de sécurité efficace.
Par ailleurs, il ne faut pas négliger d’actualiser régulièrement le firmware du routeur. Les constructeurs de routeurs sortent souvent des mises à jour pour corriger des failles de sécurité et améliorer la robustesse de leurs produits. Négliger ces mises à jour peut exposer le réseau à des dangers évitables.