(57)【特許請求の範囲】
【請求項１】
所定処理をプロセッサに実行させる処理プログラムである所定処理機能部を有する、並列処理可能な少なくとも１個の処理用コアと、
上記各処理用コアにおける上記処理プログラムのハングアップを監視する制御用コアと、
上記各処理用コアと上記制御用コアが共にアクセス可能な共通メモリとを有し、
上記共通メモリには、クロックに基づいて現カウント値を更新する、上記各処理用コア毎の現カウンタが設定され、
上記制御用コアが有するローカルメモリ若しくは上記共通メモリには、転送されてきた現カウント値を直前カウント値として保存する、上記各処理用コア毎の直前カウント値保存域が設定され、
上記各処理用コアは、上記処理プログラムの所定部分の開始から終了までの期間、上記処理プログラムからの起動により、当該処理用コアについての上記現カウンタをカウント動作させる、ハードウェア要素としてのカウント指示部を有し、
上記制御用コアは、上記各処理用コアについての現カウント値と直前カウント値との照合を間欠的に実行し、両カウント値の一致時に処理対象の上記処理用コアにおける上記処理プログラムはハングアップと判断し、両カウント値の不一致時に現カウント値を直前カウント値として上記直前カウント値保存域に保存させる監視機能部を有する
ことを特徴とするハングアップ監視装置。
【請求項２】
上記各カウント指示部として、当該処理用コアが有するパフォーマンスモニタを適用していることを特徴とする請求項１に記載のハングアップ監視装置。
【請求項３】
上記処理プログラムを複数の部分に分割し、
分割部分毎に、別個の上記現カウンタと上記直前カウント値保存域とを設定し、
上記監視機能部が、各組の上記現カウンタと上記直前カウント値保存域とのカウント値の照合を行い、上記処理プログラムのハングアップ発生を判断する
ことを特徴とする請求項１又は２に記載のハングアップ監視装置。
【請求項４】
上記監視機能部は、上記共通メモリをアクセスする構成部分を除き、プロセッサとそのプロセッサが実行するプログラムとで構成されていることを特徴とする請求項１〜３のいずれかに記載のハングアップ監視装置。
【請求項５】
上記各処理用コアにおける上記処理プログラムがパケット転送に係る処理プログラムであることを特徴とする請求項１〜４のいずれかに記載のハングアップ監視装置。
【請求項６】
パケット転送プログラムを有する、複数のパケット処理用コアを備えたパケット転送装置において、
上記パケット転送プログラムのハングアップを監視するハングアップ監視装置として、請求項５に記載のハングアップ監視装置を適用していることを特徴とするパケット転送装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハングアップ監視装置及びパケット転送装置に関し、例えば、音声やビデオ等の各メディアのＮＡＴ（スペルアウトは実施形態の項に記載）変換をサポートするメディア変換装置に適用し得るものである。
【背景技術】
【０００２】
一般に、ソフトウェアのハングアップを検出するためには、ＣＰＵのウォッチドッグタイマを使用する（特許文献１参照）。ウォッチドッグタイマは、ＣＰＵ又はデバイスにハードウェア的に１つ実装され、ウォッチドッグタイマがタイムアップするのに要する時間以内にソフトウェアによりリセットを行う。上述した時間以内に、ウォッチドッグタイマがリセットされない場合には、ソフトウェアのハングアップとみなし、ハードウェア的に割り込みを発生させ、プロセッサのリセットやソフトウェアの停止を行う。このようなウォッチドッグタイマのリセットは、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）のスケジューリング機能により行われる。
【０００３】
マルチコアのＣＰＵをＳＭＰ（Ｓｙｍｍｅｔｒｉｃ  Ｍｕｌｔｉｐｒｏｃｅｓｓｉｎｇ；対称型マルチプロセッシング）で使用する場合には、ウォッチドッグタイマを使用することが可能である。しかし、パケット転送ソフトウェア（以下、パケット転送機能やパケット転送機能部と呼ぶ）など、転送遅延をできるだけ避けて高い転送性能を求められる場合には、プロセッサをＡＭＰ（Ａｓｙｍｍｅｔｒｉｃ  Ｍｕｌｔｉｐｒｏｃｅｓｓｉｎｇ；非対称型マルチプロセッシング）で使用し、ＯＳの介在なしで各コアにパケット転送機能を占有させる。この場合、ＯＳを介在させないので、各コアにて動作するパケット転送機能のハングアップの検出に、ウォッチドックタイマを使用する方法は適用できない。
【０００４】
そのため、監視ソフトウェア（以下、監視機能や監視機能部と呼ぶ）とパケット転送機能との間で、ＩＣＭＰ  ＥＣＨＯ（ＲＦＣ７９２）等に従った（ｐｉｎｇの）情報交換（ハートビート）を行うことで、パケット転送機能のハングアップを検出する必要があった。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平３−２６８１４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、ハートビートがパケット転送機能にオーバヘッドとなり、転送遅延等の要因となってしまう。また、パケット転送機能が処理限界（ＣＰＵの使用率が限界に近いこと）で動作している場合、ハートビートを実行することによってパケットの欠落が発生する。パケットの欠落を避けるため、パケット転送機能の処理を優先してハートビート用の情報の到来を無視した場合には、監視機能が誤ってハングアップが生じていると判断してしまう。
【０００７】
そのため、本来のソフトウェア処理にさほど負担を掛けずにハングアップを検出できるハングアップ監視装置及びパケット転送装置が望まれている。
【課題を解決するための手段】
【０００８】
第１の発明のハングアップ監視装置は、（１）所定処理をプロセッサに実行させる処理プログラムである所定処理機能部を有する、並列処理可能な少なくとも１個の処理用コアと、（２）上記各処理用コアにおける上記処理プログラムのハングアップを監視する制御用コアと、（３）上記各処理用コアと上記制御用コアが共にアクセス可能な共通メモリとを有し、（４）上記共通メモリには、クロックに基づいて現カウント値を更新する、上記各処理用コア毎の現カウンタが設定され、（５）上記制御用コアが有するローカルメモリ若しくは上記共通メモリには、転送されてきた現カウント値を直前カウント値として保存する、上記各処理用コア毎の直前カウント値保存域が設定され、（６）上記各処理用コアは、上記処理プログラムの所定部分の開始から終了までの期間、上記処理プログラムからの起動により、当該処理用コアについての上記現カウンタをカウント動作させる、ハードウェア要素としてのカウント指示部を有し、（７）上記制御用コアは、上記各処理用コアについての現カウント値と直前カウント値との照合を間欠的に実行し、両カウント値の一致時に処理対象の上記処理用コアにおける上記処理プログラムはハングアップと判断し、両カウント値の不一致時に現カウント値を直前カウント値として上記直前カウント値保存域に保存させる監視機能部を有することを特徴とする。
【０００９】
第２の本発明は、パケット転送プログラムを有する、複数のパケット処理用コアを備えたパケット転送装置において、上記パケット転送プログラムのハングアップを監視するハングアップ監視装置として、第１の本発明のハングアップ監視装置を適用していることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、本来のソフトウェア処理にさほど負担を掛けずにハングアップを検出できるハングアップ監視装置及びパケット転送装置を実現できる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施形態のメディア変換装置におけるハングアップ検出の観点から見た特徴的な構成部分を示すブロック図である。
【図２】第１の実施形態のメディア変換装置におけるＣＰＵ内に設けられた監視テーブルと監視テーブル保存域との構成を示す説明図である。
【図３】第１の実施形態のメディア変換装置におけるＣＰＵ内のあるパケット転送用コアのパケット転送機能部での処理の流れを示すフローチャートである。
【図４】第１の実施形態のメディア変換装置におけるＣＰＵ内の制御用コアの監視機能部での処理の流れを示すフローチャートである。
【図５】第２の実施形態のメディア変換装置におけるＣＰＵ内に設けられた転送処理監視テーブルと転送処理監視テーブル保存域との構成を示す説明図である。
【図６】第２の実施形態のメディア変換装置におけるＣＰＵ内のあるパケット転送用コアのパケット転送機能部での処理の流れを示すフローチャートである。
【図７】第２の実施形態のメディア変換装置におけるＣＰＵ内の制御用コアの監視機能部での処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１２】
（Ａ）第１の実施形態
以下、本発明によるハングアップ監視装置及びパケット転送装置の第１の実施形態を、図面を参照しながら説明する。第１の実施形態のパケット転送装置はメディア変換装置であり、以下、第１の実施形態のパケット転送装置をメディア変換装置と呼ぶ。
【００１３】
（Ａ−１）第１の実施形態の構成
図１は、第１の実施形態のメディア変換装置におけるハングアップ検出の観点から見た特徴的な構成部分を示すブロック図である。
【００１４】
図１において、第１の実施形態のメディア変換装置１は、マルチコアＣＰＵパッケージ（以下、ＣＰＵと呼ぶ）２と、ネットワークインタフェース部３とを有している。
【００１５】
第１の実施形態のメディア変換装置１が適用しているＣＰＵ２は、複数のプロセッサコア（以下、単にコアと呼ぶ）１１、１２−１〜１２−Ｎを備え、各コア１１、１２−１〜１２−Ｎにおけるプログラム格納部に、所望のソフトウェアを書き込んで所望の機能を発揮させるものである。また、ＣＰＵ２は、各コア１１、１２−１〜１２−Ｎがそれぞれ、ハードウェア要素としてパフォーマンスモニタ２３、３２−１〜３２−Ｎを予め備えているものである。
【００１６】
ＣＰＵ２は、共通メモリ１０と、制御用コア１１と、複数（図１ではＮ個）のパケット転送用コア１２−１〜１２−Ｎと、ハードウェア要素であるクロック発生部１３とを有する。
【００１７】
共通メモリ１０は、制御用コア１１及びパケット転送用コア１２−ｎ（ｎは１〜Ｎ）が共にアクセスできるメモリである。第１の実施形態の場合、共通メモリ１０には、後述する図２に示す監視テーブルＴＢＬ１が設けられている。
【００１８】
制御用コア１１は、後述するパケット転送機能部３０−１〜３０−Ｎのハングアップを監視するソフトウェアである監視機能部（図１では監視機能と表記）２０と、図２に示す監視テーブル保存域ＡＲＴＢＬ１が設けられているローカルメモリ２１と、ＯＳ２２と、パフォーマンスモニタ２３とを有する。
【００１９】
監視機能部２０は、一定周期で、監視テーブルＴＢＬ１におけるあるパケット転送用コア１２−ｎについての現カウント値（後述する現カウンタの値）と、監視テーブル保存域ＡＲＴＢＬ１におけるそのパケット転送用コア１２−ｎについての直前カウント値とを照合させ、現カウント値と直前カウント値が一致しているときにハングアップが生じていると判断させ、現カウント値と直前カウント値が異なるときに正常（ハングアップが生じていない）と判断させるようなソフトウェアとなっている。監視機能部２０には、パケット転送用コア１２−ｎが正常と判断されたときに、直前カウント値を現カウント値に更新させるソフトウェア部分が含まれている。
【００２０】
各パケット転送用コア１２−ｎは、受信パケットに所定の処理を施して送信させるためのソフトウェアであるパケット転送機能部３０−ｎと、所定処理待ちの受信パケットをキューイングしておく受信キュー３１−ｎと、当該パケット転送用コア１２−ｎにおけるパフォーマンスをモニタする上述したハードウェア要素であるパフォーマンスモニタ３２−ｎとを有する。
【００２１】
ここで、パケット転送機能部３０−ｎの実行によってなされる所定処理は、例えば、ＮＡＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ；ネットワークアドレス変換）、ＮＡＴ−ＰＴ（ＮＡＴ  Ｐｒｏｔｏｃｏｌ  Ｔｒａｎｓｌａｔｉｏｎ；ネットワークアドレス変換−プロトコル変換）、ＮＡＰＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｐｏｒｔ  Ｔｒａｎｓｌａｔｉｏｎ；ネットワークアドレスポート変換）、ＮＡＰＴ−ＰＴ（ＮＡＰＴ  Ｐｒｏｔｏｃｏｌ  Ｔｒａｎｓｌａｔｉｏｎ；ネットワークアドレスポート変換−プロトコル変換）等である。
【００２２】
また、各パケット転送用コア１２−ｎは、それぞれが独立して動作できるように、ＯＳが介在しないものとなっている。すなわち、プロセッサをＡＭＰで使用し、ＯＳの介在なしで（スケジューリングされることなく）各パケット転送用コア１２−１〜１２−Ｎのパケット転送機能部３０−１〜３０−Ｎが並列処理されるようになされている。
【００２３】
第１の実施形態では、全てのパケット転送用コア１２−１〜１２−Ｎのそれぞれに、ハードウェア要素として設けられているパフォーマンスモニタ３２−１〜３２−Ｎをハングアップの監視に利用することとしている（なお、上述したように制御用コア１１もパフォーマンスモニタを有している）。各パフォーマンスモニタ３２−ｎは、自己が設けられているコア（パケット転送用コア１２−ｎ）のパフォーマンスをモニタし得るように、予め各コアに設けられているものである。各パフォーマンスモニタ３２−ｎは、当該コアのソフトウェアからの要請により、共通メモリ１０上の監視テーブルＴＢＬ１における当該コアの現カウンタのカウント値の更新開始と、更新停止を指示し、その更新期間だけ、カウント値を、クロック発生部１３による発生クロックに応じてカウントアップさせ得るものである。
【００２４】
第１の実施形態の場合、各パフォーマンスモニタ３２−ｎは、例えば、パケット転送機能部３０−ｎが受信キュー３１−ｎのキューイング状態を確認している期間だけ、監視テーブルＴＢＬ１に用意されている、当該パケット転送用コア１２−ｎ用の現カウンタをカウントアップさせるものである。より具体的に言えば、各パフォーマンスモニタ３２−ｎは、監視テーブルＴＢＬ１のアドレスを与えて現カウンタを特定させ、その現カウンタのカウントアップの開始を指示すると共に、監視テーブルＴＢＬ１のアドレスを与えて現カウンタを特定させ、その現カウンタのカウントアップの停止の指示するものである。
【００２５】
ネットワークインタフェース部３は、ネットワーク４から到来したパケットを、パケット転送用コア１２−１〜１２−Ｎのいずれかに振り分けたり、パケット転送用コア１２−１〜１２−Ｎから出力された所定処理後のパケットをネットワーク４に送り出したりするものである。
【００２６】
ここで、パケット転送用コア１２−１〜１２−Ｎへのパケットの振分けを、セッションや当該メディア変換装置１からの出方路や当該メディア変換装置１への入方路などの相違により行うようにしても良く、パケットの種別や優先度や入出力ポートに応じて行うようにしても良く、振分けの観点は限定されるものではない。
【００２７】
図２は、監視テーブルＴＢＬ１及び監視テーブル保存域ＡＲＴＢＬ１の構成を示す説明図である。
【００２８】
監視テーブルＴＢＬ１は、図２（Ａ）に示すように、パケット転送用コア１２−ｎの識別情報（図２（Ａ）では「コア番号」と表記）と、そのパケット転送用コア１２−ｎについての現カウンタのカウント値との対情報が、全てのパケット転送用コア１２−１〜１２−Ｎについて記述されている。現カウンタのカウント値の更新は、共通メモリ１０をアクセスするハードウェアによってクロック周期で実行されるようになされており、パフォーマンスモニタ３２−ｎは、そのような更新の開始と停止とを指示するものであり、開始が指示された以降、停止が指示するまでの間、現カウンタはカウントアップされる。現カウンタは、例えば、６４ビットカウンタであり、カウント値が最大値のときにクロックが生じると最小値に変更する巡回カウンタとなっている。
【００２９】
監視テーブル保存域ＡＲＴＢＬ１は、図２（Ｂ）に示すように、パケット転送用コア１２−ｎの識別情報（図２（Ｂ）では「コア番号」と表記）と、そのパケット転送用コア１２−ｎについての直前カウント値との対情報が、全てのパケット転送用コア１２−１〜１２−Ｎについて記述されている。直前カウント値は、監視機能部２０の処理により、所定条件が成立したときに監視テーブルＴＢＬ１の現カウント値が新たな直前カウント値として上書きされる値である。すなわち、直前カウント値は、カウントアップされたりカウントダウンされたりすることはない、外部から監視テーブル保存域ＡＲＴＢＬ１に設定される値である。
【００３０】
（Ａ−２）第１の実施形態の動作
次に、第１の実施形態のメディア変換装置１におけるハングアップの検出に関連する動作を説明する。
【００３１】
ネットワーク４から到来したパケット（メディアパケット）はネットワークインタフェース部３に与えられ、ネットワークインタフェース部３によって、その受信パケットに対応するパケット転送用コア（ここでは、パケット転送用コア１２−ｎであるとする）が判別されて、受信パケットが、そのパケット転送用コア１２−ｎの受信キュー３１−ｎにキューイングされる。
【００３２】
パケット転送用コア１２−ｎのパケット転送機能部３０−ｎの処理の流れ（ソフトウェア）を、図３のフローチャートに示している。
【００３３】
パケット転送用コア１２−ｎに係るプロセッサ（以下、図３についての説明では、パケット転送用コア１２−ｎと呼ぶ）は、受信パケットの新たな処理を行うことができる状態になると、パフォーマンスモニタ３２−ｎによるモニタを開始させた後（ステップＳ１００）、受信キュー３１−ｎの状態をチェックし（ステップＳ１０１）、チェック終了後に、パフォーマンスモニタ３２−ｎによるモニタを終了させる（ステップＳ１０２）。
【００３４】
パフォーマンスモニタ３２−ｎは、モニタの開始時に、共通メモリ１０のアクセス構成に対して、当該パケット転送用コア１２−ｎの識別情報や当該パケット転送用コア１２−ｎについての現カウンタ（の記憶エリア）のアドレスを与えて、クロックによるカウントアップを起動させる。また、パフォーマンスモニタ３２−ｎは、モニタの終了時に、共通メモリ１０のアクセス構成に対して、当該パケット転送用コア１２−ｎの識別情報や当該パケット転送用コア１２−ｎについての現カウンタ（の記憶エリア）のアドレスを与えて、クロックによるカウントアップを終了させる。
【００３５】
従って、パケット転送機能部３０−ｎがハングアップしておらず、上述したステップＳ１００からＳ１０２の処理が適切に実行された際には、モニタ終了時の現カウント値は、モニタ開始時のカウント値と異なったものとなっている（大半の場合、モニタ終了時の現カウント値は大きくなっている）。
【００３６】
パケット転送用コア１２−ｎは、パフォーマンスモニタ３２−ｎによるモニタを終了させた後では、受信キュー３１−ｎにキューイングされている受信パケットがあるか否かを判別する（ステップＳ１０３）。キューイングされている受信パケットがなければ、パケット転送用コア１２−ｎは、上述したステップＳ１００の処理に戻る。これに対して、キューイングされている受信パケットがあれば、パケット転送用コア１２−ｎは、受信キュー３１−ｎにキューイングされている最古の受信パケットを取り出して、上述したような所定の処理を施し、その処理後のパケットを、ネットワークインタフェース部３からネットワーク４へ送信させる（ステップＳ１０４、Ｓ１０５）。その後、上述したステップＳ１００の処理に戻る。
【００３７】
例えば、ステップＳ１０４やＳ１０５の処理途中でパケット転送機能部３０−ｎがハングアップしていると、上述したステップＳ１００の処理に戻ることができず、パフォーマンスモニタ３２−ｎによる現カウント値の更新が実行されず、現カウント値として同一の値が継続する。
【００３８】
制御用コア１１における監視機能部２０は、このような現カウント値が更新されていないことを検出し、パケット転送機能部３０−ｎのハングアップを検出しようとしたものである。図４は、制御用コア１１の監視機能部２０における処理の流れ（ソフトウェア）を示すフローチャートである。
【００３９】
制御用コア１１に係るプロセッサ（以下、図４についての説明では、制御用コア１１と呼ぶ）は、パケット転送用コア１２−１〜１２−Ｎ毎に定まっているタイミングで定期的に図４に示す処理（監視機能部２０を構成するソフトウェアの処理）を開始する。例えば、定期的な周期をＴとすると、その周期をパケット転送用コアの数Ｎで割った時間Ｔ／Ｎずつずらして、各パケット転送用コア１２−ｎについての図４の処理を開始する。すなわち、パケット転送用コア１２−１についての図４の処理を開始したタイミングから、時間Ｔ／Ｎ後に、パケット転送用コア１２−２についての図４の処理を開始し、以下、同様にして、監視対象のパケット転送用コアを切り替えていく。なお、ハングアップを起こしていないパケット転送用コア１２−ｎについての図４の処理は時間Ｔ／Ｎ以内で終了するようになっている。ここで、時間Ｔは、この時間Ｔ内に、少なくとも１回は図３の処理が実行される時間に選定されている。
【００４０】
制御用コア１１は、その時点で処理対象のパケット転送用コア１２−ｎについての図４に示す処理を開始し、まず、パケット転送用コア１２−ｎについての監視テーブルＴＢＬ１における現カウンタのカウント値（現カウント値）から、パケット転送用コア１２−ｎについての監視テーブル保存域ＡＲＴＢＬ１における直前カウント値を減算する（ステップＳ１５０）。そして、制御用コア１１は、現カウント値と直前カウント値とに差分があるか否か、言い換えると、現カウント値と直前カウント値とが一致しているか否かを判断する（ステップＳ１５１）。
【００４１】
制御用コア１１は、現カウント値と直前カウント値とに差分がある場合には（この場合はパケット転送用コア１２−ｎがハングアップしていない正常な場合である）、そのときのパケット転送用コア１２−ｎについての監視テーブルＴＢＬ１における現カウンタのカウント値（現カウント値）を、パケット転送用コア１２−ｎについての監視テーブル保存域ＡＲＴＢＬ１に新たな直前カウント値として上書きし（ステップＳ１５２）、図４の一連の処理を終了する。これにより、処理対象のパケット転送用コアがパケット転送用コア１２−（ｎ＋１）に切り替わり（但し、直前のｎがＮの場合にはパケット転送用コア１２−１に切り替わる）、同様な処理が実行される。また、現カウンタが巡回カウンタであるため、上述した不一致を表す差分は、正の値に限定されず負の値であっても良い。
【００４２】
一方、制御用コア１１は、現カウント値と直前カウント値とに差分がある場合には、処理対象のパケット転送用コア１２−ｎがハングアップしていると検出した際の処理を実行する（ステップＳ１５３）。例えば、制御用コア１１は、ＯＳ２２を介して、当該メディア変換装置１が有する発光素子をハングアップア障害発生用のパターンで点滅したり、当該メディア変換装置１が有するブザーをハングアップア障害発生用のパターンで断続的に鳴動したりする。また例えば、制御用コア１１は、信号線の図示は省略しているが、ネットワークインタフェース部３を介して、予め定められた宛先アドレスを有するハングアップア障害発生通知のパケットを所定の装置に向けて送信する。
【００４３】
（Ａ−３）第１の実施形態の効果
第１の実施形態によれば、ＯＳの介在なしに独立して動作するソフトウェアである複数のパケット転送機能部３０−１〜３０−Ｎのうちのいずれかのハングアップを、最小のオーバヘッドで検出することができる。すなわち、パケット転送機能部３０−ｎの処理の中で、ハングアップ検出のための処理はパフォーマンスモニタ３２−ｎへのモニタ開始の指示とモニタ終了の指示であり、パケット転送機能部３０−ｎの本来のパケット転送のための処理にほとんど負担を掛けずにハングアップを検出することができる。その結果、ハングアップの検出のための処理が負荷となって生じていた不必要な受信パケットの廃棄などを未然に防止することができる。
【００４４】
（Ｂ）第２の実施形態
次に、本発明によるハングアップ監視装置及びパケット転送装置の第２の実施形態を、図面を参照しながら説明する。第２の実施形態のパケット転送装置はメディア変換装置であり、以下、第２の実施形態のパケット転送装置をメディア変換装置と呼ぶ。
【００４５】
（Ｂ−１）第２の実施形態の構成
第２の実施形態のメディア変換装置１Ａの全体構成も、第１の実施形態の説明で用いた図１で表すことができる。
【００４６】
しかし、第２の実施形態のメディア変換装置１Ａは、以下のような点が、第１の実施形態と構成上若しくは機能上異なっている。
【００４７】
第２の実施形態の共通メモリ１０には、第１の実施形態の場合に適用されていた監視テーブルＴＢＬ１に加え、転送処理監視テーブルＴＢＬ２も設けられる。また、第２の実施形態のローカルメモリ２０には、第１の実施形態の場合に適用されていた監視テーブル保存域ＡＲＴＢＬ１に加え、転送処理監視テーブル保存域ＡＲＴＢＬ２も設けられる。
【００４８】
なお、第２の実施形態の説明では、第１の実施形態と同様な監視テーブルＴＢＬ１を「受信キュー確認処理監視テーブル」と呼び、第１の実施形態と同様な監視テーブル保存域ＡＲＴＢＬ１を「受信キュー確認処理監視テーブル保存域」と呼ぶこととする。
【００４９】
受信キュー確認処理監視テーブルＴＢＬ１におけるパケット転送用コア１２−ｎの現カウンタは、第１の実施形態で説明したように、パケット転送用コア１２−ｎのパケット転送機能部３０−ｎが受信キュー３１−ｎにキューイングされているパケットがあるか否かを確認している期間、パフォーマンスモニタ３２−ｎによってカウントアップされるものであった。また、受信キュー確認処理監視テーブル保存域ＡＲＴＢＬ１は、第１の実施形態で説明したように、監視機能部２０の機能により、制御用コア２０が、パケット転送用コア１２−ｎにハングアップが生じていないと判断したときに、受信キュー確認処理監視テーブルＴＢＬ１における現カウンタの値が上書きされるものであった。
【００５０】
この第２の実施形態で新たに設けられた転送処理監視テーブルＴＢＬ２は、パケット転送用コア１２−ｎのパケット転送機能部３０−ｎが受信パケットに対する加工（上述したＮＡＴ等）や加工後のパケットの送出を実行している期間、パフォーマンスモニタ３２−ｎによってカウントアップされる現カウンタを有するものである。また、第２の実施形態で新たに設けられた転送処理監視テーブル保存域ＡＲＴＢＬ２は、監視機能部２０の機能により、制御用コア２０が、パケット転送用コア１２−ｎにハングアップが生じていないと判断したときに、転送処理監視テーブルＴＢＬ２における現カウンタの値が上書きされるものである。
【００５１】
図５は、転送処理監視テーブルＴＢＬ２及び転送処理監視テーブル保存域ＡＲＴＢＬ２の構成を示す説明図である。
【００５２】
転送処理監視テーブルＴＢＬ２も、受信キュー確認処理監視テーブルＴＢＬ１と同様に、パケット転送用コア１２−ｎの識別情報（図５（Ａ）では「コア番号」と表記）と、そのパケット転送用コア１２−ｎについての現カウンタのカウント値との対情報を、全てのパケット転送用コア１２−１〜１２−Ｎについて記述するように構成されている。
【００５３】
また、転送処理監視テーブル保存域ＡＲＴＢＬ２も、受信キュー確認処理監視テーブル保存域ＡＲＴＢＬ１と同様に、パケット転送用コア１２−ｎの識別情報（図５（Ｂ）では「コア番号」と表記）と、そのパケット転送用コア１２−ｎについての直前カウント値との対情報を、全てのパケット転送用コア１２−１〜１２−Ｎについて記述するように構成されている。
【００５４】
第２の実施形態のパケット転送機能部３０−ｎは、パフォーマンスモニタ３２−ｎに指令を与えて、受信キュー確認処理監視テーブルＴＢＬ１や転送処理監視テーブルＴＢＬ２における現カウンタの値の更新を開始させたり停止させたりするソフトウェア部分を含んでいる（後述する図６参照）。
【００５５】
第２の実施形態の監視機能部２０は、受信キュー確認処理監視テーブルＴＢＬ１における現カウント値と受信キュー確認処理監視テーブル保存域ＡＲＴＢＬ１における直前カウント値の照合や、転送処理監視テーブルＴＢＬ２における現カウント値と転送処理監視テーブル保存域ＡＲＴＢＬ２における直前カウント値の照合などにより、パケット転送機能部３０−ｎに生じたハングアップを検出するソフトウェア部分を含んでいる（後述する図７参照）。
【００５６】
（Ｂ−２）第２の実施形態の動作
次に、第１の実施形態のメディア変換装置１Ａにおけるハングアップの検出に関連する動作を説明する。
【００５７】
図６は、第２の実施形態のパケット転送用コア１２−ｎのパケット転送機能部３０−ｎにおける処理の流れを示すフローチャートであり、第１の実施形態の説明で用いた図３の同一、対応ステップには同一符号を付して示している。
【００５８】
パケット転送用コア１２−ｎに係るプロセッサ（以下、図６についての説明では、パケット転送用コア１２−ｎと呼ぶ）は、受信パケットの新たな処理を行うことができる状態になると、第１の実施形態と同様に、パフォーマンスモニタ３２−ｎによる前半のモニタを開始させた後（ステップＳ１００）、受信キュー３１−ｎの状態をチェックし（ステップＳ１０１）、チェック終了後に、パフォーマンスモニタ３２−ｎによる前半のモニタを終了させる（ステップＳ１０２）。この前半のモニタの開始から終了までの期間において、受信キュー確認処理監視テーブルＴＢＬ１における当該パケット転送用コア１２−ｎについての現カウンタ（の記憶エリア）がクロックに従ってカウントアップされる。但し、パケット転送機能部３０−ｎがハングアップしていて、上述したステップＳ１００からＳ１０２の処理が適切に実行されない場合には、現カウンタの値（現カウント値）のカウントアップは実行されず、現カウント値が同一値を維持する。
【００５９】
第２の実施形態においても、パケット転送用コア１２−ｎは、パフォーマンスモニタ３２−ｎによる前半のモニタを終了させた後では、受信キュー３１−ｎにキューイングされている受信パケットがあるか否かを判別する（ステップＳ１０３）。キューイングされている受信パケットがなければ、パケット転送用コア１２−ｎは、上述したステップＳ１００の処理に戻る。
【００６０】
これに対して、キューイングされている受信パケットがあれば、パケット転送用コア１２−ｎは、パフォーマンスモニタ３２−ｎによる後半のモニタを開始させた後（ステップＳ１２０）、受信キュー３１−ｎにキューイングされている最古の受信パケットを取り出して、上述したような所定の処理を施し、その処理後のパケットを、ネットワークインタフェース部３から送信させ（ステップＳ１０４、Ｓ１０５）、パフォーマンスモニタ３２−ｎによる後半のモニタを終了させる（ステップＳ１２１）。その後、上述したステップＳ１００の処理に戻る。
【００６１】
パフォーマンスモニタ３２−ｎは、後半のモニタの開始時に、共通メモリ１０のアクセス構成に対して、当該パケット転送用コア１２−ｎの識別情報や当該パケット転送用コア１２−ｎについての転送処理監視テーブルＴＢＬ２における現カウンタ（の記憶エリア）のアドレスを与えて、クロックに基づいたカウントアップを起動させる。また、パフォーマンスモニタ３２−ｎは、後半のモニタの終了時に、共通メモリ１０のアクセス構成に対して、当該パケット転送用コア１２−ｎの識別情報や当該パケット転送用コア１２−ｎについての転送処理監視テーブルＴＢＬ２における現カウンタ（の記憶エリア）のアドレスを与えて、クロックに基づいたカウントアップを終了させる。
【００６２】
例えば、ステップＳ１０４の処理を開始する前にパケット転送機能部３０−ｎがハングアップしていると、後半のモニタが起動されず、パフォーマンスモニタ３２−ｎによる転送処理監視テーブルＴＢＬ２における現カウント値の更新が実行されず、現カウント値として同一の値が継続する。
【００６３】
制御用コア１１における監視機能部２０は、このような受信キュー確認処理監視テーブルＴＢＬ１における現カウント値や転送処理監視テーブルＴＢＬ２における現カウント値が更新されていないことを検出し、パケット転送機能部３０−ｎのハングアップを検出しようとしたものである。
【００６４】
図７は、第２の実施形態の制御用コア１１の監視機能部２０における流れを示すフローチャートであり、第１の実施形態の説明で用いた図４の同一、対応ステップには同一符号を付して示している。
【００６５】
第２の実施形態の制御用コア１１も、パケット転送用コア１２−１〜１２−Ｎ毎に定まっているタイミングで定期的に図７に示す処理（監視機能部２０を構成するソフトウェアの処理）を開始する。
【００６６】
制御用コア１１は、その時点で処理対象のパケット転送用コア１２−ｎについての図７に示す処理を開始し、まず、パケット転送用コア１２−ｎについての受信キュー確認処理監視テーブルＴＢＬ１における現カウンタのカウント値（現カウント値）から、パケット転送用コア１２−ｎについての受信キュー確認処理監視テーブル保存域ＡＲＴＢＬ１における直前カウント値を減算し（ステップＳ１５０）、現カウント値と直前カウント値とに差分があるか否か（言い換えると、現カウント値と直前カウント値とが一致しているか否か）を判断する（ステップＳ１５１）。
【００６７】
制御用コア１１は、受信キュー確認処理監視テーブルＴＢＬ１における現カウン値と受信キュー確認処理監視テーブル保存域ＡＲＴＢＬ１における直前カウント値とに差分がある場合には、そのときのパケット転送用コア１２−ｎについての受信キュー確認処理監視テーブルＴＢＬ１における現カウント値を、パケット転送用コア１２−ｎについての受信キュー確認処理監視テーブル保存域ＡＲＴＢＬ１に新たな直前カウント値として上書きすると共に（ステップＳ１５２）、そのときのパケット転送用コア１２−ｎについての転送処理監視テーブルＴＢＬ２における現カウント値を、パケット転送用コア１２−ｎについての転送処理監視テーブル保存域ＡＲＴＢＬ２に新たな直前カウント値として上書きし（ステップＳ１７０）、図７の一連の処理を終了する。これにより、処理対象のパケット転送用コアがパケット転送用コア１２−（ｎ＋１）に切り替わり、同様な処理が実行される。
【００６８】
一方、制御用コア１１は、受信キュー確認処理に係る現カウント値と直前カウント値とに差分がある場合には、パケット転送用コア１２−ｎについての転送処理監視テーブルＴＢＬ２における現カウント値から、パケット転送用コア１２−ｎについての転送処理監視テーブル保存域ＡＲＴＢＬ２における直前カウント値を減算し（ステップＳ１７１）、現カウント値と直前カウント値とに差分があるか否か（言い換えると、現カウント値と直前カウント値とが一致しているか否か）を判断する（ステップＳ１７２）。
【００６９】
制御用コア１１は、転送処理監視テーブルＴＢＬ２における現カウン値と転送処理監視テーブル保存域ＡＲＴＢＬ２における直前カウント値とに差分がある場合には、上述したステップＳ１５２及びＳ１７０の処理を実行する。
【００７０】
一方、制御用コア１１は、転送処理に係る現カウント値と直前カウント値とに差分がある場合には、処理対象のパケット転送用コア１２−ｎがハングアップしていると検出した際の処理を実行する（ステップＳ１５３）。
【００７１】
（Ｂ−３）第２の実施形態の効果
第２の実施形態によっても、ＯＳの介在なしに独立して動作するソフトウェアである複数のパケット転送機能部３０−１〜３０−Ｎのうちのいずれかのハングアップを、最小のオーバヘッドで検出することができる。
【００７２】
動作の項で説明は省略しているが、受信キュー確認処理に要する時間を計時すると共に、転送処理に要する時間を計時しているので、パケット転送用コア毎のＣＰＵ使用率等を容易に算出（測定）することができる。言い換えると、ＣＰＵ使用率の測定用に用いるカウンタの値を利用して、パケット転送機能部のハングアップを検出することができる。
【００７３】
（Ｃ）他の実施形態
上記各実施形態の説明においても、種々変形実施形態に言及したが、さらに、以下に例示するような変形実施形態を挙げることができる。
【００７４】
上記各実施形態では、受信キュー確認処理監視テーブル保存域ＡＲＴＢＬ１や転送処理監視テーブル保存域ＡＲＴＢＬ２を、制御用コア１１のローカルメモリ２１に設けたものを示したが、これら保存域の少なくとも一方を共通メモリ１０に設けるようにしても良い。
【００７５】
上記各実施形態では、共通メモリ１０が全てのコア１１、１２−１〜１２−Ｎに共通な場合を示したが、共通メモリが一部のコアに共通なように設けるようにしても良い。例えば、制御用コア１１とパケット転送用コア１２−１に共通なメモリ、制御用コア１１とパケット転送用コア１２−２に共通なメモリ、…のように、共通なメモリを複数に分けて設けるようにしても良い。特許請求の範囲の用語「共通メモリ」は、この変形実施形態のように、複数の共通メモリに分かれている場合も含むものとする。
【００７６】
上記各実施形態では、監視機能部２０が、各パケット転送用コア１２−１〜１２−Ｎがハングアップしているかを監視する周期が同じである場合を示したが、監視周期が各パケット転送用コア１２−１〜１２−Ｎで異なるようにしても良い。例えば、第２の実施形態の説明で言及した使用率（ＣＰＵ使用率）をパケット転送用コア毎に算出し、使用率が高いパケット転送用コアほど、監視周期を短くするようにしても良い。
【００７７】
上記第２の実施形態では、受信キュー確認処理監視テーブルＴＢＬ１における現カウント値と受信キュー確認処理監視テーブル保存域ＡＲＴＢＬ１における直前カウント値が一致し、かつ、転送処理監視テーブルＴＢＬ２における現カウント値と転送処理監視テーブル保存域ＡＲＴＢＬ２における直前カウント値が一致するときに、パケット転送用コア１２−ｎがハングアップしたと判断する場合を示したが、受信キュー確認処理監視テーブルＴＢＬ１における現カウント値と受信キュー確認処理監視テーブル保存域ＡＲＴＢＬ１における直前カウント値との一致と、転送処理監視テーブルＴＢＬ２における現カウント値と転送処理監視テーブル保存域ＡＲＴＢＬ２における直前カウント値との一致の少なくとも一方が成立したときに、パケット転送用コア１２−ｎがハングアップしたと判断するようにしても良い。このようにした場合には、例えば、図６のステップＳ１０２のカウンタの終了処理が実行されず、受信キュー確認処理監視テーブルＴＢＬ１のカウントアップが半永久的に実行されている場合であっても、転送処理監視テーブルＴＢＬ２における現カウント値と転送処理監視テーブル保存域ＡＲＴＢＬ２における直前カウント値との照合に基づいて、パケット転送用コア１２−ｎがハングアップしたことを検出することができる。
【００７８】
上記第１の実施形態では、監視機能部２０の図４に示す１回のループで、監視テーブルと監視テーブル保存域のカウント値が一致すると直ちにパケット転送用コア１２−ｎがハングアップしたと確定する場合を示したが、図４に示す処理ループの連続所定回数（例えば２回）で全て監視テーブルと監視テーブル保存域のカウント値が一致するという結果を得たときに、パケット転送用コア１２−ｎがハングアップしたと確定するようにしても良い。第２の実施形態についても、同様な変形実施形態を挙げることができる。
【００７９】
上記第２の実施形態では、監視テーブルと監視テーブル保存域との組の数が２組の場合を示したが、監視テーブルと監視テーブル保存域との組が３組以上あっても良い。この場合には、パケット転送機能部の処理を３以上の処理部分に区分することを要する。
【００８０】
上記各実施形態では、各パケット転送用コア１２−１〜１２−Ｎのパフォーマンスモニタ３２−１〜３２−Ｎを使用して所定のカウンタを動作させてパケット転送機能部３０−１〜３０−Ｎのハングアップを監視する場合を示したが、パフォーマンスモニタ以外の既存の構成要素を利用してパケット転送機能部３０−１〜３０−Ｎのハングアップを監視するようにしても良い。例えば、各パケット転送用コアが、ハードウェア要素としてのクロックカウンタを具備している場合には、パフォーマンスモニタの代りにクロックカウンタをパケット転送機能部３０−１〜３０−Ｎのハングアップの監視に使用することができる。この場合、パケット転送機能部３０−ｎがクロックカウンタを読み出して現カウント値（図２若しくは図５参照）を更新する。
【００８１】
上記各実施形態では、監視機能部がソフトウェアでなるものを示したが、監視機能部をハードウェア要素として構築するようにしても良い。
【００８２】
上記各実施形態では、パケット転送コアが複数あるものを示したが、パケット転送コアが１個の場合にも、本発明の技術思想を適用することができる。
【００８３】
上記各実施形態は、本発明の技術思想をメディア変換装置に適用したものであったが、本発明の技術思想を他のパケット転送装置に適用することもできる。また、ハングアップの監視対象のコアが行う処理も、パケット転送処理に限定されるものではなく、他種類の処理を行うものであっても良い。さらに、監視対象の一部のコアがパケット転送処理を行い、残部のコアが他種類の処理を行うものであっても良い。
【００８４】
上記各実施形態は、複数のコアを有するＣＰＵパッケージに対して、本発明の技術思想を適用した場合を示したが、監視用コアに相当する処理部や、各パケット転送用コアに相当する処理部が、別個のパッケージやチップで構成されている場合にも、本発明の技術思想を適用することができる。なお、特許請求の範囲では用語「コア」を用いているが、このような変形実施形態を含むものとする。
【符号の説明】
【００８５】
１、１Ａ…メディア変換装置、２…ＣＰＵ、３…ネットワークインタフェース部、
１０…共通メモリ、１１…制御用コア、１２−１〜１２−Ｎ…パケット転送用コア、１３…クロック発生部、
２０…監視機能部、２１…ローカルメモリ、
３０−１〜３０−Ｎ…パケット転送機能部、３１−１〜３１−Ｎ…受信キュー、３２−１〜３２−Ｎ…パフォーマンスモニタ、
ＴＢＬ１…監視テーブル（受信キュー確認処理監視テーブル）、ＡＲＴＢＬ１…監視テーブル保存域（受信キュー確認処理監視テーブル保存域）、ＴＢＬ２…転送処理監視テーブル、ＡＲＴＢＬ２…転送処理監視テーブル保存域。
【図１】
0006402657.tif 000002
【図２】
0006402657.tif 000003
【図３】
0006402657.tif 000004
【図４】
0006402657.tif 000005
【図５】
0006402657.tif 000006
【図６】
0006402657.tif 000007
【図７】
0006402657.tif 000008