(57)【要約】【課題】受信処理を複数のタスクで構成するパケット送受信装置において、パケット受信処理における過負荷状態を検出するための手段を実現する。【解決手段】タスク間通信カウンタ更新部１４１を有するタスク間通信中継部１４０において、通信プロトコル処理を実現するドライバ処理タスク１１０とプロトコル処理タスク１２０と割り込み処理部１０１のタスク間通信を中継し、中継時に前記タスク間通信の回数をカウンタ部１６０に格納する。負荷検出部１５０は所定時間毎にカウンタ部１６０を参照し、前記タスク間通信回数を比較することにより、パケット受信処理における過負荷状態を検出する。【選択図】図１
2006333292.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続し、通信時の自装置の負荷状態を検出する機能を有する通信装置であって、
前記通信装置内部で動作する複数のソフトウェアタスク間のタスク間通信要求回数と、前記複数のソフトウェアタスクのタスク起床回数のうち、少なくとも１つを格納するカウンタ部と、
少なくとも前記複数のソフトウェアタスク間の通信要求を中継して前記タスク間通信要求回数を検出し、前記カウンタ部の値を更新するか、又は前記複数のソフトウェアタスクのタスク起床処理を中継して前記タスク起床を検出し、前記カウンタ部の値を更新するタスク間通信カウンタ更新部と、
所定の時間毎に前記カウンタ部のタスク間通信要求回数とタスク起床回数の少なくとも１つを参照し、予め設定された所定の閾値と前記タスク間通信要求回数と前記タスク起床回数を比較し、過負荷状態を検出する負荷検出部と
を有する、通信装置。
【請求項２】
請求項１に記載の通信装置であって、
前記負荷検出部は、過負荷状態を検出するための前記所定の閾値を前記負荷検出部以外から設定可能である、通信装置。
【請求項３】
請求項１に記載の通信装置であって、
前記カウンタ部は、ドライバ処理タスクにおける廃棄パケット数を格納し、
前記負荷検出部は、所定の時間毎に、前記ドライバ処理タスクの廃棄パケット数を参照し、予め設定された所定の閾値と前記廃棄パケット数を比較し、過負荷状態を検出する、通信装置。
【請求項４】
請求項１に記載の通信装置であって、
前記カウンタ部はＴＣＰ／ＩＰ処理タスクにおけるＩＣＭＰ受信パケット数とＵＤＰ受信パケット数とＴＣＰ受信パケット数を格納し、
前記負荷検出部は、所定の時間毎に、前記ＴＣＰ／ＩＰ処理タスクのＩＣＭＰ受信パケット数、ＵＤＰ受信パケット数、ＴＣＰ受信パケット数の少なくとも１つを参照し、予め設定された所定の閾値と前記ＩＣＭＰ受信パケット数、前記ＵＤＰ受信パケット数、前記ＴＣＰ受信パケット数を比較し、過負荷状態を検出する、通信装置。
【請求項５】
ネットワークに接続し、通信時の自装置の負荷状態を検出する通信過負荷検出方法であって、
少なくとも通信装置内部で動作する複数のソフトウェアタスク間の通信要求を中継してタスク間通信要求回数を検出し、カウンタ部の値を更新するか、又は前記複数のソフトウェアタスクのタスク起床処理を中継して前記タスク起床を検出し、前記カウンタ部の値を更新するタスク間通信カウンタ更新処理と、
所定の時間毎に前記カウンタ部のタスク間通信要求回数とタスク起床回数の少なくとも１つを参照し、予め設定された所定の閾値と前記タスク間通信要求回数と前記タスク起床回数を比較し、過負荷状態を検出する負荷検出処理と
を有する、通信過負荷検出方法。
【請求項６】
通信装置に対して、
少なくとも前記通信装置内部で動作する複数のソフトウェアタスク間の通信要求を中継して前記タスク間通信要求回数を検出し、カウンタ部の値を更新するか、又は前記複数のソフトウェアタスクのタスク起床処理を中継して前記タスク起床を検出し、前記カウンタ部の値を更新するタスク間通信カウンタ更新処理と、
所定の時間毎に前記カウンタ部のタスク間通信要求回数とタスク起床回数の少なくとも１つを参照し、予め設定された所定の閾値と前記タスク間通信要求回数と前記タスク起床回数を比較し、過負荷状態を検出する負荷検出処理と
を実行させる、通信過負荷検出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はネットワークにおけるパケット通信処理における負荷検出方式に関する。
【背景技術】
【０００２】
従来から存在する機器に、インターネット等のネットワークに接続する機能を備え、機器に通信機能を利用した新しいサービスを提供する傾向が年々強まっている。これに伴い、従来の機器設計に通信インタフェース機能を追加する際の課題が明らかになってきた。
【０００３】
通信インタフェースの代表例として、ＩＥＥＥ（Ｉｎｓｔｉｔｕｔｅ  ｏｆ  ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ）８０２．３規格準拠のイーサネット（登録商標）が挙げられる。これはパケット送受信網であり、本質的には、どのような受信パケットが到来するかを予見したり、保障することができない。
【０００４】
例えば、ネットワークに何らかの装置が接続され、その装置からの、もしくはその装置宛てのマルチキャストやブロードキャストによって、パケットが大量に発生する状況が起こり得る。また、ポートスキャン、サービス拒否攻撃、コンピュータウィルス等、セキュリティを脅かすためのトラフィックが発生し、予測不能なパケットが大量に到来する可能性もある。
【０００５】
このような状況において、ネット家電のように、機器設計においてハードウェア制約のある通信機器では、機器の能力を超える数の受信パケットが到来すると、この機器のプロセッサは、その処理能力を受信パケット処理にほとんど費やしてしまい過負荷状態になりやすい。この結果、その機器の本来の機能の実現が阻害されてしまうことがある。
【０００６】
このような事態に対処するためには、所定の通信処理による処理負荷が過大であることを検出し、適切な対応を行うことによって、処理能力に余裕を持たせた状態で通信機器を運用することが必要である。
【０００７】
さらに、上記のネット家電機器では、運用状態として機器本来のアプリケーション機能を実行している状態と前記アプリケーション機能を実行していない状態が考えられ、その状態において過負荷を検出するための閾値が異なる。具体的には、アプリケーション機能を実行している状態では、通信処理以外に前記アプリケーション機能の実行のための処理能力が必要であるため、前記アプリケーション機能を実行していない状態よりも、より多くの処理能力の余裕を持たせた状態であることが望ましい。
【０００８】
例えば、上記のネット家電機器において、通信プロトコルの受信処理を通信デバイス制御のためのドライバ処理と上位プロトコル処理で実施する場合には、アプリケーション機能を実行している状態では、アプリケーションが実行されていることを確認するためには、ドライバ処理だけでなく、上位プロトコル処理までが動作している必要があり、この場合ではドライバ処理による処理負荷、上位プロトコル処理による処理負荷の両方を検出する必要がある。
【０００９】
一方、上記のネット家電機器において、アプリケーション機能を実行していない状態では、機器がパケット中継機能を備える場合等では、アプリケーション機能が動作している必要はなく、通信プロトコル処理の処理負荷のみを検出して過負荷制御を実施すればよく、アプリケーションが動作を開始するための最低限の処理能力の余裕を持たせておけばよい。このように、機器の運用状態に応じて適切な過負荷制御処理を実施するには、異なる通信階層の処理負荷を検出することが必要となる。
【００１０】
また、従来では、ネット家電のようなハードウェア資源の制約を受ける機器においては、図８に示す構成で通信プロトコル処理を実施している場合が多い。このような構成では、ドライバ処理タスク８１０、プロトコル処理タスク８２０、アプリケーションタスク８３０で通信プロトコル処理を構成し、機器に搭載される様々なＲＴＯＳ（Ｒｅａｌｔｉｍｅ  ＯＳ）へ通信プロトコル処理を適用するためにタスク間通信中継部８４０を設けることにより、ＲＴＯＳへの依存処理であるタスク間通信を隠蔽する構成が採用されることが一般的である。
【００１１】
このような機器においては、通信処理による処理負荷を検出するための機構が組み込まれていないという課題を有しており、搭載するプロセッサ、メモリ、周辺機器等のハードウェア制約があり、負荷検出を実現するための処理としては、少ないハードウェア資源を活用し、かつ機器として負荷の低い処理で実現できることが望ましい。
【００１２】
上記のような課題を鑑みて、通信装置において過負荷状態を検出する手段として、例えば以下のような技術が知られている。
【００１３】
特許文献１には、ゲートウェイ装置における通信処理負荷の検出方法が開示されている。この方法では１つのパケット受信部において受信したパケットの送信元アドレス毎にパケットの受信をカウントし、受信数が閾値を超えた場合に、該送信元アドレスを有する通信端末と電話機との間で中継処理を行っている場合には中継処理を終了させることにより、通信処理による処理負荷を検出し処理負荷の低減を実現している。
【００１４】
特許文献２では、コンピュータシステムにおいてＷＤＴ（Ｗａｔｃｈ  Ｄｏｇ  Ｔｉｍｅｒ）を利用する方法が開示されている。
【００１５】
この方法では、ＷＤＴのタイムアウトをイベントとしてＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）の過負荷状態や異常状態を検出し、監視装置からＯＳが動作しているハードウェアに通知してＯＳを再起動させるものである。
【００１６】
特許文献３では、ネットワークが過負荷とならないように、通信接続要求を監視する方法が開示されている。
【００１７】
この方法では、通信接続要求が所定の制限値を越えることにより、ネットワーク過負荷を検出し、それ以降の接続要求を接続予約領域に格納することでネットワーク過負荷を低減するものである。
【特許文献１】特開２００２−２４７１１４号公報
【特許文献２】特開２００２−２４４８８５号公報
【特許文献３】特開２００１−３２６６５８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１８】
しかしながら、前記特許文献１で開示されている技術では、装置における受信パケット数のみを通信処理負荷の対象として監視しており、検出可能な処理負荷はコネクションやセッションといった接続要求を単位とした論理的な通信単位を識別するものではない。例えば、通信デバイスを制御するドライバ処理や、上位プロトコル処理による処理負荷を識別して検出することができないという課題を有している。
【００１９】
また、前記特許文献１での装置における受信パケット数による負荷検出でなく、受信パケットに対してヘッダ領域やペイロード領域の解析をすることで、上位プロトコルまでを識別することにより、各プロトコル処理の処理負荷を検出することが可能であるが、このような方式では、前記ヘッダ領域や前記ペイロード部の解析処理による処理負荷が大きくなり、本発明が対象とするネット家電のようなハードウェア資源の制約を受ける機器における通信処理の負荷検出方式として適切ではないという課題を有している。
【００２０】
前記特許文献２で開示されている技術では、処理負荷の検出対象としてコンピュータシステム全体の過負荷状態と異常状態のみを対象としており、本発明で解決しようとするパケット送受信における通信処理負荷を対象とした処理負荷の検出することはできないという課題を有している。また、処理負荷検出の目的のために、前記コンピュータシステムを構成するための専用の負荷監視装置が必要になるという課題を有している。
【００２１】
前記特許文献３で開示されている技術では、装置における接続要求数のみを通信処理負荷の対象としており、検出可能な処理負荷はコネクションやセッションといった接続要求を単位とした論理的な通信単位の数を対象とした負荷検出方式であり、例えば、通信デバイスを制御するドライバ処理や、上位プロトコル処理による処理負荷を識別して検出することができないという課題を有している。
【００２２】
また、前記特許文献２、３で開示されている技術では、専用のハードウェア資源が必要であり、負荷検出のための特別な処理部を必要とし、必ずしもネット家電のようなハードウェア資源の制約を受ける機器を対象とした技術では無いという課題を有している。
【００２３】
本発明は、上記の課題を鑑みて提案されるものであり、パケット送受信制御装置に関するパケット受信処理において、負荷検出の目的のためのＷＤＴのような専用のハードウェア資源を必要とせず、パケット受信処理を対象とした処理負荷を検出可能とし、また、接続要求のみを対象とした処理負荷を検出するのではなく、ドライバ処理や上位プロトコル処理毎のパケット受信処理における処理負荷を検出可能とし、また、ネット家電のようなハードウェア資源の制約を受ける機器に対しても、最小限の処理で負荷検出機能を追加可能とする技術を提案することを目的とする。
【課題を解決するための手段】
【００２４】
前記従来の課題を解決するために、請求項１の発明では、ネットワークに接続し、通信時の自装置の負荷状態を検出する機能を有する通信装置であって、通信装置内部で動作する複数のソフトウェアタスク間のタスク間通信要求回数と、複数のソフトウェアタスクのタスク起床回数のうち、少なくとも１つを格納するカウンタ部と、少なくとも複数のソフトウェアタスク間の通信要求を中継してタスク間通信要求回数を検出し、カウンタ部の値を更新するか、又は複数のソフトウェアタスクのタスク起床処理を中継してタスク起床を検出し、カウンタ部の値を更新するタスク間通信カウンタ更新部と、所定の時間毎にカウンタ部のタスク間通信要求回数とタスク起床回数の少なくとも１つを参照し、予め設定された所定の閾値とタスク間通信回数と前記タスク起床回数を比較し、過負荷状態を検出する負荷検出部とを有する。
【００２５】
これによると、パケット送受信装置は、通信プロトコル処理を実施するタスク構成に準じて、ドライバ処理や上位プロトコル処理毎のパケット受信処理における処理負荷による過負荷状態を検出可能となる。また、パケット送受信装置は専用のＷＤＴを必要とせず、タスク間通信処理の実施過程でカウンタを更新する最小限の処理のみで過負荷状態の検出を行い、ハードウェア資源の制約を受ける機器に対して負荷検出機能の追加が容易となる。
【００２６】
請求項２の発明では、請求項１に記載の通信装置であって、負荷検出部は、過負荷状態を検出するための所定の閾値を負荷検出部以外から設定可能である。
【００２７】
これによると、パケット過負荷状態を検出する際の所定の閾値を、変更可能となるので、装置の用途毎に前記閾値を変更可能となり、装置の運用中の状態であっても前記閾値を変更可能となる。
【００２８】
請求項３の発明では、請求項１に記載の通信装置であって、カウンタ部は、ドライバ処理タスクにおける廃棄パケット数を格納し、負荷検出部は、所定の時間毎に、ドライバ処理カウンタ部の廃棄パケット数を参照し、予め設定された所定の閾値と廃棄パケット数を比較し、過負荷状態を検出する。
【００２９】
これによると、ドライバ処理タスクにおいて、複数の受信パケットを処理した後にタスク間通信をおこなう装置において、タスク間通信要求回数と受信パケット数に差異が発生する場合に、過負荷検出のための補足情報として参照することで、負荷検出精度を向上させることが可能となる。
【００３０】
請求項４の発明では、請求項１に記載の通信装置であって、カウンタ部はＴＣＰ／ＩＰ処理タスクにおけるＩＣＭＰ受信パケット数とＵＤＰ受信パケット数とＴＣＰ受信パケット数を格納し、負荷検出部は、所定の時間毎に、ＴＣＰ／ＩＰ処理カウンタ部のＩＣＭＰ受信パケット数、ＵＤＰ受信パケット数、ＴＣＰ受信パケット数の少なくとも１つを参照し、予め設定された所定の閾値とＩＣＭＰ受信パケット数、ＵＤＰ受信パケット数、ＴＣＰ受信パケット数を比較し、過負荷状態を検出する。
【００３１】
これによると、ＴＣＰ／ＩＰ処理タスクにおいて、過負荷状態となっている場合に、前記ＩＣＭＰ受信パケット数、前記ＵＤＰ受信パケット数、前記ＴＣＰ受信パケット数を参照することで、過負荷状態の要因となっているプロトコル処理を特定することが可能となる。
【発明の効果】
【００３２】
本発明によると、パケット送受信装置において、ＷＤＴのような専用のハードウェア資源を必要とすることなく、より負荷の低い処理を追加することにより、通信プロトコル処理を具備する際のタスク構成に応じて、パケット受信処理における予め設定された所定の過負荷状態を検出することができる。
【００３３】
より具体的には、通信プロトコル処理がドライバタスクとＴＣＰ／ＩＰ処理タスクで実施されている場合には、ドライバ処理での処理負荷による過負荷状態と、ＴＣＰ／ＩＰ処理での処理負荷による過負荷状態を検出することが可能となる。
【発明を実施するための最良の形態】
【００３４】
以下本発明の実施の形態について、図面を参照しながら説明する。
【００３５】
（実施の形態１）
図２は、本発明の実施の形態１に係るパケット送受信装置のブロック図である。
【００３６】
通信デバイス部２７０では、接続されたネットワークからパケットを受信すると割り込み処理部２０１に通知し、ドライバ処理タスク２１０からパケットの送信要求を受けると前記パケットをネットワークに出力する。
【００３７】
割り込み処理部２０１では、通信デバイス部２７０からの受信割り込みを検出すると、タスク間通信中継部２４０を介して、ドライバ処理タスク２１０に受信割り込みを通知するためにタスク間通信を実施する。
【００３８】
ドライバ処理タスク２１０では、割り込み処理部２０１からの受信割り込みはタスク間通信中継部２４０を介して通知される。次に、ドライバ処理タスク２１０は、ドライバ受信処理を実施し、前記ドライバ受信処理を完了すると、タスク間通信中継部２４０を介して、ＴＣＰ／ＩＰ処理タスク２２０にドライバ処理タスク２１０でのドライバ受信処理の完了を通知するために、タスク間通信要求処理をタスク間通信中継部に対して実施する。
【００３９】
ＴＣＰ／ＩＰ処理タスク２２０では、ドライバ処理タスク２１０からのドライバ受信処理の完了はタスク間通信中継部２４０を介して通知される。次に、ＴＣＰ／ＩＰ処理タスク２２０はＴＣＰ／ＩＰ受信処理を実施し、ＴＣＰ／ＩＰ受信処理が完了すると、タスク間通信中継部２４０を介して、アプリケーションタスク２３０にＴＣＰ／ＩＰ処理タスク２２０でのＴＣＰ／ＩＰ受信処理の完了を通知するために、タスク間通信要求処理をタスク間通信中継部に対して実施する。
【００４０】
アプリケーションタスク２３０では、ＴＣＰ／ＩＰ処理タスク２２０からのＴＣＰ／ＩＰ受信処理の完了はタスク間通信中継部２４０を介して通知される。
【００４１】
タスク間通信機能部２８０では、タスク間通信中継部２４０からのタスク間通信要求に対してタスク間通信を実施する。具体的には、ドライバ処理タスク２１０、ＴＣＰ／ＩＰ処理タスク２２０、アプリケーションタスク２３０に対してタスク起床処理を実施し、パケット受信処理を実施するように構成する。
【００４２】
タスク間通信中継部２４０では、割り込み処理部２０１、ドライバ処理タスク２１０、ＴＣＰ／ＩＰ処理タスク２２０、アプリケーションタスク２３０の間の受信処理におけるタスク間通信要求をタスク間通信機能部２８０へ中継する。タスク間通信中継部２４０のタスク間通信カウンタ更新部２４１は、前記タスク間通信要求を中継する際に、前記タスク間通信を呼び出した回数をカウンタ部２６０に格納する。
【００４３】
なお、タスク間通信中継部２４０はタスク間通信機能部２８０からのタスク起床処理を中継し、前記タスク起床処理を中継する際に、起床処理の対象となるタスクの起床回数をカウンタ部２６０に格納してもよい。
【００４４】
カウンタ部２６０では、割り込み処理部２０１、ドライバ処理タスク２１０、ＴＣＰ／ＩＰ処理タスク２２０、アプリケーションタスク２３０の間のタスク間通信要求の呼び出し回数を格納する。本実施の形態においては、タスク間通信中継部２４０が前記タスク間通信要求の呼び出し回数を更新する。
【００４５】
具体的には、図３に示すように、割り込み処理部２０１からドライバ処理タスク２１０へのタスク間通信要求回数であるタスク通知カウンタ３１０と、ドライバ処理タスクからＴＣＰ／ＩＰ処理タスク２２０へのタスク間通信要求回数であるタスク通知カウンタ３３０と、ＴＣＰ／ＩＰ処理タスク２２０からアプリケーションタスクへのタスク間通信要求回数である通知カウンタ３５０をカウンタ部２６０に格納する。
【００４６】
なお、タスク間通信機能部２８０によるタスク起床処理の対象となるタスクの起床回数をカウンタ部２６０に格納してもよい。
【００４７】
具体的には、図３に示すように、タスク間通信要求の結果、ドライバ処理タスク２１０、ＴＣＰ／ＩＰ処理タスク２２０、アプリケーションタスク２３０が実際に実行された回数であるタスク起床回数をドライバ処理タスク起床カウンタ３２０、ＴＣＰ／ＩＰ処理タスク起床カウンタ３４０、アプリケーションタスク起床カウンタ３６０として、カウンタ部２６０に格納する。
【００４８】
負荷検出部２５０では、所定の時間（本実施の形態ではＴとする）毎にカウンタ部２６０に格納されたタスク間通信要求回数とタスク起床回数を参照し、パケット送受信装置の受信処理における過負荷状態を検出する。
【００４９】
具体的には、図３を利用して説明する。図３は図２のカウンタ部２６０を内部のブロック図を示す図である。負荷検出部は所定の時刻Ｔ毎にカウンタ部２６０を参照し、タスク通知カウンタ３１０の値とタスク起床カウンタ３２０の値の差が予め設定された閾値Ｄ１以上の状態を割り込み処理過負荷状態、タスク通知カウンタ３３０とタスク起床カウンタ３４０の差がＤ２以上の状態をドライバ処理過負荷状態、タスク通知カウンタ３５０とタスク起床カウンタ３６０の差がＤ３以上の状態をＴＣＰ／ＩＰ処理過負荷状態と予め設定されているものとする。
【００５０】
なお、本実施の形態では上記の閾値Ｄ１、Ｄ２及びＤ３の値は予め設定されているとしたが、例えば図２において図示しない外部からの入力手段を用いてユーザなどが設定しても良い。これは、他の実施の形態でも同じである。
【００５１】
負荷検出部２５０は時刻Ｔ１において、タスク通知カウンタ３１０の値と、タスク起床カウンタ３２０の値と、タスク通知カウンタ３３０の値と、タスク起床カウンタ３４０の値と、タスク通知カウンタ３５０の値と、タスク起床カウンタ３６０の値をカウンタ部３００から取得して保持しておく。
【００５２】
例として、ドライバ処理過負荷状態を検出する場合と、ＴＣＰ／ＩＰ処理過負荷状態を検出する場合を説明する。
【００５３】
負荷検出部２５０は、図９に示すフローチャートに従い過負荷状態を判断する。まず、前回の判断処理から時間Ｔが経過したかどうかを判定する（Ｓ９００）。時間Ｔが経過すると（Ｓ９００で“Ｙｅｓ”）、カウンタ部２６０を参照し、必要なカウンタの値を読み出す（Ｓ９１０）。例えば、時刻Ｔ１（前回の判断処理から時間Ｔが経過した時刻）において、ステップＳ９１０で読み出したタスク通知カウンタ３３０の値とタスク起床カウンタ３４０の値の差がＤ２以上であった場合（Ｓ９３０で“Ｙｅｓ”）、ドライバ処理タスクからのタスク通知要求回数に対して、ＴＣＰ／ＩＰ処理タスク２２０の起床回数の差がＤ２以上なので、ドライバ処理タスクが処理した受信パケットをＴＣＰ／ＩＰ処理タスク２２０が処理できておらず、ドライバ処理による過負荷状態と判断する（Ｓ９４０）。
【００５４】
また、負荷検出部２５０は、図１０に示すフローチャートに従い過負荷状態を判断してもよい。具体的には、負荷検出部は時刻Ｔ１に図９のフローチャートでカウンタ部からタスク通知カウンタ３３０を取得しておき、時刻（Ｔ１＋Ｔ）になると（Ｓ１０００で“Ｙｅｓ”）、タスク通知カウンタ３３０を取得し（Ｓ１０１０）、時刻Ｔ１でのタスク通知カウンタ３３０と時刻Ｔ１でのタスク通知カウンタ３３０との差を予め設定された閾値と比較して差分を計算する（Ｓ１０２０）。計算した結果、差分値Ｄが予め指定された閾値よりも大きいかどうかを判断し（Ｓ１０３０）、大きければ（Ｓ１０３０で“Ｙｅｓ”）、ドライバ過負荷状態の検出を行ってもよい。
【００５５】
なお、ドライバ処理による過負荷状態を検出する際には、図６に示すように、負荷検出部６６０はドライバ処理カウンタ部６１０の受信パケットカウンタ６１２を参照して、受信パケットカウンタ６１２の値を予め設定された閾値と比較して過負荷状態を検出しても良い。
【００５６】
なお、ドライバ処理による過負荷状態を検出する際には、図６に示すように、負荷検出部６６０はドライバ処理カウンタ部６１０の廃棄パケットカウンタ６１４を参照して、廃棄パケットカウンタ６１４の値を予め設定された閾値と比較して過負荷状態を検出しても良い。
【００５７】
次に、ＴＣＰ／ＩＰ処理過負荷状態を検出する場合について説明する。
【００５８】
負荷検出部２５０は、タスク通知カウンタ３５０の値とタスク起床カウンタ３６０の値の差がＤ３以上であった場合、ＴＣＰ／ＩＰ処理タスクからのタスク通知要求回数に対して、アプリケーションタスクの起床回数の差がＤ３以上なので、ＴＣＰ／ＩＰ処理タスクが処理した受信パケットをアプリケーションタスクが処理できておらず、ＴＣＰ／ＩＰ処理による過負荷状態と判断する。
【００５９】
なお、ＴＣＰ／ＩＰ処理による過負荷状態を検出する際には、図６に示すように、負荷検出部６６０はＴＣＰ／ＩＰ処理カウンタ部６２０のＩＣＭＰ受信カウンタ６２２と、ＵＤＰ受信カウンタ６２４と、ＴＣＰ受信カウンタ６２６を参照して、受信パケットカウンタ６１２の値を予め設定された閾値と比較して過負荷状態の原因となっているプロトコルを検出しても良い。ＴＣＰ／ＩＰ処理における過負荷処理の判断（カウンタ読み出し）のタイミングは、ドライバ過負荷状態の判断タイミングと同じでも良いし、異なっていても良い。
【００６０】
以上のように、図２のパケット送受信装置は、タスク間通信中継部２４０が更新するカウンタ部２６０のカウンタ値を負荷検出部２５０が参照することで、割り込み処理部、ドライバ処理タスク、ＴＣＰ／ＩＰ処理タスクの各々の処理単位で過負荷状態を検出可能となる。
【００６１】
なお、パケット送受信装置の通信プロトコル処理として、ドライバ処理の実施する複数のタスクと、ＴＣＰ／ＩＰプロトコル処理を実施する複数のタスクで構成しても良い。この場合は、前記ドライバ処理を実施する複数のタスクと前記ＴＣＰ／ＩＰプロトコル処理を実施する複数のタスクの間のタスク間通信をタスク間通信中継部２４０で中継し、カウンタ部２６０に、タスク間通信要求回数とタスク起床回数の少なくとも１つを格納するように構成してもよい。
【００６２】
（実施の形態２）
図４は、本発明の実施の形態２に係るパケット送受信装置のブロック図である。本実施の形態では、２つの通信ポートを備え、各々異なるネットワークに接続する装置について説明する。
【００６３】
ＷＡＮ側通信デバイス部４７０では、接続されたネットワークからパケットを受信すると割り込み処理部４０１に通知し、ＷＡＮ側ドライバ処理タスク４１０からパケットの送信要求を受けると前記パケットをネットワークに出力する。
【００６４】
ＬＡＮ側通信デバイス部４９５では、接続されたネットワークからパケットを受信すると割り込み処理部４０１に通知し、ＬＡＮ側ドライバ処理タスク４９０からパケットの送信要求を受けると前記パケットをネットワークに出力する。
【００６５】
割り込み処理部４０１では、ＷＡＮ側通信デバイス部４７０からの受信割り込みを検出すると、タスク間通信中継部４４０を介して、ＷＡＮ側ドライバ処理タスク４１０に受信割り込みを通知するためにタスク間通信を実施し、ＬＡＮ側通信デバイス部４９５からの受信割り込みを検出すると、タスク間通信中継部４４０を介して、ＷＡＮ側ドライバ処理タスク４１０に受信割り込みを通知するためにタスク間通信を実施する。
【００６６】
ＷＡＮ側ドライバ処理タスク４１０では、割り込み処理部４０１からの受信割り込みはタスク間通信中継部４４０を介して通知される。次に、ＷＡＮ側ドライバ処理タスク４１０は、ドライバ受信処理を実施し、前記ドライバ受信処理を完了すると、タスク間通信中継部４４０を介して、ＴＣＰ／ＩＰ処理タスク４２０にＷＡＮ側ドライバ処理タスク４１０でのドライバ受信処理の完了を通知するために、タスク間通信要求処理をタスク間通信中継部に対して実施する。
【００６７】
ＬＡＮ側ドライバ処理タスク４９０では、割り込み処理部４０１からの受信割り込みはタスク間通信中継部４４０を介して通知される。次に、ＬＡＮ側ドライバ処理タスク４９０は、ドライバ受信処理を実施し、前記ドライバ受信処理を完了すると、タスク間通信中継部４４０を介して、ＴＣＰ／ＩＰ処理タスク４２０にＬＡＮ側ドライバ処理タスク４９０でのドライバ受信処理の完了を通知するために、タスク間通信要求処理をタスク間通信中継部に対して実施する。
【００６８】
ＴＣＰ／ＩＰ処理タスク４２０、アプリケーションタスク４３０、タスク間通信中継部４４０、タスク間通信機能部４８０では実施の形態１と同様の機能部である。
【００６９】
カウンタ部４５０では、割り込み処理部４０１、ＷＡＮ側ドライバ処理タスク４１０、ＬＡＮ側ドライバ処理タスク４９０、ＴＣＰ／ＩＰ処理タスク４２０、アプリケーションタスク４３０の間のタスク間通信要求の呼び出し回数を格納する。本実施の形態においては、タスク間通信中継部４４０が前記タスク間通信要求の呼び出し回数を更新する。
【００７０】
具体的には、図５に示すように、割り込み処理部４０１からＷＡＮ側ドライバ処理タスク４１０へのタスク間通信要求回数であるタスク通知カウンタ５０２と、割り込み処理部４０１からＬＡＮ側ドライバ処理タスク４９０へのタスク間通信要求回数であるタスク通知カウンタ５０４と、ＷＡＮ側ドライバ処理タスク４１０からＴＣＰ／ＩＰ処理タスク４２０へのタスク間通信要求回数であるタスク通知カウンタ５３０と、ＬＡＮ側ドライバ処理タスク４９０からＴＣＰ／ＩＰ処理タスク４２０へのタスク間通信要求回数であるタスク通知カウンタ５３５と、ＴＣＰ／ＩＰ処理タスク４２０からアプリケーションタスク４３０へのタスク間通信要求回数であるタスク通知カウンタ５５０をカウンタ部４５０に格納する。
【００７１】
なお、タスク間通信機能部４８０によるタスク起床処理の対象となるタスクの起床回数をカウンタ部４５０に格納してもよい。
【００７２】
具体的には、図５に示すように、タスク間通信要求の結果、ＷＡＮドライバ処理タスク４１０、ＬＡＮ側ドライバ処理タスク４９０、ＴＣＰ／ＩＰ処理タスク４２０、アプリケーションタスク４３０が実際に実行された回数であるタスク起床回数をＷＡＮ側ドライバ処理タスク起床カウンタ５０６、ＬＡＮ側ドライバ処理タスク起床カウンタ５０８、ＴＣＰ／ＩＰ処理タスク起床カウンタ５４０、アプリケーションタスク起床カウンタ５６０として、カウンタ部４５０に格納する。
【００７３】
負荷検出部４５０では、所定の時間毎にカウンタ部４５０に格納されたタスク間通信要求回数とタスク起床回数を参照し、パケット送受信装置の受信処理における過負荷状態を検出する。
【００７４】
具体的には、図５を利用して説明する。図５は図４のカウンタ部４５０を内部のブロック図を示す図である。負荷検出部は所定の時刻Ｔ毎にカウンタ部４５０を参照し、タスク通知カウンタ５０２の値とタスク起床カウンタ５０６の値の差がＤ１以上の状態をＷＡＮ側割り込み処理過負荷状態、タスク通知カウンタ５０４の値とタスク起床カウンタ５０８の値の差がＤ２以上の状態をＬＡＮ側割り込み処理過負荷状態、タスク通知カウンタ５３０とタスク通知カウンタ５３５との和と、タスク起床カウンタ５４０の差がＤ３以上の状態をドライバ処理過負荷状態、タスク通知カウンタ５５０とタスク起床カウンタ５６０の差がＤ４以上の状態をＴＣＰ／ＩＰ処理過負荷状態と予め設定されているものとする。
【００７５】
例として、装置固有のアプリケーション機能を提供している場合には、ＴＣＰ／ＩＰ処理過負荷状態を検出し、前記アプリケーション機能を提供していない場合には、ドライバ処理過負荷状態を検出する装置について説明する。
【００７６】
負荷検出部４６０は時刻Ｔ１において、タスク通知カウンタ５０２の値と、タスク起床カウンタ５０６の値と、タスク通知カウンタ５０４の値と、タスク起床カウンタ５０８の値と、タスク通知カウンタ５３０の値と、タスク通知カウンタ５３５の値と、タスク起床カウンタ５４０の値と、タスク通知カウンタ５５０の値と、タスク起床カウンタ５６０の値を、カウンタ部４５０から取得して保持しておく。
【００７７】
装置固有のアプリケーション機能を提供している場合では、負荷検出部４６０はＴＣＰ／ＩＰ処理過負荷状態を検出するように構成され、タスク通知カウンタ５５０の値とタスク起床カウンタ５６０の値の差がＤ４以上であった場合、ＴＣＰ／ＩＰ処理タスク４２０からのタスク通知要求回数に対してアプリケーションタスク４３０の起床回数の差がＤ４以上なので、ＴＣＰ／ＩＰ処理タスクが処理した受信パケットをアプリケーションタスクが処理できておらず、ＴＣＰ／ＩＰ処理過負荷状態と判断する。
【００７８】
なお、ＴＣＰ／ＩＰ処理による過負荷状態を検出する際には、図６に示すように、負荷検出部６６０はＴＣＰ／ＩＰ処理カウンタ部６２０のＩＣＭＰ受信カウンタ６２２と、ＵＤＰ受信カウンタ６２４と、ＴＣＰ受信カウンタ６２６を参照して、受信パケットカウンタ６１２の値を予め設定された閾値と比較して過負荷状態の原因となっているプロトコルを検出しても良い。
【００７９】
装置固有のアプリケーション機能を提供していない場合では、負荷検出部４６０はドライバ処理過負荷状態を検出するように構成され、タスク通知カウンタ５３０とタスク通知カウンタ５３５との和と、タスク起床カウンタ５４０の差がＤ３以上であった場合、ＷＡＮ側ドライバ処理タスク４１０とＬＡＮ側ドライバ処理タスク４９０からのタスク通知要求回数に対してＴＣＰ／ＩＰ処理タスク４２０の起床回数の差がＤ３以上なので、ＷＡＮ側ドライバ処理タスク４１０とＬＡＮ側ドライバ処理タスク４９０が処理した受信パケットをＴＣＰ／ＩＰ処理タスク４２０が処理できておらず、ドライバ処理過負荷状態と判断する。
【００８０】
なお、ドライバ処理による過負荷状態を検出する際には、図７に示すように、負荷検出部７６０はＷＡＮ側ドライバ処理カウンタ部７１０の受信パケットカウンタ７１２を参照して、受信パケットカウンタ７１２の値を予め設定された閾値と比較して過負荷状態を検出しても良い。
【００８１】
なお、ドライバ処理による過負荷状態を検出する際には、図７に示すように、負荷検出部７６０はＬＡＮ側ドライバ処理カウンタ部７２０の受信パケットカウンタ７２２を参照して、受信パケットカウンタ７２２の値を予め設定された閾値と比較して過負荷状態を検出しても良い。
【００８２】
なお、ドライバ処理による過負荷状態を検出する際には、図７に示すように、負荷検出部７６０はＷＡＮ側ドライバ処理カウンタ部７１０の廃棄パケットカウンタ７１４を参照して、廃棄パケットカウンタ７１４の値を予め設定された閾値と比較して過負荷状態を検出しても良い。
【００８３】
なお、ドライバ処理による過負荷状態を検出する際には、図７に示すように、負荷検出部７６０はＬＡＮ側ドライバ処理カウンタ部７２０の廃棄パケットカウンタ７２４を参照して、廃棄パケットカウンタ７２４の値を予め設定された閾値と比較して過負荷状態を検出しても良い。
【００８４】
以上のように、図４のパケット送受信装置は、タスク間通信中継部４４０が更新するカウンタ部４５０のカウンタ値を負荷検出部４６０が参照することで、割り込み処理部、ドライバ処理タスク、ＴＣＰ／ＩＰ処理タスクの各々の処理単位で過負荷状態を検出可能となり、パケット送受信装置の運用状態に適した過負荷状態を検出可能となる。
【００８５】
なお、パケット送受信装置の通信プロトコル処理として、ドライバ処理の実施する複数のタスクと、ＴＣＰ／ＩＰプロトコル処理を実施する複数のタスクで構成しても良い。この場合は、前記ドライバ処理を実施する複数のタスクと前記ＴＣＰ／ＩＰプロトコル処理を実施する複数のタスクの間のタスク間通信をタスク間通信中継部４４０で中継し、カウンタ部４５０に、タスク間通信要求回数とタスク起床回数の少なくとも１つを格納するように構成してもよい。
【産業上の利用可能性】
【００８６】
本発明にかかるパケット送受信装置は、ハードウェア制約のある機器において、通信プロトコル処理を具備する際のパケット受信処理における過負荷検出方法として有用である。
【図面の簡単な説明】
【００８７】
【図１】本発明のパケット送受信装置の構成を示すブロック図
【図２】本発明の実施の形態１におけるパケット送受信装置の構成を示すブロック図
【図３】本発明の実施の形態１におけるカウンタ部の構成を示すブロック図
【図４】本発明の実施の形態２におけるパケット送受信装置の構成を示すブロック図
【図５】本発明の実施の形態２におけるカウンタ部の構成を示すブロック図
【図６】本発明の実施の形態１と実施の形態２におけるブロック図
【図７】本発明の実施の形態２におけるカウンタ部の構成を示すブロック図
【図８】従来例のパケット送受信装置の構成を示すブロック図
【図９】本発明の実施の形態１、２における負荷検出部のフローチャート
【図１０】本発明の実施の形態１、２における負荷検出部のフローチャート
【符号の説明】
【００８８】
１０１，２０１，４０１，８０１    割り込み処理部
１１０，２１０，８１０    ドライバ処理タスク
１２０，８２０    プロトコル処理タスク
１３０，２３０，４３０，８３０    アプリケーションタスク
１４０，２４０，４４０，８４０    タスク間通信中継部
１４１，２４１，４４１    タスク間通信カウンタ更新部
１５０，２５０，４６０，６６０，７６０    負荷検出部
１６０，２６０，４５０    カウンタ部
１７０，２７０，８７０    通信デバイス部
１８０，２８０，４８０，８８０    タスク間通信機能部
２２０，４２０    ＴＣＰ／ＩＰ処理タスク
３１０    割り込み処理部→ドライバ処理タスク通知カウンタ
３２０    ドライバ処理タスク通知カウンタ
３３０    ドライバ処理タスク→ＴＣＰ／ＩＰ処理タスク通知カウンタ
３４０    ＴＣＰ／ＩＰ処理タスク起床カウンタ
３５０    ＴＣＰ／ＩＰ処理タスク→アプリケーションタスク通知カウンタ
３６０    アプリケーションタスク起床カウンタ
４１０    ＷＡＮ側ドライバ処理タスク
４７０    ＷＡＮ側通信デバイス部
４９０    ＬＡＮ側ドライバ処理タスク
４９５    ＬＡＮ側通信デバイス部
５０２    割り込み処理部→ＷＡＮ側ドライバ処理タスク通知カウンタ
５０４    割り込み処理部→ＬＡＮ側ドライバ処理タスク通知カウンタ
５０６    ＷＡＮ側ドライバ処理タスク起床カウンタ
５０８    ＬＡＮ側ドライバ処理タスク起床カウンタ
５３０    ＷＡＮ側ドライバ処理タスク→ＴＣＰ／ＩＰ処理タスク通知カウンタ
５３５    ＬＡＮ側ドライバ処理タスク→ＴＣＰ／ＩＰ処理タスク通知カウンタ
５４０    ＴＣＰ／ＩＰ処理タスク起床カウンタ
５５０    ＴＣＰ／ＩＰ処理タスク→アプリケーションタスク通知カウンタ
５６０    アプリケーションタスク起床カウンタ
６１０    ドライバ処理カウンタ部
６１２    受信パケットカウンタ
６２２    廃棄パケットカウンタ
６２０    ＴＣＰ／ＩＰ処理カウンタ部
６２２    ＩＣＭＰ受信カウンタ
６２４    ＵＤＰ受信カウンタ
６２６    ＴＣＰ受信カウンタ
７１０    ＷＡＮ側ドライバ処理カウンタ部
７１２    受信パケットカウンタ
７１４    廃棄パケットカウンタ
７２０    ＬＡＮ側ドライバ処理カウンタ部
７２２    受信パケットカウンタ
７２４    廃棄パケットカウンタ
【図１】
2006333292.tif 000003
【図２】
2006333292.tif 000004
【図３】
2006333292.tif 000005
【図４】
2006333292.tif 000006
【図５】
2006333292.tif 000007
【図６】
2006333292.tif 000008
【図７】
2006333292.tif 000009
【図８】
2006333292.tif 000010
【図９】
2006333292.tif 000011
【図１０】
2006333292.tif 000012