(57)【特許請求の範囲】
【請求項１】
パケット通信網を介して確立したコネクションを用いて、送信端末と受信端末との間でデータ通信を行う際、前記パケット通信網に接続されて前記送信端末からのパケットを前記受信端末へ転送するパケット転送装置において、
前記送信端末から受信した受信パケットのヘッダに含まれる１つ以上のフィールドから、送信端末と受信端末との間でデータの転送に使用されるコネクションを識別し、その確立および解放を検出するパケット分類部と、
前記パケット分類部で識別された各コネクションについて、そのコネクションの確立後に転送した受信パケットのデータ量が少ない順にコネクションをソートし、前記データ量が最も少ないコネクションから順番に受信パケットを転送するスケジューラとを備えることを特徴とするパケット転送装置。
【請求項２】
請求項１記載のパケット転送装置において、
前記パケット分類部で識別された各コネクションに対応するキューへ当該受信パケットを順次格納するキューマネージャをさらに備え、
前記スケジューラは、前記各コネクションについて、そのコネクションの確立後に転送した受信パケットのデータ量が少ない順にコネクションをソートし、前記データ量が最も少ないコネクションのキューから順番に受信パケットを転送することを特徴とするパケット転送装置。
【請求項３】
請求項１または２記載のパケット転送装置において、
前記スケジューラは、次に受信パケットを転送する際、前記データ量に代えて、前記各コネクションについて、そのコネクションの確立後からの経過時間が短い順にコネクションをソートし、前記経過時間が最も短いコネクションから順番に受信パケットを転送することを特徴とするパケット転送装置。
【請求項４】
請求項１または２記載のパケット転送装置において、
前記スケジューラは、次に受信パケットを転送する際、前記データ量に代えて、前記各コネクションについて、そのコネクションの転送レートの時間変化が正でかつその時間変化が大きい順にコネクションをソートし、前記時間変化が最も大きいコネクションから順番に受信パケットを転送することを特徴とするパケット転送装置。
【請求項５】
請求項１または２記載のパケット転送装置において、
前記スケジューラは、前記各コネクションをそのコネクションの確立後に転送した受信パケットのデータ量に基づき複数のグループに分類し、次に受信パケットを転送する際、前記各グループについて、前記データ量が少ない順にグループをソートし、前記データ量が最も少ないグループに属するコネクションから順番に受信パケットを転送することを特徴とするパケット転送装置。
【請求項６】
請求項３記載のパケット転送装置において、
前記スケジューラは、前記各コネクションをそのコネクションの確立後からの経過時間に基づき複数のグループに分類し、次に受信パケットを転送する際、前記各グループについて、前記経過時間が短い順にグループをソートし、前記経過時間が最も短いグループに属するコネクションから順番に受信パケットを転送することを特徴とするパケット転送装置。
【請求項７】
請求項４記載のパケット転送装置において、
前記スケジューラは、前記各コネクションをそのコネクションの転送レートの時間変化に基づき複数のグループに分類し、次に受信パケットを転送する際、前記各グループについて、前記時間変化が正でかつその時間変化が大きい順にグループをソートし、前記時間変化が最も大きいグループに属するコネクションから順番に受信パケットを転送することを特徴とするパケット転送装置。
【請求項８】
請求項１〜７記載のパケット転送装置において、
前記コネクションでは、トランスポート層プロトコルとしてＴＣＰを用いることを特徴とするパケット転送装置。
【請求項９】
パケット通信網を介して確立したコネクションを用いて、送信端末と受信端末との間でデータ通信を行う際、前記パケット通信網に接続されて前記送信端末からのパケットを前記受信端末へ転送するパケット転送装置で用いるパケット転送方法において、
前記送信端末から受信した受信パケットのヘッダに含まれる１つ以上のフィールドから、送信端末と受信端末との間でデータの転送に使用されるコネクションを識別して、その確立および解放を検出し、
これら識別された各コネクションについて、そのコネクションの確立後に転送した受信パケットのデータ量が少ない順にコネクションをソートし、前記データ量が最も少ないコネクションから順番に受信パケットを転送することを特徴とするパケット転送方法。
【請求項１０】
請求項９記載のパケット転送方法において、
前記識別された各コネクションに対応するキューへ当該受信パケットを順次格納し、
前記各コネクションについて、そのコネクションの確立後に転送した受信パケットのデータ量が少ない順にコネクションをソートし、前記データ量が最も少ないコネクションのキューから順番に受信パケットを転送することを特徴とするパケット転送方法。
【請求項１１】
請求項９または１０記載のパケット転送方法において、
次に受信パケットを転送する際、前記データ量に代えて、前記各コネクションについて、そのコネクションの確立後からの経過時間が短い順にコネクションをソートし、前記経過時間が最も短いコネクションから順番に受信パケットを転送することを特徴とするパケット転送方法。
【請求項１２】
請求項９または１０記載のパケット転送方法において、
次に受信パケットを転送する際、前記データ量に代えて、前記各コネクションについて、そのコネクションの転送レートの時間変化が正でかつその時間変化が大きい順にコネクションをソートし、前記時間変化が最も大きいコネクションから順番に受信パケットを転送することを特徴とするパケット転送方法。
【請求項１３】
請求項９または１０記載のパケット転送方法において、
前記各コネクションをそのコネクションの確立後に転送した受信パケットのデータ量に基づき複数のグループに分類し、
次に受信パケットを転送する際、前記各グループについて、前記データ量が少ない順にグループをソートし、前記データ量が最も少ないグループに属するコネクションから順番に受信パケットを転送することを特徴とするパケット転送方法。
【請求項１４】
請求項１１記載のパケット転送方法において、
前記各コネクションをそのコネクションの確立後からの経過時間に基づき複数のグループに分類し、
次に受信パケットを転送する際、前記各グループについて、前記経過時間が短い順にグループをソートし、前記経過時間が最も短いグループに属するコネクションから順番に受信パケットを転送することを特徴とするパケット転送方法。
【請求項１５】
請求項１２記載のパケット転送方法において、
前記各コネクションをそのコネクションの転送レートの時間変化に基づき複数のグループに分類し、
次に受信パケットを転送する際、前記各グループについて、前記時間変化が正でかつその時間変化が大きい順にグループをソートし、前記時間変化が最も大きいグループに属するコネクションから順番に受信パケットを転送することを特徴とするパケット転送方法。
【請求項１６】
請求項９〜１５記載のパケット転送方法において、
前記コネクションでは、トランスポート層プロトコルとしてＴＣＰを用いることを特徴とするパケット転送方法。
【請求項１７】
パケット通信網を介して確立したコネクションを用いて、送信端末と受信端末との間でデータ通信を行う際、前記パケット通信網に接続されて前記送信端末からのパケットを前記受信端末へ転送するパケット転送装置のコンピュータで、
前記送信端末から受信した受信パケットのヘッダに含まれる１つ以上のフィールドから、送信端末と受信端末との間でデータの転送に使用されるコネクションを識別して、その確立および解放を検出するステップと、
これら識別された各コネクションについて、そのコネクションの確立後に転送した受信パケットのデータ量が少ない順にコネクションをソートし、前記データ量が最も少ないコネクションから順番に受信パケットを転送するステップとを実行させるためのプログラム。
【請求項１８】
請求項１７記載のプログラムにおいて、
前記受信パケットを優先して転送する際、前記識別された各コネクションに対応するキューへ当該受信パケットを順次格納し、前記各コネクションについて、そのコネクションの確立後に転送した受信パケットのデータ量が少ない順にコネクションをソートし、前記データ量が最も少ないコネクションのキューから順番に受信パケットを転送するステップを実行させるためのプログラム。
【請求項１９】
請求項１７または１８記載のプログラムにおいて、
次に受信パケットを転送する際、前記データ量に代えて、前記各コネクションについて、そのコネクションの確立後からの経過時間が短い順にコネクションをソートし、前記経過時間が最も短いコネクションから順番に受信パケットを転送するステップを実行させるためのプログラム。
【請求項２０】
請求項１７または１８記載のプログラムにおいて、
次に受信パケットを転送する際、前記データ量に代えて、前記各コネクションについて、そのコネクションの転送レートの時間変化が正でかつその時間変化が大きい順にコネクションをソートし、前記時間変化が最も大きいコネクションから順番に受信パケットを転送するステップを実行させるためのプログラム。
【請求項２１】
請求項１７または１８記載のプログラムにおいて、
前記各コネクションをそのコネクションの確立後に転送した受信パケットのデータ量に基づき複数のグループに分類するステップと、
次に受信パケットを転送する際、前記各グループについて、前記データ量が少ない順にグループをソートし、前記データ量が最も少ないグループに属するコネクションから順番に受信パケットを転送するステップを実行させるためのプログラム。
【請求項２２】
請求項１９記載のプログラムにおいて、
前記各コネクションをそのコネクションの確立後からの経過時間に基づき複数のグループに分類するステップと、
次に受信パケットを転送する際、前記各グループについて、前記経過時間が短い順にグループをソートし、前記経過時間が最も短いグループに属するコネクションから順番に受信パケットを転送するステップを実行させるためのプログラム。
【請求項２３】
請求項２０記載のプログラムにおいて、
前記各コネクションをそのコネクションの転送レートの時間変化に基づき複数のグループに分類するステップと、
次に受信パケットを転送する際、前記各グループについて、前記時間変化が正でかつその時間変化が大きい順にグループをソートし、前記時間変化が最も大きいグループに属するコネクションから順番に受信パケットを転送するステップを実行させるためのプログラム。
【請求項２４】
請求項１７〜２３記載のプログラムにおいて、
前記コネクションでは、トランスポート層プロトコルとしてＴＣＰを用いることを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、パケット転送装置、パケット転送方法およびプログラムに関し、特にインターネットなどで使用されているＴＣＰ（Transmission Control Protocol）を用いてパケットを転送する際、複数のコネクション間で公平にパケット転送するパケット転送装置、パケット転送方法およびプログラムに関するものである。
【０００２】
【従来の技術】
従来、パケット通信ではパケット転送装置におけるパケットスケジューリング方式の工夫によってコネクション間の公平性の向上が図られてきた。
従来のスケジューリング方式の１つとして、ＤＲＲ（Deficit Round Robin）という技術がある（例えば、M.Shreedhar, G.Varghese,"Efficient fair queuing using deficit round robin",Proc. ACM SIGCOMM 1995. など参照）。
【０００３】
以下、図１４，１５を参照して、上記ＤＲＲについて説明する。図１４はＤＲＲを用いたパケット転送装置の構成を示すブロック図である。図１５はＤＲＲに基づくパケット転送制御方法を示すフローチャートである。
このパケット転送装置には、入力端子００１、コネクション情報記憶部００２、パケット分類部００３、キューマネージャ００４、キュー００６〜００８を含むキュー集合００５、デフォルトキュー０１１、スケジューラ００９、および出力端子０１０が設けられている。
【０００４】
ＴＣＰ／ＩＰを利用したパケット通信を行う複数の通信装置間に、図１４に示すパケット転送装置が設置されている場合、入力端子００１から入力されたパケットはパケット分類部００３でコネクション毎に分類される。
パケット分類部００３はヘッダ解析を行い、コネクションのプロトコル種別、送信元アドレス、送信元ポート番号、宛先アドレス、宛先ポート番号を組としてコネクションを認識し適切なコネクションを識別する。
【０００５】
ここで、ヘッダ解析の結果、トランスポート層プロトコルとしてＴＣＰを用い、ＴＣＰヘッダ部分のＳＹＮフラグがたっているコネクション確立パケットを受信したことがわかった場合には、キューマネージャ００４により新規にキューを生成し、送信元と宛先のアドレス・ポート番号の組と生成したキューの識別子の情報をもつ新規コネクション情報をコネクション情報記憶部００２に登録し、生成したキューにパケットを格納する。
また、ヘッダ解析の結果、トランスポート層プロトコルとしてＴＣＰを用い、データパケットを受信したことがわかった場合には、キューマネージャ００４により送信元と宛先のアドレス・ポート番号の組をキーとしてコネクション情報記憶部００２に問合せ、格納すべきキューの識別子を得、該当キューにパケットを格納する。
【０００６】
あるいは、ヘッダ解析の結果、トランスポート層プロトコルとしてＴＣＰを用い、ＴＣＰヘッダ部分のＦＩＮフラグがたっているコネクション開放パケットを受信したことがわかった場合には、キューマネージャ００４により送信元と宛先のアドレス・ポート番号の組をキーとしてコネクション情報記憶部００２から格納すべきキューの識別子を得て、該当キューにパケットを格納する。その後、コネクション情報記憶部００２に該当する登録情報を消去するよう要求する。コネクション情報記憶部００２は登録情報を消去する要求を受けると、一定時間後にコネクション情報を消去する。
また、ヘッダ解析の結果、トランスポート層プロトコルとしてＵＤＰ（User Datagram Protocol）などＴＣＰ以外のプロトコルを使用するパケットを受信したことがわかった場合には、あらかじめ設けてあるデフォルトキュー０１１に格納し、ＴＣＰコネクションとは別に帯域を確保し、このキューを処理する。
【０００７】
コネクション情報記憶部００２は、ＴＣＰコネクションが異常終了した時のために、それぞれのコネクションについてタイマを保持し、一定時間中にパケットが入力されなければコネクション情報を削除する。
キューに追加する時にキューマネージャ００４によって、ある条件にしたがってパケットを廃棄するＲＥＤ（Random Early Detection: S.Floyd, V.Jacobson.,"Random early detection gateways for congestion avoidance", IEEE/ACM trans. networking, 1995.）などのアクティブ・キュー・マネジメントを行っても良い。このような処理を経て、入力パケットはコネクション毎のキュー００６〜００８のいずれかに追加される。
【０００８】
スケジューラ００９では、キュー集合００５中のキュー００６〜００８のいずれかのキューを選択し、キューの先頭からパケット取り出し、出力端子０１０を通してネットワークに出力する。スケジューラ００９は出力端子０１０がパケットを送信し終えると次に送信すべきパケットを選択する。
【０００９】
スケジューラ００９でのキューの選択動作すなわちパケット転送制御は、図１５に示すような処理となる。この場合、デフォルトキューとコネクション毎のキュー群は、それぞれに割り当てられたタイミングに処理することとする。
ＤＲＲのスケジューラ００９は、ラウンドロビン方式によってキューを順番に選択し、各キューでパケットを出力するかどうかを以下のようにして判断する。このとき、各コネクションのキュー毎に不足カウンタという変数を用意し、コネクション確立時に不足カウンタを０にリセットする。
【００１０】
まず、スケジューラ００９は、出力端子０１０でパケット転送が終了し次に転送すべきパケットを選択する時、デフォルトキュー０１１を処理するタイミングであるか判断する（ステップＡ０１）。
ここで、デフォルトキューを処理するタイミングである場合（ステップＡ０１：ＹＥＳ）、次にデフォルトキューが空であるかどうかチェックする（ステップＡ１０）。もし空であれば（ステップＡ１０：ＹＥＳ）、すぐにステップＡ０１に戻る。空でなければ（ステップＡ１０：ＮＯ）、デフォルトキューの先頭パケットを送信し（ステップＡ１１）、再びステップＡ０１に戻る。
【００１１】
デフォルトキューを処理するタイミングでない場合は（ステップＡ０１：ＮＯ）、まず、処理するキューについてキューが空であるか否かをチェックする（ステップＡ０２）。
ここで、キューの中に送信すべきパケットがない場合には（ステップＡ０２：ＹＥＳ）、不足カウンタをリセットし（ステップＡ０７）、このキューの処理を終了する。
【００１２】
一方、キューが空でなければ（ステップＡ０２：ＹＥＳ）、ｑｕａｎｔｕｍと呼ばれる定数を不足カウンタに加算し（ステップＡ０３）、キュー先頭のパケットサイズと不足カウンタの大小を比較する（ステップＡ０４）。
このとき、不足カウンタの方が大きければ（ステップＡ０４：ＹＥＳ）、パケットを出力し（ステップＡ０５）、不足カウンタからパケットサイズ分を減算し（ステップＡ０６）、再びステップＡ０５に戻る。また、不足カウンタの方が先頭のパケットサイズより小さければ（ステップＡ０４：ＮＯ）、不足カウンタの値を記憶し（ステップＡ０８）、このキューの処理を終了する。
【００１３】
キューの処理を終了した後、全てのキューが空であるかチェックし（ステップＡ０９）、空でなければ再び次に選択されたキューについて処理するためのステップＡ０１に移る。全てのキューが空であれば（ステップＡ０９：ＹＥＳ）、一連のパケット転送制御処理を終了する。
以上の結果、ｑｕａｎｔｕｍで決まるデータ長の送信に要する時間の程度において、各コネクションに対する転送レートはほぼ平均化され、コネクション間の公平性を保つことが可能となる。
【００１４】
【発明が解決しようとする課題】
しかしながら、このような従来のパケット転送制御方法では、ＤＲＲのようなフェアスケジューラを用いたとしても、インターネットで一般的に使用されているＴＣＰを用いてデータを転送する場合、小さなデータを転送するコネクションほどスループットが小さく、コネクション間のスループットが公平にならないという問題点があった。
特に、インターネットでＷｅｂブラウジングをおこなう際に広く使用されるＨＴＴＰ（Hyper Text Transfer Protocol）を用いてＴＣＰ通信を行う場合、小さなファイルのデータ転送がほとんどであり、大きなファイルの転送はごく一部となるため、不公平性が大きい。
【００１５】
その理由は、ＴＣＰでは、コネクション確立直後は低い送信レートから始めて指数関数的に増加させるスロースタート動作と、コネクション確立後しばらく経過してからは送信レートを線形的に増加させる輻輳回避動作があり、転送するデータサイズが小さい場合スロースタート動作の間にコネクションが終了し、スループットが小さくなる傾向があるためである。
本発明はこのような課題を解決するためのものであり、転送するデータサイズの異なるＴＣＰコネクション間の公平性の向上をはかることができるパケット転送装置、パケット転送制御方法およびプログラムを提供することを目的としている。
【００１６】
【課題を解決するための手段】
このような目的を達成するために、本発明にかかるパケット転送装置は、パケット通信網を介して確立したコネクションを用いて、送信端末と受信端末との間でデータ通信を行う際、パケット通信網に接続されて送信端末からのパケットを受信端末へ転送するパケット転送装置において、送信端末から受信した受信パケットのヘッダに含まれる１つ以上のフィールドから、送信端末と受信端末との間でデータの転送に使用されるコネクションを識別し、その確立および解放を検出するパケット分類部を設け、スケジューラで、パケット分類部で識別された各コネクションについて、そのコネクションの確立後に転送した受信パケットのデータ量が少ない順にコネクションをソートし、データ量が最も少ないコネクションから順番に受信パケットを転送するようにしたものである。
【００１７】
このとき、パケット分類部で識別された各コネクションに対応するキューへ当該受信パケットを順次格納するキューマネージャをさらに設け、スケジューラで、各コネクションについて、そのコネクションの確立後に転送した受信パケットのデータ量が少ない順にコネクションをソートし、データ量が最も少ないコネクションのキューから順番に受信パケットを転送するようにしてもよい。
【００１８】
コネクション選択の条件としては、スケジューラで、次に受信パケットを転送する際、データ量に代えて、各コネクションについて、そのコネクションの確立後からの経過時間が短い順にコネクションをソートし、経過時間が最も短いコネクションから順番に受信パケットを転送するようにしてもよい。
あるいは、スケジューラで、次に受信パケットを転送する際、データ量に代えて、各コネクションのうち、そのコネクションの転送レートの時間変化が正でかつその時間変化が大きい順にコネクションをソートし、時間変化が最も大きいコネクションから順番に受信パケットを転送するようにしてもよい。
【００１９】
また、スケジューラで、各コネクションをそのコネクションの確立後に転送した受信パケットのデータ量に基づき複数のグループに分類し、次に受信パケットを転送する際、各グループについて、データ量が少ない順にグループをソートし、データ量が最も少ないグループに属するコネクションから順番に受信パケットを転送するようにしてもよい。
【００２０】
このとき、コネクション選択の条件としては、スケジューラで、各コネクションをそのコネクションの確立後からの経過時間に基づき複数のグループに分類し、次に受信パケットを転送する際、各グループについて、経過時間が短い順にグループをソートし、経過時間が最も短いグループに属するコネクションから順番に受信パケットを転送するようにしてもよい。
あるいは、スケジューラで、各コネクションをそのコネクションの転送レートの時間変化に基づき複数のグループに分類し、次に受信パケットを転送する際、各グループについて、時間変化が正でかつその時間変化が大きい順にグループをソートし、時間変化が最も大きいグループに属するコネクションから順番に受信パケットを転送するようにしてもよい。
上記コネクションでは、トランスポート層プロトコルとしてＴＣＰを用いるようにしてもよい。
【００２１】
また、本発明にかかるパケット転送方法は、パケット通信網を介して確立したコネクションを用いて、送信端末と受信端末との間でデータ通信を行う際、パケット通信網に接続されて送信端末からのパケットを受信端末へ転送するパケット転送装置で用いるパケット転送方法において、送信端末から受信した受信パケットのヘッダに含まれる１つ以上のフィールドから、送信端末と受信端末との間でデータの転送に使用されるコネクションを識別して、その確立および解放を検出し、これら識別された各コネクションについて、そのコネクションの確立後に転送した受信パケットのデータ量が少ない順にコネクションをソートし、データ量が最も少ないコネクションから順番に受信パケットを転送するようにしたものである。
【００２２】
このとき、識別された各コネクションに対応するキューへ当該受信パケットを順次格納し、各コネクションについて、そのコネクションの確立後に転送した受信パケットのデータ量が少ない順にコネクションをソートし、データ量が最も少ないコネクションのキューから順番に受信パケットを転送するようにしてもよい。
【００２３】
コネクション選択の条件としては、次に受信パケットを転送する際、データ量に代えて、各コネクションについて、そのコネクションの確立後からの経過時間が短い順にコネクションをソートし、経過時間が最も短いコネクションから順番に受信パケットを転送するようにしてもよい。
あるいは、次に受信パケットを転送する際、データ量に代えて、各コネクションについて、そのコネクションの転送レートの時間変化が正でかつその時間変化が大きい順にコネクションをソートし、時間変化が最も大きいコネクションから順番に受信パケットを転送するようにしてもよい。
【００２４】
また、各コネクションをそのコネクションの確立後に転送した受信パケットのデータ量に基づき複数のグループに分類し、次に受信パケットを転送する際、各グループについて、データ量が少ない順にグループをソートし、データ量が最も少ないグループに属するコネクションから順番に受信パケットを転送するようにしてもよい。
【００２５】
このとき、コネクション選択の条件としては、各コネクションをそのコネクションの確立後からの経過時間に基づき複数のグループに分類し、次に受信パケットを転送する際、各グループについて、経過時間が短い順にグループをソートし、経過時間が最も短いグループに属するコネクションから順番に受信パケットを転送するようにしてもよい。
あるいは、各コネクションをそのコネクションの転送レートの時間変化に基づき複数のグループに分類し、次に受信パケットを転送する際、各グループについて、時間変化が正でかつその時間変化が大きい順にグループをソートし、時間変化が最も大きいグループに属するコネクションから順番に受信パケットを転送するようにしてもよい。
上記コネクションでは、トランスポート層プロトコルとしてＴＣＰを用いるようにしてもよい。
【００２６】
また、本発明にかかるプログラムは、上記した本発明にかかるパケット転送方法の各ステップを実行するようにしたものである。
【００２７】
【発明の実施の形態】
次に、本発明の実施の形態について図面を参照して説明する。
図１は本発明の一実施の形態にかかるパケット転送装置の適用例である。
この通信ネットワークは、通信装置Ａ０１、無線リンク０２、パケット転送装置０３、有線リンク０４、パケットネットワーク０５、有線リンク０６、および通信装置Ｂ０７から構成されている。
【００２８】
通信装置Ａ０１と通信装置Ｂ０７は予め確立したコネクションを介してパケット通信を行っており、出力されたパケットは、無線リンク０２、パケット転送装置０３、有線リンク０４、パケットネットワーク０５、および有線リンク０６を経由して通信相手に到達する。
無線リンク０２は、通信装置Ｂ０７から通信装置Ａ０１の方向へパケットを転送する下りリンク１１と、通信装置Ａ０１から通信装置Ｂ０７の方向へパケットを転送する上りリンク１２からなる。ただし、無線リンク０２は一例であり、パケット転送装置０３から通信装置Ａ０１へ１ホップで到達すれば、有線リンクでも構わない。
パケット転送装置０３は、下りリンク１１に関してパケット転送の順序を制御する。パケットネットワーク０５は、パケットが通るネットワークである。
【００２９】
図２にパケット転送装置０３の構成を示す。
このパケット転送装置０３には、入力端子１０１、コネクション情報記憶部１０２、パケット分類部１０３、キューマネージャ１０４、キュー１０６〜１０８を含むキュー集合１０５、スケジューラ１０９、出力端子１１０、およびデフォルトキュー１１１が設けられている。
【００３０】
入力端子１０１は、パケット転送装置０３に入力されたパケットを受信する部分であり、パケット分類部１０３に受信パケットを送信する。
コネクション情報記憶部１０２は、コネクションの識別子などのコネクションを管理する情報を保持する部分であり、パケット分類部１０３から情報の登録、更新、参照、削除を行われる。
【００３１】
パケット分類部１０３は、入力されたパケットのヘッダ解析を行うことによりコネクションを識別し、コネクションの確立を検出した場合はコネクション情報記憶部１０２に登録し、コネクションの解放を検出した場合はコネクション情報記憶部１０２の該当情報を削除する。また、既知のコネクションならばコネクション情報記憶部１０２を参照し、対応するキューのキュー識別子とともにキューマネージャ１０４に受信パケットを渡す。
キューマネージャ１０４は、パケット分類部１０３から受け取ったパケットをキュー識別子に従い該当するキューに格納する。この際、必要に応じてパケットを廃棄してもよい。
【００３２】
キュー集合１０５は、コネクション毎に用意されたキュー１０６〜１０８から構成される。
デフォルトキュー１１１は、トランスポート層プロトコルがＴＣＰ以外のパケットなどを格納するデフォルトのキューである。
スケジューラ１０９はキュー集合１０５に属するキューとデフォルトキュー１１１の中からいずれかのキューを選択し、キューの先頭からパケットを取り出して出力端子１１０へと送信する。出力端子１１０はスケジューラ１０９から受け取ったパケットをネットワークへ送信する。
【００３３】
パケット転送装置０３は、図３に示すように、全体としてプログラムにより各種処理を実行するコンピュータから構成されている。入出力Ｉ／Ｆ（インターフェース）部３１は、パケットの入力端子１０１や出力端子１１０を備えて外部とのパケットのやり取りを行う。演算処理部３２は、ＣＰＵなどのマイクロプロセッサやその周辺回路からなり、所定のプログラムを読み込んで実行することにより、上記ハードウェアとプログラムからなるソフトウェアとを協働させて、パケット分類部１０３、キューマネージャ１０４およびスケジューラ１０９の各機能手段を実現する。記憶部３３はコネクション情報記憶部１０２を実現するとともに、演算処理部３２での処理に用いる各種情報やプログラムを記憶するメモリである。キューバッファ３４は、各キュー１０６〜１０８、１１１を実現するバッファメモリである。これら入出力Ｉ／Ｆ部３１、演算処理部３２、記憶部３３およびキューバッファ３４は、バス３５を介して相互に接続されており、必要に応じて各種情報をやり取りする。
【００３４】
次に、図４を参照して、ＴＣＰコネクションを用いた一般的なパケット転送手順について説明する。図４はＴＣＰコネクションでのパケット転送手順を示すシーケンス図である。
ＴＣＰは、次のような、コネクション確立フェーズと、データ送受信フェーズ、コネクション開放フェーズを持つ。
コネクション確立フェーズでは、ＳＹＮフラグを立てたパケットを送信することから始まる。通信装置Ａ０１，通信装置Ｂ０７のどちらから開始しても構わないが、ここでは通信装置Ａから開始する例を説明する。
【００３５】
まず初めに、通信装置Ａからコネクション確立要求であるＳＹＮフラグを立てたパケットＰ０１が送信される。このパケットＰ０１には、以降のコネクションで使用する通信装置Ａと通信装置ＢのＩＰアドレスおよびポート番号が含まれている。
パケットＰ０１は、パケット転送装置０３により受信、転送され通信装置Ｂにより受信される。パケットＰ０１を受信した通信装置Ｂは、ＳＹＮとＡＣＫフラグを立てたパケットＰ０２を送信し、パケットＰ０２はパケット転送装置でのバケット転送処理Ｐ０３を経て通信装置Ａにより受信される。このパケットＰ０２に対して通信装置ＡがＡＣＫフラグを立てたパケットＰ０４を送信し、パケットＰ０４はパケット転送装置を経て通信装置Ｂにより受信される。以上でＴＣＰコネクション確立が終了する。
【００３６】
このようにしてコネクションが確立した後、データ送受信フェーズでのデータ通信は、確立された相手ＩＰアドレス・ポートに向かって、確立した自分のＩＰアドレス・ポートから、パケットを送信することにより達成される。
通信装置Ｂから送信されたデータパケットＰ０５は、パケット転送装置でのデータ通信処理Ｐ０６を経て通信装置Ａで受信される。
【００３７】
またコネクション開放フェーズでは、ＦＩＮフラグを立てたパケットを送信することから始まる。通信装置Ａ０１、通信装置Ｂ０７どちらから開始しても構わないが、ここでは通信装置Ｂから開始する例を説明する。
まず初めに通信装置Ｂからコネクション開放要求であるＦＩＮフラグを立てたパケットＰ０７が送信される。パケットＰ０７は、パケット転送装置０３でのコネクション開放処理Ｐ０８を経て通信装置Ａで受信される。パケットＰ０７を受信した通信装置Ａは、ＦＩＮとＡＣＫフラグを立てたパケットＰ０９を送信し、パケットＰ０９はパケット転送装置を経て通信装置Ａにより受信される。パケットＰ０９に対して通信装置ＢがＡＣＫフラグを立てたパケットＰ１０を送信し、パケットＰ１０はパケット転送装置を経て通信装置Ａにより受信される。以上でＴＣＰコネクション開放フェーズが終了する。
【００３８】
次に、図２を参照して本発明の第１の実施の形態にかかるパケット転送装置の動作について説明する。
以下では、図１に示したように、通信装置Ａ０１と通信装置Ｂ０２間に本実施の形態にかかるパケット転送装置０３が設置されており、図４で示したように、通信装置Ｂから通信装置Ａへデータ送信する場合を例として説明する。
なお、本実施の形態は、通信装置Ａと通信装置Ｂとの通信を考えた場合、通信装置Ａから通信装置Ｂ方向へのデータ送信と、通信装置Ｂから通信装置Ａ方向へのデータ送信と、通信装置Ｂと通信装置Ａ方向間の双方向データ送信とのいずれについても適用可能である。
【００３９】
まず、ＴＣＰコネクション確立手順におけるコネクション確立処理（図４：Ｐ０３）について説明する。、
パケット転送装置０３では、入力端子１０１へパケットが入力されると、まずパケット分類部１０３でパケットのヘッダ情報の解析を行う。パケット分類部１０３は、ヘッダ解析の結果、ＴＣＰコネクションの確立手順中の、通信装置Ｂから通信装置ＡへのＴＣＰヘッダ部分にＳＹＮフラグがたっているコネクション確立パケットを受信したことがわかると、送信元と宛先のアドレス・ポート番号の組と転送データ量を０とした情報をもつ新規コネクション情報をコネクション情報記憶部１０２に登録し、キューマネージャ１０４に、新しいキューの生成要求と共にパケットを送る。
【００４０】
図５に、コネクション情報記憶部１０２が記憶するコネクション毎の情報の一例を示す。ただし、ここでは、スケジューラにおいて転送データ量を基準とした並べ替えを行うため、コネクション毎にその情報を保持しているが、他に転送レートの時間変動量や、コネクション確立からの経過時間などでも構わない。
キューマネージャ１０４は、パケット分類部１０３からキュー生成要求と共にパケットを受け取ると、新しいキューを生成しコネクション情報記憶部１０２にキュー識別子の情報を該当するコネクションに追加し、パケットを生成したキューに格納する。
【００４１】
次に、ＴＣＰデータ送受信フェーズにおけるデータ送受信処理（図４：Ｐ０６）について説明する。
パケット転送装置０３では、入力端子１０１へパケットが入力されると、まずパケット分類部１０３でパケットのヘッダ情報の解析を行う。パケット分類部１０３は、ヘッダ解析の結果、データパケットを受信したことがわかると、送信元と宛先のアドレス・ポート番号の組をキーとしてコネクション情報記憶部１０２に問合せ、格納すべきキューの識別子を得る。その後、キューマネージャ１０４にキュー識別子と共にパケットを送る。
キューマネージャ１０４は、パケット分類部１０３からキュー識別子と共にパケットを受け取ると、キュー識別子に従い該当するキューにパケットを格納する。
【００４２】
次に、ＴＣＰコネクション開放フェーズにおけるコネクション開放処理（図４：Ｐ０８）について説明する。
パケット転送装置０３では、入力端子１０１へパケットが入力されると、まずパケット分類部１０３でパケットのヘッダ情報の解析を行う。パケット分類部１０３は、ヘッダ解析の結果、ＴＣＰコネクションの開放手順中の、通信装置Ｂから通信装置ＡへのＴＣＰヘッダ部分にＦＩＮフラグがたっているコネクション開放パケットを受信したことがわかると、送信元と宛先のアドレス・ポート番号の組をキーとしてコネクション情報記憶部１０２に、格納すべきキューの識別子を得る。
【００４３】
また、これと同時に、コネクション情報記憶部１０２に該当する登録情報を消去するよう要求する。コネクション情報記憶部１０２は、一定時間後該コネクション情報を消去する。その後、キューマネージャ１０４に、キュー識別子と、キュー削除要求と共にパケットを送る。
キューマネージャ１０４は、パケット分類部１０３からキュー識別子とキュー削除要求と共にパケットを受け取ると、キュー識別子に従い該当するキューにパケットを格納する。キューマネージャ１０４は、キューからパケットが送信された一定時間後キューを削除する。
【００４４】
ヘッダ解析の結果、トランスポート層プロトコルとしてＵＤＰなどＴＣＰ以外のプロトコルを使用するパケットを受信したことがわかった場合には、あらかじめ設けてあるデフォルトキュー１１１に格納し、ＴＣＰコネクションとは別に帯域を確保しこのキューを処理する。
コネクション情報記憶部１０２は、ＴＣＰコネクションが異常終了した時のために、それぞれのコネクションについてタイマを保持し、一定時間中にパケットが入力されなければコネクション情報を削除する。
以上のような処理を経て、入力パケットはコネクション毎のキュー１０６〜１０８のいずれかに追加される。
【００４５】
スケジューラ１０９は、コネクション情報記憶部１０２から得たコネクションの情報を参考に、キュー集合１０５中のキュー１０６〜１０８のいずれかのキューを選択し、そのキュー内のパケットを出力端子１１０を通して通信装置Ａに向けてネットワークに出力する。
そして、スケジューラ１０９は、出力端子１１０がパケットを送信し終えると次の送信パケットを選択し送信する、という処理をキュー集合１０５中のキュー全てが空となるまで続ける。
【００４６】
次に、図６を参照して、スケジューラ１０９のパケット転送制御処理（キュー選択処理）について説明する。図６は、スケジューラでのパケット転送制御処理を示すフローチャートであり、特に選択条件としてコネクション確立後の転送データ量を用いた場合を示している。
デフォルトキューとコネクション毎のキュー群は、それぞれに割り当てられたタイミングに処理することとする。
スケジューラ１０９は、出力端子１１０でパケット転送が終了し次に転送すべきパケットを選択する時、デフォルトキューを処理するタイミングであるか判断する（ステップＢ０１）。
【００４７】
ここで、デフォルトキューを処理するタイミングである場合（ステップＢ０１：ＹＥＳ）、次にデフォルトキューが空であるかどうかチェックする（ステップＢ０６）。
もし空であれば（ステップＢ０６：ＹＥＳ）、すぐにステップＢ０１に戻る。空でなければ（ステップＢ０６：ＮＯ）、デフォルトキューの先頭パケットを送信し（ステップＢ０７）、再びステップＢ０１に戻る。
【００４８】
一方、デフォルトキューを処理するタイミングでない場合は（ステップＢ０１：ＮＯ）、まずキュー集合１０５中の空でない全てのキューを当該コネクション確立後の転送データ量（パケット数や実データ量）が少ない順に並べ替える（ステップＢ０２）。
次に、転送データ量順に並べ替えられたキューの内、最も転送データ量の少ないコネクションを持つキューを最優先とし先頭のパケットを送信する（ステップＢ０３）。
そして、コネクション情報記憶部１０２の保持するコネクション情報の転送データ量を、転送したパケットの情報も含めて更新する（ステップＢ０４）。
【００４９】
その後、キュー集合１０５中の全てのキューが空であるかどうかチェックし（ステップＢ０５）、全てのキューが空でなければ（ステップＢ０５：ＮＯ）、再びステップＢ０１の処理に戻る。全てのキューが空であれば（ステップＢ０５：ＹＥＳ）、一連のパケット転送制御処理を終了する。
【００５０】
以上では、スケジューラ１０９での優先転送制御において、選択条件としてコネクション確立後の転送データ量を用いた場合について説明したが、他の選択条件として、コネクション確立からの経過時間を用いてもよい。
図７は、スケジューラでのパケット転送制御処理を示すフローチャートであり、特に選択条件としてコネクション確立からの経過時間を用いた場合を示している。
この場合、コネクション情報記憶部１０２は、コネクション毎にコネクション確立からの経過時間を記憶している必要がある。
【００５１】
デフォルトキューとコネクション毎のキュー群は、それぞれに割り当てられたタイミングに処理することとする。
スケジューラ１０９は、出力端子１１０でパケット転送が終了し次に転送すべきパケットを選択する時、デフォルトキューを処理するタイミングであるか判断する（ステップＣ０１）。
【００５２】
ここで、デフォルトキューを処理するタイミングである場合（ステップＣ０１：ＹＥＳ）、次にデフォルトキューが空であるかどうかチェックする（ステップＣ０６）。
もし空であれば（ステップＣ０６：ＹＥＳ）、すぐにステップＣ０１に戻る。空でなければ（ステップＣ０６：ＮＯ）、デフォルトキューの先頭パケットを送信し（ステップＣ０７）、再びステップＣ０１に戻る。
【００５３】
一方、デフォルトキューを処理するタイミングでない場合は（ステップＣ０１：ＮＯ）、まずキュー集合１０５中の空でない全てのキューをコネクション確立からの経過時間が短い順に並べ替える（ステップＣ０２）。
次に、コネクション確立からの経過時間順に並べ替えられたキューの内、最もコネクション確立からの経過時間が短いコネクションを持つキューを最優先とし先頭のパケットを送信する（ステップＣ０３）。
【００５４】
そして、コネクション情報記憶部１０２の保持するコネクション情報のコネクション確立からの経過時間を、転送したパケットの情報も含めて更新する（ステップＣ０４）。
その後、キュー集合１０５中の全てのキューが空であるかどうかチェックし（ステップＣ０５）、全てのキューが空でなければ（ステップＣ０５：ＮＯ）、再びステップＣ０１の処理に戻る。全てのキューが空であれば（ステップＣ０５：ＹＥＳ）、一連のパケット転送制御処理を終了する。
【００５５】
また、スケジューラ１０９での優先転送制御において、選択条件として転送レートの時間変化量を用いてもよい。
図８は、スケジューラでのパケット転送制御処理を示すフローチャートであり、特に選択条件として転送レートの時間変化量を用いた場合を示している。
この場合コネクション情報記憶部１０２は、コネクション毎に転送レートの時間変化量を記憶している必要がある。
【００５６】
デフォルトキューとコネクション毎のキュー群は、それぞれに割り当てられたタイミングに処理することとする。
スケジューラ１０９は、出力端子１１０でパケット転送が終了し次に転送すべきパケットを選択する時、デフォルトキューを処理するタイミングであるか判断する（ステップＤ０１）。
ここで、デフォルトキューを処理するタイミングである場合（ステップＤ０１：ＹＥＳ）、次にデフォルトキューが空であるかどうかチェックする（ステップＤ０６）。
もし空であれば（ステップＤ０６：ＹＥＳ）、すぐにステップＤ０１に戻る。空でなければ（ステップＤ０６：ＮＯ）、デフォルトキューの先頭パケットを送信し（ステップＤ０７）、再びステップＤ０１に戻る。
【００５７】
一方、デフォルトキューを処理するタイミングでない場合は（ステップＤ０１：ＮＯ）、まずキュー集合１０５中の空でない全てのキューを転送レートの時間変化量にしたがって並べ替える（ステップＤ０２）。
次に、転送レートの時間変化量順に並べ替えられたキューの内、転送レートの時間変化量が正で最も大きいコネクションを持つキュー、すなわち転送レートが増加しておりその増加幅が最も大きいキューを最優先とし先頭のパケットを送信する（ステップＤ０３）。
【００５８】
そして、コネクション情報記憶部１０２の保持するコネクション情報の転送レートの時間変化量を、転送したパケットの情報も含めて更新する（ステップＤ０４）。
その後、キュー集合１０５中の全てのキューが空であるかどうかチェックする（ステップＤ０５）。全てのキューが空でなければ（ステップＤ０５：ＮＯ）、再びステップＣ０１の処理に戻る。全てのキューが空であれば（ステップＤ０５：ＹＥＳ）、一連のパケット転送制御処理を終了する。
【００５９】
このように、本実施の形態は、パケット分類部１０３で、送信端末から受信した受信パケットのヘッダに含まれる１つ以上のフィールドから、送信端末と受信端末との間でデータの転送に使用されるコネクションを識別し、その確立および解放を検出し、パケット分類部１０３で識別された各コネクションのうち、そのコネクションの確立後に転送した受信パケットのデータ量が少ないコネクションの受信パケットを、スケジューラ１０９で優先して転送するようにしたものである。
【００６０】
またこのとき、キューマネージャ１０４で、パケット分類部１０３により識別された各コネクションに対応するキュー１０６〜１０８へ当該受信パケットを順次格納し、スケジューラ１０９で、次に受信パケットを転送するコネクションを選択する際、各コネクションのうち、そのコネクションの確立後に転送した受信パケットのデータ量が少ないコネクション、コネクションの確立後からの経過時間が短いコネクション、あるいはコネクションの転送レートの時間変化が正でかつその時間変化が大きいコネクションの受信パケットを優先して転送するようにしたものである。
【００６１】
これにより、ＴＣＰコネクションのスロースタート動作時のパケットが優先されるため、各コネクションで転送するデータ量に束縛されることなく、転送するデータサイズの異なるＴＣＰコネクション間の公平性を向上させることができる。
特に、ＴＣＰのスロースタート動作は、ネットワークの輻輳を回避するために送信側の端末がおこなう動作としては適切であるが、データを受信する端末に最も近いエッジルータにおいては、スロースタート中のコネクションに関するパケットを優先して出力したとしても輻輳をまねくことはない。
【００６２】
したがって、通信装置間のパケット転送装置において、ＴＣＰコネクションのスロースタート動作時のパケットを優先する優先制御方式を行い、パケット転送装置において優先するパケットの入力から出力までの待ち時間を低減させることにより、転送するデータサイズが小さいコネクションのスループットを向上させることができる。
また、キュー集合１０５においてコネクション毎にキューを持たず、スケジューラ１０９において優先制御を行わない場合でも、キューマネージャ１０４によりデータ転送量が多いコネクション、転送レートの時間変化が負もしくは０もしくは正で小さいコネクション、あるいはコネクション確立からの経過時間が長いコネクションほど、パケット廃棄率を高くすることで同様の作用効果が得られる。
【００６３】
具体的には、キューマネージャ１０４で、パケットが到着する際、適当にパケットを廃棄するようにしてもよい。例えば、コネクション情報記憶部１０２から得たコネクションの情報を参考に、転送データ量が多いほどパケット廃棄確率を高くしておけばよい。他に、データ流量の変化が負や正で小さいものほどパケット廃棄確率を高くする、コネクション確立後の経過時間が長いほどパケット廃棄確立を高くする、メモリが足りなくなった場合に入力パケットを無条件に廃棄する、ＲＥＤ、などの任意のアルゴリズムで行って構わない。
【００６４】
次に、図９を参照して、本発明の第２の実施の形態にかかるパケット転送装置について説明する。
このパケット転送装置には、入力端子２０１、コネクション情報記憶部２０２、パケット分類部２０３、キューマネージャ２０４、キュー２０７〜２０８を含む優先グループ２０５、キュー２０９〜２１０を含む非優先グループ２０６、デフォルトキュー２１６、スケジューラ２１１、および出力端子２１５が設けられている。なお、本実施の形態にかかるパケット転送装置も、前述した図３と同様の構成をなしており、ここでの説明は省略する。
【００６５】
入力端子２０１は、パケット転送装置０３に入力されたパケットを受信する部分であり、パケット分類部２０３に受信パケットを送信する。
コネクション情報記憶部２０２は、コネクションの識別子などのコネクションを管理する情報を保持する部分であり、パケット分類部２０３から情報の登録、更新、参照、削除を行われる。
パケット分類部２０３は、入力されたパケットのヘッダ解析を行うことにより、コネクションを識別し、コネクション情報記憶部２０２へのコネクションの登録、削除し、参照、更新を行い、コネクションの情報と共にキューマネージャ２０４に受信パケットを渡す。
【００６６】
キューマネージャ２０４は、パケット分類部２０３から受け取ったパケットをキューに格納する。この際、パケットを廃棄する場合もある。
優先グループ２０５は、コネクション毎に存在するキュー２０７、２０８を備える。非優先グループ２０６はコネクション毎に存在するキュー２０９、２１０を備える。ただし、この例ではグループを二つに分けているが、任意の数のグループに分けて構わない。
【００６７】
デフォルトキュー２１６は、トランスポート層プロトコルがＴＣＰ以外のパケットなどを格納するデフォルトのキューである。
スケジューラ２１１は、第１スケジューラ２１２、２１３と第２スケジューラ２１４を備える。第１スケジューラ２１２、２１３は、それぞれ優先グループ２０５、非優先グループ２０６内のコネクション毎のキューを並べ替えて第２スケジューラ２１４に渡す。第２スケジューラ２１４は、第１スケジューラ２１２、２１３、もしくはデフォルトキュー２１６から送信するべきキューを選択しパケットを送信する。
出力端子２１５はスケジューラ２１１から受け取ったパケットをネットワークへ送信する。
【００６８】
次に、図９を参照して本発明の第２の実施の形態にかかるパケット転送装置の動作について説明する。
以下では、図１に示したように、通信装置Ａ０１と通信装置Ｂ０２間に本実施の形態にかかるパケット転送装置０３が設置されており、図４で示したように、通信装置Ｂから通信装置Ａへデータ送信する場合を例として説明する。
なお、本実施の形態は、通信装置Ａと通信装置Ｂとの通信を考えた場合、通信装置Ａから通信装置Ｂ方向へのデータ送信と、通信装置Ｂから通信装置Ａ方向へのデータ送信と、通信装置Ｂと通信装置Ａ方向間の双方向データ送信とのいずれについても適用可能である。
【００６９】
まず、ＴＣＰコネクション確立手順におけるコネクション確立処理（図４：Ｐ０３）について説明する。、
パケット転送装置０３では、入力端子２０１へパケットが入力されると、まずパケット分類部２０３でパケットのヘッダ情報の解析を行う。パケット分類部２０３は、ヘッダ解析の結果、ＴＣＰコネクションの確立手順中の、通信装置Ｂから通信装置ＡへのＴＣＰヘッダ部分にＳＹＮフラグがたっているコネクション確立パケットを受信したことがわかると、送信元と宛先のアドレス・ポート番号の組と転送データ量を０とした情報をもつ新規コネクション情報をコネクション情報記憶部２０２に登録し、キューマネージャ２０４に、新しいキューの生成要求と共にパケットを送る。
【００７０】
図１０に、コネクション情報記憶部２０２が記憶するコネクション毎の情報の一例を示す。ただし、ここでは、スケジューラにおいて転送データ量を基準とした並べ替えを行うため、コネクション毎にその情報を保持しているが、他に転送レートの時間変動量や、コネクション確立からの経過時間などでも構わない。
キューマネージャ２０４は、パケット分類部２０３からキュー生成要求と共にパケットを受け取ると、新しいキューを生成しキューに格納し、該キューを転送データ量が１００ｋバイト未満である優先グループ２０５に組み込む。次に、コネクション情報記憶部２０２の保持する該コネクション情報に、キュー識別子と、キューは優先グループに属しているという情報とを追加する。
【００７１】
次に、ＴＣＰデータ送受信フェーズにおけるデータ送受信処理（図４：Ｐ０６）について説明する。
パケット転送装置０３では、入力端子２０１へパケットが入力されると、まずパケット分類部２０３でパケットのヘッダ情報の解析を行う。パケット分類部２０３は、ヘッダ解析の結果、データパケットを受信したことがわかると、送信元と宛先のアドレス・ポート番号の組をキーとしてコネクション情報記憶部２０２に問合せ、格納すべきキューの識別子を得る。その後、キュー識別子とパケットをキューマネージャ２０４に送る。
キューマネージャ２０４は、パケット分類部２０３からキュー識別子と共にパケットを受け取ると、キュー識別子に従い該当するキューにパケットを格納する。
【００７２】
次に、ＴＣＰコネクション開放フェーズにおけるコネクション開放処理（図４：Ｐ０８）について説明する。
パケット転送装置０３では、入力端子２０１へパケットが入力されると、まずパケット分類部２０３でパケットのヘッダ情報の解析を行う。パケット分類部２０３は、ヘッダ解析の結果、ＴＣＰコネクションの開放手順中の、通信装置Ｂから通信装置ＡへのＴＣＰヘッダ部分にＦＩＮフラグがたっているコネクション開放パケットを受信したことがわかると、送信元と宛先のアドレス・ポート番号の組をキーとしてコネクション情報記憶部２０２に、格納すべきキューの識別子を得る。
【００７３】
また、これと同時に、コネクション情報記憶部２０２に該当する登録情報を消去するよう要求する。コネクション情報記憶部２０２は、一定時間後外コネクション情報を消去する。その後、キューマネージャ２０４に、キュー識別子と、キュー削除要求と共にパケットを送る。
キューマネージャ２０４は、パケット分類部２０３からキュー識別子とキュー削除要求と共にパケットを受け取ると、キュー識別子に従い該当するキューにパケットを格納する。キューマネージャ２０４は、キューからパケットが送信された一定時間後キューを削除する。
【００７４】
ヘッダ解析の結果、トランスポート層プロトコルとしてＵＤＰなどＴＣＰ以外のプロトコルを使用するパケットを受信したことがわかった場合には、あらかじめ設けてあるデフォルトキュー２１６に格納し、ＴＣＰコネクションとは別に帯域を確保しこのキューを処理する。
コネクション情報記憶部２０２は、ＴＣＰコネクションが異常終了した時のために、それぞれのコネクションについてタイマを保持し、一定時間中にパケットが入力されなければコネクション情報を削除する。
【００７５】
また、キューマネージャ２０４は、パケットが到着する際、適当にパケットを廃棄してもよい。例えば、コネクション情報記憶部２０２から得たコネクションの情報を参考に、転送データ量が多いほどパケット廃棄確率を高くしておくなどである。他に、データ流量の変化が負や正で小さいものほどパケット廃棄確率を高くする、コネクション確立後の経過時間が長いほどパケット廃棄確立を高くする、メモリが足りなくなった場合に入力パケットを無条件に廃棄する、ＲＥＤ、など任意のアルゴリズムで行って構わない。
以上のような処理を経て、入力パケットはコネクション毎のキュー２０７〜２１０のいずれかに追加される。
【００７６】
スケジューラ２１１は、コネクション情報記憶部２０２から得たコネクションの情報を参考に、キュー２０７〜２１０のいずれかのキューを選択し、そのキューのパケットを出力端子２１５を通して通信装置Ａに向けてネットワークに出力する。
そして、スケジューラ２１１は、出力端子２１５がパケットを送信し終えると次の送信パケットを選択し送信する、という処理をキュー集合中のキュー全てが空とならない限り続ける。
【００７７】
次に、図１１を参照して、スケジューラ２１１のパケット転送制御処理（キュー選択処理）について説明する。図６は、スケジューラでのパケット転送制御処理を示すフローチャートであり、特に選択条件としてコネクション確立後の転送データ量を用いた場合を示している。
デフォルトキューとコネクション毎のキュー群は、それぞれに割り当てられたタイミングに処理することとする。
スケジューラ２１１では、出力端子２１５でパケット転送が終了し次に転送すべきパケットを選択する時、デフォルトキューを処理するタイミングであるか判断する（ステップＥ０１）。
【００７８】
ここで、デフォルトキューを処理するタイミングである場合（ステップＥ０１：ＹＥＳ）、次にデフォルトキューが空であるかどうかチェックする（ステップＥ１１）。
もし空であれば（ステップＥ１１：ＹＥＳ）、すぐにステップＥ０１に戻る。空でなければ（ステップＥ１１：ＮＯ）、デフォルトキューの先頭パケットを送信し（ステップＥ１２）、再びステップＥ０１に戻る。
【００７９】
一方、デフォルトキューを処理するタイミングでない場合（ステップＥ０１：ＮＯ）、まず第２スケジューラ２１４は、優先グループ２０５に空でないキューが存在するかどうかをチェックする。もしあれば、優先グループ２０５を選択し、無ければ非優先グループ２０６を選択する（ステップＥ０２）。ただし、ここでは優先グループに空でないキューがある場合は必ず優先グループのキューを処理する、としているが、任意のアルゴリズムで優先グループ２０５と非優先グループ２０６の選択を行って構わない。
【００８０】
このとき、第２スケジューラ２１４が非優先グループ２０６を選択した場合（ステップＥ０２：ＮＯ）、第１スケジューラ２１３は、非優先グループ２０６内のキューを、宛先の通信装置までの無線リンクの伝搬状態の良い順に並べ替えを行う（ステップＥ０８）。ここでは並べ替えのための、無線リンクの伝搬状態の良さを示す指標としてＣ／Ｉ比（Carrier to Interference Ratio）を例として用いている。ただし、ここでの並べ替えに用いるアルゴリズムは任意のもので構わない。
並べ替えの後、最もＣ／Ｉ比の高いキューの先頭のパケットを送信する（ステップＥ０９）。
【００８１】
一方、第２スケジューラ２１４が優先グループを選択した場合（ステップＥ０２：ＹＥＳ）、第１スケジューラ２１２は、優先グループ２０５のキューの中から、そのコネクション確立後の転送データ量が最も少ないキューの先頭パケットを送信する（ステップＥ０３）。
次に、送信したキューの転送データ量が、優先グループ、非優先グループの閾値である１００ｋバイトを超えたかどうかチェックする（ステップＥ０４）。ただし、この閾値は任意で構わない。
【００８２】
ここで、１００ｋバイトを超えていない場合には（ステップＥ０４：ＮＯ）、コネクション情報記憶部２０２に転送データ量の更新を行う（ステップＥ０５）。
また、１００ｋバイトを超えた場合には（ステップＥ０４：ＹＥＳ）、キューを非優先グループ２０６に移動し（ステップＥ０６）、コネクション情報記憶部２０２に転送データ量の更新に加えて、キューグループ情報を非優先グループに変更する（ステップＥ０７）。
【００８３】
このようにしてパケットの送信まで完了した後、キュー２０７〜２１０の全てのキューが空であるかどうかチェックする（ステップＥ１０）。全てのキューが空でなければ（ステップＥ０５：ＮＯ）、再びステップＥ０１の処理に戻る。全てのキューが空であれば（ステップＥ０５：ＹＥＳ）、一連のパケット転送制御処理を終了する。
【００８４】
以上では、スケジューラ２０９での優先転送制御において、選択条件としてコネクション確立後の転送データ量を用いた場合について説明したが、他の選択条件として、コネクション確立からの経過時間を用いてもよい。
図１２は、スケジューラでのパケット転送制御処理を示すフローチャートであり、特に選択条件としてコネクション確立からの経過時間を用いた場合を示している。
この場合コネクション情報記憶部２０２は、コネクション毎にコネクション確立からの経過時間を記憶している必要がある。
【００８５】
デフォルトキューとコネクション毎のキュー群は、それぞれに割り当てられたタイミングに処理することとする。
スケジューラ２１１は、出力端子２１５でパケット転送が終了し次に転送すべきパケットを選択する時、デフォルトキューを処理するタイミングであるか判断する（ステップＦ０１）。
【００８６】
ここで、デフォルトキューを処理するタイミングである場合（ステップＦ０１：ＹＥＳ）、次にデフォルトキューが空であるかどうかチェックする（ステップＦ１１）。
もし空であれば（ステップＦ１１：ＹＥＳ）、すぐにステップＦ０１に戻る。空でなければ（ステップＦ１１：ＮＯ）、デフォルトキューの先頭パケットを送信し（ステップＦ１２）、再びステップＦ０１に戻る。
【００８７】
一方、デフォルトキューを処理するタイミングでない場合は（ステップＦ０１：ＮＯ）、まず第２スケジューラ２１４は、優先グループ２０５に空でないキューが存在するかどうかをチェックする。もしあれば、優先グループ２０５を選択し、無ければ非優先グループ２０６を選択する（ステップＦ０２）。ただし、ここでは優先グループに空でないキューがある場合は必ず優先グループのキューを処理する、としているが、任意のアルゴリズムで優先グループ２０５と非優先グループ２０６の選択を行って構わない。
【００８８】
このとき、第２スケジューラ２１４が非優先グループ２０６を選択した場合（ステップＦ０２：ＮＯ）、第１スケジューラ２１３が、非優先グループ２０６内のキューを、宛先の通信装置までの無線リンク固有の伝搬状態の良い順に並べ替えを行う（ステップＦ０８）。ここでは並べ替えのための、無線リンクの状態の良さを示す指標としてＣ／Ｉ比を例として用いている。ただし、ここでの並べ替えに用いるアルゴリズムは任意のもので構わない。
並べ替えの後、最もＣ／Ｉ比の高いキューの先頭のパケットを送信する（ステップＦ０９）。
【００８９】
一方、第２スケジューラ２１４が優先グループを選択した場合（ステップＦ０２：ＹＥＳ）、第１スケジューラ２１２は優先グループ２０５のキューの中から、コネクション確立からの経過時間が最も短いキューの先頭パケットを送信する（ステップＦ０３）。
次に、送信したキューのコネクション確立からの経過時間が、優先グループ、非優先グループの閾値である１０ｓを超えたかどうかチェックする（ステップＦ０４）。ただし、この閾値は任意で構わない。
【００９０】
ここで、コネクション確立からの経過時間が１０ｓより短い場合には（ステップＦ０４：ＮＯ）、コネクション情報記憶部２０２にコネクション確立からの経過時間の更新を行う（ステップＦ０５）。１０ｓより長い場合には、キューを非優先グループ２０６に移動し（ステップＦ０６）、コネクション情報記憶部２０２にコネクション確立からの経過時間の更新に加えて、キューグループ情報を非優先グループに変更する（ステップＦ０７）。
【００９１】
このようにしてパケットの送信まで完了した後、キュー２０７〜２１０の全てのキューが空であるかどうかチェックする（ステップＦ１０）。全てのキューが空でなければ（ステップＦ０５：ＮＯ）、再びステップＦ０１の処理に戻る。全てのキューが空であれば（ステップＦ０５：ＹＥＳ）、一連のパケット転送制御処理を終了する。
【００９２】
また、スケジューラ２０９での優先転送制御において、選択条件として転送レートの時間変化量を用いてもよい。
図１３は、スケジューラでのパケット転送制御処理を示すフローチャートであり、特に選択条件として転送レートの時間変化量を用いた場合を示している。
この場合コネクション情報記憶部２０２は、コネクション毎に転送レートの時間変化量を記憶している必要がある。
【００９３】
デフォルトキューとコネクション毎のキュー群は、それぞれに割り当てられたタイミングに処理することとする。
スケジューラ２１１では、出力端子２１５でパケット転送が終了し次に転送すべきパケットを選択する時、デフォルトキューを処理するタイミングであるか判断する（ステップＧ０１）。
ここで、デフォルトキューを処理するタイミングである場合（ステップＧ０１：ＹＥＳ）、次にデフォルトキューが空であるかどうかチェックする（ステップＧ１１）。
もし空であれば（ステップＧ０６：ＹＥＳ）、すぐにステップＧ０１に戻る。空でなければ（ステップＧ０６：ＮＯ）、デフォルトキューの先頭パケットを送信し（ステップＧ１２）、再びステップＧ０１に戻る。
【００９４】
一方、デフォルトキューを処理するタイミングでない場合（ステップＧ０１：ＮＯ）、まず第２スケジューラ２１４は、優先グループ２０５に空でないキューが存在するかどうかをチェックする。もしあれば、優先グループ２０５を選択し、無ければ非優先グループ２０６を選択する（ステップＧ０２）。ただし、ここでは優先グループに空でないキューがある場合は必ず優先グループのキューを処理する、としているが、任意のアルゴリズムで優先グループ２０５と非優先グループ２０６の選択を行って構わない。
【００９５】
このとき、第２スケジューラ２１４が非優先グループ２０６を選択した場合は（ステップＧ０２：ＮＯ）、第１スケジューラ２１３が、非優先グループ２０６内のキューを、宛先の通信装置までの無線リンク固有の伝搬状態の良い順に並べ替えを行う（ステップＧ０８）。ここでは並べ替えのための、無線リンクの状態の良さを示す指標としてＣ／Ｉ比を例として用いている。ただし、ここでの並べ替えに用いるアルゴリズムは任意のもので構わない。
並べ替えの後、最もＣ／Ｉ比の高いキューの先頭のパケットを送信する（ステップＧ０９）。
【００９６】
一方、第２スケジューラ２１４が優先グループを選択した場合（ステップＧ０２：ＹＥＳ）、第１スケジューラ２１２は、優先グループ２０５のキューの中から、転送レートの時間変化量が正で最も大きいキューの先頭パケットを送信する（ステップＧ０３）。
次に、送信したキューの転送レートの時間変化量が、優先グループ、非優先グループの閾値である２０ｋｂｐｓ／ｓを超えたかどうかチェックする（ステップＧ０４）。ただし、この閾値は任意で構わない。
【００９７】
ここで、２０ｋｂｐｓ／ｓより大きい場合には、コネクション情報記憶部２０２に転送レートの時間変化量の更新を行う（ステップＧ０５）。２０ｋｂｐｓ／ｓより小さい場合には、キューを非優先グループ２０６に移動し（ステップＧ０６）、コネクション情報記憶部２０２に転送レートの時間変化量の更新に加えて、キューグループ情報を非優先グループに変更する（ステップＧ０７）。
【００９８】
このようにしてパケットの送信まで完了した後、キュー２０７〜２１０の全てのキューが空であるかどうかチェックする（ステップＧ１０）。全てのキューが空でなければ（ステップＧ０５：ＮＯ）、再びステップＧ０１の処理に戻る。全てのキューが空であれば（ステップＧ０５：ＹＥＳ）、一連のパケット転送制御処理を終了する。
【００９９】
このように、本実施の形態は、スケジューラ２１１で、各コネクションをそのコネクションの確立後に転送した受信パケットのデータ量に基づき複数のグループに分類し、次に受信パケットを転送するコネクションを選択する際、各グループのうち、データ量が少ないグループに属するコネクションを優先して選択するようにしたものである。また、コネクションの確立後からの経過時間や、コネクションの転送レートの時間変化に基づき複数のグループに分類し、そのグループ単位でコネクションを優先して選択するようにしたものである。
【０１００】
したがって、第１の実施の形態と同様の作用効果が得られるとともに、コネクション選択の際、特定のコネクションへ偏ることなく、グループという幅を持ってさらに公平にコネクションを選択できる。
また、第１の実施の形態と同様に、コネクション毎にキューを持たず、スケジューラ２１１において優先制御を行わない場合でも、キューマネージャ２０４により、非優先グループに属するコネクションかでパケット廃棄率を高くすることで同様の作用効果が得られる。
【０１０１】
【発明の効果】
以上説明したように、本発明は、パケット分類部で、送信端末から受信した受信パケットのヘッダに含まれる１つ以上のフィールドから、送信端末と受信端末との間でデータの転送に使用されるコネクションを識別し、その確立および解放を検出し、パケット分類部で識別された各コネクションについて、そのコネクションの確立後に転送した受信パケットのデータ量が少ない順にコネクションをソートし、データ量が最も少ないコネクションから順番に受信パケットを転送するようにしたものである。あるいは、コネクションの確立後からの経過時間が短い順にコネクションをソートし、経過時間が最も短いコネクションから順番に受信パケットを転送し、あるいはコネクションの転送レートの時間変化が正でかつその時間変化が大きい順にコネクションをソートし、時間変化が最も大きいコネクションから順番に受信パケットを転送するようにしたものである。
【０１０２】
したがって、一般的なＴＣＰでは、コネクション確立直後は低い送信レートから始めて指数関数的に増加させるスロースタート動作や、コネクション確立後しばらく経過してから送信レートを線形的に増加させる輻輳回避動作に起因して、データサイズの小さいコネクションでは、上記スロースタート動作の間にコネクションが終了してスループットが小さくなる傾向があったが、本発明によれば、各コネクションで転送するデータ量に束縛されることなく、転送するデータサイズの異なるＴＣＰコネクション間の公平性を向上させることができる。
【図面の簡単な説明】
【図１】  本発明の一実施の形態にかかるパケット転送装置の適用例である。
【図２】  本発明の第１の実施の形態にかかるパケット転送装置の構成を示すブロック図である。
【図３】  コンピュータからなるパケット転送装置の構成例である。
【図４】  ＴＣＰコネクションでのパケット転送手順を示すシーケンス図である。
【図５】  コネクション情報記憶部で記憶するコネクション毎の情報例である。
【図６】  本発明の第１の実施の形態にかかるパケット転送制御処理を示すフローチャートである。
【図７】  本発明の第１の実施の形態にかかる他のパケット転送制御処理を示すフローチャートである。
【図８】  本発明の第１の実施の形態にかかるスケジューラでの他のパケット転送制御処理を示すフローチャートである。
【図９】  本発明の第２の実施の形態にかかるパケット転送装置の構成を示すブロック図である。
【図１０】  コネクション情報記憶部で記憶するコネクション毎の情報例である。
【図１１】  本発明の第２の実施の形態にかかるパケット転送制御処理を示すフローチャートである。
【図１２】  本発明の第２の実施の形態にかかる他のパケット転送制御処理を示すフローチャートである。
【図１３】  本発明の第２の実施の形態にかかる他のパケット転送制御処理を示すフローチャートである。
【図１４】  従来のパケット転送装置の構成を示すブロック図である。
【図１５】  従来のパケット転送制御処理を示すフローチャートである。
【符号の説明】
０１，０７…通信装置、０２…無線リンク、０３…パケット転送装置、０４，０６…有線リンク、０５…パケットネットワーク、１１…下りリンク、１２…上りリンク、３１…入出力Ｉ／Ｆ部、３２…演算処理部、３３…記憶部、３４…キューバッファ、３５…バス、１０１…入力端子、１０２…コネクション情報記憶部、１０３…パケット分類部、１０４…キューマネージャ、１０５…キュー集合、１０６〜１０８…キュー、１０９…スケジューラ、１１０…出力端子、１１１…デフォルトキュー、２０１…入力端子、２０２…コネクション情報記憶部、２０３…パケット分類部、２０４…キューマネージャ、２０５…優先グループ、２０６…非優先グループ、２０７〜２１０…キュー、２１１…スケジューラ、２１２，２１３…第１スケジューラ、２１４…第２スケジューラ、２１５…出力端子、２１６…デフォルトキュー。
【図１】
0003726741.tif 000002
【図２】
0003726741.tif 000003
【図３】
0003726741.tif 000004
【図４】
0003726741.tif 000005
【図５】
0003726741.tif 000006
【図６】
0003726741.tif 000007
【図７】
0003726741.tif 000008
【図８】
0003726741.tif 000009
【図９】
0003726741.tif 000010
【図１０】
0003726741.tif 000011
【図１１】
0003726741.tif 000012
【図１２】
0003726741.tif 000013
【図１３】
0003726741.tif 000014
【図１４】
0003726741.tif 000015
【図１５】
0003726741.tif 000016