以下に添付図面を参照して本願に係るロールバック処理制御プログラム、ロールバック処理制御方法及びロールバック処理制御装置について説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
[システム構成]
図1は、実施例1に係るネットワーク管理システムの構成例を示す図である。図1に示すネットワーク管理システム1は、ネットワークNWを構築するネットワーク装置30A〜30Cを管理するネットワーク管理サービスを提供するものであり、一例として、ネットワーク装置30A〜30Cに対する各種設定を実行したり、ネットワーク装置30A〜30Cへの設定をロールバックしたりすることができる。
図1に示すように、ネットワーク管理システム1には、ネットワーク管理装置10と、ネットワーク装置30A〜30Cと、クライアント端末50とが含まれる。以下では、ネットワーク装置30A〜30Cのことを総称する場合に「ネットワーク装置30」と記載する場合がある。なお、図1には、3つのネットワーク装置30A、ネットワーク装置30B及びネットワーク装置30Cがネットワーク管理装置10に収容される場合を例示したが、これに限定されない。すなわち、ネットワーク管理装置10が収容するネットワーク装置の数30は任意であってかまわない。
ネットワーク管理装置10は、上記のネットワーク管理サービスを提供するコンピュータである。
一実施形態として、ネットワーク管理装置10は、上記のネットワーク管理サービスを実現するパッケージソフトウェアやオンラインソフトウェアを所望のコンピュータにインストールさせることによってSDN(Software-Defined Networking)コントローラとして実装できる。このネットワーク管理装置10は、ネットワークNWの一例として、IP−VPN(Internet Protocol Virtual Private Network)や広域イーサネット(登録商標)などのキャリアイーサネット(登録商標)の監視、設定や制御などを含む管理を実行することができる。このようにネットワーク管理装置10により管理されるネットワークNWは、物理ネットワークに限定されず、SDNやNFV(Network Function Virtualization)などの技術により仮想化された仮想ネットワークであってもよい。
ネットワーク装置30は、ネットワークNWを構築する装置であり、例えば、ルータやスイッチなどのデータ転送装置を始め、ファイアーウォール、ロードバランサなどを採用することができる。
クライアント端末50は、上記のネットワーク管理サービスの提供を受けるコンピュータであり、一例として、ネットワークNWを管理するネットワーク管理者等の関係者により使用される。
[ネットワーク管理装置10の構成]
図2は、実施例1に係るネットワーク管理装置10の機能的構成を示すブロック図である。図2に示すように、ネットワーク管理装置10は、通信I/F(interface)部11と、記憶部13と、制御部15とを有する。なお、ネットワーク管理装置10は、図2に示した機能部以外にも既知のコンピュータが有する各種の機能部、例えば各種の入力デバイスや音声出力デバイスなどの機能部を有することとしてもかまわない。
通信I/F部11は、他の装置、例えばネットワーク装置30やクライアント端末50との間で通信制御を行うインタフェースである。
一実施形態として、通信I/F部11は、LANカードなどのネットワークインタフェースカードを採用できる。例えば、通信I/F部11は、ネットワークの設定に関するコマンドやその逆コマンドをネットワーク装置30へ送信したり、ネットワーク装置30からネットワーク装置30が記憶する設定ファイル、例えば「running-config」や「startup-config」を受信したりする。また、通信I/F部11は、クライアント端末50からネットワークの設定に対する編集操作やネットワークの設定に関するロールバック指示を受け付ける。この他、通信I/F部11は、ネットワークの設定を編集する編集画面やロールバックの対象とされる設定操作の一覧が登載されたロールバック一覧画面などをクライアント端末50へ送信したりする。
記憶部13は、制御部15で実行されるOS(Operating System)を始め、上記のネットワーク管理サービスを実現するネットワーク管理プログラムなどの各種プログラムに用いられるデータを記憶する記憶デバイスである。
一実施形態として、記憶部13は、ネットワーク管理装置10における補助記憶装置として実装することができる。例えば、記憶部13には、HDD(Hard Disk Drive)、光ディスクやSSD(Solid State Drive)などを採用できる。なお、記憶部13は、必ずしも補助記憶装置として実装されずともよく、ネットワーク管理装置10における主記憶装置として実装することもできる。この場合、記憶部13には、各種の半導体メモリ素子、例えばRAM(Random Access Memory)やフラッシュメモリを採用できる。
記憶部13は、制御部15で実行されるプログラムに用いられるデータの一例として、操作履歴データ13aと、逆コマンドデータ13bとを記憶する。このように図2に示された操作履歴データ13a及び逆コマンドデータ13b以外にも、他の電子データを併せて記憶することもできる。
例えば、記憶部13には、ネットワーク管理装置10及び各ネットワーク装置30との間で互いが記憶する設定ファイル、例えば「running-config」や「startup-config」を比較することにより差分を抽出するために、各ネットワーク装置30に記憶された設定ファイルの複製を記憶することができる。また、記憶部13には、ネットワークの管理者等のユーザの権限を管理するために、ユーザごとにネットワークの設定を許可するネットワーク装置30またはネットワーク装置30のグループが規定されたユーザ権限データを記憶することができる。さらに、記憶部13には、ネットワークの設定コマンドからその逆コマンドを生成するために、設定コマンドのテンプレートを記憶することもできる。この他、記憶部13には、ネットワークNWのトポロジを管理するために、ネットワーク装置30に関するデバイスデータやネットワーク装置30が形成するリンクに関するリンクデータなどを記憶することもできる。
なお、ここでは、操作履歴データ13a及び逆コマンドデータ13bの説明については、操作履歴データ13a及び逆コマンドデータ13bが生成される処理部の説明がなされる段階で併せて説明することとする。
制御部15は、各種のプログラムや制御データを格納する内部メモリを有し、これらによって各種の処理を実行するものである。
一実施形態として、制御部15は、中央処理装置、いわゆるCPU(Central Processing Unit)として実装される。なお、制御部15は、必ずしも中央処理装置として実装されずともよく、MPU(Micro Processing Unit)として実装されることとしてもよい。また、制御部15は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などのハードワイヤードロジックによっても実現できる。
制御部15は、図示しない主記憶装置として実装されるDRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などのRAMのワークエリア上に記憶部13に記憶されたネットワーク管理プログラムを展開することにより、下記の処理部を仮想的に実現する。例えば、制御部15は、図2に示すように、第1受付部15aと、監視部15bと、設定部15cと、逆コマンド生成部15dと、ロールバック制御部15eと、出力制御部15fと、第2受付部15gとを有する。
第1受付部15aは、ネットワーク装置30に対する各種設定を受け付ける処理部である。
一実施形態として、第1受付部15aは、ネットワーク装置30に対する各種の設定をGUI(Graphical User Interface)を介して受け付けることができる。例えば、第1受付部15aは、物理ネットワークや仮想ネットワークのトポロジが可視化されたマップ上でネットワーク装置30の指定を受け付けた状態、例えばマウスオーバーがなされた状態で、ネットワーク設定を実施するGUIコンポーネントが操作された場合に、当該ネットワーク装置30に関する各種設定の新規登録や更新などの編集を受け付けることができる。ここで、第1受付部15aは、1つのネットワーク装置30に対する設定を個別に受け付けることもできるし、複数のネットワーク装置30、例えばグループ設定が行われたネットワーク装置30群に対する設定を一括して受け付けることもできる。かかる設定の例として、第1受付部15aは、VLAN(Virtual Local Area Network)やサブネットなどの設定を受け付けることができる。その後、第1受付部15aは、編集が受け付けられた内容を設定に反映する操作を受け付ける。以下では、設定の編集を受け付ける操作、さらには、編集が受け付けられた内容を設定に反映する操作を総称して「設定操作」と記載する場合がある。
監視部15bは、ネットワークNWを監視する処理部である。
一実施形態として、監視部15bは、あくまで一例として、第1受付部15aにより設定操作が受け付けられた場合、例えば1又は複数のネットワーク装置30に対する設定の新規登録または設定変更が実施される場合、次のような処理を実行する。
例えば、監視部15bは、設定操作が行われたネットワーク装置30から、起動時にNVRAM(Non Volatile RAM)等の不揮発性メモリから読み込まれる「startup-config」と、RAM上に展開されている「running-config」とを取得する。その上で、監視部15bは、設定操作が行われたネットワーク装置30から取得された「startup-config」及び「running-config」の2つの設定ファイルを比較することにより、2つの設定ファイルが一致するか否かを判定する。例えば、監視部15bは、2つの設定ファイルからdiffやハッシュ値を算出する処理を実行することにより、2つの設定ファイルの差分の有無を判定することができる。
ここで、「startup-config」及び「running-config」が一致しない場合、次のような状況を判断できる。例えば、ネットワークの管理者等がtelnetなどのプロトコルを介してネットワーク装置30に接続し、CLI(Command Line Interface)などを介して設定が行われた公算が高く、ネットワーク管理装置10、いわゆるSDNコントローラを介さずに「running-config」が更新された状況を推定できる。以下では、CLIを介して行われるコマンドによりネットワーク設定が行われることを「外部コマンド操作」と記載する場合がある。このように外部コマンド操作が行われた場合、ネットワーク装置30から取得された更新後の「running-config」と、記憶部13がネットワーク装置30の管理用に記憶する更新前の「running-config」との差分から、更新の内容に対応する設定コマンドを解釈できるとは限らず、逆コマンドも生成できるとは限らない。この場合、外部コマンド操作が行われる以前の操作へのロールバックが実行されると、ネットワークNWに不具合が発生する場合もある。よって、外部コマンド操作が行われる以前の操作へのロールバックを規制するために、外部コマンド操作が行われる以前に生成された逆コマンドは無効化される。
一方、監視部15bは、「startup-config」及び「running-config」が一致する場合、記憶部13に記憶された図示しないリンクデータを参照する。かかるリンクデータには、一例として、リンクがトポロジから削除されたか否かを示す削除フラグが含まれる。例えば、削除フラグが「false」であればリンクが削除されておらず、削除フラグが「true」であればリンクが削除されたことを判別できる。このようなリンクデータを参照して、監視部15bは、設定が編集されるネットワーク装置30を含むリンクに関する削除フラグに「false」が設定されているか否かを判定する。
このとき、設定が編集されるネットワーク装置30を含むリンクに関する削除フラグに「true」が設定されている場合、トポロジから削除されたリンクに含まれるネットワーク装置30の設定がロールバックされるのを規制するために、削除フラグに「true」が設定される以前に生成された逆コマンドは無効化される。
また、監視部15bは、設定が編集されるネットワーク装置30を含むリンクに関する削除フラグに「false」が設定されている場合、先にネットワーク装置30から取得された「startup-config」と、記憶部13がネットワーク装置30の管理用に記憶する「startup-config」とを比較する。例えば、監視部15bは、2つの「startup-config」の更新日時の一致または不一致を判定したり、2つの「startup-config」からdiffやハッシュ値を算出する処理を実行することにより2つの「startup-config」の差分の有無を判定したりすることができる。
この結果、2つの「startup-config」が一致しない場合、上記の外部コマンド操作が行われた公算が高いと判断できる。この場合にも、外部コマンド操作が行われる以前の操作へのロールバックを規制するために、外部コマンド操作が行われる以前に生成された逆コマンドは無効化される。
なお、ここでは、あくまで一例として、設定操作が行われた場合に、上記3つの判定、すなわちネットワーク装置30における2つの設定ファイルの比較、リンクの削除フラグの確認およびネットワーク装置30及びネットワーク管理装置10間の「startup-config」の比較を行う場合を例示したが、これに限定されない。すなわち、監視部15bは、時間に関する条件にしたがって各ネットワーク装置30ごとに上記3つの判定を実施することができる。例えば、監視部15bは、前回に判定を行ってから所定の期間、例えば1分間が経過した場合、ネットワーク管理装置10が保持するシステム時刻が所定の定期時刻に到達する場合、上記3つの判定を実施することができる。この他、監視部15bは、ロールバックが指示された場合にも、ロールバック処理を実行する前に上記3つの判定を実施することもできる。
設定部15cは、ネットワーク装置30に対する各種設定を行う処理部である。
一実施形態として、設定部15cは、第1受付部15aにより編集が受け付けられた内容に関する設定コマンドをネットワーク装置30へ送信する。これによって、第1受付部15aにより編集が受け付けられた内容がネットワーク装置30に記憶された「running-config」へ登録される結果、ネットワーク装置30の設定が更新される。そして、設定部15cは、ネットワーク装置30から更新後の「startup-config」または「startup-config」の更新日時を取得し、記憶部13がネットワーク装置30の管理用に記憶する「startup-config」または「startup-config」の更新日時を上書き更新する。
ここで、設定部15cは、ネットワーク装置30の設定が更新された場合、記憶部13がロールバック用に記憶する操作履歴データ13aを更新する。かかる操作履歴データ13aには、「操作No.」、「ユーザ名」、「デバイスグループ名」、「機能種別」、「変更日時」、「内容」、「フラグ1」、「フラグ2」及び「フラグ3」などの項目の一部または全部を含むデータを採用できる。ここで言う「操作No.」とは、設定操作を識別する番号を指し、例えば、最新に行われた設定操作から昇順に連番が採番される。また、「ユーザ名」とは、設定操作を行ったユーザの名称を指す。また、「デバイスグループ名」とは、設定操作が行われたネットワーク装置30のグループの名称を指す。また、「変更日時」とは、設定操作により設定が変更された日時を指し、例えば、「yyyy/mm/dd hh/mm/ss」などで表される。また、「設定操作内容」とは、設定操作の内容を指す。また、「フラグ1」は、設定操作が行われた後に当該設定操作が行われたネットワーク装置30に外部コマンド操作が行われたか否かを示すフラグを指し、例えば、フラグ1が「false」に設定されている場合には外部コマンド操作が行われておらず、フラグ1が「true」に設定されている場合には外部コマンド操作が行われていることを意味する。また、「フラグ2」は、設定操作が行われた後に当該設定操作が行われたネットワーク装置30を含むリンクが削除または編集されたか否かを示すフラグを指し、例えば、フラグ2が「false」に設定されている場合にはリンクの編集または削除が行われておらず、フラグ2が「true」に設定されている場合にはリンクの編集または削除が行われていることを意味する。また、「フラグ3」は、設定操作のロールバック処理にエラーが発生したか否かを示すフラグを指し、例えば、フラグ3が「false」に設定されている場合には設定操作に対するロールバック処理時が実行されておらず、フラグ3が「true」に設定されている場合にはロールバック処理時にエラーが発生したことを意味する。
例えば、設定部15cは、ネットワーク装置30から取得された「startup-config」及び「running-config」が一致し、ネットワーク装置30を含むリンクの削除フラグに「false」が設定されており、かつネットワーク管理装置10及びネットワーク装置30の間で「startup-config」が一致する場合、第1受付部15aを介して受け付けた設定操作に関するレコードを記憶部13に記憶された操作履歴データ13aに追加登録する。このとき、設定部15cは、最新の設定操作から所定数、例えば20操作までの履歴に関するレコードを操作履歴データ13aとして記憶部13に保持させ、それ以前の設定操作に関するレコードを記憶部13から削除することもできる。
また、設定部15cは、監視部15bにより外部コマンド操作が検出された場合、すなわちネットワーク装置30から取得された「startup-config」及び「running-config」が一致しない場合、あるいはネットワーク管理装置10及びネットワーク装置30の間で「startup-config」が一致しない場合、次のような処理を実行する。すなわち、設定部15cは、記憶部13に記憶された操作履歴データ13aのうち外部コマンド操作が検出されたネットワーク装置30のデバイス名を設定操作内容のフィールドに含み、かつ外部コマンド操作が検出された時点以前のレコードを検索する。その上で、設定部15cは、当該検索がヒットした全てのレコードが持つフラグ1に「true」を設定する。これによって、フラグ1に「true」が設定されたレコードに関する設定操作のロールバックが規制される。
また、設定部15cは、ネットワーク装置30を含むリンクの削除フラグに「true」が設定されている場合、記憶部13に記憶された操作履歴データ13aのうちリンクの削除が検出されたネットワーク装置30のデバイス名を設定操作内容のフィールドに含み、かつリンクの削除が検出された以前のレコードを検索する。その上で、設定部15cは、当該検索がヒットした全てのレコードが持つフラグ2に「true」を設定する。これによって、フラグ2に「true」が設定されたレコードに関する設定操作のロールバックが規制される。
逆コマンド生成部15dは、逆コマンドを生成する処理部である。
一実施形態として、逆コマンド生成部15dは、ネットワーク装置30から取得された「startup-config」及び「running-config」が一致し、ネットワーク装置30を含むリンクの削除フラグに「false」が設定されており、かつネットワーク管理装置10及びネットワーク装置30の間で「startup-config」が一致する場合、逆コマンドを生成する。例えば、逆コマンド生成部15dは、ネットワーク装置30から更新後の「running-config」を取得した上で更新前後の「running-config」を比較することにより、2つの「running-config」の差分を抽出する。続いて、逆コマンド生成部15dは、2つの「running-config」の差分から設定操作が設定値の変更であるか否かを判定する。そして、逆コマンド生成部15dは、設定操作が設定値の変更である場合、次のようにして逆コマンドを生成する。すなわち、逆コマンド生成部15dは、当該設定操作が行われたネットワーク装置30ごとに「running-config」に含まれる項目のうち差分が抽出された項目の設定値を当該設定操作前の設定値へ変更する逆コマンドを生成する。また、逆コマンド生成部15dは、設定操作が設定値の変更でない場合、2つの「running-config」の差分から設定操作が初期値、例えばエンプティ等からの変更、すなわち新規登録であるか否かを判定する。このとき、逆コマンド生成部15dは、設定操作が新規登録である場合、次のようにして逆コマンドを生成する。すなわち、逆コマンド生成部15dは、当該設定操作が行われたネットワーク装置30ごとに「running-config」に含まれる項目のうち差分が抽出された項目の設定値を削除する逆コマンドを生成する。なお、初期値がNULL値である場合には、差分が抽出された項目の設定値を初期値、すなわちNULL値へ変更する逆コマンドを生成することとすればよい。さらに、逆コマンド生成部15dは、設定操作が設定値の変更でも新規登録でもない場合、2つの「running-config」の差分から設定操作が削除であるか否かを判定する。このとき、逆コマンド生成部15dは、設定操作が設定値の削除である場合、次のようにして逆コマンドを生成する。すなわち、逆コマンド生成部15dは、当該設定操作が行われたネットワーク装置30ごとに「running-config」に含まれる項目のうち差分が抽出された項目の設定値を当該削除操作前の設定値で新規登録する逆コマンドを生成する。このように生成された逆コマンドは、操作履歴データ13aのフィールド「操作No.」の値と関連付けられた状態で記憶部13に記憶された逆コマンドデータ13bへ追加登録される。
図3は、逆コマンドの生成の一例を示す図である。図3には、デバイスAのVLAN設定が行われた例が示されている。図3に示すデバイスAの例では、操作1によりVLAN IDを設定a0から設定a1へ変更する更新、すなわちVLAN IDを「10」から「100」へ変更する更新が行われている。この場合、VLAN IDの設定値を「10」に変更する逆コマンドが生成される。さらに、操作2によりVLAN IDを設定a1から設定a2へ変更する更新、すなわちVLAN IDを「100」から「200」へ変更する更新が行われている。この場合、VLAN IDの設定値を「100」に変更する逆コマンドが生成される。さらに、操作3によりVLAN IDを設定a2から設定a3へ変更する更新、すなわちVLAN IDを「200」から「300」へ変更する更新が行われている。この場合、VLAN IDの設定値を「200」に変更する逆コマンドが生成される。
一方、逆コマンド生成部15dは、ネットワーク装置30から取得された「startup-config」及び「running-config」が一致しない場合、ネットワーク装置30を含むリンクの削除フラグに「true」が設定されている場合、あるいはネットワーク管理装置10及びネットワーク装置30の間で「startup-config」が一致しない場合、当該ネットワーク装置30に関する逆コマンドを無効化する。例えば、逆コマンド生成部15dは、記憶部13に記憶された逆コマンドデータ13bのうち外部コマンド操作が検出されたネットワーク装置30またはリンクの削除が検出されたネットワーク装置30に関する逆コマンドを削除する。
ロールバック制御部15eは、ロールバック処理の制御を行う処理部である。
一実施形態として、ロールバック制御部15eは、クライアント端末50からロールバックの対象とされる設定操作の一覧を含むロールバック一覧画面の閲覧要求を受け付けた場合、記憶部13に記憶された操作履歴データ13aを読み出す。続いて、ロールバック制御部15eは、操作履歴データ13aに含まれるレコードのうちレコードを1つ選択する。例えば、ロールバック制御部15eは、最新の設定操作に関するレコードから順にレコードを1つずつ選択することができる。
続いて、ロールバック制御部15eは、先に選択された操作履歴データ13aのレコードが持つロールバックエラーのフラグ3に「false」が設定されているか否かを判定する。このとき、ロールバックエラーのフラグ3に「true」が設定されている場合、先に選択されたレコードに対応する設定操作のロールバック処理が過去に実施されているものの、その結果がエラーであったことがわかる。この場合、ロールバック制御部15eは、当該レコードに関するロールバックのステータスに「ロールバックエラー」を割り当てる。
一方、ロールバック制御部15eは、ロールバックエラーのフラグ3に「false」が設定されている場合、先に選択された操作履歴データ13aのレコードに対応する設定操作がユーザ権限の範囲内か否かをさらに判定する。例えば、ロールバック制御部15eは、記憶部13に記憶されたユーザ権限データのうち、ロールバック一覧画面の閲覧要求を行うクライアント端末50がネットワーク管理システム1にログイン認証に成功したアカウントのユーザ名に対応するユーザ権限を特定する。その上で、ロールバック制御部15eは、先に選択された操作履歴データ13aのレコードに含まれるフィールド「デバイスグループ名」が先に特定されたユーザ権限の範囲内であるか否かを判定する。このとき、設定操作がユーザ権限の範囲外である場合、ロールバック制御部15eは、先に選択された操作履歴データ13aのレコードに関するロールバックのステータスに「ロールバック不可」を割り当てる。
また、ロールバック制御部15eは、設定操作がユーザ権限の範囲内である場合、先に選択された操作履歴データ13aのレコードが持つ外部コマンド操作のフラグ1に「false」が設定されているか否かをさらに判定する。このとき、外部コマンド操作のフラグ1に「true」が設定されている場合、当該レコードに対応する設定操作が行われた後に外部コマンド操作が実施されていることがわかる。この場合、ロールバック制御部15eは、当該レコードに関するロールバックのステータスに「ロールバック不可」を割り当てる。
また、ロールバック制御部15eは、外部コマンド操作のフラグ1に「false」が設定されている場合、次のような処理をさらに実行する。すなわち、ロールバック制御部15eは、記憶部13に記憶された図示しないデバイスデータに含まれるネットワーク装置30のうち、先に選択された操作履歴データ13aのレコードが持つフィールド「設定操作内容」に含まれるネットワーク装置30の削除フラグに「false」が設定されているか否かを判定する。このとき、ネットワーク装置30の削除フラグに「true」が設定されている場合、当該レコードに対応する設定操作が行われた後にネットワーク装置30に関するデータがデバイスデータから削除されていることがわかる。この場合、ロールバック制御部15eは、当該レコードに関するロールバックのステータスに「ロールバック不可」を割り当てる。
また、ロールバック制御部15eは、ネットワーク装置30の削除フラグに「false」が設定されている場合、先に選択された操作履歴データ13aのレコードが持つリンクの編集・削除のフラグ2に「false」が設定されているか否かをさらに判定する。このとき、リンクの編集・削除のフラグ2に「true」が設定されている場合、当該レコードに対応する設定操作が行われた後にネットワーク装置30を含むリンクがトポロジから削除されていることがわかる。この場合、ロールバック制御部15eは、当該レコードに関するロールバックのステータスに「ロールバック不可」を割り当てる。
また、ロールバック制御部15eは、リンクの編集・削除のフラグ2に「false」が設定されている場合、先に選択された操作履歴データ13aのレコードが持つフィールド「設定操作内容」に含まれるネットワーク装置30ごとに、ロールバック一覧画面の閲覧要求を受け付けた時点から遡って最初の設定操作、すなわち最新の設定操作であるかをさらに判定する。このとき、全てのネットワーク装置30において最新の設定操作である場合、ロールバック処理の実行に支障がない公算が高いことを判断できる。この場合、ロールバック制御部15eは、当該レコードに関するロールバックのステータスに「ロールバック可」を割り当てる。一方、いずれかのネットワーク装置30において最新の設定操作でない場合、先に選択された操作履歴データ13aのレコードに対応する設定操作よりも前に行われた設定操作の中でもフィールド「設定操作内容」に含まれるネットワーク装置30よりも先に行われた関連の設定操作に関するロールバック処理が実行されることを条件に、先に選択された操作履歴データ13aのレコードに対応する設定操作のロールバックを許可してもよいことがわかる。この場合、ロールバック制御部15eは、当該レコードに関するロールバックのステータスに「ロールバック待ち」を割り当てる。
このように操作履歴データ13aに含まれるレコードに対応する設定操作ごとに当該設定操作が「ロールバック可」、「ロールバック待ち」、「ロールバック不可」または「ロールバックエラー」のいずれかに分類されることになる。
出力制御部15fは、クライアント端末50に対する出力制御を行う処理部である。
一実施形態として、出力制御部15fは、ロールバック制御部15eにより設定操作ごとに割り当てられたロールバックのステータスにしたがってロールバック一覧画面をクライアント端末50に表示させる。例えば、出力制御部15fは、操作履歴データ13aに含まれる各レコードが持つフィールド「操作No.」が小さい順に各レコードが持つフィールの情報の一部又は全部を登載すると共に、各レコードに割り当てられたロールバックのステータス「ロールバック可」、「ロールバック待ち」、「ロールバック不可」または「ロールバックエラー」に対応するアイコン等のマークを対応付けることにより、ロールバック一覧画面の表示用データを生成する。このように生成された表示用データを用いて、出力制御部15fは、ロールバック一覧画面をクライアント端末50に表示させる。
第2受付部15gは、ロールバック指示を受け付ける処理部である。
一実施形態として、第2受付部15gは、出力制御部15fによりロールバック一覧画面がクライアント端末50に表示された状態でロールバック指示を受け付ける。具体的には、第2受付部15gは、ロールバック一覧画面に含まれるレコードの一覧の中からいずれかのレコードを選択することにより、ロールバック処理を実行する設定操作の指定を受け付ける。例えば、ロールバックのステータスとして「ロールバック可」が割り当てられたレコードが選択された場合、ロールバック処理の実行指示を受け付けるGUIコンポーネント、例えば実行ボタンがアクティブな状態で出力制御部15fにより表示される。また、ロールバックのステータスとして「ロールバック待ち」が割り当てられたレコードが選択された場合、出力制御部15fにより次のような表示が行われる。すなわち、当該選択されたレコードに対応する設定操作よりも前に行われた設定操作であり、かつ当該選択されたレコードが持つフィールド「設定操作内容」に含まれるネットワーク装置30に関する設定操作が先に行われた関連の設定操作に対応するレコードが他のレコードの表示形態と異なる区別可能な表示形態、例えば文字や塗り潰しの表示色の変更、「関連ロールバック」等のアイコンの表示、あるいは網掛け等の強調表示で表示されると共に、ロールバック処理の実行指示を受け付けるGUIコンポーネントが非アクティブな状態で表示される。また、ロールバックのステータスとして「ロールバック不可」が割り当てられたレコードが選択された場合、ロールバック処理の実行指示を受け付けるGUIコンポーネントが非アクティブな状態で表示される。
このように設定操作の指定が受け付けられた状態で、第2受付部15gは、上記のGUIコンポーネントを介して、ロールバック処理の実行指示をさらに受け付ける。ここで、GUIコンポーネントが操作された場合、GUIコンポーネントがアクティブな状態であれば、当該指定が受け付けられた設定操作に対応する逆コマンドを実行することにより、設定操作をロールバックするロールバック処理がロールバック制御部15eにより実施される。このようにロールバック処理が実行された場合、当該ロールバック処理により設定が更新された後の「startup-config」をロールバック処理が実行された各ネットワーク装置30から取得した上で記憶部13がネットワーク装置30の管理用に記憶する「startup-config」または「startup-config」の更新日時が上書き更新される。これと共に、当該ロールバック処理が実行された設定操作に対応するレコードが操作履歴データ13aから削除される。一方、GUIコンポーネントがアクティブな状態でなければ、当該指定が受け付けられた設定操作をロールバックするロールバック処理は規制される。
[ロールバック制御の具体例]
図4〜図9を用いて、ロールバック制御の具体例について説明する。図4は、操作履歴データ13aの一例を示す図である。図5は、設定操作および設定内容の時系列を示す模式図である。図6〜図9は、ロールバック一覧画面の一例を示す図である。
図4には、操作1〜操作7の計7個の設定操作に関するレコードが示されている。ここでは、説明の便宜上、7つのレコードを抜粋して例示したが、ロールバック一覧画面に表示されるレコード数はこれに限定されない。図4に示す操作履歴データ13aの場合、各設定操作とその設定操作の内容は図5に示す模式図の通りとなる。なお、図4及び図5に示すデバイスA、デバイスB及びデバイスCには、次のようなグループ設定がなされているものとする。すなわち、図5に示すように、グループAには、デバイスAが含まれ、グループBには、デバイスBが含まれると共に、グループCには、デバイスCが含まれる。また、グループZには、デバイスA及びデバイスBが含まれる。さらに、グループXには、デバイスA、デバイスB及びデバイスCが含まれる。
図5に示す操作7では、デバイスAのVLAN IDを「初期値」から「2」へ新規登録することにより、デバイスAの設定ファイルが初期状態の「a0」から「a1」へ更新されたことを意味する。そして、図5に示す操作6では、デバイスAのルーティングのデフォルトルートが変更されることにより、デバイスAの設定ファイルが「a1」から「a2」へ更新されたことを意味する。その後、図5に示す操作5では、デバイスA、デバイスB及びデバイスCのVLAN IDが一括設定されている。すなわち、デバイスAのVLAN IDを「2」から「3」へ更新することにより、デバイスAの設定ファイルが「a2」から「a3」へ更新されたことを意味する。これと共に、デバイスBのVLAN IDを「初期値」から「3」へ新規登録することにより、デバイスBの設定ファイルが初期状態の「b0」から「b1」へ更新されたことを意味する。さらに、デバイスCのVLAN IDを「初期値」から「3」へ新規登録することにより、デバイスCの設定ファイルが初期状態の「c0」から「c1」へ更新されたことを意味する。
続いて、図5に示す操作4では、デバイスA及びデバイスBのVLAN IDが一括設定されている。すなわち、デバイスAのVLAN IDを「3」から「4」へ更新することにより、デバイスAの設定ファイルが「a3」から「a4」へ更新されたことを意味する。これと共に、デバイスBのVLAN IDを「3」から「4」へ更新することにより、デバイスBの設定ファイルが「b1」から「b2」へ更新されたことを意味する。そして、図5に示す操作3では、デバイスBのVLAN IDを「4」から「5」へ更新することにより、デバイスBの設定ファイルが「b2」から「b3」へ更新されたことを意味する。続いて、図5に示す操作2では、デバイスAのVLAN IDを「4」から「6」へ更新することにより、デバイスAの設定ファイルが「a4」から「a5」へ更新されたことを意味する。さらに、図5に示す操作1では、デバイスAのVLAN IDを「6」から「7」へ更新することにより、デバイスAの設定ファイルが「a5」から「a6」へ更新されたことを意味する。
ここで、図4に示す操作1及び操作3に対応するレコードが「ロールバック可」に分類されると共に、図4に示す操作1及び操作3に対応するレコード以外のレコードが「ロールバック待ち」に分類される。なぜなら、各レコードのフラグ1〜フラグ3には「true」が設定されておらず、かつ操作1及び操作3に対応するレコード以外のレコードには、フィールド「設定操作内容」に含まれるデバイスの中に先に設定操作が行われたデバイスが存在するからである。
このような設定操作の履歴の下、全体管理者権限を持つユーザ、すなわち図4に示したユーザの中では全体管理者3及び全体管理者4などの場合、図6に示すロールバック一覧画面がクライアント端末50に表示される。図6の上段には、一覧の中のレコードが未選択の状態である場合のロールバック一覧画面600が示されていると共に、図6の下段には、一覧の中のレコードのうち操作5に対応するレコードが選択された状態である場合のロールバック一覧画面620が示されている。
図6に示すロールバック一覧画面600の通り、全体管理者3及び全体管理者4は、全てのデバイスに対する設定操作を行う権限を有するので、図4に示した操作履歴データ13aに含まれる全てのレコードが表示される。そして、ロールバック処理を実行する設定操作が指定されていない状態では、操作1及び操作3に対応するレコードには、当該レコードのロールバックに関するステータスが「ロールバック可」であることを示すアイコンが対応付けて表示される。この段階では、ロールバック処理の実行指示を受け付ける実行ボタン610は非アクティブな状態で表示される。仮に操作1及び操作3に対応するレコードが選択された場合、当該実行ボタン610の状態がアクティブに切り替わる。
このとき、一覧の中のレコードのうち操作5に対応するレコードが選択された場合、クライアント端末50の表示は、図6の上段に示すロールバック一覧画面600から図6の下段に示すロールバック一覧画面620へ遷移する。図6に示すロールバック一覧画面620の通り、選択が行われた操作5に対応するレコードが他のレコードの表示形態とは異なる表示形態、図中では一番濃いハッチングで表示される。さらに、選択が行われた操作5よりも前に行われた設定操作であり、かつ操作5に対応するレコードが持つフィールド「設定操作内容」に含まれるデバイスA、デバイスBまたはデバイスCに関する設定操作が先に行われた関連の操作1〜4に対応するレコードが他のレコードの表示形態と異なる区別可能な表示形態、例えば2番目に濃いハッチングで表示される。このとき、関連の操作1〜4に対応するレコードのうち、現状でロールバックが可能である操作1及び操作3に対応するレコードには、「ロールバック可」であることを示すアイコンが対応付けて表示される。また、「ロールバック待ち」に分類された操作2及び操作4に対応するレコードには、同様に「ロールバック待ち」に分類された操作5に対応するレコードと共に「関連ロールバック」であることを示すアイコンが対応付けて表示される。この場合、関連の操作1〜4のロールバックが実行されなければ、操作5のロールバックは実行できないので、実行ボタン630は非アクティブな状態で表示される。かかるロールバック一覧画面620によれば、操作5のロールバックの前に行った方がよい操作1〜4のロールバックが一目で把握できる。
また、デバイスグループ管理者権限を持つユーザ、すなわち図4に示したユーザの中ではGrpA管理者5の場合、図7に示すロールバック一覧画面がクライアント端末50に表示される。図7の上段には、一覧の中のレコードが未選択の状態である場合のロールバック一覧画面700が示されている。図7の中段には、一覧の中のレコードのうち操作4に対応するレコードが選択された状態である場合のロールバック一覧画面720が示されている一方で、図7の下段には、ロールバック一覧画面720上で操作1及び操作2のロールバックが実行された場合のロールバック一覧画面740が示されている。なお、図7では、図4に示した操作履歴データ13aとの対応を明記する観点から図4に示した操作履歴データ13aの「操作No.」と、図7に示すロールバック一覧画面700、720及び740の「操作No.」との対応関係を一致させた例を示したが、ユーザ権限またはロールバックの実行により欠番が発生した場合には一覧の上から昇順に採番し直すこともできるのは言うまでもない。
図7に示すロールバック一覧画面700の通り、GrpA管理者5は、デバイスAに対する設定操作を行う権限しか持たない。このため、GrpA管理者5には、図4に示した操作履歴データ13aに含まれる全てのレコードが表示される訳ではない。具体的には、操作3に対応するレコードは、デバイスBに対する設定操作であり、GrpA管理者5のユーザ権限の範疇であるデバイスAが含まれないので、一覧上に表示されない。さらに、一覧上の操作4及び操作5には、GrpA管理者5のユーザ権限の範囲外のデバイスB、デバイスCに対する設定操作も含まれるので、どういう操作を行ったかは公開されず、設定操作内容には非公開のマーク「−」が表示される。さらに、操作4及び操作5は、操作4及び操作5を全体管理者にロールバックしてもらうことができるので、「ロールバック不可」のアイコンは付与されない。
このようにロールバック処理を実行する設定操作が指定されていない状態では、操作1に対応するレコードには、当該レコードのロールバックに関するステータスが「ロールバック可」であることを示すアイコンが対応付けて表示される。この段階では、ロールバック処理の実行指示を受け付ける実行ボタン710は非アクティブな状態で表示される。仮に操作1に対応するレコードが選択された場合、当該実行ボタン710の状態がアクティブに切り替わる。
このとき、一覧の中のレコードのうち操作4に対応するレコードが選択された場合、クライアント端末50の表示は、図7の上段に示すロールバック一覧画面700から図7の中段に示すロールバック一覧画面720へ遷移する。図7に示すロールバック一覧画面720の通り、選択が行われた操作4に対応するレコードが他のレコードの表示形態とは異なる表示形態、図中では一番濃いハッチングで表示される。さらに、選択が行われた操作4よりも前に行われた設定操作であり、かつ操作4に対応するレコードが持つフィールド「設定操作内容」に含まれるデバイスAまたはデバイスBに関する設定操作が先に行われた関連の操作1〜2に対応するレコードが他のレコードの表示形態と異なる区別可能な表示形態、例えば2番目に濃いハッチングで表示される。このとき、関連の操作1及び操作2に対応するレコードのうち、現状でロールバックが可能である操作1に対応するレコードには、「ロールバック可」であることを示すアイコンが対応付けて表示される。また、「ロールバック待ち」に分類された操作2に対応するレコードには、同様に「ロールバック待ち」に分類された操作4に対応するレコードと共に「関連ロールバック」であることを示すアイコンが対応付けて表示される。この場合、関連の操作1〜2のロールバックが実行されなければ、操作4のロールバックは実行できないので、実行ボタン730は非アクティブな状態で表示される。かかるロールバック一覧画面720によれば、操作4のロールバックの前に行った方がよい操作1〜2のロールバックが一目で把握できる。
そして、ロールバック一覧画面720上で操作1及び操作2のロールバックが実行された場合、クライアント端末50の表示は、図7の中段に示すロールバック一覧画面720から図7の下段に示すロールバック一覧画面740へ遷移する。図7に示すロールバック一覧画面740の通り、ロールバックが実行済みである操作1及び操作2が一覧から削除されると共に、その後に選択が行われた操作4に対応するレコードが他のレコードの表示形態とは異なる表示形態、図中では一番濃いハッチングで表示される。さらに、選択が行われた操作4は、GrpA管理者5のユーザ権限の範囲外であるデバイスBのロールバックが条件となるので、実行ボタン750は非アクティブな状態で表示される。この場合、GrpA管理者5は、GrpZ管理者1、全体管理者3または全体管理者4に、ロールバック実行を依頼することになる。
続いて、ロールバック不可の場合の表示について説明する。例えば、操作2及び操作3の間の期間、例えば2015年の5月10日に、デバイスAに接続されているリンクが変更または削除された場合を想定する。この場合、図4に示した操作履歴データ13aに含まれるフラグ2のカラムのうち操作4〜操作7のカラムには「true」が設定されることになる。これら操作4〜操作7をロールバックしてしまうとネットワークNW全体としての整合性が取れなくなってしまう可能性が高い。このため、図8の上段に示すロールバック一覧画面800が表示される。なお、図8に示すロールバック一覧画面800、820、840には、全体管理者権限を持つユーザへの表示が示されていることとする。
図8に示すロールバック一覧画面800では、操作4〜操作7に対応するレコードには、各レコードのロールバックに関するステータスが「ロールバック不可」であることを示すアイコンが対応付けて表示される。一方、操作1及び操作2は、デバイスAのリンクが変更された後にVLAN設定が行われたので、ロールバックしてもネットワーク構成全体としての整合性は取れる可能性が高い。よって、操作1および操作2は、ロールバック不可とはされない。すなわち、操作1に対応するレコードには、ロールバックに関するステータスが「ロールバック可」であることを示すアイコンが対応付けて表示されると共に、操作2に対応するレコードは、「ロールバック待ち」に分類されているので、いずれのレコードも選択されていない現状ではアイコンが付与されずに無印で表示される。なお、例えば、操作2に対応するレコードが選択された場合、操作2に対応するレコードには、ロールバックに関するステータスが「ロールバック待ち」であることを示すアイコンを対応付けて表示することもできる。加えて、操作3は、リンクを変更したデバイスAとは関係のないデバイスBに対する操作であるので、「ロールバック不可」とはされず、ロールバックに関するステータスが「ロールバック可」であることを示すアイコンが対応付けて表示される。このような状況の下、ロールバック不可のレコードが選択されたとしても、実行ボタン810の状態は非アクティブで表示される。
次に、操作1の後に、デバイスAがトポロジから削除された場合を想定する。この場合、図8の中段に示すロールバック一覧画面820が表示される。図8に示すロールバック一覧画面820では、フィールド「設定操作内容」にデバイスAが含まれる操作1、2、4〜7に対応するレコードには、各レコードのロールバックに関するステータスが「ロールバック不可」であることを示すアイコンが対応付けて表示される。このため、デバイスAに対して行った操作のロールバックは一切できない状態となる。一方、操作3は、トポロジから削除されたデバイスAとは関係のないデバイスBに対する操作であるので、「ロールバック不可」とはされず、ロールバックに関するステータスが「ロールバック可」であることを示すアイコンが対応付けて表示される。このような状況の下、ロールバック不可のレコードが選択されたとしても、実行ボタン830の状態は非アクティブで表示される。
次に、操作2及び操作3の間の期間、例えば2015年の5月10日に、デバイスAに外部コマンド操作が実行された場合を想定する。この場合、図4に示した操作履歴データ13aに含まれるフラグ1のカラムのうち操作4〜操作7のカラムには「true」が設定されることになる。これら操作4〜操作7をロールバックしてしまうと、外部コマンド操作が行われた日時以前の操作4〜操作7に、SDNコントローラが把握可能な範囲で設定を戻すこともできなくはないが、ネットワークNW全体としての整合性が取れなくなってしまう可能性があるので、敢えて操作4〜操作7は「ロールバック不可」とされる。この結果、図8の下段に示すロールバック一覧画面840が表示される。
図8に示すロールバック一覧画面840では、操作4〜操作7に対応するレコードには、各レコードのロールバックに関するステータスが「ロールバック不可」であることを示すアイコンが対応付けて表示される。一方、操作1及び操作2は、デバイスAのリンクが変更された後にVLAN設定が行われたので、ロールバックしてもネットワーク構成全体としての整合性は取れる可能性が高い。よって、操作1および操作2は、ロールバック不可とはされない。すなわち、操作1に対応するレコードには、ロールバックに関するステータスが「ロールバック可」であることを示すアイコンが対応付けて表示されると共に、操作2に対応するレコードは、「ロールバック待ち」に分類されているので、いずれのレコードも選択されていない現状ではアイコンが付与されずに無印で表示される。なお、例えば、操作2に対応するレコードが選択された場合、操作2に対応するレコードには、ロールバックに関するステータスが「ロールバック待ち」であることを示すアイコンを対応付けて表示することもできる。加えて、操作3は、外部コマンド操作が行われたデバイスAとは関係のないデバイスBに対する操作であるので、「ロールバック不可」とはされず、ロールバックに関するステータスが「ロールバック可」であることを示すアイコンが対応付けて表示される。このような状況の下、ロールバック不可のレコードが選択されたとしても、実行ボタン850の状態は非アクティブで表示される。
続いて、ロールバックエラーの場合の表示について説明する。例えば、操作3のロールバックを実行したが、デバイスBの電源が落ちていた等の原因により失敗したケースを想定する。この場合、図4に示した操作履歴データ13aに含まれるフラグ3のカラムのうち操作3のカラムには「true」が設定されることになる。この場合、図9に示すロールバック一覧画面900が表示される。図9に示すロールバック一覧画面900では、図6に示したロールバック一覧画面600と比べて、操作3に対応するレコードの表示が異なる。すなわち、操作3に対応するレコードには、ロールバックに関するステータスが「ロールバックエラー」であることを示すアイコンが対応付けて表示される。これは、操作3は元々「ロールバック可」であったので、ユーザがロールバックを実行したが、結果としてロールバックが失敗してしまったことを表す。この場合、ロールバック失敗の原因が、デバイスBの電源断やネットワーク断など、一時的な要因であれば再度実行して成功する可能性がある。このため、再度、操作3に対応するレコードを選択して実行することが可能である。すなわち、ロールバックエラー状態の操作3に対応するレコードが選択された場合、実行ボタン910の状態はアクティブに切り替わる。このような状況の下、例えば、操作4に対応するレコードが選択されると、操作1、操作2、操作3の順番にロールバックするように、関連ロールバックのアイコンが操作1、操作2、操作3の各レコードに対応付けて表示される。
[処理の流れ]
次に、本実施例に係るネットワーク管理装置10の処理の流れについて説明する。なお、ここでは、ネットワーク管理装置10が実行する(1)逆コマンド生成処理を説明した後に、(2)ロールバック処理について説明することとする。
(1)逆コマンド生成処理
図10は、実施例1に係る逆コマンド生成処理の手順を示すフローチャートである。この処理は、一例として、第1受付部15aにより設定の編集が受け付けられた場合に開始される。図10に示すように、第1受付部15aにより設定操作が受け付けられると(ステップS101)、例えば、監視部15bは、ステップS101で設定操作が行われたネットワーク装置30から「startup-config」及び「running-config」を取得する(ステップS102)。
その上で、監視部15bは、ステップS102で取得された「startup-config」及び「running-config」の2つの設定ファイルを比較することにより、2つの設定ファイルが一致するか否かを判定する(ステップS103)。
ここで、「startup-config」及び「running-config」が一致しない場合(ステップS103No)、設定部15cは、ステップS101で編集が受け付けられた内容に関する設定コマンドをネットワーク装置30へ送信することによりネットワーク装置30の設定を更新する(ステップS111)。この場合、設定部15cは、記憶部13に記憶された逆コマンドデータ13bのうち外部コマンド操作が検出されたネットワーク装置30に関する操作履歴レコードのフラグ1を「true」に設定することにより無効化する(ステップS112)。
一方、「startup-config」及び「running-config」が一致する場合(ステップS103Yes)、監視部15bは、記憶部13に記憶された図示しないリンクデータを参照して、ステップS101で設定の編集が受け付けられたネットワーク装置30を含むリンクに関する削除フラグに「false」が設定されているか否かを判定する(ステップS104)。
このとき、リンクに関する削除フラグに「true」が設定されている場合(ステップS104No)、設定部15cは、ステップS101で編集が受け付けられた内容に関する設定コマンドをネットワーク装置30へ送信することによりネットワーク装置30の設定を更新する(ステップS111)。この場合も、設定部15cは、記憶部13に記憶された逆コマンドデータ13bのうちリンクの削除が検出されたネットワーク装置30に関する操作履歴レコードのフラグ2を「true」に設定することにより無効化する(ステップS112)。
一方、リンクに関する削除フラグに「false」が設定されている場合(ステップS104Yes)、監視部15bは、ステップS102でネットワーク装置30から取得された「startup-config」と、記憶部13がネットワーク装置30の管理用に記憶する「startup-config」とを比較する(ステップS105)。
ここで、2つの「startup-config」が一致しない場合(ステップS105No)、上記の外部コマンド操作が行われた公算が高いと判断できる。この場合、設定部15cは、ステップS101で編集が受け付けられた内容に関する設定コマンドをネットワーク装置30へ送信することによりネットワーク装置30の設定を更新する(ステップS111)。この場合にも、設定部15cは、記憶部13に記憶された逆コマンドデータ13bのうち外部コマンド操作が検出されたネットワーク装置30に関する操作履歴レコードのフラグ1を「true」に設定することにより無効化する(ステップS112)。
一方、ネットワーク管理装置10及びネットワーク装置30の間で「startup-config」が一致する場合(ステップS105Yes)、設定部15cは、ステップS101で編集が受け付けられた内容に関する設定コマンドをネットワーク装置30へ送信することによりネットワーク装置30の設定を更新する(ステップS106)。
その後、逆コマンド生成部15dは、ネットワーク装置30から更新後の「running-config」を取得した上で更新前後の「running-config」を比較することにより、2つの「running-config」の差分を抽出する(ステップS107)。
続いて、逆コマンド生成部15dは、2つの「running-config」の差分から設定操作が設定値の変更であるか否かを判定する(ステップS108)。そして、設定操作が設定値の変更である場合(ステップS108Yes)、逆コマンド生成部15dは、次のようにして逆コマンドを生成する。すなわち、逆コマンド生成部15dは、当該設定操作が行われたネットワーク装置30ごとに「running-config」に含まれる項目のうち差分が抽出された項目の設定値を当該設定操作前の設定値へ変更する逆コマンドを生成する(ステップS109)。
また、設定操作が設定値の変更でない場合(ステップS108No)、逆コマンド生成部15dは、2つの「running-config」の差分から設定操作が新規登録であるか否かを判定する(ステップS110)。そして、設定操作が新規登録である場合(ステップS110Yes)、逆コマンド生成部15dは、当該設定操作が行われたネットワーク装置30ごとに「running-config」に含まれる項目のうち差分が抽出された項目の設定値を削除する逆コマンドを生成する(ステップS1101)。一方、設定操作が新規登録でない場合(ステップS110No)、設定操作が設定値の削除であると判明する。この場合、逆コマンド生成部15dは、当該設定操作が行われたネットワーク装置30ごとに「running-config」に含まれる項目のうち差分が抽出された項目の設定値を当該削除操作前の設定値で新規登録する逆コマンドを生成する(ステップS1102)。
その上で、設定部15cは、ネットワーク装置30から更新後の「startup-config」または「startup-config」の更新日時を取得し、記憶部13がネットワーク装置30の管理用に記憶する「startup-config」または「startup-config」の更新日時を上書き更新する(ステップS113)。
その後、設定部15cは、ステップS101で受け付けた設定操作に関するレコードを記憶部13に記憶された操作履歴データ13aに追加登録し(ステップS114)、処理を終了する。ここで、ステップS114では、ステップS103の分岐でNoと判定された場合、設定部15cは、記憶部13に記憶された操作履歴データ13aのうち外部コマンド操作が検出されたネットワーク装置30のデバイス名を設定操作内容のフィールドに含み、かつ外部コマンド操作が検出された時点以前のレコードが持つフラグ1に「true」を設定する。また、ステップS114では、ステップS104の分岐でNoと判定された場合、設定部15cは、記憶部13に記憶された操作履歴データ13aのうちリンクの削除が検出されたネットワーク装置30のデバイス名を設定操作内容のフィールドに含み、かつリンクの削除が検出された時点以前のレコードが持つフラグ2に「true」を設定する。また、ステップS114では、ステップS105の分岐でNoと判定された場合、設定部15cは、記憶部13に記憶された操作履歴データ13aのうち外部コマンド操作が検出されたネットワーク装置30のデバイス名を設定操作内容のフィールドに含み、かつ外部コマンド操作が検出された時点以前のレコードが持つフラグ1に「true」を設定する。
(2)ロールバック処理
図11及び図12は、実施例1に係るロールバック処理の手順を示すフローチャートである。この処理は、一例として、クライアント端末50からロールバックの対象とされる設定操作の一覧を含むロールバック一覧画面の閲覧要求を受け付けた場合に開始される。
図11に示すように、ロールバック制御部15eは、記憶部13に記憶された操作履歴データ13aを読み出す(ステップS301)。続いて、ロールバック制御部15eは、操作履歴データ13aに含まれるレコードのうちレコードを1つ選択する(ステップS302)。
続いて、ロールバック制御部15eは、ステップS302で選択された操作履歴データ13aのレコードが持つロールバックエラーのフラグ3に「false」が設定されているか否かを判定する(ステップS303)。
このとき、ロールバックエラーのフラグ3に「true」が設定されている場合(ステップS303No)、ステップS302で選択されたレコードに対応する設定操作のロールバック処理が過去に実施されているものの、その結果がエラーであったことがわかる。この場合、ロールバック制御部15eは、当該レコードに関するロールバックのステータスに「ロールバックエラー」を割り当てる(ステップS304)。その後、ステップS313の処理へ移行する。
一方、ロールバックエラーのフラグ3に「false」が設定されている場合(ステップS303Yes)、ロールバック制御部15eは、ステップS302で選択された操作履歴データ13aのレコードに対応する設定操作がユーザ権限の範囲内か否かをさらに判定する(ステップS305)。このとき、設定操作がユーザ権限の範囲外である場合(ステップS305No)、ロールバック制御部15eは、ステップS302で選択された操作履歴データ13aのレコードに関するロールバックのステータスに「一覧表示対象外」を割り当てる(ステップS3051)。その後、ステップS313の処理へ移行する。
また、設定操作がユーザ権限の範囲内である場合(ステップS305Yes)、ロールバック制御部15eは、ステップS302で選択された操作履歴データ13aのレコードが持つ外部コマンド操作のフラグ1に「false」が設定されているか否かをさらに判定する(ステップS307)。このとき、外部コマンド操作のフラグ1に「true」が設定されている場合(ステップS307No)、当該レコードに対応する設定操作が行われた後に外部コマンド操作が実施されていることがわかる。この場合、ロールバック制御部15eは、当該レコードに関するロールバックのステータスに「ロールバック不可」を割り当てる(ステップS306)。その後、ステップS313の処理へ移行する。
また、外部コマンド操作のフラグ1に「false」が設定されている場合(ステップS307Yes)、ロールバック制御部15eは、次のような処理をさらに実行する。すなわち、ロールバック制御部15eは、記憶部13に記憶された図示しないデバイスデータに含まれるネットワーク装置30のうち、先に選択された操作履歴データ13aのレコードが持つフィールド「設定操作内容」に含まれるネットワーク装置30の削除フラグに「false」が設定されているか否かを判定する(ステップS308)。
このとき、ネットワーク装置30の削除フラグに「true」が設定されている場合(ステップS308No)、当該レコードに対応する設定操作が行われた後にネットワーク装置30に関するデータがデバイスデータから削除されていることがわかる。この場合、ロールバック制御部15eは、当該レコードに関するロールバックのステータスに「ロールバック不可」を割り当てる(ステップS306)。その後、ステップS313の処理へ移行する。
また、ネットワーク装置30の削除フラグに「false」が設定されている場合(ステップS308Yes)、ロールバック制御部15eは、ステップS302で選択された操作履歴データ13aのレコードが持つリンクの編集・削除のフラグ2に「false」が設定されているか否かをさらに判定する(ステップS309)。このとき、リンクの編集・削除のフラグ2に「true」が設定されている場合(ステップS309No)、当該レコードに対応する設定操作が行われた後にネットワーク装置30を含むリンクがトポロジから削除されていることがわかる。この場合、ロールバック制御部15eは、当該レコードに関するロールバックのステータスに「ロールバック不可」を割り当てる(ステップS306)。その後、ステップS313の処理へ移行する。
また、リンクの編集・削除のフラグ2に「false」が設定されている場合(ステップS309Yes)、ロールバック制御部15eは、ステップS302で選択された操作履歴データ13aのレコードが持つフィールド「設定操作内容」に含まれるネットワーク装置30ごとに、ロールバック一覧画面の閲覧要求を受け付けた時点から遡って最初の設定操作、すなわち最新の設定操作であるかをさらに判定する(ステップS310)。
ここで、全てのネットワーク装置30において最新の設定操作である場合(ステップS310Yes)、ロールバック処理の実行に支障がない公算が高いことを判断できる。この場合、ロールバック制御部15eは、当該レコードに関するロールバックのステータスに「ロールバック可」を割り当てる(ステップS311)。
一方、いずれかのネットワーク装置30において最新の設定操作でない場合(ステップS310No)、ステップS302で選択された操作履歴データ13aのレコードに対応する設定操作よりも前に行われた設定操作の中でもフィールド「設定操作内容」に含まれるネットワーク装置30よりも先に行われた関連の設定操作に関するロールバック処理が実行されることを条件に、先に選択された操作履歴データ13aのレコードに対応する設定操作のロールバックを許可してもよいことがわかる。この場合、ロールバック制御部15eは、当該レコードに関するロールバックのステータスに「ロールバック待ち」を割り当てる(ステップS312)。
その後、操作履歴データ13aに含まれる各レコードが選択されるまで(ステップS313No)、上記のステップS302〜ステップS312までの処理が繰り返し実行される。そして、操作履歴データ13aに含まれる各レコードが選択された場合(ステップS313Yes)、出力制御部15fは、ロールバック制御部15eにより設定操作ごとに割り当てられたロールバックのステータスにしたがってロールバック一覧画面をクライアント端末50に表示させる(ステップS314)。
その後、第2受付部15gは、ロールバック一覧画面に含まれるレコードの一覧の中からいずれかのレコードの選択を受け付ける(ステップS315)。このとき、ロールバックのステータスとして「ロールバック可」が割り当てられたレコードが選択された場合(ステップS316Yes)、出力制御部15fは、ロールバック処理の実行指示を受け付ける実行ボタンをアクティブな状態で表示させる(ステップS317)。
また、ロールバックのステータスとして「ロールバック待ち」が割り当てられたレコードが選択された場合(ステップS318Yes)、出力制御部15fにより次のような表示が行われる。すなわち、出力制御部15fは、ステップS315で選択されたレコードに対応する設定操作よりも前に行われた設定操作であり、かつ当該選択されたレコードが持つフィールド「設定操作内容」に含まれるネットワーク装置30に関する設定操作が先に行われた関連の設定操作に対応するレコードが他のレコードの表示形態と異なる区別可能な表示形態、例えば文字や塗り潰しの表示色の変更、あるいは網掛け等の強調表示で表示させると共に、実行ボタンを非アクティブな状態で表示させる(ステップS319及びステップS320)。
また、ロールバックのステータスとして「ロールバック不可」が割り当てられたレコードが選択された場合(ステップS318No)、出力制御部15fは、実行ボタンを非アクティブな状態で表示させる(ステップS320)。
その後、ロールバックの実行ボタンが操作されるまで(ステップS321No)、上記のステップS315〜ステップS320の処理が繰り返し実行される。そして、ロールバックの実行ボタンが操作された場合(ステップS321Yes)、ロールバック制御部15eは、実行ボタンの状態がアクティブであるか否かを判定する(ステップS322)。
ここで、実行ボタンの状態がアクティブである場合(ステップS322Yes)、ロールバック制御部15eは、当該指定が受け付けられた設定操作に対応する逆コマンドを実行することにより、設定操作をロールバックするロールバック処理を実行する(ステップS323)。なお、実行ボタンの状態が非アクティブである場合(ステップS322No)、当該指定が受け付けられた設定操作のロールバック処理は規制される。この場合、ステップS315の処理に戻る。
その後、ロールバック制御部15eは、当該ロールバック処理により設定が更新された後の「startup-config」をロールバック処理が実行された各ネットワーク装置30から取得した上で記憶部13がネットワーク装置30の管理用に記憶する「startup-config」または「startup-config」の更新日時を上書き更新する(ステップS324)と共に、当該ロールバック処理が実行された設定操作に対応するレコードを操作履歴データ13aから削除する(ステップS325)。その後、ステップS301で説明した操作履歴データの取得に戻り、以降の処理を繰り返し実行する。
[効果の一側面]
上述してきたように、本実施例に係るネットワーク管理装置10は、複数のネットワーク装置に対する一括設定が行われた操作のロールバックが指示された場合、一括設定の後にネットワーク装置に個別設定が行われたか否かによりロールバックを規制する。したがって、本実施例に係るネットワーク管理装置10によれば、ロールバック処理により発生するネットワークの不具合を抑制できる。