# Internetwork Operating System

Internetwork Operating System Software (IOS) ist das Betriebssystem von Routern und Switches des US-amerikanischen Unternehmens Cisco.

## Geschichte

Das Betriebssystem geht zurück auf Bill Yeager, einem Mitarbeiter der Stanford University Medical School, der um 1980 die Software entwickelte, welche es den Routern ermöglicht, Netzwerke unterschiedlicher Medien und Protokolle miteinander zu verbinden. Er arbeitete bis 1984 mit Sandra Lerner und Leonard Bosack, den Gründern von Cisco, an der Verbesserung dieser Software zusammen. Mit der Gründung von Cisco im Jahre 1984 lizenzierte Cisco diese Software von Yeager. Seitdem wurde sie in verschiedenen Versionen eingesetzt und liegt seit Oktober 2009 in der Version 15.0 vor.
IOS wurde in der Vergangenheit auch an andere Hersteller lizenziert. So verwendeten z. B. in den 1990er Jahren die BRouter des US-amerikanischen Unternehmens DEC ein im Funktionsumfang eingeschränktes Cisco IOS.

## Funktion

IOS wird bei modernen Geräten beim Einschalten des Gerätes aus dem nichtflüchtigen Flash-Speicher dekomprimiert und in den Hauptspeicher geladen, während es bei älteren Routermodellen wie z. B. dem Cisco 2500 grundsätzlich direkt vom Flash-Speicher ausgeführt wird. Letzteres begrenzt die Ablaufgeschwindigkeit wegen des zum Hauptspeicher vergleichsweise geringen Durchsatzes von Flash-Speicher. Nach dem Start stellt es die grundlegenden Funktionen des Routing und/oder Switching zur Verfügung. Es werden je nach sogenanntem Feature-Set unter anderem Routing-Protokolle wie BGP, OSPF, EIGRP und RIP unterstützt. Außerdem werden je nach Feature-Set auch weitere Netzwerkprotokolle wie IPv6, IPX, AppleTalk unterstützt. Über Zugriffskontrolllisten werden grundlegende Paketfilterfunktionen bereitgestellt.
Gesteuert und konfiguriert wird dieses per Kommandozeile über eine Telnet, SSH oder eine direkte serielle Konsolenverbindung am Endgerät. Die Bedienung ist der von MS-DOS- oder Unix-Kommandozeilen ähnlich und enthält Funktionen wie die Autovervollständigung eines eingegebenen Kommandos. Eine enorme Hilfe ist dabei das Fragezeichen, welches an beliebiger Stelle eingegeben eine kontextabhängige Kurzhilfe ausgibt. Es sind aber auch Web- und Windows-Oberflächen verfügbar. Auch über SNMP kann man IOS eingeschränkt konfigurieren.
Kommandoprompt:
* User Mode: Router>
* Privileged Mode: Router#
* Global Configuration Mode: Router(config)#
* Spezieller Interface Configuration Mode: Router(config-if)#
Mit dem User-Modus können nur einfache Abfragen und diverse show-Befehle ausgeführt werden. Im privilegierten Modus und im Global-Configuration-Modus kann der Router oder Switch konfiguriert werden. Der Wechsel in den privilegierten Modus kann ein Passwort erfordern, von dort kann man in den Global Configuration Mode wechseln. Um einzelne Schnittstellen einstellen zu können, muss in den „Interface Configuration Mode“ der jeweiligen Schnittstelle gewechselt werden.

## Anwendungsbeispiele

* Anzeigen der aktuellen Konfiguration:
* Anzeigen der IOS-Version, Router-Modell, Ausstattung usw.:
* Anzeigen detaillierter Informationen über alle Router-Schnittstellen:
* Kurzübersicht über IP-Adressen und Status der vorhandenen Router-Schnittstelle:
* Anzeigen der aktuellen Routing-Tabelle der jeweiligen Netzwerkprotokolle:
* Wechsel in den privilegierten Modus:
* Wechsel in den globalen Konfigurationsmodus:

## Versionierung

Die Cisco-IOS-Versionierung verwendet Zahlen und Buchstaben. Im Allgemeinen wird die Form a.b(c)De verwendet, wobei D und e optionale Bezeichner sind. Bei Interims-Releases kommt die Form a.b(c.i)De zur Anwendung. Es gilt:
* a.b bezeichnet die Hauptversion (Major Release). Aktuelle Major Release Version ist 15.0
* c bezeichnet die Maintenance Release Nummer. Sie beginnt bei 1 und wird innerhalb eines Major Release laufend erhöht.
* D bezeichnet den Release Train (siehe unten). Wird dieser nicht angegeben, so handelt es sich um den Mainline Train.
* e bezeichnet die Rebuild Nummer. Das Erstellen eines Rebuilds ist der reguläre Weg, um Bugfixes zu integrieren. Das dauert jedoch länger als bei einem Interims Build, da die Bugfixes gewissen Qualitätskontrollen unterzogen werden.
* i ist die Interims Build Nummer. Sie wird nur angegeben, wenn für Kunden oder für interne Zwecke ein sogenanntes Interims Build erstellt wird. Dieses Vorgehen wird angewandt, wenn aufgrund eines spezifischen Bugs sehr schnell eine korrigierte Version zur Verfügung gestellt werden muss. Die Korrekturen aus den Interims Releases fließen dann meist in die kurz darauf folgende Rebuilds und Maintenance Releases ein. Interims Releases sind nur auf Anfrage bei Cisco TAC erhältlich.

## Release Designators

