(57)【要約】【課題】  パケットを受信する装置の過負荷状態を改善し、その装置のパケット受信以外の機能を保つことができるようにする。【解決手段】  パケット受信制御装置として、プロセッサの負荷を検出して出力する負荷検出部と、前記負荷検出部における検出結果に基づいて、受信されたパケットを前記プロセッサが受信すべきか否かを判断し、その結果を出力する受信制御部とを備え、前記受信制御部における判断の結果に従って、前記受信されたパケットを前記プロセッサが受信するように構成される。【選択図】      図２
2006121667.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサの負荷を検出して出力する負荷検出部と、
前記負荷検出部における検出結果に基づいて、受信されたパケットを前記プロセッサが受信すべきか否かを判断し、その結果を出力する受信制御部とを備え、
前記受信制御部における判断の結果に従って、前記受信されたパケットを前記プロセッサが受信するように構成された
パケット受信制御装置。
【請求項２】
請求項１に記載のパケット受信制御装置において、
パケットを受信し、受信されたパケットを、指示に従って前記プロセッサに出力する受信パケット転送部を更に備え、
前記負荷検出部は、
前記負荷の程度に応じた値を処理負荷量として検出するものであり、
前記受信制御部は、
前記処理負荷量に応じて設定された１つ以上のフィルタルールを格納し、かつ、前記受信パケット転送部に対して、前記フィルタルールのいずれかに適合する受信パケットを破棄し、前記フィルタルールのいずれにも適合しない受信パケットを出力するように指示をするものである
ことを特徴とするパケット受信制御装置。
【請求項３】
請求項２に記載のパケット受信制御装置において、
前記受信制御部は、
前記処理負荷量が多いほど、より多くの受信パケットが適合するように設定された規則を、前記フィルタルールとして格納するものである
ことを特徴とするパケット受信制御装置。
【請求項４】
請求項２に記載のパケット受信制御装置において、
前記受信制御部は、
受信パケットを複数の種類に分類して、種類毎に、単位時間当たりのパケットの受信頻度を測定する統計取得部を備え、かつ、前記複数の種類のうち、単位時間当たりの受信頻度が最も多い種類から順に選択された種類の受信パケットが適合するように設定された規則を、前記フィルタルールとして格納するものである
ことを特徴とするパケット受信制御装置。
【請求項５】
請求項２に記載のパケット受信制御装置において、
前記受信制御部は、
特定の種類の受信パケットが適合しないように設定された規則を、前記フィルタルールとして格納するものである
ことを特徴とするパケット受信制御装置。
【請求項６】
請求項２に記載のパケット受信制御装置において、
前記受信制御部は、
前記処理負荷量が所定の閾値を超えた場合には、ブロードキャストパケット及びマルチキャストパケットが適合するように設定された規則を、前記フィルタルールとして格納するものである
ことを特徴とするパケット受信制御装置。
【請求項７】
請求項２に記載のパケット受信制御装置において、
前記受信制御部は、
前記処理負荷量が所定の閾値を超えた場合には、全てのパケットが適合するように設定された規則を、前記フィルタルールとして格納するものである
ことを特徴とするパケット受信制御装置。
【請求項８】
請求項２に記載のパケット受信制御装置において、
前記受信制御部は、
前記処理負荷量が減少した場合には、その後所定の期間は前記フィルタルールを変更せず、前記所定の期間経過後に、前記処理負荷量に応じて設定された規則を、前記フィルタルールとして格納するものである
ことを特徴とするパケット受信制御装置。
【請求項９】
請求項２に記載のパケット受信制御装置において、
前記受信制御部による受信パケットの破棄の単位時間当たりの発生頻度を測定する破棄数計測部を更に備え、
前記受信制御部は、
前記処理負荷量が減少した場合には、前記発生頻度が所定の閾値以上であるときには前記フィルタルールを変更せず、前記発生頻度が前記所定の閾値未満になると、前記処理負荷量に応じて設定された情報を、前記フィルタルール情報として格納するものである
ことを特徴とするパケット受信制御装置。
【請求項１０】
請求項１に記載のパケット受信制御装置において、
前記負荷検出部は、
前記負荷の程度に応じた値を処理負荷量として検出するものであり、
前記受信制御部は、
パケットが受信されたことに関連して生成されたイベント信号を受け取った場合であって、前記処理負荷量が所定の値を超えないときには、受信されたパケットを前記プロセッサが受信するように、前記イベント信号を受け取ったことを前記プロセッサに対して通知する通知信号を出力し、前記処理負荷量が前記所定の値を超えるときには、前記通知信号の出力を停止するものである
ことを特徴とするパケット受信制御装置。
【請求項１１】
請求項１０に記載のパケット受信制御装置において、
前記通知信号は、前記プロセッサに対する割込み信号である
ことを特徴とするパケット受信制御装置。
【請求項１２】
請求項１０に記載のパケット受信制御装置において、
前記受信制御部は、
前記通知信号の出力を停止してからの経過時間を計測し、計測された経過時間が所定の値を超えると、前記通知信号の出力の停止を解除するものである
ことを特徴とするパケット受信制御装置。
【請求項１３】
請求項１０に記載のパケット受信制御装置において、
前記受信制御部は、
前記イベント信号の単位時間当たりの発生頻度を測定し、前記通知信号の出力を停止後、前記発生頻度が所定の値よりも小さくなると、前記通知信号の出力の停止を解除するものである
ことを特徴とするパケット受信制御装置。
【請求項１４】
請求項１に記載のパケット受信制御装置において、
前記負荷検出部は、
前記負荷の程度に応じた値を処理負荷量として検出するものであり、かつ、
前記負荷検出部は、
起動されてからの時間を計測するタイマカウンタと、
前記プロセッサからアクセスされると、前記タイマカウンタのカウント値を読み出して出力し、前記タイマカウンタを再起動する監視部と、
所定の予定値と、読み出された前記カウント値とに基づいて、前記処理負荷量を求めて出力する負荷算出部とを有するものである
ことを特徴とするパケット受信制御装置。
【請求項１５】
請求項１４に記載のパケット受信制御装置において、
前記監視部は、
前記プロセッサにおいてマルチタスクＯＳ（operating system）上で周期的に起動されるタスクによって、アクセスされるものである
ことを特徴とするパケット受信制御装置。
【請求項１６】
請求項１に記載のパケット受信制御装置において、
前記負荷検出部は、
前記負荷の程度に応じた値を処理負荷量として検出するものであり、かつ、
前記負荷検出部は、
クリア信号が入力されてからの時間を計測し、計測された時間が所定の時間に達すると、タイムアウト信号を出力するタイマカウンタと、
前記プロセッサからアクセスされると、前記タイマカウンタに前記クリア信号を出力する監視部と、
前記タイムアウト信号に基づいて、前記処理負荷量を求めて出力する負荷算出部とを有するものである
ことを特徴とするパケット受信制御装置。
【請求項１７】
請求項１６に記載のパケット受信制御装置において、
前記負荷算出部は、
前記タイムアウト信号の単位時間当たりの発生頻度に応じた値を前記処理負荷量として求めるものである
ことを特徴とするパケット受信制御装置。
【請求項１８】
請求項１６に記載のパケット受信制御装置において、
前記負荷算出部は、
前記タイムアウト信号の連続して出力された回数に応じた値を前記処理負荷量として求めるものである
ことを特徴とするパケット受信制御装置。
【請求項１９】
請求項１８に記載のパケット受信制御装置において、
前記タイマカウンタは、
タイムアウトした場合にはより大きな値が、クリアされた場合にはより小さな値が、前記所定の時間として設定されるものである
ことを特徴とするパケット受信制御装置。
【請求項２０】
請求項１６に記載のパケット受信制御装置において、
前記監視部は、
前記プロセッサにおいてマルチタスクＯＳ上で周期的に起動されるタスクによって、アクセスされるものである
ことを特徴とするパケット受信制御装置。
【請求項２１】
請求項１に記載のパケット受信制御装置において、
パケットを受信し、受信されたパケットを、指示に従って前記プロセッサに出力する受信パケット転送部を更に備え、
前記負荷検出部は、
前記プロセッサが過負荷状態であるか否かを検出し、その結果を出力するものであり、
前記受信制御部は、
設定された１つ以上のフィルタルールを格納し、かつ、前記受信パケット転送部に対して、前記フィルタルールのいずれかに適合する受信パケットを破棄し、前記フィルタルールのいずれにも適合しない受信パケットを出力するように指示をし、前記プロセッサが過負荷状態である場合には、通常時よりも多くのパケットが適合する過負荷時用のフィルタルールを前記フィルタルールとして格納するものである
ことを特徴とするパケット受信制御装置。
【請求項２２】
請求項２１に記載のパケット受信制御装置において、
過負荷対策部を更に備え、
前記受信パケット転送部は、
パケットを出力することを前記プロセッサに対して通知するものであり、
前記過負荷対策部は、
前記プロセッサに対する通知の単位時間当たりの発生頻度を求め、前記負荷検出部によって前記プロセッサが過負荷状態であることが検出された場合において、前記通知の発生頻度が所定の値以上であるときには、前記受信制御部に対して過負荷状態であることの通知を行うものであり、
前記受信制御部は、
前記過負荷状態であることの通知を受けた場合には、前記過負荷時用のフィルタルールを前記フィルタルールとして格納するものである
ことを特徴とするパケット受信制御装置。
【請求項２３】
請求項２２に記載のパケット受信制御装置において、
前記過負荷対策部は、
前記プロセッサが過負荷状態から過負荷ではない状態になった場合には、所定の条件が成立した後に、前記プロセッサが過負荷状態ではないことの通知を前記受信制御部に行うものであり、
前記受信制御部は、
前記過負荷状態ではないことの通知を受けた場合には、通常時用のフィルタルールを前記フィルタルールとして格納するものである
ことを特徴とするパケット受信制御装置。
【請求項２４】
請求項２３に記載のパケット受信制御装置において、
前記所定の条件は、
前記プロセッサが過負荷状態ではなくなってから、所定の時間が経過することである
ことを特徴とするパケット受信制御装置。
【請求項２５】
請求項２３に記載のパケット受信制御装置において、
前記受信制御部による受信パケットの破棄の単位時間当たりの発生頻度を測定する破棄数計測部を更に備え、
前記所定の条件は、前記発生頻度が所定の値よりも小さくなることである
ことを特徴とするパケット受信制御装置。
【請求項２６】
請求項２１に記載のパケット受信制御装置において、
前記過負荷時用のフィルタルールは、全てのパケットが適合するように設定されている
ことを特徴とするパケット受信制御装置。
【請求項２７】
請求項２１に記載のパケット受信制御装置において、
前記受信制御部は、
受信パケットを複数の種類に分類して、種類毎に、単位時間当たりのパケットの受信頻度を測定する統計取得部を更に備えるものであり、
前記過負荷時用のフィルタルールは、前記複数の種類のうち、単位時間当たりの受信頻度が最も多い種類から順に選択された種類の受信パケットが適合するように設定されている
ことを特徴とするパケット受信制御装置。
【請求項２８】
請求項２１に記載のパケット受信制御装置において、
前記過負荷時用のフィルタルールは、特定の種類の受信パケットが適合しないように設定されている
ことを特徴とするパケット受信制御装置。
【請求項２９】
請求項１に記載のパケット受信制御装置において、
前記負荷検出部は、
前記プロセッサが過負荷状態であるか否かを検出し、その結果を出力するものであり、
前記受信制御部は、
パケットが受信されたことに関連して生成されたイベント信号の単位時間当たりの発生頻度を求め、前記イベント信号を受け取ったことを前記プロセッサに対して通知する通知信号を出力することができるものであり、前記プロセッサが過負荷状態であり、かつ、前記イベント信号の発生頻度が所定の値を超える場合には、前記通知信号の出力を停止するものである
ことを特徴とするパケット受信制御装置。
【請求項３０】
請求項２９に記載のパケット受信制御装置において、
前記通知信号は、前記プロセッサに対する割込み信号である
ことを特徴とするパケット受信制御装置。
【請求項３１】
請求項２９に記載のパケット受信制御装置において、
前記受信制御部は、
前記通知信号の出力を停止してからの経過時間を計測し、計測された経過時間が所定の値を超えると、前記通知信号の出力の停止を解除するものである
ことを特徴とするパケット受信制御装置。
【請求項３２】
請求項２９に記載のパケット受信制御装置において、
前記受信制御部は、
前記イベント信号の単位時間当たりの発生頻度を測定し、前記通知信号の出力を停止後、前記発生頻度が所定の値よりも小さくなると、前記通知信号の出力の停止を解除するものである
ことを特徴とするパケット受信制御装置。
【請求項３３】
請求項２９に記載のパケット受信制御装置において、
所定時間内に前記プロセッサからアクセスされない場合に、前記プロセッサに対して初期化要求信号を出力するウォッチドッグタイマを更に備え、
前記受信制御部は、
ウォッチドッグタイマが前記初期化要求信号を出力するまでの残り時間が所定の時間よりも短い場合には、前記通知信号の出力を停止するものである
ことを特徴とするパケット受信制御装置。
【請求項３４】
請求項１に記載のパケット受信制御装置において、
前記負荷検出部は、
クリア信号が入力されてからの時間を計測し、計測された時間が所定の時間に達したことを示すタイムアウト信号を、前記検出結果として出力するタイマカウンタと、
前記プロセッサからアクセスされると、前記タイマカウンタにクリア信号を出力する監視部とを有するものである
ことを特徴とするパケット受信制御装置。
【請求項３５】
請求項３４に記載のパケット受信制御装置において、
前記タイマカウンタは、
前記所定の時間を変更することができるように構成されているものである
ことを特徴とするパケット受信制御装置。
【請求項３６】
請求項３４に記載のパケット受信制御装置において、
前記監視部は、
前記プロセッサにおいてマルチタスクＯＳ上で周期的に起動されるタスクによって、アクセスされるものである
ことを特徴とするパケット受信制御装置。
【請求項３７】
請求項３６に記載のパケット受信制御装置において、
前記周期的に起動されるタスクのスケジュール優先度は、パケット通信プロトコルの処理タスク及びリアルタイム通信アプリケーションの処理タスクよりも低く設定されている
ことを特徴とするパケット受信制御装置。
【請求項３８】
請求項３７に記載のパケット受信制御装置において、
前記周期的に起動されるタスクのスケジュール優先度は、リアルタイム制御アプリケーションの処理タスクよりも低く設定されている
ことを特徴とするパケット受信制御装置。
【請求項３９】
請求項３７に記載のパケット受信制御装置において、
前記周期的に起動されるタスクのスケジュール優先度は、リアルタイム性を必要としないアプリケーションの処理タスクよりも高く設定されている
ことを特徴とするパケット受信制御装置。
【請求項４０】
請求項１に記載のパケット受信制御装置において、
パケットを受信し、受信パケットを、指示に従ってメモリに格納させて前記プロセッサに出力できるようにする受信パケット転送部と、
前記メモリに格納されたことがある受信パケットの情報を走査し、これらの受信パケットの種類毎の受信頻度を示す頻度情報を求めるパケット解析部と
を更に備え、
前記負荷検出部は、
前記プロセッサが過負荷状態であるか否かを検出し、その結果を出力するものであり、
前記受信制御部は、
フィルタルールを格納する破棄フィルタテーブル格納部と、
前記負荷検出部から、前記プロセッサが過負荷状態であることを示す検出結果を受け取ると、所定の種類のパケットを破棄すべきであることを示すフィルタルールを含む第１のフィルタルールセットを破棄フィルタテーブル格納部に格納させるフィルタルール設定部と、
前記フィルタルールのいずれかに適合する受信パケットを破棄し、かつ、前記フィルタルールのいずれにも適合しない受信パケットを、前記メモリを介して前記プロセッサに出力するように、受信パケット転送部に対して指示する破棄／通過決定部とを備えるものであり、
前記フィルタルール設定部は、
前記メモリに格納されたことがある受信パケットについて求められた前記頻度情報に基づいて、破棄すべきパケットの種類を決定し、前記決定された破棄すべきパケットの種類を示すフィルタルールを含む第２のフィルタルールセットを前記第１のフィルタルールセットに代えて破棄フィルタテーブル格納部に格納させるものである
ことを特徴とするパケット受信制御装置。
【請求項４１】
請求項４０に記載のパケット受信制御装置において、
前記フィルタルール設定部は、
前記頻度情報に基づいて、受信頻度が所定の値を超えるパケットの種類を、破棄すべきパケットの種類として決定するものである
ことを特徴とするパケット受信制御装置。
【請求項４２】
請求項４０に記載のパケット受信制御装置において、
前記フィルタルール設定部は、
所定のパケットの種類を、破棄すべきパケットの種類として決定しないものである
ことを特徴とするパケット受信制御装置。
【請求項４３】
請求項４０に記載のパケット受信制御装置において、
前記受信制御部は、
前記プロセッサが実行している通信アプリケーションが使用するパケットの種類を示す情報を保持するセション管理部を更に備え、
前記フィルタルール設定部は、
前記セション管理部が保持する情報が示すパケットの種類を、破棄すべきパケットの種類として決定しないものである
ことを特徴とするパケット受信制御装置。
【請求項４４】
請求項４３に記載のパケット受信制御装置において、
前記セション管理部は、
前記通信アプリケーションが通信を終了すると、前記通信アプリケーションが使用していたパケットの種類を示す情報を出力するものであり、
前記フィルタルール設定部は、
前記通信アプリケーションが使用していたパケットの種類を、破棄すべきパケットの種類として決定するものである
ことを特徴とするパケット受信制御装置。
【請求項４５】
請求項４０に記載のパケット受信制御装置において、
前記フィルタルール設定部は、
前記プロセッサが過負荷状態であることを示す検出結果を所定の時間内に再び受け取ると、より多くの種類のパケットを破棄するように、前記第２のフィルタルールセットを変更するものである
ことを特徴とするパケット受信制御装置。
【請求項４６】
請求項４０に記載のパケット受信制御装置において、
前記フィルタルール設定部は、
前記プロセッサが過負荷状態であることを示す検出結果を所定の時間内に再び受け取ると、前回用いた前記頻度情報に基づいて破棄すべきパケットの種類を決定するものである
ことを特徴とするパケット受信制御装置。
【請求項４７】
請求項４０に記載のパケット受信制御装置において、
前記受信制御部は、
閾値を格納する学習結果格納部を更に備え、
前記フィルタルール設定部は、
前記頻度情報に基づいて破棄すべきパケットの種類を決定する際に、前記学習結果格納部に格納された閾値を用いて前記第２のフィルタルールセットを求めるものであり、
前記学習結果格納部は、
前記プロセッサが過負荷状態であることを示す検出結果を受け取る間隔に応じて、格納する閾値を変更するものである
ことを特徴とするパケット受信制御装置。
【請求項４８】
請求項４０に記載のパケット受信制御装置において、
前記フィルタルール設定部は、
前記頻度情報に基づいて、受信パケットの種類のうち、受信頻度が大きいものから順に所定の数の種類を選択し、前記破棄すべきパケットの種類として決定するものである
ことを特徴とするパケット受信制御装置。
【請求項４９】
請求項４０に記載のパケット受信制御装置において、
前記受信制御部は、
前記メモリ内に格納可能な受信パケットの数を保持するキュー管理部を更に備え、
前記フィルタルール設定部は、
前記プロセッサが過負荷状態であることを示す検出結果を受け取ると、前記キュー管理部に保持された前記メモリに格納可能な受信パケットの数を増加させるものである
ことを特徴とするパケット受信制御装置。
【請求項５０】
請求項４０に記載のパケット受信制御装置において、
前記受信パケット転送部は、
受信パケットの少なくともヘッダ情報を前記メモリに格納させるものであり、
前記パケット解析部は、
前記メモリに格納されたヘッダ情報を走査して、前記頻度情報を求めるものである
ことを特徴とするパケット受信制御装置。
【請求項５１】
請求項４０に記載のパケット受信制御装置において、
前記フィルタルール設定部は、
全てのパケットが廃棄されるように、前記第１のフィルタルールセットを設定するものである
ことを特徴とするパケット受信制御装置。
【請求項５２】
請求項１に記載のパケット受信制御装置において、
前記パケットは、イーサネットのＭＡＣ（media access control）フレームである
ことを特徴とするパケット受信制御装置。
【請求項５３】
請求項１に記載のパケット受信制御装置と、
前記パケット受信制御装置における判断の結果に従って、パケットを受信するプロセッサとを備える
半導体集積回路。
【請求項５４】
受信パケットをメモリに格納させてからプロセッサに出力するパケット受信制御方法であって、
前記プロセッサが過負荷状態であるか否かを検出する負荷検出ステップと、
前記プロセッサが過負荷状態であることを示す検出結果を受け取ると、所定の種類のパケットを破棄すべきであることを示すフィルタルールを含む第１のフィルタルールセットを格納するステップと、
前記フィルタルールのいずれかに適合する受信パケットを破棄し、前記フィルタルールのいずれにも適合しない受信パケットを、前記メモリを介して前記プロセッサに出力するステップと、
前記第１のフィルタルールセットに従って前記メモリに格納されたことがある受信パケットについての情報を走査し、これらの受信パケットの種類毎の受信頻度を示す頻度情報を求めるステップと、
前記頻度情報に基づいて破棄すべきパケットの種類を決定するステップと、
前記決定された破棄すべきパケットの種類を示すフィルタルールを含む第２のフィルタルールセットを前記第１のフィルタルールセットに代えて格納するステップと
を備えるパケット受信制御方法。
【請求項５５】
請求項５４に記載のパケット受信制御方法において、
前記破棄すべきパケットの種類を決定するステップは、
前記頻度情報に基づいて、受信頻度が所定の値を超えるパケットの種類を、破棄すべきパケットの種類として決定するものである
ことを特徴とするパケット受信制御方法。
【請求項５６】
請求項５４に記載のパケット受信制御方法において、
前記破棄すべきパケットの種類を決定するステップは、
決定するために用いられる閾値を、前記プロセッサが過負荷状態であることを示す検出結果が得られる間隔に応じて変更するものである
ことを特徴とするパケット受信制御方法。
【請求項５７】
請求項５４に記載のパケット受信制御方法において、
前記プロセッサが過負荷状態であることを示す検出結果が得られると、前記メモリに格納可能な受信パケットの数を増加させるステップを更に備え、
前記頻度情報を求めるステップは、
前記メモリに格納された受信パケットを走査して、前記頻度情報を求めるものである
ことを特徴とするパケット受信制御方法。
【請求項５８】
請求項５４に記載のパケット受信制御方法において、
前記頻度情報を求めるステップは、
前記メモリに格納されたことがある受信パケットのヘッダ情報を走査して、前記頻度情報を求めるものである
ことを特徴とするパケット受信制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークからのパケットの受信を制御する技術に関する。
【背景技術】
【０００２】
従来から存在する機器に、インターネット等のネットワークに接続する機能を追加する傾向が年々強まっている。これに伴って、従来の機器設計にネットワークインタフェース機能を追加する際の課題が明らかになってきた。
【０００３】
ネットワークの代表例として、ＩＥＥＥ（institute of electrical and electronics engineers）８０２．３規格準拠のイーサネット（登録商標）が挙げられる。これはパケット送受信網であり、本質的には、どのような受信パケットが到来するかを予見したり、保障することができない。
【０００４】
例えば、ネットワークに何らかの装置が接続され、その装置からの、もしくはその装置宛てのマルチキャストやブロードキャストによって、パケットが大量に発生する状況が起こり得る。また、ポートスキャン、サービス拒否攻撃、コンピュータウィルス等、セキュリティを脅かすためのトラフィックが発生し、予測不能なパケットが大量に到来する可能性もある。
【０００５】
このような状況において、その機器の能力を超える数の受信パケットが到来すると、この機器のプロセッサは、その処理能力を受信パケット処理にほとんど費やしてしまう過負荷状態になりやすい。この結果、その機器の本来の機能の実現が阻害されてしまうことがある。
【０００６】
一例として、機器がＡＶ（audio-visual）機能等のリアルタイム性が要求される通信処理を行う場合には、一般に、通信処理の優先度は他の処理に比べて高く設定される。このため、受信パケットが大量に到来すると、機器のプロセッサは通信処理にその能力の過半を費やしてしまうので、例えばボタンの押下を検出する程度の処理にさえ、遅延をきたす恐れがある。
【０００７】
このような事態に対処するための技術として、例えば以下のような技術が知られている。特許文献１には、システム負荷を検出する機能を設けたファクシミリ装置が開示されている。このファクシミリ装置では、システムの負荷があらかじめ定められたしきい値を超えない場合には、最高速度でデータ転送処理を行い、通信制御や記録制御を同時に実行していること等によりシステム負荷が重い場合には、データ転送速度を低下させる。このように、システム負荷を分散させることにより、効率的なデータ転送を実現している。
【０００８】
また、別の例として、特許文献２には、ネットワーク組込み用システムが開示されている。図２３は、従来のネットワーク組込み用システムのブロック図であり、特許文献２に記載されているものである。ここでネットワークインタフェースチップ（ＮＩＣ）ドライバ９２には、プロトコルスタック９３を介して複数のアプリケーション９４が接続されている。
【０００９】
プロトコルスタック９３は、ＮＩＣドライバ９２を使用して通信をする端点ノードとの間の通信機能を提供する部分である。アプリケーション９４は、それぞれ、プロトコルスタック９３を使用して、より高度な通信機能を提供するコンピュータプログラムにより構成される。メモリ９６は、ＮＩＣ９１とプリンタ制御部９５の両方からアクセスされるメモリであり、動作レデュースフラグ保持部９７を備える。
【００１０】
ここで、図２３のシステムは、緊急の処理が開始されたことを認識すると、動作レデュースフラグ保持部９７のフラグをオンに設定する。動作レデュースフラグがオンの間には、ＮＩＣドライバ９２は、ＮＩＣ９１に対して、通常動作時に受信するパケットのうち、特定の種類のパケット受信を停止するようにフィルタ動作を実行させる。これによって、緊急動作中に不必要な受信パケットをＣＰＵ（central processing unit）が処理しなくてもよくなる。
【特許文献１】特開平９−１１６７３１号公報
【特許文献２】特開平１１−３２８０６８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、特許文献１で開示されている技術は、特定のコマンド発生元との間で、コマンドの発生を止める、或いはその通達を遅らせることが可能であることを前提としている。一方、イーサネットのようなパケット通信網を利用する場合、パケットを受け取るシステムの負荷を増大させているパケットの発生元に対して、発生を停止させたり、通信速度を低減させたりすることは、必ずしも可能ではない。また、そもそもそのようなパケット発生元は、システムを利用する目的を持っていない場合もある。
【００１２】
また、特許文献２で開示されている技術では、あらかじめ固定された緊急処理の期間において受信パケットの負荷を軽減するものであり、それ以外の期間にはそのような対処ができない。実際のマルチタスクＯＳ下で動作するシステムは、緊急処理に相当するプログラムでさえ、間欠的に動作することが要求されており、そのため、そのような緊急処理期間を固定することは困難である。
【００１３】
本発明は、過大な数の受信パケットの到来による、パケットを受信する装置の過負荷状態を改善し、その装置のパケット受信以外の機能を保つことができるようにすることを目的とする。
【課題を解決するための手段】
【００１４】
前記課題を解決するため、請求項１の発明が講じた手段は、パケット受信制御装置として、プロセッサの負荷を検出して出力する負荷検出部と、前記負荷検出部における検出結果に基づいて、受信されたパケットを前記プロセッサが受信すべきか否かを判断し、その結果を出力する受信制御部とを備え、前記受信制御部における判断の結果に従って、前記受信されたパケットを前記プロセッサが受信するように構成されたものである。
【００１５】
これによると、パケットを受信すべきか否かを判断した結果に従って、プロセッサがパケットを受信するので、パケットの受信に起因するプロセッサの過負荷状態を改善することができる。したがって、プロセッサが、パケット受信以外の処理を確実に行うことができる。
【００１６】
請求項２の発明は、請求項１に記載のパケット受信制御装置において、パケットを受信し、受信されたパケットを、指示に従って前記プロセッサに出力する受信パケット転送部を更に備え、前記負荷検出部は、前記負荷の程度に応じた値を処理負荷量として検出するものであり、前記受信制御部は、前記処理負荷量に応じて設定された１つ以上のフィルタルールを格納し、かつ、前記受信パケット転送部に対して、前記フィルタルールのいずれかに適合する受信パケットを破棄し、前記フィルタルールのいずれにも適合しない受信パケットを出力するように指示をするものである。
【００１７】
これによると、負荷検出部が検出した処理負荷量に応じてフィルタルールが設定されるので、受信パケットに関して、処理負荷量の変化に応じた適切なフィルタ効果を得ることができる。
【００１８】
請求項３の発明では、請求項２に記載のパケット受信制御装置において、前記受信制御部は、前記処理負荷量が多いほど、より多くの受信パケットが適合するように設定された規則を、前記フィルタルールとして格納するものである。
【００１９】
これによると、処理負荷量が増大するに従って、より大きなフィルタ効果を得ることができる。
【００２０】
請求項４の発明では、請求項２に記載のパケット受信制御装置において、前記受信制御部は、受信パケットを複数の種類に分類して、種類毎に、単位時間当たりのパケットの受信頻度を測定する統計取得部を備え、かつ、前記複数の種類のうち、単位時間当たりの受信頻度が最も多い種類から順に選択された種類の受信パケットが適合するように設定された規則を、前記フィルタルールとして格納するものである。
【００２１】
これによると、受信パケットの統計的性質に従って、プロセッサに負荷を与えている受信パケットに対象を絞ってフィルタ効果を得ることができる。
【００２２】
請求項５の発明では、請求項２に記載のパケット受信制御装置において、前記受信制御部は、特定の種類の受信パケットが適合しないように設定された規則を、前記フィルタルールとして格納するものである。
【００２３】
これによると、重要な受信パケットは、たとえその処理負荷が大きくとも、フィルタの対象からはずすことができる。例えば、機器の動作に欠かすことのできないパケットは必ず受信するようにすることができる。
【００２４】
請求項６の発明では、請求項２に記載のパケット受信制御装置において、前記受信制御部は、前記処理負荷量が所定の閾値を超えた場合には、ブロードキャストパケット及びマルチキャストパケットが適合するように設定された規則を、前記フィルタルールとして格納するものである。
【００２５】
これによると、ブロードキャスト及びマルチキャストされた全ての受信パケットをフィルタの対象とするので、大きなフィルタ効果を期待することができる。
【００２６】
請求項７の発明では、請求項２に記載のパケット受信制御装置において、前記受信制御部は、前記処理負荷量が所定の閾値を超えた場合には、全てのパケットが適合するように設定された規則を、前記フィルタルールとして格納するものである。
【００２７】
これによると、全ての受信パケットをフィルタの対象とするので、プロセッサの負荷を大きく抑えることができる。
【００２８】
請求項８の発明では、請求項２に記載のパケット受信制御装置において、前記受信制御部は、前記処理負荷量が減少した場合には、その後所定の期間は前記フィルタルールを変更せず、前記所定の期間経過後に、前記処理負荷量に応じて設定された規則を、前記フィルタルールとして格納するものである。
【００２９】
これによると、処理負荷量が減少しても、所定の期間は過負荷時用のフィルタルールを維持するので、処理負荷量の変動に過敏に反応することを抑えることができる。
【００３０】
請求項９の発明は、請求項２に記載のパケット受信制御装置において、前記受信制御部による受信パケットの破棄の単位時間当たりの発生頻度を測定する破棄数計測部を更に備え、前記受信制御部は、前記処理負荷量が減少した場合には、前記発生頻度が所定の閾値以上であるときには前記フィルタルールを変更せず、前記発生頻度が前記所定の閾値未満になると、前記処理負荷量に応じて設定された情報を、前記フィルタルール情報として格納するものである。
【００３１】
これによると、破棄される受信パケットの減少を確認してから過負荷時用のフィルタルールを解除するので、過負荷が発生し得る間は過負荷時用のフィルタルールを維持することができる。
【００３２】
請求項１０の発明では、請求項１に記載のパケット受信制御装置において、前記負荷検出部は、前記負荷の程度に応じた値を処理負荷量として検出するものであり、前記受信制御部は、パケットが受信されたことに関連して生成されたイベント信号を受け取った場合であって、前記処理負荷量が所定の値を超えないときには、受信されたパケットを前記プロセッサが受信するように、前記イベント信号を受け取ったことを前記プロセッサに対して通知する通知信号を出力し、前記処理負荷量が前記所定の値を超えるときには、前記通知信号の出力を停止するものである。
【００３３】
これによると、処理負荷量が所定の値を超えた場合には、パケットが受信されたことに関する通知を全て禁止するので、プロセッサがパケット受信以外の処理を確実に行うことができるようになる。
【００３４】
請求項１１の発明では、請求項１０に記載のパケット受信制御装置において、前記通知信号は、前記プロセッサに対する割込み信号であることを特徴とする。
【００３５】
これによると、パケットが受信されたことに関する通知信号による割込みを禁止することにより、プロセッサがパケットを受信するための割込み処理を行わないようにすることができる。
【００３６】
請求項１２の発明では、請求項１０に記載のパケット受信制御装置において、前記受信制御部は、前記通知信号の出力を停止してからの経過時間を計測し、計測された経過時間が所定の値を超えると、前記通知信号の出力の停止を解除するものである。
【００３７】
これによると、所定の期間はプロセッサに対する通知を禁止する設定を維持して、その後、自動的に通常時の動作を行うようにすることができる。
【００３８】
請求項１３の発明では、請求項１０に記載のパケット受信制御装置において、前記受信制御部は、前記イベント信号の単位時間当たりの発生頻度を測定し、前記通知信号の出力を停止後、前記発生頻度が所定の値よりも小さくなると、前記通知信号の出力の停止を解除するものである。
【００３９】
これによると、イベント信号の減少を確認してから通知信号の出力の停止を解除するので、過負荷が発生し得る間は通知信号の出力の停止を維持し、その後、自動的に通常時の動作を行うようにすることができる。
【００４０】
請求項１４の発明では、請求項１に記載のパケット受信制御装置において、前記負荷検出部は、前記負荷の程度に応じた値を処理負荷量として検出するものであり、かつ、前記負荷検出部は、起動されてからの時間を計測するタイマカウンタと、前記プロセッサからアクセスされると、前記タイマカウンタのカウント値を読み出して出力し、前記タイマカウンタを再起動する監視部と、所定の予定値と、読み出された前記カウント値とに基づいて、前記処理負荷量を求めて出力する負荷算出部とを有するものである。
【００４１】
これによると、処理負荷量をタイマカウンタのカウント値と予定値とから求めるので、プロセッサやプログラムの性質によらずに処理負荷量を数値化することができる。
【００４２】
請求項１５の発明では、請求項１４に記載のパケット受信制御装置において、前記監視部は、前記プロセッサにおいてマルチタスクＯＳ（operating system）上で周期的に起動されるタスクによって、アクセスされるものである。
【００４３】
これによると、負荷検出部は、マルチタスクＯＳ上のタスクによる処理負荷を検出することができる。
【００４４】
請求項１６の発明では、請求項１に記載のパケット受信制御装置において、前記負荷検出部は、前記負荷の程度に応じた値を処理負荷量として検出するものであり、かつ、前記負荷検出部は、クリア信号が入力されてからの時間を計測し、計測された時間が所定の時間に達すると、タイムアウト信号を出力するタイマカウンタと、前記プロセッサからアクセスされると、前記タイマカウンタに前記クリア信号を出力する監視部と、前記タイムアウト信号に基づいて、前記処理負荷量を求めて出力する負荷算出部とを有するものである。
【００４５】
これによると、タイムアウト信号はプロセッサの負荷が大きいときに出力されるので、処理負荷量を求めることができる。
【００４６】
請求項１７の発明では、請求項１６に記載のパケット受信制御装置において、前記負荷算出部は、前記タイムアウト信号の単位時間当たりの発生頻度に応じた値を前記処理負荷量として求めるものである。
【００４７】
これによると、タイムアウトの発生頻度から処理負荷量を算出するので、単位時間内で平均化された処理負荷量を得ることができる。
【００４８】
請求項１８の発明では、請求項１６に記載のパケット受信制御装置において、前記負荷算出部は、前記タイムアウト信号の連続して出力された回数に応じた値を前記処理負荷量として求めるものである。
【００４９】
これによると、単位時間等よりも短い期間における最大の処理負荷量を得ることができる。
【００５０】
請求項１９の発明では、請求項１８に記載のパケット受信制御装置において、前記タイマカウンタは、タイムアウトした場合にはより大きな値が、クリアされた場合にはより小さな値が、前記所定の時間として設定されるものである。
【００５１】
これによると、処理負荷量の変動を緩やかにすることができる。
【００５２】
請求項２０の発明では、請求項１６に記載のパケット受信制御装置において、前記監視部は、前記プロセッサにおいてマルチタスクＯＳ上で周期的に起動されるタスクによって、アクセスされるものである。
【００５３】
請求項２１の発明は、請求項１に記載のパケット受信制御装置において、パケットを受信し、受信されたパケットを、指示に従って前記プロセッサに出力する受信パケット転送部を更に備え、前記負荷検出部は、前記プロセッサが過負荷状態であるか否かを検出し、その結果を出力するものであり、前記受信制御部は、設定された１つ以上のフィルタルールを格納し、かつ、前記受信パケット転送部に対して、前記フィルタルールのいずれかに適合する受信パケットを破棄し、前記フィルタルールのいずれにも適合しない受信パケットを出力するように指示をし、前記プロセッサが過負荷状態である場合には、通常時よりも多くのパケットが適合する過負荷時用のフィルタルールを前記フィルタルールとして格納するものである。
【００５４】
これによると、プロセッサの過負荷状態を簡易に検知し、フィルタルールを過負荷時用のものに速やかに切り替えることができる。
【００５５】
請求項２２の発明は、請求項２１に記載のパケット受信制御装置において、過負荷対策部を更に備え、前記受信パケット転送部は、パケットを出力することを前記プロセッサに対して通知するものであり、前記過負荷対策部は、前記プロセッサに対する通知の単位時間当たりの発生頻度を求め、前記負荷検出部によって前記プロセッサが過負荷状態であることが検出された場合において、前記通知の発生頻度が所定の値以上であるときには、前記受信制御部に対して過負荷状態であることの通知を行うものであり、前記受信制御部は、前記過負荷状態であることの通知を受けた場合には、前記過負荷時用のフィルタルールを前記フィルタルールとして格納するものである。
【００５６】
これによると、パケットの受信処理によってプロセッサが過負荷状態となっている場合には、フィルタルールを過負荷時用のものに速やかに切り替えることができる。
【００５７】
請求項２３の発明では、請求項２２に記載のパケット受信制御装置において、前記過負荷対策部は、前記プロセッサが過負荷状態から過負荷ではない状態になった場合には、所定の条件が成立した後に、前記プロセッサが過負荷状態ではないことの通知を前記受信制御部に行うものであり、前記受信制御部は、前記過負荷状態ではないことの通知を受けた場合には、通常時用のフィルタルールを前記フィルタルールとして格納するものである。
【００５８】
これによると、所定の条件が成立するまでは過負荷時用のフィルタルールを維持して、その後、自動的に通常時の動作を行うようにすることができる。
【００５９】
請求項２４の発明では、請求項２３に記載のパケット受信制御装置において、前記所定の条件は、前記プロセッサが過負荷状態ではなくなってから、所定の時間が経過することである。
【００６０】
これによると、所定の時間が経過するまでは過負荷時用のフィルタルールを維持して、その後、自動的に通常時の動作を行うようにすることができる。
【００６１】
請求項２５の発明は、請求項２３に記載のパケット受信制御装置において、前記受信制御部による受信パケットの破棄の単位時間当たりの発生頻度を測定する破棄数計測部を更に備え、前記所定の条件は、前記発生頻度が所定の値よりも小さくなることである。
【００６２】
これによると、受信パケットの破棄の発生頻度が所定の値を下回ることを確認してから過負荷時用の設定を解除するので、過負荷が発生し得る間は過負荷時用のフィルタルールを維持し、その後、自動的に通常時の動作を行うようにすることができる。
【００６３】
請求項２６の発明では、請求項２１に記載のパケット受信制御装置において、前記過負荷時用のフィルタルールは、全てのパケットが適合するように設定されていることを特徴とする。
【００６４】
これによると、過負荷時には全ての受信パケットを破棄するので、直接的にプロセッサの負荷を最小に抑えることができる。
【００６５】
請求項２７の発明では、請求項２１に記載のパケット受信制御装置において、前記受信制御部は、受信パケットを複数の種類に分類して、種類毎に、単位時間当たりのパケットの受信頻度を測定する統計取得部を更に備えるものであり、前記過負荷時用のフィルタルールは、前記複数の種類のうち、単位時間当たりの受信頻度が最も多い種類から順に選択された種類の受信パケットが適合するように設定されていることを特徴とする。
【００６６】
これによると、受信パケットの統計的性質に従って、プロセッサに負荷を与えている受信パケットに対象を絞ってフィルタ効果を得ることができる。
【００６７】
請求項２８の発明では、請求項２１に記載のパケット受信制御装置において、前記過負荷時用のフィルタルールは、特定の種類の受信パケットが適合しないように設定されていることを特徴とする。
【００６８】
これによると、重要な受信パケットは、たとえその処理負荷が大きくとも、フィルタの対象からはずすことができる。
【００６９】
請求項２９の発明では、請求項１に記載のパケット受信制御装置において、前記負荷検出部は、前記プロセッサが過負荷状態であるか否かを検出し、その結果を出力するものであり、前記受信制御部は、パケットが受信されたことに関連して生成されたイベント信号の単位時間当たりの発生頻度を求め、前記イベント信号を受け取ったことを前記プロセッサに対して通知する通知信号を出力することができるものであり、前記プロセッサが過負荷状態であり、かつ、前記イベント信号の発生頻度が所定の値を超える場合には、前記通知信号の出力を停止するものである。
【００７０】
これによると、プロセッサの過負荷状態を簡易に検知し、イベント信号の発生頻度が高い場合には、パケット受信に関する通知信号の出力を停止するので、プロセッサはパケットの受信を行わず、プロセッサはパケット受信以外の処理を確実に行うことができる。
【００７１】
請求項３０の発明では、請求項２９に記載のパケット受信制御装置において、前記通知信号は、前記プロセッサに対する割込み信号であることを特徴とする。
【００７２】
請求項３１の発明では、請求項２９に記載のパケット受信制御装置において、前記受信制御部は、前記通知信号の出力を停止してからの経過時間を計測し、計測された経過時間が所定の値を超えると、前記通知信号の出力の停止を解除するものである。
【００７３】
請求項３２の発明では、請求項２９に記載のパケット受信制御装置において、前記受信制御部は、前記イベント信号の単位時間当たりの発生頻度を測定し、前記通知信号の出力を停止後、前記発生頻度が所定の値よりも小さくなると、前記通知信号の出力の停止を解除するものである。
【００７４】
請求項３３の発明は、請求項２９に記載のパケット受信制御装置において、所定時間内に前記プロセッサからアクセスされない場合に、前記プロセッサに対して初期化要求信号を出力するウォッチドッグタイマを更に備え、前記受信制御部は、ウォッチドッグタイマが前記初期化要求信号を出力するまでの残り時間が所定の時間よりも短い場合には、前記通知信号の出力を停止するものである。
【００７５】
これによると、ウォッチドッグタイマがタイムアウトする前に、パケットの受信に起因する通知信号の出力を差し止めるので、パケットの受信処理に起因してプロセッサがウォッチドッグタイマにアクセスできず、ウォッチドッグタイマが正常な監視動作を行えなくなることを避けることができる。
【００７６】
請求項３４の発明では、請求項１に記載のパケット受信制御装置において、前記負荷検出部は、クリア信号が入力されてからの時間を計測し、計測された時間が所定の時間に達したことを示すタイムアウト信号を、前記検出結果として出力するタイマカウンタと、前記プロセッサからアクセスされると、前記タイマカウンタにクリア信号を出力する監視部とを有するものである。
【００７７】
これによると、プロセッサが過負荷であるか否かを示す信号を、負荷検出部の検出結果として得ることができる。
【００７８】
請求項３５の発明では、請求項３４に記載のパケット受信制御装置において、前記タイマカウンタは、前記所定の時間を変更することができるように構成されているものである。
【００７９】
これによると、タイムアウト信号を出力するまでの時間と監視部にアクセスする周期との比を変更することにより、過負荷状態を検知する感度を調整することができる。
【００８０】
請求項３６の発明では、請求項３４に記載のパケット受信制御装置において、前記監視部は、前記プロセッサにおいてマルチタスクＯＳ上で周期的に起動されるタスクによって、アクセスされるものである。
【００８１】
請求項３７の発明では、請求項３６に記載のパケット受信制御装置において、前記周期的に起動されるタスクのスケジュール優先度は、パケット通信プロトコルの処理タスク及びリアルタイム通信アプリケーションの処理タスクよりも低く設定されていることを特徴とする。
【００８２】
これによると、パケット通信プロトコルの処理タスク及びリアルタイム通信アプリケーションの処理タスクに起因してプロセッサが過負荷状態になっているか否かを、監視部が検知することができる。
【００８３】
請求項３８の発明では、請求項３７に記載のパケット受信制御装置において、前記周期的に起動されるタスクのスケジュール優先度は、リアルタイム制御アプリケーションの処理タスクよりも低く設定されていることを特徴とする。
【００８４】
これによると、パケット通信プロトコルの処理タスク、リアルタイム通信アプリケーションの処理タスク、及びリアルタイム制御アプリケーションの処理タスクに起因してプロセッサが過負荷状態になっているか否かを、監視部が検知することができる。
【００８５】
請求項３９の発明では、請求項３７に記載のパケット受信制御装置において、前記周期的に起動されるタスクのスケジュール優先度は、リアルタイム性を必要としないアプリケーションの処理タスクよりも高く設定されていることを特徴とする。
【００８６】
これによると、リアルタイム性を必要としないアプリケーションの処理タスク以外に起因してプロセッサが過負荷状態になっているか否かを、監視部が検知することができる。
【００８７】
請求項４０の発明は、請求項１に記載のパケット受信制御装置において、パケットを受信し、受信パケットを、指示に従ってメモリに格納させて前記プロセッサに出力できるようにする受信パケット転送部と、前記メモリに格納されたことがある受信パケットの情報を走査し、これらの受信パケットの種類毎の受信頻度を示す頻度情報を求めるパケット解析部とを更に備え、前記負荷検出部は、前記プロセッサが過負荷状態であるか否かを検出し、その結果を出力するものであり、前記受信制御部は、フィルタルールを格納する破棄フィルタテーブル格納部と、前記負荷検出部から、前記プロセッサが過負荷状態であることを示す検出結果を受け取ると、所定の種類のパケットを破棄すべきであることを示すフィルタルールを含む第１のフィルタルールセットを破棄フィルタテーブル格納部に格納させるフィルタルール設定部と、前記フィルタルールのいずれかに適合する受信パケットを破棄し、かつ、前記フィルタルールのいずれにも適合しない受信パケットを、前記メモリを介して前記プロセッサに出力するように、受信パケット転送部に対して指示する破棄／通過決定部とを備えるものであり、前記フィルタルール設定部は、前記メモリに格納されたことがある受信パケットについて求められた前記頻度情報に基づいて、破棄すべきパケットの種類を決定し、前記決定された破棄すべきパケットの種類を示すフィルタルールを含む第２のフィルタルールセットを前記第１のフィルタルールセットに代えて破棄フィルタテーブル格納部に格納させるものである。
【００８８】
これによると、メモリ上の受信パケットの走査結果から破棄すべきパケットの種類を決定し、このようなパケットを破棄する第２のフィルタルールを設定するので、プロセッサの負荷を抑えつつ、過負荷状態を引き起こしたパケットの種類以外のパケットを受信することが可能となる。
【００８９】
請求項４１の発明では、請求項４０に記載のパケット受信制御装置において、前記フィルタルール設定部は、前記頻度情報に基づいて、受信頻度が所定の値を超えるパケットの種類を、破棄すべきパケットの種類として決定するものである。
【００９０】
これによると、所定の受信頻度を超えるパケットの種類に該当するパケットを破棄することにより、効果的にプロセッサの負荷を下げることができる。
【００９１】
請求項４２の発明では、請求項４０に記載のパケット受信制御装置において、前記フィルタルール設定部は、所定のパケットの種類を、破棄すべきパケットの種類として決定しないものである。
【００９２】
これによると、パケット受信制御装置にとって送受信が必須であるパケットを破棄しないように設定することができる。
【００９３】
請求項４３の発明では、請求項４０に記載のパケット受信制御装置において、前記受信制御部は、前記プロセッサが実行している通信アプリケーションが使用するパケットの種類を示す情報を保持するセション管理部を更に備え、前記フィルタルール設定部は、前記セション管理部が保持する情報が示すパケットの種類を、破棄すべきパケットの種類として決定しないものである。
【００９４】
これによると、通信アプリケーションが通信に使用しているパケットの種類を、破棄すべきパケットの種類に含めないようにすることができる。
【００９５】
請求項４４の発明では、請求項４３に記載のパケット受信制御装置において、前記セション管理部は、前記通信アプリケーションが通信を終了すると、前記通信アプリケーションが使用していたパケットの種類を示す情報を出力するものであり、前記フィルタルール設定部は、前記通信アプリケーションが使用していたパケットの種類を、破棄すべきパケットの種類として決定するものである。
【００９６】
これによると、通信アプリケーションによる通信が終了し、受信する必要が無くなった受信パケットを受信した場合には、これを破棄することが可能となる。
【００９７】
請求項４５の発明では、請求項４０に記載のパケット受信制御装置において、前記フィルタルール設定部は、前記プロセッサが過負荷状態であることを示す検出結果を所定の時間内に再び受け取ると、より多くの種類のパケットを破棄するように、前記第２のフィルタルールセットを変更するものである。
【００９８】
これによると、第２のフィルタルールを格納した後、再びプロセッサが過負荷となった場合には、前回よりも多くのパケットの種類を破棄するので、プロセッサの負荷を低減することが可能となる。
【００９９】
請求項４６の発明では、請求項４０に記載のパケット受信制御装置において、前記フィルタルール設定部は、前記プロセッサが過負荷状態であることを示す検出結果を所定の時間内に再び受け取ると、前回用いた前記頻度情報に基づいて破棄すべきパケットの種類を決定するものである。
【０１００】
これによると、第２のフィルタルールを格納した後、再びプロセッサが過負荷となった場合には、メモリ上の受信パケットを再び走査する処理を省くことが可能となる。
【０１０１】
請求項４７の発明では、請求項４０に記載のパケット受信制御装置において、前記受信制御部は、閾値を格納する学習結果格納部を更に備え、前記フィルタルール設定部は、前記頻度情報に基づいて破棄すべきパケットの種類を決定する際に、前記学習結果格納部に格納された閾値を用いて前記第２のフィルタルールセットを求めるものであり、前記学習結果格納部は、前記プロセッサが過負荷状態であることを示す検出結果を受け取る間隔に応じて、格納する閾値を変更するものである。
【０１０２】
これによると、使用形態に応じて適切に、破棄すべきパケットの種類を決定することが可能となる。
【０１０３】
請求項４８の発明では、請求項４０に記載のパケット受信制御装置において、前記フィルタルール設定部は、前記頻度情報に基づいて、受信パケットの種類のうち、受信頻度が大きいものから順に所定の数の種類を選択し、前記破棄すべきパケットの種類として決定するものである。
【０１０４】
これによると、受信頻度が大きいパケットの種類を優先的に破棄することにより、効果的にプロセッサの負荷を下げることが可能となる。
【０１０５】
請求項４９の発明では、請求項４０に記載のパケット受信制御装置において、前記受信制御部は、前記メモリ内に格納可能な受信パケットの数を保持するキュー管理部を更に備え、前記フィルタルール設定部は、前記プロセッサが過負荷状態であることを示す検出結果を受け取ると、前記キュー管理部に保持された前記メモリに格納可能な受信パケットの数を増加させるものである。
【０１０６】
これによると、メモリに格納する受信パケットの数が増加するので、破棄すべき受信パケットの種類を決定する際の精度が向上する。
【０１０７】
請求項５０の発明では、請求項４０に記載のパケット受信制御装置において、前記受信パケット転送部は、受信パケットの少なくともヘッダ情報を前記メモリに格納させるものであり、前記パケット解析部は、前記メモリに格納されたヘッダ情報を走査して、前記頻度情報を求めるものである。
【０１０８】
これによると、過去に受信したパケットのヘッダ情報に基づいて、破棄すべきパケットの種類を決定することが可能となる。
【０１０９】
請求項５１の発明では、請求項４０に記載のパケット受信制御装置において、前記フィルタルール設定部は、全てのパケットが廃棄されるように、前記第１のフィルタルールセットを設定するものである。
【０１１０】
これによると、プロセッサが過負荷となった場合に一旦全てのパケットを破棄することにより、パケットの受信に要する処理負荷が軽減されるので、破棄すべきパケットを特定する処理を確実に実行することが可能となる。
【０１１１】
請求項５２の発明では、請求項１に記載のパケット受信制御装置において、前記パケットは、イーサネットのＭＡＣフレームであることを特徴とする。
【０１１２】
請求項５３の発明は、半導体集積回路として、請求項１に記載のパケット受信制御装置と、前記パケット受信制御装置における判断の結果に従って、パケットを受信するプロセッサとを備えるものである。
【０１１３】
請求項５４の発明は、受信パケットをメモリに格納させてからプロセッサに出力するパケット受信制御方法であって、前記プロセッサが過負荷状態であるか否かを検出する負荷検出ステップと、前記プロセッサが過負荷状態であることを示す検出結果を受け取ると、所定の種類のパケットを破棄すべきであることを示すフィルタルールを含む第１のフィルタルールセットを格納するステップと、前記フィルタルールのいずれかに適合する受信パケットを破棄し、前記フィルタルールのいずれにも適合しない受信パケットを、前記メモリを介して前記プロセッサに出力するステップと、前記第１のフィルタルールセットに従って前記メモリに格納されたことがある受信パケットについての情報を走査し、これらの受信パケットの種類毎の受信頻度を示す頻度情報を求めるステップと、前記頻度情報に基づいて破棄すべきパケットの種類を決定するステップと、前記決定された破棄すべきパケットの種類を示すフィルタルールを含む第２のフィルタルールセットを前記第１のフィルタルールセットに代えて格納するステップとを備えるものである。
【０１１４】
請求項５５の発明では、請求項５４に記載のパケット受信制御方法において、前記破棄すべきパケットの種類を決定するステップは、前記頻度情報に基づいて、受信頻度が所定の値を超えるパケットの種類を、破棄すべきパケットの種類として決定するものである。
【０１１５】
請求項５６の発明では、請求項５４に記載のパケット受信制御方法において、前記破棄すべきパケットの種類を決定するステップは、決定するために用いられる閾値を、前記プロセッサが過負荷状態であることを示す検出結果が得られる間隔に応じて変更するものである。
【０１１６】
請求項５７の発明は、請求項５４に記載のパケット受信制御方法において、前記プロセッサが過負荷状態であることを示す検出結果が得られると、前記メモリに格納可能な受信パケットの数を増加させるステップを更に備え、前記頻度情報を求めるステップは、前記メモリに格納された受信パケットを走査して、前記頻度情報を求めるものである。
【０１１７】
請求項５８の発明では、請求項５４に記載のパケット受信制御方法において、前記頻度情報を求めるステップは、前記メモリに格納されたことがある受信パケットのヘッダ情報を走査して、前記頻度情報を求めるものである。
【発明の効果】
【０１１８】
本発明によると、パケットを受信する装置の過負荷状態を改善することができるので、短期間に多くのパケットが到来する場合であっても、その装置がパケット受信以外の処理をリアルタイムで行うことができるようになる。
【発明を実施するための最良の形態】
【０１１９】
以下、本発明の実施の形態について、図面を参照しながら説明する。
【０１２０】
（第１の実施形態）
図１は、本発明の第１の実施形態に係るパケット通信システムのブロック図である。図１のパケット通信システムは、メモリ８と、半導体集積回路１０とを備えている。半導体集積回路１０は、通信部２と、プロセッサ４と、パケット受信制御装置１００とを備えている。プロセッサ４は、例えばＣＰＵやＤＳＰ（digital signal processor）である。
【０１２１】
通信部２は、ネットワークとの間でパケットを送受信し、受信したパケットをパケット受信制御装置１００に出力する。また、通信部２は、必要に応じて、バス６を介してプロセッサ４及びメモリ８との間でパケット等の転送を行う。
【０１２２】
パケット受信制御装置１００は、通信部２から受け取ったパケットを、バス６を介してメモリ８に出力する。プロセッサ４は、メモリ８からパケットを読み出す。パケット受信制御装置１００は、プロセッサ４の状態に応じて、このような通信部２からプロセッサ４へのパケットの転送を制御する。
【０１２３】
図２は、図１のパケット受信制御装置の構成を示すブロック図である。図２のパケット受信制御装置１００は、負荷検出部２０と、受信制御部としての受信パケットフィルタ４０と、受信パケット転送部６０とを備えている。
【０１２４】
負荷検出部２０は、タイマカウンタ２２と、監視部２４と、予定値レジスタ２６と、負荷算出部２８とを備えている。受信パケットフィルタ４０は、フィルタルール設定部４２と、統計取得部４４と、ヘッダ分類部４６と、破棄フィルタテーブル格納部５２と、通過フィルタテーブル格納部５４と、破棄／通過決定部５６と、破棄数計測部５８とを備えている。受信パケット転送部６０は、受信パケットバッファ６２を備えている。
【０１２５】
プロセッサ４は、監視部２４にアクセスするタスクを実行する。このタスクは、プロセッサ４において、マルチタスクＯＳ上で周期的に起動される。予定値レジスタ２６には、この周期的に起動されるタスクの周期を、タイマカウンタ２２のカウントアップの時間間隔を単位として表した値が、予定値として、あらかじめプロセッサ４から設定されている。
【０１２６】
タイマカウンタ２２は、クロックに従ってインクリメントするカウンタであり、起動時に値が０にクリアされる。タイマカウンタ２２は、カウント値が予定値レジスタ２６の値の２倍に達すると、カウントを停止する。
【０１２７】
プロセッサ４からのアクセスがあると、監視部２４は、タイマカウンタ２２のカウント値を読み出して負荷算出部２８に出力し、タイマカウンタ２２を再起動する。負荷算出部２８は、入力されたカウント値と予定値レジスタ２６から読み出した予定値とに基づいて、処理負荷量を検出し、フィルタルール設定部４２に出力する。処理負荷量は、プロセッサ４の負荷の程度に応じた値となる。
【０１２８】
具体的には、負荷算出部２８は、入力されたカウント値から予定値を減じ、これを予定値で割って得られた値を、処理負荷量として求める。ただし、入力されたカウント値が予定値を越えていない場合には、処理負荷量は０％とする。処理負荷量は、プロセッサ４の負荷を表す値であって、プロセッサ４に処理負荷がない場合や、プロセッサ４の処理能力に余裕がある場合には、０％となり、プロセッサ４の処理能力が足りない場合には、正の値となる。
【０１２９】
図３は、図１のパケット通信システムが受信するパケットのフォーマットを示す説明図である。図３のパケットは、イーサネットのＭＡＣ（media access control）フレームであって、ヘッダ（ＭＡＣヘッダ）とその他の部分とを有している。ヘッダは、宛先アドレスと、送信元アドレスと、プロトコルを示す値とを含んでいる。以下、本明細書においては、受信パケットはＭＡＣフレームであるとする。
【０１３０】
受信パケット転送部６０は、通信部２から受信パケットを受け取り、これの少なくとも一部を受信パケットバッファ６２に蓄え、受信パケットフィルタ４０の破棄／通過決定部５６から指示を受ける。受信パケット転送部６０は、パケットを通過させるように指示された場合には、プロセッサ４にパケットを受信したことの通知ＩＮＦを行ってメモリ８に受信パケットを出力し、パケットを破棄するように指示された場合には、受信パケットバッファ６２をクリアして受信パケットを出力しない。また、受信パケット転送部６０は、受信パケットの少なくともヘッダを取り出して、ヘッダ分類部４６に出力する。なお、パケットを通過させる場合には、パケットを受信したことの通知ＩＮＦに従って、プロセッサ４がパケットを受信パケットバッファ６２から読み出すようにしてもよい。
【０１３１】
ヘッダ分類部４６は、受け取ったヘッダを解析して、宛先アドレスとプロトコル値とを取り出し、統計取得部４４及び破棄／通過決定部５６に出力する。
【０１３２】
通過フィルタテーブル格納部５４は、通過フィルタテーブルを格納している。通過フィルタテーブルには、状況に拘わらず通過させるべきパケットの、宛先アドレスとプロトコルとの組合せが、必要に応じた数だけ、プロセッサ４からフィルタルール設定部４２を介してフィルタルールとして設定されている。
【０１３３】
破棄フィルタテーブル格納部５２は、破棄フィルタテーブルを格納している。破棄フィルタテーブルには、その時点で破棄すべきパケットの、宛先アドレスとプロトコル値との組合せが、必要に応じた数だけ、フィルタルール設定部４２からフィルタルールとして設定されている。通常、このような組合せは、ある範囲の値が該当するように設定されたり、通過させたいパケットに対する値を論理反転して記述されることが多い。特別なケースでは、破棄フィルタテーブル格納部５２には、全ての宛先アドレスとプロトコル値が一致する特殊値、或いは、特定の種別の宛先アドレス値が一致する特殊値が設定されることがある。
【０１３４】
破棄／通過決定部５６は、受け取った宛先アドレスとプロトコル値との組合せを、まず、通過フィルタテーブル格納部５４に設定された組合せと比較する。比較した結果、一致するものがあると判定した場合には、破棄／通過決定部５６は、受信パケット転送部６０に対して、パケットを通過させるように指示する。
【０１３５】
比較した結果、一致するものがないと判定した場合には、破棄／通過決定部５６は、受け取った宛先アドレスとプロトコル値との組合せを、破棄フィルタテーブル格納部５２に設定された組合せと比較する。破棄／通過決定部５６は、一致するものがないと判定した場合には、パケットを通過させるように、受信パケット転送部６０に対して指示し、一致するものがあると判定した場合には、パケットを破棄するように、受信パケット転送部６０に対して指示する。
【０１３６】
廃棄数計測部５８は、破棄／通過決定部５６が破棄するように指示した単位時間当たりの回数を計測し、この計測された単位時間当たりの破棄回数をフィルタルール設定部４２に出力する。
【０１３７】
統計取得部４４は、ヘッダ分類部４６から与えられた宛先アドレスとプロトコル値との組合せを分類して、単位時間当たりの発生数や発生割合を統計テーブルとして求める。図４は、統計テーブルの一例を示す図である。
【０１３８】
フィルタルール設定部４２は、負荷算出部２８から出力された処理負荷量に応じて、破棄フィルタテーブル格納部５２に設定する値を変更する。フィルタルール設定部４２は、処理負荷量が例えば＋５０％を示している場合には、統計テーブルを参照し、発生割合が多いものから順に、処理負荷量の値（５０％）を上回るように分類を選択し、選択された分類に相当するフィルタルールを破棄フィルタテーブルに設定する。
【０１３９】
図５は、破棄フィルタテーブルの一例を示す図である。図５は、図４の統計テーブルにおいて、フィルタルール設定部４２が汎用のマルチキャストと非ＩＰユニキャストとを選択した場合について示している。破棄／通過決定部５６は、図５の破棄フィルタテーブルにおいて、負論理と記載された行の条件を全て満たさず、かつ、正論理と記載された行の条件のいずれかを満たすパケットについて、「一致する」と解釈し、このようなパケットを破棄するように指示する。
【０１４０】
更に、フィルタルール設定部４２は、処理負荷量が以前の測定値から減少した際には、破棄数計測部５８により計測された単位時間当たりの破棄回数を参照する。フィルタルール設定部４２は、単位時間当たりの破棄回数が、あらかじめ定められた閾値以上である場合には、破棄フィルタテーブルの設定を変更せず、閾値以下である場合には、破棄フィルタテーブルの内容を更新する。破棄フィルタテーブルの更新は、既に説明したように、処理負荷量に応じて行われる。
【０１４１】
以上のように、図２のパケット受信制御装置１００は、負荷検出部２０が検出した処理負荷量に応じて破棄フィルタテーブルの内容を設定するので、処理負荷量の変化に合わせて適切なフィルタルールを動的に選択することができる。
【０１４２】
また、受信パケットの統計的性質に合わせて、負荷を与えている受信パケットに絞ったフィルタルールを得ることができる。
【０１４３】
また、機器の動作において重要な受信パケットは、たとえその処理負荷が大きくとも、フィルタルールの対象からはずすことができる。
【０１４４】
また、処理負荷量の減少とフィルタで破棄される受信パケットの減少とを確認してから、破棄フィルタテーブルの設定を変更するので、過負荷が発生している場合には、過負荷状態のフィルタの設定を維持できる。
【０１４５】
また、マルチタスクＯＳ上のタスクにおける処理負荷量を、プロセッサやプログラムの性質によらずに簡易に数値化して取り扱うことができる。
【０１４６】
なお、本実施の形態では、図４のように、受信するパケットの種類を統計的に測定した結果である統計テーブルに基づいて、破棄されるべきパケットの種類を、その割合が大きい種類のパケットから順に選択したが、他の順に選択するようにしてもよい。つまり、処理負荷量の増大に従ってより多くの受信パケットが適合するように、破棄フィルタテーブルの内容が設定されるようにすればよく、パケット受信制御装置の本来の効果を同様に得ることができる。また、選択の際、パケットの重要度や必要性を考慮にいれてもよい。例えば、重要ではないものから順に選択するようにしてもよい。
【０１４７】
また、処理負荷量が一定値を上回れば、破棄フィルタテーブルに特別な内容を設定するようにしてもよい。例えば、処理負荷量が８０％を超えた場合には、全てのマルチキャストパケットとブロードキャストパケットとを破棄するように設定し、９０％を越えた場合には、全受信パケットを破棄するように設定するようにしてもよい。これによって、特にプロセッサの処理が重くなった場合に、速やかに、受信パケットを処理する負荷からプロセッサを解放することが可能となる。
【０１４８】
また、本実施の形態では、処理負荷量が減少した際に、破棄数計測部５８の計測値を参照することとしたが、代わりに、処理負荷量が減少してから一定の期間、破棄フィルタテーブルの設定を変更せずに維持するようにしてもよい。すると、プロセッサの処理負荷量の変動に過敏に反応することを防止できる。
【０１４９】
（第２の実施形態）
図６は、本発明の第２の実施形態に係るパケット受信制御装置のブロック図である。図６のパケット受信制御装置２００は、負荷検出部２２０と、受信制御部としての受信通知部２７０とを備えている。パケット受信制御装置２００は、図１のパケット通信システムにおいて、パケット受信制御装置１００に代えて用いられる。
【０１５０】
負荷検出部２２０は、タイマカウンタ２２２と、監視部２２４と、負荷算出部２２８とを備えている。受信通知部２７０は、上限値レジスタ２７２と、受信通知停止制御部２７４と、カウンタ２７６とを備えている。
【０１５１】
プロセッサ４は、監視部２２４にアクセスするタスクを実行する。このタスクは、プロセッサ４において、マルチタスクＯＳ上で周期的に起動される。タスクの周期は、タイマカウンタ２２２のタイムアウト時間よりも短い時間が設定される。タイムアウト時間は、タイマカウンタ２２２がカウントを開始してから、クリアされることなくタイムアウト信号を出力するまでの時間である。
【０１５２】
タイマカウンタ２２２は、クロックをカウントしており、カウント値が所定値（タイムアウト値）に達した場合には、タイムアウト信号を負荷算出部２２８に出力し、初期値からカウントを再開する。このタイムアウト値は、タイムアウト時間が単位時間より短い時間になるような値であって、プロセッサ４から設定可能であってもよい。
【０１５３】
監視部２２４は、プロセッサ４からのアクセスがあると、クリア信号を生成して、タイマカウンタ２２２に出力する。タイマカウンタ２２２は、クリア信号を受け取ると、クリアされ、再び初期値からクロックのカウントを開始する。
【０１５４】
負荷算出部２２８は、タイマカウンタ２２２からのタイムアウト信号の単位時間当たりの発生回数を計測し、得られた計測値を、処理負荷量として出力する。処理負荷量は、プロセッサ４の負荷を表す値であって、プロセッサ４に処理すべき負荷がない場合や、プロセッサ４の処理能力に余裕がある場合には、０となり、プロセッサ４の処理能力が足りない場合には、正の値となる。処理負荷量は、プロセッサ４の負荷が大きいほど大きな値となる。処理負荷量の最大値は、単位時間をタイムアウト時間で除した値である。負荷算出部２２８は、得られた計測値に対して演算を行った結果を、処理負荷量として出力してもよい。
【０１５５】
通信部２は、ネットワークからパケットを受信すると、受信関連のイベント信号ＥＶＲを発生し、受信通知停止制御部２７４及びカウンタ２７６に出力する。通信部２は、パケットを正常に受信した場合だけではなく、誤ったパケットを受信したり、通信部２でオーバフローが生じた場合等にも、イベント信号ＥＶＲを発生させる。イベント信号ＥＶＲは、イベントの要因の通知も含み得る。
【０１５６】
カウンタ２７６は、受信関連のイベント信号ＥＶＲの単位時間当たりの発生回数をカウントし、カウント値を受信通知停止制御部２７４に出力する。このカウント値は、イベント信号ＥＶＲの発生頻度を表す。
【０１５７】
受信通知停止制御部２７４は、受信関連のイベント信号ＥＶＲを受け取ると、プロセッサ４が停止されていなければ、基本的には、受信系通知信号ＩＮＴＲによってプロセッサ４に通知する処理を行う。受信系通知信号ＩＮＴＲは、プロセッサ４に対する割込み信号である。ここで、必要であれば、プロセッサ４から確認できるように、受信通知停止制御部２７４は、その通知の要因を記録する。通知を受けたプロセッサ４は割込み処理プログラムを起動し、割込み処理プログラムでは通知の要因を解析して、必要であれば通信部２から受信パケットのデータをメモリ８に転送させる。
【０１５８】
上限値レジスタ２７２には、上限値がプロセッサ４から設定されている。受信通知停止制御部２７４は、負荷検出部２２０から出力される処理負荷量と上限値レジスタ２７２に設定された上限値とを比較し、処理負荷量が上限値を上回っている場合には、受信系通知信号ＩＮＴＲによるプロセッサ４への通知を停止する。
【０１５９】
更に、受信通知停止制御部２７４は、負荷検出部２２０から出力される処理負荷量が上限値を上回っている状態から下回った状態に変化したことを検出した場合には、カウンタ２７６のカウント値があらかじめ定められた閾値以下であれば、受信系通知信号ＩＮＴＲによるプロセッサ４への通知の停止を解除し、カウント値が閾値を越えていれば、通知の停止を維持する。
【０１６０】
以上のように、図６のパケット受信制御装置２００は、処理負荷量が上限値を超えた際には、受信パケットに関わる通知を要因とする割込みの発生を禁止することにより、プロセッサの能力を、過大な割込み処理と受信処理から保全することができる。特に、通信部２からの受信エラーに関わる通知による負荷からもプロセッサ能力を保全することができる。
【０１６１】
また、過負荷が発生している場合には、割込み信号による通知を停止する設定を維持でき、その後、イベント信号ＥＶＲの発生頻度が減少したことを確認してから、自動で通常の状態に復旧することができる。
【０１６２】
また、単位時間内におけるタイムアウトの発生頻度から処理負荷量を算出するので、単位時間内で平均化された処理負荷量を用いて安定した判定を行うことができる。
【０１６３】
なお、本実施の形態における受信通知停止制御部２７４は、イベント信号ＥＶＲの発生頻度があらかじめ定められた閾値以下であることを確認してから、プロセッサ４に対する通知を停止する設定を解除するとして説明したが、通知停止の状態になったときから一定時間後に設定を解除するようにしてもよい。この場合には、パケット受信制御装置の過敏な反応を防止しつつ、自動的に通常の状態に復旧することができる。
【０１６４】
また、本実施の形態における負荷算出部２２８は、単位時間当たりのタイムアウト回数を計測しているが、その代わりに、単位時間内に発生するタイムアウト信号の連続数の最大値を計測するものであってもよい。この場合には、最近の単位時間内での瞬間的な最大の処理負荷量が測定され、単位時間内の最も負荷が大きいときについて、過負荷であるか否かを判定することが可能になる。
【０１６５】
また、本実施の形態におけるタイマカウンタ２２２のタイムアウト値は常に一定であったが、これをタイムアウトの度、又はクリアする度に変更してもよい。タイムアウトの度にタイムアウト値を大きくし、クリアの度にタイムアウト値を小さくすると、連続したタイムアウト信号の数を、処理負荷量の変動に速やかに追従する値として、負荷算出部２２８で用いることができる。
【０１６６】
また、受信通知部２７０が、プロセッサ４に対する受信系通知信号ＩＮＴＲを生成するものとして説明したが、これに代えて、通信部が受信系通知信号ＩＮＴＲを生成し、受信通知部が通信部を操作して、受信系通知信号ＩＮＴＲの発生を停止させるようにしてもよい。
【０１６７】
また、図６の負荷検出部２２０に代えて図２の負荷検出部２０を用いるようにしてもよく、第１の実施形態において、負荷検出部２０に代えて負荷検出部２２０を用いるようにしてもよい。
【０１６８】
（第３の実施形態）
図７は、本発明の第３の実施形態に係るパケット受信制御装置のブロック図である。図７のパケット受信制御装置３００は、負荷検出部３２０と、過負荷対策部３３０と、受信制御部としての受信パケットフィルタ３４０と、受信パケット転送部３６０とを備えている。パケット受信制御装置３００は、図１のパケット通信システムにおいて、パケット受信制御装置１００に代えて用いられる。
【０１６９】
負荷検出部３２０は、タイマカウンタ３２２と、監視部３２４とを備えている。過負荷対策部３３０は、過負荷制御部３３２と、カウンタ３３４と、破棄数計測部３３６とを備えている。受信パケットフィルタ３４０は、フィルタルール設定部３４２と、統計取得部３４４と、ヘッダ分類部３４６と、破棄フィルタテーブル格納部３５２と、通過フィルタテーブル格納部３５４と、破棄／通過決定部３５６とを備えている。
【０１７０】
受信パケット転送部３６０は、受信パケットバッファ３６２を備え、次の点以外は、図２の受信パケット転送部６０とほぼ同様である。すなわち、受信パケット転送部３６０は、受信に起因して発生するイベントを、受信系通知信号ＩＮＴＲとしてプロセッサ４に通知する。受信系通知信号ＩＮＴＲは、プロセッサ４に対する割込み信号である。これと同時に、受信パケット転送部３６０は、イベントの種類を記憶して、プロセッサ４からのアクセスが可能となるようにする。
【０１７１】
監視部３２４は、プロセッサ４からのアクセスを受けると、クリア信号を生成してタイマカウンタ３２２に出力する。タイマカウンタ３２２は、クロックをカウントしており、クリア信号を受け取ると、クリアされ、再び初期値からクロックのカウントを開始する。
【０１７２】
タイマカウンタ３２２は、カウント値が一定値に達すると、タイムアウト信号を過負荷通知として過負荷制御部３３２に出力して停止するように動作している。この一定値はプロセッサ４から設定可能であってもよく、固定値であってもよい。
【０１７３】
プロセッサ４は、監視部３２４にアクセスするタスクを実行する。このタスクは、プロセッサ４において、マルチタスクＯＳ上で周期的に起動される。タスクが起動される周期は、タイマカウンタ３２２のタイムアウト時間より小さくなるように設定される。この周期とタイムアウト時間との比率を調整することによって、タスクの起動間隔の変動を検出する際の鋭敏さを変更でき、過負荷検出の感度を変更することができる。
【０１７４】
統計取得部３４４、ヘッダ分類部３４６、及び破棄／通過決定部３５６は、それぞれ図２の統計取得部４４、ヘッダ分類部４６、及び破棄／通過決定部５６とほぼ同様であるので、その説明を省略する。
【０１７５】
破棄フィルタテーブル格納部３５２は、破棄フィルタテーブルを格納し、通過フィルタテーブル格納部３５４は、通過フィルタテーブルを格納している。
【０１７６】
フィルタルール設定部３４２は、プロセッサ４又は過負荷制御部３３２からの指示に従って、通過フィルタテーブル格納部３５４が格納する通過フィルタテーブル、及び破棄フィルタテーブル格納部３５２が格納する破棄フィルタテーブルの内容を設定する。このときに設定されるフィルタルールは、通常時用のフィルタルールである。
【０１７７】
カウンタ３３４は、受信系通知信号ＩＮＴＲの単位時間当たりの発生頻度を計測し、得られた計測値を過負荷制御部３３２に出力している。
【０１７８】
負荷検出部３２０から過負荷通知を受けると、過負荷制御部３３２は、カウンタ３３４の計測値を参照する。計測値があらかじめ定められた閾値以上であれば、過負荷制御部３３２は、通知された過負荷がパケット受信時の割込みに関連して発生したものとみなし、破棄フィルタテーブルに過負荷時用のフィルタルールを設定する。すなわち、過負荷制御部３３２は、フィルタルール設定部３４２を介して、破棄フィルタテーブルの内容を、全ての受信パケットが適合する特殊値に設定する。
【０１７９】
廃棄数計測部３３６は、破棄／通過決定部３５６が破棄を指示した回数を単位時間当たりの値として計測しており、得られた計測値を過負荷制御部３３２に出力する。過負荷制御部３３２は、この計測値があらかじめ定められた閾値以上である間は過負荷状態であるとして、破棄フィルタテーブルの内容の設定を維持する。ただし、破棄フィルタテーブルの内容を変更した場合には、過負荷制御部３３２は、変更後に破棄数計測部３３６によって計測された結果を用いる。
【０１８０】
過負荷制御部３３２は、破棄数計測部３３６の計測値があらかじめ定められた閾値未満であれば、破棄フィルタテーブルの内容を元の設定値（通常時のフィルタルール）に戻す。元の設定値は、過負荷制御部３３２が保存していてもよいし、受信パケットフィルタ３４０が保存していてもよい。
【０１８１】
図８は、複数のタスクについてのスケジュール優先度の例を示す説明図である。プロセッサ４上では、マルチタスクＯＳを用いることによって種々のソフトウェアがタスクとして動作している。それぞれのタスクにはスケジュール優先度がつけられており、マルチタスクＯＳは、起動可能なタスクのうち、スケジュール優先度の高いタスクから順に起動する。図８においては、タスクのスケジュール優先度が高いほど、小さい値が示されている。
【０１８２】
監視部３２４にアクセスするタスクのスケジュール優先度は、処理負荷量として計測の対象となるタスク群の優先度よりも低く設定しなければならない。一方、処理負荷量として計測の対象としないタスクの優先度よりは高く設定する必要がある。
【０１８３】
図８におけるデータ通信用アプリタスク、及び非通信データ処理アプリタスクは、リアルタイム性を必要としないタスクである。図８において、これらのタスクは、監視部３２４にアクセスするタスクよりもスケジュール優先度が低いので、処理負荷量として計測の対象にはされていない。このように、リアルタイム性が必要とされないタスクの処理を犠牲にすることによって、それ以外のタスクの処理が可能な場合には、たとえ全体としてはプロセッサの処理能力を最大限使用していても、パケット受信制御装置３００は、プロセッサが過負荷になったとは判定しない。
【０１８４】
以上のように、本実施形態のパケット受信制御装置は、パケットを受信したことによるプロセッサへの過負荷発生を簡易に検知し、フィルタルール情報を過負荷時用のものに速やかに切り替えることができる。また、過負荷時には全ての受信パケットを破棄することによって、直接的に処理負荷を最小に抑えることができる。一方、機器の動作において重要な受信パケットは、たとえその処理負荷が大きくとも、フィルタの対象からはずすことができる。
【０１８５】
また、フィルタでパケット破棄量が一定の閾値を下回ることを確認してから、過負荷時用のフィルタ設定を解除するので、過負荷が発生している状態においては過負荷時用のフィルタ設定を維持できる。
【０１８６】
また、タイムアウト値や監視タスクの起動周期を変更することによって、タイムアウト時間と監視タスクの起動周期との比を変更し、過負荷状態を検知する感度を調整することが可能になる。
【０１８７】
また、負荷検出部は、マルチタスクＯＳ上のタスクのうち、パケット受信及びリアルタイムアプリケーションタスクに対象を絞って、プロセッサの過負荷状態を検知することができる。
【０１８８】
なお、本実施形態においては、過負荷時には破棄フィルタテーブルに全てのパケットが適合するフィルタルールを設定することとしたが、受信パケットを分類して、受信頻度が大きいものだけが適合するようなフィルタルールを設定するようにしてもよい。
【０１８９】
また、本実施形態では、過負荷制御部３３２は、単位時間当たりのパケットの破棄数が減少したことを確認してから、破棄フィルタテーブルの設定を元に戻すこととしたが、これに代えて、一定時間後に破棄フィルタテーブルの設定を元に戻すようにしてもよい。
【０１９０】
（第４の実施形態）
図９は、本発明の第４の実施形態に係るパケット受信制御装置のブロック図である。図９のパケット受信制御装置４００は、負荷検出部３２０と、受信制御部としての受信通知部４７０とを備えている。パケット受信制御装置４００は、図１のパケット通信システムにおいて、パケット受信制御装置１００に代えて用いられる。受信通知部４７０は、受信通知停止制御部４７４と、カウンタ４７６とを備えている。負荷検出部３２０は、第３の実施形態において説明したものと同様であるので、その説明を省略する。
【０１９１】
カウンタ４７６は、第２の実施形態において説明した、受信関連のイベント信号ＥＶＲの単位時間当たりの発生回数をカウントし、カウント値を受信通知停止制御部４７４に出力する。
【０１９２】
受信通知停止制御部４７４は、受信関連のイベント信号ＥＶＲを受け取ると、プロセッサ４が停止されていなければ、基本的には、受信系通知信号ＩＮＴＲによってプロセッサ４に通知する処理を行う。受信系通知信号ＩＮＴＲは、プロセッサ４に対する割込み信号である。ここで、必要であれば、プロセッサ４から確認できるように、受信通知停止制御部４７４は、その通知の要因を記録する。通知を受けたプロセッサ４は割込み処理プログラムを起動し、割込み処理プログラムでは通知の要因を解析して、必要であれば通信部２から受信パケットのデータをメモリ８に転送させる。
【０１９３】
受信通知停止制御部４７４は、タイマカウンタ３２２から過負荷通知を受け取ると、カウンタ４７６のカウント値と所定の上限値とを比較する。カウント値が所定の上限値以上である場合には、受信通知停止制御部４７４は、受信系通知信号ＩＮＴＲによるプロセッサ４への通知を停止する。
【０１９４】
更に、受信通知停止制御部４７４は、タイマカウンタ３２２からの過負荷通知が停止すると、カウンタ４７６のカウント値と所定の下限値とを比較する。受信通知停止制御部４７４は、カウント値が所定の下限値未満であれば、受信系通知信号ＩＮＴＲによるプロセッサ４への通知の停止を解除し、カウント値が下限値以上であれば、通知の停止を維持する。このとき用いられる下限値は、過負荷通知を受け取ったときに比較される上限値と同じ値であってもよいし、違う値であってもよい。
【０１９５】
以上のように、本実施形態のパケット受信制御装置４００は、過負荷状態を簡易に検知し、受信パケットに関する通知を要因とする割込みの発生を禁止することにより、プロセッサの能力を過大な割込み処理と受信処理から保全することができる。特に、通信部からの受信エラーに関する通知による負荷からも、プロセッサ能力を保全することができる。
【０１９６】
また、過負荷状態においては、受信系通知信号ＩＮＴＲによるプロセッサ４への通知を停止する設定を維持でき、その後通知数が減少したことを確認してから、自動的に通常の状態、すなわち、通知を行う設定に戻すことができる。
【０１９７】
なお、本実施形態における受信通知停止制御部４７４は、イベント信号ＥＶＲの単位時間当たりの発生回数（カウンタ４７６のカウント値）があらかじめ定められた閾値未満であることを確認して通知停止の設定を解除するものであったが、これは、通知停止の状態になったときから一定時間後に設定を解除するものであってもよい。この場合には、過負荷遮断装置の過敏な反応を防止しつつ、自動的に通常の状態に復旧することができる。
【０１９８】
なお、受信通知部４７０が、プロセッサ４に対する受信系通知信号ＩＮＴＲを生成するものとして説明したが、これに代えて、通信部が受信系通知信号ＩＮＴＲを生成し、受信通知部が通信部を操作して、受信系通知信号ＩＮＴＲの発生を停止させるようにしてもよい。
【０１９９】
（第５の実施形態）
図１０は、本発明の第５の実施形態に係るパケット受信制御装置のブロック図である。図１０のパケット受信制御装置５００は、負荷検出部３２０と、受信制御部としての受信通知部５７０と、ウォッチドッグタイマ５８２と、タイマ値評価部５８４とを備えている。パケット受信制御装置５００は、図１のパケット通信システムにおいて、パケット受信制御装置１００に代えて用いられる。受信通知部５７０は、受信通知停止制御部５７４と、カウンタ４７６とを備えている。負荷検出部３２０は、第３の実施形態において説明したものと同様であるので、その説明を省略する。
【０２００】
ウォッチドッグタイマ５８２は、クロックをカウントしており、カウント値が一定値に達すると、プロセッサ４に対して初期化信号ＩＮＩＴを発生して停止する。この一定値はプロセッサ４から設定可能であってもよいし、固定値であってもよい。プロセッサ４は、初期化信号ＩＮＩＴを受けると、プロセッサ４自身及びシステムの初期化動作を行う。カウント値が一定値に達する前にプロセッサ４からのアクセスがあると、ウォッチドッグタイマ５８２は、クリアされ、再び初期値からクロックのカウントを開始する。
【０２０１】
プロセッサ４は、マルチタスクＯＳ上で周期的に起動するタスクにウォッチドッグタイマ５８２へのアクセスを行わせる。タスクの周期時間はウォッチドッグタイマ５８２がタイムアウトするより小さく設定される。このタスクは、「ウォッチドック監視タスク」として図８に図示されているものである。そのスケジュール優先度は、他のタスクよりは高いが、割込み処理（スケジュール対象のタスクではない）よりは低い。
【０２０２】
タイマ値評価部５８４は、ウォッチドッグタイマ５８２のカウント値を読み出し、ウォッチドッグタイマ５８２がタイムアウトするカウント値までの残値が所定の閾値以下であるか否かを評価する。閾値以下であれば、タイマ値評価部５８４は、受信通知停止制御部５７４に対して、割込み信号である受信系通知信号ＩＮＴＲによるプロセッサ４への通知を停止するように指示をする。受信通知停止制御部５７４は、この指示を受けると、受信系通知信号ＩＮＴＲによるプロセッサ４への通知を停止する。
【０２０３】
カウンタ４７６は、図９を参照して説明したものと同様であって、受信系通知信号ＩＮＴＲによる通知の停止の解除については、第４の実施形態と同様である。
【０２０４】
なお、タイマ値評価部５８４を備えず、その処理をプロセッサ４が行うようにしてもよい。この場合、プロセッサ４は、受信通知停止制御部５７４から受信系通知信号ＩＮＴＲを受けると、受信割込み処理プログラムを起動させ、このプログラムを実行することにより、タイマ値評価部５８４と同様の処理を行う。
【０２０５】
以上のように、本実施形態のパケット受信制御装置５００によると、パケットの受信に起因する割込みが、ウォッチドッグタイマによる正常な監視動作を阻害している場合には、パケットの受信に起因する受信系通知信号ＩＮＴＲの発生を差し止めることができる。これにより、割込み信号が頻繁に発生する場合に、プロセッサの処理能力に余裕がなくなり、ウォッチドッグタイマをクリアするタスクをプロセッサが行うことすらできなくなり、ウォッチドッグタイマが初期化信号を発生してしまう事態を回避することができる。
【０２０６】
（第６の実施形態）
図１１は、本発明の第６の実施形態に係るパケット受信制御装置のブロック図である。図１１のパケット受信制御装置６００は、負荷検出部６２０と、受信制御部６４０と、受信パケット転送部６６０と、パケット解析部６７０とを備えている。パケット受信制御装置６００は、図１のパケット通信システムにおいて、パケット受信制御装置１００に代えて用いられる。
【０２０７】
受信制御部６４０は、フィルタルール設定部６４２と、セション管理部６４４と、ヘッダ分類部６４６と、破棄フィルタテーブル格納部６５２と、破棄／通過決定部６５６とを備えている。受信パケット転送部６６０は、受信パケットバッファ６６２を備えている。パケット解析部６７０は、頻度計測部６７２と、パケット走査部６７４とを備えている。
【０２０８】
負荷検出部６２０は、プロセッサ４の負荷を検出して、その結果をフィルタルール設定部６４２に出力する。負荷検出部６２０は、プロセッサ４が過負荷状態であるか否かを検出するものであればよく、例えば、図２、図６、図７をそれぞれ参照して説明した負荷検出部２０，２２０，３２０等と同様のものである。
【０２０９】
受信パケット転送部６６０は、通信部２から受信パケットを受け取り、これの少なくとも一部を受信パケットバッファ６６２に蓄え、受信制御部６４０の破棄／通過決定部６５６から指示を受ける。受信パケット転送部６６０は、パケットを通過させるように指示された場合には、受信パケットをメモリ８に出力して格納させ、プロセッサ４に出力できるようにし、パケットを破棄するように指示された場合には、受信パケットバッファ６６２をクリアして受信パケットを出力しない。また、受信パケット転送部６６０は、受信パケットの少なくともヘッダを取り出して、ヘッダ分類部６４６に出力する。
【０２１０】
メモリ８は、受け取ったパケットを受信キューとして格納する。プロセッサ４は、メモリ８の受信キューから受信パケットを読み出す。
【０２１１】
ヘッダ分類部６４６は、受け取ったヘッダを解析して、宛先アドレスとプロトコル値とを取り出し、破棄／通過決定部６５６に出力する。破棄フィルタテーブル格納部６５２は、図２の破棄フィルタテーブル格納部５２と同様に、破棄フィルタテーブルを格納する。
【０２１２】
破棄／通過決定部６５６は、受け取った宛先アドレスとプロトコル値との組み合わせを、破棄フィルタテーブル格納部６５２に設定された組み合わせと比較する。破棄／通過決定部６５６は、設定された組み合わせの中に、受け取った組み合わせと一致するものがないと判断した場合には、パケットを通過させるように、受信パケット転送部６６０に対して指示し、一致するものがあると判断した場合には、パケットを破棄するように、受信パケット転送部６６０に対して指示する。
【０２１３】
セション管理部６４４は、プロセッサ４からの通知を受け、プロセッサ４が実行している１つ以上の通信アプリケーションが使用するパケットの種類と、その通信アプリケーションの識別子との組をセション管理表として保持する。また、セション管理部６４４は、通信アプリケーションが終了すると、その通信アプリケーションが通信に使用していたパケットの種類をセション管理表から削除する。また、セション管理部６４４は、通信アプリケーションによる通信セションが終了すると、その通信セションにおいて使用していたパケットの種類をセション管理表から削除する。更に、セション管理部６４４は、フィルタルール設定部６４２からの指示を受けると、通信アプリケーションが使用しているパケットの種類をフィルタルール設定部６４２に通知する。
【０２１４】
フィルタルール設定部６４２は、負荷検出部６２０から、プロセッサ４が過負荷状態であることを示す出力を受け取ると、所定のフィルタルールを破棄フィルタテーブル格納部６５２に格納させる。また、フィルタルール設定部６４２は、パケット解析部６７０の頻度計測部６７２から出力された頻度情報と、セション管理部６４４から出力された、通信アプリケーションが使用しているパケットの種類とに応じて、新たなフィルタルールを生成し、破棄フィルタテーブル格納部６５２に格納させる。
【０２１５】
頻度計測部６７２は、フィルタルール設定部６４２からの指示を受けると、メモリ８に格納された受信キュー内の受信パケットの宛先アドレスとプロトコル値との組を出力するように、パケット走査部６７４に指示する。更に頻度計測部６７２は、メモリ８に格納された受信キュー内の全ての受信パケットについて、宛先アドレスとプロトコル値との組をパケット走査部６７４から受け取ると、これらを分類して、受信パケットの種類毎の受信頻度を頻度情報としてフィルタルール設定部６４２に出力する。
【０２１６】
パケット走査部６７４は、頻度計測部６７２からの指示を受けると、メモリ８に格納された受信キュー内の受信パケットのヘッダを走査して解析し、宛先アドレスとプロトコル値とを取り出し、頻度計測部６７２に出力する。
【０２１７】
図１２は、図１１のパケット受信制御装置における動作の流れを示すフローチャートである。図１２を参照して、図１１のパケット受信制御装置の動作を説明する。
【０２１８】
ステップＳ１０では、負荷検出部６２０は、プロセッサ４が過負荷状態であるか否かを検出し、その結果を受信制御部６４０のフィルタルール設定部６４２に通知する。
【０２１９】
ステップＳ２０では、フィルタルール設定部６４２は、プロセッサ４が過負荷状態であるか否かを判定する。負荷検出部６２０から、プロセッサ４が過負荷状態であるとの通知を受けた場合には、ステップＳ３０に進む。プロセッサ４が過負荷状態ではないとの通知を受けた場合は、処理を終了する。
【０２２０】
図１３は、第１のフィルタルールセットを格納した破棄フィルタテーブルの一例を示す図である。ステップＳ３０では、フィルタルール設定部６４２は、過負荷状態用の第１のフィルタルールセットを生成し、これを第１のフィルタテーブルとして破棄フィルタテーブル格納部６５２に格納させる。ここでは、第１のフィルタルールセットとして、図１３のように、全てのパケットを破棄すべきであることを示すフィルタルールを用いることとする。
【０２２１】
ここで、破棄／通過決定部６５６の動作について説明する。破棄／通過決定部６５６は、図１３の破棄フィルタテーブルにおいて、負論理と記載された行の条件を全て満たさず、かつ、正論理と記載された行の条件のいずれかを満たすパケットについて、「一致する」と解釈し、このようなパケットを破棄するように指示する。図１３の場合、破棄／通過決定部６５６は全てのパケットを「一致する」と解釈するので、受信パケット転送部６６０に対して、全てのパケットを破棄するように指示する。
【０２２２】
ステップＳ４０では、フィルタルール設定部６４２は、頻度計測部６７２に対して、受信パケットの頻度情報を出力するよう指示する。頻度計測部６７２は、パケット走査部６７４に対して、各受信パケットについて宛先アドレスとプロトコルとの組を出力するよう指示する。パケット走査部６７４は、メモリ８の受信キューを走査し、格納されている全ての受信パケットについての宛先アドレスとプロトコルとの組を頻度計測部６７２に出力する。頻度計測部６７２は、パケット走査部６７４からの出力を分類し、得られた結果を頻度情報としてフィルタルール設定部６４２に出力する。頻度情報は、例えば図４のように得られる。
【０２２３】
ステップＳ５０は、破棄すべきパケットを決定するステップであって、破棄除外を決定するステップＳ５２と、破棄を決定するステップＳ５４とを有している。
【０２２４】
図１４は、セション管理表の一例を示す図である。ステップＳ５２では、フィルタルール設定部６４２は、セション管理部６４４に、通信アプリケーションが使用中のパケットの種類を出力するよう指示する。セション管理部６４４は指示を受けると、例えば図１４のようなセション管理表を出力する。プロセッサ４が２つの通信アプリケーションを実行しており、通信アプリケーションＡ１（識別子は１）がＩＰｖ４ユニキャストパケットを、通信アプリケーションＡ２（識別子は２）がＩＰｖ６ユニキャストパケットを使用していることを、図１４のセション管理表は示している。
【０２２５】
更に、フィルタルール設定部６４２は、所定のパケットの種類と、セション管理部６４４から出力されたパケットの種類を破棄フィルタルールの候補から取り除く。ここでは所定のパケットの種類の一例として、ＵＰｎＰ（ＩＰｖ４）マルチキャストパケットを候補から取り除く。また、フィルタルール設定部６４２は、セション管理部６４４から出力されたセション管理表に基づいて、ＩＰｖ４ユニキャストパケットとＩＰｖ６ユニキャストパケットとを、破棄フィルタルールの候補から取り除く。
【０２２６】
ステップＳ５４では、フィルタルール設定部６４２は、頻度計測部６７２から出力された頻度情報に基づき、受信頻度が所定の頻度を超えるパケットの種類を、破棄すべきパケットの種類として決定し、破棄フィルタルールを作成する。フィルタルール設定部６４２は、例えば、閾値を予め１０％に設定して、頻度が全体の１０％以上であるパケットの種類を破棄すべきパケットの種類として決定し、この種類のパケットを破棄するように破棄フィルタルールを作成する。この結果、フィルタルール設定部６４２は、ＵＰｎＰ（ＩＰｖ６）マルチキャスト、非ＩＰユニキャスト、及び汎用のマルチキャストのパケットを破棄すると決定し、そのための第２のフィルタルールセットを生成する。
【０２２７】
ステップＳ６０では、フィルタルール設定部６４２は、以上のようにして作成した第２のフィルタルールセットを、第１のフィルタルールセットに代えて、破棄フィルタテーブル格納部６５２に格納させる。
【０２２８】
図１５は、第２のフィルタルールセットを格納した破棄フィルタテーブルの一例を示す図である。破棄／通過決定部６５６は、図１５の破棄フィルタテーブルにおいて、負論理と記載された行の条件を全て満たさず、かつ、正論理と記載された行の条件のいずれかを満たすパケットについて、「一致する」と解釈し、このようなパケットを破棄するように指示する。
【０２２９】
次に、通信アプリケーションが通信を終了した場合の動作について説明する。通信アプリケーションが通信を終了すると、プロセッサ４は、セション管理部６４４に対して通信が終了したことを通知する。セション管理部６４４は、プロセッサ４からの通知を受けると、通知内容に基づき、セション管理表を更新すると共に、フィルタルール設定部６４２に対し、セション管理表を更新したことを通知する。一例として、通信アプリケーションＡ２が通信を終了した場合、図１４のセション管理表は、通信アプリケーションＡ１が使用しているＩＰｖ４ユニキャストのみに更新される。
【０２３０】
フィルタルール設定部６４２は、セション管理部６４４からの通知を受け取ると、図１２のステップＳ５２，Ｓ５４，Ｓ６０を順に実行する。以上を実行した結果、通信アプリケーションＡ２が通信を終了する前の破棄フィルタルールに加えて、新たにＩＰｖ６ユニキャストパケットも破棄すべきパケットの種類であると定め、これを破棄するようフィルタルールを設定する。この結果、破棄フィルタテーブルには、ＩＰｖ６ユニキャスト、ＵＰｎＰ（ＩＰｖ６）マルチキャスト、非ＩＰユニキャスト、及び汎用のマルチキャストのパケットを破棄するようにフィルタルールが格納される。
【０２３１】
このように、通信アプリケーションが通信を終了すると、パケット受信制御装置６００は、その通信に用いていたパケットの種類を破棄するように破棄フィルタルールを設定する。
【０２３２】
以上のように、図１１のパケット受信制御装置６００は、負荷検出部６２０がプロセッサ４の過負荷を検出すると、まず全ての種類のパケットを破棄すべきであることを示す第１のフィルタルールセットを設定し、次に受信キューに格納された受信パケットを解析して過負荷の原因となるパケットの種類を特定し、この種類のパケットを破棄すべきであることを示す第２のフィルタルールセットを、第１のフィルタルールセットに代えて設定する。これにより、プロセッサの過負荷を引き起こした種類のパケットを破棄しつつ、正常に受信しているパケットを引き続き受信し続けることが可能となる。
【０２３３】
また通信アプリケーションが通信を終了すると、パケット受信制御装置６００は、その通信に用いていた種類のパケットを破棄すべきであることを示すフィルタルールを設定する。これにより、通信の終了に伴い、受信が不要となった種類のパケットを破棄することが可能となる。
【０２３４】
また、受信頻度が所定の値を超えている種類のパケットを破棄するので、効果的にプロセッサ４の負荷を低減することができる。
【０２３５】
また、プロセッサ４が実行している通信アプリケーションが使用中のパケットの種類は、その処理負荷が大きい場合であっても、破棄すべきパケットを示すフィルタルールの対象からはずすことができる。
【０２３６】
図１６は、図１１のパケット受信制御装置における動作の流れの他の例を示すフローチャートである。図１６のステップＳ２４０，Ｓ２５０は、図１１のステップＳ４０，Ｓ５０の代わりにそれぞれ実行される。
【０２３７】
図１６のステップＳ２４２では、フィルタルール設定部６４２は、負荷監視部６２０からプロセッサ４が過負荷状態であると通知された場合、前回の過負荷の通知から所定の時間以内であるか、所定の時間を越えているのかを判定する。所定の時間以内であった場合はステップＳ２４４へ進み、所定の時間を越えていた場合はステップＳ２４６へ進む。
【０２３８】
ステップＳ２４４では、フィルタルール設定部６４２は、新たな頻度情報を出力するように指示せずに、頻度計測部６７２が前回出力した頻度情報を最新の頻度情報であるとみなす。頻度計測部６７２が例えば図４のような頻度情報を前回出力した場合には、フィルタルール設定部６４２は、再び図４に示す頻度情報を用いる。その後、ステップＳ５２へ進む。
【０２３９】
ステップＳ２４６では、フィルタルール設定部６４２は、頻度計測部６７２に対して、最新の頻度情報を通知するように指示する。頻度計測部６７２は、フィルタルール設定部６４２からの指示を受けると、パケット走査部６７４に各受信パケットの宛先アドレスとプロトコルの組を出力するように指示する。パケット走査部６７４は、頻度計測部６７２からの指示を受けると、メモリ８に格納されている受信キューの全ての受信パケットを走査し、各受信パケットについて、宛先アドレスとプロトコルの組を順に求めて頻度計測部６７２に出力する。
【０２４０】
頻度計測部６７２は、パケット走査部６７４からの出力を分類し、頻度情報として格納する。頻度計測部６７２は、全ての受信パケットからの頻度情報が求められると、これをフィルタルール設定部６４２へ出力する。またフィルタルール設定部６４２は、頻度情報を受け取ると、これを保持するとともに、フラグを立てる。このフラグは、所定の時間以内に再びプロセッサ４の過負荷が検出されたことを示すフラグである。その後、ステップＳ５２へ進む。
【０２４１】
ステップＳ５２は、図１２を参照して説明したものと同じなので、説明を省略する。ステップＳ２５４は、図１２のステップＳ５４の代わりに実行される。
【０２４２】
ステップＳ２５５では、フィルタルール設定部６４２は、前回の過負荷の通知から所定の時間以内であるか否かを判断する。すなわち、フラグがセットされているか否かを確認する。フラグがセットされている場合にはステップＳ２５６へ進み、フラグがセットされていない場合にはステップＳ２５７へ進む。
【０２４３】
ステップＳ２５６では、フィルタルール設定部６４２は、より多くの種類のパケットを破棄するように、頻度情報に基づいて、破棄するパケットの種類を選択する際の基準である頻度の閾値を引き下げる。一例として、頻度の閾値を１０％から５％に引き下げる。
【０２４４】
ステップＳ２５７では、フィルタルール設定部６４２は、破棄すべきパケットの種類を決定する。すなわち、頻度情報に基づいて、所定の頻度を超える種類のパケットを破棄するように、フィルタルールを生成する。ステップＳ２５６において閾値を５％に引き下げた場合、ＵＰｎＰ（ＩＰｖ４）マルチキャスト、ＵＰｎＰ（ＩＰｖ６）マルチキャスト、非ＩＰユニキャストに加え、新たにブロードキャストパケットも破棄するように決定し、これらを破棄するフィルタルールを生成する。
【０２４５】
以上のように、フィルタルール設定部６４２は、所定の時間以内に再びプロセッサが過負荷状態となった場合には、頻度の閾値を引き下げて、より多くの種類のパケットを破棄するようにフィルタルールを生成する。
【０２４６】
このように、図１６の処理によると、プロセッサ４が過負荷状態であることが続く場合には、プロセッサ４の負荷を軽くするようにフィルタテーブルを設定することができる。
【０２４７】
（第７の実施形態）
図１７は、本発明の第７の実施形態に係るパケット受信制御装置のブロック図である。図１７のパケット受信制御装置７００は、図１１のパケット受信制御装置６００において、受信制御部６４０に代えて受信制御部７４０を備えたものである。受信制御部７４０は、図１１の受信制御部６４０において、フィルタルール設定部６４２に代えてフィルタルール設定部７４２を備え、更に学習結果格納部７４８を備えたものである。その他の点については、図１１のパケット受信制御装置と同様であるので、詳細な説明は省略する。パケット受信制御装置７００は、図１のパケット通信システムにおいて、パケット受信制御装置１００に代えて用いられる。
【０２４８】
学習結果格納部７４８は、タイマを有している。タイマは、過負荷状態が検出されたことを示す通知をフィルタルール設定部７４２から受け取る毎に、タイマ値を出力し、タイマ値が０にクリアされる。
【０２４９】
図１８は、図１７のパケット受信制御装置における動作の流れの一部分を示すフローチャートである。図１９は、図１７のパケット受信制御装置における動作の流れの図１８に続く部分を示すフローチャートである。図１８及び図１９のフローチャートは、図１２のフローチャートにおいて、ステップＳ２２，Ｓ３７０を更に備え、ステップＳ４０，Ｓ５０に代えてステップＳ２４０，Ｓ３５０をそれぞれ備えたものである。ステップＳ１０，Ｓ３０，Ｓ６０は、図１２を参照して説明したものと同様であるので、これらについての説明は省略する。
【０２５０】
図１８のステップＳ２０において、負荷検出部６２０から、プロセッサ４が過負荷状態であることを通知された場合には、ステップＳ３７２に進み、通知されない場合にはステップＳ２２に進む。
【０２５１】
ステップＳ３７２では、学習結果格納部７４８は、前回、過負荷状態であることを通知されてからの時間が、所定の時間以内であるか否かを判断する。具体的には、学習結果格納部７４８は、閾値を格納しており、タイマ値をこの閾値と比較する。学習結果格納部７４８は、タイマ値が閾値よりも小さい場合には、ステップＳ３７４において、閾値を下げ、タイマ値が閾値と同じ又は閾値よりも大きい場合には、閾値を変更しない（ステップＳ３７５）。すなわち、所定の時間以内に再び過負荷状態が検出されると、より多くのパケットを破棄するように閾値を設定する。
【０２５２】
ステップＳ２２では、学習結果格納部７４８は、フィルタルール設定部７４２からの通知に基づいて、プロセッサ４が過負荷ではない状態が一定期間連続しているか否かを判断する。一定期間連続している場合にはステップＳ３７８に進み、一定期間連続していない場合には処理を終了する。ステップＳ３７８では、学習結果格納部７４８は、閾値を上げる。すなわち、過負荷ではない状態が一定期間連続している場合には、破棄対象となるパケットの種類を少なくする。ステップＳ３７６では、学習結果格納部７４８は、格納する閾値を新たな閾値に更新する。
【０２５３】
図１９のステップＳ２４０は、図１６を参照して説明したものと同様である。なお、ステップＳ２２で判定の際に用いられる一定期間は、ステップＳ２４２で判定の際に用いられる所定の時間よりも短くなければならない。その結果、以前に求められた頻度情報を再び用いて、破棄対象とするパケットの割合を変更することができる。
【０２５４】
ステップＳ３５１では、フィルタルール設定部７４２は、学習結果格納部７４８から閾値を受け取る。この閾値は、図１８を参照して説明したように、過負荷状態の検出間隔に基づいて、学習結果格納部７４８が学習して得た値である。学習結果格納部７４８は、例えば１０％という値を閾値として出力するものとする。
【０２５５】
ステップＳ３５２，Ｓ３５４における処理は、フィルタルール設定部７４２が、予め設定された閾値ではなく、学習結果格納部７４８から受け取った閾値を用いる点の他は、図１２のステップＳ５２，Ｓ５４とほぼ同様であるので、説明を省略する。
【０２５６】
以上のように、フィルタルール設定部７４２は、学習結果格納部７４８によって更新された閾値に基づいて破棄フィルタテーブルを設定するので、図１７のパケット受信制御装置７００によると、プロセッサ４の負荷の度合いやユーザの使用条件に応じて、適切な割合のパケットを破棄することができる。
【０２５７】
（第８の実施形態）
図２０は、本発明の第８の実施形態に係るパケット受信制御装置のブロック図である。図２０のパケット受信制御装置８００は、図１１のパケット受信制御装置６００において、受信制御部６４０及び受信パケット転送部６６０に代えて受信制御部８４０及び受信パケット転送部８６０をそれぞれ備え、キュー管理部８８２を更に備えたものである。受信制御部８４０は、図１１の受信制御部６４０において、フィルタルール設定部６４２に代えてフィルタルール設定部８４２を備えたものである。その他の点については、図１１のパケット受信制御装置と同様であるので、詳細な説明は省略する。パケット受信制御装置８００は、図１のパケット通信システムにおいて、パケット受信制御装置１００に代えて用いられる。
【０２５８】
キュー管理部８８２は、メモリ８内に受信キューとして格納可能な受信パケットの数と、格納されている受信パケットの数とを、キュー管理表として保持している。受信パケット転送部８６０は、受信パケットバッファ８６２を備えている。受信パケット転送部８６０は、受信パケットをメモリ８の受信キューに転送した場合には、キュー管理表に記録されている受信キュー内の受信パケットの数を更新する。また、プロセッサ４は、受信キューから受信パケットを取り出した場合には、キュー管理表に記録されている受信キュー内の受信パケットの数を更新する。
【０２５９】
図２１は、図２０のパケット受信制御装置における動作の流れを示すフローチャートである。図２１のフローチャートは、図１２のフローチャートにおいて、ステップＳ４７２，Ｓ４７４を更に備えたものである。その他のステップについては、図１２を参照して説明したものと同様であるので、詳細な説明は省略する。
【０２６０】
負荷検出部６２０から、プロセッサ４が過負荷状態であるとの通知を受けると、フィルタルール設定部８４２は、ステップＳ４７２の処理を行う。ステップＳ４７２では、フィルタルール設定部８４２は、キュー管理部８８２が保持する、メモリ８に受信キューとして格納可能な受信パケットの数を増加させる。
【０２６１】
ステップＳ４７４では、キュー管理部８８２は、キュー管理表を参照し、格納可能な受信パケットの数と受信キュー内の受信パケットの数とに基づいて、受信キューが受信パケットで一杯になっているか否かを判断する。
【０２６２】
受信キューが受信パケットで一杯になっている場合には、キュー管理部８８２は、このことをフィルタルール設定部８４２に通知し、受信パケットを破棄させてステップＳ３０に進む。
【０２６３】
受信キューが受信パケットで一杯になっていない場合には、キュー管理部８８２は、受信パケットをメモリ８内の受信キューに格納させ、キュー管理表に記録されている受信キュー内の受信パケットの数を更新する。その後、再びステップＳ４７４の処理を行う。
【０２６４】
このように、ステップＳ４７２、Ｓ４７４の処理によって、受信キュー内の受信パケット数が増加しているので、パケット解析部６７０は、より正確な頻度情報を出力することができる。この結果、フィルタルール設定部８４２は、破棄すべきパケットの種類をより正確に求めることが可能となる。
【０２６５】
（第９の実施形態）
図２２は、本発明の第９の実施形態に係るパケット受信制御装置のブロック図である。図２２のパケット受信制御装置９００は、図１１のパケット受信制御装置６００において、受信パケット転送部６６０及びパケット解析部６７０に代えて受信パケット転送部９６０及びパケット解析部９７０をそれぞれ備えたものである。パケット解析部９７０は、図１１のパケット解析部６７０において、パケット走査部６７４に代えてパケット走査部９７４を備えたものである。その他の点については、図１１のパケット受信制御装置と同様であるので、詳細な説明は省略する。パケット受信制御装置９００は、図１のパケット通信システムにおいて、パケット受信制御装置１００に代えて用いられる。メモリ８には、受信キューに加え、ヘッダ情報テーブルが格納されている。
【０２６６】
受信パケット転送部９６０は、通信部２より受信パケットを受け取ると、受信制御部６４０の指示に従って、このパケットをメモリ８の受信キューに転送する。また、受信パケット転送部９６０は、受信パケットのヘッダ情報をコピーし、これをメモリ８内にヘッダ情報テーブルとして格納する。ヘッダ情報テーブルは、一例としてキューの構造を持ち、格納されたヘッダ情報を先頭から順に参照することが可能である。ヘッダ情報テーブルは、メモリ８に格納されたことがある受信パケット（メモリ８内の受信パケットだけではなく）のヘッダ情報を有している。
【０２６７】
パケット解析部９７０のパケット走査部９７４は、頻度計測部６７２からの指示があると、受信キューではなく、メモリ８内のヘッダ情報テーブルのヘッダ情報を順に走査し、格納されている全ての宛先アドレスとプロトコルとの組を頻度計測部６７２に出力する。頻度計測部６７２は、パケット走査部９７４からの出力を分類し、得られた頻度情報をフィルタルール設定部６４２に出力する。
【０２６８】
このように、パケット解析部９７０は、ヘッダ情報テーブルに保持されたヘッダ情報から頻度情報を求めるので、情報を格納するために必要な１パケット当たりの容量が小さくて済み、受信キューの受信パケットから頻度情報を求める場合よりも多くの受信パケットに基づいて頻度情報を求めることが可能となる。これにより、フィルタルール設定部６４２は、破棄すべきパケットの種類をより正確に求めることが可能となる。
【０２６９】
なお、以上の実施形態において、パケット解析部６７０は、例えば、プロセッサ４がプログラムを実行することによって実現される。また、これには限らず、他のプロセッサがプログラムを実行することによってパケット解析部６７０を実現するようにしてもよい。
【０２７０】
また、フィルタルール設定部は、頻度計測部６７２から出力された頻度情報に基づき、受信パケットの種類のうち、受信頻度が大きい物から順に所定の数の種類を選択し、破棄すべきパケットの種類として決定してもよい。
【０２７１】
また、以上の実施形態では、受信パケットフィルタは、ＭＡＣフレームの宛先アドレスとプロトコルの部分のみを参照しているが、受信パケットの他の部分を参照してフィルタ動作を行うようにしてもよい。例えば、高位レイヤのＩＰヘッダ、ＴＣＰ／ＵＤＰヘッダなどを参照してフィルタ動作を行うことにより、より細かく破棄対象の受信パケットを選択することができる。
【０２７２】
また、本明細書において、単位時間は、あらかじめ定められた一定の長さの時間であって、どのような長さの時間であってもよい。
【０２７３】
また、本発明の実施形態の各々は、それぞれ本発明の一例に過ぎず、本発明のパケット受信制御装置の構成はこれらには限られない。
【０２７４】
また、本発明のパケット受信制御装置を、パケットフィルタ装置や半導体集積回路、ネットワークプロセッサを構成する要素として用いることも可能である。
【産業上の利用可能性】
【０２７５】
以上説明したように、本発明のパケット受信制御装置は、受信パケットによるプロセッサ等の負荷を適切に判断して、過負荷になればその負荷を適切に遮断することができる。このため、ネットワークに接続され、通信処理を行いつつ、リアルタイムの処理を行う機器に有用である。
【図面の簡単な説明】
【０２７６】
【図１】本発明の第１の実施形態に係るパケット通信システムのブロック図である。
【図２】図１のパケット受信制御装置の構成を示すブロック図である。
【図３】図１のパケット通信システムが受信するパケットのフォーマットを示す説明図である。
【図４】統計テーブルの一例を示す図である。
【図５】破棄フィルタテーブルの一例を示す図である。
【図６】本発明の第２の実施形態に係るパケット受信制御装置のブロック図である。
【図７】本発明の第３の実施形態に係るパケット受信制御装置のブロック図である。
【図８】複数のタスクについてのスケジュール優先度の例を示す説明図である。
【図９】本発明の第４の実施形態に係るパケット受信制御装置のブロック図である。
【図１０】本発明の第５の実施形態に係るパケット受信制御装置のブロック図である。
【図１１】本発明の第６の実施形態に係るパケット受信制御装置のブロック図である。
【図１２】図１１のパケット受信制御装置における動作の流れを示すフローチャートである。
【図１３】第１のフィルタルールセットを格納した破棄フィルタテーブルの一例を示す図である。
【図１４】セション管理表の一例を示す図である。
【図１５】第２のフィルタルールセットを格納した破棄フィルタテーブルの一例を示す図である。
【図１６】図１１のパケット受信制御装置における動作の流れの他の例を示すフローチャートである。
【図１７】本発明の第７の実施形態に係るパケット受信制御装置のブロック図である。
【図１８】図１７のパケット受信制御装置における動作の流れの一部分を示すフローチャートである。
【図１９】図１７のパケット受信制御装置における動作の流れの図１８に続く部分を示すフローチャートである。
【図２０】本発明の第８の実施形態に係るパケット受信制御装置のブロック図である。
【図２１】図２０のパケット受信制御装置における動作の流れを示すフローチャートである。
【図２２】本発明の第９の実施形態に係るパケット受信制御装置のブロック図である。
【図２３】従来のネットワーク組込み用システムのブロック図である。
【符号の説明】
【０２７７】
２  通信部
４  プロセッサ
８  メモリ
１０  半導体集積回路
２０，２２０，３２０，６２０  負荷検出部
４０，３４０  受信パケットフィルタ（受信制御部）
４４，３４４  統計取得部
５８，３３６  破棄数計測部
６０，３６０，６６０，８６０，９６０  受信パケット転送部
１００，２００，３００，４００，５００，６００，７００，８００，９００  パケット受信制御装置
２７０，４７０，５７０  受信通知部（受信制御部）
３３０  過負荷対策部
５８２  ウォッチドッグタイマ
６４０，７４０，８４０  受信制御部
６７０，９７０  パケット解析部
【図１】
2006121667.tif 000003
【図２】
2006121667.tif 000004
【図３】
2006121667.tif 000005
【図４】
2006121667.tif 000006
【図５】
2006121667.tif 000007
【図６】
2006121667.tif 000008
【図７】
2006121667.tif 000009
【図８】
2006121667.tif 000010
【図９】
2006121667.tif 000011
【図１０】
2006121667.tif 000012
【図１１】
2006121667.tif 000013
【図１２】
2006121667.tif 000014
【図１３】
2006121667.tif 000015
【図１４】
2006121667.tif 000016
【図１５】
2006121667.tif 000017
【図１６】
2006121667.tif 000018
【図１７】
2006121667.tif 000019
【図１８】
2006121667.tif 000020
【図１９】
2006121667.tif 000021
【図２０】
2006121667.tif 000022
【図２１】
2006121667.tif 000023
【図２２】
2006121667.tif 000024
【図２３】
2006121667.tif 000025