(57)【要約】【課題】制約時間内にデータを処理できる可能性が高く、信頼性の高い通信ができると共に柔軟な優先度設定が可能な優先度処理方法及びこれを用いた通信装置を実現する。【解決手段】パケット通信におけるデータの優先度処理方法であって、受信パケットを受信し、受信パケットに含まれるパラメータに基づいて優先度を検索し、優先度が現在行っているパケット処理タスクの優先度よりも高い場合にはパケット処理タスクを中断し、受信パケットの処理を開始し、受信パケットの処理が終了した後に中断していたパケット処理タスクを再開する。【選択図】  図１
2008061049.tif 000002
【特許請求の範囲】
【請求項１】
パケット通信におけるデータの優先度処理方法であって、
受信パケットを受信し、
この受信パケットに含まれるパラメータに基づいて優先度を検索し、
この優先度が現在行っているパケット処理タスクの優先度よりも高い場合には前記パケット処理タスクを中断し、
前記受信パケットの処理を開始し、
前記受信パケットの処理が終了した後に中断していた前記パケット処理タスクを再開する
ことを特徴とする優先度処理方法。
【請求項２】
パケット通信におけるデータの優先度処理方法であって、
出力データを作成し、
この出力データに含まれるパラメータに基づいて優先度を検索し、
この優先度が現在行っているパケット処理タスクの優先度よりも高い場合には前記パケット処理タスクを中断し、
前記出力データから送信パケットを作成する処理を開始し、
前記送信パケットの作成処理が終了した後に中断していた前記パケット処理タスクを再開する
ことを特徴とする優先度処理方法。
【請求項３】
パケット通信を行う通信装置において、
受信パケットの受信を行う通信部と、
複数のキューを有すると共に優先度とこの優先度を決定するのに必要な条件の対応を示すテーブルが格納されたデータベースを有する記憶部と、
受信時には前記受信パケットに含まれるパラメータに基づいて前記データベースから前記優先度を検索すると共にこの優先度に対応した前記キューに前記受信パケットを格納し現在行っているパケット処理タスクの優先度よりも前記受信パケットの優先度が高い場合には前記パケット処理タスクを中断し前記受信パケットの処理を開始し前記受信パケットの処理が終了した後に中断していた前記パケット処理タスクを再開する演算制御部と
を備えたことを特徴とする通信装置。
【請求項４】
パケット通信を行う通信装置において、
送信パケットの送信を行う通信部と、
複数のキューを有すると共に優先度とこの優先度を決定するのに必要な条件の対応を示すテーブルが格納されたデータベースを有する記憶部と、
送信時にはアプリケーションが作成した出力データに含まれるパラメータに基づいて前記データベースから前記優先度を検索すると共にこの優先度に対応した前記キューに前記出力データを格納し現在行っているパケット処理タスクの優先度よりも前記出力データの優先度が高い場合には前記パケット処理タスクを中断し前記出力データから前記送信パケットを作成する処理を開始し前記送信パケットの作成処理が終了した後に中断していた前記パケット処理タスクを再開する演算制御部と
を備えたことを特徴とする通信装置。
【請求項５】
前記演算制御部が、
前記受信パケットに含まれる前記パラメータに基づいて前記データベースの前記テーブルを書き換える機能を有することを特徴とする
請求項３記載の通信装置。
【請求項６】
前記演算制御部が、
外部端末の指示に基づいて前記データベースの前記テーブルを書き換える機能を有することを特徴とする
請求項３記載の通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、優先度処理方法及びこれを用いた通信装置に関し、特に制約時間内にデータを処理できる可能性が高く、信頼性の高い通信ができると共に柔軟な優先度設定が可能な優先度処理方法及びこれを用いた通信装置に関する。
【背景技術】
【０００２】
従来の優先度処理方法に関連する先行技術文献としては次のようなものがある。
【０００３】
【特許文献１】特開平０６−２３２９０４号公報
【特許文献２】特開２０００−３３２７８７号公報
【特許文献３】特開２００６−１３５４０２号公報
【０００４】
図８はこのような従来の通信装置の一例を示す構成ブロック図である。図８において１はパケットの送受信を行う通信部、２はＣＰＵ（Central Processing Unit）等の演算制御部、３はＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory)、フラッシュメモリ（電気的に書き換え可能なＲＯＭ）、若しくは、ハードディスク等の記憶部である。また、１００はインターネット、若しくは、イントラネット等のネットワークである。
【０００５】
演算制御部２は通信部１及び記憶部３にそれぞれ相互に接続される。通信部１はネットワーク１００に相互に接続される。通信部１、演算制御部２及び記憶部３は通信装置５０を構成している。
【０００６】
ここで、図８に示す従来例の動作を図９、図１０、図１１及び図１２を用いて説明する。図９はパケット処理の流れを説明する説明図、図１０はパケット処理タスクの動きを説明する説明図、図１１はデータ受信時の動作を示すフロー図、図１２はデータ送信時の動作を示すフロー図である。
【０００７】
図９において４は通信部１を動作させるためのネットワークインターフェース、５は受信パケットを一時的に格納しておくキュー、６はパケットを処理するパケット処理タスク、７は出力データを一時的に格納しておくキュー、８は特定の目的を行うために使用されるアプリケーションである。キュー５、パケット処理タスク６及びキュー７はプロトコルスタック６０を構成している。
【０００８】
また、図１０において、パケット処理タスクは”パケット１”を受信すると、プロトコルスタック６０を動作させて”パケット１”の処理を開始する。そして、”パケット１”の処理終了後に”パケット２”を受信し、”パケット２”の処理を行う。
【０００９】
図１１中”Ｓ００１”において演算制御部２上で動作しているネットワークインターフェース４は、通信部１を制御して受信パケットを受信する。図１１中”Ｓ００２”において演算制御部２上で動作しているネットワークインターフェース４は、受信パケットを記憶部３上にあるキュー５へ格納する。
【００１０】
図１１中”Ｓ００３”において演算制御部２上で動作しているパケット処理タスク６は、受信パケットを記憶部３上にあるキュー５から取り出す。図１１中”Ｓ００４”において演算制御部２上で動作しているパケット処理タスク６は、受信パケットの処理を行う。
【００１１】
図１１中”Ｓ００５”において演算制御部２上で動作しているパケット処理タスク６は、処理したデータをアプリケーション８に渡すか否かを判断し、もし、アプリケーション８に処理したデータを渡す必要がある場合には、図１１中”Ｓ００６”において通信装置５０の演算制御部２上で動作しているパケット処理タスク６は、データをアプリケーション８に渡す。
【００１２】
一方、図１１中”Ｓ００５”において演算制御部２上で動作しているパケット処理タスク６は、アプリケーション８に処理したデータを渡すか否かを判断し、もし、アプリケーション８に処理したデータを渡す必要のない場合には、図１１中”Ｓ００７”に進む。
【００１３】
なお、図１１中”Ｓ００５”において、例えば、演算制御部２は、アプリケーション８に対応しているポート番号に送られてきたパケットを受信した場合には、このパケットをアプリケーション８に渡す必要があると判断する。
【００１４】
そして、図１１中”Ｓ００７”において演算制御部２上で動作しているパケット処理タスク６は、キュー５が空になったか否かを判断し、もし、キュー５が空になった場合には、処理を終了する。
【００１５】
一方、図１１中”Ｓ００７”において演算制御部２上で動作しているパケット処理タスク６は、キュー５が空になったか否かを判断し、もし、キュー５が空になっていない場合には、図１１中”Ｓ００３”に戻り、キュー５から受信パケットを取り出して処理を続行する。
【００１６】
次にデータ送信時の動作を説明する。図１２中”Ｓ１０１”において演算制御部２上で動作しているアプリケーション８は、出力データを作成し、図１２中”Ｓ１０２”において演算制御部２上で動作しているアプリケーション８は、出力データを記憶部３上にあるキュー７へ格納する。
【００１７】
図１２中”Ｓ１０３”において演算制御部２上で動作しているパケット処理タスク６は、記憶部３上にあるキュー７から出力データを取り出し、図１２中”Ｓ１０４”において演算制御部２上で動作しているパケット処理タスク６は、取り出した出力データから送信パケットを作成する。
【００１８】
そして、図１２中”Ｓ１０５”において演算制御部２上で動作しているネットワークインターフェース４は、通信部１を制御して送信パケットを送信する。
【００１９】
この結果、パケット受信時には、受信パケットをキュー５へ格納し、キュー５から受信パケットを取り出して処理を行い、アプリケーション８に処理したデータを渡し、キュー５が空になるまで処理を行う。また、パケット送信時には、出力データを作成してキュー７へ格納し、キュー７から取り出した出力データから送信パケットを作成すると共に送信する。以上より、パケットの送受信ができるので、パケットによる通信が可能になる。
【発明の開示】
【発明が解決しようとする課題】
【００２０】
しかし、図８及び図９に示す従来例では、プロトコルスタック６０を動作させているパケット処理タスクが１つのため、より高い優先度のデータを送信、若しくは、受信する必要がある場合でも、現在行っている処理を終了するまで次のデータをプロトコルスタックで処理することができないという問題があった。
【００２１】
また、パケット受信時に優先度の高いデータと優先度の低いデータが同じキュー５に格納されるため、優先度の低いデータでキュー５が溢れてしまうと、優先度の高いデータが受信できない場合があるという問題があった。
従って本発明が解決しようとする課題は、制約時間内にデータを処理できる可能性が高く、信頼性の高い通信ができると共に柔軟な優先度設定が可能な優先度処理方法及びこれを用いた通信装置を実現することにある。
【課題を解決するための手段】
【００２２】
このような課題を達成するために、本発明のうち請求項１記載の発明は、
パケット通信におけるデータの優先度処理方法であって、
受信パケットを受信し、この受信パケットに含まれるパラメータに基づいて優先度を検索し、この優先度が現在行っているパケット処理タスクの優先度よりも高い場合には前記パケット処理タスクを中断し、前記受信パケットの処理を開始し、前記受信パケットの処理が終了した後に中断していた前記パケット処理タスクを再開することにより、制約時間内にデータを処理できる可能性が高く、信頼性の高い通信ができると共に柔軟な優先度設定が可能になる。
【００２３】
請求項２記載の発明は、
パケット通信におけるデータの優先度処理方法であって、
出力データを作成し、この出力データに含まれるパラメータに基づいて優先度を検索し、この優先度が現在行っているパケット処理タスクの優先度よりも高い場合には前記パケット処理タスクを中断し、前記出力データから送信パケットを作成する処理を開始し、前記送信パケットの作成処理が終了した後に中断していた前記パケット処理タスクを再開することにより、制約時間内にデータを処理できる可能性が高く、信頼性の高い通信ができると共に柔軟な優先度設定が可能になる。
【００２４】
請求項３記載の発明は、
パケット通信を行う通信装置において、
受信パケットの受信を行う通信部と、複数のキューを有すると共に優先度とこの優先度を決定するのに必要な条件の対応を示すテーブルが格納されたデータベースを有する記憶部と、受信時には前記受信パケットに含まれるパラメータに基づいて前記データベースから前記優先度を検索すると共にこの優先度に対応した前記キューに前記受信パケットを格納し現在行っているパケット処理タスクの優先度よりも前記受信パケットの優先度が高い場合には前記パケット処理タスクを中断し前記受信パケットの処理を開始し前記受信パケットの処理が終了した後に中断していた前記パケット処理タスクを再開する演算制御部とを備えたことにより、制約時間内にデータを処理できる可能性が高く、信頼性の高い通信ができると共に柔軟な優先度設定が可能になる。
【００２５】
請求項４記載の発明は、
パケット通信を行う通信装置において、
送信パケットの送信を行う通信部と、複数のキューを有すると共に優先度とこの優先度を決定するのに必要な条件の対応を示すテーブルが格納されたデータベースを有する記憶部と、送信時にはアプリケーションが作成した出力データに含まれるパラメータに基づいて前記データベースから前記優先度を検索すると共にこの優先度に対応した前記キューに前記出力データを格納し現在行っているパケット処理タスクの優先度よりも前記出力データの優先度が高い場合には前記パケット処理タスクを中断し前記出力データから前記送信パケットを作成する処理を開始し前記送信パケットの作成処理が終了した後に中断していた前記パケット処理タスクを再開する演算制御部とを備えたことにより、制約時間内にデータを処理できる可能性が高く、信頼性の高い通信ができると共に柔軟な優先度設定が可能になる。
【００２６】
請求項５記載の発明は、
請求項３記載の通信装置において、
前記受信パケットに含まれる前記パラメータに基づいて前記データベースの前記テーブルを書き換える機能を有することにより、柔軟な優先度設定が可能になる。
【００２７】
請求項６記載の発明は、
前記演算制御部が、
外部端末の指示に基づいて前記データベースの前記テーブルを書き換える機能を有することにより、柔軟な優先度設定が可能になる。
【発明の効果】
【００２８】
本発明によれば次のような効果がある。
請求項１及び請求項３の発明によれば、受信パケットを受信し、受信パケットに含まれるパラメータに基づいて優先度を検索し、優先度が現在行っているパケット処理タスクの優先度よりも高い場合にはパケット処理タスクを中断し、受信パケットの処理を開始し、受信パケットの処理が終了した後に中断していたパケット処理タスクを再開することにより、優先度の高い受信パケットが優先的に処理されるので、制約時間内にデータを処理できる可能性が高く、信頼性の高い通信ができると共に柔軟な優先度設定が可能になる。
【００２９】
請求項２及び請求項４の発明によれば、
出力データを作成し、出力データに含まれるパラメータに基づいて優先度を検索し、優先度が現在行っているパケット処理タスクの優先度よりも高い場合には前記パケット処理タスクを中断し、前記出力データから送信パケットを作成する処理を開始し、前記送信パケットの作成処理が終了した後に中断していた前記パケット処理タスクを再開することにより、優先度の高い出力データが優先的に処理されるので、制約時間内にデータを処理できる可能性が高く、信頼性の高い通信ができると共に柔軟な優先度設定が可能になる。
【００３０】
請求項５の発明によれば、
受信パケットを受信し、受信パケットに含まれるパラメータに埋め込まれたコマンドを抽出し、このコマンドに従ってデータベースのテーブルを書き換えることにより、容易にテーブルを書き換えることができるので、柔軟な優先度設定が可能になる。
【００３１】
請求項６の発明によれば、
通信装置に外部端末をつなげ、この外部端末からの指示に従ってデータベースのテーブルを書き換えることにより、容易にテーブルを書き換えることができるので、柔軟な優先度設定が可能になる。
【発明を実施するための最良の形態】
【００３２】
以下本発明を図面を用いて詳細に説明する。図１は本発明に係る通信装置の一実施例を示す構成ブロック図である。
【００３３】
図１において１００は図８と同一符号を付してあり、９はパケットの送受信を行う通信部、１０はＣＰＵ等の演算制御部、１１及び１２はＲＯＭ、ＲＡＭ、フラッシュメモリ、若しくは、ハードディスク等の記憶部である。
【００３４】
演算制御部１０は通信部９、記憶部１１及び記憶部１２にそれぞれ相互に接続される。通信部９はネットワーク１００に相互に接続される。通信部９、演算制御部１０、記憶部１１及び記憶部１２は通信装置５１を構成している。
【００３５】
ここで、図１に示す従来例の動作を図２、図３、図４及び図５を用いて説明する。図２はパケット処理の流れを説明する説明図、図３はパケット処理タスクの動きを説明する説明図、図４はデータ受信時の動作を示すフロー図、図５はデータ送信時の動作を示すフロー図である。
【００３６】
図２において１３は通信部９を動作させるためのネットワークインターフェース、１４，１７及び２０は受信パケットを一時的に格納しておくキュー、１５，１８及び２１はパケットを処理するパケット処理タスク、１６，１９及び２２は出力データを一時的に格納しておくキュー、２３は特定の目的を行うために使用されるアプリケーション、２４はネットワークインターフェース１３及びアプリケーション２３から入力されたパラメータによって優先度を決定する優先度制御部、２５はタスクの切り替え、中断、再開等を制御するタスク制御部、２６は優先度とその優先度を決定するのに必要な条件の対応を示すテーブルが格納されたデータベースである。
【００３７】
キュー１４、パケット処理タスク１５、キュー１６、キュー１７、パケット処理タスク１８、キュー１９、キュー２０、パケット処理タスク２１及びキュー２２はプロトコルスタック６１を構成している。
【００３８】
ネットワークインターフェース１３、パケット処理タスク１５、パケット処理タスク１８、パケット処理タスク２１、アプリケーション２３、優先度制御部２４及びタスク制御部２５はそれぞれ演算制御部１０上で動作するプログラムである。また、キュー１４、キュー１６、キュー１７、キュー１９、キュー２０及びキュー２２は記憶部１１上に展開され、データベース２６は記憶部１２に格納されている。
【００３９】
また、優先度と各キュー及び各パケット処理タスクの関係は、例えば、キュー１４、パケット処理タスク１５及びキュー１６は優先度が”高”、キュー１７、パケット処理タスク１８及びキュー１９は優先度が”中”、キュー２０、パケット処理タスク２１及びキュー２２は優先度が”低”というように分けられる。
【００４０】
図３において、通常優先度パケット処理タスクは優先度が”中”、若しくは、”低”のパケットを処理するタスク、高優先度パケット処理タスクは優先度が”高”のパケットを処理するタスクである。
【００４１】
通常優先度パケット処理タスクが優先度”低”のパケットを受信すると、優先度”低”のパケットの処理を開始する。この優先度”低”のパケットの処理中に高優先度パケット処理タスクが優先度”高”のパケットを受信すると、通常優先度パケット処理タスクは優先度”低”のパケットの処理を中断する。
【００４２】
そして、高優先度パケット処理タスクは優先度”高”のパケットの処理を開始し、この処理が終了すると、通常優先度パケット処理タスクは優先度”低”のパケットの処理を再開する。
【００４３】
図４中”Ｓ２０１”において演算制御部１０上で動作しているネットワークインターフェース１３は、通信部９を経由して受信パケットを受信する。図４中”Ｓ２０２”において演算制御部１０上で動作しているネットワークインターフェース１３は、受信パケットに含まれるパラメータ、例えば、ソースアドレス、ポート番号、ペイロードの種類等を優先度制御部２４へ渡す。優先度制御部２４はこのパラメータに基づいてデータベース２６から該当する優先度を検索する。
【００４４】
優先度を決定するパラメータとしては、例えば、TCP（Transmission Control Protocol）/UDP（User Datagram Protocol）ではヘッダに含まれるCode BitフィールドのUrgent Flagやポート番号を用い、IP（Internet Protocol）ではToS（Type of Service）フィールドの値（IPv4）、Traffic Classフィールドの値（IPv6）、Source Address、Destination Addressを用いる。また、アプリケーション２３の固有値を用いてもよい。
【００４５】
また、ペイロードの種類としては、例えば、制御パケット、アラームパケット、ログパケット等があり、アラームパケットは優先度が”高”、制御パケットは優先度が”中”、ログパケットは優先度が”低”として優先度を決めてもよい。
【００４６】
図４中”Ｓ２０３”において演算制御部１０上で動作している優先度制御部２４は、図４中”Ｓ２０２”において検索した優先度をネットワークインターフェース１３及びタスク制御部２５へ伝える。ネットワークインターフェース１３はこの優先度に基づいて受信パケットを該当するキューへ格納する。
【００４７】
具体的には、受信パケットの優先度が”高”であった場合にはキュー１４へ格納し、受信パケットの優先度が”中”であった場合にはキュー１７へ格納し、受信パケットの優先度が”低”であった場合にはキュー２０へ格納する。
【００４８】
図４中”Ｓ２０４”において演算制御部１０上で動作しているタスク制御部２５は、受信パケットの優先度が現在、プロトコルスタック６１を動作させているパケット処理タスクの優先度よりも高いか否かを判断し、もし、受信パケットの優先度が高い場合には、図４中”Ｓ２０５”において演算制御部１０上で動作しているタスク制御部２５は、現在、プロトコルスタック６１を動作させているパケット処理タスクを中断させ、受信パケットの処理を開始させる。
【００４９】
図４中”Ｓ２０６”において演算制御部１０上で動作しているパケット処理タスクは、キューから受信パケットを取り出して処理を行い、図４中”Ｓ２０７”において演算制御部１０上で動作しているパケット処理タスクは、受信パケットに含まれるデータを待つアプリケーション２３が存在する場合には、そのデータをアプリケーション２３に渡す。
【００５０】
図４中”Ｓ２０８”において演算制御部１０上で動作しているパケット処理タスクは、優先度の高い受信パケット用のキューが空になったか否かを判断し、もし、キューが空になった場合には、図４中”Ｓ２０９”において演算制御部１０上で動作しているタスク制御部２５は、中断させていた優先度の低いパケット処理を再開させる。
【００５１】
一方、図４中”Ｓ２０８”において演算制御部１０上で動作しているパケット処理タスクは、優先度の高い受信パケット用のキューが空になったか否かを判断し、もし、キューが空になっていない場合には、図４中”Ｓ２０６”に戻る。
【００５２】
また、図４中”Ｓ２０４”において演算制御部１０上で動作しているタスク制御部２５は、受信パケットの優先度が現在、プロトコルスタック６１を動作させているパケット処理タスクの優先度よりも高いか否かを判断し、もし、受信パケットの優先度が同じ、若しくは、優先度が低い場合には、図４中”Ｓ２１２”において演算制御部１０上で動作しているタスク制御部２５は、現在、プロトコルスタック６１を動作させているパケット処理タスクを続行させる。
【００５３】
図４中”Ｓ２１０”において演算制御部１０上で動作しているパケット処理タスクは、優先度の低い受信パケットに含まれるデータを待つアプリケーション２３が存在する場合には、そのデータをアプリケーション２３に渡す。
【００５４】
図４中”Ｓ２１１”において演算制御部１０上で動作しているパケット処理タスクは、優先度の低い受信パケット用のキューが空になったか否かを判断し、もし、キューが空になった場合には、処理を終了する。
【００５５】
図４中”Ｓ２１１”において演算制御部１０上で動作しているパケット処理タスクは、優先度の低い受信パケット用のキューが空になったか否かを判断し、もし、キューが空になっていない場合には、図４中”Ｓ２０９”に戻る。
【００５６】
より具体的に図４中”Ｓ２０４”から図４中”Ｓ２１１”の動作を例を挙げて説明する。例えば、受信パケットの優先度が”高”であった場合に、現在、プロトコルスタック６１を動作させているのが優先度”中”のパケット処理タスク１８である時には、タスク制御部２５はこのパケット処理タスク１８の処理を中断させる。
【００５７】
そして、パケット処理タスク１５はキュー１４から受信パケットを取り出して処理を行い、必要に応じて、受信パケットに含まれるデータをアプリケーション２３に渡す。この動作をキュー１４が空になるまで続ける。
【００５８】
タスク制御部２５はパケット処理タスク１５の処理が終了したことを確認し、パケット処理タスク１８の処理を再開させる。そして、必要に応じて、受信パケットに含まれるデータをアプリケーション２３に渡し、キュー１７が空になるまで処理を続ける。
【００５９】
この結果、ネットワークインターフェース１３が受信パケットを受信し、優先度制御部２４が受信パケットに含まれるパラメータに基づいて優先度を検索し、この受信パケットの優先度が、現在、プロトコルスタック６１を動作させているパケット処理タスクの優先度よりも高い場合には、タスク制御部２５が低い優先度のパケット処理タスクを中断させ、高い優先度のパケット処理タスクを開始させ、この高い優先度のパケット処理タスクが終了した後に、低い優先度のパケット処理タスクを再開させることにより、優先度の高い受信パケットが優先的に処理されるので、制約時間内にデータを処理できる可能性が高く、信頼性の高い通信ができると共に柔軟な優先度設定が可能になる。
【００６０】
さらに、低い優先度のパケットを格納するキュー２０に空きが無くなった場合でも、高い優先度のパケットを受信できるようになる。
【００６１】
次にデータ送信時の動作を説明する。図５中”Ｓ３０１”において演算制御部１０上で動作しているアプリケーション２３は、出力データを作成する。図５中”Ｓ３０２”において演算制御部１０上で動作しているアプリケーション２３は、出力データに含まれるパラメータを優先度制御部２４へ渡す。優先度制御部２４は、このパラメータに基づいてデータベース２６から該当する優先度を検索する。
【００６２】
そして、優先度制御部２４は、検索した優先度をアプリケーション２３及びタスク制御部２５へ伝える。
【００６３】
また、優先度を決定するパラメータとしては、データ受信時と同様に、例えば、TCP/UDPではヘッダに含まれるCode BitフィールドのUrgent Flagやポート番号を用い、IPではToSフィールドの値（IPv4）、Traffic Classフィールドの値（IPv6）、Source Address、Destination Addressを用いる。また、アプリケーション２３の固有値を用いてもよい。
【００６４】
図５中”Ｓ３０３”において演算制御部１０上で動作しているアプリケーション２３は、優先度制御部２４が検索した優先度に基づいて出力データを該当するキューに格納する。
【００６５】
図５中”Ｓ３０４”において演算制御部１０上で動作しているタスク制御部２５は、出力データの優先度が、現在、プロトコルスタック６１を動作させているパケット処理タスクの優先度よりも高いか否かを判断し、もし、出力データの優先度が高い場合には、図５中”Ｓ３０５”において演算制御部１０上で動作しているタスク制御部２５は、現在、プロトコルスタック６１を動作させているパケット処理タスクを中断させる。
【００６６】
図５中”Ｓ３０６”において演算制御部１０上で動作しているパケット処理タスクは、キューから出力データを取り出して送信パケットを作成し、作成した送信パケットをネットワークインターフェース１３に渡す。図５中”Ｓ３０７”において演算制御部１０上で動作しているネットワークインターフェース１３は、通信部９を制御して送信パケットを送信する。
【００６７】
図５中”Ｓ３０８”において演算制御部１０上で動作しているパケット処理タスクは、優先度の高い出力データ用のキューが空になったか否かを判断し、もし、キューが空になった場合には、図４中”Ｓ３０９”において演算制御部１０上で動作しているタスク制御部２５は、中断させていた優先度の低い出力データの送信パケット作成処理を再開させる。
【００６８】
一方、図５中”Ｓ３０８”において演算制御部１０上で動作しているパケット処理タスクは、優先度の高い出力データ用のキューが空になったか否かを判断し、もし、キューが空になっていない場合には、図５中”Ｓ３０６”に戻る。
【００６９】
一方、図５中”Ｓ３０４”において演算制御部１０上で動作しているタスク制御部２５は、出力データの優先度が、現在、プロトコルスタック６１を動作させているパケット処理タスクの優先度よりも高いか否かを判断し、もし、出力データの優先度が同じ、若しくは、優先度が低い場合には、図５中”Ｓ３１３”において演算制御部１０上で動作しているタスク制御部２５は、現在、プロトコルスタック６１を動作させているパケット処理タスクを続行させる。
【００７０】
図５中”Ｓ３１０”において演算制御部１０上で動作しているパケット処理タスクは、優先度の低い出力データから送信パケットを作成し、作成した送信パケットをネットワークインターフェース１３に渡す。図５中”Ｓ３１１”において演算制御部１０上で動作しているネットワークインターフェース１３は、通信部９を制御して送信パケットを送信する。
【００７１】
図５中”Ｓ３１２”において演算制御部１０上で動作しているパケット処理タスクは、優先度の低い出力データ用のキューが空になったか否かを判断し、もし、キューが空になった場合には、処理を終了する。
【００７２】
図５中”Ｓ３１２”において演算制御部１０上で動作しているパケット処理タスクは、優先度の低い出力データ用のキューが空になったか否かを判断し、もし、キューが空になっていない場合には、図５中”Ｓ３１０”に戻る。
【００７３】
この結果、アプリケーション２３が出力データを作成し、優先度制御部２４がこの出力データに含まれるパラメータに基づいて優先度を検索し、この出力データの優先度が、現在、プロトコルスタック６１を動作させているパケット処理タスクの優先度よりも高い場合には、タスク制御部２５が低い優先度のパケット処理タスクを中断させ、この出力データから送信パケットを作成する処理を開始させ、このパケット処理タスクが終了した後に、低い優先度のパケット処理タスクを再開させることにより、優先度の高い出力データが優先的に処理されるので、制約時間内にデータを処理できる可能性が高く、信頼性の高い通信ができると共に柔軟な優先度設定が可能になる。
【００７４】
図６は本発明をコントローラに適用した場合のパケット処理の流れを説明する説明図である。コントローラの構成は、図１に示す通信装置５１と同様に、通信部９、演算制御部１０、記憶部１１及び記憶部１２から構成される。
【００７５】
通常、機器の制御等に使用されるコントローラは、高速の演算、若しくは、大量のデータ処理を要求されることがほとんど無いため、サーバやパソコン等に実装されている演算制御部（ＣＰＵ）と比較して処理性能の劣る演算制御部が実装されている。
【００７６】
しかし、近年ではセキュリティの面で受信パケット、若しくは、送信パケットを暗号化したり、送受信のデータサイズを小さくするためにデータの圧縮、若しくは、展開をすることがある。このような暗号化、圧縮、若しくは、展開の処理は通常のパケット処理に比べて大きな時間がかかっていた。
【００７７】
図６において１３，２４，２５及び２６は図２と同一符号を付してあり、２７はアラームパケットを一時的に格納しておくアラーム用キュー、２８はアラームパケットを処理するアラームパケット処理タスク、２９はアラームデータを一時的に格納しておくアラーム用キュー、３０は制御パケットを一時的に格納しておく制御用キュー、３１は制御パケットを処理する制御パケット処理タスク、３２は制御データを一時的に格納しておく制御用キュー、３３は非制御パケットを一時的に格納しておく非制御用キュー、３４は非制御パケットを処理する非制御パケット処理タスク、３５は非制御データを一時的に格納しておく非制御用キュー、３６はコントローラを制御するために使用される制御アプリケーションである。
【００７８】
アラーム用キュー２７、アラーム用パケット処理タスク２８、アラーム用キュー２９、制御用キュー３０、制御パケット処理タスク３１、制御用キュー３２、非制御用キュー３３、非制御パケット処理タスク３４及び非制御用キュー３５はプロトコルスタック６２を構成している。
【００７９】
ネットワークインターフェース１３、優先度制御部２４、タスク制御部２５、アラームパケット処理タスク２８、制御パケット処理タスク３１、非制御パケット処理タスク３４及び制御アプリケーション３６はそれぞれ演算制御部１０上で動作するプログラムである。また、アラーム用キュー２７、アラーム用キュー２９、制御用キュー３０、制御用キュー３２、非制御用キュー３３及び非制御用キュー３５は記憶部１１上に展開される。
【００８０】
また、優先度と各キュー及び各パケット処理タスクの関係は、アラーム用キュー２７、アラームパケット処理タスク２８及びアラーム用キュー２９は優先度が”高”、制御用キュー３０、制御パケット処理タスク３１及び制御用キュー３２は優先度が”中”、非制御用キュー３３、非制御パケット処理タスク３４及び非制御用キュー３５は優先度が”低”というように分けられる。
【００８１】
ここで、図６に示す実施例の動作を説明する。図６に示す実施例の動作は図２の実施例とほぼ同一である。例えば、非制御パケット処理タスク３４が前述の暗号化処理をしている時に、優先度の高いアラームパケットを受信したとする。
【００８２】
この時、優先度制御部２４は受信したアラームパケットに含まれるパラメータに基づいてデータベース２６から該当する優先度を検索する。優先度制御部２４は、検索した優先度をネットワークインターフェース１３及びタスク制御部２５へ伝える。ネットワークインターフェース１３はこの優先度に基づいてアラームパケットをアラーム用キュー２７へ格納する。
【００８３】
タスク制御部２５は、受信したアラームパケットの優先度が現在、プロトコルスタック６２を動作させている非制御パケット処理タスク３４の優先度よりも高いので、非制御パケット処理タスク３４を中断させ、受信したアラームパケットの処理を開始させる。
【００８４】
そして、アラームパケット処理タスク２８は処理を行い、必要があれば、制御アプリケーション３６に処理したデータを渡す。この処理をアラーム用キュー２７が空になるまで続ける。タスク制御部２５は、アラームパケットの処理が終了したことを確認した後、中断させていた非制御パケットの処理を再開させる。
【００８５】
この結果、ネットワークインターフェース１３がアラームパケットを受信し、優先度制御部２４がアラームパケットに含まれるパラメータに基づいて優先度を検索し、タスク制御部２５が低い優先度の非制御パケット処理タスク３４を中断させ、高い優先度のアラームパケット処理タスク２８を開始させ、このアラームパケット処理タスク２８が終了した後に、低い優先度の非制御パケット処理タスク３４を再開させることにより、優先度の高いアラームパケットが優先的に処理されるので、制約時間内にデータを処理できる可能性が高く、信頼性の高い通信ができると共に柔軟な優先度設定が可能になる。
【００８６】
さらに、非制御用キュー３３に空きが無くなった場合でも、アラームパケットや制御パケットを受信できるようになる。
【００８７】
同様に、非制御パケット処理タスク３４が前述の暗号化処理をしている時に、優先度の高いアラームパケットを送信する場合を説明する。制御アプリケーション３６がアラームデータを作成し、アラームデータに含まれるパラメータを優先度制御部２４へ渡す。優先度制御部２４は、このパラメータに基づいてデータベース２６から該当する優先度を検索する。
【００８８】
そして、優先度制御部２４は、検索した優先度を制御アプリケーション３６及びタスク制御部２５へ伝える。制御アプリケーション３６はこの優先度に基づいてアラームデータをアラーム用キュー２９に格納する。タスク制御部２５は、アラームデータの優先度が、現在、プロトコルスタック６２を動作させている非制御パケット処理タスク３４の優先度よりも高いので、非制御パケット処理タスク３４を中断させる。
【００８９】
アラームパケット処理タスク２８は、アラーム用キュー２９からアラームデータを取り出してアラームパケットを作成し、作成したアラームパケットをネットワークインターフェース１３に渡す。ネットワークインターフェース１３は、通信部９を制御してアラームパケットを送信する。
【００９０】
タスク制御部２５は、優先度の高いアラームパケット作成処理が終了したことを確認した後、中断させていた優先度の低い非制御パケット作成処理を再開させる。
【００９１】
この結果、制御アプリケーション３６がアラームデータを作成し、優先度制御部２４がこのアラームデータに含まれるパラメータに基づいて優先度を検索し、タスク制御部２５が低い優先度の非制御パケット処理タスク３４を中断させ、アラームパケット処理タスク２８がアラームデータからアラームパケットを作成する処理を開始させ、処理が終了した後に、タスク制御部２５が低い優先度の非制御パケット処理タスク３４を再開させることにより、優先度の高いアラームデータが優先的に処理されるので、制約時間内にデータを処理できる可能性が高く、信頼性の高い通信ができると共に柔軟な優先度設定が可能になる。
【００９２】
図７は本発明の他の実施例のパケット処理の流れを説明する説明図である。ハードウェアの構成は、図１に示す通信装置５１と同様に、通信部９、演算制御部１０、記憶部１１及び記憶部１２から構成される。
【００９３】
図７において１３，１４，１５，１６，１７，１８，１９，２０，２１，２２，２３，２４，２５，２６及び６１は図２と同一符号を付してあり、３７はデータベース２６を制御するデータベース制御部である。
【００９４】
ここで、図７に示す実施例の動作を説明する。図７に示す実施例の動作は図２の実施例とほぼ同一であり、異なる点はデータベース制御部３７により、データベース２６に格納されているテーブル、すなわち、優先度を決定する条件を書き換えられるようになっていることである。
【００９５】
具体的には、受信パケットを受信したネットワークインターフェース１３が受信パケットに含まれるパラメータを優先度制御部２４へ渡し、このパラメータにデータベース２６のテーブルを書き換えるコマンドが埋め込まれている場合には、優先度制御部２４がデータベース制御部３７にそのコマンドを渡す。データベース制御部３７はそのコマンドに従ってデータベース２６のテーブルを書き換える。
【００９６】
この結果、ネットワークインターフェース１３が受信パケットを受信し、この受信パケットに含まれるパラメータを優先度制御部２４へ渡し、優先度制御部２４がデータベース制御部３７にそのパラメータに埋め込まれたコマンドを渡し、データベース制御部３７がそのコマンドに従ってデータベース２６のテーブルを書き換えることにより、ネットワーク経由で容易にテーブルを書き換えることができるので、柔軟な優先度設定が可能になる。
【００９７】
なお、図１に示す実施例において記憶部が２つ示されているが、必ずしもこれに限定される必要は無く、キューとデータベースを１つの記憶部で構成してもよいし、キューとデータベースをそれぞれ複数の記憶部で構成してもよい。
【００９８】
また、図２、図６及び図７に示す実施例においてキュー及びパケット処理タスクがそれぞれ３つ示されているが、必ずしも３つに限定される必要は無く、キュー及びパケット処理タスクがそれぞれ複数あればよい。
【００９９】
また、図２に示す実施例において優先度を”高”、”中”、”低”の３段階としているが、必ずしもこれに限定される必要は無く、優先度の段階は少なくとも２段階あればよい。
【０１００】
また、図７に示す実施例においてデータベース２６の書き換えをネットワーク１００を経由して受信パケットにより行っているが、必ずしもこれに限定される必要は無く、通信装置５１に外部端末を直接つなげて（図示せず）、この端末からの指示によりデータベース２６を書き換えるようにしてもよい。
【図面の簡単な説明】
【０１０１】
【図１】本発明に係る通信装置の一実施例を示す構成ブロック図である。
【図２】パケット処理の流れを説明する説明図である。
【図３】パケット処理タスクの動きを説明する説明図である。
【図４】データ受信時の動作を示すフロー図である。
【図５】データ送信時の動作を示すフロー図である。
【図６】本発明をコントローラに適用した場合のパケット処理の流れを説明する説明図である。
【図７】本発明の他の実施例のパケット処理の流れを説明する説明図である。
【図８】従来の通信装置の一例を示す構成ブロック図である。
【図９】パケット処理の流れを説明する説明図である。
【図１０】パケット処理タスクの動きを説明する説明図である。
【図１１】データ受信時の動作を示すフロー図である。
【図１２】データ送信時の動作を示すフロー図である。
【符号の説明】
【０１０２】
１，９  通信部
２，１０  演算制御部
３，１１，１２  記憶部
４，１３  ネットワークインターフェース
５，７，１４，１６，１７，１９，２０，２２  キュー
６，１５，１８，２１  パケット処理タスク
８，２３  アプリケーション
２４  優先度制御部
２５  タスク制御部
２６  データベース
２７，２９  アラーム用キュー
２８  アラームパケット処理タスク
３０，３２  制御用キュー
３１  制御パケット処理タスク
３３，３５  非制御用キュー
３４  非制御パケット処理タスク
３６  制御アプリケーション
３７  データベース制御部
５０，５１  通信装置
６０，６１，６２  プロトコルスタック
１００  ネットワーク
【図１】
2008061049.tif 000003
【図２】
2008061049.tif 000004
【図３】
2008061049.tif 000005
【図４】
2008061049.tif 000006
【図５】
2008061049.tif 000007
【図６】
2008061049.tif 000008
【図７】
2008061049.tif 000009
【図８】
2008061049.tif 000010
【図９】
2008061049.tif 000011
【図１０】
2008061049.tif 000012
【図１１】
2008061049.tif 000013
【図１２】
2008061049.tif 000014