IOS と IOS XR の違いについて書いてみたいと思います。
IOS
IOS はモノシリックカーネルとなり、全てが一つのイメージで動いています。また、全てのプロセスは同じアドレススペースをシェアしています。プロセス間でメモリ保護が無いため、一つのプロセスがクラッシュすると他のプロセスに影響を及ぼしルータの再起動などを引き起こします。プロセスが実行される場合、カーネルを呼びスケジュールされますが、優先したいプロセスを前に割り込ませるといったことはできません。
IOS XR
IOS XR は QNX というマイクロカーネルを使用しています。IOS XR は IOS と異なりもモジュラー化されプロセス間のメモリ保護もあるため、優先したいプロセスを先行して実行することができ、問題のあるプロセスのみを再起動することも可能です。OSPF や BGP などのプロトコルは全て個別に動作しています。一つのプロセスに問題が発生したとしても、他に影響を及ぼすことはありません。また OSPF などで複数のインスタンスを使用する場合にはそれぞれ個別のメモリースペースを持つため、各インスタンスで部署を分けている場合など、一つのインスタンスで問題が発生しても他の部署には影響が出ないという形になります。
コンフィグレーションモード
また、IOS と IOS XR で大きな違いと言えばコンフィグレーションモードです。IOS しか触ったことが無い人には IOS XR に最初慣れるのは大変かもしれません。Juniper の JUNOS 経験がある人は設定方法が似ているので慣れるのに時間がかからないかもしれません。IOS のコンフィグレーションモードは階層構造にはなっておらず、また変更した場合にすぐに変更が反映され running-config に保存されます。IOS XR の場合はアクティブなコンフィグを直接変更するといったことはできません。階層構造となっている設定モードで設定変更を行い、commit コマンドによりアクティブな設定に反映を行います。IOS XR では commit 時に簡単な設定チェックを行っており、問題がある場合は下記のようなメッセージで問題があることを教えてくれます。
RP/0/0/CPU0:XR1(config)#commit Sun Jan 18 22:33:21.955 JST % Failed to commit one or more configuration items during a pseudo-atomic operation. All changes made have been reverted. Please issue 'show configuration failed' from this session to view the errors
IOS と IOS XR の設定変更時における違いについてまとめてみました。
IOS | IOS XR |
設定変更はすぐさま反映される | 設定変更はすぐに反映されない |
commitコマンドは無い。すぐさま変更される。 | 設定変更を有効にするには commit コマンドが必要。 |
設定戻し(config rollback)には設定が必要。 | 設定戻し(config rollback)が可能。 |