(57)【要約】  ハードウェアでＲＥＤ処理を構成し、かつ廃棄誤差の低減化を図る。  パケットバッファ（１１）は、パケットを格納するキュー（１１ａ）を備える。実キュー長位置判別部（１２）は、サンプリング周期毎に、パケットが格納されたキュー（１１ａ）の占有状態である最新の実キュー長を取得し、ランダム初期検知区間に対して、実キュー長が存在する位置関係を判別して位置情報を出力する。廃棄確率演算処理部（１３）は、位置情報にもとづいて、サンプリング周期毎に、パケットの廃棄確率を算出する。パケット廃棄処理部（１４）は、廃棄確率にもとづいて、サンプリング周期毎に、キュー（１１ａ）に格納される前のパケットの廃棄処理を行う。廃棄確率演算処理部（１３）は、位置情報から、実キュー長がランダム初期検知区間内に存在することを認識すると、平均キュー長を算出し、廃棄ターゲットと受信ターゲットとの比率から、廃棄確率を算出する。
2009016692.tif 000002
【特許請求の範囲】
【請求項１】
パケットの廃棄処理を行うパケット処理装置において、
パケットを格納するキューを備えたパケットバッファと、
サンプリング周期毎に、パケットが格納された前記キューの占有状態である実キュー長を取得し、パケットの廃棄が開始される前記実キュー長の最小値である最小しきい値と、パケットの全廃棄がなされる前記実キュー長の最大値である最大しきい値との範囲であるランダム初期検知区間に対して、前記実キュー長が存在する位置関係を判別して位置情報を出力する実キュー長位置判別部と、
前記位置情報にもとづいて、サンプリング周期毎にパケットの廃棄確率を算出する廃棄確率演算処理部と、
前記廃棄確率にもとづいて、サンプリング周期毎に前記キューに格納される前のパケットの廃棄処理を行うパケット廃棄処理部と、
を有し、
前記廃棄確率演算処理部は、
前記実キュー長が前記最大しきい値を超えずに前記ランダム初期検知区間内に存在する場合には、
前記キューの占有状態の平均値である平均キュー長を算出し、廃棄すべきパケットの廃棄パケットデータ量の目標値である廃棄ターゲットと、サンプリング時刻に受信したパケットの受信パケットデータ量の目標値である受信ターゲットとを求めて、前記廃棄ターゲットと前記受信ターゲットとの比率から、前記廃棄確率を算出する、
ことを特徴とするパケット処理装置。
【請求項２】
前記廃棄確率演算処理部は、
前記位置情報にもとづいて、前記実キュー長が、前記最小しきい値を超えないことを認識した場合は、前記廃棄確率を０と設定し、前記実キュー長が、前記最大しきい値を超えることを認識した場合は、前記廃棄確率を１と設定する廃棄確率設定部と、
前記位置情報にもとづいて、前記実キュー長が、前記最小しきい値を超えて、前記最大しきい値を超えない前記ランダム初期検知区間内に存在することを認識した場合は、前記平均キュー長を算出して、前記廃棄ターゲットと前記受信ターゲットとの比率から、前記廃棄確率を算出する廃棄確率算出部と、
から構成されることを特徴とする請求の範囲第１項記載のパケット処理装置。
【請求項３】
前記廃棄確率算出部は、
前記平均キュー長を算出する平均キュー長算出部と、
前記廃棄ターゲットを算出する廃棄ターゲット算出部と、
前記受信ターゲットを算出する受信ターゲット算出部と、
算出された前記廃棄ターゲットと前記受信ターゲットとを同じ定数で除算して、前記廃棄ターゲットのビット値と前記受信ターゲットのビット値とを同一割合で低減させた補正後の補正廃棄ターゲットおよび補正受信ターゲットを求めるターゲット補正部と、
ビット値が低減された後の前記補正廃棄ターゲットを格納する補正廃棄ターゲットレジスタと、
ビット値が低減された後の前記補正受信ターゲットを格納する補正受信ターゲットレジスタと、
前記補正廃棄ターゲットを前記補正受信ターゲットで除算することで、前記廃棄ターゲットと前記受信ターゲットとの比率を求めて、前記廃棄確率を算出する廃棄確率決定部と、
を有することを特徴とする請求の範囲第２項記載のパケット処理装置。
【請求項４】
前記平均キュー長算出部は、サンプリング時刻ｔ（ｎ）における前記実キュー長をQ（n）、前回のサンプリング時刻ｔ（ｎ−１）における前記平均キュー長をaveQ（n−1）、重み付け値をWqとした場合に、サンプリング時刻ｔ（ｎ）における前記平均キュー長aveQ（n）を以下の式
aveQ（n）＝（１−Wq）×aveQ（n−1）＋Wq×Q（n）
で算出することを特徴とする請求の範囲第３項記載のパケット処理装置。
【請求項５】
前記平均キュー長をaveQ、前記ランダム初期検知区間内で最大の廃棄確率である最大廃棄確率をmaxP、前記最小しきい値をminQ th、前記最大しきい値をmaxQ th、前記定数をαとした場合に、
前記廃棄ターゲット算出部は、前記廃棄ターゲットをmaxP×（aveQ−minQ th）で求め、
前記受信ターゲット算出部は、前記受信ターゲットを（maxQ th−minQ th）で求め、
前記ターゲット補正部は、前記補正廃棄ターゲットをmaxP×（aveQ−minQ th）／αで求め、前記補正受信ターゲットを（maxQ th−minQ th）／αで求めて、
前記廃棄確率算出部は、前記廃棄確率Pbを以下の式
Pb＝｛maxP×（aveQ−minQ th）／α｝／｛（（maxQ th−minQ th）／α）×１００｝
で算出することを特徴とする請求の範囲第３項記載のパケット処理装置。
【請求項６】
前記ターゲット補正部は、前記定数の値の大小を、前記ランダム初期検知区間の間隔の長短に比例して設定することで、前記ランダム初期検知区間の間隔が長い場合での前記定数によって低減される割合と、前記ランダム初期検知区間の間隔が短い場合での前記定数によって低減される割合とを一定にすることを特徴とする請求の範囲第３項記載のパケット処理装置。
【請求項７】
パケットの廃棄処理を行うパケット処理装置において、
出力ポート単位にパケットを格納する複数のキューを備えたパケットバッファと、
サンプリング周期毎に、パケットが格納された前記キューの占有状態である最新の実キュー長を取得し、パケットの廃棄が開始される前記実キュー長の最小値である最小しきい値と、パケットの全廃棄がなされる前記実キュー長の最大値である最大しきい値との範囲であるランダム初期検知区間に対して、前記実キュー長が存在する位置関係を判別して位置情報を生成し、前記位置情報にもとづいて、サンプリング周期毎にパケットの廃棄確率を算出するパケット廃棄演算処理部と、
到着したパケットを受信し、前記廃棄確率にもとづいて、サンプリング周期毎に前記キューに格納される前のパケットの廃棄処理を行うパケット受信部と、
を有し、
前記パケット廃棄演算処理部は、
個別モード時には、前記複数のキューの中の１つのキューから前記実キュー長を取得し、１つのキューから取得した前記実キュー長である単一実キュー長が、前記最大しきい値を超えずに前記ランダム初期検知区間内に存在する場合には、
前記単一キュー長にもとづいて、前記キューの占有状態の平均値である平均キュー長を算出し、廃棄パケットデータ量の目標値である廃棄ターゲットと、受信パケットデータ量の目標値である受信ターゲットとを求めて、前記廃棄ターゲットと前記受信ターゲットとの比率から、前記廃棄確率を算出し、
全体モード時には、出力ポート毎の前記複数のキューのキュー長をすべて加算して、加算値を前記実キュー長として取得し、前記複数のキューから取得した前記実キュー長である加算実キュー長が、前記最大しきい値を超えずに前記ランダム初期検知区間内に存在する場合には、
前記加算実キュー長にもとづいて、前記キューの占有状態の平均値である平均キュー長を算出し、廃棄パケットデータ量の目標値である廃棄ターゲットと、受信パケットデータ量の目標値である受信ターゲットとを求めて、前記廃棄ターゲットと前記受信ターゲットとの比率から、前記廃棄確率を算出する、
ことを特徴とするパケット処理装置。
【請求項８】
前記パケット廃棄演算処理部は、
前記位置情報から、前記単一実キュー長または前記加算実キュー長が、前記最小しきい値を超えないことを認識した場合は、前記廃棄確率を０と設定し、前記単一実キュー長または前記加算実キュー長が、前記最大しきい値を超えることを認識した場合は、前記廃棄確率を１と設定し、
前記位置情報から、前記単一実キュー長または前記加算実キュー長が前記最小しきい値を超えて、前記最大しきい値を超えない前記ランダム初期検知区間内に存在することを認識した場合は、前記単一実キュー長または前記加算実キュー長から前記平均キュー長を算出して、前記廃棄ターゲットと前記受信ターゲットとの比率から、前記廃棄確率を算出する、
ことを特徴とする請求の範囲第７項記載のパケット処理装置。
【請求項９】
前記パケット廃棄演算処理部は、
個別モード時には、サンプリング時刻ｔ（ｎ）における前記単一実キュー長をQa（ｎ）、前回のサンプリング時刻ｔ（ｎ−１）における前記平均キュー長をaveQa（n−1）、重み付け値をWqとした場合に、サンプリング時刻ｔ（ｎ）における前記平均キュー長aveQa（n）を以下の式
aveQa（n）＝（１−Wq）×aveQa（n−1）＋Wq×Qa（n）
で算出し、
全体モード時には、サンプリング時刻ｔ（ｎ）における前記加算実キュー長をQb（ｎ）、前回のサンプリング時刻ｔ（ｎ−１）における前記平均キュー長をaveQb（n−1）、重み付け値をWqとした場合に、サンプリング時刻ｔ（ｎ）における前記平均キュー長aveQb（n）を以下の式
aveQb（n）＝（１−Wq）×aveQb（n−1）＋Wq×Qb（n）
で算出することを特徴とする請求の範囲第７項記載のパケット処理装置。
【請求項１０】
前記平均キュー長をaveQ、前記ランダム初期検知区間内で最大の廃棄確率である最大廃棄確率をmaxP、前記最小しきい値をminQ th、前記最大しきい値をmaxQ thとした場合に、前記パケット廃棄演算処理部は、
前記廃棄ターゲットをmaxP×（aveQ−minQ th）で求め、
前記受信ターゲットを（maxQ th−minQ th）で求め、
定数をαとし、算出された前記廃棄ターゲットと前記受信ターゲットとを同じ前記定数αで除算して、前記廃棄ターゲットのビット値と前記受信ターゲットのビット値とを同一割合で低減させた補正後の補正廃棄ターゲットおよび補正受信ターゲットをそれぞれ、maxP×（aveQ−minQ th）／α、（maxQ th−minQ th）／αで求めて、
前記廃棄確率Pbを以下の式
Pb＝｛maxP×（aveQ−minQ th）／α｝／｛（（maxQ th−minQ th）／α）×１００｝
で算出することを特徴とする請求の範囲第７項記載のパケット処理装置。
【請求項１１】
前記パケット廃棄演算処理部は、前記定数の値の大小を、前記ランダム初期検知区間の間隔の長短に比例して設定することで、前記ランダム初期検知区間の間隔が長い場合での前記定数によって低減される割合と、前記ランダム初期検知区間の間隔が短い場合での前記定数によって低減される割合とを一定にすることを特徴とする請求の範囲第１０項記載のパケット処理装置。
【請求項１２】
サンプリング周期毎に最新実キュー長が最小しきい値を超えているか否かを示す全通過ビット、サンプリング周期毎に最新実キュー長が最大しきい値を超えているか否かを示す全廃棄ビット、前記平均キュー長、前記補正廃棄ターゲット、前記補正受信ターゲット、パケットの受信バイト数である受信カウント、廃棄したパケットのバイト数である廃棄カウント、前記受信カウントが前記受信ターゲットを超えた場合にはＯＮ、廃棄カウントが廃棄ターゲットを超えた場合にはＯＦＦとなる廃棄フラグ、の少なくとも１つが設定され、出力ポート番号をアドレスにして検索可能な演算結果保持テーブルを管理する演算結果保持テーブル管理部をさらに有することを特徴とする請求の範囲第７項記載のパケット処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット処理装置に関し、特にパケットの廃棄処理を行って、ネットワークトラフィックの輻輳回避を行うパケット処理装置に関する。
【背景技術】
【０００２】
ネットワーク上には、ＱｏＳ（Quality of Service）制御によって、トラフィック種別に対応した通信品質が定められた様々な用途のパケットが流れている。ＱｏＳ制御とは、回線の帯域やキューのバッファ容量などの限られたネットワーク資源を有効に活用するための技術である。【０００３】
ＱｏＳ制御の１つに、ＲＥＤ（Random Early Discarding（Detection）：ランダム初期検知）と呼ばれるパケットの輻輳回避を行うアルゴリズムがある。ＲＥＤとは、ネットワーク機器に到着したパケットを、キュー（Queue）に格納し、キューに格納されたデータ量を定期的に観測することでキューの伸長傾向（キューに格納されたデータ量の増減）を計算し、キューが溢れる前に、到着パケットを任意に設定された確率でランダムに廃棄して、キューが溢れることを回避する技術である。ＲＥＤアルゴリズムは、特に固定長のパケットよりもランダム長のパケットであるEthernet（登録商標）フレーム等の処理に有効である。【０００４】
ＲＥＤによるパケット廃棄の従来技術として、ハードウェアの制御でパケット廃棄処理が可能となるように、近似の廃棄確率曲線を生成して輻輳制御を行う技術が提案されている（例えば、特許文献１）。
【特許文献１】特開２００５−９４３９２号公報（段落番号〔００１５〕〜〔００１８〕，第１図）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ＲＥＤによるパケット廃棄処理では、キュー長の伸長度合いに応じた到着パケットの廃棄確率を表す廃棄確率曲線にもとづいて、パケットの廃棄処理が行われるが、近年のネットワークの高速・大容量化に伴って、パケット廃棄処理にも高速化が求められている。【０００６】
従来のＲＥＤによるパケット廃棄処理では、ハードウェアとファームウェア（ソフトウェア）を組み合わせた処理が一般的に行われていたが、このような構成では、ハードウェアとファームウェア間で通信を行うために発生する通信時間が高速処理の妨げとなり、また、マイコンやＤＳＰ（Digital Signal Processor）などを用いてファームウェア処理による乗算・除算処理等が行われるために、packet by packetでの高速廃棄処理ができず、高速ネットワークに対応可能な十分な処理速度を得られないといった問題があった。【０００７】
一方、上記の従来技術（特開２００５−９４３９２号公報）は、ＲＥＤによるパケット廃棄処理をハードウェアで構成することで、パケットの高速ランダム廃棄処理を行っている。しかし、回路設計を行う都合上、廃棄確率曲線の縦軸および横軸を２進数で分割して、階段状の廃棄確率曲線を生成して、この近似的な廃棄確率曲線にもとづいてパケット廃棄がなされているため、本来は直線形状である廃棄確率曲線を用いたパケット廃棄に比べて、廃棄誤差が大きく出てしまうといった問題が生じる。【０００８】
本発明はこのような点に鑑みてなされたものであり、処理速度の高いハードウェアでＲＥＤによるパケット廃棄処理を構成し、かつ廃棄誤差の低減化を図ったパケット処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明では上記課題を解決するために、図１に示すような、パケットの廃棄処理を行うパケット処理装置１０において、パケットを格納するキュー１１ａを備えたパケットバッファ１１と、サンプリング周期毎に、パケットが格納されたキュー１１ａの占有状態である実キュー長を取得し、パケットの廃棄が開始される実キュー長の最小値である最小しきい値と、パケットの全廃棄がなされる実キュー長の最大値である最大しきい値との範囲であるランダム初期検知区間に対して、実キュー長が存在する位置関係を判別して位置情報を出力する実キュー長位置判別部１２と、位置情報にもとづいて、サンプリング周期毎にパケットの廃棄確率を算出する廃棄確率演算処理部１３と、廃棄確率にもとづいて、サンプリング周期毎にキュー１１ａに格納される前のパケットの廃棄処理を行うパケット廃棄処理部１４と、を有し、廃棄確率演算処理部１３は、実キュー長が最大しきい値を超えずにランダム初期検知区間内に存在する場合には、キュー１１ａの占有状態の平均値である平均キュー長を算出し、廃棄すべきパケットの廃棄パケットデータ量の目標値である廃棄ターゲットと、サンプリング時刻に受信したパケットの受信パケットデータ量の目標値である受信ターゲットとを求めて、廃棄ターゲットと受信ターゲットとの比率から、廃棄確率を算出する、ことを特徴とするパケット処理装置１０が提供される。【００１０】
ここで、パケットバッファ１１は、パケットを格納するキュー１１ａを備える。実キュー長位置判別部１２は、サンプリング周期毎に、パケットが格納されたキュー１１ａの占有状態である実キュー長を取得し、パケットの廃棄が開始される実キュー長の最小値である最小しきい値と、パケットの全廃棄がなされる実キュー長の最大値である最大しきい値との範囲であるランダム初期検知区間に対して、実キュー長が存在する位置関係を判別して位置情報を出力する。廃棄確率演算処理部１３は、位置情報にもとづいて、サンプリング周期毎に、パケットの廃棄確率を算出する。パケット廃棄処理部１４は、廃棄確率にもとづいて、サンプリング周期毎に、キュー１１ａに格納される前のパケットの廃棄処理を行う。また、廃棄確率演算処理部１３は、実キュー長が最大しきい値を超えずにランダム初期検知区間内に存在する場合には、キュー１１ａの占有状態の平均値である平均キュー長を算出し、廃棄すべきパケットの廃棄パケットデータ量の目標値である廃棄ターゲットと、サンプリング時刻に受信したパケットの受信パケットデータ量の目標値である受信ターゲットとを求めて、廃棄ターゲットと受信ターゲットとの比率から、廃棄確率を算出する。
【発明の効果】
【００１１】
本発明のパケット処理装置は、サンプリング周期毎に平均キュー長を算出し、ランダム初期検知区間に平均キュー長が存在する場合には、廃棄ターゲットと受信ターゲットとをサンプリング周期毎に更新して求めて、廃棄ターゲットと受信ターゲットとの比率から、廃棄確率を算出して、サンプリング周期毎に到着パケットの廃棄処理を行う構成とした。これにより、ハードウェアのみで構成したため高速処理が可能となり、また、サンプリング周期毎に廃棄確率を算出および更新して、パケット廃棄処理を行うので、本来直線状の廃棄確率曲線に追従することができ、廃棄誤差を低減して、高精度のパケット廃棄処理を行うことが可能になる。【００１２】
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
【図面の簡単な説明】
【００１３】
【図１】パケット処理装置の原理図である。
【図２】ＲＥＤの基本的なパケット廃棄処理を示す概念図である。
【図３】ＲＥＤの基本的なパケット廃棄処理を示す概念図である。
【図４】ＲＥＤの基本的なパケット廃棄処理を示す概念図である。
【図５】ＲＥＤの廃棄確率曲線の一例を示す図である。
【図６】廃棄確率演算処理部の構成を示す図である。
【図７】廃棄確率算出部の構成を示す図である。
【図８】廃棄確率曲線の追従の様子を示す図である。
【図９】定数の大きさとＲＥＤ区間の長さとの関係を示す図である。
【図１０】定数の大きさとＲＥＤ区間の長さとの関係を示す図である。
【図１１】定数の設定例を示す図である。
【図１２】パケット処理装置の構成を示す図である。
【図１３】演算結果保持テーブルの構成例を示す図である。
【図１４】パケット廃棄演算処理部の位置判別および演算動作の全体動作を示すフローチャートである。
【図１５】パケット到着時の処理を示すフローチャートである。
【図１６】廃棄フラグ制御の動作を示すフローチャートである。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施の形態を図面を参照して説明する。図１はパケット処理装置の原理図である。パケット処理装置１０は、パケットバッファ１１、実キュー長位置判別部１２、廃棄確率演算処理部１３、パケット廃棄処理部１４、設定データ保持部１５、サンプリング周期発生部１６から構成され、ＲＥＤアルゴリズムによるパケット廃棄処理を行う装置（パケット受信側の装置）である（以降ではＲＥＤアルゴリズムによるパケット廃棄処理をＲＥＤ処理とも呼ぶ）。なお、イーサネットでは通常“フレーム”という用語が使用されるが、以降の説明では“パケット”と用語を統一して説明する。【００１５】
パケットバッファ１１は、パケットを格納するキュー１１ａを備える。図では１つのキュー１１ａのみ示しているが、実際には複数の出力ポート毎に複数のキューが備えられる。【００１６】
実キュー長位置判別部１２は、サンプリング周期毎に、パケットが格納されたキュー１１ａの占有状態である実キュー長を取得する。また、パケットの廃棄が開始される実キュー長の最小値である最小しきい値と、パケットの全廃棄がなされる実キュー長の最大値である最大しきい値との範囲であるランダム初期検知区間（以下、ＲＥＤ区間）に対して、実キュー長が存在する位置関係を判別して位置情報を出力する。なお、ＲＥＤ区間は、キュー１１ａのパケット格納領域の余領域（余裕）がなくなる前の、確率的（ランダム）にパケットの廃棄が行われる区間である。【００１７】
廃棄確率演算処理部１３は、位置情報にもとづいて、サンプリング周期毎に、パケットの廃棄確率を算出する。パケット廃棄処理部１４は、廃棄確率にもとづいて、サンプリング周期毎に、キュー１１ａに格納される前のパケットの廃棄処理を行う。【００１８】
設定データ保持部１５は、上位から通知される各パラメータ（最小しきい値、最大しきい値または廃棄確率演算に必要な値等）を保持する。サンプリング周期発生部１６は、任意に設定されたサンプリング周期を発生するカウンタである。【００１９】
ここで、廃棄確率演算処理部１３は、実キュー長が最大しきい値を超えずにＲＥＤ区間内に存在する場合には、キュー１１ａの占有状態の平均値である平均キュー長を算出し、廃棄パケットデータ量の目標値である廃棄ターゲットと、受信パケットデータ量の目標値である受信ターゲットとを求めて、廃棄ターゲットと受信ターゲットとの比率から、廃棄確率を算出する（動作の詳細は図６以降で後述する）。なお、キュー１１ａに格納されたパケットは、図示しない読み出し制御部によって読み出されて出力ポートから出力される。【００２０】
次に本発明の詳細を説明する前に、ＲＥＤ処理の基本概念について説明する。ＲＥＤは、パケットを滞留させるＦＩＦＯ（first in first out）キューが一杯にならないように制御して、ネットワークのトラフィック輻輳を回避するアルゴリズムのことである。【００２１】
ＲＥＤの基本処理では、キュー長（パケットが格納されるキューの占有状態）を、２つのしきい値（最小しきい値および最大しきい値）と比較することで、キューに到着する到着パケットの廃棄を決定する。【００２２】
ここで、キューに格納されたパケットは、読み出し制御部によって順次読み出されていくので、一旦キューに書き込まれたパケットの廃棄は行わない。ＲＥＤにおけるパケット廃棄処理とは、キューに書き込まれる前の到着パケット（キューへの入力パケット）を廃棄することを意味する。【００２３】
図２〜図４はＲＥＤの基本的なパケット廃棄処理を示す概念図である。キュー１１ａにパケットが格納されている状態で、図２のように、キュー長Ｑが、最小しきい値minQ th（到着パケットの廃棄が開始されるキュー長の最小値）を下回っている場合には、キュー１１ａの格納領域には十分な余裕があるとみなして、到着順にパケットをキュー１１ａに収容し、パケット廃棄は生じない。【００２４】
また、図３のように、キュー長Ｑが最大しきい値maxQ th（到着パケットの全廃棄が行われるキュー長の最大値）を上回る場合には、キュー１１ａが溢れる可能性があると判断して、キュー１１ａに新しく到着するすべてのパケットを廃棄する（なお、minQ thとmaxQ thの値は、運用側で任意に設定可能である）。【００２５】
このとき、キュー長が、最大しきい値maxQ th以内に収まるまで（読み出し制御部からキュー１１ａ内のパケットは順次読み出されているので、キュー１１ａに入力するパケットがなければ、キュー長Ｑが最大しきい値maxQ thより下回るときがいずれくる）、到着パケットの全廃棄が実行され続けることになる（到着パケットの全廃棄はtail dropとも呼ばれる）。【００２６】
さらに、図４のように、キュー長Ｑが最小しきい値minQ thと最大しきい値maxQ thとの間にある場合には（すなわち、実キュー長Ｑが最大しきい値maxQ thを超えずにＲＥＤ区間内に存在する場合）、任意に設定された廃棄確率にもとづいて、到着パケットの内、ランダムにパケットを選択し、選択したパケットが廃棄される。【００２７】
図５はＲＥＤの廃棄確率曲線の一例を示す図である。縦軸は廃棄確率（％）、横軸はキュー長Ｑである。廃棄確率曲線は、キュー長Ｑの伸長度合いに応じた到着パケットの廃棄確率を表している。【００２８】
キュー長Ｑが最小しきい値minQ thを超えない場合は、パケット廃棄確率は０％であり（パケットは廃棄されない）、キュー長Ｑが最大しきい値maxQ thを超える場合は、到着パケットの廃棄確率は１００％となる（すべての到着パケットが廃棄される）。【００２９】
また、キュー長Ｑが、最小しきい値minQ thと最大しきい値maxQ thとの間（ＲＥＤ区間）にある場合には、図５に示すような傾きを持った関数にもとづき、廃棄確率が決定する。ここで例えば、廃棄確率が１０％の廃棄を行うとは、到着パケットの１０％が廃棄されるということである（キュー１１ａに対するパケット書き込み処理に対して、例えば、１００個の到着パケットの内の１０個のパケット書き込みを行わないということ（パケットを固定長とした場合））。【００３０】
なお、図中の最大廃棄確率maxPは、最小しきい値minQ thと最大しきい値maxQ thとの間の廃棄確率の傾きを決める値であって、キュー長Ｑが最大しきい値maxQ thまで伸長したときに、最大何％廃棄するかを示すものである（ここを超えると到着パケットは全廃棄となる）。【００３１】
次に図１で示したパケット処理装置１０の構成および動作について詳しく説明する。なお、以降では、キュー１１ａではバイト単位でバッファリングを行うものとし、ＲＥＤ処理はバイト単位で行われるものとする。【００３２】
図６は廃棄確率演算処理部１３の構成を示す図である。廃棄確率演算処理部１３は、廃棄確率設定部１３−１と廃棄確率算出部１３−２から構成される。廃棄確率設定部１３−１は、実キュー長位置判別部１２から送信された位置情報を受信して、実キュー長が、最小しきい値を超えないことを認識した場合は、廃棄確率を０と設定する。また、実キュー長が、最大しきい値を超えることを認識した場合は、廃棄確率を１と設定する。【００３３】
廃棄確率算出部１３−２は、位置情報を受信して、実キュー長が、最小しきい値を超えて、最大しきい値を超えないＲＥＤ区間内に存在することを認識した場合は、平均キュー長を算出して、廃棄ターゲットと受信ターゲットとの比率から、廃棄確率を算出する。【００３４】
ここで、実キュー長の位置と廃棄確率Pbとの関係をまとめると、以下の（ａ）〜（ｃ）となる。
（ａ）実キュー長が最小しきい値を超えないときは（Q＜minQ th）、Pb＝０と決定する。すなわち、このときのパケットデータは廃棄されず、パケット廃棄処理部１４を全通過してキュー１１ａに格納される。【００３５】
（ｂ）実キュー長が最小しきい値を超えて、かつ最大しきい値を超えないときは（minQ th≦Q≦maxQ th）、廃棄確率算出部１３−２で廃棄確率Pbが決定される。
（ｃ）実キュー長が最大しきい値を超えるときは（最大しきい値maxQ th＜Q）、Pb＝１と決定する。すなわち、このときのパケットデータはパケット廃棄処理部１４においてすべて廃棄される。【００３６】
このように、実キュー長位置判別部１２では、Q＜minQ thであるのか、minQ th≦Q≦maxQ thであるのか、またはmaxQ th＜Qであるのかを判別する。そして、廃棄確率設定部１３−１は、それぞれの位置情報にもとづいて、Q＜minQ thの場合は、廃棄確率Pb＝０をパケット廃棄処理部１４へ通知し、maxQ th＜Qの場合は、廃棄確率Pb＝１をパケット廃棄処理部１４へ通知する。【００３７】
また、位置情報がminQ th≦Q≦maxQ thの場合は、廃棄確率算出部１３−２は、平均キュー長を算出して、廃棄ターゲットと受信ターゲットとの比率から、廃棄確率を算出する。【００３８】
パケット廃棄処理部１４では、廃棄確率Pb＝０の通知を受信すると、到着パケットの廃棄は行わず通過させ、廃棄確率Pb＝１の通知を受信すると、到着パケットをすべて廃棄する。また、廃棄確率算出部１３−２で算出された廃棄確率Pbを受信した場合は、その廃棄確率にもとづいてパケットを廃棄する。【００３９】
なお、ＲＥＤアルゴリズムでは、パケットの送信側で、パケットにカラー（Green、Yellow、Red）を振り分けて送信することで、受信側でパケット廃棄をするときの処理を変えることができる。【００４０】
具体的に、Greenパケットは、受信側での廃棄が禁止されたPb＝０のパケットであり、RedパケットおよびYellowパケットは、受信側で任意に設定された、０≦Pb≦１の廃棄確率にもとづいて処理してよいパケットである。なお、Redパケットは、Yellowパケットよりも優先的に廃棄される。【００４１】
したがって、パケット処理装置１０においても、到着パケットがGreenパケットならば、無条件でキュー１１ａに書き込み、到着パケットがRedパケットならば、優先的に廃棄することになる。また、本発明のＲＥＤ処理が対象とするパケットはYellowパケットのことである。【００４２】
次に廃棄確率算出部１３−２の構成について説明する。図７は廃棄確率算出部１３−２の構成を示す図である。廃棄確率算出部１３−２は、平均キュー長算出部１３ａ、廃棄ターゲット算出部１３ｂ、受信ターゲット算出部１３ｃ、ターゲット補正部１３ｄ、補正廃棄ターゲットレジスタ１３ｅ、補正受信ターゲットレジスタ１３ｆ、廃棄確率決定部１３ｇから構成される。【００４３】
平均キュー長算出部１３ａは、実キュー長Qおよび重み付け値Wqにもとづいて平均キュー長を算出する。廃棄ターゲット算出部１３ｂは、最大廃棄確率maxP、平均キュー長aveQおよび最小しきい値minQ thのパラメータ値にもとづいて、廃棄バイト量の目標値である廃棄ターゲットTDを算出して出力する。【００４４】
受信ターゲット算出部１３ｃは、最大しきい値maxQ thおよび最小しきい値minQ thのパラメータ値にもとづいて、受信バイト量の目標値である受信ターゲットTRを算出して出力する。【００４５】
なお、受信ターゲットとは、あるサンプリング時刻に、出力ポート単位毎に受信されたバイト数のことを指し（あるサンプリング時刻に到着した到着パケットのバイト数と同じ）、廃棄ターゲットとは、あるサンプリング時刻の受信バイト数に対して廃棄すべきバイト数のことを指す。【００４６】
ターゲット補正部１３ｄは、廃棄ターゲットTDと受信ターゲットTRとを同じ定数（αとする）で除算して、廃棄ターゲットTDのビット値と受信ターゲットTRのビット値とを同一割合で低減させた補正後の補正廃棄ターゲットTDcおよび補正受信ターゲットTRcを求める。ターゲット補正を行う理由については後述する。【００４７】
補正廃棄ターゲットレジスタ１３ｅは、ビット値が低減された後の補正廃棄ターゲットTDcを格納し、補正受信ターゲットレジスタ１３ｆは、ビット値が低減された後の補正受信ターゲットTRcを格納する。【００４８】
廃棄確率決定部１３ｇは、補正廃棄ターゲットTDcを補正受信ターゲットTRcで除算することで、廃棄ターゲットTDと受信ターゲットTRとの比率を求めて、廃棄確率Pbを算出する。【００４９】
次に平均キュー長の算出について説明する。平均キュー長算出部１３ａは、サンプリング周期の開始タイミングで取得された最新の実キュー長（キュー１１ａに現在溜まっているバイト数に該当）にもとづいて平均キュー長を算出する。【００５０】
ここで、サンプリング時刻ｔ（ｎ）における実キュー長をQ（n）、前回のサンプリング時刻ｔ（ｎ−１）における平均キュー長をaveQ（n−1）、重み付け値をWqとした場合に、サンプリング時刻ｔ（ｎ）における平均キュー長aveQ（n）は以下の式（１）で算出される。【００５１】
aveQ（n）＝（１−Wq）×aveQ（n−1）＋Wq×Q（n）・・・（１）
次に廃棄ターゲット、受信ターゲットおよび廃棄確率の算出式について説明する。廃棄ターゲット算出部１３ｂは、以下の式（２）で廃棄ターゲットTDを算出する。【００５２】
TD＝maxP×（aveQ−minQ th）・・・（２）
また、受信ターゲット算出部１３ｃは、以下の式（３）で受信ターゲットTRを算出する。【００５３】
TR＝maxQ th−minQ th・・・（３）
ターゲット補正部１３ｄは、廃棄ターゲットTDを定数αで割って補正廃棄ターゲットTDcを求め（式（２ａ））、受信ターゲットTRを定数αで割って補正受信ターゲットTRcを求める（式（３ａ））。【００５４】
TDc＝TD／α＝maxP×（aveQ−minQ th）／α・・・（２ａ）
TRc＝TR／α＝（maxQ th−minQ th）／α・・・（３ａ）
廃棄確率決定部１３ｇは、廃棄確率Pbを以下の式（４）で算出する（なお、maxPは％表示のため、分母に１００を掛けている）。【００５５】
Pb＝｛maxP×（aveQ−minQ th）／α｝／｛（（maxQ th−minQ th）／α）×１００｝・・・（４）
以上説明したように、パケット処理装置１０では、周期的にキュー１１ａの蓄積量を読み出し、サンプリング周期毎に目標の受信パケットのバイト数である受信ターゲットと、目標の廃棄パケットのバイト数である廃棄ターゲットを割り出して、廃棄確率を算出する構成とした。【００５６】
このような、サンプリング周期にもとづく制御を行うことにより、カウンタ等のビット数が明確化できるので、ハードウェア（論理回路）での実現が可能になり、処理速度を向上させることができる。また、サンプリング周期毎に廃棄確率を算出および更新して、パケット廃棄処理を行うので、本来直線状の廃棄確率曲線に追従することができる。【００５７】
図８は廃棄確率曲線の追従の様子を示す図である。ＲＥＤ区間において、サンプリング時刻ｔ１では、平均キュー長aveQ1が求まり、このときの廃棄確率はPb1が算出されている。同様にして、サンプリング時刻ｔ２における平均キュー長aveQ2のときの廃棄確率はPb2が算出され、サンプリング時刻ｔ３における平均キュー長aveQ3のときの廃棄確率はPb3が算出されている。【００５８】
上述した従来技術では、階段状の廃棄確率曲線を生成して、近似的な廃棄確率曲線にもとづいてパケット廃棄を行っていたが、パケット処理装置１０では、ＲＥＤ区間において、サンプリング周期毎に最新の実キュー長を取得して平均キュー長を求めて、各パラメータ（最大廃棄率、最小しきい値、最大しきい値、平均キュー長など）から廃棄確率を算出する。したがって、サンプリング周期毎に得られた廃棄確率でパケット廃棄を行うことになるので、本来直線状の廃棄確率曲線を追従していることになり、廃棄誤差が低減化されたＲＥＤ処理を行うことができ、精度を向上させることが可能になる。【００５９】
次にターゲット補正部１３ｄについて説明する。ターゲット補正部１３ｄでは、算出された廃棄ターゲットおよび受信ターゲットの両方を、同じ定数αで割って、廃棄ターゲットのビット値と受信ターゲットのビット値とを同一割合で低減させた補正廃棄ターゲットと補正受信ターゲットを生成している。この処理を行う理由を以下に示す。【００６０】
パケット処理装置１０では、ハードウェアのみでＲＥＤ処理が行えるように構成するために、廃棄ターゲット算出部１３ｂと受信ターゲット算出部１３ｃで計算された廃棄ターゲットや受信ターゲットを、サンプリング周期毎に一時的に保持する記憶部（レジスタ）が必要である。【００６１】
廃棄確率算出部１３−２において、最終的に求めたいものは廃棄確率であるが、廃棄確率は、廃棄ターゲットと受信ターゲットの比率（廃棄ターゲット÷受信ターゲット）から求まるので、この比率を求める際は、廃棄ターゲットと受信ターゲットそれぞれの実算出値を必ずしも用いる必要はなく、廃棄ターゲットと受信ターゲットとは（分子と分母とは）、同じ割合で低減された値であればよい。【００６２】
したがって、廃棄ターゲット算出部１３ｂおよび受信ターゲット算出部１３ｃで算出された計算値そのままを、レジスタに保持しておく必要はなく、同じ割合で低減した値（補正廃棄ターゲットと補正受信ターゲット）を生成しておいて、それをレジスタに保持するようにすれば、レジスタ容量の低減化につながることになる。【００６３】
したがって、ターゲット補正部１３ｄでは、同一割合で低減された補正廃棄ターゲットおよび補正受信ターゲットを生成しておき、レジスタとしては、廃棄ターゲットおよび受信ターゲットそれぞれの実計算値のビット数よりも少ないビット数のレジスタ（補正廃棄ターゲットレジスタ１３ｅおよび補正受信ターゲットレジスタ１３ｆ）を使用することにする。これにより、レジスタ容量を低減化して、装置全体の回路規模の削減を行っている。【００６４】
次に定数αの決め方について説明する。図９、図１０は定数αの大きさとＲＥＤ区間の長さとの関係を示す図である。図に示すように、ＲＥＤ区間の長さに比例して定数αの値も可変に設定する。【００６５】
すなわち、図９のように、最小しきい値minQ thと最大しきい値maxQ thとの間隔であるＲＥＤ区間が長いほど、定数αの値も大きく設定し、図１０のように、ＲＥＤ区間が短いほど、定数αの値も小さく設定する（なお、図９、図１０ともに、分かりやすいように、実キュー長の位置を平均キュー長の位置として示した）。【００６６】
このように、ターゲット補正部１３ｄは、定数αの値の大小を、ＲＥＤ区間の間隔の長短に比例して設定することで、ＲＥＤ区間の間隔が長い場合での定数αによって低減される割合と、ＲＥＤ区間の間隔が短い場合での定数αによって低減される割合とを一定にしている。【００６７】
図１１は定数αの設定例を示す図である。キュー１１ａの最大容量が２＾２４（Ａ＾Ｂ＝ＡB）であり、最大しきい値maxQ thも２＾２４まで設定可能とした場合、図に示すように定数αを設定する。【００６８】
ここで、補正廃棄ターゲットのビット容量について考える。（aveQ−minQ th）／αの最大ビット数は、aveQ≒maxQ thであるので、２＾２４／２＾１６＝２＾８の２５６byteとなる。また、maxP＝５０とすると、補正廃棄ターゲットは、maxP×（aveQ−minQ th）／αなので、５０×２５６＝１２８００となる。したがって、補正廃棄ターゲットレジスタ１３ｅに必要なビット数は、１４ビット（２＾１４＝１６３８４）あればよいことになる。【００６９】
一方、補正受信ターゲットのビット容量については、補正廃棄ターゲットと同じで、（maxQ th−minQ th）の最大バイト数は２５６byteであるので、（maxQ th−minQ th）／α×１００は、２５６×１００＝２５６００となる。したがって、補正受信ターゲットレジスタ１３ｆに必要なビット数は、１５ビットあれば（２＾１５＝３２７６８）よいことになる。【００７０】
次にパケット処理装置１０の機能を適用して具体的に実現した装置構成について説明する。図１２はパケット処理装置の構成を示す図である。パケット処理装置２０は、パケットバッファ２１、パケット受信部２２、サンプリングカウンタ２３、設定データ保持部２４、演算結果保持テーブル管理部２５、パケット廃棄演算処理部２６から構成される。【００７１】
パケットバッファ２１は、図１のパケットバッファ１１に該当する。パケットバッファ２１は、キューｑ１〜ｑｍを含むキュー部２１−１〜２１−ｎが出力ポート＃１〜＃Ｎ毎に対応して配置される（出力ポート単位にキューが細分化されている）。【００７２】
パケット受信部２２は、図１のパケット廃棄処理部１４の機能を有し、前段から送信された到着パケットを受信し、廃棄通知を受信するまで（廃棄処理演算が完了するまで）、パケットデータをシフトさせて保持する（現状の回路構成では７段シフトとしてある）。そして、受信した廃棄通知にもとづいてパケットの廃棄を行う。また、到着パケット受信時には、パケットヘッダまたはラベルから、出力ポート番号、Length長、クラス識別などを認識して、それらをパケット状態情報として出力する。【００７３】
サンプリングカウンタ２３は、図１のサンプリング周期発生部１６に該当し、サンプリング周期をカウントする。例えば、８０μｓ〜２０．４ｍｓまでの範囲で８０μｓ単位にサンプリング信号を発生させる。【００７４】
設定データ保持部（設定レジスタ）２４は、図１の設定データ保持部１５に該当し、外部（外部ＣＰＵ）から設定された各種パラメータのデータ（maxP、minQ th、maxQ thなど）を格納しておく。【００７５】
演算結果保持テーブル管理部２５は、パケット廃棄演算処理部２６でパケット廃棄処理演算（ＲＥＤ演算）された演算結果およびフラグ情報などを格納管理する。なお、図７の補正廃棄ターゲットレジスタ１３ｅおよび補正受信ターゲットレジスタ１３ｆの機能を有する。【００７６】
パケット廃棄演算処理部２６は、図１の実キュー長位置判別部１２および廃棄確率演算処理部１３の機能を有し、設定データ保持部２４からＲＥＤ処理演算に必要な各パラメータを取得し、演算結果保持テーブル管理部２５から、演算対象パケットの情報を取得して、パケット廃棄処理演算を行う。また、演算結果を演算結果保持テーブル管理部２５へ書き戻し（Write Back：WB）、廃棄通知を生成してパケット受信部２２へ送信する。【００７７】
なお、パケット廃棄演算処理部２６は、サンプリング周期毎に、設定データ保持部２４に保持されているデータを読み出し、演算結果保持テーブル管理部２５の設定内容を更新する。なお、サンプリング周期毎に設定データ保持部２４を参照する理由は、インサービスにおける動的変更が発生した場合、minQ th、maxQ th、maxPが前回のサンプリング時刻で変更される場合があるためである。【００７８】
ここで、パケット処理装置２０では、パケット廃棄処理を行う場合に、個別モードと全体モードの２つのモード処理を有している。個別モードは、複数のキュー（キューｑ１〜ｑｍ）の中の１つのキューから実キュー長を取得し、１つのキューから取得した実キュー長である単一実キュー長にもとづいてパケット廃棄処理を行うモードである。【００７９】
また、全体モードは、複数のキュー（キューｑ１〜ｑｍ）のキュー長をすべて加算して、加算値を実キュー長として取得し、複数のキューから取得した実キュー長である加算実キュー長にもとづいてパケット廃棄処理を行うモードである。【００８０】
したがって、個別モード時には、サンプリング時刻ｔ（ｎ）における単一実キュー長をQa（ｎ）、前回のサンプリング時刻ｔ（ｎ−１）における平均キュー長をaveQa（n−1）、重み付け値をWqとした場合には、サンプリング時刻ｔ（ｎ）における平均キュー長aveQa（n）は、以下の式（５ａ）で算出される。【００８１】
aveQa（n）＝（１−Wq）×aveQa（n−1）＋Wq×Qa（n）・・・（５ａ）
また、全体モード時には、サンプリング時刻ｔ（ｎ）における加算実キュー長をQb（ｎ）、前回のサンプリング時刻ｔ（ｎ−１）における平均キュー長をaveQb（n−1）、重み付け値をWqとした場合に、サンプリング時刻ｔ（ｎ）における平均キュー長aveQb（n）は、以下の式（５ｂ）で算出される。【００８２】
aveQb（n）＝（１−Wq）×aveQb（n−1）＋Wq×Qb（n）・・・（５ｂ）
なお、単一実キュー長または加算実キュー長のいずれを使用しても、パケット廃棄の基本処理は変わらないので、以降の説明では特に厳密には区別はしないで説明する。【００８３】
次に演算結果保持テーブル管理部２５で管理されるテーブル情報について説明する。図１３は演算結果保持テーブルの構成例を示す図である。演算結果保持テーブル２５ａは、ＲＡＭ（Random Access Memory）で構成され、演算結果およびフラグ情報などが登録保持される。なお、演算結果保持テーブル２５ａは、パケット処理装置２０が接続するネットワーク（ＷＡＮ、ＬＡＮなど）毎に設けられるものである。各テーブル項目内容を以下に示す。【００８４】
“Add”は出力ポートの識別番号である（識別番号がＲＡＭのアドレスとなる）。“PTY”は、パリティビットであり、「RED on/offから補正受信ターゲット」および「廃棄カウント＋受信カウント」のそれぞれに１ビットを割り当てる。なお、PTYエラー時は、アラーム通知は行うが、基本的にパケット廃棄とはせずに上位からの制御指示に従う。【００８５】
“RED on/off”は、ＲＥＤ処理実行時には１（ＯＮ）、ＲＥＤ処理を実行しないときは０（ＯＦＦ）となる（サンプリング周期単位で設定される）。“全通過”は、サンプリング周期毎に最新実キュー長が最小しきい値minQ thを超えているか否かを示すビットで、超えていれば１（全通過）、超えていなければ０となる。【００８６】
“全廃棄”は、サンプリング周期毎に最新実キュー長がmaxQ thを超えているか否かを示すビットで、超えていれば１（全廃棄）、超えていなければ０となる。“平均キュー長”は、サンプリング周期毎に平均キュー長を書き込む。【００８７】
“廃棄フラグ”は、受信カウント値が受信ターゲットを超えた場合には１（ＯＮ）とし、廃棄カウント値が廃棄ターゲットを超えた場合には０（ＯＦＦ）となる。“補正廃棄ターゲット”および“補正受信ターゲット”は、サンプリング周期毎に算出された補正廃棄ターゲットおよび補正受信ターゲットがそれぞれ書き込まれる。“廃棄カウント”は、実際に廃棄したパケットのバイト数である。“受信カウント”は、実際に受信したパケットのバイト数である。【００８８】
次にパケット処理装置２０の動作についてフローチャートを用いて説明する。図１４はパケット廃棄演算処理部２６の位置判別および演算動作の全体動作を示すフローチャートである。実キュー長の位置判別を行い、補正廃棄／補正受信ターゲット等を計算して、演算結果保持テーブル２５ａに演算結果を書き込むまでの処理の流れを示している。【００８９】
〔Ｓ０〕サンプリング信号を受信すると処理を開始する。
〔Ｓ１〕パケット廃棄演算処理部２６は、ＲＥＤ処理のモードとして、個別モード（キューｑ１〜ｑｍの中の１つのキューから実キュー長を取得してパケット廃棄処理を行うモード）か、全体モード（キューｑ１〜ｑｍのキュー長をすべて加算して、その加算値を実キュー長としてパケット廃棄処理を行うモード）かを判断する。【００９０】
〔Ｓ２〕パケット廃棄演算処理部２６は、ＲＥＤ区間に対して、実キュー長が存在する位置関係を判別する（なお、個別モードまたは全体モードに対応して、使用する実キュー長は変える）。【００９１】
〔Ｓ３〕ＲＥＤアルゴリズム処理を行うか否かを判断し、行わない場合はステップＳ４へいき、行う場合はステップＳ５へいく。
〔Ｓ４〕演算結果保持テーブル２５ａの該当出力ポートに対して、RED on/off＝０、全通過＝０、全廃棄＝１または０（実キュー長の位置にもとづく）を設定する。さらに、廃棄フラグ、補正廃棄／補正受信ターゲット、廃棄／受信カウントおよび平均キュー長をクリアする。【００９２】
〔Ｓ５〕最大しきい値を超えずに、ＲＥＤ区間に実キュー長が存在するか否かを判断し、存在しない場合はステップＳ６へいき、存在する場合はステップＳ７へいく。
〔Ｓ６〕演算結果保持テーブル２５ａの該当出力ポートに対して、RED on/off＝１、全通過＝０または１、全廃棄＝１または０（実キュー長の位置にもとづく）を設定する。さらに、廃棄フラグ、補正廃棄／補正受信ターゲット、廃棄／受信カウントおよび平均キュー長をクリアする。【００９３】
なお、ビット設定は、具体的には、Q＜minQ thのときは、（全通過ビット、全廃棄ビット）＝（１、０）であり、maxQ th＜Qのときは、（全通過ビット、全廃棄ビット）＝（０、１）であり、minQ th≦Q≦maxQ thのときは、（全通過ビット、全廃棄ビット）＝（０、０）である。【００９４】
〔Ｓ７〕平均キュー長、補正廃棄ターゲット、補正受信ターゲットおよび廃棄確率を計算する。
〔Ｓ８〕演算結果保持テーブル２５ａの該当出力ポートに対して、RED on/off＝１、全通過＝０、全廃棄＝０を設定する。また、廃棄フラグおよび廃棄／受信カウントの変更はなく、補正廃棄／補正受信ターゲットおよび平均キュー長は算出値を上書きする。【００９５】
図１５はパケット到着時の処理を示すフローチャートである。演算結果保持テーブル２５ａに書き込んだ演算結果やフラグ値にもとづいて、パケットを廃棄または通過させるまでの処理の流れを示している。【００９６】
〔Ｓ１１〕パケット受信部２２は、到着パケットのヘッダまたはラベルから、出力ポート番号、Length長、クラス情報、カラー情報などを抽出し、パケット状態情報として出力する。【００９７】
〔Ｓ１２〕パケット廃棄演算処理部２６は、クラス情報を判別して、クラスＡ、Ｂの場合はステップＳ１３へいき、クラスＣ、Ｄの場合はステップＳ１４へいく。なお、クラスとは、キューに格納されたパケットの読み出し優先度を示すものである。クラスＡ、Ｂは、優先度の高いパケットを示すので、ＲＥＤにおいて廃棄してはいけないパケットとなる。また、クラスＣ、Ｄは、優先度の低いパケットを示すので、ＲＥＤにおいて廃棄してもよいパケットとなる。【００９８】
〔Ｓ１３〕パケット廃棄演算処理部２６は、廃棄通知として“全通過”を送信し、パケット受信部２２は、到着パケットを全通過させて、該当出力ポートのキューへ送信する。
〔Ｓ１４〕パケット廃棄演算処理部２６は、該当出力ポート番号をアドレスにして、演算結果保持テーブル２５ａから情報（RED on/off、全通過、全廃棄、廃棄フラグ、廃棄カウント、受信カウント、補正廃棄ターゲット、補正受信ターゲット、平均キュー長）を読み出す。【００９９】
〔Ｓ１５〕パケット廃棄演算処理部２６は、ＲＥＤアルゴリズム処理を行うか否かを判断し、行わない場合はステップＳ１６へいき、行う場合はステップＳ１９へいく。
〔Ｓ１６〕パケット廃棄演算処理部２６は、全廃棄＝１か否かを判断する。１でない場合はステップＳ１３へいき、１の場合はステップＳ１７へいく
〔Ｓ１７〕パケット廃棄演算処理部２６は、カラーがYellowか否かを判断する。Yellowでなければ（Greenの場合）ステップＳ１３へいき、YellowならばステップＳ１８へいく。【０１００】
〔Ｓ１８〕パケット廃棄演算処理部２６は、廃棄通知として“全廃棄”を送信し、パケット受信部２２は、到着パケットを全廃棄する。
〔Ｓ１９〕パケット廃棄演算処理部２６は、（全通過ビット、全廃棄ビット）＝（０、０）を認識すると廃棄フラグ制御（図１６のフロー）へ進む。なお、（全通過ビット、全廃棄ビット）＝（１、０）はステップＳ１３へいき、（全通過ビット、全廃棄ビット）＝（０、１）はステップＳ１８へいく。なお、（全通過ビット、全廃棄ビット）＝（１、１）の状態はありえないが、テーブル上に、もし、このような値が誤設定されていた場合は全廃棄へ向かう。【０１０１】
図１６は廃棄フラグ制御の動作を示すフローチャートである。
〔Ｓ２１〕パケット廃棄演算処理部２６は、カラーがYellowか否かを判断する。Yellowでなければ（Greenの場合）ステップＳ２２へいき、YellowならばステップＳ２４へいく。【０１０２】
〔Ｓ２２〕パケット廃棄演算処理部２６は、廃棄通知として“全通過”を送信し、パケット受信部２２は、到着パケットを全通過させて、該当出力ポートのキューへ送信する。
〔Ｓ２３〕パケット廃棄演算処理部２６は、第１の廃棄フラグ制御を行う（詳細は後述）。また、処理対象のネットワーク（ＷＡＮ、ＬＡＮなど）に対応する演算結果保持テーブル２５ａに対して、第１の廃棄フラグ制御で得た廃棄カウント、受信カウント、廃棄フラグのそれぞれの値を書き込む。【０１０３】
〔Ｓ２４〕パケット廃棄演算処理部２６は、全廃棄＝１か否かを判断する、１でない場合はステップＳ２２へいき、１の場合はステップＳ２５へいく。
〔Ｓ２５〕パケット廃棄演算処理部２６は、廃棄通知として“全廃棄”を送信し、パケット受信部２２は、到着パケットを全廃棄する。【０１０４】
〔Ｓ２６〕パケット廃棄演算処理部２６は、第２の廃棄フラグ制御を行う（詳細は後述）。また、処理対象のネットワークに対応する演算結果保持テーブル２５ａに対して、第２の廃棄フラグ制御で得た廃棄カウント、受信カウント、廃棄フラグのそれぞれの値を書き込む。【０１０５】
次に廃棄フラグ制御について説明する。廃棄フラグ（１bit）は、ＯＮであれば受信パケットを廃棄するフラグである。フラグＯＮ／ＯＦＦの基本動作としては、受信カウント値が受信ターゲットを超えた場合には、廃棄フラグをＯＮとし、廃棄カウント値が廃棄ターゲットを超えた場合には、廃棄フラグをＯＦＦとする。ただし、以下に示す条件（１）、（２）にしたがって、カウント値／フラグ値は求められて、その値が演算結果保持テーブル２５ａへライトバックされる。【０１０６】
（１）演算結果保持テーブル２５ａから廃棄フラグを読み出したときに、廃棄フラグがＯＦＦであった場合のライトバック制御（第１の廃棄フラグ制御）。
新廃棄カウントは、前回の廃棄カウントとし（新廃棄カウント＝＝廃棄カウント）、新受信カウントは、Length長＋前回の受信カウントとなる（新受信カウント＝＝Length長＋受信カウント）。【０１０７】
ここで、受信カウント＋Length長≧補正受信ターゲットであり、かつ廃棄カウント≧補正廃棄ターゲットならば、受信カウントから補正受信ターゲット分減算させるが、廃棄フラグは立たせず、廃棄カウントから補正廃棄ターゲット分減算させる。【０１０８】
したがって、パケット廃棄演算処理部２６は、廃棄カウントとして演算結果保持テーブル２５ａへライトバックする廃棄カウント（ＷＢ廃棄カウント）は、新廃棄カウント−補正廃棄ターゲットの値をライトバックし、受信カウントとして演算結果保持テーブル２５ａへライトバックする受信カウント（ＷＢ受信カウント）は、新受信カウント−補正受信ターゲットをライトバックし、廃棄フラグ（ＷＢ廃棄フラグ）として演算結果保持テーブル２５ａへライトバックする廃棄フラグは０をライトバックする。【０１０９】
また、廃棄カウント＜補正廃棄ターゲットならば、受信カウントから補正受信ターゲット分減算させ、廃棄フラグを立たせて次の到着パケットを廃棄させる。したがって、演算結果保持テーブル２５ａにライトバックする情報（ＷＢ廃棄カウント、ＷＢ受信カウント、ＷＢ廃棄フラグ）は、ＷＢ廃棄カウント＝新廃棄カウント、ＷＢ受信カウント＝新受信カウント−補正受信ターゲット、ＷＢ廃棄フラグ＝１となる。【０１１０】
さらに、受信カウント＋Length長＜補正受信ターゲットならば、廃棄フラグは立たせず、廃棄カウントの変更はない。したがって、演算結果保持テーブル２５ａにライトバックする情報（ＷＢ廃棄カウント、ＷＢ受信カウント、ＷＢ廃棄フラグ）は、ＷＢ廃棄カウント＝新廃棄カウント、ＷＢ受信カウント＝新受信カウント、ＷＢ廃棄フラグ＝０となる。【０１１１】
（２）演算結果保持テーブル２５ａから廃棄フラグを読み出したときに、廃棄フラグがＯＮであった場合のライトバック制御（第２の廃棄フラグ制御）。
新廃棄カウントは、Length長＋前回の廃棄カウントとし（新廃棄カウント＝＝Length長＋廃棄カウント）、新受信カウントは、Length長＋前回の受信カウントとなる（新受信カウント＝＝Length長＋受信カウント）。【０１１２】
ここで、廃棄カウント＋Length長≧補正廃棄ターゲットであり、かつ受信カウント≧補正受信ターゲットならば、廃棄カウントから補正廃棄ターゲット分減算させ、廃棄フラグをクリアし、受信カウントから補正受信ターゲット分減算させる。したがって、演算結果保持テーブル２５ａにライトバックする情報（ＷＢ廃棄カウント、ＷＢ受信カウント、ＷＢ廃棄フラグ）は、ＷＢ廃棄カウント＝新廃棄カウント−補正廃棄ターゲット、ＷＢ受信カウント＝新受信カウント−補正受信ターゲット、ＷＢ廃棄フラグ＝０となる。【０１１３】
また、受信カウント＜補正受信ターゲットならば、廃棄カウントから補正廃棄ターゲット分減算させ、廃棄フラグをクリアさせる。したがって、演算結果保持テーブル２５ａにライトバックする情報（ＷＢ廃棄カウント、ＷＢ受信カウント、ＷＢ廃棄フラグ）は、ＷＢ廃棄カウント＝新廃棄カウント−補正廃棄ターゲット、ＷＢ受信カウント＝新受信カウント、ＷＢ廃棄フラグ＝０となる。【０１１４】
さらに、廃棄カウント＋Length長＜補正廃棄ターゲットであり、かつ受信カウント＋Length長≧補正受信ターゲットならば、廃棄カウントからは補正廃棄ターゲット分の減算はせず、廃棄フラグは立たせたままとする。したがって、演算結果保持テーブル２５ａにライトバックする情報（ＷＢ廃棄カウント、ＷＢ受信カウント、ＷＢ廃棄フラグ）は、ＷＢ廃棄カウント＝新廃棄カウント、ＷＢ受信カウント＝新受信カウント、ＷＢ廃棄フラグ＝１となる。【０１１５】
さらにまた、受信カウント＋Length長＜補正受信ターゲットならば、廃棄カウントからは補正廃棄ターゲット分の減算はせず、廃棄フラグは立たせたままとする。したがって、演算結果保持テーブル２５ａにライトバックする情報（ＷＢ廃棄カウント、ＷＢ受信カウント、ＷＢ廃棄フラグ）は、ＷＢ廃棄カウント＝新廃棄カウント、ＷＢ受信カウント＝新受信カウント、ＷＢ廃棄フラグ＝１となる。【０１１６】
以上説明したように、パケット処理装置１０、２０は、ハードウェアの構成のみで、周期的にパケットバッファキューの蓄積量を読み出し、その周期内でターゲットとなる受信パケットおよび廃棄パケットのバイト数を割り出し、その値に従って受信パケットの廃棄・透過を決定する構成とした。これにより、高速のパケット廃棄処理が可能となり、また、サンプリング周期毎に廃棄確率を算出および更新して、パケット廃棄処理を行うので、本来直線状の廃棄確率曲線に追従することができ、廃棄誤差を低減して、高精度のパケット廃棄処理を行うことが可能になる。【０１１７】
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
【符号の説明】
【０１１８】
１０  パケット処理装置
１１  パケットバッファ
１１ａ  キュー
１２  実キュー長位置判別部
１３  廃棄確率演算処理部
１４  パケット廃棄処理部
１５  設定データ保持部
１６  サンプリング周期発生部
【図１】
2009016692.tif 000003
【図２】
2009016692.tif 000004
【図３】
2009016692.tif 000005
【図４】
2009016692.tif 000006
【図５】
2009016692.tif 000007
【図６】
2009016692.tif 000008
【図７】
2009016692.tif 000009
【図８】
2009016692.tif 000010
【図９】
2009016692.tif 000011
【図１０】
2009016692.tif 000012
【図１１】
2009016692.tif 000013
【図１２】
2009016692.tif 000014
【図１３】
2009016692.tif 000015
【図１４】
2009016692.tif 000016
【図１５】
2009016692.tif 000017
【図１６】
2009016692.tif 000018
【手続補正書】
【提出日】平成21年10月21日(2009.10.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
パケットの廃棄処理を行うパケット処理装置において、
パケットを格納するキューを備えたパケットバッファと、
サンプリング周期毎に、パケットが格納された前記キューの占有状態である実キュー長を取得し、パケットの廃棄が開始される前記実キュー長の最小値である最小しきい値と、パケットの全廃棄がなされる前記実キュー長の最大値である最大しきい値との範囲であるランダム初期検知区間に対して、前記実キュー長が存在する位置関係を判別して位置情報を出力する実キュー長位置判別部と、
前記位置情報にもとづいて、サンプリング周期毎にパケットの廃棄確率を算出する廃棄確率演算処理部と、
前記廃棄確率にもとづいて、サンプリング周期毎に前記キューに格納される前のパケットの廃棄処理を行うパケット廃棄処理部と、
を有し、
前記廃棄確率演算処理部は、
前記実キュー長が前記最大しきい値を超えずに前記ランダム初期検知区間内に存在する場合には、
前記キューの占有状態の平均値である平均キュー長を算出し、廃棄すべきパケットの廃棄パケットデータ量の目標値である廃棄ターゲットと、サンプリング時刻に受信したパケットの受信パケットデータ量の目標値である受信ターゲットとを求めて、前記廃棄ターゲットと前記受信ターゲットとの比率から、前記廃棄確率を算出する、
ことを特徴とするパケット処理装置。
【請求項２】
前記廃棄確率演算処理部は、
前記位置情報にもとづいて、前記実キュー長が、前記最小しきい値を超えないことを認識した場合は、前記廃棄確率を０と設定し、前記実キュー長が、前記最大しきい値を超えることを認識した場合は、前記廃棄確率を１と設定する廃棄確率設定部と、
前記位置情報にもとづいて、前記実キュー長が、前記最小しきい値を超えて、前記最大しきい値を超えない前記ランダム初期検知区間内に存在することを認識した場合は、前記平均キュー長を算出して、前記廃棄ターゲットと前記受信ターゲットとの比率から、前記廃棄確率を算出する廃棄確率算出部と、
から構成されることを特徴とする請求項１記載のパケット処理装置。
【請求項３】
前記廃棄確率算出部は、
前記平均キュー長を算出する平均キュー長算出部と、
前記廃棄ターゲットを算出する廃棄ターゲット算出部と、
前記受信ターゲットを算出する受信ターゲット算出部と、
算出された前記廃棄ターゲットと前記受信ターゲットとを同じ定数で除算して、前記廃棄ターゲットのビット値と前記受信ターゲットのビット値とを同一割合で低減させた補正後の補正廃棄ターゲットおよび補正受信ターゲットを求めるターゲット補正部と、
ビット値が低減された後の前記補正廃棄ターゲットを格納する補正廃棄ターゲットレジスタと、
ビット値が低減された後の前記補正受信ターゲットを格納する補正受信ターゲットレジスタと、
前記補正廃棄ターゲットを前記補正受信ターゲットで除算することで、前記廃棄ターゲットと前記受信ターゲットとの比率を求めて、前記廃棄確率を算出する廃棄確率決定部と、
を有することを特徴とする請求項２記載のパケット処理装置。
【請求項４】
前記平均キュー長算出部は、サンプリング時刻ｔ（ｎ）における前記実キュー長をQ（n）、前回のサンプリング時刻ｔ（ｎ−１）における前記平均キュー長をaveQ（n−1）、重み付け値をWqとした場合に、サンプリング時刻ｔ（ｎ）における前記平均キュー長aveQ（n）を以下の式
aveQ（n）＝（１−Wq）×aveQ（n−1）＋Wq×Q（n）
で算出することを特徴とする請求項３記載のパケット処理装置。
【請求項５】
前記平均キュー長をaveQ、前記ランダム初期検知区間内で最大の廃棄確率である最大廃棄確率をmaxP、前記最小しきい値をminQ th、前記最大しきい値をmaxQ th、前記定数をαとした場合に、
前記廃棄ターゲット算出部は、前記廃棄ターゲットをmaxP×（aveQ−minQ th）で求め、
前記受信ターゲット算出部は、前記受信ターゲットを（maxQ th−minQ th）で求め、
前記ターゲット補正部は、前記補正廃棄ターゲットをmaxP×（aveQ−minQ th）／αで求め、前記補正受信ターゲットを（maxQ th−minQ th）／αで求めて、
前記廃棄確率算出部は、前記廃棄確率Pbを以下の式
Pb＝｛maxP×（aveQ−minQ th）／α｝／｛（（maxQ th−minQ th）／α）×１００｝
で算出することを特徴とする請求項３記載のパケット処理装置。
【請求項６】
前記ターゲット補正部は、前記定数の値の大小を、前記ランダム初期検知区間の間隔の長短に比例して設定することで、前記ランダム初期検知区間の間隔が長い場合での前記定数によって低減される割合と、前記ランダム初期検知区間の間隔が短い場合での前記定数によって低減される割合とを一定にすることを特徴とする請求項３記載のパケット処理装置。
【請求項７】
パケットの廃棄処理を行うパケット処理装置において、
出力ポート単位にパケットを格納する複数のキューを備えたパケットバッファと、
サンプリング周期毎に、パケットが格納された前記キューの占有状態である最新の実キュー長を取得し、パケットの廃棄が開始される前記実キュー長の最小値である最小しきい値と、パケットの全廃棄がなされる前記実キュー長の最大値である最大しきい値との範囲であるランダム初期検知区間に対して、前記実キュー長が存在する位置関係を判別して位置情報を生成し、前記位置情報にもとづいて、サンプリング周期毎にパケットの廃棄確率を算出するパケット廃棄演算処理部と、
到着したパケットを受信し、前記廃棄確率にもとづいて、サンプリング周期毎に前記キューに格納される前のパケットの廃棄処理を行うパケット受信部と、
を有し、
前記パケット廃棄演算処理部は、
個別モード時には、前記複数のキューの中の１つのキューから前記実キュー長を取得し、１つのキューから取得した前記実キュー長である単一実キュー長が、前記最大しきい値を超えずに前記ランダム初期検知区間内に存在する場合には、
前記単一キュー長にもとづいて、前記キューの占有状態の平均値である平均キュー長を算出し、廃棄パケットデータ量の目標値である廃棄ターゲットと、受信パケットデータ量の目標値である受信ターゲットとを求めて、前記廃棄ターゲットと前記受信ターゲットとの比率から、前記廃棄確率を算出し、
全体モード時には、出力ポート毎の前記複数のキューのキュー長をすべて加算して、加算値を前記実キュー長として取得し、前記複数のキューから取得した前記実キュー長である加算実キュー長が、前記最大しきい値を超えずに前記ランダム初期検知区間内に存在する場合には、
前記加算実キュー長にもとづいて、前記キューの占有状態の平均値である平均キュー長を算出し、廃棄パケットデータ量の目標値である廃棄ターゲットと、受信パケットデータ量の目標値である受信ターゲットとを求めて、前記廃棄ターゲットと前記受信ターゲットとの比率から、前記廃棄確率を算出する、
ことを特徴とするパケット処理装置。
【請求項８】
前記パケット廃棄演算処理部は、
前記位置情報から、前記単一実キュー長または前記加算実キュー長が、前記最小しきい値を超えないことを認識した場合は、前記廃棄確率を０と設定し、前記単一実キュー長または前記加算実キュー長が、前記最大しきい値を超えることを認識した場合は、前記廃棄確率を１と設定し、
前記位置情報から、前記単一実キュー長または前記加算実キュー長が前記最小しきい値を超えて、前記最大しきい値を超えない前記ランダム初期検知区間内に存在することを認識した場合は、前記単一実キュー長または前記加算実キュー長から前記平均キュー長を算出して、前記廃棄ターゲットと前記受信ターゲットとの比率から、前記廃棄確率を算出する、ことを特徴とする請求項７記載のパケット処理装置。
【国際調査報告】
2009016692.tif 000019
2009016692.tif 000020