# Cisco Internetwork Operating System

Het Cisco Internetwork Operating System of kortweg IOS is het meest gebruikte besturingssysteem voor netwerkapparatuur van Cisco. Dit multitasking besturingssysteem is speciaal geschreven voor Cisco-hardware zoals routers en switches. Het eerste IOS is geschreven door William Yeager.

## Architectuur

Cisco IOS heeft een monolithische architectuur, dit wil zeggen dat het als één enkele image draait en alle processen dezelfde geheugenruimte gebruiken. Er is geen geheugenbescherming tussen processen onderling waardoor een bug in de IOS code ervoor zorgt dat data van een ander proces corrupt kan geraken. Cisco IOS gebruikt ook een zogenaamde "run to completion" planner waardoor de kernel een proces niet kan afsluiten vooraleer het proces zelf aangeeft dat het klaar is.
Voor Cisco producten die een zeer hoge beschikbaarheid nodig hebben, bijvoorbeeld de Cisco CRS-1, waren deze beperkingen onacceptabel. Bovendien waren er ondertussen al concurrerende router operating systemen, zoals Junipers JunOS, die ontwikkeld waren zonder deze beperkingen. Hierop ontwikkelde Cisco een nieuwe versie van Cisco IOS, IOS-XR genoemd, dat modulariteit en geheugenbescherming tussen processen, lichtgewicht threads, pre-emptive scheduling en de mogelijkheid tot het onafhankelijk herstarten van gefaalde processen bood.
IOS-XR gebruikt een 3rd party real-time operating system microkernel (QNX), en het grootste deel van de huidige IOS code is herschreven om gebruik te kunnen maken van de mogelijkheden van de nieuwe kernel. Deze architectuur verwijdert alle processen, buiten degene die dit vereisen, uit de kernel en voert ze uit als "gewone" processen. Hierdoor is IOS-XR in staat om een hoge beschikbaarheid te garanderen.
In 2005 werd IOS-XR ook geïntroduceerd op het Cisco 12000 series platform. Meer recent, in 2006, heeft Cisco de IOS Software Modularity geïntroduceerd dat de QNX microkernel naar een meer traditionele IOS omgeving uitbreidt. Momenteel is dit beschikbaar op de Catalyst 6500 switch.

## CLI

Het zichtbare onderdeel van Cisco IOS is de Command Line Interface (CLI). Dit is een tekstgeoriënteerde gebruikersinterface waarmee het netwerkapparaat geconfigureerd, bestuurd en uitgelezen kan worden. Hoewel er zeer veel verschillende soorten netwerkapparatuur en IOS-varianten bestaan is de syntaxis van de CLI zo universeel mogelijk gehouden. De commando's zijn hiërarchisch gestructureerd. Daarbij kent de CLI verschillende modi met elk eigen mogelijkheden. Het is gemakkelijk te zien in welke modus je bezig ben aan de hand van de prompt. De belangrijkste modi zijn:
| Modus | Mogelijkheden | Prompt |
| User Exec Mode | Beperkte omgeving bedoeld voor het uitlezen van niet-kritische info door een 'gewone' gebruiker. | Router> |
| Privileged Exec Mode | Volledige omgeving voor administrators. Alle mogelijke gegevens zijn uit te lezen en aan te passen. | Router# |
| Global Configuration Mode | Omgeving waarin globale instellingen kunnen aangepast worden, bijvoorbeeld datum, tijd, ... | Router(config)# |
| Interface Configuration Mode | Instellingen voor bepaalde interfaces kunnen hierin aangepast worden, bijvoorbeeld ip-adres/subnetmask. | Router(config-if)# |
| Routing Configuration Mode | Laat toe om het routeringsprotocol in te stellen. | Router(config-router)# |
De CLI is benaderbaar met een PC via een speciale consolekabel (via de seriële interface). In een productief netwerk is het gebruikelijk dat de CLI benaderd wordt over het netwerk met telnet, SSH, http of https. Er bestaan verschillende webgebaseerde "GUI-schillen" om de CLI heen zoals de Cisco Router and Security DeviceManager (SDM).

## Versienummering

Cisco IOS versies worden genummerd door middel van volgende aanduiding: a.b(c.d)e.
* a is de hoofd versienummer
* b is de sub versienummer
* c is de release nummer
* d (niet getoond bij publieke releases) staat voor de interim versie
* e is de release train identificatie (zie hieronder)
Bijvoorbeeld: 12.3(1) is de eerste release van Cisco IOS versie 12.3, 12.3(2) is de volgende release, enzovoort. 12.3(1)T is de eerste release van de T train, 12.3(2)T de volgende, enzovoort.
Interim versies zijn kandidaten voor de volgende release en worden regelmatig beschikbaar gemaakt door Cisco om foutjes te herstellen vooraleer de volgende release publiekelijk beschikbaar is. Bijvoorbeeld: 12.3(1.2)T is de tweede interim build na versie 12.3(1)T.
Rebuilds zijn gecompileerd om een specifiek probleem in een bepaalde versie op te lossen. 12.1(8)E14 is de veertiende rebuild van versie 12.1(8)E.
Maintenance releases zijn zorgvuldig geteste versies die verbeteringen en bugfixes bevatten. Cisco raadt aan om zo snel mogelijk te upgraden naar maintenance releases indien mogelijk.

## Trains

Cisco IOS releases worden in verschillende "trains" gesplitst, elk met hun eigen mogelijkheden en functies. De verschillende trains komen min of meer overeen met de verschillende doelgroepen van Cisco.
* De standaard train is de meest stabiele versie die men kan aanbieden waarvan de mogelijkheden vrijwel niet veranderen gedurende de opeenvolgende versies. Er worden enkel updates vrijgegeven om problemen op te lossen. De vorige technologie train wordt de basis voor de huidige standaard train, bijvoorbeeld: 12.1T wordt de basis voor 12.2.
* De T - Technologie train krijgt voortdurend nieuwe mogelijkheden en bugfixes tijdens zijn levensduur en is dus minder stabiel dan de standaard train.
* De S - Service Provider train draait enkel op de core router producten van Cisco en is sterk aangepast voor Service Providers.
* De E - Enterprise train is gericht op enterprise omgevingen.
* De B - Breedband train ondersteunt internet gebaseerde breedband functies.
Er zijn van tijd tot tijd ook andere trains die specifiek ontwikkeld worden voor bepaalde producten, bijvoorbeeld de 12.0AA train die enkel voor Cisco's AS5800 product bedoeld was.

## IOS-gerelateerde software

* Terminal clients zoals PuTTY en Secure CRT voor het benaderen van de CLI door middel van telnet, SSH of een directe seriële verbinding
* TFTP-servers zoals tftpd32 of Cisco TFTP server voor het up- en downloaden van IOS-images, configuratiefiles en andere bestanden.
* Emulatie van Cisco routers en switches met bijvoorbeeld GNS32 en Dynamips.