(57)【特許請求の範囲】
【請求項１】
データを転送する転送装置であって、
前記転送装置は、ＣＰＵ、前記ＣＰＵに接続されるメモリ、前記ＣＰＵに接続され、前記転送装置の再起動時における情報の復旧を制御する復旧制御部、前記復旧制御部に接続される不揮発性メモリ、前記復旧制御部に接続され、前記データの転送を制御する転送エンジン、および前記転送エンジンに接続される揮発性メモリを備え、
前記メモリは、前記データの転送先を示すルーティング情報を格納し、
前記揮発性メモリは、前記ルーティング情報に対応する情報であり、前記転送エンジンが前記データの転送先を判定する際に用いる第１の転送情報ベースを格納し、
前記不揮発性メモリは、前記第１の転送情報ベースのバックアップデータである第２の転送情報ベースを格納し、
前記転送エンジンは、前記第１の転送情報ベースを用いて前記転送装置が受信したデータの転送先を決定して、決定された転送先に前記受信したデータを転送し、
前記復旧制御部は、
前記ＣＰＵから更新データを含む前記第２の転送情報ベースの更新指示を受信した場合、前記更新データに基づいて前記第２の転送情報ベースを更新し、
前記転送エンジンに、前記更新データを含む前記第１の転送情報ベースの更新指示を送信し、
前記転送装置が再起動した場合に、前記第１の転送情報ベースおよび前記第２の転送情報ベースの整合性を確認し、
前記第１の転送情報ベースおよび前記第２の転送情報ベースの整合性がある場合、前記第２の転送情報ベースを用いて前記第１の転送情報ベースを復旧することを特徴とする転送装置。
【請求項２】
請求項１に記載の転送装置であって、
前記復旧制御部は、前記第２の転送情報ベースの更新が完了していない状態で前記転送装置が再起動した場合に、前記第１の転送情報ベースおよび前記第２の転送情報ベースの整合性がないと判定することを特徴とする転送装置。
【請求項３】
請求項２に記載の転送装置であって、
前記不揮発性メモリは、前記第１の転送情報ベースおよび前記第２の転送情報ベースが更新中であることを示す第１のフラグを含む制御情報を格納し、
前記復旧制御部は、
前記ＣＰＵから前記第２の転送情報ベースの更新の開始指示を受信した場合、前記第１のフラグを有効化し、
前記ＣＰＵから前記第２の転送情報ベースの更新の終了指示を受信した場合に、前記第１のフラグを無効化し、
前記転送装置の再起動した場合に、前記制御情報を参照して前記第１のフラグが有効化されているかを判定し、
前記第１のフラグが無効化されていると判定した場合、前記第１の転送情報ベースおよび前記第２の転送情報ベースに整合性があると判定することを特徴とする転送装置。
【請求項４】
請求項３に記載の転送装置であって、
前記復旧制御部は、
前記第１の転送情報ベースおよび前記第２の転送情報ベースに整合性があると判定した場合、前記第１のフラグを有効化し、
前記第１の転送情報ベースが復旧したことを検知した場合、前記第１のフラグを無効化することを特徴とする転送装置。
【請求項５】
請求項３に記載の転送装置であって、
前記制御情報は、前記第２の転送情報ベースを前記第１の転送情報ベースの復旧に用いる有効期間を示す期間情報を含み、
前記復旧制御部は、
前記第１のフラグが無効化されていると判定した場合、前記制御情報から前記期間情報を取得し、
現在の時刻および前記期間情報に基づいて、前記有効期間を経過しているかを判定し、
前記有効期間が経過していないと判定した場合、前記第１の転送情報ベースおよび前記第２の転送情報ベースに整合性があると判定することを特徴とする転送装置。
【請求項６】
請求項３に記載の転送装置であって、
前記ルーティング情報は、データの転送先を示す複数の転送先情報を格納し、
前記転送先情報は、前記第２の転送情報ベースに基づいて当該転送先情報が生成されていないことを示す第２のフラグを含み、
前記ＣＰＵは、
前記復旧制御部によって前記第１の転送情報ベースが復旧されたことを検知した場合、前記不揮発性メモリから前記第２の転送情報ベースを読み出し、
前記読み出された第２の転送情報ベースを用いて前記転送先情報を生成することによって前記ルーティング情報を復旧し、
前記復旧したルーティング情報に格納される前記転送先情報に含まれる前記第２のフラグを無効化し、
前記復旧したルーティング情報に格納される前記転送先情報が更新された場合、前記更新された転送先情報に含まれる前記第２のフラグを有効化し、
前記復旧したルーティング情報に格納される前記転送先情報のうち、前記第２のフラグが無効化された前記転送先情報が一定期間更新されない場合、前記ルーティング情報から前記第２のフラグが無効化された前記転送先情報を削除することを特徴とする転送装置。
【請求項７】
データを転送する転送装置の再起動時にバックアップデータを用いた復旧処理を制御する復旧制御装置であって、
前記転送装置は、ＣＰＵおよび転送エンジンを有し、
前記復旧制御装置は、前記ＣＰＵと前記転送エンジンとの間を接続し、
前記ＣＰＵに接続されるメモリには、前記データの転送先を示すルーティング情報が格納され、
前記転送エンジンに接続される揮発性メモリには、前記ルーティング情報に対応する情報であり、前記転送エンジンが前記データの転送先を判定する際に用いる第１の転送情報ベースが格納され、
前記復旧制御装置は、
前記第１の転送情報ベースのバックアップデータである第２の転送情報ベースを格納する不揮発性メモリと接続し、
前記ＣＰＵから更新データを含む前記第２の転送情報ベースの更新指示を受信した場合、前記更新データに基づいて前記第２の転送情報ベースを更新し、
前記転送エンジンに、前記更新データを含む前記第１の転送情報ベースの更新指示を送信し、
前記転送装置が再起動した場合に、前記第１の転送情報ベースおよび前記第２の転送情報ベースの整合性を確認し、
前記第１の転送情報ベースおよび前記第２の転送情報ベースの整合性がある場合、前記第２の転送情報ベースを用いて前記第１の転送情報ベースを復旧することを特徴とする復旧制御装置。
【請求項８】
請求項７に記載の復旧制御装置であって、
前記第２の転送情報ベースの更新が完了していない状態で前記転送装置が再起動した場合に、前記第１の転送情報ベースおよび前記第２の転送情報ベースの整合性がないと判定することを特徴とする復旧制御装置。
【請求項９】
請求項８に記載の復旧制御装置であって、
前記不揮発性メモリは、前記第１の転送情報ベースおよび前記第２の転送情報ベースが更新中であることを示す第１のフラグを含む制御情報を格納し、
前記復旧制御装置は、
前記ＣＰＵから前記第２の転送情報ベースの更新の開始指示を受信した場合、前記第１のフラグを有効化し、
前記ＣＰＵから前記第２の転送情報ベースの更新の終了指示を受信した場合に、前記第１のフラグを無効化し、
前記転送装置の再起動した場合に、前記制御情報を参照して前記第１のフラグが有効化されているかを判定し、
前記第１のフラグが無効化されていると判定した場合、前記第１の転送情報ベースおよび前記第２の転送情報ベースに整合性があると判定することを特徴とする復旧制御装置。
【請求項１０】
請求項９に記載の復旧制御装置であって、
前記第１の転送情報ベースおよび前記第２の転送情報ベースに整合性があると判定した場合、前記第１のフラグを有効化し、
前記第１の転送情報ベースが復旧したことを検知した場合、前記第１のフラグを無効化することを特徴とする復旧制御装置。
【請求項１１】
請求項９に記載の復旧制御装置であって、
前記制御情報は、前記第２の転送情報ベースを前記第１の転送情報ベースの復旧に用いる有効期間を示す期間情報を含み、
前記復旧制御装置は、
前記第１のフラグが無効化されていると判定した場合、前記制御情報から前記期間情報を取得し、
現在の時刻および前記期間情報に基づいて、前記有効期間を経過しているかを判定し、
前記有効期間が経過していないと判定した場合、前記第１の転送情報ベースおよび前記第２の転送情報ベースに整合性があると判定することを特徴とする復旧制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送装置に関する。
【背景技術】
【０００２】
近年、ネットワークシステムの信頼性に対する要求が高まっている。それに伴い、ネットワークシステムを構成するネットワーク間におけるデータ転送を行うデータ転送装置が可能な限りデータ転送を継続することが求められている。
【０００３】
データ転送装置は、当該データ転送装置が保持するルーティングテーブルに従って適切な転送先にデータを転送する。ルーティングテーブルには各ネットワークから次にデータを転送するための転送先情報が格納される。
【０００４】
従来の多くのデータ転送装置では、データ転送の高速化のために転送エンジンと呼ばれる専用のデバイスがデータを転送する。転送エンジンは高い性能が求められるデバイスであるため、一般に、専門の半導体メーカーによって設計、製造されたものが用いられる。
【０００５】
データを高速に転送するためにはデータの転送先を短い時間で検索する必要がある。これを実現するために、データ転送装置にデータの転送先の検索に用いるためのメモリを設け、当該メモリに転送情報ベースを格納する。転送情報ベースは、転送エンジンが転送先を検索しやすいデータ形式にルーティングテーブルを変換したものである。
【０００６】
通常、転送情報ベースを格納するメモリには揮発性メモリが使用されている。そのため、データ転送装置が停止した場合、当該メモリに格納される転送情報ベースは消失する。
【０００７】
データ転送装置の再起動が発生した場合、データ転送装置は、再度ルーティングテーブルを生成し、さらに、ルーティングテーブルを変換することによって生成された転送情報ベースを揮発性メモリに格納する必要がある。したがって、従来のデータ転送装置は、前述したような処理が完了し、データ転送を再開するまで通常数十秒から数分の時間を要するという課題がある。
【０００８】
前述した課題を解決する手段として、特許文献１に記載された発明が知られている。特許文献１には、「ルータは、パケットの宛先情報であるルーティングテーブルが格納された随時読み書き可能のルーティングテーブル用記憶部と、上記ルーティングテーブルに基づき作成され、上記パケットの転送可能な宛先と、該宛先に最短経路で届けるための適切な行き先との対応関係の情報である転送情報ベースが格納された随時読み書き可能の転送情報ベース用記憶部を含み、上記転送情報ベースを基に上記パケットの行き先を検索する検索エンジン部と、上記ルーティングテーブル用記憶部および転送情報ベース用記憶部に電源を供給する電源部と、上記電源部を制御する制御部と、を備える。そして、上記ルーティングテーブル用記憶部と転送情報ベース用記憶部のうち、少なくとも１つが不揮発性メモリであり、上記制御部は上記不揮発性メモリに対し、該不揮発性メモリが動作するとき上記電源部から電源供給し、非動作のとき電源供給を遮断する。」ことが記載されている。
【０００９】
特許文献１に記載の発明では、パケットの転送先の検索に用いるメモリとして不揮発性メモリを使用することによってパケット転送装置が再起動しても転送情報ベースが消失するのを防止できるため、パケット転送を素早く再開できる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１３−１８７６０１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
特許文献１に記載の発明のように、転送情報ベースを不揮発性メモリに格納した場合、次のような問題が存在する。
【００１２】
一つの問題は、転送情報ベースの更新中にデータ転送装置が再起動した場合、転送情報ベースに格納される転送先情報に不整合が発生することである。もう一つの問題は、データ転送装置が長時間停止した場合、転送情報ベースに格納される転送先情報が古くなる可能性がある。これらの問題によって誤った転送先にデータが転送される可能性があるため、適切に転送先の検索が行える場合に不揮発性メモリに格納される転送情報ベースを使用する必要がある。
【００１３】
上記課題を解決し、かつ、データ転送装置の再起動時に速やかにデータ転送を再開するためには、転送エンジンおよびＣＰＵ等以外のデバイスが、不揮発性メモリに格納される転送情報ベースが転送先を検索するための情報として適切であるか否かを判定する必要がある。しかし、一般的に転送エンジンは専門の半導体メーカーによって設計、製造されたものであるため、前述した判定処理を実行するための機能を転送エンジン等に追加することが困難である。
【００１４】
本発明では、転送エンジンに変更を加えることなく、不揮発性メモリに格納される転送情報ベースが検索に用いる情報として適切であるか否かを判定することを実現し、かつ、データ転送装置が早期にデータ転送を再開することを実現する。
【課題を解決するための手段】
【００１５】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、データを転送する転送装置であって、前記転送装置は、ＣＰＵ、前記ＣＰＵに接続されるメモリ、前記ＣＰＵに接続され、前記転送装置の再起動時における情報の復旧を制御する復旧制御部、前記復旧制御部に接続される不揮発性メモリ、前記復旧制御部に接続され、前記データの転送を制御する転送エンジン、および前記転送エンジンに接続される揮発性メモリを備え、前記メモリは、前記データの転送先を示すルーティング情報を格納し、前記揮発性メモリは、前記ルーティング情報に対応する情報であり、前記転送エンジンが前記データの転送先を判定する際に用いる第１の転送情報ベースを格納し、前記不揮発性メモリは、前記第１の転送情報ベースのバックアップデータである第２の転送情報ベースを格納し、前記転送エンジンは、前記第１の転送情報ベースを用いて前記転送装置が受信したデータの転送先を決定して、決定された転送先に前記受信したデータを転送し、前記復旧制御部は、前記ＣＰＵから更新データを含む前記第２の転送情報ベースの更新指示を受信した場合、前記更新データに基づいて前記第２の転送情報ベースを更新し、前記転送エンジンに、前記更新データを含む前記第１の転送情報ベースの更新指示を送信し、前記転送装置が再起動した場合に、前記第１の転送情報ベースおよび前記第２の転送情報ベースの整合性を確認し、前記第１の転送情報ベースおよび前記第２の転送情報ベースの整合性がある場合、前記第２の転送情報ベースを用いて前記第１の転送情報ベースを復旧することを特徴とする。
【発明の効果】
【００１６】
本発明によれば、不揮発性メモリに格納される転送情報ベースの整合性の確認、および、データ転送装置の再起動時の早期データ転送の再開を実現できる。上記した以外の課題、構成および効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【００１７】
【図１】実施例のネットワークシステムの構成およびデータ転送装置の構成の一例を示す説明図である。
【図２】実施例の復旧制御部の構成の一例を示すブロック図である。
【図３】実施例のデータ転送装置において使用されるコマンドのフォーマットの一例を示す説明図である。
【図４】実施例のデータ転送装置が保持するルーティングテーブルの一例を示す説明図である。
【図５】実施例のデータ転送装置が保持する転送情報ベースの一例を示す説明図である。
【図６】実施例の復旧制御部が保持する揮発性制御情報の一例を示す説明図である。
【図７】実施例の不揮発性メモリに格納される不揮発性制御情報の一例を示す説明図である。
【図８】実施例のデータ転送装置の通常運用中における転送情報ベースの更新処理の流れを説明するシーケンス図である。
【図９】実施例の復旧制御部が転送情報ベースの更新時に実行する処理を説明するフローチャートである。
【図１０】実施例のデータ転送装置の再起動時における転送情報ベースの復旧処理の流れを説明するシーケンス図である。
【図１１】実施例の復旧制御部が実行する転送情報ベースの復旧処理を説明するフローチャートである。
【発明を実施するための形態】
【００１８】
実施例について以下に図を用いて示す。
【実施例】
【００１９】
図１は、実施例のネットワークシステム１００の構成およびデータ転送装置４００の構成の一例を示す説明図である。
【００２０】
ネットワークシステム１００は、複数のネットワーク２００、複数の端末３００、および複数のデータ転送装置４００から構成される。図１に示す例では、ネットワークシステムは、３つのネットワーク２００Ａ、２００Ｂ、２００Ｃを含み、２つの端末３００Ａ、３００Ｂを含み、また、２つのデータ転送装置４００Ａ、４００Ｂを含む。
【００２１】
なお、本実施例は、ネットワーク２００、端末３００、およびデータ転送装置４００の数に限定されない。本明細書では、ネットワーク２００Ａ、２００Ｂ、２００Ｃを区別しない場合はネットワーク２００と記載し、端末３００Ａ、３００Ｂを区別しない場合は端末３００と記載し、また、データ転送装置４００Ａ、４００Ｂを区別しない場合はデータ転送装置４００と記載する。
【００２２】
端末３００Ａおよびデータ転送装置４００Ａはネットワーク２００Ａを介して互いに接続され、端末３００Ｂおよびデータ転送装置４００Ｂはネットワーク２００Ｃを介して接続され、また、データ転送装置４００Ａおよびデータ転送装置４００Ｂはネットワーク２００Ｂを介して互いに接続される。ネットワーク２００は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）またはＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等が考えられるが、本実施例はネットワーク２００の種別に限定されない。また、端末３００およびデータ転送装置４００と、ネットワーク２００との間の接続形式は有線または無線のいずれであってもよい。
【００２３】
端末３００は、ネットワーク２００を介して他の端末３００に宛先情報を含むデータを送信し、また、他の端末３００から宛先情報を含むデータを受信する。なお、端末３００は、図示しないＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、メモリ、およびネットワークインタフェース等を有する。
【００２４】
データ転送装置４００は、ネットワーク２００を介して端末３００または他のデータ転送装置４００からデータを受信した場合、受信したデータに含まれる宛先情報に従って適切な転送先に当該データを転送する。ここで、データ転送装置４００Ａを例にデータ転送装置４００の構成について説明する。なお、データ転送装置４００Ｂも同一の構成である。
【００２５】
データ転送装置４００Ａは、ＣＰＵ４１０、メインメモリ４２０、復旧制御部４３０、不揮発性メモリ４４０、転送エンジン４５０、揮発性メモリ４６０、ポート４７０、およびバス４８０を備える。なお、ＣＰＵ４１０、復旧制御部４３０、および転送エンジン４５０を区別しない場合、デバイスとも記載する。
【００２６】
ＣＰＵ４１０および復旧制御部４３０はバス４８０Ａを介して互いに接続され、復旧制御部４３０および転送エンジン４５０はバス４８０Ｂを介して接続され、転送エンジン４５０およびポート４７０はバス４８０Ｃを介して接続される。また、ポート４７０は、回線４８５を介してネットワーク２００と接続する。
【００２７】
各デバイスは、バス４８０を介して他のデバイスにコマンド４９０を送信し、また、バス４８０を介して他のデバイスからコマンド４９０を受信する。これによって、各デバイスは、他のデバイスに対して指示を行い、また、他のデバイスが保持する情報または他のデバイスに接続されたメモリに対してデータの読み書きを行う。
【００２８】
ＣＰＵ４１０は、データ転送装置４００Ａ全体を制御する。本実施例のＣＰＵ４１０は、ルーティングテーブル４２１の生成および更新を行い、また、転送情報ベース４４１および転送情報ベース４６１の更新の指示を行う。
【００２９】
メインメモリ４２０は、ＣＰＵ４１０に接続され、ルーティングテーブル４２１を格納する。メインメモリ４２０は、例えば、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の揮発性メモリを用いるものとする。
【００３０】
ルーティングテーブル４２１は、各ネットワーク２００ごとに、データの転送先を示す転送先情報を格納する。ルーティングテーブル４２１に格納される転送先情報は、ネットワークシステム１００の運用者によって固定的に設定され、または、他のデータ転送装置４００との間で転送先情報を送受信して動的に設定される。また、本実施例では、前述したものの他に、データ転送装置４００Ａの再起動時に、不揮発性メモリ４４０に格納される転送情報ベース４４１に基づいてルーティングテーブル４２１が生成される。ルーティングテーブル４２１の詳細は図４を用いて後述する。
【００３１】
復旧制御部４３０は、データ転送装置４００Ａの通常運用中にＣＰＵ４１０から送信された転送先情報を不揮発性メモリ４４０の転送情報ベース４４１に格納し、さらに、転送エンジン４５０に当該転送先情報を含む転送情報ベース４６１の更新指示を送信する。具体的には、復旧制御部４３０は、ＣＰＵ４１０から送信されたコマンド４９０に基づいて、不揮発性メモリ４４０の転送情報ベース４４１にコマンド４９０に含まれる転送先情報を格納する。また、復旧制御部４３０は、転送先情報を含むコマンド４９０を転送エンジン４５０に送信することによって、揮発性メモリ４６０の転送情報ベース４６１の更新を転送エンジン４５０に指示する。
【００３２】
また、復旧制御部４３０は、データ転送装置４００Ａの再起動時に転送情報ベース４４１および転送情報ベース４６１の整合性を判定し、当該判定結果に基づいて、転送情報ベース４４１を用いた揮発性メモリ４６０の転送情報ベース４６１の復旧を制御する。
【００３３】
不揮発性メモリ４４０は、復旧制御部４３０に接続され、転送情報ベース４４１および不揮発性制御情報４４２を格納する。本実施例の不揮発性メモリ４４０は、データの書き込みによる性能の劣化が発生せず、かつ、揮発性メモリ４６０と同程度の速度で動作するものとする。前述の条件を満たす不揮発性メモリとしては、ＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲｅＲＡＭ（Ｒｅｓｉｓｔａｎｃｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、およびＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等がある。
【００３４】
転送情報ベース４４１は、転送エンジン４５０が使用する転送情報ベース４６１のバックアップデータである。転送情報ベース４４１は、不揮発性メモリ４４０に格納されているため、データ転送装置４００Ａが停止しても消失しない。転送情報ベース４４１は、ルーティングテーブル４２１が更新された場合、ＣＰＵ４１０からの指示に基づいて書き換えられる。後述するように、転送情報ベース４４１の更新時には、揮発性メモリ４６０に格納される転送情報ベース４６１も同時に書き換えられる。
【００３５】
不揮発性制御情報４４２は、復旧制御部４３０が実行する処理を制御するための情報である。本実施例では不揮発性制御情報４４２を用いて転送情報ベース４４１および転送情報ベース４６１の状態が管理される。不揮発性制御情報４４２の詳細は図７を用いて後述する。
【００３６】
転送エンジン４５０は、ネットワーク２００を介して受信したデータの転送処理を実行する。具体的には、転送エンジン４５０は、ネットワーク２００から回線４８５を経由してデータを受信した場合、揮発性メモリ４６０に格納された転送情報ベース４６１を用いてデータの転送先を検索し、検索結果に基づいて適切な転送先にデータを転送する。
【００３７】
揮発性メモリ４６０は、転送エンジン４５０に接続され、転送情報ベース４６１を格納する。揮発性メモリ４６０としては、動作速度が速いＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、および検索処理に特化したＴＣＡＭ（Ｔｅｒｎａｒｙ  Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）等がある。検索に適した、木構造またはハッシュテーブル等のデータ構造に変換された転送情報ベース４６１が格納される場合、ＳＲＡＭが用いられる。
【００３８】
転送情報ベース４６１は、転送エンジン４５０がデータの転送先を検索するのに適したデータ形式にルーティングテーブル４２１が変換された情報である。転送情報ベース４６１の詳細は図５を用いて後述する。
【００３９】
ポート４７０は、外部のネットワークまたは外部の装置と接続するインタフェースである。本実施例では、データ転送装置４００Ａは、ポート４７０Ａに接続される回線４８５Ａを介してネットワーク２００Ｂと接続し、また、ポート４７０Ｂに接続される回線４８５Ｂを介してネットワーク２００Ｃと接続する。バス４８０は、データ転送装置４００Ａ内の構成を接続する。バス４８０にはコマンド４９０が流れる。
【００４０】
一般的なデータ転送装置４００の場合、ＣＰＵ４１０およびメインメモリ４２０は制御カードに搭載され、転送エンジン４５０および揮発性メモリ４６０は転送カードに搭載される。そのため、復旧制御部４３０および不揮発性メモリ４４０を搭載するカードの形態として様々考えられる。
【００４１】
例えば、制御カードまたは転送カードのいずれか一方に復旧制御部４３０および不揮発性メモリ４４０を搭載する形態が考えられる。また、制御カードには復旧制御部４３０を搭載し、転送カードには不揮発性メモリ４４０を搭載する形態、または、制御カードには不揮発性メモリ４４０を搭載し、転送カードには復旧制御部４３０を搭載する形態も考えられる。また、復旧制御部４３０および不揮発性メモリ４４０を搭載した復旧制御カードとしてデータ転送装置４００に搭載する形態でもよい。また、制御カード、転送カード、および復旧制御カードは、データ転送装置４００に対して挿抜可能な構成であってもよい。
【００４２】
なお、ＣＰＵ４１０、メインメモリ４２０、復旧制御部４３０、不揮発性メモリ４４０、転送エンジン４５０、揮発性メモリ４６０は、カード形式の装置として搭載されていなくてもよい。例えば、一つのチップとしてデータ転送装置４００に搭載されていてもよい。
【００４３】
図２は、実施例の復旧制御部４３０の構成の一例を示すブロック図である。
【００４４】
復旧制御部４３０は、ＣＰＵインタフェース部４３１、メモリインタフェース部４３２、制御処理部４３３、時刻管理部４３４、および転送エンジンインタフェース部４３５を有し、また、揮発性制御情報４３６を保持する。なお、復旧制御部４３０は図示しない揮発性メモリを有し、当該揮発性メモリには揮発性制御情報４３６および処理のために一時的に保持するデータ等が格納される。
【００４５】
制御処理部４３３は、ＣＰＵインタフェース部４３１、メモリインタフェース部４３２、時刻管理部４３４、および転送エンジンインタフェース部４３５と内部バス等を介して接続する。また、制御処理部４３３は、内部バス等を介して揮発性制御情報４３６が格納される揮発性メモリと接続する。
【００４６】
ＣＰＵインタフェース部４３１は、ＣＰＵ４１０から送信されるコマンド４９０の受信処理を実行する。また、ＣＰＵインタフェース部４３１は、制御処理部４３３からの指示に従って、ＣＰＵ４１０に対してコマンド４９０を送信する。
【００４７】
メモリインタフェース部４３２は、制御処理部４３３からの指示に従って、不揮発性メモリ４４０の指示されたアドレスに対してデータの読み出しおよび書き込みを行う。
【００４８】
制御処理部４３３は、復旧制御部４３０全体の制御を行う。制御処理部４３３は、処理の内容に応じて、ＣＰＵ４１０および転送エンジン４５０との間で指示およびデータの送受信を行い、不揮発性メモリ４４０に対するデータの読み出しおよび書き込みを行う。
【００４９】
時刻管理部４３４は、揮発性制御情報４３６に格納される時刻の情報を管理する。時刻管理部４３４は、バッテリー等の電源によって動作可能な回路によって、データ転送装置４００が停止した状態においても時刻を刻み続ける。
【００５０】
転送エンジンインタフェース部４３５は、ＣＰＵインタフェース部４３１と同様に、転送エンジン４５０との間でコマンド４９０の送受信を行う。
【００５１】
揮発性制御情報４３６は、復旧制御部４３０が実行する処理を制御するための情報である。本実施例では揮発性制御情報４３６を用いて復旧制御部４３０の処理の状態が管理される。なお、揮発性制御情報４３６は、復旧制御部４３０が保持する揮発性メモリに格納されているため、データ転送装置４００が停止すると消失する。揮発性制御情報４３６の詳細は図６を用いて後述する。
【００５２】
図３は、実施例のデータ転送装置４００において使用されるコマンド４９０のフォーマットの一例を示す説明図である。
【００５３】
コマンド４９０は、宛先デバイス４９１１、送信元デバイス４９１２、コマンド種別４９１３、アドレス４９１４、およびデータ４９１５から構成される。
【００５４】
宛先デバイス４９１１は、コマンド４９０の送信先のデバイスの識別情報である。送信元デバイス４９１２は、コマンド４９０の送信元のデバイスの識別情報である。宛先デバイス４９１１および送信元デバイス４９１２のそれぞれには、ＣＰＵ４１０、復旧制御部４３０、および転送エンジン４５０の少なくともいずれかが設定される。コマンド種別４９１３は、コマンドの種別を示す情報である。コマンドの種別としては、リード要求、リード応答、およびライト要求がある。
【００５５】
アドレス４９１４は、コマンド４９０の処理の対象となるメモリ領域のアドレスである。データ４９１５は、コマンド４９０の処理の対象となるデータである。なお、コマンド種別４９１３に「リード要求」が設定される場合、アドレス４９１４にのみ値が設定され、データ４９１５には値は設定されない。また、コマンド種別４９１３に「リード応答」または「ライト要求」のいずれかが設定される場合、アドレス４９１４およびデータ４９１５のいずれにも値が設定される。
【００５６】
各デバイスは、他のバイスとの間でコマンド４９０を送受信することによって、他のデバイスに対して指示を行い、他のデバイスが保持する情報または他のデバイスに接続されるメモリに対してデータの読み出しおよび書き込みを行う。
【００５７】
他のデバイスに対する指示は、他のデバイスが保持する特定の情報に対してデータを書き込むことによって行われる。データを読み出す情報またはデータを書き込む情報が、他のデバイスが保持する情報、または、他のデバイスに接続されるメモリに格納される情報のいずれであるかは、アドレス４９１４に設定されたアドレスの範囲によって判定される。
【００５８】
コマンド種別４９１３に「リード要求」または「リード応答」のいずれかが設定されたコマンド４９０は、他のデバイスが保持する情報または他のデバイスに接続されるメモリからデータを読み出す場合に使用される。
【００５９】
デバイスは、受信したコマンド４９０のコマンド種別４９１３に「リード要求」が設定される場合、当該デバイスが保持する情報または当該デバイスに接続されるメモリのアドレス４９１４に設定された値に対応するメモリ領域からデータを読み出す。また、デバイスは、受信したコマンド４９０の送信元デバイス４９１２に対して、コマンド種別４９１３に「リード応答」が設定され、データ４９１５に読み出されたデータが設定されたコマンド４９０を送信する。
【００６０】
コマンド種別４９１３に「ライト要求」が設定されたコマンド４９０は、他のデバイスが保持する情報または当該デバイスに接続されるメモリに対してデータを書き込む場合に使用される。
【００６１】
デバイスは、受信したコマンド４９０のコマンド種別４９１３に「ライト要求」が設定される場合、当該デバイスが保持する情報または当該デバイスに接続されるメモリに対して、アドレス４９１４に設定された値に対応するメモリ領域にデータ４９１５を書き込む。
【００６２】
図４は、実施例のデータ転送装置４００が保持するルーティングテーブル４２１の一例を示す説明図である。図４では、データ転送装置４００Ａが保持するルーティングテーブル４２１を示す。なお、データ転送装置４００Ｂも同様のルーティングテーブル４２１を保持する。
【００６３】
本実施例のルーティングテーブル４２１は、テーブル形式のデータであり、一つのエントリにデータの転送先を特定する転送先情報を格納する。当該エントリは、宛先ネットワーク４２１１、転送先４２１２、および生成フラグ４２１３を含む。
【００６４】
宛先ネットワーク４２１１は、データ転送装置４００が、転送先の装置等にデータを転送する場合に当該データを送信するネットワーク２００の識別情報である。転送先４２１２は、宛先ネットワーク４２１１に対応するネットワーク２００から次にデータを転送するデータ転送装置４００の識別情報である。
【００６５】
図４では、ネットワーク２００Ａおよびネットワーク２００Ｂに対してデータ転送装置４００Ａが当該ネットワークから次にデータを転送する転送先であることを示す。また、図４では、ネットワーク２００Ｃに対してデータ転送装置４００Ｂが当該ネットワークから次にデータを転送する転送先であることを示す。
【００６６】
生成フラグ４２１３は、エントリが通常の処理によって生成されたか否かを示すフラグである。生成フラグ４２１３には、生成フラグ４２１３が有効化されていることを示す「ＯＮ」、または、生成フラグ４２１３が無効化されていることを示す「ＯＦＦ」のいずれかが設定される。
【００６７】
データ転送装置４００の再起動時に、不揮発性メモリ４４０に格納される転送情報ベース４４１を用いた復旧処理によって生成されたエントリの場合、生成フラグ４２１３には「ＯＦＦ」が設定される。復旧処理以外の方法でエントリが生成された場合、生成フラグ４２１３には「ＯＮ」が設定される。
【００６８】
なお、復旧処理以外の方法でエントリが生成された場合としては、ネットワークシステム１００の運用者によって固定的にルーティングテーブル４２１が設定された場合、または、通常の運用時に他のデータ転送装置４００と転送先情報を送受信することによって動的にエントリが生成された場合等がある。
【００６９】
図５は、実施例のデータ転送装置４００が保持する転送情報ベース４６１の一例を示す説明図である。図５では、データ転送装置４００Ａが保持する転送情報ベース４６１を示す。なお、データ転送装置４００Ｂも同様の転送情報ベース４６１を保持する。
【００７０】
転送情報ベース４６１は、ルーティングテーブル４２１を転送エンジン４５０がデータの転送先を容易に検索できるデータ形式に変換した情報である。本実施例の転送情報ベース４６１は、テーブル形式のデータであり、一つのエントリに宛先を特定する情報を格納する。一つのエントリは、アドレス４６１１およびデータ４６１２を含む。
【００７１】
アドレス４６１１は、揮発性メモリ４６０のアドレスである。データ４６１２は、アドレス４６１１に対応するメモリ領域に格納されるデータである。
【００７２】
ルーティングテーブル４２１では、転送先情報が一つのエントリに格納されていたが、転送情報ベース４６１では、アドレス４６１１が示すメモリ領域に転送先情報の一部が格納される。例えば、アドレス４６１１「０ｘ００００００００」に対応するメモリ領域には宛先ネットワーク４２１１に対応する「ネットワーク２００Ａ」が格納され、アドレス４６１１「０ｘ０００００００４」に対応するメモリ領域には転送先４２１２に対応する「データ転送装置４００Ａ」が格納される。
【００７３】
不揮発性メモリ４４０に格納される転送情報ベース４４１は、転送情報ベース４６１と同一のものであるため説明を省略する。なお、揮発性メモリ４６０に格納される転送情報ベース４６１は、データ転送装置４００の通常運用中において転送エンジン４５０によって使用されるが、不揮発性メモリ４４０に格納される転送情報ベース４４１は、データ転送装置４００の運用時において転送エンジン４５０によって使用されない。
【００７４】
なお、図５に示す転送情報ベース４６１は、ルーティングテーブル４２１に格納される転送先情報の一部を格納するメモリ領域のアドレスとデータとが対応付けられた情報であるがこれに限定されない。例えば、ＣＰＵ４１０は、ハッシュテーブル等、検索に適したデータ構造にルーティングテーブル４２１に含まれる転送先情報を変換した上で、転送情報ベース４６１にアドレスとデータとを対応付けたエントリを格納してもよい。
【００７５】
揮発性メモリ４６０に格納される転送情報ベース４６１のバックアップデータとして不揮発性メモリ４４０に転送情報ベース４４１を格納することは障害対策および早期のデータ転送の再開に有用であるが、転送情報ベース４４１をそのまま転送情報ベース４６１として復旧させた場合、様々な問題が発生する。すなわち、データ転送装置４００Ａが、転送情報ベース４６１の更新中に再起動した場合、転送情報ベース４６１と転送情報ベース４４１との間でデータの不整合が発生する可能性がある。
【００７６】
例えば、転送情報ベース４４１がすでに更新されており、転送情報ベース４６１の更新が終了していない場合データの不整合が発生する。また、データ転送装置４００の再起動前と再起動後のハッシュ値が異なるため、転送情報ベース４４１および転送情報ベース４６１のデータ構造に不整合、すなわち、データの不整合が発生する。
【００７７】
データの不整合が発生している状態において、データ転送装置４００Ａが転送情報ベース４４１を用いて揮発性メモリ４６０の転送情報ベース４６１を復旧した場合、不整合が発生したデータを含む転送情報ベース４６１を用いてデータの転送先の検索を行うと、誤った転送先にデータを転送し、または、データ転送装置４００Ａが停止する可能性がある。
【００７８】
また、データ転送装置４００Ｂが停止した場合、ルーティングテーブル４２１および転送情報ベース４６１からネットワーク２００Ｃに関する転送先情報を削除する必要がある。データ転送装置４００Ａが通常運用中の場合、転送情報ベース４６１の更新処理の実行時に転送情報ベース４４１からもネットワーク２００Ｃに関する転送先情報が削除される。しかし、データ転送装置４００Ａが停止した場合、転送情報ベース４４１は更新されない。
【００７９】
従って、データ転送装置４００Ａが長時間停止している間にネットワークシステム１００のネットワーク構成の変更が発生した場合、転送情報ベース４４１に格納される転送先情報が古くなっている可能性がある。転送エンジン４５０が、古い転送先情報を格納する転送情報ベース４４１を用いて復旧した転送情報ベース４６１に基づいてデータの転送先を検索する場合、誤った転送先または存在しない転送先にデータを転送する可能性がある。これによって、ネットワークシステム１００のネットワーク負荷が上昇し、また、ネットワークシステム１００上のデータの消失が発生する可能性がある。
【００８０】
図６は、実施例の復旧制御部４３０が保持する揮発性制御情報４３６の一例を示す説明図である。
【００８１】
揮発性制御情報４３６は、更新開始フラグ４３６１、更新終了フラグ４３６２、復旧中フラグ４３６３、復旧済フラグ４３６４、および現在時刻４３６５を含む。
【００８２】
更新開始フラグ４３６１は、ＣＰＵ４１０が転送情報ベース４４１および転送情報ベース４６１の更新を開始したことを復旧制御部４３０に通知するフラグである。更新開始フラグ４３６１は、更新開始フラグ４３６１が有効化されていることを示す「ＯＮ」、または、更新開始フラグ４３６１が無効化されていることを示す「ＯＦＦ」のいずれかが設定される。更新開始フラグ４３６１には初期値として「ＯＦＦ」が設定される。後述するように、ＣＰＵ４１０は、転送情報ベース４４１および転送情報ベース４６１の更新を開始する場合、コマンド４９０を用いて更新開始フラグ４３６１に「ＯＮ」を設定する。
【００８３】
更新終了フラグ４３６２は、ＣＰＵ４１０が転送情報ベース４４１および転送情報ベース４６１の更新が終了したことを復旧制御部４３０に通知するフラグである。更新終了フラグ４３６２には、更新終了フラグ４３６２が有効化されていることを示す「ＯＮ」、または、更新終了フラグ４３６２が無効化されていることを示す「ＯＦＦ」のいずれかが設定される。更新終了フラグ４３６２には初期値として「ＯＦＦ」が設定される。後述するように、ＣＰＵ４１０は、転送情報ベース４４１および転送情報ベース４６１の更新を終了する場合、コマンド４９０を用いて更新終了フラグ４３６２に「ＯＮ」を設定する。
【００８４】
復旧中フラグ４３６３は、復旧制御部４３０によって揮発性メモリ４６０に転送情報ベース４４１が復旧中であることを示すフラグである。復旧中フラグ４３６３には、復旧中フラグ４３６３が有効化されていることを示す「ＯＮ」、または、復旧中フラグ４３６３が無効化されていることを示す「ＯＦＦ」のいずれかが設定される。復旧中フラグ４３６３には初期値として「ＯＦＦ」が設定される。後述するように、復旧制御部４３０は、データ転送装置４００の再起動時に復旧中フラグ４３６３に「ＯＮ」を設定する。
【００８５】
復旧済フラグ４３６４は、復旧制御部４３０によって揮発性メモリ４６０の転送情報ベース４６１の復旧が終了したことを示すフラグである。復旧済フラグ４３６４には、復旧済フラグ４３６４が有効化されていることを示す「ＯＮ」、または、復旧済フラグ４３６４が無効化されていることを示す「ＯＦＦ」のいずれかが設定される。復旧中フラグ４３６３には初期値として「ＯＦＦ」が設定される。後述するように、復旧制御部４３０は、転送情報ベース４６１の復旧が終了した後に復旧済フラグ４３６４に「ＯＮ」を設定する。
【００８６】
現在時刻４３６５は、ネットワークシステム１００における現在の時刻を表す情報である。現在時刻４３６５に格納される値は復旧制御部４３０の時刻管理部４３４によって管理される。
【００８７】
図７は、実施例の不揮発性メモリ４４０に格納される不揮発性制御情報４４２の一例を示す説明図である。
【００８８】
不揮発性制御情報４４２は、有効化フラグ４４２１、更新中フラグ４４２２、最終更新時刻４４２３、および有効期限４４２４を含む。
【００８９】
有効化フラグ４４２１は、データ転送装置４００の再起動時に、転送情報ベース４４１を用いて揮発性メモリ４６０上に転送情報ベース４６１を復旧するか否か、すなわち、復旧処理が有効か否かを示すフラグである。有効化フラグ４４２１には、有効化フラグ４４２１が有効化されていることを示す「ＯＮ」、または、有効化フラグ４４２１が無効化されていることを示す「ＯＦＦ」のいずれかが設定される。本実施例では、データ転送装置４００の通常運用中に、運用者が「ＯＮ」または「ＯＦＦ」のいずれかを有効化フラグ４４２１に設定する。
【００９０】
有効化フラグ４４２１に「ＯＮ」が設定されている場合にのみ、復旧制御部４３０は復旧処理を実行する。なお、有効化フラグ４４２１には初期値として「ＯＦＦ」が設定される。これによって、データ転送装置４００が初めて起動した場合等、転送情報ベース４４１に全く転送先情報が格納されていない場合に、復旧処理が実行されることを抑止することができる。
【００９１】
また、データ転送装置４００が長時間停止することが予想される場合、有効化フラグ４４２１を「ＯＦＦ」に設定することによって、長時間の停止状態が解除されてデータ転送装置４００が再起動する場合に、復旧処理が実行されることを抑止できる。
【００９２】
更新中フラグ４４２２は、復旧制御部４３０が転送情報ベース４４１および転送情報ベース４６１の更新中であるか否かを示すフラグである。更新中フラグ４４２２には、更新中フラグ４４２２が有効化されていることを示す「ＯＮ」、または、更新中フラグ４４２２が無効化されていることを示す「ＯＦＦ」のいずれかが設定される。更新中フラグ４４２２には初期値として「ＯＦＦ」が設定される。
【００９３】
なお、データ転送装置４００の再起動時に更新中フラグ４４２２が「ＯＮ」の場合、転送情報ベース４４１および転送情報ベース４６１の更新中にデータ転送装置４００が停止したことを意味する。この場合、転送情報ベース４４１および転送情報ベース４６１に格納される転送先情報に不整合が発生している可能性があるため、復旧制御部４３０は復旧処理を実行しない。
【００９４】
最終更新時刻４４２３は、転送情報ベース４４１および転送情報ベース４６１が最後に更新された時刻である。本実施例では、復旧制御部４３０は、ＣＰＵ４１０から転送情報ベース４４１および転送情報ベース４６１の更新終了が通知された場合、当該通知を受信した時点における現在時刻４３６５の値を最終更新時刻４４２３に設定する。
【００９５】
有効期限４４２４は、復旧処理に用いる転送情報ベース４４１の有効期限である。データ転送装置４００の再起動時に、現在時刻４３６５に設定される時刻が有効期限４４２４に設定された有効期限を経過している場合、転送情報ベース４４１に格納される転送先情報が古い可能性がある。この場合、復旧制御部４３０は復旧処理を実行しない。
【００９６】
なお、有効期限４４２４には、あらかじめ固定の期限が設定されてもよいし、データ転送装置４００の運用中に運用者から入力された期限が設定されてもよい。また、有効期限４４２４に設定される期限は、現在時刻４３６５に対する絶対時刻でもよいし、最終更新時刻４４２３からの相対時間でもよい。
【００９７】
図８は、実施例のデータ転送装置４００の通常運用中における転送情報ベース４４１および転送情報ベース４６１の更新処理の流れを説明するシーケンス図である。
【００９８】
ＣＰＵ４１０は、データ転送装置４００の通常運用中に、ルーティングテーブル４２１を更新する（ステップＳ１１０１）。
【００９９】
ルーティングテーブル４２１を更新する契機としては、ネットワークシステム１００の運用者によってルーティングテーブル４２１の情報が設定された場合、または、他のデータ転送装置４００と転送先情報を送受信することによって動的に更新する場合がある。このとき、ＣＰＵ４１０は、エントリを追加する場合には、当該エントリの生成フラグ４２１３に「ＯＮ」を設定する。また、更新されたエントリの生成フラグ４２１３に「ＯＦＦ」が設定されている場合、ＣＰＵ４１０は、生成フラグ４２１３に「ＯＮ」を設定する。
【０１００】
ＣＰＵ４１０は、コマンド４９０を用いて、復旧制御部４３０に転送情報ベース４４１および転送情報ベース４６１の更新開始を通知する（ステップＳ１１０２）。
【０１０１】
具体的には、ＣＰＵ４１０は、ルーティングテーブル４２１が更新された後、コマンド４９０を用いて揮発性制御情報４３６の更新開始フラグ４３６１に「ＯＮ」を設定する。これ以降、ＣＰＵ４１０は、更新されたルーティングテーブル４２１に格納される転送先情報を所定のデータ形式に変換し、変換された転送先情報を含むコマンド４９０を用いて転送情報ベース４４１および転送情報ベース４６１の更新を指示する。なお、ＣＰＵ４１０は、更新された転送先情報のみを送信してもよい。
【０１０２】
復旧制御部４３０は、ＣＰＵ４１０から転送情報ベース４４１および転送情報ベース４６１の更新開始の通知を受信した場合、更新中フラグ４４２２に「ＯＮ」を設定する（ステップＳ１１０３）。
【０１０３】
具体的には、復旧制御部４３０は、更新開始フラグ４３６１に「ＯＮ」が設定されたことを検知することによって、転送情報ベース４４１および転送情報ベース４６１の更新が開始したことを把握して、更新開始フラグ４３６１に「ＯＦＦ」を設定する。その後、復旧制御部４３０は、更新中フラグ４４２２に「ＯＮ」を設定する。
【０１０４】
ＣＰＵ４１０は、更新されたルーティングテーブル４２１を変換することによって生成された転送先情報を含むコマンド４９０を用いて、復旧制御部４３０に転送情報ベース４４１の更新を指示する（ステップＳ１１０４）。
【０１０５】
復旧制御部４３０は、ＣＰＵ４１０から転送情報ベース４４１の更新の指示を受信した場合、不揮発性メモリ４４０に格納される転送情報ベース４４１を更新する（ステップＳ１１０５）。また、復旧制御部４３０は、コマンド４９０を用いて、転送エンジン４５０に対して転送情報ベース４６１の更新を指示する（ステップＳ１１０６）。なお当該コマンド４９０には変換された転送先情報が含まれる。
【０１０６】
転送エンジン４５０は、復旧制御部４３０から転送情報ベース４６１の更新の指示を受信した場合、揮発性メモリ４６０に格納された転送情報ベース４６１を更新する（ステップＳ１１０７）。
【０１０７】
ＣＰＵ４１０は、更新されたルーティングテーブル４２１の転送先情報を全て送信した場合、コマンド４９０を用いて、復旧制御部４３０に転送情報ベース４４１および転送情報ベース４６１の更新終了を通知する（ステップＳ１１０８）。
【０１０８】
具体的には、ＣＰＵ４１０は、コマンド４９０を用いて揮発性制御情報４３６の更新終了フラグ４３６２に「ＯＮ」を設定する。なお、更新された転送先情報にのみが送信される場合、ＣＰＵ４１０は、更新された転送先情報を全て送信した後に、コマンド４９０を用いて揮発性制御情報４３６の更新終了フラグ４３６２に「ＯＮ」を設定する。
【０１０９】
復旧制御部４３０は、ＣＰＵ４１０から転送情報ベース４４１および転送情報ベース４６１の更新終了の通知を受信した場合、現在時刻４３６５に格納される時刻に基づいて最終更新時刻４４２３を更新し（ステップＳ１１０９）、更新中フラグ４４２２に「ＯＦＦ」を設定する（ステップＳ１１１０）。
【０１１０】
具体的には、復旧制御部４３０は、更新終了フラグ４３６２に「ＯＮ」が設定されたことを検知することによって、転送情報ベース４４１および転送情報ベース４６１の更新が終了したことを把握して、更新終了フラグ４３６２に「ＯＦＦ」を設定する。その後、復旧制御部４３０は、最終更新時刻４４２３を更新し、また、更新中フラグ４４２２に「ＯＦＦ」を設定する。
【０１１１】
図９は、実施例の復旧制御部４３０が転送情報ベース４４１および転送情報ベース４６１の更新時に実行する処理を説明するフローチャートである。
【０１１２】
復旧制御部４３０の制御処理部４３３は、データ転送装置４００が起動すると、以下で説明する処理を開始する。まず、制御処理部４３３は、ＣＰＵ４１０からコマンド４９０を受信したか否かを判定する（ステップＳ１２０１）。
【０１１３】
ＣＰＵ４１０からコマンド４９０を受信していない場合（ステップＳ１２０１がＮＯ）、制御処理部４３３は、ステップＳ１２０１に戻り、コマンド４９０を受信するまで同様の判定処理を繰り返し実行する。
【０１１４】
ＣＰＵ４１０からコマンド４９０を受信した場合（ステップＳ１２０１がＹＥＳ）、制御処理部４３３は、受信したコマンド４９０が転送情報ベース４４１および転送情報ベース４６１の更新開始を通知するコマンドであるか否かを判定する（ステップＳ１２０２）。
【０１１５】
具体的には、制御処理部４３３は、受信したコマンド４９０によって揮発性制御情報４３６の更新開始フラグ４３６１に「ＯＮ」が設定されたか否かを判定する。受信したコマンド４９０によって揮発性制御情報４３６の更新開始フラグ４３６１に「ＯＮ」が設定された場合、制御処理部４３３は、受信したコマンド４９０が転送情報ベース４４１および転送情報ベース４６１の更新開始を通知するコマンドであると判定する。
【０１１６】
受信したコマンド４９０が転送情報ベース４４１および転送情報ベース４６１の更新開始を通知するコマンドである場合（ステップＳ１２０２がＹＥＳ）、制御処理部４３３は、不揮発性制御情報４４２の更新中フラグ４４２２に「ＯＮ」を設定する（ステップＳ１２０３）。その後、制御処理部４３３は、ステップＳ１２０１に戻り、コマンド４９０を受信するまで同様の判定処理を繰り返し実行する。
【０１１７】
受信したコマンド４９０が転送情報ベース４４１および転送情報ベース４６１の更新開始を通知するコマンドでない場合（ステップＳ１２０２がＮＯ）、制御処理部４３３は、受信したコマンド４９０が転送情報ベース４４１および転送情報ベース４６１の更新終了を通知するコマンドであるか否かを判定する（ステップＳ１２０４）。
【０１１８】
具体的には、制御処理部４３３は、受信したコマンド４９０によって揮発性制御情報４３６の更新終了フラグ４３６２に「ＯＮ」が設定されたか否かを判定する。受信したコマンド４９０によって揮発性制御情報４３６の更新終了フラグ４３６２に「ＯＮ」が設定された場合、制御処理部４３３は、受信したコマンド４９０が転送情報ベース４４１および転送情報ベース４６１の更新終了を通知するコマンドであると判定する。
【０１１９】
受信したコマンド４９０が転送情報ベース４４１および転送情報ベース４６１の更新終了を通知するコマンドである場合（ステップＳ１２０４がＹＥＳ）、制御処理部４３３は、不揮発性制御情報４４２の更新中フラグ４４２２に「ＯＦＦ」を設定する（ステップＳ１２０５）。その後、制御処理部４３３は、ステップＳ１２０１に戻り、コマンド４９０を受信するまで同様の判定処理を繰り返し実行する。
【０１２０】
受信したコマンド４９０が転送情報ベース４４１および転送情報ベース４６１の更新終了を通知するコマンドでない場合は（ステップＳ１２０４がＮＯ）、制御処理部４３３は、受信したコマンド４９０が、変換された転送先情報を含む転送情報ベース４４１の更新を指示するコマンドであるか否かを判定する（ステップＳ１２０６）。
【０１２１】
受信したコマンド４９０が転送情報ベース４４１の更新を指示するコマンドである場合（ステップＳ１２０６がＹＥＳ）、制御処理部４３３は、当該コマンド４９０に含まれる転送先情報に基づいて不揮発性メモリ４４０に格納される転送情報ベース４４１を更新する（ステップＳ１２０７）。
【０１２２】
また、制御処理部４３３は、転送エンジン４５０に対して転送情報ベース４６１の更新を指示するコマンド４９０を送信することによって、転送エンジン４５０に揮発性メモリ４６０に格納される転送情報ベース４６１の更新を指示する（ステップＳ１２０８）。その後、制御処理部４３３は、ステップＳ１２０１に戻り、コマンド４９０を受信するまで同様の判定処理を繰り返し実行する。
【０１２３】
なお、転送エンジン４５０に送信されるコマンド４９０のデータ４９１５には、ＣＰＵ４１０から受信したコマンド４９０に含まれる転送先情報が含まれる。転送エンジン４５０は、復旧制御部４３０から転送情報ベース４６１の更新指示を受信した場合、コマンド４９０に含まれる転送先情報に基づいて揮発性メモリ４６０に格納される転送情報ベース４６１を更新する。
【０１２４】
受信したコマンド４９０が転送情報ベース４４１の更新を指示するコマンドでない場合（ステップＳ１２０６がＮＯ）、制御処理部４３３は、受信したコマンド４９０に応じた処理を実行する（ステップＳ１２０９）。その後、制御処理部４３３は、ステップＳ１２０１に戻り、コマンド４９０を受信するまで同様の判定処理を繰り返し実行する。
【０１２５】
図１０は、実施例のデータ転送装置４００の再起動時における転送情報ベース４６１の復旧処理の流れを説明するシーケンス図である。
【０１２６】
データ転送装置４００が再起動した場合（ステップＳ１３０１）、ＣＰＵ４１０、復旧制御部４３０、および転送エンジン４５０はそれぞれ起動処理を開始する。
【０１２７】
このとき、ＣＰＵ４１０は、復旧中フラグ４３６３の監視を開始する。復旧中フラグ４３６３に「ＯＮ」が設定されている場合、復旧制御部４３０によって転送情報ベース４６１の復旧処理が実行されるため、ＣＰＵ４１０は、周期的に復旧中フラグ４３６３を監視する。なお、復旧中フラグ４３６３の監視には、復旧中フラグ４３６３に対する読み出しを指示するコマンド４９０が用いられる。また、揮発性メモリ４６０の転送情報ベース４６１は空であるため、転送エンジン４５０はデータの転送処理を開始しない。
【０１２８】
まず、復旧制御部４３０は、復旧中フラグ４３６３に「ＯＮ」を設定する（ステップＳ１３０２）。このとき、復旧制御部４３０は、有効化フラグ４４２１に「ＯＮ」が設定されていることを確認する。
【０１２９】
ＣＰＵ４１０は、復旧中フラグ４３６３に「ＯＮ」が設定されたことを検知した場合、復旧中フラグ４３６３に「ＯＮ」が設定されている間、転送情報ベース４４１および転送情報ベース４６１の更新を抑止する。
【０１３０】
次に、復旧制御部４３０は、更新中フラグ４４２２に「ＯＮ」を設定し（ステップＳ１３０３）、さらに、コマンド４９０を用いて、転送エンジン４５０に対して、転送情報ベース４４１を用いた転送情報ベース４６１の復旧を指示する（ステップＳ１３０４）。なお、転送エンジン４５０に送信されるコマンド４９０のデータ４９１５には転送情報ベース４４１に格納された転送先情報が含まれる。
【０１３１】
転送エンジン４５０は、復旧制御部４３０から転送情報ベース４６１の復旧の指示を受信した場合、受信した転送情報ベース４４１に格納された転送先情報を用いて揮発性メモリ４６０上に転送情報ベース４６１を復旧する（ステップＳ１３０５）。これによって、データ転送装置４００の停止前の転送情報ベース４６１を迅速に復旧できる。転送エンジン４５０は、転送情報ベース４６１の復旧後、データの転送処理を再開することができる。
【０１３２】
復旧制御部４３０は、転送エンジン４５０において転送情報ベース４６１の復旧が終了した後、更新中フラグ４４２２に「ＯＦＦ」を設定する（ステップＳ１３０６）。例えば、復旧制御部４３０は、転送情報ベース４４１に格納される全ての転送先情報を転送エンジン４５０に送信した場合、または、転送エンジン４５０から転送情報ベース４６１を復旧した旨を通知するコマンド４９０を受信した場合、転送情報ベース４６１の復旧が終了したと判定する。
【０１３３】
復旧制御部４３０は、復旧済フラグ４３６４に「ＯＮ」を設定し（ステップＳ１３０７）、さらに、復旧中フラグ４３６３に「ＯＦＦ」を設定する（ステップＳ１３０８）。これによって、転送情報ベース４６１の復旧処理が終了したことＣＰＵ４１０が検知できる。
【０１３４】
ＣＰＵ４１０は、復旧中フラグ４３６３が「ＯＮ」から「ＯＦＦ」に変更されたことを検知した場合、復旧済フラグ４３６４を読み出し、当該フラグに「ＯＮ」が設定されていることを確認した後、コマンド４９０を用いて転送情報ベース４４１の読み出しを復旧制御部４３０に指示する（ステップＳ１３０９）。なお、復旧済フラグ４３６４に「ＯＦＦ」が設定されている場合、ＣＰＵ４１０は、復旧済フラグ４３６４が「ＯＮ」に変更されるまで転送情報ベース４４１の読み出し指示を行わない。
【０１３５】
復旧制御部４３０は、ＣＰＵ４１０から転送情報ベース４４１の読み出しの指示を受信した場合、転送情報ベース４４１に格納される転送先情報を読み出し、コマンド４９０を用いて読み出した転送先情報をＣＰＵ４１０に送信する（ステップＳ１３１０）。
【０１３６】
ＣＰＵ４１０は、読み出された転送情報ベース４４１に格納される転送先情報に基づいて、再度、ルーティングテーブル４２１を生成する（ステップＳ１３１１）。
【０１３７】
具体的には、ＣＰＵ４１０は、転送情報ベース４４１に格納される転送先情報に基づいてルーティングテーブル４２１を生成する。このとき、ＣＰＵ４１０は、ルーティングテーブル４２１に含まれる各エントリの生成フラグ４２１３に「ＯＦＦ」を設定する。
【０１３８】
当該処理の後、ネットワークシステム１００の運用者によって固定的な転送先情報が設定された場合、または、他のデータ転送装置４００とデータの転送先情報を送受信することによって動的に転送先情報が設定された場合等、読み出された転送情報ベース４４１に基づく転送先情報の復旧以外の方法で転送先情報が設定される場合、ＣＰＵ４１０は、エントリの情報を更新し、当該エントリの生成フラグ４２１３に「ＯＮ」を設定する。
【０１３９】
ＣＰＵ４１０は、一定時間が経過後に生成フラグ４２１３に「ＯＦＦ」が設定されているエントリが存在する場合、ルーティングテーブル４２１から当該エントリを削除する。これによって、不要な転送先情報を削除し、また、古い転送先情報を整理することができる。また、ＣＰＵ４１０は、エントリの削除に伴う転送情報ベース４６１の更新を復旧制御部４３０に指示する。
【０１４０】
図１１は、実施例の復旧制御部４３０が実行する転送情報ベース４６１の復旧処理を説明するフローチャートである。
【０１４１】
データ転送装置４００が起動し、ＣＰＵ４１０、復旧制御部４３０、および転送エンジン４５０が起動した後、復旧制御部４３０の制御処理部４３３は以下で説明する処理を開始する。
【０１４２】
まず、制御処理部４３３は、復旧中フラグ４３６３に「ＯＮ」を設定し（ステップＳ１４０１）、転送情報ベース４６１の復旧処理を実行する必要があるか否かを判定する（ステップＳ１４０２）。
【０１４３】
具体的には、制御処理部４３３は、有効化フラグ４４２１に「ＯＮ」が設定されているか否かを判定する。有効化フラグ４４２１に「ＯＮ」が設定されている場合、制御処理部４３３は、転送情報ベース４６１の復旧処理を実行する必要があると判定する。
【０１４４】
転送情報ベース４６１の復旧処理を実行する必要がない場合（ステップＳ１４０２がＮＯ）、制御処理部４３３は、復旧済フラグ４３６４に「ＯＦＦ」を設定し（ステップＳ１４１０）、その後、ステップＳ１４０９に進む。この場合、有効化フラグ４４２１に「ＯＦＦ」が設定されているので、転送情報ベース４６１の復旧処理は実行されず、ＣＰＵ４１０によって通常の起動処理が実行される。
【０１４５】
転送情報ベース４６１の復旧処理を実行する必要がある場合（ステップＳ１４０２がＹＥＳ）、制御処理部４３３は、転送情報ベース４４１および転送情報ベース４６１の更新中にデータ転送装置４００が停止した後の再起動であるか否かを判定する（ステップＳ１４０３）。
【０１４６】
具体的には、制御処理部４３３は、更新中フラグ４４２２に「ＯＮ」が設定されているか否かを判定する。更新中フラグ４４２２に「ＯＮ」が設定されている場合、制御処理部４３３は、転送情報ベース４４１および転送情報ベース４６１の更新中にデータ転送装置４００が停止した後の再起動であると判定する。
【０１４７】
転送情報ベース４４１および転送情報ベース４６１の更新中にデータ転送装置４００が停止した後の再起動である場合（ステップＳ１４０３がＹＥＳ）、制御処理部４３３は、復旧済フラグ４３６４に「ＯＦＦ」を設定し（ステップＳ１４１０）、その後、ステップＳ１４０９に進む。
【０１４８】
転送情報ベース４４１および転送情報ベース４６１の更新中にデータ転送装置４００が停止した場合、転送情報ベース４４１および転送情報ベース４６１に格納される転送先情報に不整合が発生している可能性がある。そのため、転送情報ベース４４１および転送情報ベース４６１の更新中にデータ転送装置４００が停止した後の再起動である場合、復旧制御部４３０は、転送情報ベース４６１の復旧処理の実行を中止し、通常の起動処理が行われるように制御する。
【０１４９】
転送情報ベース４４１および転送情報ベース４６１の更新中にデータ転送装置４００が停止した後の再起動でない場合（ステップＳ１４０３がＮＯ）、制御処理部４３３は、転送情報ベース４４１に設定された有効期限を経過しているか否かを判定する（ステップＳ１４０４）。
【０１５０】
具体的には、制御処理部４３３は、現在時刻４３６５の時刻が有効期限４４２４に設定された有効期限内であるかを判定する。
【０１５１】
転送情報ベース４４１に設定された有効期限を経過している場合（ステップＳ１４０４がＹＥＳ）、制御処理部４３３は、復旧済フラグ４３６４に「ＯＦＦ」を設定し（ステップＳ１４１０）、その後、ステップＳ１４０９に進む。
【０１５２】
転送情報ベース４４１に設定された有効期限を経過している場合、当該転送情報ベース４４１に格納される転送先情報が古い可能性がある。そのため、復旧制御部４３０は、古い転送先情報を格納する転送情報ベース４４１を用いた転送情報ベース４６１の復旧処理の実行を停止し、通常の起動処理が行われるように制御する。
【０１５３】
転送情報ベース４４１に設定された有効期限を経過していない場合（ステップＳ１４０４がＮＯ）、制御処理部４３３は、更新中フラグ４４２２に「ＯＮ」を設定して（ステップＳ１４０５）、揮発性メモリ４６０上に転送情報ベース４６１を復旧させる（ステップＳ１４０６）。
【０１５４】
具体的には、制御処理部４３３は、不揮発性メモリ４４０の転送情報ベース４４１から転送先情報を読み出し、読み出された転送先情報を含むコマンド４９０を、転送情報ベース４６１の復旧指示として転送エンジン４５０に送信する。転送エンジン４５０は、当該コマンド４９０を受信した場合、当該コマンド４９０に含まれる転送先情報に基づいて、転送情報ベース４６１を復旧する。
【０１５５】
制御処理部４３３は、転送情報ベース４６１の復旧が終了した後、更新中フラグ４４２２に「ＯＦＦ」を設定し（ステップＳ１４０７）、さらに、復旧済フラグ４３６４に「ＯＮ」を設定する（ステップＳ１４０８）。
【０１５６】
制御処理部４３３は、例えば、転送情報ベース４４１に格納される全ての転送先情報を転送エンジン４５０に送信した場合、または、転送エンジン４５０から転送情報ベース４６１を復旧した旨を通知するコマンド４９０を受信した場合、転送情報ベース４６１の更新が終了したと判定する。
【０１５７】
ステップＳ１４０８またはステップＳ１４１０の処理が実行された後、制御処理部４３３は、復旧中フラグ４３６３に「ＯＦＦ」を設定する（ステップＳ１４０９）。その後、制御処理部４３３は、転送情報ベース４６１の復旧処理を終了する。
【０１５８】
ＣＰＵ４１０は、復旧中フラグ４３６３に「ＯＦＦ」が設定された場合、転送情報ベース４４１および転送情報ベース４６１の更新を再開する。このとき、復旧済フラグ４３６４の状態に応じて、以下のような処理に分岐する。
【０１５９】
復旧済フラグ４３６４に「ＯＮ」が設定されている場合、ＣＰＵ４１０は、転送情報ベース４４１を用いてルーティングテーブル４２１を再生成して、以後のルーティングテーブル４２１の更新、並びに転送情報ベース４４１および転送情報ベース４６１の更新を行う。
【０１６０】
復旧済フラグ４３６４に「ＯＦＦ」が設定される場合、ＣＰＵ４１０は、揮発性メモリ４６０の転送情報ベース４６１が復旧されていないため、ＣＰＵ４１０は転送情報ベース４４１を用いたルーティングテーブル４２１の生成を行わない。復旧済フラグ４３６４に「ＯＦＦ」が設定される場合、転送情報ベース４４１に誤った転送先情報が格納されている可能性がある。そのため、ＣＰＵ４１０は、通常のデータ転送装置４００の起動時と同様に、転送情報ベース４４１および転送情報ベース４６１を初期化した上で、再度、ルーティングテーブル４２１を生成し、また、転送情報ベース４４１および転送情報ベース４６１を更新する。
【０１６１】
なお、通常のデータ転送装置４００の起動時における転送情報ベース４４１および転送情報ベース４６１を初期化とは、転送情報ベース４４１および転送情報ベース４６１に格納される情報を消去し、新たに転送先情報を格納できる状態にすることを示す。また、ＣＰＵ４１０は、運用者が予め設定した情報等に基づいて、ルーティングテーブル４２１を生成する。
【０１６２】
転送情報ベース４６１の復旧中にデータ転送装置４００が停止した場合、通常の転送情報ベース４４１および転送情報ベース４６１の更新時におけるデータ転送装置４００の停止の場合と同様に、転送情報ベース４４１に不整合が発生する可能性がある。そのため、制御処理部４３３は、更新中フラグ４４２２を操作することによって、転送情報ベース４６１の復旧中にデータ転送装置４００が停止した場合であっても、再起動時に復旧処理が実行されるのを回避できる。
【０１６３】
なお、図１１に示す処理では、ステップＳ１４０４において、制御処理部４３３は、復旧中フラグ４３６３に「ＯＮ」が設定されている場合に、有効期限を経過しているか否かを判定しているが、有効期限を考慮しない場合にはステップＳ１４０４の処理を省略してもよい。
【０１６４】
以上で説明したように、実施例によれば、復旧制御部４３０が、不揮発性メモリ４４０に格納する転送情報ベース４６１のバックアップデータである転送情報ベース４４１の更新を制御し、また、データ転送装置４００の再起動時には転送情報ベース４４１の整合性を確認し、整合性がある場合に転送情報ベース４４１を用いて揮発性メモリ４６０上に転送情報ベース４６１を復旧する。
【０１６５】
転送情報ベース４４１および転送情報ベース４６１に整合性がある場合に不揮発性メモリ４４０に格納される転送情報ベース４４１を用いて転送情報ベース４６１を復旧することによって、データ転送装置４００の再起動時に早期のデータ転送を再開することができる。また、転送情報ベース４４１および転送情報ベース４６１に整合性がない場合には、当該転送情報ベース４４１を用いた転送情報ベース４６１の復旧処理の実行が抑止されるため、誤った転送先へのデータの転送、またはデータ転送装置４００の停止等を回避することができる。
【０１６６】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
【０１６７】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部または全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるＣＰＵが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、およびそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク、光磁気ディスク、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどが用いられる。
【０１６８】
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、Ｃ／Ｃ＋＋、ｐｅｒｌ、Ｓｈｅｌｌ、ＰＨＰ、Ｊａｖａ（登録商標）等の広範囲のプログラムまたはスクリプト言語で実装できる。
【０１６９】
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段またはＣＤ−ＲＷ、ＣＤ−Ｒ等の記憶媒体に格納し、コンピュータが備えるＣＰＵが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
【０１７０】
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
【符号の説明】
【０１７１】
１００  ネットワークシステム
２００  ネットワーク
３００  端末
４００  データ転送装置
４１０  ＣＰＵ
４２０  メインメモリ
４２１  ルーティングテーブル
４３０  復旧制御部
４３１  ＣＰＵインタフェース部
４３２  メモリインタフェース部
４３３  制御処理部
４３４  時刻管理部
４３５  転送エンジンインタフェース部
４３６  揮発性制御情報
４４０  不揮発性メモリ
４４１  転送情報ベース
４４２  不揮発性制御情報
４５０  転送エンジン
４６０  揮発性メモリ
４６１  転送情報ベース
４７０  ポート
４８０  バス
４８５  回線
４９０  コマンド
４２１１  宛先ネットワーク
４２１２  転送先
４２１３  生成フラグ
４３６１  更新開始フラグ
４３６２  更新終了フラグ
４３６３  復旧中フラグ
４３６４  復旧済フラグ
４３６５  現在時刻
４４２１  有効化フラグ
４４２２  更新中フラグ
４４２３  最終更新時刻
４４２４  有効期限
４６１１  アドレス
４６１２  データ
４９１１  宛先デバイス
４９１２  送信元デバイス
４９１３  コマンド種別
４９１４  アドレス
４９１５  データ
【図１】
0006322592.tif 000002
【図２】
0006322592.tif 000003
【図３】
0006322592.tif 000004
【図４】
0006322592.tif 000005
【図５】
0006322592.tif 000006
【図６】
0006322592.tif 000007
【図７】
0006322592.tif 000008
【図８】
0006322592.tif 000009
【図９】
0006322592.tif 000010
【図１０】
0006322592.tif 000011
【図１１】
0006322592.tif 000012