L’équipementier Cisco Systems propose depuis les années 80 un systèmes d’exploitation appelé IOS (IOS pour Internetwork Operating System :rien à voir avec le plus récent logiciel d’Apple, donc). Comme nous allons l’aborder dans cet article, Cisco a récemment introduit de nouveaux systèmes d’exploitation: l’IOS-XE, le NX-OS (sur les plateformes Nexus) ou encore l’IOS-XR (sur les routeurs de gamme opérateur).
Ces nouveaux systèmes d’exploitation savent optimiser les ressources et ils augmentent la fiabilité des routeurs et commutateurs qui les embarquent …
Dans le monde informatique au sens large, le système d’exploitation gère les ressources matérielles (mémoire, processeur, ou encore les disques durs). Il offre également une interface plus ou moins efficace pour permettre une interaction entre l’humain et la machine: cela peut aller de l’interpréteur de commande (le shell) jusqu’aux interfaces évoluées que l’on retrouve sur les tablettes grands publics. Les équipements réseaux ne dérogent pas à la règle: un système d’exploitation (parfois appelé système d’exploitation réseau ou NOS – Network Operating System) cherche à optimiser les ressources (processeur, mémoire, etc.) pour améliorer les performances et offrir des services de commutation ou de routage. Et puis, comme au début des réseaux la technologie IP n’avait pas encore fait consensus, le rôle du NOS était également de pouvoir implémenter différents protocoles de communication (FDDI, ATM, IPX, ISO, etc.).
Cisco IOS: Le système d’exploitation historique
L‘IOS a été développé dans les années 80 sur une base d’Unix BSD à une époque où les équipements avaient peu de mémoire RAM (256 kilo-octets) et des processeurs à faibles capacités de traitement… Il fallait donc optimiser le code du système d’exploitation: l’objectif est de privilégier la vitesse de commutation des paquets (au détriment de la protection contre les erreurs, par exemple).
Le logiciel Cisco IOS est un système d’exploitation qui va lancer puis gérer différents processus: ces processus sont variés puisqu’il peut s’agir de processus de routage (par exemple, pour gérer le protocole OSPF ou EIGRP), ou des processus de services (pour l’administration via le protocole SNMP, par exemple).
Les défauts liés à sa structure monolithique
Le noyau logiciel de l’IOS a une structure monolithique. C’est à dire que le logiciel est composé d’un seul bloc et, même s’il va exécuter différents processus logiciels, ceux-ci vont se partager le même espace mémoire. Ainsi, les défauts logiciels (bugs) sur un processus peuvent corrompre les données utilisées par d’autres processus ! D’ailleurs, dans le pire des cas, un crash du logiciel IOS peut conduire à devoir relancer complètement l’OS pour restaurer le système !
De plus, pour simplifier la gestion des ressources, le processeur ne peut pas arrêter un processus sous prétexte qu’un autre processus à quelque chose de plus important à faire. Cela voudrait dire que l’IOS enregistre tout le contexte avant de passer à un autre processus pour pouvoir revenir sur le contexte du processus précédent. Cette approche n’était pas envisageable lors de la création de l’IOS.
Ceci dit, dans l’IOS, les processus logiciels n’ont pas tous la même priorité (par exemple, l’envoie d’un message de log sur la console est moins important que de traiter un paquet IP qui vient d’être reçu une interface). Mais, un processus de priorité haute ne peut pas prendre la main sur le processeur occupé à gérer un processus de faible priorité: il faudra attendre la fin du cycle CPU.
Lorsque Cisco a mis sur le marché des solutions a très hautes disponibilités (comme ce fût le cas avec le routeur CRS-1), ces limitations n’étaient plus acceptables. Il a fallu envisager de repenser l’architecture du système d’exploitation !
Cisco IOS-XE: L’art de la récup’ …
Les défauts de l’IOS ont été gommés avec le système d’exploitation IOS-XE tout en préservant les habitudes des personnes qui travaillent avec l’IOS historique.
En fait, l’IOS-XE repose sur un noyau Linux moderne qui fait tourner plusieurs processus, dont le processus IOS déjà connu dans le monde des spécialistes réseaux! On parle alors de l’IOSd (IOS daemon).
Du coup, la couche Linux offre un certain niveau d’abstraction à la plateforme: tous les aspects liés au matériel sont gérés par e noyau linux ; alors que la configuration des services et protocoles réseaux ne dépend que du processus IOSd qui n’a plus de lien direct avec les aspects matériels (la programmation des interfaces est intégrée dans un processus distinct).
Linux et IOS Cisco : le cumul des avantages
De plus, en utilisant le noyau Linux, l’IOS-XE est désormais capable de gérer des processeurs multi-coeurs et de faire tourner d’autres logiciels tiers dont le code existe déjà pour Linux (exemple: le logiciel Wireshark).
Désormais, et toujours grâce au noyau Linux, l’IOS-XE peut être utilisé avec des architectures 64 bits, repoussant la limite des 4 Gigabits de mémoire vive associée aux architectures 32 bits. Désormais, le processus IOSd se voit allouer un espace mémoire dédié et configurable.
Cisco IOS-XR
Le système d’exploitation IOS-XR est né en mai 2004, à l’occasion de la sortie du routeur CRS-1 de Cisco comme indiqué en début d’article.
Le logiciel d’exploitation a été repensé en prenant en compte les architectures processeurs multi-coeurs et les mémoires vives exprimés en Gigaoctets. L’abondance de ressources permet alors de rajouter des mécanismes de sécurisation dans le design du logiciel: la disponibilité du logiciel est portée à 99,999% !
Cette fois, le logiciel IOS-XR est fortement distribué et modulaire, avec un haut niveau de sécurisation. Il s’appuie sur un micro-kernel qui offre une gestion multi-tâches avec préemption, la protection des différentes zones mémoires, et la possibilité de sauvegarder et de changer rapidement un contexte mémoire pour laisser prioritairement les ressources processeurs à une tâche donnée…
Ce micro-kernel utilisé dans l’IOS-XR est le système d’exploitation temps-réel de QNX Software Systems: QNX Neutrino. Cette fois, il est possible de relancer un processus en échec sans relancer la totalité du logiciel. Cependant, cela a eu un coût pour Cisco: la ré-écriture d’une grande partie du code de l’IOS pour pouvoir tirer profit de ce nouveau noyau.
Ainsi, si l’IOS et l’IOS-XE partagent une grande partie du code originel, ce n’est plus le cas de l’IOS-XR où (presque) tout a été ré-écrit par les ingénieurs Cisco. Les particularités de l’IOS-XR feront l’objet d’un article ultérieur…
* * *
Cet article introduit les principales variantes de l’IOS que l’on peut retrouver dans les différentes gammes de produits Cisco. Je prépare d’autres articles plus détaillés sur ces logiciels. Alors, si vous avez des questions ou des commentaires à me faire à ce sujet, utilisez la zone ci-dessous prévue à cet effet: je me ferai un plaisir de vous répondre !
Laisser un commentaire