(57)【要約】【課題】  高速、高効率のパケット輻輳制御を行う。【解決手段】  廃棄確率算定部１１は、最大廃棄確率と平均キュー長より、廃棄確率を監視サイクルと廃棄サイクルで定義する近似廃棄確率テーブルを管理する。監視サイクル回数算出部１２は、到着したパケットのパケットサイクルを検出し、監視サイクルの回数を算出する。廃棄数乗算部１３は、監視サイクルの回数と廃棄サイクルを乗算して廃棄数を算出する。廃棄判定比較部１４は、廃棄数と廃棄サイクル保持値とを比較し、廃棄数が廃棄サイクル保持値と等しい、または大きい場合は、到着したパケットを廃棄実行と設定する。廃棄サイクル保持値算出部１５は、廃棄判定結果にもとづいて、廃棄サイクル保持値を繰り返し算出し、算出値を廃棄判定比較部１４へ送信する。パケット廃棄処理部１６は、パケットの廃棄実行が設定されたときには、キューに入力する前のパケットの廃棄を行う。【選択図】  図１
2005094392.tif 000002
【特許請求の範囲】
【請求項１】
パケットの廃棄を行って、ネットワークトラフィックの輻輳回避を行うパケット処理装置において、
最大廃棄確率と平均キュー長より、廃棄確率を監視サイクルと廃棄サイクルで定義する近似廃棄確率テーブルを管理する廃棄確率算定部と、
到着したパケットのパケットサイクルを検出し、パケットサイクルに監視サイクル保持値を加算した加算値を監視サイクルで除算して、累積パケットサイクルに含まれる監視サイクルの回数を算出する監視サイクル回数算出部と、
監視サイクルの回数と廃棄サイクルを乗算して廃棄数を算出する廃棄数乗算部と、
廃棄数と廃棄サイクル保持値とを比較して廃棄判定を行い、廃棄数が廃棄サイクル保持値と等しい、または廃棄数が廃棄サイクル保持値より大きい場合は、到着したパケットを廃棄実行と設定する廃棄判定比較部と、
廃棄が発生してから次の廃棄が発生するまでの、廃棄確率を満たすサイクル区間を求めるために、廃棄判定結果にもとづいて、前回処理時の廃棄サイクル保持値から廃棄数を減算した値である廃棄サイクル保持値を繰り返し算出し、算出値を前記廃棄判定比較部へ送信する廃棄サイクル保持値算出部と、
パケットを格納するキューを含み、パケットの廃棄実行が設定されたときには、キューに入力する前のパケットの廃棄を行うパケット廃棄処理部と、
を有することを特徴とするパケット処理装置。
【請求項２】
前記廃棄確率算定部は、平均キュー長が最小しきい値と最大しきい値の間にあるときの廃棄確率曲線を、最大廃棄確率を複数の割合に分割して、平均キュー長の伸張度合いに応じて、定率で廃棄を行えるような階段状の波形に変換したグラフにもとづいて生成された前記近似廃棄確率テーブルを管理することを特徴とする請求項１記載のパケット処理装置。
【請求項３】
前記廃棄確率算定部、前記監視サイクル回数算出部、前記廃棄数乗算部、前記廃棄判定比較部、前記廃棄サイクル保持値算出部、前記パケット廃棄処理部は、ハードウェアのみで機能を構成することを特徴とする請求項１記載のパケット処理装置。
【請求項４】
前記監視サイクル回数算出部は、到着パケットのパケットサイクルを検出するパケット長検出部と、パケットサイクルと監視サイクル保持値とを加算する加算部と、加算値を監視サイクルで除算して、監視サイクルの回数を表す商と、監視サイクル保持値を表す余りとを算出する監視サイクル除算部と、次パケットが到着するまで監視サイクル保持値をラッチする監視サイクル保持値ラッチ部と、から構成されることを特徴とする請求項３記載のパケット処理装置。
【請求項５】
前記廃棄サイクル保持値算出部は、到着パケットが廃棄処理実行と判定されなかった場合に、前回処理時の廃棄サイクル保持値から廃棄数を減算して廃棄サイクル保持値を算出する廃棄サイクル保持値減算部と、到着パケットが廃棄処理実行と判定された場合に、前回処理時の廃棄サイクル保持値から廃棄数を減算し、かつ到着パケットのパケットサイクルを加算して、次の廃棄区間の廃棄サイクル保持値を算出する廃棄サイクル保持値加減算部と、前記廃棄判定比較部の廃棄判定結果にもとづいて、前記廃棄サイクル保持値減算部と前記廃棄サイクル保持値加減算部の出力を選択するセレクタと、前記セレクタから出力された廃棄サイクル保持値をラッチする廃棄サイクル保持値ラッチ部と、から構成されることを特徴とする請求項３記載のパケット処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット処理装置に関し、特にパケットの廃棄を行って、ネットワークトラフィックの輻輳回避を行うパケット処理装置に関する。
【背景技術】
【０００２】
近年、インターネット通信の普及とともに、ＩＰ（Internet Protocol）パケットのような可変長フレームによる通信需要が急増しており、ネットワークの一部にトラフィックが集中して輻輳が発生することがある。このためインターネット通信に用いられるルータなどのネットワーク機器には、輻輳回避のための機能が搭載されることが一般的になっている。
【０００３】
輻輳制御アルゴリズムとしては例えば、ＲＦＣ（Request For Comments：インターネット標準化団体であるＩＥＴＦ（Internet Engineering Task Force）が取りまとめている一連の文書群）２３０９に示されるＲＥＤ（Random Early Discarding）と呼ばれるアルゴリズムが広く用いられている。
【０００４】
ＲＥＤは、ネットワーク機器に到着したパケットを、メモリで構成されるキュー（Queue）に格納し、キューに格納されたデータ量を定期的に観測することでキューの伸長傾向を計算し、キューが溢れる前に、到着パケットを任意に設定された確率でランダムに廃棄することにより、キューが溢れることを回避するアルゴリズムである。
【０００５】
また、ＲＥＤの作用機構を利用し、ネットワーク機器に到着したパケットを何らかの方法で分類し、分類された種別毎のキューでＲＥＤを行うＷＲＥＤ(Weighted RED)もよく知られている。
【０００６】
輻輳制御の従来技術としては、最終セル以外のセルをランダムに廃棄することにより、少ない処理でパケット廃棄を可能とする技術が提案されている（例えば、特許文献１）。
【特許文献１】特開２００１−１１１５５６号公報（段落番号〔００５０〕〜〔０１０９〕，第３図）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上述したようなＲＥＤやＷＲＥＤは、廃棄確率曲線にもとづく複雑な演算を要するため、従来ではハードウェアとソフトウェア（ファームウェア）を組み合わせた構成で実現していた。すなわち、パケット到着時にパケット情報をハードウェアからソフトウェアに通信し、ソフトウェアで該当パケットの処理を決定する。そして、結果をハードウェアに通信して、ハードウェアで必要に応じた処理（例えばパケット廃棄やキューへのパケット収容等）を行う。
【０００８】
しかし、このようなハードウェアとソフトウェアを組み合わせた従来の構成では、ハードウェアとソフトウェア間で通信を行うための通信時間が発生し、かつソフトウェアでの計算時間もあるため、パケット毎の廃棄判定処理に要する時間が長くかかってしまう。このため、高速・大容量のネットワーク構築に必要な処理速度を十分に満足できないおそれがあり、伝送品質の低下を引き起こすといった問題があった（また、処理速度を満足させようとする設計者に対する負担も大きい）。
【０００９】
一方、上記の従来技術（特開２００１−１１１５５６号公報）では、ＡＴＭ（Asynchronous Transfer Mode）のＡＡＬ５（ATM Adaptaion Layer5）が適用されたネットワークを前提として、１つのパケットを構成するＡＴＭセルの内、最終セルでないセルを廃棄するといった構成をとっている。この従来技術は、ＡＡＬ５のようなネットワークプロトコルの特徴を生かした輻輳回避である。
【００１０】
このため、適用されるネットワークプロトコルにかかわらず、ある一定のしきい値を超えて入力するパケットの輻輳を回避したい、といった広い範囲でのパケット輻輳制御に適用することは不向きである。
【００１１】
本発明はこのような点に鑑みてなされたものであり、処理速度の高いハードウェアのみで構成して、効率よく高速に輻輳制御を行うパケット処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明では上記課題を解決するために、図１に示すような、パケットの廃棄を行って、ネットワークトラフィックの輻輳回避を行うパケット処理装置１０において、最大廃棄確率と平均キュー長より、廃棄確率を監視サイクルと廃棄サイクルで定義する近似廃棄確率テーブルを管理する廃棄確率算定部１１と、到着したパケットのパケットサイクルを検出し、パケットサイクルに監視サイクル保持値を加算した加算値を監視サイクルで除算して、累積パケットサイクルに含まれる監視サイクルの回数を算出する監視サイクル回数算出部１２と、監視サイクルの回数と廃棄サイクルを乗算して廃棄数を算出する廃棄数乗算部１３と、廃棄数と廃棄サイクル保持値とを比較して廃棄判定を行い、廃棄数が廃棄サイクル保持値と等しい、または廃棄数が廃棄サイクル保持値より大きい場合は、到着したパケットを廃棄実行と設定する廃棄判定比較部１４と、廃棄が発生してから次の廃棄が発生するまでの、廃棄確率を満たすサイクル区間を求めるために、廃棄判定結果にもとづいて、前回処理時の廃棄サイクル保持値から廃棄数を減算した値である廃棄サイクル保持値を繰り返し算出し、算出値を廃棄判定比較部１４へ送信する廃棄サイクル保持値算出部１５と、パケットを格納するキューを含み、パケットの廃棄実行が設定されたときには、キューに入力する前のパケットの廃棄を行うパケット廃棄処理部１６と、を有することを特徴とするパケット処理装置１０が提供される。
【００１３】
ここで、廃棄確率算定部１１は、最大廃棄確率と平均キュー長より、廃棄確率を監視サイクルと廃棄サイクルで定義する近似廃棄確率テーブルを管理する。監視サイクル回数算出部１２は、到着したパケットのパケットサイクルを検出し、パケットサイクルに監視サイクル保持値を加算した加算値を監視サイクルで除算して、累積パケットサイクルに含まれる監視サイクルの回数を算出する。廃棄数乗算部１３は、監視サイクルの回数と廃棄サイクルを乗算して廃棄数を算出する。廃棄判定比較部１４は、廃棄数と廃棄サイクル保持値とを比較して廃棄判定を行い、廃棄数が廃棄サイクル保持値と等しい、または廃棄数が廃棄サイクル保持値より大きい場合は、到着したパケットを廃棄実行と設定する。廃棄サイクル保持値算出部１５は、廃棄が発生してから次の廃棄が発生するまでの、廃棄確率を満たすサイクル区間を求めるために、廃棄判定結果にもとづいて、前回処理時の廃棄サイクル保持値から廃棄数を減算した値である廃棄サイクル保持値を繰り返し算出し、算出値を廃棄判定比較部１４へ送信する。パケット廃棄処理部１６は、パケットを格納するキューを含み、パケットの廃棄実行が設定されたときには、キューに入力する前のパケットの廃棄を行う。
【発明の効果】
【００１４】
本発明のパケット処理装置は、廃棄確率を監視サイクルと廃棄サイクルで定義する近似廃棄確率テーブルを管理し、パケットサイクルに含まれる監視サイクルの回数を算出して、監視サイクルの回数と廃棄サイクルを乗算して廃棄数を求める。そして、廃棄数と廃棄サイクル保持値とを比較して廃棄判定を行い、廃棄判定結果にもとづいて、前回処理時の廃棄サイクル保持値から廃棄数を減算した値である廃棄サイクル保持値を繰り返し算出し、パケットの廃棄実行が設定されたときに、キューに入力する前のパケットの廃棄を行う構成とした。これにより、処理速度の高いハードウェアのみで構成することができるので、パケットの廃棄判定処理にかかる時間の短縮化が可能になり、効率よく高速にネットワークトラフィックの輻輳制御を行うことが可能になる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の形態を図面を参照して説明する。図１は本発明のパケット処理装置の原理図である。パケット処理装置は、インターネット通信に用いられるコアルータやエッジルータ等に用いられ、可変長パケットの廃棄処理を行って、ネットワークトラフィックの輻輳回避の制御を行う装置である。
【００１６】
廃棄確率算定部１１は、最大廃棄確率と平均キュー長より、廃棄確率を監視サイクルと廃棄サイクルで定義する近似廃棄確率テーブルを管理する。監視サイクル回数算出部１２は、到着したパケットのパケットサイクルを検出し、パケットサイクルに監視サイクル保持値を加算した加算値を監視サイクルで除算して、累積パケットサイクルに含まれる監視サイクルの回数を算出する。
【００１７】
廃棄数乗算部１３は、監視サイクルの回数と廃棄サイクルを乗算して廃棄数を算出する。廃棄判定比較部１４は、廃棄数と、廃棄サイクル保持値算出部１５から送信された廃棄サイクル保持値と、を比較して廃棄判定を行い、廃棄数が廃棄サイクル保持値と等しい、または廃棄数が廃棄サイクル保持値より大きい場合は、到着したパケットを廃棄実行と設定する。
【００１８】
廃棄サイクル保持値算出部１５は、廃棄が発生してから次の廃棄が発生するまでの、廃棄確率を満たすサイクル区間を求めるために、廃棄判定結果にもとづいて、前回処理時の廃棄サイクル保持値から廃棄数を減算した値である廃棄サイクル保持値を繰り返し算出し、算出した廃棄サイクル保持値を廃棄判定比較部１４へ送信する。パケット廃棄処理部１６は、パケットを格納するキューを含み、パケットの廃棄実行が設定されたときには、キューに入力する前のパケットの廃棄を行う。
【００１９】
次に本発明の詳細を説明する前に、用語の定義も含めて、本発明の基本となるＲＥＤのキュー管理アルゴリズムについて説明する。ＲＥＤは、パケットを滞留させるＦＩＦＯ（first in first out）キューが一杯にならないように制御して、ネットワークの輻輳を回避するアルゴリズムのことである。
【００２０】
ＲＥＤでは、キューの平均的な長さ（平均キュー長：パケットが格納されるキューの占有状態の平均値）を連続的に計算し、それを２つのしきい値（最小しきい値及び最大しきい値）と比較することで、キューに到着する到着パケットの廃棄を決定する。
【００２１】
平均キュー長Ｑａｖは、キューが空でないとき、現在のキュー長をＱとすると以下の式（１）で定義される。ただし、ｗは重み係数である。
【００２２】
【数１】
2005094392.tif 000003
ここで、キューに格納されたパケットは、読み出し制御部によって順次読み出されていくので、一旦キューに書き込まれたパケットの廃棄は行わない。本発明でいうパケット廃棄とは、キューに書き込まれる前の到着パケット（キューへの入力パケット）を廃棄することを意味する。
【００２３】
図２〜図４はＲＥＤのパケット廃棄の概念図である。キュー２０にパケットが格納されている状態で、図２のように、平均キュー長Ｑａｖが、最小しきい値minTHを下回っている場合には、キュー２０の格納領域には十分な余裕があるとみなして、到着順にパケットをキューに収容し、パケット廃棄は生じない。
【００２４】
また、図３のように、平均キュー長Ｑａｖが最大しきい値maxTHを上回る場合には、キュー２０が溢れる可能性があるとして、キュー２０に新しく到着するすべてのパケットを廃棄する。このとき、キュー２０内の先頭パケットが、最大しきい値maxTH以内に収まるまで（読み出し制御部からキュー２０内のパケットは順次読み出されているので、キュー２０に入力するパケットがなければ、平均キュー長Ｑａｖが最大しきい値maxTHより下回るときがいずれくる）、全廃棄が実行され続けることになる（到着パケットの全廃棄はtail dropとも呼ばれている）。
【００２５】
さらに、図４のように、平均キュー長Ｑａｖが最小しきい値minTHと最大しきい値maxTHの間にある場合には、ユーザが設定可能な廃棄確率にもとづいて、到着パケットの内、ランダムにパケットを選択し、選択したパケットを廃棄する。
【００２６】
図５はＲＥＤの廃棄確率曲線を示す図である。縦軸は廃棄確率（％）、横軸は平均キュー長Ｑａｖである。廃棄確率曲線Ｋ０は、平均キュー長Ｑａｖの伸張度合いに応じた到着パケットの廃棄確率を表している。
【００２７】
平均キュー長Ｑａｖが最小しきい値minTH以下の場合は、パケット廃棄確率は０％であり（パケットは廃棄されない）、平均キュー長Ｑａｖが最大しきい値maxTH以上の場合は、到着パケットの廃棄確率は１００％となる（すべての到着パケットが廃棄される）。
【００２８】
また、平均キュー長Ｑａｖが、最小しきい値minTHと最大しきい値maxTHの間にある場合には、図に示すようなユーザ設定可能な廃棄曲線の傾きにもとづき、廃棄確率が決定する（廃棄確率ｋ１とする）。ここで、廃棄確率が１０％の廃棄を行うとは、到着パケットの１０％が廃棄されるということである（キューに対するパケット書き込み処理に対して、例えば、１００個の到着パケットの内の１０個のパケット書き込みを行わないということ（パケットを固定長とした場合））。
【００２９】
なお、図中の最大廃棄確率maxPは、最小しきい値minTHと最大しきい値maxTHとの間の廃棄確率ｋ１の傾きを決める値であって、キューが最大しきい値maxTHまで伸張したときに、最大何％廃棄するかを示すものである（ここを超えると全廃棄となる）。
【００３０】
本発明では、ハードウェアのみで処理可能となるように、図５で示した廃棄確率曲線Ｋ０からパケットの実質廃棄数を決める近似的な廃棄確率テーブルを生成し、この近似廃棄確率テーブルにもとづいて、ソフトウェア処理を介さずに、高速に効率よくパケット廃棄を実行して、ネットワークトラフィックの輻輳制御を行うものである。
【００３１】
次に廃棄確率曲線Ｋ０から近似廃棄確率テーブルを生成するまでの過程及び近似廃棄確率テーブルの具体例について説明する。図６、図７は定率によって廃棄を実現するための廃棄確率を示す図である。グラフＧ１、Ｇ２の縦軸は定率の廃棄確率（％）、横軸は平均キュー長Ｑａｖである。グラフＧ１、Ｇ２は、廃棄確率曲線Ｋ０の廃棄確率ｋ１を近似したものであり、グラフＧ１が最大廃棄確率maxPを１０％としたとき、グラフＧ２が最大廃棄確率maxPを５％としたときの波形の一例を示している。
【００３２】
横軸に対しては、最小しきい値minTHと最大しきい値maxTHの間の平均キュー長Ｑａｖを１６等分して、これをステップ数ｓ１〜ｓ９の８区間に分割し、縦軸に対しては、最大廃棄確率maxPを８等分する。このような操作によって、８つの階段波形の定率の廃棄確率ｋ２をつくって本来の廃棄確率ｋ１を近似している。
【００３３】
なお、分割数は回路設計上、２進数にもとづいて決めることになる。この例の場合は８つの階段波形で廃棄確率ｋ１を近似したが、例えば、横軸を３２等分して１６区間に分割し、縦軸を１６等分することで、１６個の階段波形でさらに細かく廃棄確率ｋ１を近似してもよい。
【００３４】
図の見方について説明すると、あるステップ数ｓの区間内に平均キュー長Ｑａｖがある場合のパケット廃棄は、その区間に対応した、一定の割合（定率）でパケット廃棄が行われることになる。例えば、平均キュー長Ｑａｖがステップ数ｓ４〜ｓ５の区間にある場合は、最大廃棄確率maxPの４／８の割合（＝maxP×（４／８））でパケットが廃棄されることとなる。
【００３５】
また、理想の廃棄確率ｋ１と、近似した階段状の廃棄確率ｋ２との誤差は、最大廃棄確率maxPの１／１６となり、これは仕様上において誤差の許容範囲（最大廃棄確率maxPの±１０％）内に収まるものである。
【００３６】
図８は近似廃棄確率テーブルを示す図である。近似廃棄確率テーブルＴ１は、図６、図７に示したグラフをテーブル化したもので、平均キュー長Ｑａｖと最大廃棄確率maxPによって定まる実質のパケット廃棄数（パケットの廃棄サイクル数）を表している。テーブル項目としては、最大廃棄確率maxP（この例では０〜１０％までを１％単位で設定可能とする。図では１％〜１０％の設定欄を設けている）、maxPに対する割合、ステップ数と平均キュー長Ｑａｖの関係から構成され、テーブルＴ１中の整数値は、廃棄サイクル数を示している（図８の例では１監視サイクル＝８００サイクルとした）。
【００３７】
ここで、パケットの廃棄を行う場合、本発明では可変長パケットを扱うので、可変長パケットのパケット長をサイクル（１サイクルは例えば１６バイト）に換算し、廃棄確率（％）を（廃棄サイクル÷監視サイクル）×１００と定義して、サイクル単位での廃棄を行うものとする。したがって、廃棄サイクルは、廃棄確率の分子であり、監視サイクル（監視周期と同じ意味を持つ）は、廃棄確率の分母と定義できる。例えば、監視サイクルが８０サイクルのときの廃棄確率５％とは、（４サイクル／８０サイクル）×１００と計算できるので、このときの廃棄サイクルは４サイクルとなる。
【００３８】
テーブルＴ１の見方について説明する。最大廃棄確率maxPは、１％〜１０％の欄があり、１％〜１０％のすべての最大廃棄確率maxPに対して、平均キュー長Ｑａｖがステップ数ｓ１より小さければ（Qav≦s1(=minTH))、パケット廃棄は生じず、全通過となる（到着パケットはすべてキューに書き込まれる）。
【００３９】
また、１％〜１０％のすべての最大廃棄確率maxPに対して、平均キュー長Ｑａｖがステップ数ｓ９より大きければ（s9(=maxTH)＜Qav)、到着パケットは全廃棄となる。
ここで、最大廃棄確率maxPを１０％とした場合を見ると、平均キュー長Ｑａｖがステップ数ｓ８とステップ数ｓ９の間にあったならば（s8＜Qav≦s9)、廃棄確率１０％の廃棄を行うので、廃棄サイクル数でこれを見ると、８００サイクル中８０サイクルの割合で廃棄が行われることになる（（８０／８００）×１００＝１０％）。
【００４０】
また、平均キュー長Ｑａｖは、ステップ数ｓ１からステップ数ｓ９まで８区分されるので、平均キュー長Ｑａｖがステップ数ｓ１とステップ数ｓ２の間にあったならば（s1＜Qav≦s2）、廃棄サイクル数は１０（＝８０×（１／８））となる。すなわち、s1＜Qav≦s2のときはmaxPに対する割合が１２．５％なので、８０サイクルを１００としたときの１２．５％に該当する１０サイクルの割合で廃棄が行われる。
【００４１】
同様に、s2＜Qav≦s3の廃棄サイクル数は２０（＝８０×（２／８））であり（８０サイクルを１００としたときの２５．０％に該当する２０サイクルの割合で廃棄が行われる）、…、s7＜Qav≦s8の廃棄サイクル数は７０（＝８０×（７／８））となる。
【００４２】
さらに、最大廃棄確率maxPを７％と設定した場合を見ると、平均キュー長Ｑａｖがステップ数ｓ８とステップ数ｓ９の間にあったならば（s8＜Qav≦s9)、廃棄確率７％の廃棄を行うので、廃棄サイクル数でこれを見ると、８００サイクル中５６サイクルの割合で廃棄が行われることになる（（５６／８００）×１００＝７％）。
【００４３】
また、平均キュー長Ｑａｖがステップ数ｓ１とステップ数ｓ２の間にあったならば（s1＜Qav≦s2）、廃棄サイクル数は７（＝５６×（１／８））となる。すなわち、s1＜Qav≦s2のときはmaxPに対する割合が１２．５％なので、５６サイクルを１００としたときの１２．５％に該当する７サイクルの割合で廃棄が行われる。
【００４４】
同様に、s2＜Qav≦s3の廃棄サイクル数は１４（＝５６×（２／８））であり（５６サイクルを１００としたときの２５．０％に該当する１４サイクルの割合で廃棄が行われる）、…、s7＜Qav≦s8の廃棄サイクル数は４９（＝５６×（７／８））となる。その他についても同じ考え方で廃棄サイクル数が求まる。
【００４５】
図９は近似廃棄確率テーブルを示す図である。図８で示した近似廃棄確率テーブルＴ１は、最大廃棄確率maxPの１％〜１０％に対して、監視サイクルを８００サイクルと固定して、最大廃棄確率maxP毎に廃棄サイクルを可変としたが、図９の近似廃棄確率テーブルＴ２では、最大廃棄確率maxPの１％〜１０％に対して、廃棄サイクルの方を固定し、最大廃棄確率maxP毎に監視サイクルを可変とした場合のテーブルである。
【００４６】
テーブルＴ２の見方について説明する。１％〜１０％のすべての最大廃棄確率maxPに対して、平均キュー長Ｑａｖがステップ数ｓ１より小さければ（Qav≦s1(=minTH))、パケット廃棄は生じず、全通過となる。
【００４７】
また、１％〜１０％のすべての最大廃棄確率maxPに対して、平均キュー長Ｑａｖがステップ数ｓ９より大きければ（s9(=maxTH)＜Qav)、到着パケットは全廃棄となる。
ここで、平均キュー長Ｑａｖがs8＜Qav≦s9の範囲にある場合の各最大廃棄確率maxPの廃棄サイクルを最初に例えば、８サイクルと決めると、s1＜Qav≦s2のときの廃棄サイクルは１サイクル（８×（１／８））、s2＜Qav≦s3のときの廃棄サイクルは２サイクル（８×（２／８））、…となって、s1＜Qav≦s2、s2＜Qav≦s3、…、s8＜Qav≦s9に対する各最大廃棄確率maxPの廃棄サイクルが１〜８サイクルと決まる。
【００４８】
そして、最大廃棄確率maxPを１０％とした場合を見ると、平均キュー長Ｑａｖがステップ数ｓ８とステップ数ｓ９の間にあったならば（s8＜Qav≦s9)、求める監視サイクルをＸサイクルとすると、Ｘサイクル中、１０％の廃棄確率で廃棄したときに廃棄サイクルが８サイクルとなるには、（８／Ｘ）×１００＝１０％を計算して、Ｘ＝８０が求まる。
【００４９】
また、最大廃棄確率maxPを７％とした場合を見ると、平均キュー長Ｑａｖがステップ数ｓ８とステップ数ｓ９の間にあったならば（s8＜Qav≦s9)、求める監視サイクルをＹサイクルとすると、Ｙサイクル中、７％の廃棄確率で廃棄したときに廃棄サイクルが８サイクルとなるには、（８／Ｙ）×１００＝７％を計算して、Ｙ＝１１４．２８…≒１１５が求まる（計算結果に端数が出ても監視サイクルを求めているので、小数点以下切り上げにして１サイクル多めに監視すればよい）。その他についても同じ考え方で監視サイクル数が求まる。
【００５０】
上記では、２つの近似廃棄確率テーブルの例について示したが、本発明では、平均キュー長Ｑａｖと最大廃棄確率maxPより、監視サイクル数と廃棄サイクル数を定義する、図９で示した近似廃棄確率テーブルＴ２を利用して、パケット廃棄処理を行うものとして以降説明する。
【００５１】
次にパケット処理装置１０の構成及び動作について説明する。図１０、図１１はパケット処理装置１０の構成を示す図である。パケット処理装置１０は、図９で示した近似廃棄確率テーブルＴ２にしたがって、監視サイクル数と廃棄サイクル数を廃棄確率算定部１１から導き出し、定率によるパケット廃棄を行う装置である。
【００５２】
監視サイクル回数算出部１２は、パケット長検出部１２ａ、加算部１２ｂ、監視サイクル除算部１２ｃ、監視サイクル保持値ラッチ部１２ｄから構成される。廃棄サイクル保持値算出部１５は、廃棄サイクル保持値減算部１５ａ、廃棄サイクル保持値加減算部１５ｂ、セレクタ１５ｃ、廃棄サイクル保持値ラッチ部１５ｄから構成される。パケット廃棄処理部１６は、位相調整部１６ａ、廃棄処理部１６ｂ、パケットバッファ（キューに該当）１６ｃ、キュー長監視部１６ｄ、読み出し制御部１６ｅから構成される。
【００５３】
以下、各構成ブロックについて説明する。パケット長検出部１２ａは、到着したパケットに対して、パケット長のサイクル数（パケットサイクル）を検出する。加算部１２ｂは、パケットサイクルの値と前回パケット到着時に演算された監視サイクル保持値とを加算し、加算結果を監視サイクル除算部１２ｃへ送信する。加算部１２ｂにおける演算式は、{パケットサイクル＋監視サイクル保持値}である。
【００５４】
監視サイクル除算部１２ｃは、廃棄確率算定部１１で選択された監視サイクルを受信し、加算値を監視サイクルで除算して、除算結果の商（監視サイクルの回数に該当）を廃棄数乗算部１３へ送信し、除算結果の余り（監視サイクル保持値に該当）を監視サイクル保持値ラッチ部１２ｄへ送信する。監視サイクル除算部１２ｃにおける除算式は、{（パケットサイクル＋監視サイクル保持値）／監視サイクル}である。
【００５５】
監視サイクル除算部１２ｃでは、到着パケットのパケットサイクルの内、監視サイクルが何個含まれるかを算出しているので、除算した余りである監視サイクル保持値は、前回の監視サイクルから引き継いだサイクル数を表すことになる。
【００５６】
図１２、図１３はパケット到着から監視サイクル保持値が求まるまでの動作を説明するための概念図である。なお、以降の説明では、廃棄確率算定部１１から、監視サイクルとして８０サイクルが設定されたとする。
【００５７】
〔Ｓ１〕監視サイクルＣｙｃ１に対して、パケットｐ１が装置に到着すると、パケット長検出部１２ａは、パケットｐ１のパケットサイクル＝４０を検出したとする。また、監視サイクル保持値を初期値の０とする。加算部１２ｂは、パケットｐ１のパケットサイクル（４０）と監視サイクル保持値（０）とを加算して、加算値４０（＝４０＋０）を出力する。監視サイクル除算部１２ｃでは、（４０＋０）／８０を計算して、商が０、余り４０を算出する。
【００５８】
〔Ｓ２〕監視サイクルＣｙｃ１に対して、パケットｐ２が装置に到着し、パケット長検出部１２ａは、パケットｐ２のパケットサイクル＝２０を検出したとする。ステップＳ１から引き継いだ監視サイクル保持値は４０であるので、加算部１２ｂは、パケットｐ２のパケットサイクル（２０）と監視サイクル保持値（４０）とを加算して、加算値６０（＝４０＋２０）を出力する（累積パケットサイクルを計算している）。監視サイクル除算部１２ｃでは、（４０＋２０）／８０を計算して、商が０、余り６０を算出する。
【００５９】
〔Ｓ３〕監視サイクルＣｙｃ１に対して、パケットｐ３が装置に到着し、パケット長検出部１２ａは、パケットｐ３のパケットサイクル＝３０を検出したとする。ステップＳ２から引き継いだ監視サイクル保持値は６０であるので、加算部１２ｂは、パケットｐ３のパケットサイクル（３０）と監視サイクル保持値（６０）とを加算して、加算値９０（＝３０＋６０）を出力する。監視サイクル除算部１２ｃでは、（３０＋６０）／８０を計算して、商が１、余り１０を算出する。
【００６０】
ここの除算の計算が意味していることは、到着パケットのパケットサイクルの総和（＝９０）が監視サイクル（＝８０）を１０サイクルだけ超えていることを示している。したがって、次のステップにおいては、監視サイクルは監視サイクルＣｙｃ１から、あらたな監視サイクルＣｙｃ２へ移り、余りの１０サイクルを監視サイクルＣｙｃ２で引き継いで、次ステップで用いる監視サイクル保持値とする。
【００６１】
〔Ｓ４〕監視サイクルＣｙｃ２に対して、パケットｐ４が装置に到着し、パケット長検出部１２ａは、パケットｐ４のパケットサイクル＝１６を検出したとする。ステップＳ３から引き継いだ監視サイクル保持値は１０であるので、加算部１２ｂは、パケットｐ４のパケットサイクル（１６）と、監視サイクル保持値（１０）とを加算して、加算値２６（＝１６＋１０）を出力する。監視サイクル除算部１２ｃでは、（１６＋１０）／８０を計算して、商が０、余り２６を算出する。以降、同様な処理が繰り返される。
【００６２】
以下、構成ブロックの説明に戻って、監視サイクル保持値ラッチ部１２ｄは、監視サイクル除算部１２ｃで算出した結果の余りの値を次のパケット到着時までラッチし、パケットが到着したら、保持している監視サイクル保持値を加算部１２ｂへ送信する。ただし、廃棄確率算定部１１へ入力する最大廃棄確率maxPを設定する外部信号が、最大廃棄確率maxP＝０％と設定された場合、または廃棄確率算定部１１から廃棄確率が０％を示す信号がイネーブルになった場合は、保持している値を“０”にセットする。
【００６３】
廃棄数乗算部１３は、監視サイクル除算部１２ｃにて算出した結果の商の値と、廃棄確率算定部１１で選択された廃棄サイクルとを用いて乗算を行い、廃棄されるべきサイクル数（廃棄数）を算出する。廃棄数乗算部１３における乗算式は、{廃棄数＝監視サイクル除算部１２ｃにて算出した商の値×廃棄サイクルの設定値}である。
【００６４】
例えば、商の値が１で、廃棄確率算定部１１で設定された廃棄サイクルが８サイクルであれば、１つの監視サイクル（８０サイクル×１）で廃棄される廃棄数は８サイクルとなる。また、商の値が２で、廃棄サイクルが８サイクルであったならば、２つの監視サイクル（８０×２サイクル）で廃棄される廃棄数は１６サイクルとなる。
【００６５】
廃棄判定比較部１４は、廃棄数乗算部１３で演算した結果と、前回パケット到着時に演算した廃棄サイクル保持値との比較を行い、廃棄数乗算部１３で求めた結果が廃棄サイクル保持値と等しい（または大きい）場合には、廃棄実行と判断し、セレクト信号ＳＬを例えば、“Ｈ”にする。条件判断式は、{廃棄数乗算部１３で演算した結果（廃棄数）≧廃棄サイクル保持値→廃棄処理実行}である。
【００６６】
ここで、パケットサイクルの廃棄を行うか否かの廃棄判定条件式が意味することは、前回の処理でパケットサイクルを廃棄した際の廃棄数（この廃棄数が廃棄サイクル保持値に該当する）から、監視サイクル毎に廃棄サイクル数を減算していって、減算結果が“０”（または減算結果が正の値）になることを監視することで、廃棄判定を行っている。廃棄サイクル保持値は、廃棄確率の分子を表しており、この分子に見合う分母になるまで（減算結果が０になるまで）次の廃棄を発生させない。
【００６７】
ここで、廃棄確率１０％（監視サイクルが８０サイクルで、廃棄サイクルが８サイクル）の条件において、今、５００サイクルのパケットが到着して、この５００サイクルのパケットを廃棄したときの動作について説明する。
【００６８】
図１４は５００サイクルのパケットを廃棄したときの動作を説明するための図である。５００サイクルのパケットが到着したとき、前回の廃棄サイクル保持値＝０とすると、この時点での廃棄サイクル保持値＝５００となる。その後、５００サイクル中に監視サイクルは６回存在するので、廃棄サイクル保持値は４５２（＝５００−６×８）となり、廃棄サイクル保持値は、以降８０サイクルのパケットデータ毎に、繰り返し８減算される。減算を繰り返して０になるには、４５２／８＝５６…４であるので、５６×８０＋６０＝４５４０サイクル相当のパケットがその後到着された時点で０となることがわかる。
【００６９】
ここで行っている処理は、５００パケットサイクルを廃棄した場合、廃棄確率１０％に見合うためには、監視サイクルがいくつ必要かということである。すなわち、廃棄確率の分子が５００なので、分母の監視サイクルが何サイクルになれば、廃棄確率が１０％になるかということである。
【００７０】
１つの廃棄区間で５００パケットサイクルを廃棄した場合、その廃棄区間が廃棄確率１０％になるには、その廃棄区間中に存在する監視サイクルは５０４０サイクルとなる（∵（５００／５０４０）×１００≒１０％）。したがって、廃棄が発生してから、次の廃棄を行うまでの間隔は（廃棄確率１０％で５００パケットサイクルを廃棄する廃棄区間は）、廃棄サイクル保持値４５２から８を繰り返し減算して、５００→０になるまでに要する到着パケットのパケットサイクル総数が廃棄区間ということになる。
【００７１】
以下、構成ブロックの説明に戻って、廃棄サイクル保持値ラッチ部１５ｄは、廃棄サイクル保持値をラッチする。廃棄サイクル保持値は、到着したパケットが廃棄判定となる場合と廃棄判定とならない場合とで値が異なる。ただし、廃棄確率算定部１１へ入力する最大廃棄確率maxPを設定する外部信号が、最大廃棄確率maxP＝０％と設定された場合、または廃棄確率算定部１１から廃棄確率が０％を示す信号がイネーブルになった場合は、保持している値を“０”にセットする。
【００７２】
廃棄サイクル保持値減算部１５ａは、到着したパケットが廃棄判定されなかった場合の次の廃棄サイクル保持値を算出する。演算式は{廃棄サイクル保持値＝前回の廃棄サイクル保持値−廃棄数乗算部１３で演算した結果（廃棄数）}である。
【００７３】
廃棄サイクル保持値加減算部１５ｂは、到着したパケットが廃棄判定された場合の次の廃棄サイクル保持値を算出部する。演算式は{廃棄サイクル保持値＝前回の廃棄サイクル保持値−廃棄数乗算部１３で演算した結果（廃棄数）＋パケットサイクル}である。
【００７４】
セレクタ１５ｃは、廃棄判定比較部１４にて判定した結果（廃棄実行か否か）を示すセレクト信号ＳＬにもとづき、廃棄サイクル保持値ラッチ部１５ｄで保持するデータの選択を行う。廃棄を行わない場合は（セレクト信号“Ｌ”）、廃棄サイクル保持値減算部１５ａからのデータを選択して出力し、廃棄を行う場合は（セレクト信号“Ｈ”）、廃棄サイクル保持値加減算部１５ｂからのデータを選択して出力する。
【００７５】
ここで、廃棄サイクル保持値減算部１５ａと廃棄サイクル保持値加減算部１５ｂとの違いについて説明する。廃棄判定比較部１４で廃棄発生と判定されなかった場合は、次の廃棄サイクル保持値は、廃棄サイクル保持値減算部１５ａによる{廃棄サイクル保持値−廃棄数}の演算式で求められる。このことは、廃棄確率１０％で５００パケットサイクルの廃棄を行う上記の例で示せば、５００→０になるまで８サイクルを繰り返し減算する処理を表している。
【００７６】
また、廃棄判定比較部１４で廃棄発生と判定された場合は、次の廃棄サイクル保持値は、廃棄サイクル保持値加減算部１５ｂによる{廃棄サイクル保持値−廃棄数＋パケットサイクル}の演算式で求められる。このことは、廃棄確率１０％で５００パケットサイクルの廃棄を行う上記の例で示せば、５０４０パケットサイクルは、監視サイクルが６３（＝５０４０／８０）個目に該当し、このときに廃棄実行と判定されるので、監視サイクル６３個目の廃棄サイクル保持値を廃棄サイクル保持値加減算部１５ｂで求めていることになり、そして、あらたな廃棄区間の最初の監視サイクル（６４個目の監視サイクル）で、その廃棄サイクル保持値が使用されることになる。
【００７７】
例えば、最初に５００パケットサイクルを廃棄したので、５００という値から１つの監視サイクル（８０サイクル）毎に繰り返し８サイクルを減算していくと、６３個目の監視サイクルで、減算した総和が５０４（＝６３×８）サイクルとなる。廃棄サイクル保持値減算部１５ａだけで減算処理をしていくと、廃棄処理実行と判定された６３個目の監視サイクルでは、廃棄サイクル保持値はマイナスの値となってしまう（８サイクルずつ減算していって０を通り越したということ）。
【００７８】
したがって、６３個目の監視サイクルでは（すなわち、廃棄処理実行と判定された場合では）、このときに到着したパケットのパケットサイクルを（廃棄サイクル保持値−廃棄数）に加算することで、この値を、６４個目の監視サイクルから始まる次の廃棄区間の最初の廃棄サイクル保持値とし、６３個目の監視サイクル時に到着したパケットまでを、５００パケットサイクル廃棄したときの廃棄確率１０％の分母の値とするものである（なお、ここで説明した処理の内容については、図１５以降でさらに詳しく説明する）。
【００７９】
以下、構成ブロックの説明に戻って、位相調整部１６ａは、到着したパケットの廃棄判定を監視サイクル回数算出部１２〜廃棄サイクル保持値算出部１５で行う間の処理遅延分の位相差の吸収を行う（時間調整を行う遅延素子である）。
【００８０】
廃棄処理部１６ｂは、位相調整されたパケットにパケット有効フラグを付加し、パケットが有効であった場合は（廃棄処理未実施）、パケット有効フラグをＯＮ(Write要求有り)にし、廃棄処理を行う場合は、パケット有効フラグをＯＦＦ（Write要求無し）にして、後段へ出力することでパケットの廃棄処理を行う。
【００８１】
キュー長監視部１６ｄは、パケットバッファ１６ｃ内に蓄積されているパケットのサイクル数をUp-Downカウンタを用いて管理し、蓄積量(平均キュー長Ｑａｖ)を廃棄確率算定部１１へ送信する。
【００８２】
Up-Downカウンタの制御としては、パケットに付加されているパケット有効フラグを監視し、フラグＯＮ(Write要求有り)の場合には、Up-Downカウンタのカウントアップを行い、フラグＯＦＦ(Write要求無し)の場合にはカウントアップを行わない。また、読み出し制御部１６ｅでパケットバッファ１６ｃからのパケットのRead要求があった場合には、そのRead要求のあったサイクル分をUp-Downカウンタからカウントダウンを行い、要求のない場合にはカウントダウンを行わない。カウントアップ／ダウンの条件が競合した場合には、Up-Downカウンタのカウンタ値は保持される。
【００８３】
読み出し制御部１６ｅは、キュー長監視部１６ｄで監視しているパケットバッファ１６ｃの容量を監視し、容量が‘０’でない場合は、Que長≠０として、パケットバッファ１６ｃに対してパケットのRead要求の指示を行う。パケットバッファ１６ｃは、Read要求にもとづいて、パケットデータの読み出しを行い出力する。
【００８４】
廃棄確率算定部１１は、近似廃棄確率テーブルＴ２を管理し、平均キュー長Ｑａｖ、最大廃棄確率maxP、しきい値（minTH／maxTH）が与えられることで、監視サイクル、廃棄サイクル、廃棄確率０％または１００％の設定信号を出力する。
【００８５】
廃棄確率算定部１１は、外部より設定される最大廃棄確率maxPにもとづき、図６、図７で示したような定率による廃棄確率から生成される近似廃棄確率テーブルＴ２によって、ステップ数ｓ１−ｓ９の選択を行い、外部より設定されるminTH／maxTHを８分割した領域に対して、キュー長監視部１６ｄでカウントしているUp-Downカウンタ値がどの領域にあるかの判定を行う。また、廃棄確率０％、１００％の検出を行うと共に、監視サイクルと廃棄サイクルの選択を行っている。
【００８６】
ここで、Up-Downカウンタ値がステップ数ｓ１よりも小さな値であった場合、輻輳制御を行うスレッショルドに達していないと判定し、廃棄率０％を設定する。また、Up-Downカウンタ値がステップ数ｓ９（maxTH）よりも大きな値であった場合、到着するパケットの全廃棄（廃棄率１００％）の判定を行い、廃棄率１００％を設定する。さらに、Up-Downカウンタ値がステップ数ｓ１〜ｓ９間にある場合には、輻輳制御を行うスレッショルドを超えていると判定し、カウンタ値から監視サイクル及び廃棄サイクルの選択を行う。
【００８７】
次に具体的な数値を用いて動作について詳しく説明する。動作例としては、最大廃棄確率maxP＝１０％で、先頭のパケットが到着したときに、ステップ数ｓ８を超えて（廃棄確率１０％）、廃棄処理判定が有効になったものとする。また、到着した複数のパケットに対して、それぞれのパケットサイクルが、１６、４０、８、９４、４０、３１２、４８、８、７３の順に検出されるものとする。
【００８８】
図１５、図１６は装置動作を説明するためのテーブルである。動作がわかりやすいように、廃棄判定処理に関わる動作の流れをテーブルにして最初に示しておく。
〔Ｓ１１〕パケットバッファ１６ｃに蓄積されたパケットデータ量がキュー長監視部１６ｄにて監視され、ステップ数ｓ８〜ｓ９の領域になったとして、パケット長検出部１２ａは、到着パケットのパケットサイクル＝１６を検出する。前回処理までの廃棄処理は未実施であるので、監視サイクル保持値ラッチ部１２ｄは初期値の‘０’を保持している。したがって、加算部１２ｂでは、１６＋０＝１６を算出する。
【００８９】
一方、廃棄確率算定部１１では、キュー長監視部１６ｄで選択された平均キュー長Ｑａｖの値（具体的にはUp-Downカウンタのカウント値）より、監視サイクル（＝８０）を選択する（以降、監視サイクル＝８０サイクル、廃棄サイクル＝８とする）。したがって、監視サイクル除算部１２ｃの演算にて、１６／８０＝０…１６（商＝０、余り＝１６）となる。
【００９０】
監視サイクル保持値ラッチ部１２ｄは余りを保持し、監視サイクル保持値＝１６となる。廃棄数乗算部１３では、廃棄確率算定部１１で選択された廃棄サイクル（＝８）により、商×廃棄サイクル＝０×８＝０を演算し、廃棄数０を求める。
【００９１】
廃棄判定比較部１４では、廃棄サイクル保持値ラッチ部１５ｄの初期値０と廃棄数乗算部１３で算出した廃棄数との比較を行う。ここでは廃棄数（０）＝初期値（０）なので、廃棄数≧廃棄サイクル保持値を満たすので、到着した１６パケットサイクルのパケットを廃棄すると判定する。
【００９２】
廃棄処理実行の判定となった場合は、廃棄サイクル保持値加減算部１５ｂの出力がセレクタ１５ｃで選択される。このとき、廃棄サイクル保持値加減算部１５ｂでは、廃棄サイクル保持値−廃棄数＋パケットサイクル＝０−０＋１６＝１６を算出するので、廃棄サイクル保持値ラッチ部１５ｄには１６が保持される。
【００９３】
一方、廃棄判定比較部１４で廃棄処理実行と判定されたので、廃棄処理部１６ｂでは、その旨を認識し、位相調整部１６ａで位相調整されたパケットに付加するパケット有効フラグをＯＦＦにする。そして、キュー長監視部１６ｄは、Up-Downカウンタのカウントアップはせずに、パケットバッファ１６ｃに対するWrite要求は行わず、１６パケットサイクルのパケットの書き込みをマスクする。
【００９４】
〔Ｓ１２〕次に到着したパケットは、パケット長検出部１２ａでパケットサイクル＝４０が検出される。加算部１２ｂでの加算結果は、パケットサイクル＝４０と、監視サイクル保持値ラッチ部１２ｄで保持されている監視サイクル保持値＝１６とを加算して５６となる。
【００９５】
監視サイクル除算部１２ｃは、加算値を監視サイクルで除算して、５６／８０＝０…５６（商＝０、余り＝５６）となる。監視サイクル保持値ラッチ部１２ｄは余りを保持し、監視サイクル保持値＝５６となる。廃棄数乗算部１３では、商×廃棄サイクル＝０×８＝０を演算し、廃棄数０を求める。
【００９６】
廃棄判定比較部１４においては、ここでは廃棄数（０）＜廃棄サイクル保持値（１６）なので、廃棄数≧廃棄サイクル保持値を満たさないので、到着した４０パケットサイクルのパケットを廃棄しないと判定する。
【００９７】
廃棄処理しないので、廃棄サイクル保持値減算部１５ａの出力がセレクタ１５ｃで選択される。このとき、廃棄サイクル保持値減算部１５ａでは、廃棄サイクル保持値−廃棄数＝１６−０＝１６を算出するので、廃棄サイクル保持値ラッチ部１５ｄには１６が保持される。
【００９８】
一方、廃棄判定比較部１４で廃棄処理はしないと判定されたので、廃棄処理部１６ｂでは、その旨を認識し、位相調整部１６ａで位相調整されたパケットに付加するパケット有効フラグをＯＮにする。そして、キュー長監視部１６ｄは、Up-Downカウンタのカウントアップを行い、パケットバッファ１６ｃに対するWrite要求を行って、４０パケットサイクルのパケットの書き込みを実行する。
【００９９】
〔Ｓ１３〕次に到着したパケットは、パケット長検出部１２ａでパケットサイクル＝８が検出される。加算部１２ｂでの加算結果は、パケットサイクル＝８と、監視サイクル保持値ラッチ部１２ｄで保持されている監視サイクル保持値＝５６とを加算して６４となる。
【０１００】
監視サイクル除算部１２ｃは、加算値を監視サイクルで除算して、６４／８０＝０…６４（商＝０、余り＝６４）となる。監視サイクル保持値ラッチ部１２ｄは余りを保持し、監視サイクル保持値＝６４となる。廃棄数乗算部１３では、商×廃棄サイクル＝０×８＝０を演算し、廃棄数０を求める。
【０１０１】
廃棄判定比較部１４においては、ここでは廃棄数（０）＜廃棄サイクル保持値（１６）なので、廃棄数≧廃棄サイクル保持値を満たさないので、到着した８パケットサイクルのパケットを廃棄しないと判定する。
【０１０２】
廃棄処理しないので、廃棄サイクル保持値減算部１５ａの出力がセレクタ１５ｃで選択される。このとき、廃棄サイクル保持値減算部１５ａでは、廃棄サイクル保持値−廃棄数＝１６−０＝１６を算出するので、廃棄サイクル保持値ラッチ部１５ｄには１６が保持される。
【０１０３】
一方、廃棄判定比較部１４で廃棄処理はしないと判定されたので、廃棄処理部１６ｂでは、その旨を認識し、位相調整部１６ａで位相調整されたパケットに付加するパケット有効フラグをＯＮにする。そして、キュー長監視部１６ｄは、Up-Downカウンタのカウントアップを行い、パケットバッファ１６ｃに対するWrite要求を行って、８パケットサイクルのパケットの書き込みを実行する。
【０１０４】
〔Ｓ１４〕次に到着したパケットは、パケット長検出部１２ａでパケットサイクル＝９４が検出される。加算部１２ｂでの加算結果は、パケットサイクル＝９４と、監視サイクル保持値ラッチ部１２ｄで保持されている監視サイクル保持値＝６４とを加算して１５８となる。
【０１０５】
監視サイクル除算部１２ｃは、加算値を監視サイクルで除算して、１５８／８０＝１…７８（商＝１、余り＝７８）となる。監視サイクル保持値ラッチ部１２ｄは余りを保持し、監視サイクル保持値＝７８となる。廃棄数乗算部１３では、商×廃棄サイクル＝１×８＝８を演算し、廃棄数８を求める。
【０１０６】
廃棄判定比較部１４においては、ここでは廃棄数（８）＜廃棄サイクル保持値（１６）なので、廃棄数≧廃棄サイクル保持値を満たさないので、到着した９４パケットサイクルのパケットを廃棄しないと判定する。
【０１０７】
廃棄処理しないので、廃棄サイクル保持値減算部１５ａの出力がセレクタ１５ｃで選択される。このとき、廃棄サイクル保持値減算部１５ａでは、廃棄サイクル保持値−廃棄数＝１６−８＝８を算出するので、廃棄サイクル保持値ラッチ部１５ｄには８が保持される。
【０１０８】
一方、廃棄判定比較部１４で廃棄処理はしないと判定されたので、廃棄処理部１６ｂでは、その旨を認識し、位相調整部１６ａで位相調整されたパケットに付加するパケット有効フラグをＯＮにする。そして、キュー長監視部１６ｄは、Up-Downカウンタのカウントアップを行い、パケットバッファ１６ｃに対するWrite要求を行って、９４パケットサイクルのパケットの書き込みを実行する。
【０１０９】
〔Ｓ１５〕次に到着したパケットは、パケット長検出部１２ａでパケットサイクル＝４０が検出される。加算部１２ｂでの加算結果は、パケットサイクル＝４０と、監視サイクル保持値ラッチ部１２ｄで保持されている監視サイクル保持値＝７８とを加算して１１８となる。
【０１１０】
監視サイクル除算部１２ｃは、加算値を監視サイクルで除算して、１１８／８０＝１…３８（商＝１、余り＝３８）となる。監視サイクル保持値ラッチ部１２ｄは余りを保持し、監視サイクル保持値＝３８となる。廃棄数乗算部１３では、商×廃棄サイクル＝１×８＝８を演算し、廃棄数８を求める。
【０１１１】
廃棄判定比較部１４においては、ここでは廃棄数（８）＝廃棄サイクル保持値（８）なので、廃棄数≧廃棄サイクル保持値を満たすので、到着した４０パケットサイクルのパケットを廃棄すると判定する。
【０１１２】
廃棄処理を実行するので、廃棄サイクル保持値加減算部１５ｂの出力がセレクタ１５ｃで選択される。このとき、廃棄サイクル保持値加減算部１５ｂでは、廃棄サイクル保持値−廃棄数＋パケットサイクル＝８−８＋４０＝４０を算出するので、廃棄サイクル保持値ラッチ部１５ｄには４０が保持される。
【０１１３】
一方、廃棄判定比較部１４で廃棄処理実行と判定されたので、廃棄処理部１６ｂでは、その旨を認識し、位相調整部１６ａで位相調整されたパケットに付加するパケット有効フラグをＯＦＦにする。そして、キュー長監視部１６ｄは、Up-Downカウンタのカウントアップはせずに、パケットバッファ１６ｃに対するWrite要求は行わず、４０パケットサイクルのパケットの書き込みをマスクする。
【０１１４】
ここで、ステップＳ１１〜Ｓ１５までの動作についてまとめて説明する。図１７、図１８はステップＳ１１〜Ｓ１５までの動作の概要を示す図である。最初のステップＳ１１で１６パケットサイクルのパケットが到着したときに、このパケットを廃棄して廃棄サイクル保持値＝１６とした。ここからパケット廃棄判定処理を開始して、廃棄確率１０％の廃棄処理を行っていくことになる（廃棄確率１０％の分子（＝１６）に対応する分母を見つけるということ）。
【０１１５】
図１７に対し、ステップＳ１２では、４０パケットサイクルが到着する。このとき、累積パケットサイクルが５６で、監視サイクルＣｙｃ１の８０サイクルを満たしていないので、８サイクルの減算は行えず、廃棄サイクル保持値は１６のままである。ステップＳ１３では、８パケットサイクルが到着する。このとき、累積パケットサイクルが６４で、監視サイクルＣｙｃ１の８０サイクルを満たしていないので、８サイクルの減算は行えず、廃棄サイクル保持値は１６のままである。
【０１１６】
図１８に対し、ステップＳ１４では、９４パケットサイクルが到着する。このとき、累積パケットサイクルが１５８であり、監視サイクルＣｙｃ１を超えて、７８サイクル分、監視サイクルＣｙｃ２をまたがることになる。したがって、８０サイクルを満たしているので、監視サイクルＣｙｃ１に対して８サイクルの減算が行え、廃棄サイクル保持値は１６−８＝８となる。
【０１１７】
ステップＳ１５では、４０パケットサイクルが到着する。このとき、監視サイクルＣｙｃ２からの累積パケットサイクルは１１８であり、監視サイクルＣｙｃ２を超えて、３８サイクル分、監視サイクルＣｙｃ３をまたがることになる。したがって、監視サイクルＣｙｃ２に対して８サイクルの減算が行えるので、前回の廃棄サイクル保持値８から８を減算して０になるが（減算値０（＝１６−８−８）になったことにより、９４パケットサイクルのパケットが到着したところまでが、最初に１６パケットサイクル廃棄したときの廃棄確率１０％に見合う分母のパケットサイクルの総量となる）、到着パケットの４０パケットサイクルを加算（８−８＋４０＝４０）して、４０という値を次の廃棄区間の廃棄サイクル保持値とする。
【０１１８】
ここで、最初の廃棄サイクル保持値＝１６に対して、８が２回減算されれば、廃棄判定条件を満たす。ここではステップＳ１５の４０パケットサイクルが到着したときに、次の廃棄判定が行われるので、その手前の９４パケットサイクルが到着したところまでが、最初に１６パケットサイクル廃棄したときの廃棄確率１０％となるための区間となり、それは（１６＋４０＋８＋９４）＝１５８サイクルであるので、（１６／１５８）×１００≒１０％であり、廃棄確率１０％となっていることがわかる。
【０１１９】
また、次の廃棄確率１０％の区間としては、ステップＳ１５で到着した４０パケットサイクルを廃棄して、廃棄サイクル保持値を４０（＝８−８＋４０）として、開始することになる。したがって、今度は分子（＝４０）に見合う廃棄確率１０％となる分母を見つけていくことになる。
【０１２０】
次に図１５、図１６で示したテーブルに戻ってステップＳ１６から説明を続ける。
〔Ｓ１６〕次に到着したパケットは、パケット長検出部１２ａでパケットサイクル＝３１２が検出される。加算部１２ｂでの加算結果は、パケットサイクル＝３１２と、監視サイクル保持値ラッチ部１２ｄで保持されている監視サイクル保持値＝３８とを加算して３５０となる。
【０１２１】
監視サイクル除算部１２ｃは、加算値を監視サイクルで除算して、３５０／８０＝４…３０（商＝４、余り＝３０）となる。監視サイクル保持値ラッチ部１２ｄは余りを保持し、監視サイクル保持値＝３０となる。廃棄数乗算部１３では、商×廃棄サイクル＝４×８＝３２を演算し、廃棄数３２を求める。
【０１２２】
廃棄判定比較部１４においては、ここでは廃棄数（３２）＜廃棄サイクル保持値（４０）なので、廃棄数≧廃棄サイクル保持値を満たさないので、到着した３１２パケットサイクルのパケットを廃棄しないと判定する。
【０１２３】
廃棄処理しないので、廃棄サイクル保持値減算部１５ａの出力がセレクタ１５ｃで選択される。このとき、廃棄サイクル保持値減算部１５ａでは、廃棄サイクル保持値−廃棄数＝４０−３２＝８を算出するので、廃棄サイクル保持値ラッチ部１５ｄには８が保持される。
【０１２４】
一方、廃棄判定比較部１４で廃棄処理はしないと判定されたので、廃棄処理部１６ｂでは、その旨を認識し、位相調整部１６ａで位相調整されたパケットに付加するパケット有効フラグをＯＮにする。そして、キュー長監視部１６ｄは、Up-Downカウンタのカウントアップを行い、パケットバッファ１６ｃに対するWrite要求を行って、３１２パケットサイクルのパケットの書き込みを実行する。
【０１２５】
〔Ｓ１７〕次に到着したパケットは、パケット長検出部１２ａでパケットサイクル＝４８が検出される。加算部１２ｂでの加算結果は、パケットサイクル＝４８と、監視サイクル保持値ラッチ部１２ｄで保持されている監視サイクル保持値＝３０とを加算して７８となる。
【０１２６】
監視サイクル除算部１２ｃは、加算値を監視サイクルで除算して、７８／８０＝０…７８（商＝０、余り＝７８）となる。監視サイクル保持値ラッチ部１２ｄは余りを保持し、監視サイクル保持値＝７８となる。廃棄数乗算部１３では、商×廃棄サイクル＝０×８＝０を演算し、廃棄数０を求める。
【０１２７】
廃棄判定比較部１４においては、ここでは廃棄数（０）＜廃棄サイクル保持値（８）なので、廃棄数≧廃棄サイクル保持値を満たさないので、到着した４８パケットサイクルのパケットを廃棄しないと判定する。
【０１２８】
廃棄処理しないので、廃棄サイクル保持値減算部１５ａの出力がセレクタ１５ｃで選択される。このとき、廃棄サイクル保持値減算部１５ａでは、廃棄サイクル保持値−廃棄数＝８−０＝８を算出するので、廃棄サイクル保持値ラッチ部１５ｄには８が保持される。
【０１２９】
一方、廃棄判定比較部１４で廃棄処理はしないと判定されたので、廃棄処理部１６ｂでは、その旨を認識し、位相調整部１６ａで位相調整されたパケットに付加するパケット有効フラグをＯＮにする。そして、キュー長監視部１６ｄは、Up-Downカウンタのカウントアップを行い、パケットバッファ１６ｃに対するWrite要求を行って、４８パケットサイクルのパケットの書き込みを実行する。
【０１３０】
〔Ｓ１８〕次に到着したパケットは、パケット長検出部１２ａでパケットサイクル＝８が検出される。加算部１２ｂでの加算結果は、パケットサイクル＝８と、監視サイクル保持値ラッチ部１２ｄで保持されている監視サイクル保持値＝７８とを加算して８６となる。
【０１３１】
監視サイクル除算部１２ｃは、加算値を監視サイクルで除算して、８６／８０＝１…６（商＝１、余り＝６）となる。監視サイクル保持値ラッチ部１２ｄは余りを保持し、監視サイクル保持値＝６となる。廃棄数乗算部１３では、商×廃棄サイクル＝１×８＝８を演算し、廃棄数８を求める。
【０１３２】
廃棄判定比較部１４においては、ここでは廃棄数（８）＝廃棄サイクル保持値（８）なので、廃棄数≧廃棄サイクル保持値を満たすので、到着した８パケットサイクルのパケットを廃棄すると判定する。
【０１３３】
廃棄処理を実行するので、廃棄サイクル保持値加減算部１５ｂの出力がセレクタ１５ｃで選択される。このとき、廃棄サイクル保持値加減算部１５ｂでは、廃棄サイクル保持値−廃棄数＋パケットサイクル＝８−８＋８＝８を算出するので、廃棄サイクル保持値ラッチ部１５ｄには８が保持される。
【０１３４】
一方、廃棄判定比較部１４で廃棄処理実行と判定されたので、廃棄処理部１６ｂでは、その旨を認識し、位相調整部１６ａで位相調整されたパケットに付加するパケット有効フラグをＯＦＦにする。そして、キュー長監視部１６ｄは、Up-Downカウンタのカウントアップはせずに、パケットバッファ１６ｃに対するWrite要求は行わず、８パケットサイクルのパケットの書き込みをマスクする。
【０１３５】
ここで、ステップＳ１６〜Ｓ１８までの動作についてまとめて説明する。図１９はステップＳ１６〜Ｓ１８までの動作の概要を示す図である。ステップＳ１５で４０パケットサイクルのパケットが到着したときに、このパケットを廃棄して廃棄サイクル保持値＝４０とした。ここからパケット廃棄判定を開始して、廃棄確率１０％の廃棄処理を行っていくことになる（廃棄確率１０％の分子（＝４０）に対応する分母を見つけるということ）。
【０１３６】
ステップＳ１６〜Ｓ１８ではそれぞれ、パケットサイクル＝３１２、４８、８のパケットが到着するので、パケットサイクル＝３１２が到着したときでは、監視サイクルＣｙｃ３〜Ｃｙｃ６の８０サイクルを４つ満たすので廃棄数は３２（＝８×４）となり、このとき廃棄サイクル保持値は８（＝４０−３２）となる。
【０１３７】
また、パケットサイクル＝４８が到着したときでは、監視サイクルＣｙｃ７の８０サイクルを満たしてないので、廃棄数は０となり、廃棄サイクル保持値は８（＝８−０）となる。そして、パケットサイクル＝８が到着したときでは、監視サイクルＣｙｃ７の８０サイクルを１つ満たすので、廃棄数は８（＝８×１）となり、前回の廃棄サイクル保持値８から８を減算すると０になるが（減算値０（＝４０−８×４−８）になったことにより、４８パケットサイクルのパケットが到着したところまでが、最初に４０パケットサイクル廃棄したときの廃棄確率１０％に見合う分母のパケットサイクルの総量となる）、到着パケットの８パケットサイクルを加算（８−８＋８＝８）して、８という値を次の廃棄区間の廃棄サイクル保持値とする。
【０１３８】
最初の廃棄サイクル保持値＝４０に対して、８が５回減算されれば、廃棄判定条件を満たす。ここではステップＳ１８の８パケットサイクルが到着したときに、次の廃棄判定が行われるので、その手前の４８パケットサイクルが到着したところまでが、最初に４０パケットサイクル廃棄したときの廃棄確率１０％となるための区間となり、それは（４０＋３１２＋４８）＝４００サイクルであるので、（４０／４００）×１００＝１０％であり、廃棄確率１０％となっていることがわかる。
【０１３９】
また、次の廃棄確率１０％の区間としては、ステップＳ１８で到着した８パケットサイクルを廃棄して、廃棄サイクル保持値を８（＝８−８＋８）として、開始することになる。したがって、今度は分子（＝８）に見合う廃棄確率１０％となる分母を見つけていくことになる。
【０１４０】
次に図１５、図１６で示したテーブルに戻ってステップＳ１９の説明を続ける。
〔Ｓ１９〕次に到着したパケットは、パケット長検出部１２ａでパケットサイクル＝７３が検出される。加算部１２ｂでの加算結果は、パケットサイクル＝７３と、監視サイクル保持値ラッチ部１２ｄで保持されている監視サイクル保持値＝６とを加算して７９となる。
【０１４１】
監視サイクル除算部１２ｃは、加算値を監視サイクルで除算して、７９／８０＝０…７９（商＝０、余り＝７９）となる。監視サイクル保持値ラッチ部１２ｄは余りを保持し、監視サイクル保持値＝７９となる。廃棄数乗算部１３では、商×廃棄サイクル＝０×８＝０を演算し、廃棄数０を求める。
【０１４２】
廃棄判定比較部１４においては、ここでは廃棄数（０）＜廃棄サイクル保持値（８）なので、廃棄数≧廃棄サイクル保持値を満たさないので、到着した７９パケットサイクルのパケットを廃棄しないと判定する。
【０１４３】
廃棄処理しないので、廃棄サイクル保持値減算部１５ａの出力がセレクタ１５ｃで選択される。このとき、廃棄サイクル保持値減算部１５ａでは、廃棄サイクル保持値−廃棄数＝８−０＝８を算出するので、廃棄サイクル保持値ラッチ部１５ｄには８が保持される。
【０１４４】
一方、廃棄判定比較部１４で廃棄処理はしないと判定されたので、廃棄処理部１６ｂでは、その旨を認識し、位相調整部１６ａで位相調整されたパケットに付加するパケット有効フラグをＯＮにする。そして、キュー長監視部１６ｄは、Up-Downカウンタのカウントアップを行い、パケットバッファ１６ｃに対するWrite要求を行って、７３パケットサイクルのパケットの書き込みを実行する。
【０１４５】
なお、ステップＳ１９では、７３パケットサイクルのパケットが到着した時点で廃棄確率１０％を満たす廃棄区間となることがわかる。図２０はステップＳ１９の動作の概要を示す図である。最初に８パケットサイクル廃棄して、廃棄サイクル保持値＝８であり、監視サイクル保持値＝６に対して、７３パケットサイクルのパケットが到着している。
【０１４６】
したがって、次ステップでパケットが到着すれば、監視サイクルＣｙｃ８から監視サイクルＣｙｃ９へまたぐことがわかるので、７３パケットサイクルのパケットが到着した時点で、監視サイクルＣｙｃ８に対して、前回の廃棄サイクル保持値８から８を減算することができ、０となることがわかる。ここでの廃棄区間は８１（＝８＋７３）であり、（８１／８０）×１００≒１０％となる。
【０１４７】
なお、ステップＳ１１〜Ｓ１９の全体でみると、到着したパケットサイクルの総和は６３９（＝１６＋４０＋８＋９４＋４０＋３１２＋４８＋８＋７３）パケットサイクルであり、この区間に廃棄したパケットサイクルは６４（＝１６＋４０＋８）であるので、（６４／６３９）×１００≒１０％となる。
【０１４８】
次に動作フローチャートを示す。図２１、図２２は本発明のパケット廃棄アルゴリズムを示すフローチャートである。
〔Ｓ２１〕パケットを格納するキューの平均キュー長Ｑａｖが最小しきい値minTHより小さいか否かを判断する。平均キュー長Ｑａｖが最小しきい値minTHより小さければ、ステップＳ２２へいき、そうでなければステップＳ２３へいく。
【０１４９】
〔Ｓ２２〕監視サイクル保持値を０とする（到着パケットをすべてキューに書き込んでパケット廃棄はしないので、廃棄確率に見合うパケット廃棄を行うときに必要な監視サイクル保持値といったパラメータは不要である）。ステップＳ２６へいく。
【０１５０】
〔Ｓ２３〕パケットを格納するキューの平均キュー長Ｑａｖが最大しきい値maxTHより大きいか否かを判断する。平均キュー長Ｑａｖが最大しきい値maxTHより大きければ、ステップＳ２４へいき、そうでなければステップＳ２７へいく。
【０１５１】
〔Ｓ２４〕監視サイクル保持値を０とする（到着パケットをすべて廃棄するので、廃棄確率に見合うパケット廃棄を行うときに必要な監視サイクル保持値といったパラメータは不要である）。
【０１５２】
〔Ｓ２５〕到着パケットを全廃棄する。
〔Ｓ２６〕廃棄サイクル保持値を０とする（廃棄確率に見合うパケット廃棄を行うときに必要な廃棄サイクル保持値といったパラメータは不要である）。
【０１５３】
〔Ｓ２７〕パケットサイクルを監視サイクル保持値で除算する。
〔Ｓ２８〕除算した余りを次回処理における監視サイクル保持値とする。
〔Ｓ２９〕除算した商と廃棄サイクルとを乗算した値（廃棄数）≧廃棄サイクル保持値を満たすか否かを判断する。満たす場合はステップＳ３０へ、満たさない場合はステップＳ３２へいく。
【０１５４】
〔Ｓ３０〕到着パケットを廃棄する。
〔Ｓ３１〕次処理の廃棄サイクル保持値を、廃棄サイクル保持値←廃棄サイクル保持値−廃棄数＋パケットサイクルにより求める。
〔Ｓ３２〕次処理の廃棄サイクル保持値を、廃棄サイクル保持値←廃棄サイクル保持値−廃棄数により求める。
【０１５５】
次にパケット廃棄の動作をタイムチャートで示す。図２３、図２４は定率によるパケット廃棄動作を示すタイムチャートである。図に示すタイムチャートは、パケットサイクルが１６、４０、８、９４、４０、３１２、４８、８、７３のパケットが順に到着したときの廃棄確率１０％の廃棄処理を示しており（上述したステップＳ１１〜Ｓ１９の処理をタイムチャートで表現したものである）、廃棄イネーブル、パケットサイクル、廃棄カウンタといったパラメータを設けてこれらの関係を表している。廃棄イネーブルの周期は、１監視サイクルで８０サイクルである。
【０１５６】
図２３に対し、最初に１６パケットサイクルの廃棄が行われると、廃棄サイクル保持値１６から監視サイクルＣｙｃ１で８サイクル減算し、さらに監視サイクルＣｙｃ２で８サイクル減算して０になる。ここまでのパケットサイクル総量は１６＋４０＋８＋９４＝１５８である。したがって、（１６／１５８）×１００≒１０％の廃棄確率を満たしている。
【０１５７】
図２４に対し、４０パケットサイクルの廃棄が行われ、廃棄サイクル保持値４０から監視サイクルＣｙｃ３〜Ｃｙｃ７で８サイクルを繰り返し減算して０になる。ここまでのパケットサイクル総量は４０＋３１２＋４８＝４００である。したがって、（４０／４００）×１００＝１０％の廃棄確率を満たしている。
【０１５８】
次に８パケットサイクルの廃棄が行われ、廃棄サイクル保持値８から監視サイクルＣｙｃ８で８サイクル減算して０になる。ここまでのパケットサイクル総量は８＋７３＝８１である。したがって、（８／８１）×１００≒１０％の廃棄確率を満たしている。
【０１５９】
以上説明したように、本発明によれば、ハードウェアのみで平均キュー長の伸長に瞬時に追随して輻輳制御を行うことができるので、従来のようにマイコンやＤＳＰ（Digital Signal Processor）などを用いて、ファームウェア処理によって行われていた乗算・除算を繰り返していた処理の負荷を軽減することができ、高速処理を可能にする。
【０１６０】
また、従来では、パケット廃棄判定処理にかかる処理時間分にキューが伸長する値を考慮して、平均キュー長のしきい値を設定する必要があったが、本発明では、パケット廃棄判定処理時間を短縮できるため、しきい値を大きな値に設定することが可能になり、その結果、システムが有する通信速度を向上させることが可能になる。
【０１６１】
（付記１）  パケットの廃棄を行って、ネットワークトラフィックの輻輳回避を行うパケット処理装置において、
最大廃棄確率と平均キュー長より、廃棄確率を監視サイクルと廃棄サイクルで定義する近似廃棄確率テーブルを管理する廃棄確率算定部と、
到着したパケットのパケットサイクルを検出し、パケットサイクルに監視サイクル保持値を加算した加算値を監視サイクルで除算して、累積パケットサイクルに含まれる監視サイクルの回数を算出する監視サイクル回数算出部と、
監視サイクルの回数と廃棄サイクルを乗算して廃棄数を算出する廃棄数乗算部と、
廃棄数と廃棄サイクル保持値とを比較して廃棄判定を行い、廃棄数が廃棄サイクル保持値と等しい、または廃棄数が廃棄サイクル保持値より大きい場合は、到着したパケットを廃棄実行と設定する廃棄判定比較部と、
廃棄が発生してから次の廃棄が発生するまでの、廃棄確率を満たすサイクル区間を求めるために、廃棄判定結果にもとづいて、前回処理時の廃棄サイクル保持値から廃棄数を減算した値である廃棄サイクル保持値を繰り返し算出し、算出値を前記廃棄判定比較部へ送信する廃棄サイクル保持値算出部と、
パケットを格納するキューを含み、パケットの廃棄実行が設定されたときには、キューに入力する前のパケットの廃棄を行うパケット廃棄処理部と、
を有することを特徴とするパケット処理装置。
【０１６２】
（付記２）  前記廃棄確率算定部は、平均キュー長が最小しきい値と最大しきい値の間にあるときの廃棄確率曲線を、最大廃棄確率を複数の割合に分割して、平均キュー長の伸張度合いに応じて、定率で廃棄を行えるような階段状の波形に変換したグラフにもとづいて生成された前記近似廃棄確率テーブルを管理することを特徴とする付記１記載のパケット処理装置。
【０１６３】
（付記３）  前記廃棄確率算定部、前記監視サイクル回数算出部、前記廃棄数乗算部、前記廃棄判定比較部、前記廃棄サイクル保持値算出部、前記パケット廃棄処理部は、ハードウェアのみで機能を構成することを特徴とする付記１記載のパケット処理装置。
【０１６４】
（付記４）  前記監視サイクル回数算出部は、到着パケットのパケットサイクルを検出するパケット長検出部と、パケットサイクルと監視サイクル保持値とを加算する加算部と、加算値を監視サイクルで除算して、監視サイクルの回数を表す商と、監視サイクル保持値を表す余りとを算出する監視サイクル除算部と、次パケットが到着するまで監視サイクル保持値をラッチする監視サイクル保持値ラッチ部と、から構成されることを特徴とする付記３記載のパケット処理装置。
【０１６５】
（付記５）  前記廃棄サイクル保持値算出部は、到着パケットが廃棄処理実行と判定されなかった場合に、前回処理時の廃棄サイクル保持値から廃棄数を減算して廃棄サイクル保持値を算出する廃棄サイクル保持値減算部と、到着パケットが廃棄処理実行と判定された場合に、前回処理時の廃棄サイクル保持値から廃棄数を減算し、かつ到着パケットのパケットサイクルを加算して、次の廃棄区間の廃棄サイクル保持値を算出する廃棄サイクル保持値加減算部と、前記廃棄判定比較部の廃棄判定結果にもとづいて、前記廃棄サイクル保持値減算部と前記廃棄サイクル保持値加減算部の出力を選択するセレクタと、前記セレクタから出力された廃棄サイクル保持値をラッチする廃棄サイクル保持値ラッチ部と、から構成されることを特徴とする付記３記載のパケット処理装置。
【０１６６】
（付記６）  前記パケット廃棄処理部は、到着パケットの廃棄判定処理にかかる位相差の吸収を行う位相調整部と、パケットを格納するパケットバッファと、前記パケットバッファへの書き込みを行うか否かのフラグを到着パケットに付加し、到着パケットが廃棄処理実行と判定されなかった場合には、フラグをＯＮにして書き込み要求を行い、到着パケットが廃棄処理実行と判定された場合には、フラグをＯＦＦにして書き込みをマスクする廃棄処理部と、フラグのＯＮ／ＯＦＦの状態から、前記パケットバッファの格納状態を認識して平均キュー長を監視するキュー長監視部と、前記パケットバッファからパケットの読み出しを行う読み出し制御部と、から構成されることを特徴とする付記３記載のパケット処理装置。
【０１６７】
（付記７）  パケットの廃棄を行って、ネットワークトラフィックの輻輳回避を行うパケット廃棄方法において、
最大廃棄確率と平均キュー長より、廃棄確率を監視サイクルと廃棄サイクルで定義する近似廃棄確率テーブルを管理して、監視サイクル及び廃棄サイクルを設定し、
到着したパケットのパケットサイクルを検出し、
パケットサイクルに監視サイクル保持値を加算した加算値を監視サイクルで除算して、除算した商を累積パケットサイクルに含まれる監視サイクルの回数、除算した余りを監視サイクル保持値とし、
監視サイクルの回数と廃棄サイクルを乗算して廃棄数を算出し、
廃棄数と廃棄サイクル保持値とを比較して廃棄判定を行い、廃棄数が廃棄サイクル保持値と等しい、または廃棄数が廃棄サイクル保持値より大きい場合は、到着したパケットを廃棄実行と設定し、
廃棄が発生してから次の廃棄が発生するまでの、廃棄確率を満たすサイクル区間を求めるために、廃棄判定結果にもとづいて、前回処理時の廃棄サイクル保持値から廃棄数を減算した値である廃棄サイクル保持値を繰り返し算出して、算出値を廃棄判定に使用し、
パケットの廃棄実行が設定されたときには、キューに入力する前のパケットの廃棄を行うことを特徴とするパケット廃棄方法。
【０１６８】
（付記８）  廃棄サイクル保持値を求める場合は、到着パケットが廃棄処理実行と判定されなかった場合には、前回処理時の廃棄サイクル保持値から廃棄数を減算して廃棄サイクル保持値を算出し、到着パケットが廃棄処理実行と判定された場合には、前回処理時の廃棄サイクル保持値から廃棄数を減算し、かつ到着パケットのパケットサイクルを加算して、次の廃棄区間の廃棄サイクル保持値を算出することを特徴とする付記７記載のパケット廃棄方法。
【図面の簡単な説明】
【０１６９】
【図１】本発明のパケット処理装置の原理図である。
【図２】ＲＥＤのパケット廃棄の概念図である。
【図３】ＲＥＤのパケット廃棄の概念図である。
【図４】ＲＥＤのパケット廃棄の概念図である。
【図５】ＲＥＤの廃棄確率曲線を示す図である。
【図６】定率によって廃棄を実現するための廃棄確率を示す図である。
【図７】定率によって廃棄を実現するための廃棄確率を示す図である。
【図８】近似廃棄確率テーブルを示す図である。
【図９】近似廃棄確率テーブルを示す図である。
【図１０】パケット処理装置の構成を示す図である。
【図１１】パケット処理装置の構成を示す図である。
【図１２】パケット到着から監視サイクル保持値が求まるまでの動作を説明するための概念図である。
【図１３】パケット到着から監視サイクル保持値が求まるまでの動作を説明するための概念図である。
【図１４】５００サイクルのパケットを廃棄したときの動作を説明するための図である。
【図１５】装置動作を説明するためのテーブルである。
【図１６】装置動作を説明するためのテーブルである。
【図１７】ステップＳ１１〜Ｓ１５までの動作の概要を示す図である。
【図１８】ステップＳ１１〜Ｓ１５までの動作の概要を示す図である。
【図１９】ステップＳ１６〜Ｓ１８までの動作の概要を示す図である。
【図２０】ステップＳ１９の動作の概要を示す図である。
【図２１】本発明のパケット廃棄アルゴリズムを示すフローチャートである。
【図２２】本発明のパケット廃棄アルゴリズムを示すフローチャートである。
【図２３】定率によるパケット廃棄動作を示すタイムチャートである。
【図２４】定率によるパケット廃棄動作を示すタイムチャートである。
【符号の説明】
【０１７０】
１０  パケット処理装置
１１  廃棄確率算定部
１２  監視サイクル回数算出部
１３  廃棄数乗算部
１４  廃棄判定比較部
１５  廃棄サイクル保持値算出部
１６  パケット廃棄処理部
【図１】
2005094392.tif 000004
【図２】
2005094392.tif 000005
【図３】
2005094392.tif 000006
【図４】
2005094392.tif 000007
【図５】
2005094392.tif 000008
【図６】
2005094392.tif 000009
【図７】
2005094392.tif 000010
【図８】
2005094392.tif 000011
【図９】
2005094392.tif 000012
【図１０】
2005094392.tif 000013
【図１１】
2005094392.tif 000014
【図１２】
2005094392.tif 000015
【図１３】
2005094392.tif 000016
【図１４】
2005094392.tif 000017
【図１５】
2005094392.tif 000018
【図１６】
2005094392.tif 000019
【図１７】
2005094392.tif 000020
【図１８】
2005094392.tif 000021
【図１９】
2005094392.tif 000022
【図２０】
2005094392.tif 000023
【図２１】
2005094392.tif 000024
【図２２】
2005094392.tif 000025
【図２３】
2005094392.tif 000026
【図２４】
2005094392.tif 000027