(57)【要約】【課題】ハードウェアで実装可能な回路規模で、パケットバッファ輻輳状態からの効率的な復旧方法を実現するパケット受信装置、パケットバッファの輻輳状態復旧方法及びプログラムを提供すること。【解決手段】本発明は、フレームが分割されたフラグメントパケットが格納されるバッファエリアを有するパケットバッファと、パケットバッファの輻輳状態を検出する検出部と、パケットバッファの輻輳状態が検出されると、パケットバッファのバッファエリアのうち、フラグメントパケットの格納頻度の低いバッファエリアを判定する判定部と、格納頻度の低いバッファエリアを解放するバッファエリア解放部とを有するパケット受信装置である。【選択図】図１
2011035484.tif 000002
【特許請求の範囲】
【請求項１】
フレームが分割されたフラグメントパケットが格納されるバッファエリアを有するパケットバッファと、
前記パケットバッファの輻輳状態を検出する検出部と、
前記パケットバッファの輻輳状態が検出されると、前記パケットバッファのバッファエリアのうち、前記フラグメントパケットの格納頻度の低いバッファエリアを判定する判定部と、
前記格納頻度の低いバッファエリアを解放するバッファエリア解放部と
を有するパケット受信装置。
【請求項２】
前記判定部は、バッファエリアがデフラグメント処理中における、フラグメントパケットの格納頻度の低いバッファエリアを判定する
請求項１に記載のパケット受信装置。
【請求項３】
前記判定部は、
各バッファエリアに対応して設けられ、対応するバッファエリアがデフラグメント処理中に前記パケットバッファが受信したフラグメントパケット数をカウントするデータ受信カウンタと、
各バッファエリアに対応して設けられ、対応するバッファエリアがデフラグメント処理中にそのバッファエリアが格納したフラグメントパケット数をカウントするエリア格納カウンタと、
前記データ受信カウンタ及びエリア格納カウンタに対応して設けられ、前記デフラグメント処理中に前記パケットバッファが受信したフラグメントパケット数に対する前記デフラグメント処理中にバッファエリアが格納したフラグメントパケット数の割合である有効パケット比率を計算する有効パケット比率計算器と
前記計算された有効パケット比率のうち、最も有効パケット比率が低い有効パケット比率演算器に対応するバッファエリアを、フラグメントパケットの格納頻度の低いバッファエリアを判定する比較器と
を有する請求項２に記載のパケット受信装置。
【請求項４】
前記有効パケット比率計算器及び比較器をパケット受信装置の外部に設ける
請求項３に記載のパケット受信装置。
【請求項５】
フレームが分割されたフラグメントパケットが格納されるバッファエリアを有するパケットバッファの輻輳状態を検出し、
前記パケットバッファの輻輳状態が検出されると、前記パケットバッファのバッファエリアのうち、前記フラグメントパケットの格納頻度の低いバッファエリアを判定し、
前記格納頻度の低いバッファエリアを解放する
パケットバッファの輻輳状態復旧方法。
【請求項６】
バッファエリアがデフラグメント処理中における、フラグメントパケットの格納頻度の低いバッファエリアを判定する
請求項５に記載のパケットバッファの輻輳状態復旧方法。
【請求項７】
各バッファエリアがデフラグメント処理中に前記パケットバッファが受信したフラグメントパケット数をカウントし、
各バッファエリアがデフラグメント処理中にそのバッファエリアが格納したフラグメントパケット数をカウントし、
前記デフラグメント処理中に前記パケットバッファが受信したフラグメントパケット数に対する前記デフラグメント処理中にバッファエリアが格納したフラグメントパケット数の割合である有効パケット比率を、バッファエリア毎に計算し、
前記計算された有効パケット比率のうち、最も有効パケット比率が低い有効パケット比率演算器に対応するバッファエリアを、フラグメントパケットの格納頻度の低いバッファエリアを判定する
請求項６に記載のパケットバッファの輻輳状態復旧方法。
【請求項８】
各バッファエリアがデフラグメント処理中に前記パケットバッファが受信したフラグメントパケット数と、各バッファエリアがデフラグメント処理中にそのバッファエリアが格納したフラグメントパケット数とを受信する処理と、
前記デフラグメント処理中に前記パケットバッファが受信したフラグメントパケット数に対する前記デフラグメント処理中にバッファエリアが格納したフラグメントパケット数の割合である有効パケット比率を、バッファエリア毎に計算する処理と、
前記計算された有効パケット比率のうち、最も有効パケット比率が低い有効パケット比率演算器に対応するバッファエリアを、フラグメントパケットの格納頻度の低いバッファエリアを判定する処理と
を情報処理装置に実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット受信装置、パケットバッファの輻輳状態復旧方法及びプログラムに関する。
【背景技術】
【０００２】
パケット受信装置は、フレームが分割されたフラグメントパケットを受信、それらに対してデフラグメント処理を行う場合、装置内部にパケットバッファを実装して受信したフラグメントパケットを溜め込む必要がある。
【０００３】
デフラグメント処理は、１つのフレームを分割した複数のフラグメントパケット全てを、１つのパケットバッファへ溜め込み、元のフレームへと結合を行う処理である。複数フレームを分割したフラグメントパケットを混在して同時に受信する場合、複数のデフラグメント処理を同時に実施する必要がある為、同時に実施するデフラグメント処理分のパケットバッファが必要となる。
【０００４】
しかし、実装できるパケットバッファ数は有限の為、同時に実施するデフラグメント処理数が、実装するパケットバッファ数より多くなった場合、パケットバッファが不足する輻輳状態となる。
【０００５】
そこで、輻輳状態を回避する為に、パケット通信プロトコルに優先制御方式が実装される場合もあるが、同じ優先順位のパケットを大量に受信した場合にはパケットバッファの輻輳状態が発生する可能性がある為、パケットバッファ自身に輻輳状態から復旧する為の方法を組み込む必要がある。
【０００６】
輻輳状態から復旧する方法として、例えば、特許文献１に記載されているように、パケットバッファ毎にデフラグメント処理を開始してからの経過時間をタイマーで測定し、一定時間内にデフラグメント処理が完了しない場合、デフラグメントを中断して強制的にパケットバッファをクリアすることで、輻輳状態を回避する方法が取られていた。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００７−３００５７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、タイマーをハードウェアで実現すると、クリアするまでの経過時間とパケットバッファ数に比例して回路規模が増加するという課題があった。また、タイマーをソフトウェアで実現する場合は、ソフトウェアで周期的にパケットバッファの状態を監視する必要があるため、パケットバッファ数に比例してソフトウェア処理が増加するという課題があった。
【０００９】
例えばInternet Protocol(RFC791)ではＩＰパケットデフラグメント時のタイマー規定値として最小１５秒から最大２５５秒を推奨しており、ハードウェアで実装するには回路規模が大きかった。また、ソフトウェアで時間を計測する場合は、常時タイマー値を監視する必要があり、ソフトウェアの処理能力を低下させるという課題があった。
【００１０】
また、回路規模削減の為に輻輳回避方法の論理を簡単にする場合は、パケットバッファの輻輳が発生した時点で、デフラグメント開始からの経過時間が最も長いバッファエリアを解放する手段が取られてきた。
【００１１】
しかし、経過時間のみで判断すると、データ受信頻度が高くても解放されてしまう可能性があり、データ重要性を判断する精度が低いという課題もあった。
【００１２】
そこで、本発明は上記課題に鑑みて発明されたものであって、その目的はハードウェアで実装可能な回路規模で、パケットバッファ輻輳状態からの効率的な復旧方法を実現するパケット受信装置、パケットバッファの輻輳状態復旧方法及びプログラムを提供することにある。
【課題を解決するための手段】
【００１３】
本発明は、フレームが分割されたフラグメントパケットが格納されるバッファエリアを有するパケットバッファと、前記パケットバッファの輻輳状態を検出する検出部と、前記パケットバッファの輻輳状態が検出されると、前記パケットバッファのバッファエリアのうち、前記フラグメントパケットの格納頻度の低いバッファエリアを判定する判定部と、前記格納頻度の低いバッファエリアを解放するバッファエリア解放部とを有するパケット受信装置である。
【００１４】
また、本発明は、フレームが分割されたフラグメントパケットが格納されるバッファエリアを有するパケットバッファの輻輳状態を検出し、前記パケットバッファの輻輳状態が検出されると、前記パケットバッファのバッファエリアのうち、前記フラグメントパケットの格納頻度の低いバッファエリアを判定し、前記格納頻度の低いバッファエリアを解放するパケットバッファの輻輳状態復旧方法である。
【００１５】
また、本発明は、各バッファエリアがデフラグメント処理中に前記パケットバッファが受信したフラグメントパケット数と、各バッファエリアがデフラグメント処理中にそのバッファエリアが格納したフラグメントパケット数とを受信する処理と、前記デフラグメント処理中に前記パケットバッファが受信したフラグメントパケット数に対する前記デフラグメント処理中にバッファエリアが格納したフラグメントパケット数の割合である有効パケット比率を、バッファエリア毎に計算する処理と、前記計算された有効パケット比率のうち、最も有効パケット比率が低い有効パケット比率演算器に対応するバッファエリアを、フラグメントパケットの格納頻度の低いバッファエリアを判定する処理とを情報処理装置に実行させるプログラムである。
【発明の効果】
【００１６】
本発明によれば、ハードウェアで実装可能な回路規模で、パケットバッファ輻輳状態からの効率的な復旧方法が提供できる。
【図面の簡単な説明】
【００１７】
【図１】図１は第１の実施の形態のブロック図である。
【図２】図２はデータ受信カウンタ３及び比率演算回路４の動作を説明するための図である。
【図３】図３は第１の実施の形態における動作のフローチャートである。
【図４】図４は実施例１における有効パケット比率演算の具体的な動作を説明するための図である。
【図５】図５は第２の実施の形態のブロック図である。
【発明を実施するための形態】
【００１８】
＜第１の実施の形態＞
第１の実施の形態を説明する。
【００１９】
図１は第１の実施の形態のブロック図である。
【００２０】
図１を参照すると、第１の実施の形態のパケット受信装置は、バッファ管理回路１と、パケットバッファ２と、データ受信カウンタ３と、比率演算回路４とから構成されている。
【００２１】
尚、以下の説明において、パケット受信装置が受信する、１つのフレームの先頭、中間、最終データとなるフラグメントパケットをそれぞれ、フラグメント先頭パケット、フラグメント中間パケット、フラグメント最終パケットと呼ぶ。
【００２２】
バッファ管理回路１は、フラグメント先頭パケットを受信すると、パケットバッファ２内部のバッファエリアＡ１〜ＡＮから空いているエリアを探し、空いているバッファエリアがあればデフラグメント処理を行う為に確保して、受信したフラグメント先頭パケットをパケットバッファ２へ渡す。フラグメント中間パケット及びフラグメント最終パケットを受信した場合は、同じフレームを構成するフラグメント先頭パケットを格納したバッファエリアへと格納するように指定する。フラグメント先頭パケットを受信した際に、バッファエリアＡ１〜ＡＮの全てが他のデフラグメント処理用に確保されて空きが無い場合は、フラグメント先頭パケットを保持したまま比率演算回路４に輻輳通知Ｎ１を出力する。
【００２３】
パケットバッファ２は、バッファ管理回路１からフラグメントパケットを受信すると、指定されたバッファエリアへ格納する。バッファエリアにフラグメント先頭パケットからフラグメント最終パケットまでの、フレームを構成する全てのフラグメントパケットを格納すると、各フラグメントパケットを１つのフレームに結合するデフラグメント処理を行う。デフラグメント処理が完了すると、結合したフレームを送出してバッファエリアを空き状態にし、対応するエリアカウンタをクリアする。
【００２４】
また、パケットバッファ２は、フラグメントパケットをバッファエリアに格納した際に、データ受信カウンタ３へパケット受信通知Ｒ０を出力する。それに加え、フラグメントパケットを格納したバッファエリアＡ１〜ＡＮからは、バッファエリア格納通知Ｒ１〜ＲＮをデータ受信カウンタ３へ出力する。すなわち、パケットバッファ２は、バッファエリアへフラグメントパケットを格納すると、パケットを受信したことを示すパケット受信通知Ｒ０と、格納したバッファエリアを示すバッファエリア格納通知Ｒ１〜ＲＮとの、２種類の通知を出力する。
【００２５】
更に、パケットバッファ２は、バッファエリアクリア回路２１を有する。このバッファエリアクリア回路２１は、後述する低優先エリア通知Ｎ２を受信すると、低優先エリア通知Ｎ２で指定されたバッファエリアを、新たにデフラグメント処理を行う為に強制的に空き状態にする。
【００２６】
データ受信カウンタ３は、パケットバッファ２のバッファエリアＡ１〜ＡＮに対応するエリアカウンタＢ１〜ＢＮを有する。このエリアカウンタＢ１〜ＢＮは、パケットバッファ２から受信するパケット受信通知Ｒ０、及び各バッファエリアＡ１〜ＡＮから受信するバッファエリア格納通知Ｒ１〜ＲＮの発生回数をカウントし、カウントした値はエリアカウンタ情報Ｊ１〜ＪＮとしてバッファエリア毎に比率演算回路４に通知する。
【００２７】
比率演算回路４は、データ受信カウンタ３が出力するエリアカウンタ情報Ｊ１〜ＪＮを受け取り、その値からパケットバッファ２が受信したパケット数に対して、バッファエリアＡ１〜ＡＮがそれぞれ格納したパケット数の比率（以下、有効パケット比率）を求め、最も有効パケット比率が低いバッファエリアを低優先エリアと判断する。比率演算回路４はバッファ管理回路１から輻輳通知Ｎ１を受け取ると、低優先エリア通知Ｎ２によってパケットバッファ２に低優先エリアを通知する。
【００２８】
次に、データ受信カウンタ３及び比率演算回路４の動作について詳細を説明する。
【００２９】
図２はデータ受信カウンタ３及び比率演算回路４の動作を説明するための図である。
【００３０】
データ受信カウンタ３のエリアカウンタＢ１〜ＢＮは、受信カウンタＣ１〜ＣＮ及びエリア格納カウンタＤ１〜ＤＮを有している。受信カウンタＣ１〜ＣＮ及びエリア格納カウンタＤ１〜ＤＮは、それぞれパケットバッファ２からのパケット受信通知Ｒ０とバッファエリア格納通知Ｒ１〜ＲＮの受信回数とをカウントする。ただし、エリアカウンタＢ１〜ＢＮは対応するバッファエリアＡ１〜ＡＮがデフラグメント処理中にのみアクティブ状態となり、受信カウンタ及びエリア格納カウンタのカウント動作を行う。対応するバッファエリアＡ１〜ＡＮが空きの状態では非アクティブ状態となり、受信カウンタ及びエリア格納カウンタのカウントは行わない。
【００３１】
データ受信カウンタ３は、パケットバッファ２からパケット受信通知Ｒ０を受けると、全てのアクティブ状態のエリアカウンタにおいて受信カウンタＣ１〜ＣＮをカウントアップする。また、パケットバッファ２のバッファエリアＡ１〜ＡＮからバッファエリア格納通知Ｒ１〜ＲＮを受けると、対応するエリア格納カウンタＤ１〜ＤＮをカウントアップする。従って、受信カウンタＣ１〜ＣＮは、それぞれ対応するバッファエリアがデフラグメント処理中に、パケットバッファ２が受信した全てのフラグメントパケット数を示す。また、エリア格納カウンタＤ１〜ＤＮの値は、それぞれ対応するバッファエリアがデフラグメント処理中に、各バッファエリアＡ１〜ＡＮがそれぞれ格納したフラグメントパケット数を示す。受信カウンタＣ１〜ＣＮとエリア格納カウンタＤ１〜ＤＮとの値は、エリアカウンタ情報Ｊ１〜ＪＮとして比率演算回路４に随時通知される。
【００３２】
比率演算回路４は、各エリアカウンタに対応して設けられた有効パケット比率演算器４１１〜４１Ｎと、比較器４２とを有する。有効パケット比率演算器４１１〜４１Ｎは、データ受信カウンタ３から受信カウンタＣ１〜ＣＮとエリア格納カウンタＤ１〜ＤＮとの値をエリアカウンタ情報Ｊ１〜ＪＮによって受信すると、「エリア格納カウンタの値÷受信カウンタの値」を演算して有効パケット比率を求める。比較器４２は、バッファ管理回路１から輻輳通知Ｎ１を受信した際に、各有効パケット比率演算器４１１〜４１Ｎからの有効パケット比率を比較し、最も有効パケット比率が低い有効パケット比率演算器４１１〜４１Ｎに対応するバッファエリアＡ１〜ＡＮを示す低優先エリア通知Ｎ２をパケットバッファ２に通知する。
【００３３】
次に、第１の実施の形態における動作を説明する。
【００３４】
図３は第１の実施の形態における動作のフローチャートである。
【００３５】
まず、バッファ管理回路１はフラグメントパケット受信有無を常に監視し（ステップＳ１）、フラグメントパケットを受信した場合はフラグメント先頭パケットかどうかを判断する（ステップＳ２）。受信したフラグメントパケットがフラグメント先頭パケットで無い場合は、デフラグメント処理を行う為に確保済みのバッファエリアへ格納する（ステップＳ３）。
【００３６】
ステップＳ２でフラグメント先頭パケットを受信した場合は、バッファエリアＡ１〜ＡＮを検索し（ステップＳ２０）、空きがあるバッファエリアの有無を判断する（ステップＳ２１）。バッファエリアＡ１〜ＡＮに空きがある場合は、そのバッファエリアをデフラグメント処理用に確保してフラグメント先頭パケットを格納する（ステップＳ２２）。一方、バッファエリアＡ１〜ＡＮに空きが無い場合、バッファ管理回路１はフラグメント先頭パケットを保持して、比率演算回路４へ輻輳通知Ｎ１を出力する（ステップＳ３０）。
【００３７】
比率演算回路４は、輻輳通知Ｎ１を受信すると、エリアカウンタ情報Ｊ１〜ＪＮから有効パケット比率を演算し、最も有効パケット比率が低いバッファエリアを低優先エリア通知Ｎ２でパケットバッファ２へ通知する（ステップＳ３１）。
【００３８】
パケットバッファ２のバッファエリアクリア回路２１は、低優先エリア通知Ｎ２で示されたバッファエリアを空き状態にし（ステップＳ３２）、それに対応するエリアカウンタをクリアする（ステップＳ３３）。
【００３９】
バッファ管理回路１は、保持していたフラグメント先頭パケットを、空き状態となったバッファエリアへパケットを格納する（ステップＳ２２）。
【００４０】
パケットバッファ２は、バッファエリアＡ１〜ＡＮのいずれかにフラグメントパケットを格納すると、データ受信カウンタ３へパケット受信通知Ｒ０を出力する（ステップＳ４）。また、フラグメントパケットを格納したバッファエリアからは、バッファエリア格納通知Ｒ１〜ＲＮをデータ受信カウンタ３へ出力する（ステップＳ５）。
【００４１】
データ受信カウンタ３は、パケット受信通知Ｒ０を受信すると、アクティブ状態のエリアカウンタＢ１〜ＢＮ内の受信カウンタＣ１〜ＣＮでパケット受信通知Ｒ０の発生数をカウントする（ステップＳ６）。また、データ受信カウンタ３は、バッファエリア格納通知Ｒ１〜ＲＮを受信すると、対応するエリア格納カウンタＤ１〜ＤＮでバッファエリア格納通知Ｒ１〜ＲＮの発生数をカウントする（ステップＳ７）。受信カウンタＣ１〜ＣＮおよびエリア格納カウンタＤ１〜ＤＮの値は常時、比率演算回路４へと伝えられる。
【００４２】
バッファエリアにフラグメントパケットを格納後、デフラグメント処理が完了したか判別を行う（ステップＳ８）。デフラグメント処理が完了とならない場合は、再びバッファ管理回路１がフラグメントパケット受信有無の監視を行う（ステップＳ１）。
【００４３】
デフラグメント処理が完了した場合、パケットバッファ２で結合したフレームを送出し（ステップＳ９）、バッファエリアを空き状態にし（ステップＳ１０）、対応するエリアカウンタをクリアし（ステップＳ１１）、再びバッファ管理回路１が分割パケット受信有無の監視を行う（ステップＳ１）。
【実施例１】
【００４４】
本実施の形態における具体的な実施例１を説明する。
【００４５】
図４は実施例１における有効パケット比率演算の具体的な動作を説明するための図である。図４では、パケットバッファ２が４つのバッファエリアＡ１〜Ａ４を持ち、４つのフレームを分割して出来たフラグメントパケットを混在して受信した場合の、エリアカウンタＢ１〜Ｂ４内の受信カウンタＣ１〜Ｃ４及びエリア格納カウンタＤ１〜Ｄ４の値の推移を示している。
【００４６】
ここで、フレームＦ１を分割して出来たフラグメント先頭パケットをＦ１−１と記載し、後続のフラグメントパケットをＦ１−ｎとしてｎに２以降の値を付与して記載する。他の３つのフレーム（Ｆ２〜Ｆ４）についても同様とする。また、パケットバッファ２は、４つのフレームを分割して出来たフラグメントパケットをＦ１−１、Ｆ２−１、Ｆ１−２、Ｆ３−１、Ｆ２−２、Ｆ３−２、Ｆ４−１、Ｆ１−３の順番で受信したとする。
【００４７】
図４の時刻Ｔ０では、バッファエリアＡ１〜Ａ４はフラグメントパケットを格納しておらず、エリアカウンタＢ１〜Ｂ４は全て非アクティブ状態となっており値は０である。
【００４８】
時刻Ｔ１では、フラグメントパケットＦ１−１を受信してパケットバッファ２のバッファエリアＡ１へ格納した為、エリアカウンタＢ１がアクティブ状態となり受信カウンタＣ１とエリア格納カウンタＤ１の値に１が加算されている。
【００４９】
パケットバッファ２がパケット受信した場合、エリアカウンタＢ１〜Ｂ４の受信カウンタＣ１〜Ｃ４がカウント対象となるが、エリアカウンタＢ２〜Ｂ４は非アクティブ状態のため、カウントされていない。
【００５０】
時刻Ｔ２では、フラグメントパケットＦ２−１を受信してパケットバッファ２のバッファエリアＡ２へ格納した為、エリアカウンタＢ２がアクティブ状態となり受信カウンタＣ２とエリア格納カウンタＤ２の値に１が加算されている。また、時刻Ｔ２では、エリアカウンタＢ１もアクティブ状態の為、受信カウンタＣ１の値にも１が加算される。
【００５１】
時刻Ｔ３では、フラグメントパケットＦ１−２を受信してパケットバッファ２のバッファエリアＡ１へ格納した為、エリアカウンタＢ１の受信カウンタＣ１とエリア格納カウンタＤ１の値に１が加算されている。また、時刻Ｔ３では、エリアカウンタＢ２もアクティブ状態の為、受信カウンタＣ２の値にも１が加算される。
【００５２】
時刻Ｔ４では、フラグメントパケットＦ３−１を受信してパケットバッファ２のバッファエリアＡ３へ格納した為、エリアカウンタＢ３がアクティブ状態となり受信カウンタＣ３とエリア格納カウンタＤ３の値に１が加算されている。また、時刻Ｔ４では、エリアカウンタＢ１及びＢ２もアクティブ状態の為、受信カウンタＣ１及びＣ２の値にも１が加算される。
【００５３】
時刻Ｔ５では、フラグメントパケットＦ２−２を受信してパケットバッファ２のバッファエリアＡ２へ格納した為、エリアカウンタＢ２の受信カウンタＣ２とエリア格納カウンタＤ２の値に１が加算されている。また、時刻Ｔ５では、エリアカウンタＢ１及びＢ３もアクティブ状態の為、受信カウンタＣ１及びＣ３の値にも１が加算される。
【００５４】
時刻Ｔ６では、フラグメントパケットＦ３−２を受信してパケットバッファ２のバッファエリアＡ３へ格納した為、エリアカウンタＢ３の受信カウンタＣ３とエリア格納カウンタＤ３の値に１が加算されている。また、時刻Ｔ６では、エリアカウンタＢ１及びＢ２もアクティブ状態の為、受信カウンタＣ１及びＣ２の値にも１が加算される。
【００５５】
時刻Ｔ７では、フラグメントパケットＦ４−１を受信してパケットバッファ２のバッファエリアＡ４へ格納した為、エリアカウンタＢ４がアクティブ状態となり受信カウンタＣ４とエリア格納カウンタＤ４の値に１が加算されている。また、時刻Ｔ７では、エリアカウンタＢ１、Ｂ２及びＢ３もアクティブ状態の為、受信カウンタＣ１、Ｃ２及びＣ３の値にも１が加算される。
【００５６】
時刻Ｔ８では、フラグメントパケットＦ１−３を受信してパケットバッファ２のバッファエリアＡ１へ格納した為、エリアカウンタＢ１の受信カウンタＣ１とエリア格納カウンタＤ１の値に１が加算されている。また、時刻Ｔ８では、エリアカウンタＢ２、Ｂ３及びＢ４もアクティブ状態の為、受信カウンタＣ２、Ｃ３及びＣ４の値にも１が加算される。
【００５７】
時刻Ｔ９では、新たなフラグメント先頭パケットを受信した状態を示す。バッファエリアＡ１〜Ａ４がデフラグメント中の状態で、新たなフラグメント先頭パケットを受信した為、パケットバッファ２が輻輳状態となる。この場合、バッファ管理回路１は輻輳通知Ｎ１を出力する。
【００５８】
比率演算回路４は輻輳通知Ｎ１を受信すると、各有効パケット比率演算器４１１〜４１４は、エリアカウンタＢ１〜Ｂ４の値から有効パケット比率を「エリア格納カウンタ値÷受信カウンタ値」で演算する。そして、比較器４２は、各有効パケット比率演算器４１１〜４１４からの有効パケット比率を比較し、最も有効パケット比率が低い有効パケット比率演算器４１１〜４１４に対応するバッファエリアＡ１〜Ａ４を示す低優先エリア通知Ｎ２をパケットバッファ２に通知する。
【００５９】
具体的には、各有効パケット比率演算器４１１〜４１４の有効パケット比率は、以下の通りとなる。
【００６０】
有効パケット比率演算器４１１（エリアカウンタＢ１）のパケット比率＝３／８
有効パケット比率演算器４１２（エリアカウンタＢ２）のパケット比率＝２／７
有効パケット比率演算器４１３（エリアカウンタＢ３）のパケット比率＝２／５
有効パケット比率演算器４１４（エリアカウンタＢ４）のパケット比率＝１／２
本実施例では、有効パケット比率演算器４１２（エリアカウンタＢ２）の有効パケット比率が最も低い値の為、バッファエリアＡ２が低優先エリア通知Ｎ２でパケットバッファ２に通知される。
【００６１】
パケットバッファ２は低優先エリア通知Ｎ２により、低優先エリアであるバッファエリアＡ２を強制的に空き状態にし、エリアカウンタＢ２の受信カウンタＣ２およびエリア格納カウンタＤ２をクリアして非アクティブ状態とする。
【００６２】
その後、バッファ管理回路１は空き状態となったバッファエリアＡ２へ、新たなフラグメント先頭パケットを格納する為、エリアカウンタＢ２が再びアクティブ状態となり受信カウンタＣ２とエリア格納カウンタＤ２の値に１が加算されている。また、エリアカウンタＢ１およびＢ３およびＢ４もアクティブ状態の為、受信カウンタＣ１およびＣ３およびＣ４の値にも１が加算される。
【００６３】
以上説明したように、本実施の形態においては、パケットバッファの輻輳状態からの復旧方法として、低優先エリアを選別してパケットバッファを解放する方法によりパケットバッファの輻輳を防いでいる。これによりハードウェアでタイマーを実現する必要が無い為、回路規模の削減ができる。
【００６４】
また、パケットバッファの周期的な監視も必要無い為、ソフトウェア処理は不要である。
【００６５】
また、パケットバッファ輻輳発生時に強制解放する対象となる低優先エリアを、各バッファエリアでそれぞれ有効パケット比率を求めて判断している為、各バッファエリアのパケット格納期間の長短によらず、パケットを格納する頻度の少ないバッファエリアを解放する事ができる。これにより、デフラグメント開始からの経過時間のみで判断するものと比べて、データ受信頻度が高くても解放されてしまうことがない。
【００６６】
尚、上述した実施の形態では、ひとつのパケットバッファに複数のバッファエリアを有する場合を説明したが、これに限られない。例えば、パケットバッファが複数あっても良い。更に、各パケットバッファがひとつのバッファエリアを有し、各パケットバッファが上述した各バッファエリアの構成を取るようにしても良い。
【００６７】
＜第２の実施の形態＞
第２の実施の形態を説明する。
【００６８】
第２の実施の形態の基本的構成は、第１の実施の形態の構成と類似するが、有効パケット比率の演算構成について異なっている。第２の実施の形態の構成を図５に示す。
【００６９】
図５において、第１の実施の形態と異なる箇所は、有効パケット比率の演算をプログラムで動作する外部のホストプロセッサ３００で実施しているところである。尚、そのプログラムは、第１の実施の形態で説明した比率演算回路４と同様な処理をホストプロセッサ３００に実行させるものである。
【００７０】
パケットバッファ２０２が全エリア確保された状態で、新たにフラグメント先頭パケットを受信すると、バッファ管理回路２０１はプロセッサ制御部２０４に対して輻輳通知Ｎ１を出力する。プロセッサ制御部２０４は輻輳通知Ｎ１を受けると、外部のホストプロセッサ３００に対してバッファ輻輳割り込みＮ３を出力する。
【００７１】
外部のホストプロセッサ３００はバッファ輻輳割り込みＮ３を検出すると、プロセッサ制御部２０４を通してエリアカウンタ情報Ｊ１〜ＪＮの値をカウンタ値Ｎ４として読み出し、バッファエリアＡ１〜ＡＮの有効パケット比率を演算し、最も有効パケット比率が低いバッファエリアを、低優先エリア通知Ｎ５でプロセッサ制御部２０４を通してパケットバッファ２０２へ通知する。
【００７２】
パケットバッファ２０２はプロセッサ制御部２０４から受信した低優先エリア通知Ｎ５を受けることで、パケットバッファ２０２の低優先エリアを強制的に解放し、新たに受信したフラグメント先頭パケットを格納する。
【００７３】
このように、第２の実施の形態では、有効パケット比率の演算を外部のホストプロセッサで実施しているので、比率演算回路を削減する効果が得られる。また、パケットバッファ２０２の輻輳時のみプロセッサでソフトウェアによる処理を行うため、処理能力低下も軽減出来る。
【００７４】
以上好ましい実施の形態及び実施例をあげて本発明を説明したが、本発明は必ずしも上記実施の形態及び実施例に限定されるものではなく、その技術的思想の範囲内において様々に変形し実施することが出来る。
【符号の説明】
【００７５】
１                バッファ管理回路
２                パケットバッファ
３                データ受信カウンタ
４                比率演算回路
２１              バッファエリアクリア回路
４１１〜４１Ｎ    有効パケット比率演算器
４２              比較器
２０１            バッファ管理回路
２０２            パケットバッファ
２０３            データ受信カウンタ
２０４            プロセッサ制御部
３００            ホストプロセッサ
【図１】
2011035484.tif 000003
【図２】
2011035484.tif 000004
【図３】
2011035484.tif 000005
【図４】
2011035484.tif 000006
【図５】
2011035484.tif 000007