(57)【要約】      （修正有）【課題】巨大フローの通信品質を損なうことなく、かつ、小さいサイズのフローのレスポンス時間を向上させて、与えられた帯域を有効利用する。【解決手段】通信網の入口にある境界ノードは、各フローに対して許可レートを与え、許可レートを超えて転送されているパケットにタギングをする。各フローの許可レートは、通信開始時には初期レートに設定し、その後、フローの持続時間やパケット転送量に応じて減少させ、内部ノードは、網が輻輳した場合にはタギングされたパケットを優先的に廃棄することにより、長時間に渡って高レートで転送している巨大フローを制御する。このとき、管理サーバにより、網で測定収集されたトラヒック情報を用いて、初期レートを動的に変更する。【選択図】図４
2010193334.tif 000002
【特許請求の範囲】
【請求項１】
通信網の入口にある境界ノードにおいてユーザフロー毎にトラヒックを監視し、該監視の結果に応じてパケットヘッダにタギングをし、通信網の内部に位置する各内部ノードは、タギングの有無とそのときの輻輳状況に応じてパケットの選択廃棄・優先制御を実施して、各フローのパケット転送レートを制御することでフロー制御を行う方法において、
上記境界ノードは、各フローに対して許可レートを与え、該許可レートを超えて転送されているパケットにタギングをし、各フローの許可レートをフローの持続時間およびパケット転送量に応じて減少させ、
上記内部ノードは、網が輻輳した場合にはタギングされたパケットを優先的に廃棄すると共に、通信網でのトラヒック情報を測定して、接続された管理サーバに送信し、
該管理サーバは、上記内部ノードからトラヒック情報を収集し、収集したトラヒック情報を用いて、上記境界ノードが通信開始時に用いる許可レートの初期値を動的に変更する
ことを特徴とするフロー制御方法。
【請求項２】
請求項１に記載のフロー制御方法において、
上記初期レートをＡＲ０とし、フローｉの許可レートＡＲ＿ｉをＡＲ＿ｉ←ＡＲ０＿ｉに設定し、
上記境界ノードは、フローからのパケット転送量がＮ［ｂｙｔｅ］を越えるたびに、予め定められた係数α（０＜α＜１）を用いてフローｉの許可レートＡＲ＿ｉを、ＡＲ＿ｉ←ｍａｘ｛α１×ＡＲ＿ｉ，α２×ＡＲ０｝により減少させ、
フローｉからのパケットが到着したときにそのときの許可レートＡＲ＿ｉを超えて転送されていると判定すると該パケットをタギングし、
上記内部ノードは、リンクへの出力待ちバッファにおいてバッファ内キュー長Ｑを監視し、タギングされたパケットが到着すると、確率ｆ（Ｑ）（０＜＝ｆ（Ｑ）＜＝１）で該パケットを廃棄すると共に、
自身の内部ノードｉに接続されるリンクｊのｋ番目の測定区間におけるリンク使用率ｒｈｏ＿ｋ（Ｉ，ｊ）を一定周期毎に測定し、
かつ、リンクｊへのｋ番目の測定周期において、リンクｊへ到着するタギングされたパケット（タグ付パケット）の到着レートｔ＿ｋ（Ｉ，ｊ）［ｂｐｓ］を測定し、
自身の内部ノードｉに接続するリンクｊのリンク容量Ｃ（Ｉ，ｊ）を用いて、タグ付割合ｒ＿ｋ（Ｉ，ｊ）を、ｒ＿ｋ（Ｉ，ｊ）＝ｔ＿ｋ（Ｉ，ｊ）／Ｃ（Ｉ，ｊ）により計算し、
該タグ付割合ｒ＿ｋ（Ｉ，ｊ）の計算結果と上記リンク使用率ｒｈｏ＿ｋ（Ｉ，ｊ）の測定結果を上記管理サーバへ送信し、
上記管理サーバは、各入り側−出側エッジノードペアｍを流れるフローに対する、次のｋ＋１番目の周期に用いる初期レートＡＲ０＿ｋ＋１（ｍ）を、下記の第１の手順で更新する
ことを特徴とするフロー制御方法。
第１の手順
エッジノードペアｍの経路上に存在するリンクの集合Ｓ＿ｋ（ｍ）を用いて、ｊ＿ｋ（ｍ）＝ａｒｇｍａｘｊ∈Ｓ＿ｋ（ｍ）ｒｈｏ＿ｋ（Ｉ，ｊ）により、当該リンクの集合Ｓ＿ｋ（ｍ）に属するリンクのうち、最もリンク使用率の高いリンクｊ＿ｋ（ｍ）を求め、
求めたリンクｊ＿ｋ（ｍ）と、リンク使用率に対する閾値ｒｈｏ＿ｔｈ、および、タグ付割合に対する閾値ｒ＿ｔｈ１，ｒ＿ｔｈ２（ｒ＿ｔｈ１＜ｒ＿ｔｈ２）と、予め定められたパラメータβ，γ（０＜β＜１，γ＞１）、ならびに目標タグ付割合ｒ＊（０＜ｒ＊＜１）を用いて、
ｒｈｏ＿ｋ（Ｉ，ｊ＿ｋ（ｍ））＞ｒｈｏ＿ｔｈで、かつ、ｒ＿ｋ（Ｉ，ｊ＿ｋ（ｍ））＜ｒ＿ｔｈ１であれば、ＡＲ０＿ｋ＋１（ｍ）＝ＡＲ０＿ｋ（ｍ）×ｍｉｎ｛β，（１−ｒ＊）／（１−ｒ＿ｋ（Ｉ，ｊ＿ｋ（ｍ）））｝により、ＡＲ０＿ｋ＋１（ｍ）を更新し、
ｒｈｏ＿ｋ（Ｉ，ｊ＿ｋ（ｍ））＞ｒｈｏ＿ｔｈで、かつ、ｒ＿ｋ（Ｉ，ｊ＿ｋ（ｍ））＞ｒ＿ｔｈ２であれば、ＡＲ０＿ｋ＋１（ｍ）＝ＡＲ０＿ｋ（ｍ）×ｍｉｎ｛γ，（１−ｒ＊）／（１−ｒ＿ｋ（Ｉ，ｊ＿ｋ（ｍ）））により、ＡＲ０＿ｋ＋１（ｍ）を更新する。
【請求項３】
請求項１に記載のフロー制御方法において、
上記初期レートをＡＲ０とし、フローｉの許可レートＡＲ＿ｉをＡＲ＿ｉ←ＡＲ０＿ｉに設定し、
上記境界ノードは、フローからのパケット転送量がＮ［ｂｙｔｅ］を越えるたびに、予め定められた係数α（０＜α＜１）を用いてフローｉの許可レートＡＲ＿ｉを、ＡＲ＿ｉ←ｍａｘ｛α１×ＡＲ＿ｉ，α２×ＡＲ０｝により減少させ、
フローｉからのパケットが到着したときにそのときの許可レートＡＲ＿ｉを超えて転送されていると判定すると該パケットをタギングし、
上記内部ノードは、リンクへの出力待ちバッファにおいてバッファ内キュー長Ｑを監視し、タギングされたパケットが到着すると、確率ｆ（Ｑ）（０＜＝ｆ（Ｑ）＜＝１）で該パケットを廃棄すると共に、
自身の内部ノードｉに接続されるリンクｊのｋ番目の測定区間におけるリンク使用率ｒｈｏ＿ｋ（Ｉ，ｊ）を一定周期毎に測定し、
かつ、リンクｊへのｋ番目の測定周期において、リンクｊへ到着するタギングされたパケット（タグ付パケット）の到着レートｔ＿ｋ（Ｉ，ｊ）［ｂｐｓ］を測定し、
自身の内部ノードｉに接続するリンクｊのリンク容量Ｃ（Ｉ，ｊ）を用いて、タグ付割合ｒ＿ｋ（Ｉ，ｊ）を、ｒ＿ｋ（Ｉ，ｊ）＝ｔ＿ｋ（Ｉ，ｊ）／Ｃ（Ｉ，ｊ）により計算し、
該タグ付割合ｒ＿ｋ（Ｉ，ｊ）の計算結果と上記リンク使用率ｒｈｏ＿ｋ（Ｉ，ｊ）の測定結果を上記管理サーバへ送信し、
上記管理サーバは、各入り側−出側エッジノードペアｍを流れるフローに対する、次のｋ＋１番目の周期に用いる初期レートＡＲ０＿ｋ＋１（ｍ）を、下記の第２の手順で更新する
ことを特徴とするフロー制御方法。
第２の手順
エッジノードペアｍの経路上に存在するリンクの集合Ｓ＿ｋ（ｍ）を用いて、ｊ＿ｋ（ｍ）＝ａｒｇｍａｘｊ∈Ｓ＿ｋ（ｍ）ｒｈｏ＿ｋ（Ｉ，ｊ）により、当該リンクの集合Ｓ＿ｋ（ｍ）に属するリンクのうち、最もリンク使用率の高いリンクｊ＿ｋ（ｍ）を求め、
求めたリンクｊ＿ｋ（ｍ）と、リンク使用率に対する閾値ｒｈｏ＿ｔｈ、および、タグ付割合に対する閾値ｒ＿ｔｈ１，ｒ＿ｔｈ２（ｒ＿ｔｈ１＜ｒ＿ｔｈ２）と、予め定められたパラメータβ，γ（０＜β＜１，γ＞１）、ならびに目標タグ付割合ｒ＊（０＜ｒ＊＜１）を用いて、
ｒｈｏ＿ｋ（Ｉ，ｊ＿ｋ（ｍ））＞ｒｈｏ＿ｔｈで、かつ、ｒ＿ｋ（Ｉ，ｊ＿ｋ（ｍ））＜ｒ＿ｔｈ１であれば、ＡＲ０＿ｋ＋１（ｍ）＝ＡＲ０＿ｋ（ｍ）×ｍｉｎ｛β，ｒ＿ｋ（Ｉ，ｊ＿ｋ（ｍ）／ｒ＊））｝により、ＡＲ０＿ｋ＋１（ｍ）を更新し、
ｒｈｏ＿ｋ（Ｉ，ｊ＿ｋ（ｍ））＞ｒｈｏ＿ｔｈで、かつ、ｒ＿ｋ（Ｉ，ｊ＿ｋ（ｍ））＞ｒ＿ｔｈ２であれば、ＡＲ０＿ｋ＋１（ｍ）＝ＡＲ０＿ｋ（ｍ）×ｍｉｎ｛γ，ｒ＿ｋ（Ｉ，ｊ＿ｋ（ｍ））／ｒ＊｝により、ＡＲ０＿ｋ＋１（ｍ）を更新する。
【請求項４】
通信網の入口にある境界ノードにおいてユーザフロー毎にトラヒックを監視し、該監視の結果に応じてパケットヘッダにタギングをし、通信網の内部に位置する各内部ノードは、タギングの有無とそのときの輻輳状況に応じてパケットの選択廃棄・優先制御を実施して、各フローのパケット転送レートを制御することでフロー制御を行う方法において、
上記境界ノードは、各フローに対して許可レートを与え、該許可レートを超えて転送されているパケットにタギングをし、各フローの許可レートをフローの持続時間およびパケット転送量に応じて減少させると共に、
通信開始時に用いる許可レートの初期値を、下記の第３の手順で動的に変更する
ことを特徴とするフロー制御方法。
第３の手順
各入り側−出側エッジノードペアｍを通過する各フローの発生時刻、終了時刻、およびその間に転送されたバイト数を測定し、
各フローのスループットを「転送バイト数／（終了時刻−発生時刻）」により算出し、
ｋ番目の測定周期内に終了したフロー全てに対してフロースループットを求めて、平均値Ｔ＿ｋ（ｍ）を算出し、
ｋ−１番目の周期に用いる初期レートＡＲ０＿（ｋ−１）（ｍ）が現在の初期レートＡＲ０＿ｋ（ｍ）より小さい状態で（ＡＲ０＿（ｋ−１）（ｍ）＜ＡＲ０＿ｋ（ｍ））、
かつ、
ｋ−１番目の測定周期内の平均値Ｔ＿（ｋ−１）（ｍ）が上記ｋ番目の測定周期内の平均値Ｔ＿ｋ（ｍ）より大きければ（Ｔ＿（ｋ−１）（ｍ）＞Ｔ＿ｋ（ｍ））、次のｋ＋１番目の初期レートＡＲ０＿（ｋ＋１）（ｍ）を上記現在の初期レートＡＲ０＿ｋ（ｍ）よりも大きくし、
ｋ−１番目の周期に用いる初期レートＡＲ０＿（ｋ−１）（ｍ）が現在の初期レートＡＲ０＿ｋ（ｍ）より小さい状態で（ＡＲ０＿（ｋ−１）（ｍ）＜ＡＲ０＿ｋ（ｍ））、
かつ、
ｋ−１番目の測定周期内の平均値Ｔ＿（ｋ−１）（ｍ）が上記ｋ番目の測定周期内の平均値Ｔ＿ｋ（ｍ）より小さければ（Ｔ＿（ｋ−１）（ｍ）＜Ｔ＿ｋ（ｍ））、次のｋ＋１番目の初期レートＡＲ０＿（ｋ＋１）（ｍ）を上記現在の初期レートＡＲ０＿ｋ（ｍ）よりも小さくし、
上記次のｋ＋１番目の初期レートＡＲ０＿（ｋ＋１）（ｍ）を調整する
ことを特徴とするフロー制御方法。
【請求項５】
通信網の入口にある境界ノードにおいてユーザフロー毎にトラヒックを監視し、該監視の結果に応じてパケットヘッダにタギングをし、通信網の内部に位置する各内部ノードは、タギングの有無とそのときの輻輳状況に応じてパケットの選択廃棄・優先制御を実施して、各フローのパケット転送レートを制御することでフロー制御を行う方法において、
上記境界ノードは、各フローに対して許可レートを与え、該許可レートを超えて転送されているパケットにタギングをし、各フローの許可レートをフローの持続時間およびパケット転送量に応じて減少させると共に、
通信開始時に用いる許可レートの初期値を、下記の第４の手順で動的に変更する
ことを特徴とするフロー制御方法。（以上、請求項４と同じ）
第４の手順
（１）各入り側−出側エッジノードペアｍを通過する各フローの発生時刻、終了時刻、およびその間に転送されたバイト数を測定し、
（２）各フローのスループットを「スループット＝転送バイト数／（終了時刻−発生時刻）」により算出し、
（３）ｋ番目の測定周期内に測定したフローｘ全てに対してフロースループットＴ＿ｋ（ｍ，ｘ）、およびフローサイズＳＩＺＥ＿ｋ（ｍ，ｘ）を求め、
（４）予め定められたパケット転送量Ｎ毎にｘ番目のフローのフローサイズＳＩＺＥ＿ｋ（ｍ，ｘ）を上記Ｎで割って商Ｑｕｏ＿ｋ（ｍ，ｘ）と余りＲｅ＿ｋ（ｍ，ｘ）を求め、
（５）予め定められた許可レートの初期値ＡＲ０’を用いた、Ｌ番目のＮ［ｂｙｔｅ］においてタグ付きで転送されたバイト数の算出（「ｍａｘ｛Ｔ＿ｋ（ｍ，ｘ）−ｍａｘ｛α１×ＡＲ０’Ｌ−１，α２×ＡＲ０’｝，０｝×Ｎ」）を、Ｌ＝Ｑｕｏ＿ｋ（ｍ，ｘ）となるまで繰り返し（α１，２：予め定められた係数、０＜α１＜１，０＜α２＜１）、
（６）その後、Ｒｅ＿ｋ（ｍ，ｘ）［ｂｙｔｅ］についてタグ付きで転送されたバイト数を、「ｍａｘ｛Ｔ＿ｋ（ｍ，ｘ）−ｍａｘ｛α１×ＡＲ０’Ｌ，α２×ＡＲ０’｝，０｝×Ｒｅ＿ｋ（ｍ，ｘ）」により算出し、
（７）上記（５）と（６）でのタグ付きで転送されたバイト数の算出を、全フローに対して実行して、タグ付きで転送されたバイト数として計算された値の総和Ｓｕｍ＿ｔａｇ＿ｋ（ｍ）を算出し、
（８）算出した総和Ｓｕｍ＿ｔａｇ＿ｋ（ｍ）を測定周期で割ることで、エッジノードペアｍにおける仮想タグ付きレートＶ＿ｋ（ｍ，ＡＲ０’）を算出し、
（９）上記（１）〜（８）での処理を全てのエッジノードペアについて実行して、内部ノードＩに接続されるリンクｊを通過するエッジノードペアｍの仮想レートＶ＿ｋ（ｍ）の和を求め、求めた和を、内部ノードＩのリンクｊでの仮想レートＶ＿ｋ（ｊ，ＡＲ０’）として算出し、
（１０）一定周期毎に測定する内部ノードＩに接続されるリンクＪのｋ番目の測定区間におけるリンク使用率ｒｈｏ＿ｋ（Ｉ，ｊ＿ｋ（ｍ））と予め定められたリンク使用率に対する閾値ｒｈｏ＿ｔｈとを比較し、
（１１）「ｒｈｏ＿ｋ（Ｉ，ｊ＿ｋ（ｍ））＞ｒｈｏ＿ｔｈ」であれば、「Ｖ＿ｋ（ｊ，ＡＲ０’）／Ｃ（Ｉ，ｊ）」と予め定められた目標タグ付割合ｒ＊（０＜ｒ＊＜１）を比較し、
（１２）「Ｖ＿ｋ（ｊ，ＡＲ０’）／Ｃ（Ｉ，ｊ）＞（１＋ε）ｒ＊」であれば（ε：予め定められたパラメータ、０＜ε＜１）、ＡＲ０’を減少させた後、上記（４）〜（９）を繰り返し、
（１３）「Ｖ＿ｋ（ｊ，ＡＲ０’）／Ｃ（Ｉ，ｊ）＜（１−ε）ｒ＊」であれば、ＡＲ０’を増加させた後、上記（４）〜（９）を繰り返し、
（１４）上記（１２）と上記（１３）の処理を、「（１−ε）ｒ＊＜Ｖ＿ｋ（ｊ，ＡＲ０’）／Ｃ（Ｉ，ｊ）＜（１＋ε）ｒ＊」となるまで繰り返し、その結果得られたＡＲ０’の値を、次周期（ｋ＋１番目の周期）での初期レートとする。
【請求項６】
通信網の入口にある境界ノードにおいてユーザフロー毎にトラヒックを監視し、該監視の結果に応じてパケットヘッダにタギングをし、通信網の内部に位置する各内部ノードは、タギングの有無とそのときの輻輳状況に応じてパケットの選択廃棄・優先制御を実施して、各フローのパケット転送レートを制御することでフロー制御を行うシステムであって、
請求項１から請求項３のいずれかに記載のフロー制御方法における各処理を行う境界ノードと内部ノードおよび管理サーバを具備し、
該管理サーバにより、次のｋ＋１番目の周期に用いる初期レートＡＲ０＿ｋ＋１（ｍ）を更新することを特徴とするフロー制御システム。
【請求項７】
通信網の入口にある境界ノードにおいてユーザフロー毎にトラヒックを監視し、該監視の結果に応じてパケットヘッダにタギングをし、通信網の内部に位置する各内部ノードは、タギングの有無とそのときの輻輳状況に応じてパケットの選択廃棄・優先制御を実施して、各フローのパケット転送レートを制御することでフロー制御を行うシステムであって、
請求項４もしくは請求項５のいずれかに記載のフロー制御方法における処理を実行する境界ノードと内部ノードを具備し、該境界ノードにより、次のｋ＋１番目の周期に用いる初期レートＡＲ０＿ｋ＋１（ｍ）を更新することを特徴とするフロー制御システム。
【請求項８】
コンピュータに、請求項１から請求項３のいずれかに記載のフロー制御方法における境界ノードの処理と内部ノードの処理および管理サーバの処理を実行させるためのプログラム。
【請求項９】
コンピュータに、請求項４もしくは請求項５のいずれかに記載のフロー制御方法における境界ノードの処理および内部ノードの処理を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）ネットワークにおける各フローのパケット転送レートを制御する技術に係り、特に、効果的なレート制御により、巨大フローによる網の占有を効率的に防止するのに好適な技術に関するものである。
【背景技術】
【０００２】
ＩＰネットワークが広く利用されてくるに伴って、ＩＰネットワーク上での通信品質保証に対する要求が高まっている。その一方で、Ｐ２Ｐアプリケーションの出現に伴うトラヒックパターンの急激な変動に代表されるように、各フローのトラヒック特性はますます多種多様となり、それに伴い各種フローの品質要求も多様化している。
【０００３】
例えば、Ｐ２Ｐトラヒックのような長時間高レートフローを適切にコントロールして、レスポンス時間に敏感なｗｅｂのようなファイルサイズの小さいフローの品質を確保することが要求される場合が想定される。
【０００４】
その一方で、通信設備に対するコストを抑える必要がある。従って、与えられた通信帯域を有効利用して各フローの所望の通信品質を維持できるように各フローのパケット転送レートを適切に制御することが重要となっている。
【０００５】
従来のレート制御技術は、その瞬間（空間方向）の各フローのレートが公平になるように制御するものが一般的である。例えば、非特許文献１の１８９頁に記載のＷＦＱ（Ｗｅｉｇｈｔｅｄ  Ｆａｉｒ  Ｑｕｅｕｅｉｎｇ）や、非特許文献２のＣＳＦＱ（ｃｏｒｅ−ｓｔａｔｅｌｅｓｓ−ｆａｉｒ−ｑｕｅｕｅｉｎｇ）等の技術がある。
【０００６】
しかしながら、このような技術では、空間方向のみしか考慮しないため、Ｐ２Ｐトラヒックのように長時間に渡って存在するフローに常に一定の帯域を与えることになり、その結果、ｗｅｂのような小さいファイルを転送するだけのフローは、その瞬間の公平な帯域分の割当が与えられるのみであり、該フローは圧迫されてしまい、図１の左側で示すように、ｗｅｂのような短いフローの転送時間が長くなってしまう。
【０００７】
それに対して、図１の右側で示すように、時間方向も考慮に入れて各フローのレートを制御すると、Ｐ２Ｐのような長時間フローのファイル転送完了時間も劣化させずに、かつ、ｗｅｂのようなサイズの小さいフローのレスポンス時間（ファイル転送時間）も向上させることが可能となる。
【０００８】
尚、このような時間方向も考慮したレート制御技術は、例えば、非特許文献３，４，５に記載されている。しかしながら、これらの技術では、各ノードでフロー毎にキューイングし、フロー毎にパケット転送処理のスケジューリングを行うため、フロー数の多いノードではスケーラビリティに問題があった。
【０００９】
このような問題に対処するために、本発明者らは、特許文献１（特願２００４−０２２６１２号、特許第４２３８１５０号公報）において、各ノードでフロー毎に状態管理することなく、空間方向のみならず時間方向も考慮して、長時間に渡って高レートでトラヒックを送出する巨大フローを適切に制御することにより、各フローの通信品質を維持できるようなレート制御技術を考案した。
【００１０】
このレート制御技術では、フロー数に対するスケーラビリティを確保するため、ｄｉｆｆｓｅｒｖアーキテクチャ（非特許文献６参照）を利用する。ｄｉｆｆｓｅｒｖでは、通信網の入口にある境界ノードと、網の内部にある内部ノードで機能分担を行う。
【００１１】
そして、多重フロー数の少ない境界ノードでは、ユーザフロー毎にトラヒックを監視し、その監視結果に応じてパケットヘッダにタギングをし、多重フロー数の多い内部ノードは、フロー毎に状態管理せずにタギングの有無のみをチェックし、そのときの輻輳状況に応じてパケットの選択廃棄・優先制御を実施する。
【００１２】
また、境界ノードでは、各フローに対して許可レートを与え、許可レートを超えて転送されているパケットにタギングをする。
【００１３】
この許可レートは、フロー開始時には予め定めた初期レートに設定し、フローの持続時間や転送バイト数に応じて減少させ、内部ノードでは網が輻輳した場合には、タギングされたパケットを優先的に廃棄することにより、巨大フローを制御する。
【００１４】
しかしながら、この技術では、初期レートを適切に調整しないと性能が劣化する恐れがあった。
【００１５】
例えば、もし、初期レートが大きすぎて、網の内部でタギングされたパケットをいくら廃棄しても輻輳が緩和しない場合、タグなしパケットもバッファ溢れのために損失する可能性がある。そうなると、タグなしパケットを優先させることができなくなり、短いフローを優先させることができない可能性がある。
【００１６】
また、逆に、初期レートが低めに設定されすぎると、フロー間の差別化が図れなくなる可能性があった。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】特許第４２３８１５０号公報
【非特許文献】
【００１８】
【非特許文献１】戸田巌，“ネットワークＱｏＳ技術”，オーム社出版局，２００１．
【非特許文献２】Ｉ．Ｓｔｏｉｃａ，  Ｓ．Ｓｈｅｎｋｅｒ，  ａｎｄ  Ｈ．Ｚｈａｎｇ，“Ｃｏｒｅ−ｓｔａｔｅｌｅｓｓ  ｆａｉｒ  ｑｕｅｕｅｉｎｇ：ａｃｈｉｅｖｉｎｇ  ａｐｐｒｏｘｉｍａｔｅｌｙ  ｆａｉｒ  ｂａｎｄｗｉｄｔｈ  ａｌｌｏｃａｔｉｏｎｓ  ｉｎ  ｈｉｇｈ−ｓｐｅｅｄ  ｎｅｔｗｏｒｋｓ，”ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ＡＣＭ  ＳＩＧＣＯＭＭ９８，ｐｐ．１１８−１３０，１９９８．
【非特許文献３】Ｔ．Ｓ．Ｅｕｇｅｎｅ  Ｎｇ，  Ｄ．Ｃ．Ｓｔｅｐｈｅｎｓ，  Ｉ．Ｓｔｏｉｃａ，  ａｎｄ  Ｈ．Ｚｈａｎｇ，“Ｓｕｐｐｏｒｔｉｎｇ  ｂｅｓｔ−ｅｆｆｏｒｔ  ｔｒａｆｆｉｃ  ｗｉｔｈ  ｆａｉｒ  ｓｅｒｖｉｃｅ  ｃｕｒｖｅ，”ＩＥＥＥ  Ｇｌｏｂｅｃｏｍ９９，ｐｐ．１７９９−１８０７，１９９９．
【非特許文献４】山垣，戸出，村上，“フロー継続状況を考慮に入れたフロー管理型パケット廃棄制御方式”，電子情報通信学会論文誌  Ｖｏｌ．Ｊ８６−Ｂ，Ｎｏ．８，ｐｐ．１５７８−１５８８，２００３．
【非特許文献５】Ｉ．Ａ．Ｒａｉ，  Ｅ．Ｗ．Ｂｉｅｒｓａｃｋ，  ａｎｄ  Ｇ．Ｕ．−Ｋｅｌｌｅｒ，“Ｓｉｚｅ−ｂａｓｅｄ  ｓｃｈｅｄｕｌｉｎｇ  ｔｏ  ｉｍｐｒｏｖｅ  ｔｈｅ  ｐｅｒｆｏｒｍａｎｃｅ  ｏｆ  ｓｈｏｒｔ  ＴＣＰ  ｆｌｏｗｓ”，ＩＥＥＥ  Ｎｅｔｗｏｒｋ，Ｊａｎ．／Ｆｅｂ．２００５．
【非特許文献６】Ａｎ  ａｒｃｈｉｔｅｃｔｕｒｅ  ｆｏｒ  ｄｉｆｆｅｒｅｎｔｉａｔｅｄ  ｓｅｒｖｉｃｅｓ，ＩＥＴＦ  ＲＦＣ２４７５．
【非特許文献７】Ｍ．Ｍａｙ，  Ｊ．−Ｃ．Ｂｏｌｏｔ，  Ａ．Ｊ．−Ｍａｒｉｅ，  ａｎｄ  Ｃ．Ｄｉｏｔ，“Ｓｉｍｐｌｅ  ｐｅｒｆｏｒｍａｎｃｅ  ｍｏｄｅｌｓ  ｏｆ  ｄｉｆｆｅｒｅｎｔｉａｔｅｄ  ｓｅｒｖｉｃｅｓ  ｓｃｈｅｍｅｓ  ｆｏｒ  ｔｈｅ  Ｉｎｔｅｒｎｅｔ，”ＩＮＦＯＣＯＭ９９，ｐｐ．１３８５−１３９４，１９９９．
【発明の概要】
【発明が解決しようとする課題】
【００１９】
解決しようとする問題点は、従来の技術では、初期レートを適切に調整しないと性能が劣化する恐れがある点である。
【００２０】
本発明の目的は、これら従来技術の課題を解決し、巨大フローの通信品質を損なうことなく、かつ、ｗｅｂのような小さいサイズのフローのレスポンス時間を向上させて、与えられた帯域を有効利用することを可能とすることである。
【課題を解決するための手段】
【００２１】
上記目的を達成するため、本発明では、通信網（ＩＰネットワーク）の入口にある境界ノードが、ユーザフロー毎にトラヒックを監視し、その監視結果に応じてパケットヘッダにタギングをし、通信網の内部に位置する内部ノードが、タギングの有無とそのときの輻輳状況に応じてパケットの選択廃棄・優先制御を行い、各フローのパケット転送レートを制御する構成において、境界ノードは、各フローに対して許可レートを与え、許可レートを超えて転送されているパケットにタギングをする。各フローの許可レートは、通信開始時には初期レートに設定し、その後、フローの持続時間やパケット転送量に応じて減少させる。内部ノードは、網が輻輳した場合にはタギングされたパケットを優先的に廃棄することにより、長時間に渡って高レートで転送している巨大フローを制御する。特に、本発明では、内部ノードが測定した通信網のトラヒック情報を、管理サーバで収集し、それを用いて、初期レートを動的に変更する。
【発明の効果】
【００２２】
本発明によれば、初期レートをネットワークの状態に応じて適切に調整することにより、巨大フローを適切に制御し、巨大フローの通信品質を損なうことなく、かつ、ｗｅｂのような小さいサイズのフローのレスポンス時間を向上させて、与えられた帯域を有効利用することが可能となる。
【図面の簡単な説明】
【００２３】
【図１】空間方向のみ考慮した場合と時間方向も考慮した場合の割当帯域とフローの転送時間の関係を示す説明図である。
【図２】シミュレーション実験モデル構成例を示す説明図である。
【図３】シミュレーションによる初期レート設定の性能の影響を評価した結果を示す説明図である。
【図４】本発明が適用されるＩＰネットワークの基本構成の一例を示す構成図である。
【図５】本発明に係るフロー制御システムを構成する境界ノードの構成例を示すブロック図である。
【図６】本発明に係るフロー制御システムを構成する内部ノードの構成例を示すブロック図である。
【図７】本発明に係るフロー制御システムを構成する管理サーバの構成例を示すブロック図である。
【図８】シミュレーション評価より得たファイル転送時間の時系列状態を示す説明図である。
【発明を実施するための形態】
【００２４】
以下、図を用いて本発明を実施するための形態例を説明する。図４においては、本発明が適用されるＩＰネットワークの基本構成の一例を示しており、パーソナルコンピュータ等からなる複数のエンドユーザ端末４１ａ〜４１ｅが境界ノード４２ａ〜４２ｃを介してＩＰネットワーク４０に収容され、ＩＰネットワーク４０内には内部ノード４３ａ，４３ｂが設けられ、境界ノード４２ａ〜４２ｃと内部ノード４３ａ，４３ｂに本発明に係る処理を実行するのに必要な機能を配備し、かつ、それらの境界ノード４２ａ〜４２ｃと内部ノード４３ａ，４３ｂを管理する管理サーバ４４によって、本発明に係る巨大フロー制御システムを構築している。
【００２５】
境界ノード４２ａ〜４２ｃと内部ノード４３ａ，４３ｂおよび管理サーバ４４のそれぞれは、エンドユーザ端末４１ａ〜４１ｅと同様に、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）や主メモリからなるコンピュータ構成であり、プログラムされたコンピュータ処理により、本発明に係る処理を実行する。
【００２６】
境界ノード４２ａ〜４２ｃと内部ノード４３ａ，４３ｂおよび管理サーバ４４のそれぞれの内部構成を図５，６，７に示す。
【００２７】
図５においては、境界ノード５０として、図４における境界ノード４２ａ〜４２ｃの構成例を示しており、境界ノード５０は、プログラムされたコンピュータ処理を実行する機能として、パケットヘッダ解析部５１と、フロー管理部５２、違反タギング部５３、パケット転送部５４を有している。
【００２８】
図６においては、内部ノード６０として、図４における内部ノード４３ａ，４３ｂの構成例を示しており、内部ノード６０は、プログラムされたコンピュータ処理を実行する機能として、パケットヘッダ解析部６１と、トラヒック測定部６２、キュー長監視部６３、パケット廃棄決定部６４、パケット転送部６５を有している。
【００２９】
図７においては、管理サーバ７０として、図４における管理サーバ４４の構成例を示しており、管理サーバ７０は、プログラムされたコンピュータ処理を実行する機能として、トラヒック収集部７１と、経路管理部７２、初期レート調整部７３を有している。
【００３０】
図５に示す境界ノード５０は、パケットヘッダ解析部５１において、エンドユーザから到着したパケットから、送信元ＩＰアドレス、着信先ＩＰアドレス、送信元ポート番号、着信先ポート番号、プロトコル番号などの情報を読み取った後、その情報をフロー管理部５２へ通知し、到着パケットを違反タギング部５３に転送する。
【００３１】
フロー管理部５２は、フロー毎に状態を管理するテーブルを予め記憶装置に格納している。そのテーブルでは、フローｉ毎に、現在の許可レートＡＲ＿ｉ、および転送バイト数Ｂｉを記憶しておく。
【００３２】
本例では、フロー管理部５２は、許可レートＡＲ＿ｉの初期値として、初期レートＡＲ０をセットする。
【００３３】
フロー管理部５２は、パケット到着毎に、そのパケットサイズを読み出し、転送バイト数Ｂｉを、「Ｂｉ←Ｂｉ＋パケットサイズ」により更新する。
【００３４】
そして、転送バイト数Ｂｉが予め定めた閾値Ｎ（例えば１Ｍｂｙｔｅ）を超えると、フロー管理部５２は、許可レートＡＲ＿ｉを、「ＡＲ＿ｉ←ｍａｘ｛α１×ＡＲ＿ｉ，α２×ＡＲ０｝」により更新し、かつ、転送バイト数Ｂｉを「０」にリセットし、許可レートＡＲ＿ｉを更新した旨を違反タギング部５３に通知する。
【００３５】
違反タギング部５３は、許可レートＡＲ＿ｉを用いて、パケット到着毎に、現在の実際の送信レートが許可レートＡＲ＿ｉを超えているかどうかをチェックし、超えている場合には、そのパケットにタグをつけて、パケット転送部５４へ送信する。
【００３６】
パケット転送部５４は、違反タギング部５３から送信されてきたパケットを、例えば図６に示す内部ノード６０へ転送する。
【００３７】
図６に示す内部ノード６０は、出力リンク毎に以下に示す処理を実行する。
【００３８】
まず、パケットヘッダ解析部６１において、例えば図５の境界ノード５０から到着したパケットのパケットヘッダを読み出し、タギングされているかどうかを調べ、当該パケットをパケット廃棄決定部６４へ転送すると共に、トラヒック測定部６２へも転送する。
【００３９】
もし、当該パケットがタギングされていれば、パケットヘッダ解析部６１は、その旨をキュー長監視部６３に通知し、キュー長監視部６３は、リンクへの出力待ちバッファにおいてバッファ内キュー長Ｑを読み出し、その値（バッファ内キュー長Ｑ）をパケット廃棄決定部６４へ通知する。
【００４０】
パケット廃棄決定部６４は、キュー長監視部６３から通知されたバッファ内キュー長Ｑの値を廃棄確率決定関数ｆ（Ｑ）に代入して、廃棄確率ｐを計算する。
【００４１】
ここで、廃棄確率決定関数ｐ＝ｆ（Ｑ）は、以下のようにして算出する。
【００４２】
ｉｆ  Ｑ＝＜Ｑ＿ｔｈ＿ｍｉｎ
ｔｈｅｎ  ｆ（Ｑ）＝０
【００４３】
ｉｆ  Ｑ＿ｔｈ＿ｍｉｎ＜Ｑ＜＝Ｑ＿ｔｈ＿ｍａｘ
ｔｈｅｎ  ｆ（Ｑ）＝（Ｑ−Ｑ＿ｔｈ＿ｍｉｎ）／（Ｑ＿ｔｈ＿ｍａｘ−Ｑ＿ｔｈ＿ｍｉｎ）×γ
【００４４】
ｉｆ  Ｑ＞Ｑ＿ｔｈ＿ｍａｘ
ｔｈｅｎ  ｆ（Ｑ）＝１
【００４５】
ここで、「Ｑ＿ｔｈ＿ｍｉｎ」と「Ｑ＿ｔｈ＿ｍａｘ」および「γ」は予め定められたしきい値、あるいはパラメータである。尚、この技術は、例として、非特許文献７で示されているパケット廃棄技術を用いているが、他の技術を用いても良い。
【００４６】
パケット廃棄決定部６４は、計算した廃棄確率ｐに基づいて、到着したパケットを廃棄するか否かを決定し、廃棄しないと決定すれば、当該パケットをパケット転送部６５に転送する。
【００４７】
パケット転送部６５は、リンク出力待ちバッファを持ち、受信したパケットをバッファに格納する。もし、バッファが一杯であれば、受信したパケットをそこで廃棄する。
【００４８】
バッファにパケットが格納できたら、パケット転送部６５は、パケットを受け付けた旨をキュー長監視部６３に通知する。
【００４９】
キュー長監視部６３は、パケット受け付けの通知を受け取ると、バッファ内キュー長Ｑの値を、「Ｑ←Ｑ＋１」により更新する。
【００５０】
また、パケット転送部６５は、出力リンク帯域に従ってパケットを送出すると、キュー長監視部６３にその旨を通知し、その通知を受け取ったキュー長監視部６３は、バッファ内キュー長Ｑの値を、「Ｑ←Ｑ−１」により更新する。
【００５１】
トラヒック測定部６２は、自身の内部ノードIに接続されるリンクｊのｋ番目の測定区間におけるリンク使用率「ｒｈｏ＿ｋ（Ｉ，ｊ）」を一定周期毎に測定する。尚、リンク使用率とは、その測定区間中に該リンクを通過したパケットのバイト数の総和を測定周期（例えば１０分）で割り、さらにその値を該リンク容量で割ったものである。
【００５２】
また、内部ノードIにおけるトラヒック測定部６２は、リンクｊへのｋ番目の測定周期において、リンクｊへ到着するタギングされたパケット（タグ付パケット）の到着レート「ｔ＿ｋ（Ｉ，ｊ）」（ｂｐｓ）を測定し、「ｒ＿ｋ（Ｉ，ｊ）＝ｔ＿ｋ（Ｉ，ｊ）／Ｃ（Ｉ，ｊ）」により、タグ付割合「ｒ＿ｋ（Ｉ，ｊ）」を計算する。
【００５３】
ここで、Ｃ（Ｉ，ｊ）は、内部ノードｉに接続するリンクｊのリンク容量（ｂｐｓ）である。
【００５４】
内部ノードｉにおけるトラヒック測定部６２は、その測定結果「ｒｈｏ＿ｋ（Ｉ，ｊ）」および「ｒ＿ｋ（Ｉ，ｊ）」を、例えば図７に示す管理サーバ７０に送信する。
【００５５】
パケット転送部６５は、パケットを別の内部ノードまたは境界ノードへ転送する。
【００５６】
図７に示す管理サーバ７０では、図６における内部ノード６０から通知されたリンク使用率とタグ付割合をトラヒック収集部７１で受信し、その結果を、初期レート調整部７３に通知する。
【００５７】
また、管理サーバ７０は、経路管理部７２において、各入り側−出側エッジノードペアｍについて、「Ｓ＿ｋ（ｍ）」をエッジノードペアｍの経路上に存在するリンクの集合と定義し、そのリンクの集合を管理する。
【００５８】
管理サーバ７０の初期レート調整部７３は、エッジノードペアｍを流れるフローに対する初期レート「ＡＲ０＿ｋ＋１（ｍ）」を以下の手順で更新する。
【００５９】
尚、「ＡＲ０＿ｋ＋１（ｍ）」は、今ｋ番目の周期として、次の周期（つまりｋ＋１番目の周期）に用いる初期レートである。
【００６０】
まず、初期レート調整部７３は、経路管理部７２からリンクの集合「Ｓ＿ｋ（ｍ）」を読み出し、それを用いて、「ｊ＿ｋ（ｍ）＝ａｒｇｍａｘｊ∈Ｓ＿ｋ（ｍ）ｒｈｏ＿ｋ（Ｉ，ｊ）」を求める。
【００６１】
この意味は、リンクの集合「Ｓ＿ｋ（ｍ）」に属するリンクのうち、最もリンク使用率の高いリンクのＩＤを「ｊ＿ｋ（ｍ）」とする、ということである。
【００６２】
もし、「ｒｈｏ＿ｋ（Ｉ，ｊ＿ｋ（ｍ））＞ｒｈｏ＿ｔｈ」かつ「ｒ＿ｋ（Ｉ，ｊ＿ｋ（ｍ））＜ｒ＿ｔｈ１」の場合は、「ＡＲ０＿ｋ＋１（ｍ）＝ＡＲ０＿ｋ（ｍ）×ｍｉｎ｛β，（１−ｒ＊）／（１−ｒ＿ｋ（Ｉ，ｊ＿ｋ（ｍ）））｝」により更新し、もし、「ｒｈｏ＿ｋ（Ｉ，ｊ＿ｋ（ｍ））＞ｒｈｏ＿ｔｈ」かつ「ｒ＿ｋ（Ｉ，ｊ＿ｋ（ｍ））＞ｒ＿ｔｈ２」の場合は、「ＡＲ０＿ｋ＋１（ｍ）＝ＡＲ０＿ｋ（ｍ）×ｍｉｎ｛γ，（１−ｒ＊）／（１−ｒ＿ｋ（Ｉ，ｊ＿ｋ（ｍ）））｝により更新する。
【００６３】
ここで、「ｒｈｏ＿ｔｈ」はリンク使用率に対する閾値であり、「ｒ＿ｔｈ１」および「ｒ＿ｔｈ２」はタグ付割合に対する閾値で、「ｒ＿ｔｈ１＜ｒ＿ｔｈ２」である。また、「β」、「γ」は予め定められるパラメータで、０＜β＜１、γ＞１である。また、「ｒ＊」は目標タグ付割合で、０＜ｒ＊＜１である。
【００６４】
以下、このような処理動作について説明する。動作を説明するために行ったシミュレーション実験についてまず説明する。
【００６５】
図２に示すネットワークモデルを用いる。図２においては、図４と同様に、複数のエンドユーザ端末２１ａ〜２１ｈが境界ノード２２ａ〜２２ｄを介してＩＰネットワーク２０に収容され、ＩＰネットワーク２０内には内部ノード２３ａ，２３ｂが設けられている。ここでは、内部ノード２３ａ，２３ｂ間のリンク容量は１０Ｍｂｐｓであり、ボトルネックリンクとなっている。
【００６６】
すなわち、図２のネットワークモデルでは、ＴＣＰフローが境界ノード２２ａ〜２２ｄを介して内部ノード２３ａ，２３ｂ間のボトルネックリンクに多重されている。
【００６７】
各フローはポアソン過程に従って発生する。フローは２種類存在し、ｗｅｂのような小フローとして、平均１００ｋｂｙｔｅのファイルを発生するフローと、Ｐ２Ｐのような巨大フローとして、平均１０Ｍｂｙｔｅのファイルを発生するフローを発生させる。フロー発生比率は、小フロー：巨大フロー＝９：１とする。
【００６８】
また、ファイルサイズ分布は、いずれのフローもパレート分布に従うとする（パレート分布の形状を決めるｓｈａｐｅ  ｐａｒａｍｅｔｅｒは１．５に設定した）。
【００６９】
フロー発生率は、リンク使用率が０．９５になるように設定した。
【００７０】
初期レートを、動的に変更せずに、ある固定値（固定値として、０．１Ｍｂｐｓ，０．５Ｍｂｐｓ，１Ｍｂｐｓ，…，５００Ｍｂｐｓの７パターンを評価）に設定した場合の小フローのファイル転送時間を、図３（ａ）に示す。これより、初期レートが４Ｍｂｐｓのときに転送時間を最も小さくできていることが分かる。一方で、初期レートが小さすぎる、または大きすぎると転送時間が劣化していることが分かる。
【００７１】
図３（ｂ）においては、ファイル転送時間とタグ付割合との関係をグラフで示している。これは、初期レートが小さいときはタグ付割合が大きいことに対応している。図３（ｂ）で示される内容から、タグ付割合が０．６〜０．８の間にあれば、バランスよくタグがつけられているため、転送時間が良くなっていることが分かる。
【００７２】
以上の実験を通じて、本例では、タグ付割合を目標値ｒ＊となるように、初期レートの上げ幅下げ幅を調整している。
【００７３】
このように、本例では、初期レートをネットワークの状態に応じて変化させる。このことにより、巨大フローを適切に制御し、巨大フローの通信品質を損なうことなくｗｅｂのような小さいサイズのフローのレスポンス時間を向上させて、与えられた帯域を有効利用することが可能となる。
【００７４】
尚、図２の実験モデルで、初期レートを５０Ｍｂｐｓにセットし、本例のシステムを動作させた場合の、小フローのファイル転送時間の時系列（１０分毎の平均ファイル転送時間）を図８に示す。尚、ここでは、１０分周期で本例のシステムを動作させており、ｒｈｏ＿ｔｈ＝０．８、ｒ＿ｔｈ１＝０．４、ｒ＿ｔｈ２＝０．８、ｒ＊＝０．６、β＝０．５、γ＝１００００００にセットした。
【００７５】
図８において、「ｒｈｏ＝０．９５」または「ｒｈｏ＝０．８」という凡例は、リンク使用率をそのように設定したことを意味する。これより、初期レートを適切に調整することにより、小さいファイル転送時間を達成できていることが分かる。
【００７６】
参考までに、何も制御しない場合には、ファイル転送時間は、「ｒｈｏ＝０．８」の場合で１．１秒以上、「ｒｈｏ＝０．９５」の場合で２．６秒以上となっていた。それと比べて、図８では小さい転送時間を維持できている。
【００７７】
以上、図１〜図８を用いて説明したように、本例では、通信網（ＩＰネットワーク４０）の入口にある境界ノード５０が、ユーザフロー毎にトラヒックを監視し、その監視結果に応じてパケットヘッダにタギングをし、通信網の内部に位置する内部ノード６０が、タギングの有無とそのときの輻輳状況に応じてパケットの選択廃棄・優先制御を行い、各フローのパケット転送レートを制御する構成において、境界ノード５０は、各フローに対して許可レートを与え、許可レートを超えて転送されているパケットにタギングをする。各フローの許可レートは、通信開始時には初期レートに設定し、その後、フローの持続時間やパケット転送量に応じて減少させ、内部ノード６０では、網が輻輳した場合にはタギングされたパケットを優先的に廃棄することにより、長時間に渡って高レートで転送している巨大フローを制御する。このとき、本例のシステムでは、本発明に係る処理として、網で測定収集されたトラヒック情報を用いて、初期レートを動的に変更する。
【００７８】
例えば、境界ノード５０は、初期レートをＡＲ０とし、フローｉの許可レート「ＡＲ＿ｉ」を「ＡＲ＿ｉ←ＡＲ０＿ｉ」にセットし、当該フローからのパケット転送量がＮ［ｂｙｔｅ］を越えるたびに、「ＡＲ＿ｉ←ｍａｘ｛α１×ＡＲ＿ｉ，α２×ＡＲ０｝」により減少させていく。ここで、α１およびα２は予め定める係数であり、０＜α＜１の値をとる。
【００７９】
そして、フローからのパケットが到着した場合に、その時点でのＡＲ＿ｉを超えて転送されていると判定されると、当該パケットをタギングする。
【００８０】
一方、網の内部ノード６０は、リンクへの出力待ちバッファにおいてバッファ内キュー長Ｑを監視し、タギングされたパケットが到着すると、確率ｆ（Ｑ）（ｆ（）はＱに関して単調非減少な関数で、０＜＝ｆ（Ｑ）＜＝１）で、当該パケットを廃棄する。
【００８１】
以上の制御を行いながら、内部ノード６０は、ネットワークの中で以下のトラヒック測定を実施する。すなわち、内部ノードIは、自身に接続されるリンクｊのｋ番目の測定区間におけるリンク使用率ｒｈｏ＿ｋ（Ｉ，ｊ）を一定周期毎に測定する。
【００８２】
また、内部ノードIは、リンクｊへのｋ番目の測定周期において、リンクｊへ到着するタギングされたパケット（タグ付パケット）の到着レートｔ＿ｋ（Ｉ，ｊ）［ｂｐｓ］を測定し、タグ付割合ｒ＿ｋ（Ｉ，ｊ）を、ｒ＿ｋ（Ｉ，ｊ）＝ｔ＿ｋ（Ｉ，ｊ）／Ｃ（Ｉ，ｊ）により計算する。ここで、Ｃ（Ｉ，ｊ）は内部ノードｉに接続するリンクｊのリンク容量［ｂｐｓ］である。
【００８３】
各内部ノードは、測定結果ｒｈｏ＿ｋ（Ｉ，ｊ）およびｒ＿ｋ（Ｉ，ｊ）を管理サーバ７０へ送信する。
【００８４】
管理サーバ７０は、各入り側−出側エッジノードペアｍを流れるフローに対する初期レートＡＲ０＿ｋ＋１（ｍ）を以下の手順で更新する。尚、ＡＲ０＿ｋ＋１（ｍ）は、今ｋ番目の周期として次の周期（つまりｋ＋１番目の周期）に用いる初期レートである。
【００８５】
Ｓ＿ｋ（ｍ）をエッジノードペアｍの経路上に存在するリンクの集合と定義し、管理サーバ７０は、それを用いて、ｊ＿ｋ（ｍ）＝ａｒｇｍａｘｊ∈Ｓ＿ｋ（ｍ）ｒｈｏ＿ｋ（Ｉ，ｊ）を求める。この意味は、Ｓ＿ｋ（ｍ）に属するリンクのうち、最もリンク使用率の高いリンクのＩＤをｊ＿ｋ（ｍ）とする、ということである。
【００８６】
もし、ｒｈｏ＿ｋ（Ｉ，ｊ＿ｋ（ｍ））＞ｒｈｏ＿ｔｈで、かつ、ｒ＿ｋ（Ｉ，ｊ＿ｋ（ｍ））＜ｒ＿ｔｈ１の場合には、ＡＲ０＿ｋ＋１（ｍ）＝ＡＲ０＿ｋ（ｍ）×ｍｉｎ｛β，（１−ｒ＊）／（１−ｒ＿ｋ（Ｉ，ｊ＿ｋ（ｍ）））｝により更新し、また、ｒｈｏ＿ｋ（Ｉ，ｊ＿ｋ（ｍ））＞ｒｈｏ＿ｔｈで、かつ、ｒ＿ｋ（Ｉ，ｊ＿ｋ（ｍ））＞ｒ＿ｔｈ２の場合には、ＡＲ０＿ｋ＋１（ｍ）＝ＡＲ０＿ｋ（ｍ）×ｍｉｎ｛γ，（１−ｒ＊）／（１−ｒ＿ｋ（Ｉ，ｊ＿ｋ（ｍ）））により更新する。
【００８７】
ここで、ｒｈｏ＿ｔｈはリンク使用率に対する閾値で、ｒ＿ｔｈ１，ｒ＿ｔｈ２はタグ付割合に対する閾値、ｒ＿ｔｈ１＜ｒ＿ｔｈ２、β、γは予め定めるパラメータで、０＜β＜１、γ＞１である。また、ｒ＊は目標タグ付割合で、０＜ｒ＊＜１である。
【００８８】
また、上述のＡＲ０＿ｋ＋１（ｍ）の更新手順の代わりに、もし、ｒｈｏ＿ｋ（Ｉ，ｊ＿ｋ（ｍ））＞ｒｈｏ＿ｔｈで、かつｒ＿ｋ（Ｉ，ｊ＿ｋ（ｍ））＜ｒ＿ｔｈ１の場合には、ＡＲ０＿ｋ＋１（ｍ）＝ＡＲ０＿ｋ（ｍ）×ｍｉｎ｛β，ｒ＿ｋ（Ｉ，ｊ＿ｋ（ｍ）／ｒ＊））｝によりＡＲ０＿ｋ＋１（ｍ）を更新し、もし、ｒｈｏ＿ｋ（Ｉ，ｊ＿ｋ（ｍ））＞ｒｈｏ＿ｔｈで、かつｒ＿ｋ（Ｉ，ｊ＿ｋ（ｍ））＞ｒ＿ｔｈ２の場合には、ＡＲ０＿ｋ＋１（ｍ）＝ＡＲ０＿ｋ（ｍ）×ｍｉｎ｛γ，ｒ＿ｋ（Ｉ，ｊ＿ｋ（ｍ））／ｒ＊｝によりＡＲ０＿ｋ＋１（ｍ）を更新する。
【００８９】
このように、本例では、初期レートをネットワークの状態に応じて適切に調整しており、これにより、巨大フローを適切に制御し、巨大フローの通信品質を損なうことなくｗｅｂのような小さいサイズのフローのレスポンス時間を向上させて、与えられた帯域を有効利用することが可能となる。
【００９０】
尚、本発明は、図１〜図８を用いて説明した例に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能である。
【００９１】
例えば、ネットワークの境界ノード５０において、各入り側−出側エッジノードペアｍを通過する各フローの発生時刻、終了時刻、およびその間に転送されたバイト数を測定し、各フローのスループットを、「転送バイト数／（終了時刻−発生時刻）」により計算し、ｋ番目の測定周期内に終了したフロー全てに対してフロースループットを求め、その平均値をＴ＿ｋ（ｍ）とする。
【００９２】
そして、ＡＲ０＿（ｋ−１）（ｍ）＜ＡＲ０＿ｋ（ｍ）としたときに、Ｔ＿（ｋ−１）（ｍ）＞Ｔ＿ｋ（ｍ）となっていれば、ＡＲ０＿（ｋ＋１）（ｍ）をＡＲ０＿ｋ（ｍ）よりも大きくし、そうでなければ小さくすることにより、ＡＲ＿（ｋ＋１）（ｍ）を調整することでも良い。これは、上述の技術とは異なり、ファイル転送時間を直接観測し、その結果をフィードバックして初期レートを調整するものである。
【００９３】
あるいは、ネットワークの境界ノード５０において、次の手順で、次周期（ｋ＋１番目の周期）での初期レートを調整することでも良い。すなわち、ネットワークの境界ノード５０は、各入り側−出側エッジノードペアｍを通過する各フローの発生時刻、終了時刻、およびその間に転送されたバイト数を測定し、各フローのスループットを、「スループット＝転送バイト数／（終了時刻−発生時刻）」により計算し、各フローのフローサイズを「フローサイズ＝転送バイト数」により計算し、ｋ番目の測定周期内に観測されたフローｘ（ｘ＝１〜Ｔｏｔａｌ＿ｋ（ｍ）、…Ｔｏｔａｌ＿ｋ（ｍ）は、この測定周期内に観測されたフロー数）全てに対してフロースループットＴ＿ｋ（ｍ，ｘ）、およびフローサイズＳＩＺＥ＿ｋ（ｍ，ｘ）を求める。 
【００９４】
そして、これらの情報を用いて、仮に初期レートをＡＲ０’にセットしていたら、ネットワークの内部ノードでのタグ付割合がどのようになるかを計算する。
【００９５】
ｘ番目のフローについて、まず、フローサイズＳＩＺＥ＿ｋ（ｍ，ｘ）をＮ（＝１Ｍｂｙｔｅ）で割った商と余りを、それぞれ、Ｑｕｏ＿ｋ（ｍ，ｘ）およびＲｅ＿ｋ（ｍ，ｘ）とする。つまり、「ＳＩＺＥ＿ｋ（ｍ，ｘ）＝Ｎ×Ｑｕｏ＿ｋ（ｍ，ｘ）＋Ｒｅ＿ｋ（ｍ，ｘ）」となる。
【００９６】
最初のＮ［ｂｙｔｅ］についてタグ付きで転送されたバイト数は、「ｍａｘ｛Ｔ＿ｋ（ｍ，ｘ）−ＡＲ０’，０｝×Ｎ」、次のＮ［ｂｙｔｅ］についてタグ付きで転送されたバイト数は「ｍａｘ｛Ｔ＿ｋ（ｍ，ｘ）−ｍａｘ｛α１×ＡＲ０’，α２×ＡＲ０’｝，０｝×Ｎ」、というように計算し、Ｌ番目のＮ［ｂｙｔｅ］についてタグ付きで転送されたバイト数は、「ｍａｘ｛Ｔ＿ｋ（ｍ，ｘ）−ｍａｘ｛α１×ＡＲ０’Ｌ−１，α２×ＡＲ０’｝，０｝×Ｎ」、として計算する。尚、α１，α２は、予め定められた係数で、０＜α１＜１，０＜α２＜１である。
【００９７】
これを、Ｌ＝Ｑｕｏ＿ｋ（ｍ，ｘ）となるまで繰り返す。その後、残りのＲｅ＿ｋ（ｍ，ｘ）［ｂｙｔｅ］についてタグ付きで転送されたバイト数は、
「ｍａｘ｛Ｔ＿ｋ（ｍ，ｘ）−ｍａｘ｛α１×ＡＲ０’Ｌ，α２×ＡＲ０’｝，０｝×Ｒｅ＿ｋ（ｍ，ｘ）」、として計算する。
【００９８】
これを全フローに対して実施し、タグ付きで転送されたバイト数として計算された値の総和Ｓｕｍ＿ｔａｇ＿ｋ（ｍ）を求める。それを測定周期（例えば１０分）で割った量が、エッジノードペアｍにおいて、仮に初期レートをＡＲ０’としたときにネットワークへ加わるタグ付きレートである。これを、仮想タグ付きレートＶ＿ｋ（ｍ，ＡＲ０’）と呼ぶ。
【００９９】
これを全部のエッジノードペアについて実施し、内部ノードＩに接続されるリンクｊを通過するエッジノードペアｍの仮想レートＶ＿ｋ（ｍ）の和を計算し、それを内部ノードＩのリンクｊでの仮想レートＶ＿ｋ（ｊ，ＡＲ０’）とする。
【０１００】
一定周期毎に測定する内部ノードＩに接続されるリンクｊのｋ番目の測定区間におけるリンク使用率ｒｈｏ＿ｋ（Ｉ，ｊ＿ｋ（ｍ））と予め定められたリンク使用率に対する閾値ｒｈｏ＿ｔｈとを比較する。
【０１０１】
もし、「ｒｈｏ＿ｋ（Ｉ，ｊ＿ｋ（ｍ））＞ｒｈｏ＿ｔｈ」であれば、Ｖ＿ｋ（ｊ，ＡＲ０’）／Ｃ（Ｉ，ｊ）と予め定められた目標タグ付割合ｒ＊（０＜ｒ＊＜１）を比較し、「Ｖ＿ｋ（ｊ，ＡＲ０’）／Ｃ（Ｉ，ｊ）＞（１＋ε）ｒ＊」であれば、ＡＲ０’を減少させて、上記の手順（仮に初期レートをＡＲ０’だとして、Ｖ＿ｋ（ｊ，ＡＲ０’）を計算するまでの手順）を実行する。尚、εは予め定めるパラメータであり、０＜ε＜１である（例えばε＝０．０５）。
【０１０２】
逆に、「Ｖ＿ｋ（ｊ，ＡＲ０’）／Ｃ（Ｉ，ｊ）＜（１−ε）ｒ＊」であれば、ＡＲ０’を増加させて、上記の手順（仮に初期レートをＡＲ０’だとして、Ｖ＿ｋ（ｊ，ＡＲ０’）を計算するまでの手順）を実行する。
【０１０３】
以上の手順を、「（１−ε）ｒ＊＜Ｖ＿ｋ（ｊ，ＡＲ０’）／Ｃ（Ｉ，ｊ）＜（１＋ε）ｒ＊」となるまで繰り返し、その結果得られたＡＲ０’の値を、次周期（ｋ＋１番目の周期）での初期レートとすることでも良い。
【符号の説明】
【０１０４】
２０，４０：ＩＰネットワーク、２１ａ〜２１ｈ，４１ａ〜４１ｅ：エンドユーザ端末、２２ａ〜２２ｄ，４２ａ〜４２ｃ，５０：境界ノード、２３ａ，２３ｂ，４３ａ，４３ｂ，６０：内部ノード、４４，７０：管理サーバ、５１：パケットヘッダ解析部、５２：フロー管理部、５３：違反タギング部、５４：パケット転送部、６１：パケットヘッダ解析部、６２：トラヒック測定部、６３：キュー長監視部、６４：パケット廃棄決定部、６５：パケット転送部、７１：トラヒック収集部、７２：経路管理部、７３：初期レート調整部。
【図１】
2010193334.tif 000003
【図２】
2010193334.tif 000004
【図３】
2010193334.tif 000005
【図４】
2010193334.tif 000006
【図５】
2010193334.tif 000007
【図６】
2010193334.tif 000008
【図７】
2010193334.tif 000009
【図８】
2010193334.tif 000010