(57)【要約】【課題】転送部と制御部からなるネットワーク装置において、死活監視では稼働中と判断された転送部からの命令の応答がない場合に、制御部や装置全体の障害とさせないことを課題とする。【解決手段】データを転送する複数の転送部と、複数の転送部それぞれに所定の機能を実行させる命令である機能命令を発行する機能部と機能部からの機能命令を複数の転送部それぞれに配布し、配布した機能命令に対する応答を複数の転送部それぞれから受信する命令配布制御部とを有する制御部と、を備え、命令配布制御部は、複数の転送部それぞれに配布した機能命令に対する応答を受信せずにタイムアウトした場合に、機能命令に対する応答があった旨を機能部へ送信する。【選択図】  図２
2016163084.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続される通信装置であって、
前記ネットワークを介してデータを転送する複数の転送部と、
前記転送部に所定の機能を実行させる命令である機能命令を発行する機能部と、前記機能部からの前記機能命令を前記複数の転送部それぞれに配布し、前記機能命令に対する応答を監視する命令配布制御部と、を有する制御部と、
を備え、
前記命令配布制御部は、
前記機能命令に対する応答の監視にて、前記複数の転送部のうち一部の転送部から前記機能命令に対する応答を受信し、残りの転送部から前記機能命令に対する応答を受信せずにタイムアウトした場合に、前記転送部からの前記機能命令に対する応答があった旨を前記機能部へ送信する
ことを特徴とする通信装置。
【請求項２】
請求項１に記載の通信装置であって、
前記命令配布制御部は、
前記機能命令を配布した時刻に関する配布時刻を管理し、
前記制御部は、
前記配布時刻から経過した時間に対する第１閾値を記憶する記憶部をさらに備え、
前記命令配布制御部は、
前記配布時刻および現在の時刻に基づく時間情報と前記第１閾値との比較処理に応じて、前記複数の転送部それぞれからの前記機能命令に対する応答のタイムアウトを判定する
ことを特徴とする通信装置。
【請求項３】
請求項２に記載の通信装置であって、
前記命令配布制御部は、
前記配布時刻と配布した前記機能命令に対する応答の状態とを対応付けて前記複数の転送部毎に管理し、
前記複数の転送部のうち、前記状態が前記機能命令を配布した転送部からの機能命令に対する応答の受信を待っていることを示す応答待ち状態である転送部に関して、前記比較処理を実行し、
前記比較処理の結果、前記時間情報が前記第１閾値より大きい場合に、前記応答待ち状態である転送部から前記機能命令に対する応答を受信せずにタイムアウトしたと判定して、前記転送部からの前記機能命令に対する応答があった旨を前記機能部へ送信する
ことを特徴とする通信装置。
【請求項４】
請求項３に記載の通信装置であって、
前記制御部は、
前記複数の転送部のうち、前記機能命令に対する応答を受信せずにタイムアウトしたと判定された転送部の運用を停止させる制御を行う
ことを特徴とする通信装置。
【請求項５】
請求項４に記載の通信装置であって、
前記制御部は、
前記複数の転送部それぞれの稼働状況を監視する死活監視を行う死活監視部をさらに備え、
前記死活監視部は、
前記死活監視を行う命令である死活監視命令を前記命令配布制御部に発行し、
前記命令配布制御部は、
前記死活監視部からの前記死活監視命令を前記複数の転送部それぞれに配布し、配布した前記死活監視命令に対する応答を前記複数の転送部それぞれから受信すると、受信した前記死活監視命令に対する応答それぞれを前記死活監視部に送信し、
前記死活監視部は、
前記命令配布制御部からの前記死活監視命令に対する応答を受信すると、前記死活監視命令に対する応答を送信した転送部の前記稼働状況は稼働中であると判定する
ことを特徴とする通信装置。
【請求項６】
請求項５に記載の通信装置であって、
前記命令配布制御部は、
前記複数の転送部のうち、前記死活監視部にて稼働中と判定され、かつ、前記状態が、応答待ち状態である転送部に関して、前記比較処理を実行し、
前記比較処理の結果に応じて、前記転送部からの前記機能命令に対する応答があった旨を前記機能部へ送信する
ことを特徴とする通信装置。
【請求項７】
請求項６に記載の通信装置であって、
前記死活監視部は、
前記死活監視命令に対する応答を受信した時刻に関する受信時刻を管理し、
前記記憶部は、
前記受信時刻から経過した時間に対する第２閾値を記憶し、
前記死活監視部は、
前記受信時刻および現在の時刻に基づく時間情報と前記第２閾値との比較処理に応じて、前記死活監視命令に対する応答のタイムアウトを判定し、
前記制御部は、
前記死活監視部がタイムアウトしたと判定した場合、前記複数の転送部のうち、前記死活監視命令に対する応答を受信せずにタイムアウトしたと判定された転送部の運用を停止させる制御を行う
ことを特徴とする通信装置。
【請求項８】
請求項３に記載の通信装置であって、
前記記憶部は、
前記命令配布制御部が管理する、前記複数の転送部毎の前記配布時刻と前記状態との対応を機能命令管理情報として記憶し
前記命令配布制御部は、
前記機能部からの前記機能命令に含まれる機能命令の種類を識別する命令識別子に応じて、前記機能命令を配布する対象の転送部を全ての転送部もしくは一部の転送部に決定し、決定した前記機能命令を配布する対象の転送部に前記機能命令を配布するとともに、前記機能命令管理情報の前記機能命令を配布した転送部に対応する配布時刻に前記機能命令を配布した時刻を、前記機能命令を配布した転送部に対応する状態に応答待ち状態を記録する
ことを特徴とする通信装置。
【請求項９】
請求項８に記載の通信装置であって、
前記命令配布制御部は、
前記機能命令を配布した転送部のうち、前記命令配布制御部にて、もしくは、前記死活監視部にてタイムアウトしたと判定された転送部に対応する前記機能命令管理情報の前記配布時刻および前記状態を削除し、
前記機能命令管理情報の全ての前記状態が、前記機能命令を配布した転送部からの機能命令に対する応答を受信したことを示す応答あり状態である場合、前記転送部からの前記機能命令に対する応答があった旨を前記機能部へ送信する
ことを特徴とする通信装置。
【請求項１０】
請求項４に記載の通信装置であって、
前記機能部は、
前記機能命令を発行した時刻に関する発行時刻から経過した時間に対する閾値であり、前記第１閾値より大きい第２閾値を管理し、
前記発行時刻から前記第２閾値の時間が経過するまでに前記命令配布制御部から転送部からの機能命令に対する応答があった旨を受信しない場合、発行した前記機能命令に対する応答を受信せずタイムアウトしたと判定し、
前記制御部は、
前記機能部がタイムアウトしたと判定した場合、前記複数の転送部それぞれの運用を停止させる制御を行う
ことを特徴とする通信装置。
【請求項１１】
請求項１乃至１０のいずれか一項に記載の通信装置であって、
前記命令配布制御部は、
前記機能命令を配布した転送部のうち、転送部の稼働状況が稼働中から停止中へ遷移した転送部以外の転送部から配布した前記機能命令に対する応答を受信すると、前記転送部からの前記機能命令に対する応答があった旨を前記機能部へ送信する
ことを特徴とする通信装置。
【請求項１２】
ネットワークを介してデータを転送する複数の転送装置に接続される制御装置であって、
前記複数の転送装置の運用を制御する転送装置制御部と、
前記転送装置に所定の機能を実行させる命令である機能命令を発行する機能部と、
前記機能部からの前記機能命令を前記複数の転送装置それぞれに配布し、前記機能命令に対する応答を監視する命令配布制御部と、
を備え、
前記命令配布制御部は、
前記機能命令に対する応答の監視にて、前記複数の転送装置のうち一部の転送装置から前記機能命令に対する応答を受信し、残りの転送装置から前記機能命令に対する応答を受信せずにタイムアウトした場合に、前記転送装置から前記機能命令に対する応答があった旨を前記機能部へ送信し、
前記転送装置制御部は、
前記複数の転送装置のうち、前記機能命令に対する応答を受信せずにタイムアウトしたと判定された転送装置の運用を停止させる制御を行う
ことを特徴とする制御装置。
【請求項１３】
請求項１２に記載の制御装置であって、
前記機能命令を配布した時刻に関する配布時刻から経過した時間に対する第１閾値を記憶する記憶部をさらに備え、
前記命令配布制御部は、
前記配布時刻と配布した前記機能命令に対する応答の状態とを対応付けて前記複数の転送装置毎に管理し、
前記複数の転送装置のうち、前記状態が前記機能命令を配布した転送装置からの機能命令に対する応答の受信を待っていることを示す応答待ち状態である転送装置に関して、前記配布時刻および現在の時刻に基づく時間情報と前記第１閾値との比較処理を実行し、
前記比較処理の結果に応じて、前記機能命令に対する応答のタイムアウトを判定する
ことを特徴とする制御装置。
【請求項１４】
請求項１３に記載の制御装置であって、
前記複数の転送装置それぞれの稼働状況を監視する死活監視を行う死活監視部をさらに備え、
前記死活監視部は、
前記死活監視を行う命令である死活監視命令を前記命令配布制御部に発行し、
前記命令配布制御部は、
前記死活監視部からの前記死活監視命令を前記複数の転送装置それぞれに配布し、配布した前記死活監視命令に対する応答を前記複数の転送装置それぞれから受信すると、受信した前記死活監視命令に対する応答それぞれを前記死活監視部に通知し、
前記死活監視部は、
前記命令配布制御部からの前記死活監視命令に対する応答を受信すると、前記死活監視命令に対する応答を送信した転送装置の前記稼働状況は稼働中であると判定し、
前記命令配布制御部は、
前記複数の転送装置のうち、前記死活監視部にて稼働中と判定され、かつ、前記状態が応答待ち状態である転送装置に関して、前記比較処理を実行し、
前記機能部は、
前記機能命令を発行した時刻に関する発行時刻から経過した時間に対する閾値であり、前記第１閾値より大きい第２閾値を管理し、
前記発行時刻から前記第２閾値の時間が経過するまでに前記命令配布制御部から機能命令に対する応答を受信しない場合、発行した前記機能命令に対する応答を受信せずタイムアウトしたと判定し、
前記転送装置制御部は、
前記機能部がタイムアウトしたと判定した場合、前記複数の転送装置それぞれの運用を停止させる制御を行う
ことを特徴とする制御装置。
【請求項１５】
ネットワークに接続される通信システムであって、
前記ネットワークを介してデータを転送する複数の転送装置と、
前記複数の転送装置の運用を制御する転送装置制御モジュールと、前記複数の転送装置それぞれの稼働状況を監視する死活監視を行う命令である死活監視命令を発行する死活監視モジュールと、前記転送装置に所定の機能を実行させる命令である機能命令を発行する機能モジュールと、前記死活監視モジュールからの前記死活監視命令および前記機能モジュールからの前記機能命令を前記複数の転送装置それぞれに配布し、前記機能命令に対する応答および前記死活監視命令に対する応答を監視する命令配布制御モジュールと、を有する制御装置と、
を備え、
前記命令配布制御モジュールは、
前記機能命令に対する応答の監視にて、前記複数の転送装置のうち一部の転送装置から前記機能命令に対する応答を受信し、残りの転送装置から前記機能命令に対する応答を受信せずにタイムアウトした場合に、前記転送装置からの前記機能命令に対する応答があった旨を前記機能モジュールへ送信するとともに、前記タイムアウトした残りの転送装置に関する情報を前記転送装置制御モジュールへ送信し、
前記死活監視命令に対する応答の監視にて、前記複数の転送装置それぞれから前記死活監視命令に対する応答を受信すると、受信した前記死活監視命令に対する応答それぞれを前記死活監視モジュールに送信し、
前記死活監視モジュールは、
前記命令配布制御モジュールから前記複数の転送装置のうち一部の転送装置からの前記死活監視命令に対する応答を受信し、残りの転送装置からの前記死活監視命令に対する応答を受信せずにタイムアウトした場合に、前記タイムアウトした残りの転送装置に関する情報を前記転送装置制御モジュールへ送信し、
前記転送装置制御モジュールは、
前記命令配布制御モジュールもしくは前記死活監視モジュールから前記タイムアウトした残りの転送装置に関する情報を受信すると、前記タイムアウトした残りの転送装置の運用を停止させる制御を行う
ことを特徴とする通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は通信装置、制御装置および通信システムに関する。
【背景技術】
【０００２】
本技術分野の背景技術として、例えば、特開２０１４−１５８０９３号公報（特許文献１）がある。この公報には、フレームを転送するフレーム処理部が1つ以上存在し，それらフレーム処理部を制御する制御部からなるフレーム転送装置において、制御部に存在する統計制御プログラムが個々のフレーム処理部それぞれに対して面切替指示などの制御信号を送信し、フレーム処理部は、受信した指示に従って動作し、動作結果を制御部に送信することが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−１５８０９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１が開示するような制御部と転送部（特許文献１ではフレーム処理部に相当）が分離されている従来のネットワーク装置では、一般的に、制御部に存在する各機能部が、転送部に対して転送部の動作を制御する指示（命令）を発行する。また、各機能部は、命令に対する応答の時間に関する閾値を管理し、転送部から応答がなく、タイムアウトを検知すると、転送部の故障（障害）と判断する。
【０００５】
各機能部が、個々の転送部それぞれに対して命令を発行すると、各機能部での制御が煩雑となるため、制御部内に命令の配布を制御する命令配布制御モジュールを配置し、命令配布制御モジュールが、各機能部が発行した命令を各転送部へ配布する。また、命令配布制御モジュールは、全ての転送部から命令に対する応答を受信すると、全ての転送部からの応答をまとめた上で１つの応答として各機能部に対して送信する。
【０００６】
このように、従来のネットワーク装置では、命令配布制御モジュールを複数の転送部と各機能部との間に設け、複数の転送部に対する命令配布と各機能部への応答を命令配布制御モジュールが担うことで、各機能部での複数の転送部の管理負担を低減している。つまり、複数の転送部からの応答を命令配布制御モジュールが制御し、複数の転送部からの応答を転送部全体の１つの応答として各機能部に送信することで、各機能部は、命令を配布する転送部の個数を意識することなく、複数の転送部からの応答を転送部の個数分受信することもなくなり、各機能部での命令発行と応答の制御を簡易にしている。
【０００７】
また、制御部は、死活監視に関する命令を命令配布制御モジュールを介して転送部に発行して転送部の死活監視を行い、死活監視に関する命令に応答しない転送部を故障と判定して転送部を停止させる停止処理を実行する。
【０００８】
このような構成において、機能部は、命令を発行するとこの命令に対する応答を待ち、命令配布制御モジュールは、各転送部へ命令を配布し、各転送部からの応答を待つ。死活監視で稼働中と判定された転送部から応答がない場合、命令配布制御モジュールは、この転送部からの応答を待ち続けることになり、既に受信した他の転送部からの応答も各機能部へ送信できない状態が発生する。
【０００９】
この場合、各機能部では、命令配布制御モジュールからの応答を待ち続けた結果、応答のタイムアウトを検知すると、転送部または命令配布制御モジュールなどの制御部に故障が発生していると判定し故障部位を停止させる。転送部を停止させる場合、各機能部は、各転送部を意識していないため、応答待ちの転送部のみを停止させることはできず、既に応答を受信した転送部も含めて、全ての転送部を故障と判定して停止させることになる。また、各機能部は、転送部または命令配布制御モジュールなどの制御部に故障が発生していると判定した場合に、制御部、または、装置全体を再起動するなどによって復旧を試みる。再起動中の制御部は、命令の配布制御ができなくなるため、転送部を含めて停止させることとなる。いずれの場合にも命令に対して応答した転送部の制御ができなくなるという課題がある。
【課題を解決するための手段】
【００１０】
本発明は上述の課題を解決するために、代表的な本発明の通信装置の１つは、ネットワークを介してデータを転送する複数の転送部と、転送部に所定の機能を実行させる命令である機能命令を発行する機能部と、機能部からの機能命令を複数の転送部それぞれに配布し、機能命令に対する応答を監視する命令配布制御部と、を有する制御部と、を備える。
【００１１】
制御部の命令配布制御部は、機能命令に対する応答の監視にて、複数の転送部のうち一部の転送部から機能命令に対する応答を受信し、残りの転送部から機能命令に対する応答を受信せずにタイムアウトした場合に、転送部からの機能命令に対する応答があった旨を機能部へ送信する。
【発明の効果】
【００１２】
本発明によれば、制御部が配布した命令に対して応答した転送部の運用を継続する。
上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１３】
【図１】ネットワーク装置の構成図の例である。
【図２】制御部上で動作するソフトウェア構成を示す構成図の例である。
【図３Ａ】機能命令管理テーブルの構成例である。
【図３Ｂ】機能命令管理テーブルの構成例である。
【図３Ｃ】機能命令管理テーブルの構成例である。
【図４Ａ】転送部状態管理テーブルの構成例である。
【図４Ｂ】転送部状態管理テーブルの構成例である。
【図５Ａ】死活監視管理テーブルの構成例である。
【図５Ｂ】死活監視管理テーブルの構成例である。
【図５Ｃ】死活監視管理テーブルの構成例である。
【図６】閾値管理テーブルの構成例である。
【図７】死活監視モジュールが実行する死活監視命令を発行する際の処理を示すフローチャートの例である。
【図８】命令配布制御モジュールが命令を受信した際の処理を示すフローチャートの例である。
【図９】命令配布制御モジュールが送信した命令に対する応答を転送部から受信した際の処理を示すフローチャートの例である。
【図１０】死活監視モジュールが死活監視命令に対する応答を転送部から受信した際の処理を示すフローチャートの例である。
【図１１】死活監視モジュールが実行する死活監視命令のタイムアウトを監視する処理を示すフローチャートの例である。
【図１２】死活監視モジュールが実行する死活監視タイムアウトチェック処理を示すフローチャートの例である。
【図１３】命令配布制御モジュールが機能命令のタイムアウトを検出する処理を示すフローチャートの例である。
【図１４】命令配布制御モジュールが実行する機能命令タイムアウトチェック処理を示すフローチャートの例である。
【図１５Ａ】具体的動作における転送部状態管理テーブルの状態遷移の例である。
【図１５Ｂ】具体的動作における転送部状態管理テーブルの状態遷移の例である。
【図１５Ｃ】具体的動作における転送部状態管理テーブルの状態遷移の例である。
【発明を実施するための形態】
【００１４】
以下実施の形態について、実施例を用いて図面を参照しながら説明する。なお、同じ構成要素は同じ参照番号を振り、説明は繰り返さない。
【００１５】
図１は、実施例におけるネットワーク装置１の構成図の例である。
ネットワーク装置１は、外部から受信したデータ（パケットやフレーム）を他の装置に転送したり、中継したり、終端する通信装置である。ネットワーク装置１は、ネットワーク装置１全体の制御処理を行う１つ以上の制御部２と、データの転送処理を行う１つ以上の転送部３を含み、各部位は、図示しないポートを介して、バス、またはネットワークにより接続され、相互に通信する。なお、以下の説明で、転送部３は複数存在するが、個々を区別しない場合は、凡例で示した符号３により総称する。一方、個々を区別する場合には、たとえば、転送部３−１というように、一意に特定できる符号を用いる。
【００１６】
制御部２は、１つ以上のプロセッサ２０を含み、プロセッサ２０がメモリ２４に格納されたプログラムをロードして実行する（処理する）ことによって、機能部２１、転送部制御モジュール２２、命令配布制御モジュール２３、死活監視モジュール２５などを実現する。メモリ２４は、命令配布制御モジュール２３が制御し、更新する機能命令管理テーブル２６を格納する。また、メモリ２４は、各種プログラムと、各種プログラムが利用する他の各種テーブルを格納する。
【００１７】
機能部２１は、ネットワーク装置１で動作する各種の機能モジュールである。機能部２１は、ユーザ（保守者）からの設定による処理や、他の機能部２１からの通知による処理、外部から受信したパケットのプロトコルに従う処理など、機能部２１で処理した結果を命令として命令配布制御モジュール２３を介して転送部３へ通知する（発行する）命令発行処理を行う。また、機能部２１は、発行した命令に対する応答を命令配布制御モジュール２３を介して受信すると、転送部３での命令が実行されたと判定して次の命令発行処理を行う。
【００１８】
また、機能部２１は、命令を発行した時刻と命令に対する応答の時間に関する閾値（タイムアウト時間）を管理しており、現在時刻および命令を発行した時刻と応答の時間に関する閾値とを比較して、応答のタイムアウトを確認する。機能部２１は、命令配布制御モジュール２３から応答を受信しない場合、転送部３の故障と判定して、転送部制御モジュール２２へ転送部３の停止を指示する。
機能部２１の例としては、物理ポート制御機能、リンクアグリゲーション制御機能、レイヤ2制御機能、レイヤ3制御機能などが挙げられる。機能部２１が通知する命令は、機能部２１で処理した結果であり、転送部３の動作を指示するもの（転送部３に所定の機能を実行させるもの）である。
【００１９】
機能部２１が通知する命令には、命令の種類を示す情報である命令識別子と命令を受信した転送部３での動作内容を示す命令内容が含まれる。命令の種類とは、ポートアップやポートダウン、リンクアグリゲーション、経路追加など、機能部２１が指示する命令を識別する情報である。例えば、機能部２１−１が通知する命令に、命令識別子として「１」、命令内容として「全ポートをリンクアップ」が含まれる場合、この命令は、「全ポートをリンクアップさせることを指示する」命令である。なお、機能部２１は、メモリ２４に予め格納される、命令識別子「１」が「ポートアップ」を意味するなどのように命令識別子とその命令の種類とが対応する情報を管理する。
【００２０】
また、機能部２１は、通知する命令の通知順序を制御するシーケンス番号を管理してもよい。これにより、同じ命令識別子「１」の命令であっても、何番目に通知した命令かを識別することができる。また、命令識別子を「１１」のように管理して、命令の種類を示す情報とシーケンス番号を示す情報とを１つの命令識別子で管理してもよい。なお、命令識別子の値は例である。また、機能命令には、発行した機能命令に対する応答を受信してから次の機能命令の発行が可能となる機能命令や、応答の受信を待つことなく次々に機能命令の発行が可能である機能命令などがある。また、機能部を命令発行部と表現してもよい。
【００２１】
転送部制御モジュール２２は、転送部３の動作を制御する機能を有し、機能部２１や死活監視モジュール２５からの指示により、転送部３の障害などを検出した際に当該転送部３を停止させる機能を有する。
死活監視モジュール２５は、各転送部３に対する死活監視を実施する機能を有し、死活監視を行う命令を命令配布モジュール２３を介して転送部３に通知（発行）する機能を有する。死活監視モジュール２５は、発行した命令に対する応答を命令配布制御モジュール２３を介して受信すると、命令の通知先の転送部３が稼動していると判定する。
【００２２】
また、死活監視モジュール２５は、発行した命令とその応答のタイムアウトを確認する機能を有し、命令配布制御モジュール２３から応答を受信せず、タイムアウトした場合、命令の通知先の転送部３が故障などで稼動していないと判定して、転送部制御モジュール２２へ転送部３の停止を指示する。死活監視モジュール２５が通知する命令には、命令識別子と命令の通知先の転送部３を特定する情報（転送部番号）である命令通知先が含まれる。
【００２３】
例えば、死活監視モジュール２５が通知する命令に、命令識別子として「０」、命令通知先として「１（転送部３−１を示す情報）」が含まれる場合、この命令は、「死活監視モジュール２５が転送部３−１に死活監視を行う」命令である。なお、死活監視モジュール２５には、命令識別子「０」が「死活監視」を意味するなどのように、命令識別子とその命令の種類とが対応する情報が予め格納されている。なお、命令識別子の値は例である。
以下では、機能部２１が通知する命令を「機能命令」、死活監視モジュール２５が通知する命令（死活監視を行う命令）を「死活監視命令」と呼び、「機能命令」と「死活監視命令」を区別しない場合は、単に「命令」と表記する。
【００２４】
命令配布制御モジュール２３は、機能部２１や死活監視モジュール２５から通知される命令を管理し、転送部３へと命令を配布（送信、発行）する機能を有する。命令配布制御モジュール２３を命令発行制御モジュール２３とも呼ぶ。命令配布制御モジュール２５は、メモリ２４に予め格納される、命令識別子と命令の種類とが対応する情報を管理する。この情報によって、命令配布制御モジュール２５は、命令と命令の送信元（機能部２１または死活監視モジュール２５）とを対応付ける。また、命令配布制御モジュール２５は、メモリ２４に予め格納される、命令識別子および命令内容と通知先とが対応する情報（機能命令通知先情報）を管理する。
【００２５】
また、命令配布制御モジュール２５は、受信した命令の命令識別子と命令内容または命令通知先とを解析して命令の通知先の転送部３を決定し、決定した転送部３に命令を配布する。つまり、命令配布制御モジュール２５は、受信した命令を解析し、命令に含まれる命令識別子が機能命令を示す場合、機能命令に含まれる命令内容から機能命令の通知先の転送部３を決定し、命令識別子が死活監視命令を示す場合、死活監視命令に含まれる命令通知先から死活監視命令の通知先の転送部３を決定し、全転送部３宛てまたは一部の転送部３宛てに命令を配布する。
【００２６】
命令配布制御モジュール２５が転送部３に送信する命令には、機能部２１または死活監視モジュール２５から受信した命令に、命令の通知先の転送部３を特定する情報（転送部番号）が含まれる。また、命令配布制御モジュール２５は、転送部３へ配布した機能命令とその応答のタイムアウトを確認する機能を有する。命令配布制御モジュール２５は、一部の転送部３からの応答を受信せず、タイムアウトした場合、この転送部３からの応答があったものとして、機能部２１に応答を送信する。
【００２７】
転送部３は、１つ以上のプロセッサと、１つ以上の転送エンジン１１と、１つ以上のポート１２を含む。転送部３が２つ以上である場合、転送部３間はバス、またはネットワークにより接続されている。ネットワーク装置１は、ポート１２を介して、外部のネットワークや他の通信装置に接続される。
転送エンジン１１は、任意のポート１２から受信したデータの宛先情報の検索処理をおこない、制御部２への転送や、同一転送部３上の他のポート１２への転送や、別の転送部３の任意のポート１２に転送する。
【００２８】
転送部３には、命令識別子と命令の種類とが対応する情報が予め格納されており、転送部３は、制御部２から命令を受信すると、受信した命令を解析し、命令に含まれる命令識別子から機能命令か死活監視命令か特定する。機能命令の場合、機能命令に含まれる命令内容に従って動作し、動作後、制御部２に応答を送信する。死活監視命令の場合、制御部２に応答を送信する。
【００２９】
次に、制御部２と転送部３間の命令の送受信について説明する。制御部２の命令配布制御モジュール２３は、機能部２１から機能命令を受信すると、機能命令管理テーブル２６に受信した機能命令に関する情報を格納し、決定した機能命令を送信する対象の転送部３に機能命令を送信する。また、命令配布制御モジュール２３は、死活監視モジュール２５から死活監視命令を受信すると、死活監視命令に含まれる命令通知先の転送部３に死活監視命令を送信する。
【００３０】
転送部３は受信した命令に従って動作し、命令に対する応答を制御部２に送信する。機能命令に対する応答には、受信した命令の命令識別子と応答を送信した転送部３を特定する情報（転送部番号）と命令の実行結果となどが含まれ、死活監視命令に対する応答には、受信した命令の命令識別子と応答を送信した転送部３を特定する情報（転送部番号）となどが含まれる。
【００３１】
制御部２の命令配布制御モジュール２３は、機能命令を送信した全ての転送部３から機能命令に対する応答を受信すると、この応答に対応する機能命令管理テーブル２６に格納した機能命令に関する情報を削除し、機能部２１に応答を送信する。また、命令配布制御モジュール２３は、機能命令を送信した全ての転送部３のうち一部の転送部３から応答を受信し、残りの転送部３からの応答がタイムアウトした場合、機能命令管理テーブル２６に格納した機能命令に関する情報のうち、応答がタイムアウトした転送部３に関する情報を削除し、機能部２１に応答を送信する。
また、命令配布制御モジュール２３は、死活監視命令を送信した転送部３から死活監視命令に対する応答を受信すると、死活監視モジュール２５に応答を送信する。
【００３２】
ここで、従来のネットワーク装置での課題を詳細に説明する。従来のネットワーク装置では、機能部は、命令配布制御モジュールを介して各転送部へ機能命令を発行すると、この機能命令に対する応答を待つため、死活監視にて稼働中と判定された転送部からの応答がない場合、機能部でのタイムアウト検出まで機能部は転送部からの応答を待ち続けることになり、この機能部は新たな機能命令を発行できない機能部の動作が停止する状態が発生する可能性がある。
【００３３】
また、機能部でのタイムアウトを検出した場合、機能部は、転送部が正常に稼働していないと判定して、命令配布制御モジュールに対して機能命令に対する応答を送信した正常に稼働している転送部も含めて停止させる処理を実行して、正常な転送部の制御ができなくなってしまう可能性がある。
このように、従来のネットワーク装置では、機能部の動作が停止し、正常な転送部の制御ができなくなる結果、制御部やネットワーク装置全体の故障となってしまい、制御部やネットワーク装置全体が停止する恐れがある。
【００３４】
また、機能命令に対する応答のタイムアウト検出を待つ間に、制御部が配布可能な有限な命令数の上限に達すると、制御部は、新規の機能命令を発行できなくなり、機能部の動作が停止し、制御部で障害が発生し、制御部やネットワーク装置全体が停止する恐れがある。
【００３５】
図２は、制御部２０上で動作するソフトウェア構成を示す構成図の例である。制御部２０上で動作するソフトウェアは1つ以上の機能部２１、転送部制御モジュール２２、命令配布制御モジュール２３、死活監視モジュール２５から構成される。また、制御部２０のメモリ２４は、転送部制御モジュール２２、命令配布制御モジュール２３、死活監視モジュール２５が利用するテーブルとして、転送部状態管理テーブル２７、閾値管理テーブル２９を格納する。また、メモリ２４は、命令配布制御モジュール２３が利用するテーブルとして、機能命令管理テーブル２６を格納し、死活監視モジュール２５が利用するテーブルとして、死活監視管理テーブル２８を格納する。
【００３６】
機能命令管理テーブル２６は、命令配布制御モジュール２３が転送部３に対して送信した機能命令に関する情報を格納する。転送部状態管理テーブル２７は、転送部３の運用状態に関する情報を格納する。死活監視管理テーブル２８は、死活監視モジュール２５が実行する死活監視に関する情報を格納する。閾値管理テーブル２９は、命令を送信してから命令に対する応答を受信するまでの時間に対する閾値（タイムアウト時間）に関する情報を格納する。
【００３７】
転送部制御モジュール２２は、転送部状態管理テーブル２７を参照し更新して、転送部３の運用状態を管理する。命令配布制御モジュール２３は、機能部２１から機能命令を受信すると、機能命令管理テーブル２６を参照し更新して、命令配布制御モジュール２３が転送部３に対して送信した機能命令を管理する。死活監視モジュール２５は、転送部３から命令配布制御モジュール２３を介して死活監視命令に対する応答を受信すると、死活監視管理テーブル２８を参照し更新して、転送部３から受信した死活監視命令に対する応答の受信時刻を管理する。命令配布制御モジュール２３と死活監視モジュール２５は、閾値管理テーブル２９を参照して、命令のタイムアウトを確認する。
【００３８】
図３Ａ、図３Ｂ、図３Ｃは機能命令管理テーブル２６の構成例である。機能命令管理テーブル２６は、命令配布制御モジュール２３により管理され、更新される。機能命令管理テーブル２６は有限な命令数分のエントリ（テーブルの行成分）からなり、要素としてエントリ状態２６１と、命令識別子２６２と、通知状態２６５とを持つ。
【００３９】
エントリ状態２６１は、エントリの使用状態を示す情報であり、「未使用」「使用中」のどちらかの状態を持つ。エントリ状態２６１以外の要素はエントリ状態２６１が「使用中」の場合に有効となる。つまり、エントリ状態２６１はエントリが有効か無効かを示す。命令識別子２６２は、機能命令の種類を示す情報である。命令識別子２６２に機能部２１が指示する機能命令を識別する情報を格納することで、機能命令と機能命令を処理する転送部３を対応付けられるような命令識別子体系とすることができる。
【００４０】
通知状態２６５は、転送部３の機能命令に対する応答状況を示す情報である。通知状態２６５は、接続する転送部３を識別する情報である転送部番号２６６ごとに状態２６７と発行時刻２６８を持つ。図３の例では、転送部３−１の通知状態２６５が転送部番号２６６−１に、転送部３−２の通知状態２６５が転送部番号２６６−２に格納される。
【００４１】
状態２６７は、転送部３の命令に対する応答状態を示す情報であり、発行時刻２６８は、機能命令を転送部３へ発行した（送信した、配布した）時刻を示す情報である。発行時刻は、配布時刻とも呼ぶ。状態２６７は、初期値「-」、「応答待ち」、「応答あり」のいずれかの状態を持つ。発行時刻２６８は、状態２６７が「応答待ち」の場合に有効となり、ネットワーク装置１内の時刻管理モジュール（不図示）が管理する時刻が格納される。
【００４２】
例えば、エントリ２６０は、命令識別子が「１」（命令識別子２６２）の機能命令が「転送部３−１」と「転送部３−２」に対して「１０時２０分０１秒」（発行時刻２６８−１，２６８−２）に発行され、「転送部３−１」と「転送部３−２」ともに機能命令に対する応答状態が「応答待ち」（状態２６７−１，２６７−２）であることを示す。
図３Ａ、図３Ｂ、図３Ｃは、命令配布制御モジュール２３による更新前後の状態遷移を示す。なお、発行時刻２６８は、転送部３毎に管理せず、転送部３としてまとめて管理してもよい。
【００４３】
図４Ａ、図４Ｂは、転送部状態管理テーブル２７の構成例である。転送部状態管理テーブル２７は、転送部制御モジュール２２により管理され、更新される。転送部状態管理テーブル２７は、ネットワーク装置１に搭載される転送部３の数分のエントリからなり、要素として転送部番号２７１、運用状態２７２を持つ。転送部番号２７１は、転送部３を特定する情報である。図４の例では、転送部番号２７１「１」は、転送部３−１を特定し、転送部番号２７１「２」は、転送部３−２を特定する。運用状態２７２は、転送部３の現在の状態を示す情報であり、「運用中」と「停止中」のいずれかの状態を持つ。
図４Ａ、図４Ｂは、転送部制御モジュール２２による更新前後の状態遷移を示す。
【００４４】
図５Ａ、図５Ｂ、図５Ｃは、死活監視管理テーブル２８の構成例である。死活監視管理テーブル２８は、死活監視モジュール２５により管理、更新される。死活監視管理テーブル２８は、ネットワーク装置１に搭載される転送部３の数分のエントリからなり、要素として転送部番号２８１、死活監視命令応答受信時刻２８２を持つ。
【００４５】
転送部番号２８１は、転送部３を特定する情報である。図４の転送部番号２７１と同様である。死活監視命令応答受信時刻２８２は、死活監視命令を送信した転送部３から死活監視命令に対する応答を受信した時刻を示す情報である。
図５Ａ、図５Ｂ、図５Ｃは、死活監視モジュール２５による更新前後の状態遷移を示す。
【００４６】
図６は、閾値管理テーブル２９の構成例である。閾値管理テーブル２９は、命令に対する応答の時間に関する閾値（タイムアウト時間）を格納する。閾値管理テーブル２９は、命令配布制御モジュール２３と死活監視モジュール２５により参照される。閾値管理テーブル２９は、要素として機能命令タイムアウト時間２９１と死活監視タイムアウト時間２９２を持つ。機能命令タイムアウト時間２９１は、命令配布制御モジュール２３が機能命令を転送部３に送信してから、機能命令に対する応答を受信するまでの時間に対する閾値（タイムアウト時間）を示す情報であり、死活監視タイムアウト時間２９２は、死活監視モジュール２５が死活監視命令を転送部３に送信してから、死活監視命令に対する応答を受信するまでの時間に対する閾値（タイムアウト時間）を示す情報である。
【００４７】
本テーブル２９の各値は、ネットワーク装置１内に固定的に保持される。あるいは、ユーザ（保守者）によるコンフィグレーション入力により設定される。なお、機能命令タイムアウト時間２９１の値は、機能部２１が管理する機能部２１の閾値の値よりも小さい値であることが望ましい。また、死活監視タイムアウト時間２９２の値は、機能命令タイムアウト時間２９１の値よりも小さい値であることが望ましい。
【００４８】
制御部２から転送部３へ命令を送信する際の動作を説明する。
機能部２１は、ユーザ（保守者）からの設定や、他の機能部２１からの通知、外部からのパケット受信などをトリガに命令発行処理を実行する。具体的には、機能部２１は、命令発行処理を開始すると、ユーザからの設定などにより処理した結果に対応する命令識別子と命令内容を含む機能命令を命令配布制御モジュールに発行する。
【００４９】
死活監視モジュール２５は、図７に示す死活監視命令の発行処理を実行する。
図７は、死活監視モジュール２５が実行する死活監視命令を発行する際の処理を示すフローチャートの例である（Ｓ９０）。本処理（Ｓ９０）は、繰り返し、例えば一定の時間ごとに周期的に実行される。本実施例では、T1秒ごとに実行されるものとする。
【００５０】
死活監視モジュール２５は、転送部状態管理テーブル２７の転送部番号２７１で示されるエントリ数分、以下の繰り返し処理をおこなう（Ｓ９１〜Ｓ９５）。図４の例では、転送部番号２７１が「１」のエントリについて繰り返し処理（Ｓ９１〜Ｓ９５）を行い、次に転送部番号２７１が「２」のエントリについて繰り返し処理（Ｓ９１〜Ｓ９５）を行う。
【００５１】
最初に、死活監視命令が発行可能かを確認するために、死活監視モジュール２５は、転送部状態管理テーブル２７の転送部番号２７１に該当する運用状態２７２を取得する（Ｓ９２）。次に死活監視モジュール２５は、取得した運用状態２７２が「運用中」であるかを判定する（Ｓ９３）。判定した結果、YESの場合（Ｓ９３：ＹＥＳ）、転送部番号２７１が示す該当する転送部３へと死活監視命令を送信するよう、転送部番号２７１の値とともに死活監視命令を命令配布制御モジュール２３に発行する（Ｓ９４）。つまり、命令識別子に「死活監視」を示す値である「０」を格納し、転送部番号２７１の値を命令通知先に格納した死活監視命令を発行する（S９４）。
【００５２】
一方、ステップＳ９３の判定結果がNOの場合（Ｓ９３：ＮＯ）、死活監視命令が発行可能でないので、死活監視モジュール２５は、転送部状態管理テーブル２７の次のエントリについて繰り返し処理（Ｓ９１〜Ｓ９５）を行う。転送部状態管理テーブル２７の全てのエントリについて繰り返し処理を行うと、本フロー（Ｓ９０）を終了する。
【００５３】
図８は、命令配布制御モジュール２３が、命令を受信した際の処理を示すフローチャートの例である（Ｓ７０）。命令配布制御モジュール２３は、機能部２１や死活監視モジュール２５から命令を受信すると本フロー（Ｓ７０）を開始する。命令配布制御モジュール２３は、受信した命令を解析し、受信した命令に含まれる命令識別子が機能命令を示す命令識別子か判定する（Ｓ７７）。命令識別子が機能命令を示す命令識別子である場合（Ｓ７７：ＹＥＳ）、命令配布制御モジュール２３は、機能命令管理テーブル２６のすべてのエントリのうち、エントリ状態２６１が「未使用」のエントリがあるかを確認する（Ｓ７１）。
【００５４】
確認したエントリ状態２６１に「未使用」がない場合（Ｓ７１：ＮＯ）、命令配布制御モジュール２３は、再度ステップＳ７１を実行する。この場合、命令配布制御モジュール２３は、エントリが解放されて、エントリ状態２６１が「未使用」のエントリがあるかをステップＳ７１を繰り返し実行して確認する。エントリが解放されて、エントリ状態２６１が「未使用」のエントリがあれば、ステップＳ７２に進む。なお、ステップＳ７１を所定の時間または所定の回数繰り返し実行した後にエントリ状態２６１が「未使用」のエントリがなければ、機能命令の発行ができない旨を機能部２１に応答してもよい。
【００５５】
一方、ステップＳ７１において、確認したエントリ状態２６１に「未使用」がある場合（Ｓ７１：ＹＥＳ）、命令配布制御モジュール２３は、転送部状態管理テーブル２７に運用状態２７２が「運用中」のエントリ、つまり、「運用中」の転送部３が１つ以上あるかを確認する（Ｓ７２）。確認結果がYESの場合（Ｓ７２：ＹＥＳ）、命令配布制御モジュール２３は、機能命令管理テーブル２６のエントリ状態２６１が「未使用」のエントリのエントリ状態２６１を「使用中」と記録（変更）し、および命令識別子２６２に受信した機能命令に含まれる命令識別子を記録（格納）する（Ｓ７３）。
【００５６】
次に命令配布制御モジュール２３は、受信した機能命令から機能命令を通知する転送部３を決定する（Ｓ７４）。具体的には、命令配布制御モジュール２３は、機能命令に含まれる命令識別子または命令識別子および命令内容から機能命令通知先情報を参照して、命令を通知する通知先の転送部３を決定する（Ｓ７４）。次に命令配布制御モジュール２３は、決定された通知先の転送部３に対して、機能命令を送信する（Ｓ７５）。また、決定された転送部３が複数の場合、命令配布制御モジュール２３は、それぞれの転送部３に機能命令を送信する（Ｓ７５）
最後に命令配布制御モジュール２３は、ステップＳ７３にて機能命令管理テーブル２７のエントリ状態２６１を「使用中」に変更したエントリの、機能命令を送信した個々の転送部３に該当する発行時刻２６８に現在時刻（命令を送信した時刻）を記録し、および該当する状態２６７に「応答待ち」と記録する（Ｓ７６）。
一方、ステップＳ７２の確認結果がNOの場合（Ｓ７２：ＮＯ）、運用中の転送部３が存在しないので、機能命令の送信元機能部２１へ命令の応答を送信し（Ｓ７１０）、本フロー（Ｓ７０）を終了する。
【００５７】
また、ステップＳ７７において、命令識別子が機能命令を示す命令識別子でない場合（Ｓ７７：ＮＯ）、受信した命令は死活監視命令であるので、命令配布制御モジュール２３は、受信した死活監視命令に含まれる命令通知先を参照して死活監視命令の送信先の転送部３を特定し（Ｓ７８）、特定した送信先の転送部３宛てに死活監視命令を送信し（Ｓ７９）、本フロー（Ｓ７０）を終了する。
【００５８】
図９は、命令配布制御モジュール２３が、送信した命令に対する応答を転送部３から受信した際の処理を示すフローチャートの例である（Ｓ８０）。命令配布制御モジュール２３は、転送部３から命令の応答を受信すると本フロー（Ｓ８０）を開始する。
【００５９】
命令配布制御モジュール２３は、転送部３から受信した命令に対する応答を解析し、受信した応答に含まれる命令識別子が機能命令を示す命令識別子か判定する（Ｓ８６）。命令識別子が機能命令を示す命令識別子である場合（Ｓ８６：ＹＥＳ）、命令配布制御モジュール２３は、転送部３から受信した機能命令に対する応答に含まれる転送部番号と命令識別子とをキー値として機能命令管理テーブル２６のエントリを検索し、一致するエントリを取得する（Ｓ８１）。
【００６０】
ここで、「転送部番号」とは、機能命令に対する応答を送信した転送部３を識別する情報である。次に命令配布制御モジュール２３は、ステップＳ８１で取得した機能命令管理テーブル２６の該当エントリについて、受信した転送部番号に対応する転送部番号２６６の状態２６７に「応答あり」と記録する（Ｓ８２）。
【００６１】
次に命令配布制御モジュール２３は、ステップＳ８１にて取得した機能命令管理テーブル２７の該当エントリについて、通知状態２６５のすべての転送部番号２６６の状態２６７に１つでも「応答待ち」があるかを確認する（Ｓ８３）。確認結果がNOの場合（Ｓ８３：ＮＯ）、命令配布制御モジュール２３は、機能命令の送信元の機能部２１、つまり、受信した応答に含まれる命令識別子に対応する機能部２１に応答を送信する（Ｓ８５）。そして、命令配布制御モジュール２３は、機能命令管理テーブル２６の該当エントリを初期化して解放する（Ｓ８４）。
【００６２】
具体的には、命令配布制御モジュール２３は、該当エントリのエントリ状態２６１を「未使用」と記録、命令識別子２６２を「-」（初期値）と記録、通知状態２６５のすべての転送部番号２６６の状態２６７と発行時刻２６８を「-」と記録する（Ｓ８４）。なお、各要素に「−」と記録することを、「情報を削除する」と表現してもよい。一方、ステップＳ８３の確認結果がYESの場合、エントリを更新しないので、本フロー（Ｓ８０）を終了する。
【００６３】
一方、ステップＳ８６において、命令識別子が機能命令を示す命令識別子でない場合（Ｓ８６：ＮＯ）、受信した応答は死活監視命令に対する応答であるので、命令配布制御モジュール２３は、受信した応答を死活監視モジュール２５へ送信する（Ｓ８７）。
【００６４】
命令配布制御モジュール２３は、機能命令管理テーブル２６の不要となったエントリを初期化して解放することにより、機能部２１から新規に発行される機能命令を新たに管理して転送部３に配布することができ、新規の機能命令を発行できなくなることによる機能部の動作の停止を防ぎ、制御部２やネットワーク装置１全体が停止する事態を防ぐ。
【００６５】
図１０は、死活監視モジュール２５が死活監視命令に対する応答を転送部３から受信した際の処理を表すフローチャートの例である（Ｓ１００）。死活監視モジュール２５は、ステップS７９にて命令配布制御モジュール２３が送信した、転送部３からの死活監視命令に対する応答を受信すると本フロー（Ｓ１００）を開始する。  死活監視モジュール２５は、死活監視命令に対する応答を送信した転送部３の運用状態を確認するために、命令配布制御モジュール２３から受信した死活監視命令に対する応答に含まれる転送部番号に該当する転送部３の運用状態を転送部状態管理テーブル２７から取得する（Ｓ１０１）。
【００６６】
具体的には、死活監視モジュール２５は、受信した転送部番号をキー値として、転送部状態管理テーブル２７の転送部番号２７１を検索し、一致するエントリの運用状態２７２を取得する（Ｓ１０１）。次に死活監視モジュール２５は、取得した運用状態２７２が「運用中」であるかを判定する（Ｓ１０２）。判定した結果、YESの場合（Ｓ１０２）、死活監視モジュール２５は、時刻管理モジュールから現在時刻を取得する（Ｓ１０３）。
【００６７】
最後に、死活監視モジュール２５は、受信した転送部番号をキー値として、死活監視管理テーブル２８の転送部番号２８１を検索し、一致するエントリの死活監視命令応答受信時刻２８２に、取得した現在時刻を記録する（Ｓ１０４）。一方、ステップＳ１０２の判定結果がNOの場合（Ｓ１０２：ＮＯ）、エントリを更新しないので、本フロー（Ｓ１００）を終了する。
【００６８】
図１１は、死活監視モジュール２５が実行する死活監視命令のタイムアウトを監視する処理を示すフローチャートの例である（Ｓ１１０）。本処理（Ｓ１１０）は、繰り返し、例えば一定の時間ごとに周期的に実行される。本実施例では、T2秒ごとに実行されるものとする。
【００６９】
死活監視モジュール２５は、最初に現在時刻を取得する（Ｓ１１１）。次に死活監視モジュール２５は、死活監視テーブル２８の転送部番号２８１で示されるエントリ数分、以下の繰り返し処理をおこなう（Ｓ１１２〜Ｓ１１６，Ｓ１２０）。図５の例では、転送部番号２８１が「１」のエントリについて繰り返し処理（Ｓ１１２〜Ｓ１１６，Ｓ１２０）を行い、次に転送部番号２８１が「２」のエントリについて繰り返し処理（Ｓ１１２〜Ｓ１１６，Ｓ１２０）を行う。
【００７０】
最初に、死活監視命令のタイムアウトを監視する処理（死活監視タイムアウトチェック処理）の実施対象であるかを確認するために、死活監視モジュール２５は、転送部番号２８１に対応する転送部状態管理テーブル２７の転送部番号２７１に該当する運用状態２７２を取得する（Ｓ１１３）。次に死活監視モジュール２５は、取得した運用状態２７２が「運用中」であるかを判定する（Ｓ１１４）。判定した結果、YESの場合（Ｓ１１４：ＹＥＳ）、死活監視タイムアウトチェック処理の実施対象であるので、死活監視モジュール２５は、死活監視タイムアウトチェック処理を実行する（Ｓ１２０）。本処理（Ｓ１２０）は、後述の図１２のＳ１２０で説明する。
【００７１】
一方、Ｓ１１４の判定結果がNOの場合（Ｓ１１４：ＮＯ）、死活監視タイムアウトチェック処理の実施対象でないので、死活監視テーブル２８の転送部番号２８１に該当する死活監視命令応答受信時刻２８２を無効化する。具体的には、無効であることを示す「-」と記録する（Ｓ１１７）。ステップＳ１２０とステップ１１７の実行後、死活監視モジュール２５は、死活監視テーブル２８の次のエントリについて繰り返し処理（Ｓ１１２〜Ｓ１１６，Ｓ１２０）を行う。死活監視テーブル２８の全てのエントリについて繰り返し処理を行うと本フロー（Ｓ１１０）を終了する。
【００７２】
図１２は、死活監視モジュール２５が実行する死活監視タイムアウトチェック処理を示すフローチャートの例である（Ｓ１２０）。
死活監視モジュール２５は、繰り返し処理（Ｓ１１２〜Ｓ１１６，Ｓ１２０）を実行する対象のエントリである死活監視テーブル２８の転送部番号２８１に該当する死活監視命令応答受信時刻２８２を取得する。次に取得した死活監視命令応答受信時刻２８２が有効であるかを確認するため、死活監視モジュール２５は、取得した死活監視命令応答受信時刻２８２が無効を示す「-」であるかを判定する（Ｓ１２２）。
【００７３】
判定した結果、NOの場合（Ｓ１２２：ＮＯ）、有効であるので、次に死活監視モジュール２５は、死活監視命令に対する応答がタイムアウトしているかを確認するため、ステップＳ１１１で取得した現在時刻と死活監視命令応答受信時刻２８２の差分値が、閾値管理テーブル２９の死活監視タイムアウト時間２９２の値より大きいかを判定する（Ｓ１２３）。具体的には、以下の式を満たすかを判定する
（現在時刻）  −  （死活監視命令応答受信時刻２８２）  ＞  （閾値管理テーブル２９の死活監視タイムアウト時間２９２）
判定した結果、YESの場合（Ｓ１２３：ＹＥＳ）、タイムアウトが発生しているので、死活監視モジュール２５は、転送部制御モジュール２２および命令配布制御モジュール２３に、該当する転送部番号２８１の値とともに障害を通知する（Ｓ１２４）。つまり、死活監視モジュール２５は、転送部番号２８１に対応する転送部３に障害が発生したことを転送部制御モジュール２２および命令配布制御モジュール２３に通知する。最後に、死活監視モジュール２５は、死活監視テーブル２８の転送部番号２８１に該当する死活監視命令応答受信時間２８２を無効であることを示す「-」と記録して無効化する。
【００７４】
一方、Ｓ１２３の判定結果がNOの場合（Ｓ１２３：ＮＯ）、タイムアウトが発生していないので、本フロー（Ｓ１２０）を終了する。また、ステップＳ１２２の判定結果がYESの場合（Ｓ１２２：ＹＥＳ）、死活監視命令応答受信時刻２８２が有効ではないので、本フロー（Ｓ１２０）を終了する。
【００７５】
転送部制御モジュール２２は、死活監視モジュール２５から転送部３の障害発生を通知されると、障害が発生した転送部３の運用を停止させる制御である転送部停止処理を実行する。転送部制御モジュール２２は、死活監視モジュール２５から通知された転送部番号２８１の値を参照し、障害が発生した転送部３を特定する。転送部制御モジュール２２は、特定した転送部３に対して停止指示を送信して、該当する転送部３の運用状態を停止に遷移させる。次に転送部制御モジュール２２は、停止させた転送部３に対応する転送部状態管理テーブル２７の転送部番号２７１のエントリの運用状態２７２を「停止中」と記録する。
【００７６】
また、命令配布制御モジュール２３は、死活監視モジュール２５から転送部３の障害発生を通知されると、障害が発生した転送部３の情報を機能命令管理テーブル２６から削除する転送部情報削除処理を実行する。命令配布制御モジュール２３は、死活監視モジュール２５から通知された転送部番号２８１の値を参照し、障害が発生した転送部３を特定する。命令配布制御モジュール２３は、機能命令管理テーブル２６を参照して、特定した転送部３の転送部番号２６６について状態２６７と発行時刻２６８のエントリ（テーブルの列成分）の全てを「-」と記録して無効化する。
【００７７】
本処理によって無効化され、すべての転送部２６６について状態２６７「応答待ち」状態でなくなったエントリ（テーブルの行成分）については、次の図１３の処理（Ｓ１４０）によって機能部２１への応答とエントリ（テーブルの行成分）の無効化が行われる。
【００７８】
また、ステップS１２４において、死活監視モジュール２５は、転送部制御モジュール２２に、該当する転送部番号２８１の値とともに障害を通知してもよい。この場合、転送部制御モジュール２２は、死活監視モジュール２５から転送部３の障害発生を通知されると、転送部停止処理を実行するとともに、命令配布制御モジュール２３に通知された転送部番号２８１の値と障害発生を通知する。命令配布制御モジュール２３は、転送部制御モジュール２２から転送部３の障害発生を通知されると、転送部情報削除処理を実行して、障害が発生した転送部３の情報を機能命令管理テーブル２６から削除する。
【００７９】
図１３は、命令配布制御モジュール２３が機能命令のタイムアウトを検出する処理を示すフローチャートの例である（Ｓ１４０）。本処理（Ｓ１４０）は、繰り返し、例えば一定の時間ごと周期的に実行される。本実施例では、T3秒ごとに実行されるものとする。
命令配布制御モジュール２３は、機能命令管理テーブル２６のエントリ状態２６１で示されるエントリ（テーブルの行成分）数分、以下の繰り返し処理をおこなう（Ｓ１４１〜Ｓ１４７,Ｓ１５０）。
【００８０】
最初に、命令配布制御モジュール２３は、機能命令管理テーブル２６からエントリ状態２６１を取得する（Ｓ１４２）。次に、命令配布制御モジュール２３は、機能命令のタイムアウトチェック対象であるかを確認するために、取得したエントリ状態２６１が「使用中」であるかを判定する（Ｓ１４３）。判定した結果、YESの場合（Ｓ１４３：ＹＥＳ）、機能命令のタイムアウトチェック対象であるので、命令配布制御モジュール２３は、機能命令タイムアウトチェック処理を実行する（Ｓ１５０）。本処理は、後述の図１４のＳ１５０で説明する。
【００８１】
機能命令タイムアウトチェック処理（Ｓ１５０）の実行後、命令配布制御モジュール２３は、機能命令管理テーブル２６の該当エントリ（行成分）について、通知状態２６５のすべての転送部番号２６６の状態２６７に１つでも「応答待ち」があるかを確認する（Ｓ１４４）。確認結果がNOの場合（Ｓ１４４：ＮＯ）、命令配布制御モジュール２３は、状態２６７が全て「応答待ち」になった機能命令の送信元の機能部２１、つまり、該当エントリ（行成分）の命令識別子２６２に対応する機能部２１に応答を送信する（Ｓ１４５）。
【００８２】
そして、命令配布制御モジュール２３は、機能命令管理テーブル２６の該当エントリ（行成分）を初期化して解放する（Ｓ１４６）。具体的には、命令配布制御モジュール２３は、該当エントリのエントリ状態２６１を「未使用」と記録、命令識別子２６２を「-」（初期値）と記録、通知状態２６５のすべての転送部番号２６６の状態２６７と発行時刻２６８を「-」と記録する（Ｓ１４６）。ステップＳ１４６の実行後、命令配布制御モジュール２３は、機能命令管理テーブル２６のエントリ状態２６１で示されるエントリ（行成分）の次のエントリ（行成分）について繰り返し処理（Ｓ１４１〜Ｓ１４７,Ｓ１５０）を行う。
【００８３】
一方、ステップＳ１４３の判定結果がNOの場合（Ｓ１４３：ＮＯ）、機能命令のタイムアウトチェック対象でなく、また、ステップ１４４の確認結果がＹＥＳの場合（Ｓ１４４：ＹＥＳ）、エントリを更新しないので、命令配布制御モジュール２３は、機能命令管理テーブル２６のエントリ状態２６１で示されるエントリ（行成分）の次のエントリ（行成分）について繰り返し処理（Ｓ１４１〜Ｓ１４７,Ｓ１５０）を行う。
命令配布制御モジュール２３は、機能命令管理テーブル２６のエントリ状態２６１で示されるエントリ（行成分）の全てのエントリ（行成分）について繰り返し処理を行うと本フロー（Ｓ１４０）を終了する。
【００８４】
図１４は、命令配布制御モジュール２３が実行する機能命令タイムアウトチェック処理を示すフローチャートの例である（Ｓ１５０）。命令配布制御モジュール２３は、最初に現在時刻を取得する（Ｓ１５１）。次に命令配布制御モジュール２３は、機能命令管理テーブル２６の通知状態２６５の転送部番号２６６で示されるエントリ（テーブルの列成分）数分、以下の繰り返し処理をおこなう（Ｓ１５２〜Ｓ１６２）。図３の例では、転送部番号２６６が「１」のエントリ（列成分）について繰り返し処理（Ｓ１５２〜Ｓ１６２）を行い、次に転送部番号２６６が「２」のエントリ（列成分）について繰り返し処理（Ｓ１５２〜Ｓ１６２）を行う。
【００８５】
繰り返し処理の最初に、命令配布制御モジュール２３は、機能命令管理テーブル２６の状態２６７を取得する（Ｓ１５３）。次に命令配布制御モジュール２３は、未応答であるかを確認するため、取得した状態２６７が「応答待ち」であるかを判定する（Ｓ１５４）。判定した結果、YESの場合（Ｓ１５４：ＹＥＳ）、未応答であるので、命令配布制御モジュール２３は、機能命令管理テーブル２６の発行時刻２６８を取得する。
【００８６】
次に機能命令のタイムアウトが発生しているかを確認するため、命令配布制御モジュール２３は、現在時刻と発行時刻２６８の差分値が、閾値管理テーブル２９の機能命令タイムアウト時間２９１の値より大きいかを判定する（Ｓ１５６）。具体的には、以下の式を満たすかを判定する
（現在時刻）  −  （発行時刻２６８）  ＞  （閾値管理テーブル２９の機能命令タイムアウト時間２９１）
判定した結果、YESの場合（Ｓ１５６：ＹＥＳ）、機能命令のタイムアウトが発生しているので、命令配布制御モジュール２３は、死活監視タイムアウト実行処理を実行する（Ｓ１６１，Ｓ１６２）。死活監視タイムアウト実行処理（Ｓ１６１，Ｓ１６２）の実行後に、命令配布制御モジュール２３は、機能命令管理テーブル２６の転送部番号２６６が示すエントリ（列成分）の次のエントリ（列成分）について繰り返し処理（Ｓ１５２〜Ｓ１６２）を行う。
【００８７】
一方、ステップＳ１５６の判定結果がNOの場合（Ｓ１５６：ＮＯ）、命令タイムアウトが発生しておらず、また、ステップＳ１５４の判定結果がNOの場合（Ｓ１５４：ＮＯ）、未応答でないので、命令配布制御モジュール２３は、機能命令管理テーブル２６の転送部番号２６６が示すエントリ（列成分）の次のエントリ（列成分）について繰り返し処理（Ｓ１５２〜Ｓ１６２）を行う。
命令配布制御モジュール２３は、機能命令管理テーブル２６の転送部番号２６６が示すエントリ（列成分）の全てのエントリ（列成分）について繰り返し処理を行うと、本フロー（Ｓ１５０）を終了する。
【００８８】
死活監視タイムアウト実行処理（Ｓ１６１，Ｓ１６２）では、命令配布制御モジュール２３は、転送部制御モジュール２２に、該当する転送部番号２６６の値とともに障害を通知する（Ｓ１６１）。次に命令配布制御モジュール２３は、機能命令管理テーブル２６の該当転送部番号２６６のエントリ（列成分）を無効化する（Ｓ１６２）。
【００８９】
具体的には、命令配布制御モジュール２３は、通知状態２６５の転送部番号２６６の状態２６７と発行時刻２６８のエントリ（行成分）の全てを「-」と記録する（Ｓ１６２）。その結果、機能命令管理テーブル２６のエントリ状態２６１で示されるエントリ（行成分）のうち、該当する転送部番号２６６の状態２６７と発行時刻２６８の全てのエントリ（行成分）が無効となり、該当する転送部番号２６６が示す転送部３へ機能命令を送信していない状態と同じ状態となる。
【００９０】
命令配布制御モジュール２３は、ステップＳ１６２の実行後、機能命令管理テーブル２６の転送部番号２６６で示されるエントリ（列成分）の次のエントリ（列成分）について繰り返し処理（Ｓ１５２〜Ｓ１６２）を行う。命令配布制御モジュール２３は、機能命令管理テーブル２６の転送部番号２６６が示すエントリ（列成分）の全てのエントリ（列成分）について繰り返し処理を行うと、本フロー（Ｓ１５０）を終了し、ステップＳ１４４に進む。
【００９１】
以上のように、命令配布制御モジュール２３は、図１３の処理にて機能命令管理テーブル２６の特定のエントリ（テーブルの行成分）に着目し、着目したエントリ（行成分）の要素のうち特定の転送部番号２６６のエントリ（テーブルの列成分）に着目して、図１４の機能命令タイムアウトチェック処理（Ｓ１５０）を実行する。命令配布制御モジュール２３は、図１４の繰り返し処理によって図１３の処理で着目したエントリ（行成分）の要素のうち全ての転送部番号２６６のエントリ（列成分）について機能命令タイムアウトチェック処理（Ｓ１５０）を実行した後、図１３に戻り、未着目の機能命令管理テーブル２６のエントリ（行成分）がなくなるまで図１３および図１４の繰り返し処理を実行する。
【００９２】
以上で説明したように、実施例によれば、制御部が発行した命令に対する応答がない転送部を停止させ、機能部での命令に対する応答を返した転送部を含む転送部全体の障害検出を回避し、制御部は、応答を返した転送部の制御を継続することができ、制御部やネットワーク装置全体が停止することを回避することができる。また、命令に対する応答がタイムアウトすると、制御部は、機能命令管理テーブルからこの命令のエントリを削除するため、制御部が管理する命令数が、有限な命令数の上限（機能命令管理テーブルの最大エントリ数）を超えることを回避し、命令に対して応答した本来停止させるべきではない転送部を停止させてしまうことを回避することができる。
【００９３】
以上、説明した構成において、具体的動作を説明する。説明の順序として、最初に、（１）ある時点におけるネットワーク装置１の状態を、次に（２）制御部２が転送部３に機能命令を送信して転送部３から応答がある場合の処理フローを、次に（３）死活監視モジュール２５が死活監視命令を転送部３に発行して転送部３から応答がある場合の処理フローを、次に（４）死活監視モジュール２５が死活監視命令を転送部３に発行して転送部３から応答がなく、該当転送部３を停止する場合の処理フローを、次に（５）機能命令タイムアウトチェック処理（Ｓ１５０）において機能命令のタイムアウトが発生していない場合の処理フローを、最後に（６）機能命令タイムアウトチェック処理（Ｓ１５０）において機能命令のタイムアウトが発生しており該当転送部３を停止する場合の処理フローを説明する。
【００９４】
（１）最初にある時点におけるネットワーク装置１の状態について説明する。ネットワーク装置１は、図１に示すように、１つの制御部２と２つの転送部３を搭載する。このときの機能命令管理テーブル２６は、図１５Ａに示すように、５つのエントリを格納しており、それぞれエントリ状態２６１として、すべて「未使用」が格納されていて、命令識別子２６２として、すべて「-」が格納されていて、通知状態２６５の転送部番号２６６として２つの転送部３それぞれを識別する「１」、「２」が格納されていて、個々の転送部番号２６６の状態２６７と発行時刻２６８の組には、すべて｛-、-｝が格納されている。
つまり、制御部２が２つの転送部３に対して機能命令を発行していない状態を示している。図１５Ａ、図１５Ｂ、図１５Ｃは、本具体的動作における転送部状態管理テーブル２７の状態遷移の例を示す。
【００９５】
また、転送部状態管理テーブル２７は、図４Ａに示すように、２つの転送部３分のエントリを格納しており、それぞれ転送部番号２７１のエントリ番号として「１」、「２」を割り当てて、運用状態２７２としてそれぞれ「運用中」が格納されている。つまり、２つの転送部３はともに運用中であることを示している。
【００９６】
また、死活監視管理テーブル２８は、図５Ａに示すように、２つの転送部３分のエントリを格納しており、それぞれ転送部番号２８１のエントリ番号として「１」、「２」を割り当てて、死活監視命令応答受信時刻２８２として「１１：００：０５」、「１２：００：０６」が格納されている。つまり、転送部３−１からの死活監視命令に対する応答を「１１時００分０５秒」に受信し、転送部３−２からの応答を「１２時００分０６秒」に受信したことを示している。
【００９７】
また、閾値管理テーブル２９は、図６に示すように、機能命令タイムアウト時間２９１に「００：０５：００」が、死活監視タイムアウト時間２９２に「００：０３：００」が記録されている。つまり、機能命令に対する応答のタイムアウト時間が「５分間」、死活監視命令に対する応答のタイムアウト時間が「３分間」に設定されていることを示している。
【００９８】
（２）次に、制御部２が転送部３に機能命令を送信して転送部３から応答がある場合を一例として、そのフローを説明する。まず、機能命令管理テーブル２６が図１５Ａ、転送部状態管理テーブル２７が図４Ａの状態のときに、命令配布制御モジュール２３が、機能部２１から機能命令を受信すると、命令配布制御モジュール２３は、ステップＳ７０を実行する。
【００９９】
命令配布制御モジュール２３は、ステップＳ７７で、受信した命令を機能命令と判定し（Ｓ７７：ＹＥＳ）、ステップＳ７１で機能命令管理テーブル２６の「未使用」のエントリとして1番目のエントリ２６３を取得する。次に命令配布制御モジュール２３は、ステップＳ７２で転送部状態管理テーブル２７の状態を確認し、転送部番号２７１が「１」、「２」の運用状態２７２がそれぞれ「運用中」であるため、ステップＳ７３を実行し、機能命令管理テーブル２６の「未使用」であった1番目のエントリ２６３のエントリ状態２６１に「使用中」を、命令識別子２６２に機能命令に含まれる命令識別子「1」を記録する。
【０１００】
次のステップＳ７４では、命令配布制御モジュール２３は、受信した機能命令から通知先の転送部３を決定し、決定した転送部３に機能命令を送信する。例えば、機能命令に含まれる命令識別子「１」から全ての転送部３を通知先とすると決定する。つまり、命令配布制御モジュール２３は、転送部状態管理テーブル２７の「運用中」である転送部番号２７１の「１」「２」が示す転送部３−１，３−２へと機能命令を送信する。
【０１０１】
その後ステップＳ７６で、命令配布制御モジュール２３は、発行時刻２６８−１，２６８−２に現在時刻である「１１：１０：００」、状態２６７−１，２６７−２に「応答待ち」を記録する。以上の処理を行った結果、機能命令管理テーブル２６は図１５Ｂの状態となる。
【０１０２】
次に転送部３−１から応答が返ってくると、命令配布制御モジュール２３は、ステップＳ８０を実行する。命令配布制御モジュール２３は、ステップＳ８６で、受信した応答を機能命令に対する応答と判定し（Ｓ８６：ＹＥＳ）ステップＳ８１で、応答に含まれる転送部番号「1」および命令識別子「1」から、機能命令管理テーブル２６の1番目のエントリ２６３を取得する。
【０１０３】
ステップＳ８２で、命令配布制御モジュール２３は、受信した転送部番号「1」に対応する転送部番号２６６−１の状態２６７−１に「応答あり」、発行時刻２６８−１に「-」を記録する。ステップＳ８３で、命令配布制御モジュール２３は、転送部３−２を示す転送部番号２６６−２「2」の状態２６７−２は「応答待ち」のためステップＳ８０の処理を終了する。その結果、機能命令管理テーブル２６は図１５Ｃの状態となる。
【０１０４】
同様に転送部３−２から応答が返ってくると、命令配布制御モジュール２３は、ステップＳ８０を実行し、ステップＳ８６、ステップＳ８１、ステップＳ８２を上述した転送部３−１から応答が返ってきた場合と同様に実行する。ステップＳ８３において、命令配布制御モジュール２３は、すべての転送部３の状態２６７が「応答あり」となるため、次のステップＳ８４を実行する。ステップＳ８４で命令配布制御モジュール２３は、エントリ２６３のエントリ状態２６１に「未使用」を、命令識別子２６２に「-」、状態２６７に「−」、発行時刻２６８に「−」を記録しステップＳ８０の処理を終了する。その結果、機能命令管理テーブル２６は図１５Ａの状態となる。
【０１０５】
（３）次に、死活監視モジュール２８が死活監視命令を転送部３に発行して転送部３から応答がある場合を一例として、そのフローを説明する。  死活監視管理テーブル２８が図５Ａ、転送部状態管理テーブル２７が図４Ａの状態で、現在時刻が「１５：０１：００」である場合の、死活監視モジュール２５が実行するステップＳ９０は、以下のようになる。まず死活監視モジュール２５は、ステップＳ９１のループ処理で転送部３−１を示す転送部番号２７１「１」について処理をおこなう。
【０１０６】
ステップＳ９２で死活監視モジュール２５は、転送部状態管理テーブル２７から転送部番号２７１「1」の運用状態２７２を取得する。取得した運用状態２７２は「運用中」のため、ステップＳ９３の判定がＹＥＳとなり（Ｓ９３：ＹＥＳ）、死活監視モジュール２５は、ステップＳ９４を実行する。ステップＳ９４で死活監視モジュール２５は、転送部番号２７１「1」の転送部３−１に対して命令配布制御モジュール２３を介して死活監視命令を送信する。同様に転送部番号２７１「2」の転送部３−２に対しても死活監視命令を送信する。
【０１０７】
その後、転送部３から死活監視命令の応答が返ってくると、死活監視モジュール２５は、ステップＳ１００を実行する。ここでは、転送部３−１と転送部３−２の両方から死活監視命令の応答が返ってきた場合を説明する。ステップＳ１０１で、死活監視モジュール２５は、応答に含まれる転送部番号「1」から転送部状態管理テーブル２７の転送部番号２７１「1」に対応するエントリの運用状態２７２を取得する。
【０１０８】
取得したエントリの運用状態２７２は「運用中」のため、死活監視モジュール２５は、ステップＳ１０２の判定がYESとなり（Ｓ１０２：ＹＥＳ）、次のステップＳ１０３を実行する。ステップＳ１０３で死活監視モジュール２５は、現在時刻「１５:０１：０５」を取得し、ステップＳ１０４で、死活監視管理テーブル２８の転送部番号２８１「1」に対応する死活監視命令応答受信時刻２８２に現在時刻「１５:０１：０５」を記録する。
【０１０９】
また、死活監視モジュール２５は、転送部３−２からの死活監視命令の応答に対してもステップＳ１００を実行する。その結果、死活監視管理テーブル２８は、図５Ｂの状態となる。この状態で、死活監視モジュール２５が死活監視命令のタイムアウトチェック処理ステップＳ１１０を実行すると、以下のようになる。
【０１１０】
ステップＳ１１１で死活監視モジュール２５は、現在時刻「１５:０１：０６」を取得し、ステップＳ１１２のループ処理で転送部３−１を示す転送部番号「１」について処理をおこなう。ステップＳ１１３で転送部状態管理テーブル２７の転送部番号２７１「1」の運用状態２７２を取得する。取得した運用状態２７２は「運用中」のため、ステップＳ１１４の判定がYESとなり（Ｓ１１４：ＹＥＳ）、死活監視モジュール２５は、ステップＳ１２０を実行する。
【０１１１】
ステップＳ１２０の処理では、死活監視モジュール２５は、ステップＳ１２１で死活監視管理テーブル２８の転送部番号２８１「1」に対する死活監視命令応答受信時刻２８２を取得する。取得した死活監視命令応答受信時刻２８２は「１５:０１：０５」のため、ステップＳ１２２の判定はNOとなり（Ｓ１２２：ＮＯ）、死活監視モジュール２５は、ステップＳ１２３の判定を行う。ステップＳ１２３の判定処理では、現在時刻「１５:０１：０６」と死活監視命令応答受信時刻「１５:０１：０５」の差が、死活監視タイムアウト時間２９２の「００：０３:００」以下のため判定がNOとなり（Ｓ１２３：ＮＯ）、死活監視モジュール２５は、ステップＳ１２０の処理を終了する。
【０１１２】
以上で転送部３−１を示す転送部番号「1」に対する処理が終了し、次にＳ１１２のループ処理で転送部３−２１を示す転送部番号「2」についての処理が行われる。ステップＳ１１３，ステップＳ１１４は、転送部番号「1」と同様に判定され、転送部番号「2」についてもステップＳ１２０の処理が行われる。ステップＳ１２０の処理では、死活監視モジュール２５は、ステップＳ１２１で死活監視管理テーブル２８の転送部番号２８１「2」に対する死活監視命令応答受信時刻２８２を取得する。取得した死活監視命令応答受信時刻２８２は「１５:０１：０５」のため、ステップＳ１２２の判定はNOとなり（Ｓ１２２：ＮＯ）、死活監視モジュール２５は、ステップＳ１２３の判定を行う。ステップＳ１２３の判定処理では現在時刻「１５:０１：０６」と死活監視命令応答受信時刻「１５:０１：０５」の差が、死活監視タイムアウト時間２９２の「００：０３:００」以下のため判定がNOとなり（Ｓ１２３：ＮＯ）、死活監視モジュール２５は、ステップＳ１２０の処理を終了する。
【０１１３】
（４）次に、死活監視モジュール２５が死活監視命令を転送部３に発行して転送部３から応答がなく、該当転送部３を停止する場合を一例として、そのフローを説明する。
【０１１４】
死活監視管理テーブル２８が、図５Ａ、転送部状態管理テーブル２７が図４Ａの状態で、死活監視モジュール２５がステップＳ９４を実行し、転送部３−１，３−２に死活監視命令を送信した後、転送部３−１からの死活監視命令の応答は受信するが、転送部３−２からの死活監視命令の応答は受信しない場合を説明する。この場合、死活監視管理テーブル２８は、図５Ｃで示すように更新される。
【０１１５】
転送部３−２からの死活監視命令に対する応答がないまま、現在時刻が「１６：００：００」となった場合、ステップＳ１２３の判定処理において現在時刻「１６：００：００」と死活監視命令応答受信時刻「１２:０１：００：０６」の差が、死活監視タイムアウト時間２９２の「００：０３:００」を超えるため、Ｓ１２３の判定がYESとなり（Ｓ１２３：ＹＥＳ）、ステップＳ１２４で死活監視モジュール２５は、転送部制御モジュール２２へ転送部番号２８１「2」が障害となったことを通知し、ステップＳ１２５で、死活監視管理テーブル２８の転送部番号２８１「2」の死活監視命令応答受信時刻２８２に「-」を記録し、ステップＳ１２０の処理を終了する。
【０１１６】
ステップＳ１２４の通知を受けて、転送部制御モジュール２２は、転送部停止処理を実行する。まず、転送部制御モジュール２２は、死活監視モジュール２５から通知された転送部番号「2」の運用状態を停止に遷移させ、転送部状態管理テーブル２７の転送部番号２７１「2」の運用状態２７２に「停止中」を記録する。結果、転送状態管理テーブル２７は図４Ｂの状態となる。
【０１１７】
（５）次に、機能命令タイムアウトチェック処理において機能命令のタイムアウトが発生していない場合を一例として、そのフローを説明する。機能命令管理テーブル２６が、図１５Ｃの状態、現在時刻が「１６：００：００」の状態で、命令配布制御モジュール２３が実行する機能命令のタイムアウトを検出する処理（Ｓ１４０）は次のようになる。
【０１１８】
まず命令配布制御モジュール２３は、ステップＳ１４１のループ処理で、機能命令管理テーブル２６の1番目のエントリ２６３について処理をおこなう。ステップＳ１４２で命令配布制御モジュール２３は、機能命令管理テーブル２６の1番目のエントリ２６３のエントリ状態２６１を取得する。取得したエントリ状態２６１は「使用中」のためステップＳ１４３で判定がYESとなり（Ｓ１４３：ＹＥＳ）、命令配布制御モジュール２３は、ステップＳ１５０を実行する。
【０１１９】
ステップＳ１５０では、まずＳ１５１で命令配布制御モジュール２３は、現在時刻「１６：００：００」を取得する。次にステップＳ１５２のループ処理で、命令配布制御モジュール２３は、機能命令管理テーブル２６の転送部番号２６６−１「1」について処理を行う。ステップＳ１５３で命令配布制御モジュール２３は、転送部番号２６６−１「1」の状態２６７−１を取得する。取得した状態２６７−１は「応答あり」のため、ステップＳ１５４の判定がNOとなり（Ｓ１５４：ＮＯ）、転送部番号２６６−１「1」についてのループ処理を終了する。
【０１２０】
次に命令配布制御モジュール２３は、転送部番号２６６−２「2」について同様に処理を行う。ステップＳ１５３で転送部番号２６６−２「2」の状態２６７−２を取得する。取得した状態２６７−２は「応答待ち」のため、ステップＳ１５４の判定がYESとなり（Ｓ１５４：ＹＥＳ）、ステップＳ１５５を実行する。
【０１２１】
ステップＳ１５５で命令配布制御モジュール２３は、転送部番号２６６−２「2」に対する発行時刻２６８−２を取得する。次のステップＳ１５６で、現在時刻「１６：００：００」と取得した発行時刻２６８−２「１１：１０：００」の差が、閾値管理テーブル２９の機能命令タイムアウト時間２９１の「００：０５：００」以下のため判定がNO、つまり、機能命令のタイムアウトが発生しておらず（Ｓ１５６：ＮＯ）、転送部番号２６６−２「２」についてのループ処理を終了する。
【０１２２】
命令配布制御モジュール２３は、ここまでで1番目のエントリ２６３に対する処理を終了する。以降は機能命令管理テーブル２６のエントリ状態２６１が「未使用」のエントリのため、ステップＳ１４３で判定がNOとなり（Ｓ１４３：ＮＯ）、命令配布制御モジュール２３は、ステップＳ１５０を実行しない。
【０１２３】
（６）最後に、機能命令タイムアウトチェック処理において機能命令のタイムアウトが発生しており該当転送部３を停止する場合を一例として、そのフローを説明する。機能命令管理テーブル２６が、図１５Ｃの状態で、転送部３−１からの機能命令に対する応答は受信したが、転送部３−２からの機能命令に対する応答は受信しない場合を説明する。転送部３−２からの機能命令に対する応答がないまま、現在時刻が「１７：００：００」になった場合についての命令配布制御モジュール２３が実行する機能命令のタイムアウトを検出する処理（Ｓ１４０）を説明する。
【０１２４】
ステップＳ１４１からＳ１４３までは上記で説明したものと同様に行われ、機能命令管理テーブル２６の1番目のエントリ２６３についてステップＳ１５０が行われる。ステップＳ１５０については、ステップＳ１５１で命令配布制御モジュール２３は、現在時刻「１７：００：００」を取得する。転送部番号２６６−１「1」については上記で説明したものと同様にループ内の処理が完了する。
【０１２５】
転送部番号２６６−２「2」については、ステップＳ１５３からステップＳ１５５までの処理は上記と同様であるが、ステップＳ１５６については、現在時刻「１７：００：００」と取得した発行時刻２６８「１１：１０：００」の差が閾値管理テーブル２９の機能命令タイムアウト時間２９１の「００：０５：００」を超えるため、判定がYESとなり（Ｓ１５６：ＹＥＳ）、命令配布制御モジュール２３は、死活監視タイムアウト処理（Ｓ１６１，Ｓ１６２）を実行する。
【０１２６】
ステップＳＳ１６１で、命令配布制御モジュール２３は、転送部制御モジュール２２へ転送部番号２６６−２「2」が障害となったことを通知する。ステップ１６２で、命令配布制御モジュール２３は、機能命令管理テーブル２６の通知状態２６５の転送部番号２６６−２「２」の状態２６７−２に「-」、発行時刻２６８−２に「-」を記録してステップＳ１５０の処理を終了する。その後、命令配布制御モジュール２３は、ステップＳ１４４〜Ｓ１４６を実行し、結果として、機能命令管理テーブル２６は図１５Ａの状態となる。
【０１２７】
ステップＳ１６１の通知を受けると、転送部制御モジュール２２は、転送部停止処理を実行する。まず、転送部制御モジュール２２は、命令配布制御モジュール２３から通知された転送部番号「2」の運用状態を停止に遷移させ、転送部状態管理テーブル２７の転送部番号２７１「2」の運用状態２７２に「停止中」を記録する。結果、転送状態管理テーブル２７は図４Ｂの状態となる。
【０１２８】
また、上記（６）の別の例として、機能命令管理テーブル２６が、図３Ａの状態で、転送部３−２からの機能命令に対する応答は受信したが、転送部３−１からの機能命令に対する応答は受信しない場合を説明する。転送部３−１からの機能命令に対する応答がないまま、現在時刻が「１０：２３：００」になった場合についての命令配布制御モジュール２３が実行する機能命令のタイムアウトを検出する処理（Ｓ１４０）を説明する。
【０１２９】
ステップＳ１４１からＳ１４３までは上記で説明したものと同様に行われ、機能命令管理テーブル２６の１番目のエントリのエントリ状態２６１は「未使用」のため、２番目のエントリ２６０についてステップＳ１５０が行われる。ステップＳ１５０については、ステップＳ１５１で命令配布制御モジュール２３は、現在時刻「１０：２３：００」を取得する。転送部番号２６６−１「1」について、ステップＳ１５３からステップＳ１５５までの処理は上記と同様であるが、ステップＳ１５６については、現在時刻「１０：２３：００」と取得した発行時刻２６８「１０：２０：０１」の差が閾値管理テーブル２９の機能命令タイムアウト時間２９１の「００：０５：００」以下のため判定がＮＯ、つまり、機能命令のタイムアウトが発生しておらず（Ｓ１５６：ＮＯ）、命令配布制御モジュール２３は、転送部番号２６６−１「１」についてのループ処理を終了する。
【０１３０】
エントリ２６０の転送部番号２６６−２「２」についてもステップＳ１５０で機能命令のタイムアウトが発生していない（Ｓ１５６：ＮＯ）ため、命令配布制御モジュール２３は、ステップＳ１４４に進み、エントリ２６０の次のエントリ２６９についてのステップＳ１５０に進む。ステップＳ１５０については、ステップＳ１５１で命令配布制御モジュール２３は、現在時刻「１０：２３：０２」を取得し、転送部番号２６６−１「1」のステップＳ１５６については、現在時刻「１０：２３：０２」と取得した発行時刻２６８「１０：００：００」の差が閾値管理テーブル２９の機能命令タイムアウト時間２９１の「００：０５：００」を超えるため、判定がYESとなり（Ｓ１５６：ＹＥＳ）、死活監視タイムアウト処理（Ｓ１６１，Ｓ１６２）を実行する。
【０１３１】
ステップＳＳ１６１で、命令配布制御モジュール２３は、転送部制御モジュール２２へ転送部番号２６６−１「１」が障害となったことを通知し、ステップ１６２で、機能命令管理テーブル２６の通知状態２６５の転送部番号２６６−１「１」の全ての状態２６７−１に「-」、全ての発行時刻２６８−１に「-」を記録する。その結果、機能命令管理テーブル２６は図３Ｂの状態となる。
【０１３２】
エントリ２６０の転送部番号２６６−２「２」についてはステップＳ１５０で状態２６７−２「応答あり」（Ｓ１５４：ＮＯ）ため、命令配布制御モジュール２３は、ステップＳ１４４に進み、エントリ２６９の状態２６７には「応答待ち」がないため（Ｓ１４４：ＮＯ）、ステップＳ１４５，ステップ１４６を実行する。その結果、機能命令管理テーブル２６は図３Ｃの状態となる。
【０１３３】
ステップＳ１６１の通知を受けた転送部制御モジュール２２は、転送部停止処理を実行する。まず、転送部制御モジュール２２は、命令配布制御モジュール２３から通知された転送部番号「１」の運用状態を停止に遷移させ、転送部状態管理テーブル２７の転送部番号２７１「１」の運用状態２７２に「停止中」を記録する。
【０１３４】
以上説明したように、本実施形態によれば、任意の転送部から命令に対する応答がない場合、命令配布制御モジュールは、該当の転送部からの応答があったものとして命令を発行した機能部に応答を送信する。また、制御部は、該当の転送部の停止を実行する。この結果、機能命令管理テーブルの該当転送部が使用していたエントリが開放されるため、命令に対する応答がある他の転送部の制御を継続することができる、また、命令に対する応答がある他の転送部に影響を与えることなく他の転送部の制御を継続することができる。また、任意の転送部から命令に対する応答がない場合に、有限な同時通知可能な命令数に達し、新たな命令が通知できなくなる状況を回避し、ネットワーク装置の運用を継続することができる。
【０１３５】
以上、本実施形態をネットワーク装置１が、１つの通信装置で構成される例で説明したが、本実施形態をネットワークシステム（通信システム）で構成される例で説明することもできる。つまり、制御部２をネットワークシステムを制御する１つの通信装置である制御装置、転送部３をデータを転送する１つの通信装置である転送装置として、上述した本実施形態を適用することができる。
【０１３６】
制御装置は、命令をフレームやパケットの形で制御装置と転送装置とを接続する通信回線を介して転送装置に送信する。また、転送装置は、命令に対する応答をフレームやパケットの形で通信回線を介して制御装置に送信する。
【０１３７】
この場合、任意の転送装置から命令に対する応答がない場合、命令配布制御モジュールは、該当の転送装置からの応答があったものとして命令を発行した機能モジュールに応答を送信する。また、制御装置は、該当の転送装置の停止を実行する。この結果、機能命令管理テーブルの該当転送装置が使用していたエントリが開放されるため、命令に対する応答がある他の転送装置の制御を継続することができる、また、命令に対する応答がある他の転送装置に影響を与えることなく他の転送装置の制御を継続することができる。また、任意の転送装置から命令に対する応答がない場合に、有限な同時通知可能な命令数に達し、新たな命令が通知できなくなる状況を回避し、ネットワークシステムの運用を継続することができる。
【０１３８】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。
【０１３９】
また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えばＦＰＧＡ（ｆｉｅｌｄ−ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）のような集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（ＳｏｌｉｄＳｔａｔｅＤｒｉｖｅ）等の記録装置、または、ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）カード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。
【０１４０】
また、「ａａａテーブル」の表現にて各種情報を説明したが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「ａａａテーブル」を「ａａａ情報」と呼ぶことができる。また、「格納する」の表現にて各種テーブルに各情報を記録することを説明したが、「登録する」または「設定する」と表現されてもよい。
【０１４１】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【０１４２】
１…ネットワーク装置
２…制御部
３…転送部
１１…転送エンジン
１２…ポート
２１…機能部
２２…転送部制御モジュール
２３…命令配布制御モジュール
２５…死活監視モジュール
２６…機能命令管理テーブル
２７…転送部状態管理テーブル
２８…死活監視管理テーブル
２９…閾値管理テーブル
【図１】
2016163084.tif 000003
【図２】
2016163084.tif 000004
【図３Ａ】
2016163084.tif 000005
【図３Ｂ】
2016163084.tif 000006
【図３Ｃ】
2016163084.tif 000007
【図４Ａ】
2016163084.tif 000008
【図４Ｂ】
2016163084.tif 000009
【図５Ａ】
2016163084.tif 000010
【図５Ｂ】
2016163084.tif 000011
【図５Ｃ】
2016163084.tif 000012
【図６】
2016163084.tif 000013
【図７】
2016163084.tif 000014
【図８】
2016163084.tif 000015
【図９】
2016163084.tif 000016
【図１０】
2016163084.tif 000017
【図１１】
2016163084.tif 000018
【図１２】
2016163084.tif 000019
【図１３】
2016163084.tif 000020
【図１４】
2016163084.tif 000021
【図１５Ａ】
2016163084.tif 000022
【図１５Ｂ】
2016163084.tif 000023
【図１５Ｃ】
2016163084.tif 000024