Jedes Release erhält einen Release Designator, der eine Aussage über Qualität und Verwendbarkeit macht.
* ES – Engineer Special: ES kann als Beta-Version verstanden werden. Es enthält Fixes die von den Entwicklern ausgearbeitet wurden. Diese Versionen sind meist nur vom Cisco TAC erhältlich. ES Releases sollten nur eingesetzt werden, wenn die enthaltenen Features noch nicht in einem LD- und GD-Release zur Verfügung stehen.
* ED – Early Deployment: ED kann als Beta-Version verstanden werden. Es wird in der Regel für alle Releases der T-, X-, Y- und Z-Trains verwendet. ED Releases sollten nur eingesetzt werden, wenn die enthaltenen Features noch nicht in einem LD- und GD-Release zur Verfügung stehen.
* LD – Limited Deployment: LD wird für alle Releases des Mainline Train verwendet, die noch nicht durch das GD-Programm zertifiziert wurden.
* GD – General Deployment: GD-Releases sind durch das GD-Programm (ausführliche Qualitätsprüfung) zertifiziert und gelten als uneingeschränkt nutzbar. Falls möglich sollte immer GD-Software eingesetzt werden.
* MD – Maintenance Deployment: Da Cisco per Ende März 2008 das GD-Programm für 12.4 abgeschafft hat, ersetzt MD die bisherigen GD und LD. Dies gilt nicht für 12.3 und frühere Major Releases.
* DF – Deferred: Wird ein Release von Cisco zurückgezogen, z. B. weil es bestimmte Bugs enthält, so wird der DF-Designator zugeordnet. Diese Software steht nicht mehr zum Download zur Verfügung, wird nicht mehr verkauft und auch nicht mehr unterstützt.

## Release Trains

Releases von Cisco IOS sind aufgeteilt in mehrere Release Trains. Diese unterscheiden sich einerseits durch die enthaltenen Features (z. B. S- und E-Trains), andererseits auch betreffend deren Weiterentwicklung (Mainline sowie T-, X-, Y- und Z-Trains).
* Mainline: Der Funktionsumfang dieses Trains, also die enthaltenen Features, wird innerhalb eines Major Release nicht erweitert. Von einem Maintenance Release zum nächsten werden ausschließlich Bugfixes integriert. Deshalb ist dieser Train der stabilste. Wird ein neuer Major Release erstellt, so entsteht dieser immer direkt aus dem vorherigen T-Train. 12.4 wurde aus 12.3T erstellt, und der nächste Major Release wird aus 12.4T entstehen.
* T – Technology: Dieser Train dient der eigentlichen Weiterentwicklung von einem Major Release zum nächsten. Jeder neue Maintenance Release enthält eine Anzahl neuer Features, die meist aus den laufenden X-, Y- und Z-Trains stammen. Daher gilt der T-Train generell als weniger stabil als der Mainline Train. Dem T-Train werden jedoch auch Bugfixes zugeführt.
* X, Y, Z – Experimental: Die meisten neuen Features werden zuerst in einem solchen Release veröffentlicht und später in den T-Train integriert. Pro Feature (teilweise auch für mehrere gruppierte Features) wird ein neuer Train angelegt, beginnend bei XA, XB etc. Typisch sind solche Releases bei neuen Plattformen, da auch der Support für eine neue Plattform als Feature gilt. Die ersten verfügbaren Releases für eine neue Plattform stammen daher immer aus einem solchen Train.
* S – Service Provider: Diese Train ist angepasst an Bedürfnisse von Service Providern, z. B. ISPs. Er integriert z. B. Features wie MPLS.
* E – Enterprise: Dieser Train ist angepasst an Bedürfnisse von größeren Firmen.
* B – Broadband: Es werden Internet-Breitband-Features unterstützt.
Teilweise werden Trains auch kombiniert. Der SE-Train ist z. B. eine Kombination aus S- und E-Train. Hin und wieder werden nach Bedarf auch weitere Trains erstellt. Zum Beispiel beinhaltet 12.0AA neuen Code, der für Ciscos AS5800 benötigt wurde.

## Features

Ein Feature ist ein spezifisches IOS-Merkmal, z. B. die Unterstützung eines bestimmten Protokolls, bestimmter Kryptographiefunktionen, Telefoniefunktionen usw. oder auch eine kleinere Erweiterung eines bestehenden Features. Auch die Unterstützung neuer Hardware (Router, Switch, Erweiterungsmodul usw.) wird Cisco-intern als Feature betrachtet. Der Funktionsumfang eines IOS-Betriebssystems lässt sich durch eine Auflistung der enthaltenen Features eindeutig beschreiben.
Zurzeit sind insgesamt etwas über 3750 verschiedene Features verfügbar.

## Feature-Sets

Feature-Sets sind von Cisco fest definierte Zusammenstellungen von Features, welche dann effektiv verkauft resp. zum Download angeboten werden. Da IOS an sich nicht modular aufgebaut ist, besteht so trotzdem die Möglichkeit, eine für den gedachten Einsatzzweck möglichst passende Zusammenstellung von Funktionen zu erhalten. Ausgehend von einem Basis-Feature-Set – meist als "IP", "IP Only" oder "IP Base" bezeichnet – enthalten darauf aufbauende Feature-Sets einen größeren Funktionsumfang. Sie benötigen jedoch in der Regel mehr RAM- und/oder Flash-Speicher und führen u. U. zu einer höheren CPU-Belastung. Darüber hinaus sind sie auch teurer.
Ab Version 12.2 wurde für alle Router und Switches schrittweise das "Cisco IOS Packaging" eingeführt. Es definiert acht unterschiedliche Feature-Sets für Router bzw. sieben für Catalyst Switches.