インターネットワーキングオペレーティングシステム[ 2 ](IOS )は、シスコシステムズが製造する複数のルータおよびネットワークスイッチモデルで使用される独自のネットワークオペレーティングシステムのファミリーです。このシステムは、ルーティング、スイッチング、インターネットワーキング、および通信機能をマルチタスクオペレーティングシステムに統合したパッケージです。IOSのコードベースには協調型マルチタスクカーネルが含まれていますが、ほとんどのIOS機能は、シスコ製品で使用するために、 LinuxやQNXなどの他のカーネルに移植されています。
Ciscoのネットワーク製品すべてがIOSを実行しているわけではありません。例外として、 IOS XEを実行するCisco Catalystスイッチや、IOS XEまたはIOS XRを実行するCisco ASRルータがあります。これらはどちらもLinuxベースのオペレーティングシステムです。データセンター環境向けには、Cisco Nexusスイッチ(イーサネット)とCisco MDSスイッチ(ファイバーチャネル)の両方が、同じくLinuxベースのオペレーティングシステムであるCisco NX-OSを実行しています。
IOS ネットワーク オペレーティングシステムは、スタンフォード大学のWilliam Yeagerが書いたコードから作成されました。[ 3 ] [ 4 ] [ 5 ]このコードは 1980 年代に 256 kB のメモリと低いCPU処理能力を持つルーター向けに開発されました。モジュール式の拡張により、IOS はハードウェア機能の向上と新しいネットワーク プロトコルに対応してきました。[ 6 ] IOS が開発された当時、Cisco Systems の主力製品はルーターでした。同社は、最初のイーサネット スイッチの発明者であるKalpanaなど、ネットワーク スイッチに特化した若い企業を多数買収したため、Cisco スイッチは当初 IOS を実行しませんでした。IOS より前は、Cisco Catalyst シリーズはCatOS を実行していました。[ 7 ]
IOSコマンドラインインターフェイス(CLI)は、複数の単語で構成される固定のコマンドセットを提供します。使用可能なコマンドセットは、「モード」と現在のユーザーの権限レベルによって決まります。「グローバル設定モード」ではシステム構成を変更するコマンドが提供され、「インターフェイス設定モード」では特定のインターフェイスの構成を変更するコマンドが提供されます。すべてのコマンドには0から15までの権限レベルが割り当てられており、必要な権限を持つユーザーのみがアクセスできます。CLIを介して、各権限レベルで使用可能なコマンドを定義できます。
ほとんどのIOSビルドにはTclインタープリタが含まれています。組み込みのイベントマネージャ機能を使用すると、インタープリタをスクリプト化して、インターフェースの障害や定期的なタイマーなど、ネットワーク環境内のイベントに反応させることができます。
利用可能なコマンドモードは次のとおりです。[ 8 ]
さらに、100種類以上の設定モードとサブモードが用意されています。
Cisco IOS は、1980 年代のルーターやスイッチのハードウェア リソースが限られていたため、モノリシックアーキテクチャを採用しています。これは、すべてのプロセスが CPU 処理時間を節約するためにハードウェアに直接アクセスできることを意味します。プロセス間にメモリ保護はなく、IOS は完了まで実行されるスケジューラを備えているため、カーネルは実行中のプロセスをプリエンプトしません。代わりに、プロセスは他のプロセスが実行される機会を得る前にカーネル呼び出しを行う必要があります。IOS は各プロセスを単一のスレッドとみなし、優先度値を割り当てます。これにより、優先度の高いプロセスはキューに入れられた優先度の低いプロセスよりも先に CPU 上で実行されますが、優先度の高いプロセスは実行中の優先度の低いプロセスを中断することはできません。[ 6 ]
Cisco IOS モノリシックカーネルは、異なるプロセスのデータのメモリ保護を実装していません。物理メモリ全体が 1 つの仮想アドレス空間にマッピングされます。Cisco IOS カーネルはメモリページングやスワッピングを実行しません。そのため、アドレス指定可能なメモリは、オペレーティングシステムがインストールされているネットワークデバイスの物理メモリに制限されます。ただし、IOS は、重複した仮想メモリの内容を同じ物理メモリにエイリアスすることをサポートしています。このアーキテクチャは、システムのパフォーマンスを確保し、オペレーティングシステムの運用オーバーヘッドを最小限に抑えるために Cisco によって実装されました。[ 6 ]
IOSアーキテクチャの欠点は、オペレーティングシステムの複雑さが増すこと、あるプロセスが別のプロセスのデータを上書きする可能性があるためデータ破損が発生する可能性があること、そしてあるプロセスがオペレーティングシステム全体を不安定にしたり、ソフトウェアによる強制クラッシュを引き起こしたりする可能性があることです。IOSがクラッシュした場合、オペレーティングシステムは自動的に再起動し、保存された構成を再読み込みします。[ 6 ]
Cisco IOS のすべてのバージョンにおいて、パケット ルーティングと転送(スイッチング) は別々の機能です。ルーティングやその他のプロトコルは Cisco IOS プロセスとして実行され、ルーティング情報ベース (RIB) に貢献します。RIB は処理されて最終的な IP 転送テーブル (FIB、転送情報ベース) が生成され、ルータの転送機能で使用されます。ソフトウェアのみの転送機能を備えたルータ プラットフォーム (Cisco 7200 など) では、アクセス制御リストのフィルタリングや転送を含むほとんどのトラフィック処理は、 Cisco Express Forwarding (CEF) または dCEF (Distributed CEF)を使用して割り込み レベルで実行されます。つまり、 IOS はパケットを転送するためにプロセスコンテキスト スイッチを実行する必要はありません。OSPFやBGPなどのルーティング機能はプロセス レベルで実行されます。Cisco 12000 シリーズなどのハードウェア ベースの転送機能を備えたルータでは、IOS はソフトウェアで FIB を計算し、転送ハードウェア ( ASICやネットワーク プロセッサなど) にロードします。このハードウェアが実際のパケット転送機能を実行します。
インターフェイス記述子ブロック(IDB)とは、ネットワークデータのIPアドレス、インターフェイスの状態、パケット統計などの情報を含む、メモリまたはCisco IOS内部データ構造の一部です。CiscoのIOSソフトウェアは、特定のCiscoスイッチまたはルータ内のハードウェアインターフェイスごとに1つのIDBを保持し、サブインターフェイスごとに1つのIDBを保持します。システムに存在するIDBの数は、Ciscoハードウェアプラットフォームの種類によって異なります。
スイッチ上の物理インターフェースと論理インターフェースは、展開されたポート記述名または省略されたポート記述名のいずれかで参照されます。これにスロット、モジュール、およびインターフェースの番号を組み合わせることで、そのインターフェースへの一意の参照が作成されます。
IOSは、特定のCiscoネットワークデバイス向けにコンパイルされた固有のファイルとして出荷されます。そのため、各IOSイメージには機能セットが含まれており、これにより、異なるCiscoデバイスで使用可能なコマンドラインインターフェイス(CLI)コマンドと機能が決定されます。したがって、別の機能セットにアップグレードするには、ネットワークデバイスに新しいIOSイメージをインストールし、IOSオペレーティングシステムを再ロードする必要があります。Ciscoデバイスで実行されているIOSのバージョンと機能セットに関する情報は、show versionコマンドで取得できます。[ 6 ]
IOSを実行するCisco製品のほとんどには、1つ以上の「機能セット」または「パッケージ」があり、通常、Ciscoルータには8つのパッケージ、Ciscoネットワークスイッチには5つのパッケージがあります。たとえば、Catalystスイッチで使用することを目的としたCisco IOSリリースには、「標準」バージョン(基本的なIPルーティングのみを提供)、「拡張」バージョン(完全なIPv4ルーティングをサポート)、および拡張機能とIPv6サポートを提供する「高度なIPサービス」バージョンがあります。[ 9 ]
Ciscoは、ISRルータの1900、2900、3900シリーズから、IOSのライセンスモデルを改訂しました。機能セットの拡張プロセスを簡素化し、ネットワークオペレーティングシステムの再インストールの必要性を減らすために、Ciscoはデバイスで使用可能なすべての機能を含むユニバーサルIOSイメージを導入し、顧客は追加のソフトウェアライセンスを購入することで特定の機能をアンロックできます。[ 10 ]特定の機能に必要な正確な機能セットは、Cisco Feature Navigatorを使用して確認できます。ルータにはIP Baseがインストールされており、追加の機能パックライセンスをアドオンとしてインストールすることで、デバイスの機能セットを拡張できます。利用可能な機能パックは次のとおりです。
IOSイメージはソフトウェアのバグ修正で更新できません。IOSの脆弱性を修正するには、オペレーティングシステム全体を含むバイナリファイルをロードする必要があります。[ 11 ]
Cisco IOS は、3 つの数字といくつかの文字を使用してバージョン管理され、一般的にはab(cd)e の形式をとります。
リビルド– リビルドは、特定のIOSバージョンにおける単一の特定の問題や脆弱性を修正するためにコンパイルされることがよくあります。たとえば、12.1(8)E14はリビルドであり、14は12.1(8)Eの14番目のリビルドであることを示しています。リビルドは、不具合を迅速に修正するため、または、デバイス上で重要なインフラストラクチャを運用しているため、変更とリスクを最小限に抑えたい顧客のニーズを満たすために作成されます。
中間リリースは通常、週単位で作成され、現在の開発作業をまとめたものです。シスコのアドバイザリWebサイトには、関連する問題を修正するための中間リリースが複数掲載される場合があります(その理由は一般には公開されていません)。
メンテナンスリリースとは、厳格なテストを経て提供されるリリースであり、機能強化とバグ修正が含まれています。シスコは、可能な限り、暫定リリースや再構築リリースよりもメンテナンスリリースへのアップグレードを推奨します。
Ciscoは、「列車は、特定の機能セットを備えたソフトウェアを特定のプラットフォームに届けるための乗り物を提供する」と述べている。[ 9 ]
Cisco IOS リリース 15 より前は、リリースは複数のトレインに分割され、それぞれに異なる機能セットが含まれていました。トレインは、Cisco がターゲットとする異なる市場または顧客グループにほぼ対応していました。[ 9 ]
時折、特定のニーズに合わせて設計された別のバージョンのリリースもあった。例えば、12.0AAバージョンには、シスコのAS5800製品に必要な新しいコードが含まれていた。
Cisco IOS リリース 15 以降は、M/Tトレインという単一のサポートラインのみとなります。このサポートラインには、拡張メンテナンスリリースと標準メンテナンスリリースの両方が含まれます。Mリリースは拡張メンテナンスリリースであり、Cisco は 44 か月にわたってバグ修正を提供します。Tリリースは標準メンテナンスリリースであり、Cisco は 18 か月のみバグ修正を提供します。
IOS は特定の用途 (例えばCHAP認証) で平文パスワードを知る必要があるため、デフォルトでは CLI に入力されたパスワードは「」のような「タイプ 7」暗号文として弱く暗号化されます。これは、ルーターの設定を表示する際の「ショルダーサーフィン」攻撃を防ぐための設計ですが、安全ではありません。1995 年以降利用可能な「getpass」または最新版の「ios7crypt」[ 13 ]と呼ばれるソフトウェアを使用して簡単に復号化できます。ただし、ルーターは「key chain」コマンドを使用してタイプ 7 パスワードをキーとして入力し、「show key」コマンドを発行することでパスワードを復号化できます。上記の例では「stupidpass」に復号化されます。[ 14 ]ただし、このプログラムは「タイプ 5」パスワードや、ソルト付きMD5 ハッシュを使用するコマンドで設定されたパスワードを復号化しません。[ 15 ]Router(config)#username jdoe password 7 0832585B1910010713181Fenable secret
Cisco は、すべての Cisco IOS デバイスに認証、認可、アカウンティング (AAA) セキュリティ モデルを実装することを推奨しています。AAA は、ローカル、RADIUS、およびTACACS+データベースを使用できます。ただし、緊急時にはローカル アカウントが通常必要になります。[ 16 ]
2005年7月のBlack Hat Briefingsカンファレンスで、当時Internet Security Systemsに勤務していたMichael Lynnは、IOSの脆弱性に関する情報を発表した。 [ 17 ] Ciscoは既にパッチをリリースしていたが、この欠陥を公表しないよう求めた。[ 18 ] Ciscoは訴訟を起こしたが、さらなる情報開示を防ぐための差し止め命令が出された後に和解した。[ 19 ]
iOSがデバイスから段階的に廃止されるのに伴い、IOS-XEではデフォルト設定の更新など、多くの改善が採用されました。一部のユースケースでは、秘密情報を一方向ハッシュとして保存できるようになりました。
Cisco CRS-1のように非常に高い可用性が求められる Cisco 製品では、モノリシック カーネルの制限は許容できませんでした。さらに、IOS の 10 ~ 20 年後に登場した競合ルーター オペレーティングシステム、例えばJuniperのJunos OSなどは、これらの制限がないように設計されていました。[ 20 ] Cisco の対応は、モジュール性、プロセス間のメモリ保護、軽量スレッド、プリエンプティブ スケジューリング、障害が発生したプロセスの独立した再起動機能、サービス プロバイダ ネットワークでの使用のための大規模な拡張性を提供するまったく新しいオペレーティングシステムを開発することでした。IOS XR 開発トレインでは、当初リアルタイム オペレーティングシステムマイクロ カーネル( QNX ) が使用され、カーネルが提供する機能を活用するために IOSソース コードの大部分が書き直されました。2005 年に Cisco は、12000 シリーズのネットワーク ルータに Cisco IOS XR ネットワーク オペレーティングシステムを導入し、マイクロ カーネル アーキテクチャを CRS-1 ルータから Cisco の広く展開されているコア ルータに拡張しました。 Cisco IOS XR のリリース 6.x 以降、QNX は廃止され、Linux が採用されました。初期の作業の一部はモジュール性に焦点を当てており、モノリシック IOS をモジュール型 IOS に変更することで、マイクロカーネル アーキテクチャを IOS 環境に拡張しつつ、ソフトウェア アップグレード機能も維持するというアイデアが生まれました。このアイデアは Catalyst 6500 でのみテストされ、限られた範囲でしか利用されず、要件が高すぎてプラットフォームの動作に著しい支障をきたすため、すぐに中止されました。
1984年、卒業生のレナード・ボサックと妻のサンディ・ラーナーは、スタンフォード大学のコンピュータ運用スタッフの職を辞し、シスコというインターネットルーター会社を設立した。シスコは、業界で支配的な企業となった。彼らは、数年前にウィリアム・イェーガーがスタンフォード大学で開発したマルチプロトコルルーターソフトウェアを採用した。