Cisco IOS
Cisco IOS（Cisco Internetwork Operating System）はシスコシステムズのほとんどのルータと現行の全てのスイッチで使用されているソフトウェア（古いスイッチはCatOSを使用している）。IOSはマルチタスクOSと硬く統合されたルーティング・スイッチング・インターネットワーキング・およびテレコミュニケーションの機能のパッケージである。ウィリアム・イェーガーによって開発された。
Cisco IOSは独特なコマンドラインインターフェース(CLI)を有しており、その形式は他のネットワーク製品によって広く模倣されている。IOSのCLIは複数の単語によるコマンドの固定されたセットを提供する。使用可能なセットは現在のCLIの「モード」と権限レベルによって決定される。「グローバルコンフィグレーションモード」はシステム全体の設定を変更するためのコマンドを提供し、「インターフェイスコンフィグレーションモード」は具体的なインターフェイスの設定を変更するコマンドを提供する。すべてのコマンドは0から15までの権限レベルを割り当てられており、ユーザーは自分の持つ権限レベルに応じてコマンドを実行することができる。CLIによって、各権限レベルに応じて利用可能になるコマンドを定義することができる。
Cisco IOSは3つの数字といくつかの文字によって"a.b(c.d)e"という形式でバージョニングされる。例えば、リリース12.3(1)はバージョン12.3における最初のCisco IOSのメインラインのリリースである。12.3(2)は次のリリースであり以下同様である。12.3(1)TはTトレインの最初のリリースであり12.3(2)Tはその次であり以下同様である。暫定的なビルドは次のリリースの候補であり、次のリリースが入手可能になる前にバグを修正するより早い方法として、シスコのサポートによって頻繁に入手可能となる。例えば、12.3(1.2)Tはリリース12.3(1)Tに対応する2回目の暫定的なビルドである。
リビルド - しばしば、与えられたIOSのバージョンの、単一の問題または脆弱性を解決するためにリビルドが作られる。例えば、12.1(8)E14は12.1(8)Eの14個目のリビルドである。リビルドは迅速に欠陥を修理するため、また重大なインフラストラクチャーを運営しており、変化とリスクを最小化したいためメジャーバージョンのアップグレードを望まない顧客のために提供される。
暫定的なリリース - 週単位で生み出され、現在の開発の成果で構成される。シスコの報告ウェブサイトでは、関連した問題を修正するために複数の暫定的なリリースがリストされるかもしれない（この理由は一般には未知である）。
メンテナンスリリース - 性能向上とバグ修正を含む厳しく修正されたりリース。シスコはリビルドおよび暫定的なリリースの上にある、可能な限りのメンテナンスリリースにアップデートするよう薦める。
Cisco IOSは違う機能のセットを含む、いくつかの「トレイン」に分けられる。トレインはシスコがターゲットとしている顧客の別市場とグループに多少対応する。時々、特定のニーズに対応するために別のトレインがリリースされる。例えば、12.0AAトレインはCisco AS5800のために必要な新しいコードが含まれている。
ほとんどのIOSを動作させるシスコの製品は1個以上の「機能セット」もしくは「パッケージ」を持っている。典型的にはシスコ製ルータのための8つのパッケージと、シスコ製スイッチングハブのための5つのパッケージが存在する。例えば、Catalystスイッチでの使用を意図しているCisco IOSのリリースは、「標準」バージョン（基本的なIPルーティングのみのサポート）、「強化」バージョン（完全なIPv4ルーティングのサポート）、および「高度なIPサービス」バージョン（強化された機能とIPv6のサポート）が利用可能である。
各パッケージは以下のようなのサービスカテゴリーに対応する。
すべてのIOSにおいて、ルーティングとパケット転送（LANスイッチング）は別々の機能である。ルーティングなどのプロトコルはCisco IOSのプロセスとして動作し、ルーティング情報ベース(RIB)に貢献する。RIBはルータの転送機能が使用する最終的なIP転送テーブル（FIB、Forwarding Information Base）を作るために処理される。ソフトウェアのみのよる転送機能を持つルータ(例:Cisco 7200)において、アクセス制御リストによるフィルタリングと転送を含むほとんどのトラフィックは、
Cisco Express Forwarding(CEF)もしくはdCEF(配布されたCEF)によって割り込みレベルで行われる。これによって、IOSはパケットを転送するためにプロセスコンテキストスイッチを用いる必要がない。Open Shortest Path FirstやBorder Gateway Protocolのようなルーティング機能はプロセスレベルで動作する。Cisco 12000シリーズのようなハードウェアベースの転送を行うルータの場合、IOSはソフトウェアでFIBを作り、実際のパケットを転送する機能を実行するハードウェア（ASIC、ネットワークプロセッサなど）にロードする。
Cisco IOSは「モノリシック」な（いわゆる「モノリシックカーネル」ということではなく、システム全体が一つのイメージとして動作し、すべてのプロセスが同じメモリ空間を共用する）アーキテクチャを持っている。プロセス間のメモリの保護は存在しない。したがって、IOSのコード内のバグが、ほかのプロセスが使用しているデータを破壊しうる。
(旧)IOS は、"run to completion"スケジューラを持っているので、カーネルは動作しているプロセスからプリエンプトしない。他のプロセスが動作するチャンスを得る前提として、実行中のプロセスがカーネルを呼ばねばならない。
CRS-1などの非常に高い稼働性を必要とするシスコ製品にとって、この制限は容認できなかった。加えて、ジュニパーネットワークスのJUNOSのような競合するルータのOSは、そのような制限がないようにデザインされた。シスコの反応は、モジュール性とプロセス間のメモリーの保護、スレッドの軽さ、割り込みのスケジューリング、および失敗したプロセスの独立した再スタートの機能を提供するIOS XRと呼ばれる新しいCisco IOSの開発であった。IOS XRはQNXのマイクロカーネルを使用し、現在のIOSのコードの大部分は、新しいカーネルによって提供される機能を利用するために書き換えられている。
マイクロカーネルアーキテクチャは、カーネル中で動作することが絶対に必要ではないすべてのプロセスをカーネルから取り除き、アプリケーションのプロセスに類似したプロセスとして実行する。その方法を通じて、IOS XRは新しいルータのプラットフォームのための高い稼動性を達成することができる。よって、IOSとIOS XRは機能とデザインにおいて関連するが、大きく異なるコードベースである。2005年、シスコはCisco 12000シリーズでIOS XRを導入し、マイクロカーネルアーキテクチャをCRS-1からシスコの広く展開されたコアルータに拡張した。
2006年、シスコはQNXマイクロカーネル環境をより伝統的なIOSの環境に拡張するIOS Software Modularityを入手可能にしたが、まだ顧客が要求しているソフトウェアアップグレード機能を提供している。それはCatalyst6500で入手可能である。
Cisco IOSには、Unixを通常の形で利用したシステムにあるような、カーネルと比べて権限の制限されたユーザプロセスとしてプロセスを実行することによるセキュリティがない。これは、ちょっとしたバグによって起きるバッファオーバーランなどが、即、Unixでいうところの「root権限による任意コード実行」に相当する危険なセキュリティホールにつながる、ということを意味する。
互換性のために保持されているレガシーCLIの、Router(config)#username jdoe password 7 "0832585B1910010713181F"のような、Type 7ハッシュ値としてCLI上で暗号化されたパスワードは、1995年以降入手可能な「getpass」と呼ばれるソフトウェアを使って、容易に突破できる。上記の例は「stupidpass」と解読される。これは古いニュースであるが、現在でもこれらの弱いハッシュは使用されている。getpassは、Type 5パスワードや、enable secretコマンドで設定されたMD5で処理されたパスワードは突破できない。
注:シスコは、すべてのCisco IOS機器が認証(authentication)、認可(authorization)、アカウンティング(accounting)によるセキュリティモデル(AAA)を実装するよう薦めている。AAAはローカル、RADIUSおよびTACACS+データベースを使用することができる。