(57)【特許請求の範囲】
【請求項１】
ネットワークを介して接続された装置宛のデータを、該ネットワーク上の複数の経路のいずれかを介して転送するデータ転送装置において、
前記複数の経路それぞれを前記装置宛のデータの転送に利用する割合を示す利用割合が記憶された記憶手段を参照し、各経路の利用割合に応じて前記装置宛のデータをいずれかの経路に振り分けて転送する転送手段と、
データ転送の負荷が他よりも少ない経路の前記記憶手段に設定された利用割合を下げていく集約手段と、
利用割合が所定値より大きい経路が複数存在している状態が所定時間以上継続している場合、平衡状態であると判定する平衡判定手段と、
平衡状態と判定された場合、経路間で偏りを持たせた利用割合を前記記憶手段に設定する平衡解除手段と、
を有することを特徴とするデータ転送装置。
【請求項２】
前記平衡解除手段は、前記装置宛のデータ転送が平衡状態と判断されてからの待ち時間を決定し、該待ち時間経過後に、経路間で偏りを持たせた利用割合を前記記憶手段に設定することを特徴とする請求項１記載のデータ転送装置。
【請求項３】
前記平衡解除手段は、ランダムに生成した時間を前記待ち時間に決定することを特徴とする請求項２記載のデータ転送装置。
【請求項４】
前記平衡解除手段は、前記装置宛のデータ転送が平衡状態となった場合、該装置に対して平衡状態になったことを通知し、該通知に対する該装置からの応答内容に応じて、前記待ち時間を決定することを特徴とする請求項２記載のデータ転送装置。
【請求項５】
前記平衡解除手段は、前記装置宛のデータ転送が平衡状態となった場合、該装置に対して平衡状態になったことを通知し、通知に対する該装置からの応答内容に応じて、前記複数の経路それぞれの利用割合の偏り度合いを決定することを特徴とする請求項１乃至４のいずれかに記載のデータ転送装置。
【請求項６】
ネットワークを介して接続された装置からのデータを、該ネットワーク上の複数の経路のいずれかを介して受信するデータ受信装置において、
前記データ受信装置宛のデータ転送が、データの転送に利用する割合を示す利用割合が所定値より大きい経路が複数存在している状態が所定時間以上継続した平衡状態であること、および前記データ受信装置宛のデータの転送量が示された通知を複数の装置から取得し、記憶手段に格納する通知取得手段と、
前記記憶手段を参照し、前記複数の装置それぞれから前記データ受信装置宛に送信したデータ量に基づいて、通知を送信した前記複数の装置の少なくともいずれか１つを選択し、該選択した装置に対して、前記データ受信装置宛のデータ転送に利用可能な前記複数の経路それぞれの利用割合に偏りを持たせた該利用割合の変更指示を送信する応答手段と、
を有することを特徴とするデータ受信装置。
【請求項７】
ネットワークを介して接続された装置宛のデータを、該ネットワーク上の複数の経路のいずれかを介して転送するデータ転送方法において、
コンピュータが、
前記複数の経路それぞれを前記装置宛のデータの転送に利用する割合を示す利用割合が記憶された記憶手段を参照し、各経路の利用割合に応じて前記装置宛のデータをいずれかの経路に振り分けて転送し、
データ転送の負荷が他よりも少ない経路の前記記憶手段に設定された利用割合を下げていき、
利用割合が所定値より大きい経路が複数存在している状態が所定時間以上継続している場合、平衡状態であると判定し、
平衡状態と判定された場合、経路間で偏りを持たせた利用割合を前記記憶手段に設定する、
ことを特徴とするデータ転送方法。
【請求項８】
ネットワークを介して接続された装置宛のデータを、該ネットワーク上の複数の経路のいずれかを介して転送する処理をコンピュータに実行させるデータ転送プログラムにおいて、
前記コンピュータに、
前記複数の経路それぞれを前記装置宛のデータの転送に利用する割合を示す利用割合が記憶された記憶手段を参照し、各経路の利用割合に応じて前記装置宛のデータをいずれかの経路に振り分けて転送し、
データ転送の負荷が他よりも少ない経路の前記記憶手段に設定された利用割合を下げていき、
利用割合が所定値より大きい経路が複数存在している状態が所定時間以上継続している場合、平衡状態であると判定し、
平衡状態と判定された場合、経路間で偏りを持たせた利用割合を前記記憶手段に設定する、
処理を実行させることを特徴とするデータ転送プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はネットワーク上のトラヒックの振り分けを行うデータ転送装置、データ受信装置、データ転送方法、およびデータ転送プログラムに関する。
【背景技術】
【０００２】
ネットワークでは複数のノードがパケットを中継し、宛先のコンピュータまでパケットを伝送させる。各ノードはパケットの宛先までの伝送経路を認識するために、経路情報を相互に交換している。経路情報には、その経路情報を送信したノードが認識している伝送経路が示されている。各ノードは、他のノードから受信した経路情報に基づいて、宛先に応じたパケットの転送先を選択する。
【０００３】
ノードから宛先のコンピュータへの伝送経路が複数存在する場合、ノードは、所定のアルゴリズムで経路選択を行う。ノードにおける経路選択のアルゴリズムは、ＯＳＰＦ（Open Shortest Path First）やＲＩＰ（Routing Information Protocol）などのルーティングプロトコルに規定されている。これらのルーティングプロトコルでは、基本的には最短経路を採るように経路選択が行われる。あるいは、これらのルーティングプロトコルを用いた既存の高度な制御としては、ネットワーク利用率のピークを最小化するよう平滑化しつつ、最短経路を採るように経路選択が行われる。
【０００４】
このような従来のルーティングプロトコルでは、パケットなどのトラヒック（ネットワーク上を移動するデータ）は予め決められた経路に沿って転送される。そのため、全体的にトラヒックが少ない時間帯が存在しても、各ノードを起動させ続けなければならない。
【０００５】
他方、ネットワークの処理能力の向上に伴い、ネットワークを構成する機器による消費電力も増加している。そのため、ネットワーク全体での消費電力を抑制した運用を行うことの重要性が高まっている。そこで、例えばトラヒックの低下したハイウェイを自動的に検出して、該ハイウェイ内のデータを他のハイウェイに自動的に迂回させる技術が考えられている。データを迂回させたことで未使用状態に移行した電子交換機内装置に対し電源をＯＦＦにする制御を行うことで、消費電力の削減が可能となる。また、集中管理・制御装置を用いない自律分散型の経路制御方式において、トラヒックが少ない場合には、トラヒックがより多く通過する経路へトラヒックを集約させることで、多くの空きノードを生成する技術も考えられている。
【０００６】
逆に、トラヒックで輻輳が発生しそうな場合には、トラヒックを分散させる技術がある。例えば、予めネットワークの入口ノードから出口ノードまでの間に複数の経路のパスを定義する。各ノードは、接続するリンクの利用率が閾値を超えた場合、アジャスタと呼ぶ情報を入口ノードへ伝達する。入口ノードは、アジャスタを受信したパスを使う確率を変更し、輻輳が起きないように制御する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００１−１１９７３０号公報
【非特許文献】
【０００８】
【非特許文献１】山田亜紀子、外３名、「グリーンネットワークに向けた一検討（３）ＥＣＯルーティング」、電子情報通信学会総合大会講演論文集、社団法人電子情報通信学会、２００９年３月４日、2009年＿通信（２）、pp.252
【非特許文献２】山田亜紀子、外２名、「ネットワークの省電力化を実現するパスベーストラフィック制御方式」、信学技報, 社団法人電子情報通信学会、２０１０年３月、vol. 109, no. 448, NS2009-232, pp. 393-398
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかし、自律分散型の経路制御方式では、複数の経路のトラヒック量が等しくなるような平衡状態（バランス状態）で安定してしまうとトラヒックの適切な集約が困難となる。例えば、輻輳発生防止のためにトラヒックを分散させた後、全体のトラヒックが減少しても複数の経路のトラヒックが平衡状態で安定することがある。
【００１０】
１つの側面では、本発明は、複数の経路のトラヒック量が平衡状態に陥っても、自律制御でトラヒックを集約させることができるデータ転送装置、データ受信装置、データ転送方法、およびデータ転送プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
１つの案では、ネットワークを介して接続された装置宛のデータを、該ネットワーク上の複数の経路のいずれかを介して転送するデータ転送装置が提供される。このデータ転送装置は、転送手段、集約手段、平衡判定手段、および平衡解除手段を有する。転送手段は、複数の経路それぞれを装置宛のデータの転送に利用する割合を示す利用割合が記憶された記憶手段を参照し、各経路の利用割合に応じて装置宛のデータをいずれかの経路に振り分けて転送する。集約手段は、データ転送の負荷が他よりも少ない経路の記憶手段に設定された利用割合を下げていく。平衡判定手段は、利用割合が所定値より大きい経路が複数存在している状態が所定時間以上継続している場合、平衡状態であると判定する。平衡解除手段は、平衡状態と判定された場合、経路間で偏りを持たせた利用割合を記憶手段に設定する。
【００１２】
また、１つの案では、ネットワークを介して接続された装置からのデータを、該ネットワーク上の複数の経路のいずれかを介して受信するデータ受信装置が提供される。このデータ受信装置は、通知取得手段、および応答手段を有する。通知取得手段は、データ受信装置宛のデータ転送が、データの転送に利用する割合を示す利用割合が所定値より大きい経路が複数存在している状態が所定時間以上継続した平衡状態であること、およびデータ受信装置宛のデータの転送量が示された通知を複数の装置から取得し、記憶手段に格納する。応答手段は、記憶手段を参照し、該複数の装置それぞれからデータ受信装置宛に送信したデータ量に基づいて複数の装置宛の応答内容を決定し、決定した応答内容を複数の装置それぞれに対して送信する。
【００１３】
また、１つの案では、上記データ転送装置が実行する処理と同様の処理を行うデータ転送方法が提供される。
また、１つの案では、上記データ転送装置が実行する処理と同様の処理をコンピュータに実行させるデータ転送プログラムが提供される。
【発明の効果】
【００１４】
複数の経路のトラヒック量が平衡状態に陥っても、自律制御でトラヒックを集約させることができる。
【図面の簡単な説明】
【００１５】
【図１】第１の実施の形態に係るデータ転送装置の構成を示すブロック図である。
【図２】第２の実施の形態のシステム構成例を示す図である。
【図３】第２の実施の形態に用いるノードのハードウェアの一構成例を示す図である。
【図４】集約制御の一例を示す図である。
【図５】輻輳抑制制御の一例を示す図である。
【図６】トラヒックの平衡状態発生例を示す図である。
【図７】平衡解除制御の例を示す図である。
【図８】各ノードの機能を示す図である。
【図９】トラヒック制御情報記憶部のデータ構造例を示す図である。
【図１０】第２の実施の形態に係る転送確率管理部の詳細構成例を示す図である。
【図１１】トラヒック記憶部のデータ構造例を示す図である。
【図１２】平衡情報記憶部のデータ構造例を示す図である。
【図１３】平衡判定処理の手順を示すフローチャートである。
【図１４】平衡解消判定処理の手順を示すフローチャートである。
【図１５】平衡解除処理の手順を示すフローチャートである。
【図１６】トラヒックが分散された状態の例を示す図である。
【図１７】平衡状態と判定したときの平衡管理テーブルの例を示す図である。
【図１８】一方のノードが転送確率を変更した例を示す図である。
【図１９】誘引力に基づく転送確率変更後の状態を示す図である。
【図２０】集約が進んだ状態を示す図である。
【図２１】第３の実施の形態におけるシステム構成例を示す図である。
【図２２】第３の実施の形態に係るノードの機能を示すブロック図である。
【図２３】動作定義記憶部のデータ構造の一例を示す図である。
【図２４】第３の実施の形態における平衡状態の例を示す図である。
【図２５】平衡状態のときの入口ノードのトラヒック制御テーブルの内容を示す図である。
【図２６】第３の実施の形態における平衡解除処理の手順の一例を示すシーケンス図である。
【図２７】入口ノードから出口ノードに通知される平衡通知メッセージの例を示す図である。
【図２８】応答メッセージの例を示す図である。
【図２９】ノードＩＤ「１」のノードで転送確率を変更した状態を示す図である。
【図３０】ノードＩＤ「１」のノードでの転送確率変更後の各リンクのトラヒック量を示す図である。
【図３１】ノードＩＤ「２」、「３」、「４」、「５」のノードでの転送確率変更後の各リンクのトラヒック量を示す図である。
【図３２】収容可残量を説明する図である。
【図３３】第４の実施の形態に係るノードの機能を示すブロック図である。
【図３４】状態通知制御パケットの例を示す図である。
【図３５】収容可残量記憶部のデータ構造例を示す図である。
【図３６】第４の実施の形態における平衡解除処理の手順の一例を示すシーケンス図である。
【図３７】入口ノードから出口ノードに送信される平衡通知メッセージの例を示す図である。
【図３８】第４の実施の形態における応答メッセージの例を示す図である。
【発明を実施するための形態】
【００１６】
以下、本実施の形態について図面を参照して説明する。
〔第１の実施の形態〕
図１は、第１の実施の形態に係るデータ転送装置の構成を示すブロック図である。データ転送装置１は、通信インタフェース１ａを介してデータ受信装置２宛のデータが入力される。また、データ転送装置１は、データ受信装置２への経路に接続された２つの通信インタフェース１ｂ，１ｃを有する。図１の例では、通信インタフェース１ｂは、中継装置３を経由してデータ受信装置２にデータを通信する経路に接続されている。また、通信インタフェース１ｃは、中継装置４を経由してデータ受信装置２にデータを通信する経路に接続されている。ここで、中継装置３を経由するパスを「経路＃１」、中継装置４を経由するパスを「経路＃２」とする。
【００１７】
データ転送装置１は、通信インタフェース１ａを介して入力されたデータ受信装置２宛のデータを転送するために、記憶手段１ｄ、転送手段１ｅ、集約手段１ｆ、平衡判定手段１ｇ、および平衡解除手段１ｈを有する。
【００１８】
記憶手段１ｄは、複数の経路それぞれをデータ受信装置２宛のデータの転送に利用する割合を示す利用割合が記憶されている。例えば記憶手段１ｄには、経路ごとに、転送データ全体のうち該当経路の利用割合が転送確率で示されている。
【００１９】
転送手段１ｅは、記憶手段１ｄを参照し、各経路の利用割合に応じて、データ受信装置２宛のデータを各経路に振り分けて転送する。例えば転送手段１ｅは、転送確率が５０％と設定されている経路に対しては、データ受信装置２宛の転送データ全体の５０％のデータを、該当経路を介して転送する。
【００２０】
集約手段１ｆは、データ転送の負荷が他よりも少ない経路の記憶手段１ｄに設定された利用割合を下げていく。例えば集約手段１ｆは、経路の負荷を示す指標として、各経路上で隣接する中継装置３，４から、該当経路を使って通信されるデータ量が多いほどより大きな値となる誘引力値を取得する。経路の誘引力値は、その経路を介して転送されるデータ量が増加した場合、データ量の増加割合よりも誘引力値の増加割合の方が大きくなるような計算式で算出される。すなわち誘引力値は、経路を介して転送されるデータ量の増加度合いを増幅させた値であるとともに、経路の負荷が反映されている。例えば、経路に流れるデータ量が１０％増加した場合には、その経路の誘引力値は１０％より多く増加する。その結果、各経路間の利用割合に偏りがあれば、集約手段１ｆは、転送するデータ量の多い経路の利用割合を徐々に増加させていき、他の経路の利用割合を徐々に減らす。そして、集約手段１ｆは、例えば、最終的に１つの経路を除き利用割合を０に設定する。これにより、データ転送に使用する経路を１つに集約させることができる。
【００２１】
平衡判定手段１ｇは、データ受信装置２宛のデータ転送に関する利用割合が所定値より大きい経路が複数存在している状態が所定時間以上継続している場合、データ受信装置２宛のデータ転送が平衡状態であると判定する。平衡状態と判定するための利用割合の所定値としては、０％以上、５０％未満の値が設定される。例えば所定値として０が設定される。例えば、２つの経路の転送確率が共に「５０％」の場合、それぞれの経路を介して転送されるデータ量が等しくなる。すると集約手段１ｆが記憶手段１ｄに設定する各経路の転送確率も「５０％」ずつとなる。このような場合、各経路の利用割合が「５０％」ずつで安定し、所定時間以上継続して、利用割合が所定値より大きい経路が複数存在することとなり、平衡状態と判定される。
【００２２】
平衡解除手段１ｈは、データ受信装置２宛のデータ転送が平衡状態と判定された場合、経路間で偏りを持たせた利用割合を記憶手段に設定する。例えば平衡解除手段１ｈは、一方の経路（経路＃１）の転送確率を８０％、他方の経路（経路＃２）転送確率を２０％とする。
【００２３】
このようなデータ転送装置１によれば、各経路の利用割合が平衡状態となってしまっても、平衡解除手段１ｈによって、各経路の利用割合として、偏った割合が設定される。すると、転送手段１ｅが各経路にデータを転送するデータ量についても、経路間で偏りが生じる。経路を転送するデータ量の偏りの度合いが増幅されて中継装置３，４で誘引力値が計算され、集約手段１ｆに渡される。すると、集約手段１ｆにより、経路を転送するデータ量の偏りの度合いが強められる。その後、誘引力値に応じた経路を転送するデータ量の偏りの度合いの強化が集約手段１ｆで繰り返されることで、データ受信装置２宛のデータ転送に利用する経路が、単一の経路に集約される。
【００２４】
このように平衡状態になったときには、平衡解除手段１ｈによって平衡状態を崩すことができ、自律制御でトラヒックを集約させることが可能となる。
なお、平衡解除手段１ｈは、データ受信装置２宛のデータ転送が平衡状態と判断され、かつ複数の経路のいずれかで輻輳の予兆が検出されていない場合に、複数の経路それぞれへデータを送出する割合に偏りを持たせるようにすることもできる。これにより、輻輳抑制制御と平衡解除制御とのうち輻輳抑制制御を優先し、ネットワークの信頼性を高めることができる。
【００２５】
また平衡解除手段１ｈは、データ受信装置宛のデータ転送が平衡状態と判断されてからの待ち時間を決定し、その待ち時間経過後に、複数の経路それぞれへデータを送出する割合に偏りを持たせることもできる。例えば平衡解除手段１ｈは、ランダムに生成した時間を待ち時間に決定する。これにより、データ転送装置１以外にもデータ受信装置２を宛先とするデータ転送を行う装置が平衡状態となった場合に、複数の装置が同時にデータ転送の割合を変更することを抑制できる。すなわち、複数の装置が同時にデータ転送の割合を大きく変えると、ネットワーク上で輻輳が発生する危険性が高まってしまう。データ転送の割合を変更する時期をずらすことで、輻輳の発生を抑制できる。
【００２６】
なお待ち時間を決定する場合、平衡解除手段１ｈは、データ受信装置２宛のデータ転送が平衡状態となった場合、データ受信装置２に対して平衡状態になったことを通知し、その通知に対するデータ受信装置２からの応答内容に応じて、待ち時間を決定してもよい。例えば、平衡解除手段１ｈは、データ受信装置２に対して平衡状態になったことを通知した複数の装置（平衡状態装置）をデータ受信装置２宛のトラヒック量によって順位付けしたときの、データ転送装置１の順位をデータ受信装置２から取得する。そして平衡解除手段１ｈは、取得した順位に応じて待ち時間を決定することができる。このようにデータ受信装置２からの情報に基づいて待ち時間を決定すれば、他の平衡状態装置との間で待ち時間が同じになることを抑制することができる。その結果、複数の装置が同時にデータ転送の割合を変更することが抑制され、輻輳の発生も抑制される。しかも、トラヒック量の順位付け情報を通知することで、トラヒック量の降順あるいは昇順に平衡解除動作を実施するよう制御できる。降順（トラヒック量の多い順）にすると、バランスを早く崩せる可能性が高い。昇順（トラヒック量の少ない順）にすると、輻輳の発生などによる品質劣化のリスクを低くできる。ネットワークに求められる信頼性や省電力化の必要性に応じて、適切な平衡解除動作実施順を決定可能となる。
【００２７】
また、平衡判定手段１ｇは、平衡状態となった後に、データ受信装置２宛のデータ転送が所定以上の偏りを持った割合で複数の経路へ送出されている場合、平衡状態が解消したものと判定することができる。この場合、平衡解除手段１ｈは、データ受信装置２宛のデータ転送が平衡状態と判断され、かつ待ち時間経過前に平衡状態が解消していない場合に、複数の経路それぞれへデータを送出する割合に偏りを持たせる。これにより、不要な平衡解除動作が実行されることによる輻輳の発生を抑止することができる。
【００２８】
また平衡解除手段１ｈは、データ受信装置２に対して平衡状態になったことを通知し、通知に対するデータ受信装置からの応答内容に応じて、複数の経路それぞれへデータを送出する割合の偏り度合いを決定することができる。例えば、平衡解除手段１ｈは、データ受信装置２に対して平衡状態になったことを通知した複数の平衡状態装置をデータ受信装置２宛のトラヒック量によって順位付けしたときの、データ転送装置の順位をデータ受信装置２から取得する。そして平衡解除手段１ｈは、取得した順位に応じて複数の経路それぞれの利用割合の偏り度合いを決定する。このように、データ受信装置２からの情報に応じて複数の経路それぞれの利用割合の偏り度合いを決定することで、輻輳の発生を抑制しながら、短期間でトラヒックを集約できるような、適切な偏り度合いを設定することができる。
【００２９】
また利用割合の偏り度合いを決定する場合、平衡解除手段１ｈは、複数の平衡状態装置のうち、データ転送装置１の複数の経路と少なくとも一部が重複する経路でデータ受信装置２へデータを転送する関連装置の情報を用いることができる。例えば、平衡解除手段１ｈは、関連装置をデータ受信装置２宛のトラヒック量によって順位付けしたときのデータ転送装置１の順位と、データ転送装置１に対する関連装置の数とをデータ受信装置２から取得する。そして平衡解除手段１ｈは、取得した関連装置の数と順位とに応じて複数の経路それぞれの利用割合の偏り度合いを決定する。関連装置が多い場合には、データ転送装置１で利用割合を変更しても、その変更によるネットワーク全体への影響が少ないと判断できる。そこで関連装置が多い場合には、利用割合の変更時の割合の偏りの度合いを大きめにし、早期にトラヒックを集約させることができる。
【００３０】
〔第２の実施の形態〕
次に、第２の実施の形態について説明する。第１の実施の形態では、データ転送の技術として説明したが、多くのネットワークではパケットによってデータ転送が行われる。そこで、第２の実施の形態では、ネットワークに配置されたルータでパケットを転送する場合を例に採り、適切なパケット転送経路の振り分け技術について説明する。なお、以下の説明では、ネットワーク内でパケットの転送を行うルータを、ノードと呼ぶこととする。
【００３１】
図２は、第２の実施の形態のシステム構成例を示す図である。ネットワーク１０には、複数のノード１００，２００，３００，４００，５００が含まれている。
ネットワーク１０に含まれるノードのうち、ノード１００，２００，３００は、それぞれ他のネットワーク２１〜２３に接続されている。ノード１００，２００，３００は、ネットワーク１０内でのトラヒックの転送に加え、他のネットワークから入力されるトラヒックや他のネットワークへ出力するトラヒックの転送を行うノードとして機能する。このような他のネットワークと間のトラヒックの転送を行うノード１００，２００，３００を、特にエッジノードと呼ぶ。
【００３２】
エッジノードのうち、他のネットワークから流入したトラヒックを、ネットワーク１０を介して転送するノードを入口ノードと呼ぶ。また、エッジノードのうち、ネットワーク１０を介して転送されてきたトラヒックを他のネットワークへ送出するノードを出口ノードと呼ぶ。出口ノードは、図１に示したデータ受信装置でもある。エッジノードは、トラヒックの転送方向に応じて、入口ノードとして機能したり、出口ノードとして機能したりする。
【００３３】
ネットワーク１０に含まれるノードのうち、ノード４００，５００は、ネットワーク１０内のトラヒックを転送する。このようなネットワーク１０内でのトラヒックの転送を行うノード４００，５００を、特に中継ノードと呼ぶ。ノード４００，５００は、共にノード１００，２００，３００に接続されている。そしてノード４００，５００は、ノード１００，２００，３００間のトラヒックを転送する。
【００３４】
各ノードには、ネットワーク１０上で識別するためのＩＤが付与されている。ノード１００のＩＤは「１」である。ノード２００のＩＤは「２」である。ノード３００のＩＤは「３」である。ノード４００のＩＤは「４」である。ノード５００のＩＤは「５」である。
【００３５】
ネットワーク１０内では、各ノードが、例えば個々のパケット単位で、伝送経路を選択する。なお、エッジノードとして機能しているノードは、ネットワーク１０内でのパケットの中継をするため、中継ノードとしての機能も兼ね備える。
【００３６】
また各ノードは、トラヒックの流入が一定時間途絶えると、スリープモードに移行する。スリープモードでは、ノードの多くの機能が停止し、消費電力が低く抑えられる。ただしスリープモードであっても、制御パケットの転送に必要な機能は動作し続ける。なお、スリープモードは、省電力モードの一例である。例えばノードへのトラヒックの流入が一定時間途絶えた場合、省電力モードとして、該当ノードを、動作周波数を低下させる低電力モードに移行させることも可能である。
【００３７】
図２に示したような構成により、ネットワーク１０内でトラヒックが転送される。第２の実施の形態では、ノード１００，２００に流入したトラヒックを、ノード３００に転送する場合を想定する。ネットワークに流入したトラヒックは、入口となるノード１００，２００に予め定義された経路で、出口となるノード３００に転送される。このような入口のノードから出口のノードまでのトラヒックの経路を「パス」と呼ぶ。第２の実施の形態において、トラヒックが他のネットワーク２１，２２から流入するノード１００，２００は、入口ノードとして機能する。トラヒックを他のネットワーク２３へ送出させるノード３００は、出口ノードとして機能する。トラヒックをネットワーク１０内で中継するノード４００，５００は、中継ノードとして機能する。入口ノードとして機能するノード１００，２００は、流入したトラヒックを、予め設定されたパスに所定の転送確率で分配する。
【００３８】
図３は、第２の実施の形態に用いるノードのハードウェアの一構成例を示す図である。ノード１００は、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０８を介してＲＡＭ（Random Access Memory）１０２と複数の周辺機器が接続されている。
【００３９】
ＲＡＭ１０２は、ノード１００の主記憶装置として使用される。ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。
【００４０】
バス１０８に接続されている周辺機器としては、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、および通信インタフェース１０７ａ，１０７ｂ，１０７ｃ，１０７ｄ，１０７ｅがある。
【００４１】
ＨＤＤ１０３は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、ノード１００の二次記憶装置として使用される。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【００４２】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。モニタ１１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００４３】
入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号をＣＰＵ１０１に送信する。なお、マウス１３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００４４】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク１４に記録されたデータの読み取りを行う。光ディスク１４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク１４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００４５】
通信インタフェース１０７ａは、ノード４００に接続されている。通信インタフェース１０７ａは、ノード４００との間でデータの送受信を行う。通信インタフェース１０７ｂは、ノード５００に接続されている。通信インタフェース１０７ｂは、ノード５００との間でデータの送受信を行う。通信インタフェース１０７ｃは、ネットワーク２１に接続されている。通信インタフェース１０７ｃは、ネットワーク２１を介したデータの送受信を行う。
【００４６】
以上のようなハードウェア構成によって、第２の実施の形態の処理機能を実現することができる。図３にはノード１００のハードウェア構成例を示したが、他のノード２００，３００，４００，５００も同様のハードウェア構成で実現することができる。
【００４７】
このようなシステムの各ノード１００，２００，３００，４００，５００は、連携して、集約制御、輻輳抑制制御、および平衡解除制御を行う。
まず、集約制御について説明する。
【００４８】
図４は、集約制御の一例を示す図である。図４の例では、ノード１００，２００に流入したトラヒックをノード３００に転送する場合を想定している。第２の実施の形態における集約制御では、入口ノードとして機能するノード１００，２００がパケットを転送するパスの誘引力を設定する。誘引力とは、ネットワーク上を転送されるトラヒックの集約を促進するための数値である。誘引力が大きいパスに、より多くのトラヒックが振り分けられる。
【００４９】
図４の例では、ノード１００には、ノード３００宛のトラヒックのパスとして、ノード４００を経由するパス３１と、ノード５００を経由するパス３２とが設定されている。ここで、パス３１の識別子は「Ａ−１」、パス３２の識別子は「Ａ−２」である。また、ノード２００には、ノード３００宛のトラヒックのパスとして、ノード４００を経由するパス３３と、ノード５００を経由するパス３４とが設定されている。ここで、パス３３の識別子は「Ｂ−１」、パス３４の識別子は「Ｂ−２」である。
【００５０】
図４の例では、各パス３１〜３４のトラヒック量を、パスを示す矢印の太さで示している。すなわち、パス３１の方がパス３２よりもトラヒック量が多く、パス３３の方がパス３４よりもトラヒック量が多い。
【００５１】
ノード１００，２００は、トラヒックが多く流れるパスの誘引力を大きくなるように、各パスの誘引力を設定する。すると、ノード１００は、「Ａ−１」のパス３１の誘引力を、「Ａ−２」のパス３２の誘引力よりも大きくする。同様に、ノード２００は、「Ｂ−１」のパス３３の誘引力を、「Ｂ−２」のパス３４の誘引力よりも大きくする。
【００５２】
誘引力が大きなパスには多くのトラヒックが分配され、その結果、そのパスの誘引力がさらに大きくなる。時間の経過と共に、トラヒックの集約度が高められ、最終的には、パス３１とパス３３とにトラヒックが集約される。
【００５３】
誘引力が大きいパスにトラヒックを集約することで、トラヒックを転送していないノード５００が生じる。トラヒックを転送していないノード５００は、流入するトラヒックが無いことを検知して、スリープモードに移行する。
【００５４】
ところで、集約制御は、トラヒックを特定のパスに集めるよう動作するため、全体のトラヒック量が増大した場合、集約されたパス上で輻輳が発生しやすくなる。そこで、輻輳の発生を抑制する制御が行われる。以下、輻輳抑制制御について説明する。
【００５５】
図５は、輻輳抑制制御の一例を示す図である。輻輳抑制制御では、ノード間のリンクごとにトラヒック量を計測する。リンクとは、隣接するノード間の伝送路である。例えば、各ノードは、自己の有するリンクへ送出するトラヒック量を計測する。各ノードには、輻輳の予兆を検知するためのトラヒックの閾値が、リンクごとに設定されている。閾値は、例えば、リンク帯域に対するトラヒックの量（利用率）で指定される。利用率は、例えばトラヒック量をリンク帯域で除算した値である。各ノードは、自己の有するリンクの利用率が閾値を超過した場合、アラームを発生させる。アラームを発生させたノードは、アラームの情報を、利用率が閾値を超過したリンクを経由するパスの入口ノードに対して送信する。
【００５６】
図５の例では、ノード４００とノード３００との間のリンクにおいて、トラヒックが閾値を超過している。この場合、ノード４００がアラームを発生させ、アラームの情報をノード１００とノード２００に送信する。
【００５７】
アラームを受信した入口のノード１００，２００は、アラームが発生したリンクを経由するパスの宛先のノード３００宛のトラヒックを、複数のパスに分散させる。トラヒックを分散させた結果、スリープモードであったノード５００を経由するトラヒックが発生する。その結果、ノード５００が起動（ウェイクアップ）し、パケットの転送を開始する。
【００５８】
なお、ノード１００，２００は、アラームに応じてトラヒックを分散させる場合、均等に分散させずに、ある程度の偏りを維持したまま分散させることができる。例えば、ノード１００は、パス３１へのトラヒックの転送確率を「８０％」、パス３２へのトラヒックの転送確率を「２０％」とする。これにより、輻輳抑制制御が原因となり各パスのトラヒックが平衡状態となることを抑制できる。
【００５９】
しかしながら、各パスのトラヒックが平衡状態となるのを抑制する制御を行っても、平衡状態に陥ることを避けられない場合がある。
図６は、トラヒックの平衡状態発生例を示す図である。図６の例では、すべてのリンクのトラヒック容量は１００ＭＢ、トラヒックの閾値が８０ＭＢであるものとする。また、ノード１００からノード３００宛のトラヒックは、パス３１に集約されている。ノード２００からノード３００宛のトラヒックは、パス３３に集約されている。
【００６０】
このとき、ノード４００からノード３００へのリンクのトラヒック量が８０ＭＢを超過すると、ノード４００でアラームが発生し、輻輳抑制制御が開始される。なお、ノード４００によるアラームの送信は、ノード４００からノード３００へのリンクのトラヒック量が所定値以下になるまで繰り返し行われる。アラームの発生に応じて、ノード１００，２００においてトラヒックが分散される。このとき、ノード１００に流入するノード３００宛のトラヒック量が８０ＭＢを超過し、ノード２００に流入するノード３００宛のトラヒック量が８０ＭＢを超過しているものとする。この場合、ノード５００からノード１００へのリンクにおいてもトラヒック量が閾値を超過する。すると、ノード１００，２００は、各リンクのトラヒック容量は同じであるため、複数のパス３１〜３４に均等にトラヒックを分散させ、可能な限りのトラヒックの転送を行う。これにより、ノード１００からノード３００宛のパス３１，３２のトラヒック量が等しくなり、平衡状態となる。同様に、ノード２００からノード３００宛のパス３３，３４のトラヒック量が等しくなり、平衡状態が発生する。トラヒック量が平衡状態にあると、各パスの誘引力が等しくなる。
【００６１】
その後、ノード１００，２００に流入するトラヒック量が減っても、そのため、各パスの誘引力が等しいままである。集約制御は、誘引力が大きいパスにトラヒックを集約するものであるが、誘引力が均等な場合、特定のパスにトラヒックを集約することができない状況に陥る。すなわち、一度平衡状態が発生すると、誘引力に基づくトラヒックの集約制御だけではトラヒックの平衡状態を解消できない。
【００６２】
そこで、平衡状態が発生すると、平衡解除制御が行われる。
図７は、平衡解除制御の例を示す図である。平衡状態を崩すにあたり、単純に平衡を崩すだけでは、スリープ可能ノードができるようにトラヒックを集約ができない場合がある。また、一度にトラヒック増が発生するリンクで、輻輳が発生し激しい品質劣化を招く場合もあり得る。
【００６３】
「不適切集約例１」では、ノード１００がパス３１にトラヒックを集約し、ノード２００がパス３４にトラヒックを集約している。その結果、ノード４００はパス３１のトラヒックを中継し、ノード５００はパス３４のトラヒックを中継している。そのため、いずれのノードもスリープモードに移行することができない。
【００６４】
「不適切集約例２」では、ノード１００がパス３１にトラヒックを一気に集約し、同時に、ノード２００がパス３３にトラヒックを一気に集約している。その結果、ノード４００からノード３００へのリンクのトラヒックが急激に増加し、輻輳が発生している。輻輳の発生はパケットロストなどを誘発し、ネットワーク全体の品質劣化を招く。
【００６５】
そこで第２の実施の形態では、スリープモードへ移行可能なノードを発生させ、かつトラヒックの急増を引き起こさないように平衡状態を解除する。
「適切集約例」では、ノード１００とノード２００との間で、トラヒック集約の開始時期をずらしている。また、ノード１００とノード２００は、トラヒックの集約を一気に行うのではなく、徐々にトラヒックを集約する。図７の例では、ノード２００が先にトラヒックの集約を行っている。ノード２００は、初期段階では、パス３３へのトラヒックの転送確率を５０％より高く（例えば８０％）し、パス３４へのトラヒックの転送確率を５０％より低く（例えば２０％）する。このとき、一方のパスの転送確率を一気に「１００％」にすることはない。その後、集約制御に基づき、誘引力に応じたトラヒックの振り分けが行われる。すると、トラヒック量が閾値を超過するリンクが発生しない限り、時間の経過と共にトラヒックが集約される。図７の例では、ノード１００に流入したトラヒックは、パス３１に集約され、ノード２００に流入したトラヒックは、パス３３に集約されている。
【００６６】
このように、第２の実施の形態では、あるノード宛のトラヒックが平衡状態に陥った場合に、適切なタイミングで平衡解除を適度に行う仕組みを実現する。以下、第２の実施の形態における各ノードの機能について説明する。
【００６７】
図８は、各ノードの機能を示す図である。ノード１００は、トラヒック制御情報記憶部１１０、トラヒック制御部１２０、転送確率管理部１３０、およびスリープ制御部１４０を有している。
【００６８】
トラヒック制御情報記憶部１１０は、ノード１００に流入するトラヒックの宛先ごとのパス、各パスの転送確率などを記憶する。例えば、ＲＡＭ１０２やＨＤＤ１０３の記憶領域の一部が、トラヒック制御情報記憶部１１０として使用される。なお、ノード１００が中継ノードとして機能する場合、トラヒック制御情報記憶部１１０に、ノード１００を経由するパスの経路情報を登録しておくことができる。この場合、トラヒック制御部１２０は、中継すべきパケットの宛先に応じたパスをトラヒック制御情報記憶部１１０から検出し、検出したパスの経路によって、パケットの転送先を認識できる。
【００６９】
トラヒック制御部１２０は、入力されたパケットを中継する。ノード１００が入口ノードとして機能する場合、トラヒック制御部１２０は、トラヒック制御情報記憶部１１０を参照し、入力されたパケットの宛先に対応するパスの転送確率に応じて、パケットの転送先を決定する。なお、トラヒック制御部１２０は、宛先となる出口ノードへのトラヒックが輻輳抑制制御中の場合、例えば、輻輳が発生したリンクでの容量制限を超過した分のトラヒックを、他のリンクへ振り分ける。また、ノード１００が中継ノードとして機能する場合、トラヒック制御部１２０は、入力されたパケットの宛先に対応するパスをトラヒック制御情報記憶部１１０から検出し、そのパスの経路における出口ノード側に隣接するノードへパケットを転送する。
【００７０】
転送確率管理部１３０は、パスの転送確率を管理する。具体的には、転送確率管理部１３０は、他のノード４００，５００の転送確率管理部４３０との間で、制御パケットを通信する。制御パケットには、各ノードの誘引力、輻輳の予兆を検出した場合のアラーム情報などが含まれる。転送確率管理部１３０は、集約制御を行っている場合、他のノード４００，５００の誘引力や、トラヒック制御部１２０によるトラヒックの振り分け状況に基づいて、各パスの誘引力を計算する。そして、転送確率管理部１３０は、パスの誘引力に基づいて、そのパスの転送確率を計算し、トラヒック制御情報記憶部１１０に格納する。
【００７１】
また転送確率管理部１３０は、他のノード４００，５００からアラーム情報を取得すると、集約制御を停止し、輻輳抑制制御を開始する。輻輳抑制制御では、転送確率管理部１３０は、トラヒック量が閾値を超過したリンクを経由するパスへのトラヒックの一部を、そのパスと同じノード宛のパスに分散させるように、各パスの転送確率を決定する。そして、転送確率管理部１３０は、決定した各パスの転送確率を、トラヒック制御情報記憶部１１０に格納する。
【００７２】
さらに、転送確率管理部１３０は、トラヒック制御部１２０によるトラヒックの分散状況に基づいて、同一宛先の複数のパスの間での平衡状態の発生を検出する。平衡状態が発生した場合、転送確率管理部１３０は、平衡状態となっている複数のパスの平衡解除制御を行う。平衡解除制御では、転送確率管理部１３０は、ランダムな値を生成し、その値に基づいて待ち時間を決定する。転送確率管理部１３０は、待ち時間経過後になっても平衡状態が崩れていなければ、複数のパスのトラヒックに偏りができるように、各パスの転送確率を決定する。そして、転送確率管理部１３０は、決定した各パスの転送確率を、トラヒック制御情報記憶部１１０に格納する。
【００７３】
スリープ制御部１４０は、スリープモードへの移行およびスリープモードから通常モードへの復帰を制御する。例えば、スリープ制御部１４０は、トラヒック制御部１２０によるトラヒック制御を監視し、最後のトラヒック処理からの経過時間を計測する。そして、スリープ制御部１４０は、最後のトラヒック処理からの経過時間が、予め設定されたスリープモード移行時間を超えると、ノード１００をスリープモードに移行させる。スリープ制御部１４０は、他のノードからスリープへの移行を指示するメッセージを受け取った場合にも、ノード１００をスリープモードに移行させる。スリープモードでは、例えば、転送確率管理部１３０における制御パケットの送受信機能を残し、その他のトラヒック制御部１２０などの機能が停止される。また、スリープ制御部１４０は、スリープモード時に通信インタフェース１０７ａ，１０７ｂ，１０７ｃでパケットが受信されると、スリープモードを解除し、通常モードに移行する。通常モードに移行する際には、スリープ制御部１４０は、トラヒック制御部１２０などの停止していた機能を起動させる。
【００７４】
ノード２００は、トラヒック制御情報記憶部２１０、トラヒック制御部２２０、転送確率管理部２３０、およびスリープ制御部２４０を有している。ノード３００は、トラヒック制御情報記憶部３１０、トラヒック制御部３２０、転送確率管理部３３０、およびスリープ制御部３４０を有している。ノード４００は、トラヒック制御情報記憶部４１０、トラヒック制御部４２０、転送確率管理部４３０、およびスリープ制御部４４０を有している。ノード５００は、トラヒック制御情報記憶部５１０、トラヒック制御部５２０、転送確率管理部５３０、およびスリープ制御部５４０を有している。ノード２００，３００，４００，５００内の各要素は、ノード１００内の同名の要素と同じ機能を有している。
【００７５】
このようなシステム構成により、ネットワーク１０の入口ノードへ流入するパケットが、適切なパスで出口ノードに転送され、他のネットワークへ送出される。例えば、ノード１００に流入したパケットは、トラヒック制御部１２０によりノード４００またはノード５００に転送される。またノード２００に流入したパケットは、トラヒック制御部２２０により、ノード４００またはノード５００に転送される。なお、入口となるノード１００，２００は、例えば、転送するパケットにパスの経路情報を付与する。この場合、パケットを受信したノード４００，５００のトラヒック制御部４２０，５２０は、パケットに付与された経路情報に沿ってパケットを転送する。これにより、各パケットは、複数の中継ノードを経由しても、入口ノードで決定したパスに沿って出口ノードに転送される。
【００７６】
なお、トラヒック制御部１２０は、各リンクのトラヒック誘引力が設定される前は、例えばＯＳＰＦ（Open Shortest Path First）やＲＩＰ（Routing Information Protocol）、ＭＰＬＳ（Multi-Protocol Label Switching）などの既存のルーティングプロトコル、パケット転送技術を用いてパケットの振り分けを行う。システムの運用開始直後はトラヒックが無いため、いずれのリンクにも誘引力が発生しない（初期値「０」のまま）。このような初期段階のトラヒックは、トラヒック制御部１２０によって、既存のルーティングプロトコル、パケット転送技術の定義に従って振り分けられる。そのトラヒックが宛先のノードに到達すると、宛先のノードでトラヒック誘引力を含む制御パケットが生成され、他のノードに転送される。その結果、ノード１００においても、リンクに対応付けて誘引力が設定される。その後は、トラヒック制御部１２０は、トラヒック誘引力に基づくパケットやパケットフローの振り分けを行う。
【００７７】
図９は、トラヒック制御情報記憶部のデータ構造例を示す図である。トラヒック制御情報記憶部１１０には、トラヒック制御部１２０がパケットの転送先を決定するために利用する情報が設定される。図９の例では、トラヒック制御情報記憶部１１０には、トラヒック制御テーブル１１１が格納されている。
【００７８】
トラヒック制御テーブル１１１には、宛先、区間、パス、出力インタフェース、経路、転送確率、および輻輳抑制制御の欄が設けられている。
宛先の欄には、パケットの宛先となる出口ノードのノードＩＤが設定される。図９の例では、ノード３００のノードＩＤ「３」が、宛先の欄に設定されている。
【００７９】
区間の欄には、入口ノードと出口ノードとの組を区間と定義し、その区間ＩＤが設定される。図９の例では、ノードＩＤ「１」のノード１００を入口ノード、ノードＩＤ「３」のノード３００を出口ノードとする区間ＩＤ「Ａ」が設定されている。
【００８０】
パスの欄には、宛先のノードにパケットを転送する際に使用可能なパスの識別情報が設定される。例えば区間ＩＤと該当区間のパスの通し番号との組で、パスＩＤが構成される。図９の例では、「Ａ−１」と「Ａ−２」のパスＩＤが設定されている。
【００８１】
出力インタフェースの欄には、パスＩＤに対応するパス上で隣接するノードに接続された通信インタフェースのＩＤ（インタフェースＩＤ）が設定される。
経路の欄には、パスＩＤに対応するパスの経路上のノードが設定される。図９の例では、パスＩＤ「Ａ−１」のパスが、ノードＩＤ「４」のノード４００を中継ノードとする経路であることが示されている。また，パスＩＤ「Ａ−２」のパスが、ノードＩＤ「５」のノード５００を中継ノードとする経路であることが示されている。
【００８２】
転送確率の欄には、パスＩＤで示されるパスの転送確率が設定される。トラヒックが集約されている場合、１つのパスの転送確率が「１００％」となる。
輻輳抑制制御の欄には、宛先ごとに、輻輳抑制制御が行われているか否かを示す情報が設定される。
【００８３】
次に、転送確率管理部１３０の詳細構成について説明する。
図１０は、第２の実施の形態に係る転送確率管理部の詳細構成例を示す図である。転送確率管理部１３０の機能は、大別すると、集約・輻輳抑制制御部１３０ａと平衡制御部１３０ｂとに分けられる。集約・輻輳抑制制御部１３０ａは、集約制御におけるパスの誘引力の計算、および輻輳の予兆を検知したときの輻輳抑制制御の開始指示などを行う。平衡制御部１３０ｂは、１つの区間に対する複数のパスの間でトラヒック量が平衡した場合に、平衡状態を崩すための制御を行う。
【００８４】
集約・輻輳抑制制御部１３０ａは、トラヒック計測部１３１、トラヒック記憶部１３２、誘引力計算部１３３、制御パケット管理部１３４、およびアラーム情報生成部１３５を有する。
【００８５】
トラヒック計測部１３１は、各リンク（隣接するノードとの間の伝送経路）のトラヒック処理量を計測する。具体的には、トラヒック計測部１３１は、トラヒック制御部１２０によるトラヒック制御を監視し、各通信インタフェース１０７ａ，１０７ｂ，１０７ｃへの流入トラヒック量および送出トラヒック量を計測する。トラヒック計測部１３１は、計測したトラヒック量をトラヒック記憶部１３２に格納する。
【００８６】
トラヒック記憶部１３２は、通信インタフェース１０７ａ，１０７ｂ，１０７ｃへの流入トラヒックの量を記憶する記憶機能である。例えば、ＲＡＭ１０２内の記憶領域の一部が、トラヒック記憶部１３２として使用される。
【００８７】
誘引力計算部１３３は、誘引力を適宜計算する。ノード１００が出口ノードとして機能する場合、例えば、誘引力計算部１３３は、流入するリンクの利用率（トラヒック量／リンク帯域）を用いてリンクごとの誘引力を計算する。ノード１００が中継ノードとして機能する場合、例えば、誘引力計算部１３３は、流入するリンクの利用率に加え、出口ノード側に隣接するノードから通知された誘引力を用いて、その誘引力の伝播先となるリンクごとの誘引力を計算する。誘引力の伝播先となるリンクとは、その誘引力を受信したリンク以外のリンクである。例えば誘引力計算部１３３は、以下の式で伝播先となるリンクの誘引力を計算する。
【００８８】
誘引力＝０．５×｛（流入するリンク利用率の和）＋（通知された誘引力）｝×（伝播先となるリンクの流入方向の利用率）      ・・・（１）
０．５を乗算しているのは、通知された誘引力と、ノードへ流入するリンクの利用率の和の平均をとるという意味である。なお、出口ノードでは、通知される誘引力がない。そこで、出口ノードでは以下の式で誘引力を計算する。
【００８９】
誘引力＝（流入するリンク利用率の和）×（伝播先となるリンクの流入方向の利用率）
・・・（２）
なお、出口ノードにおける伝播先となるリンクは、その出口ノードにトラヒックが流入するすべてのリンクである。ノード１００が出口ノードまたは中継ノードとして機能する場合、誘引力計算部１３３が計算した誘引力は、制御パケット管理部１３４に渡される。
【００９０】
ノード１００が入口ノードとして機能する場合、誘引力計算部１３３は、出口ノード側に隣接するノードから通知された誘引力を、その隣接するノードとの間のリンクの誘引力とする。なお、誘引力計算部１３３における各リンクの誘引力の計算では、そのリンクの利用率が大きいほど、誘引力も大きくなる。
【００９１】
ノードが入口ノードとして機能する場合、誘引力計算部１３３は、通知された各リンクの誘引力を、そのリンクを介してトラヒックを流出するパスの誘引力とする。そして誘引力計算部１３３は、パスの誘引力に基づき、そのパスの転送確率を計算する。例えば誘引力計算部１３３は、１００％の値を誘引力に応じて各パスに比例配分する。具体的には、区間が同一のすべてのパスの誘引力の合計値で、その区間の各パスの誘引力を除算し、除算結果をそのパスの転送確率とする。なお、第２の実施の形態では、除算結果を１００倍し、転送確率をパーセンテージで表すものとする。
【００９２】
制御パケット管理部１３４は、制御パケットの生成および転送を管理する。具体的には、制御パケット管理部１３４は、ノード１００が出口ノードとして機能する場合、定期的に生成されるリンクごとの誘引力を誘引力計算部１３３から受け取り、リンクごとの制御パケットを生成する。生成された制御パケットには、各リンクの誘引力が含まれる。そして、制御パケット管理部１３４は、リンクごとの制御パケットを、対応するリンクに接続された通信インタフェースを介して送信する。
【００９３】
また、制御パケット管理部１３４は、ノード１００が中継ノードとして機能する場合、他のノードから送られてきた制御パケットに含まれるトラヒック誘引力を、誘引力計算部１３３に渡す。その後、制御パケット管理部１３４は、伝播先のリンクごとの更新後の誘引力を、誘引力計算部１３３から受け取る。さらに、制御パケット管理部１３４は、受信した制御パケットを複製し、伝播先のリンクごとの制御パケットとする。次に、制御パケット管理部１３４は、伝播先のリンクごとの制御パケットの誘引力を、誘引力計算部１３３により更新された誘引力に更新する。そして、制御パケット管理部１３４は、伝播先のリンクに接続された通信インタフェースを介して、該当する伝播先のリンクに対応する制御パケットを転送する。
【００９４】
さらに、制御パケット管理部１３４は、制御パケットの内容に応じて、輻輳抑制制御の有無をトラヒック制御テーブル１１１に設定する。具体的には、制御パケット管理部１３４は、制御パケット内に、輻輳発生の可能性を示すアラーム情報が含まれている場合、その制御パケットが送られてきたリンクの経路で輻輳の発生の可能性があると判断する。また、制御パケット管理部１３４は、アラーム情報生成部１３５からアラーム情報を受け取った場合にも、輻輳の発生の可能性があると判断する。そして、制御パケット管理部１３４は、トラヒック制御テーブル１１１内の輻輳の発生の可能性があるリンクを経由するパスを有する区間について、輻輳抑制制御ありの情報を設定する。また、制御パケット管理部１３４は、ノード１００が入口ノードとなる区間のいずれのパスにおいても輻輳の発生の可能性が検知されていなければ、トラヒック制御テーブル１１１内の該当区間について、輻輳抑制制御なしの情報を設定する。
【００９５】
制御パケット管理部１３４は、アラーム情報生成部１３５からアラーム情報を受け取った場合には、そのアラーム情報を含む制御パケットを、輻輳の発生の可能性があるリンク以外のリンクへブロードキャストで発信する。この際、制御パケット管理部１３４は、誘引力を通知する制御パケットにアラーム情報を含めて発信することができる。また、制御パケット管理部１３４は、誘引力を通知する制御パケットを待たずにアラーム情報のみを通知する制御パケットを生成して発信することもできる。
【００９６】
アラーム情報生成部１３５は、トラヒック記憶部１３２を監視し、各リンクのトラヒックの利用率が、所定の閾値（トラヒック利用制限値）を超えているか否かを判断する。利用率が閾値を超えたリンクがある場合、アラーム情報生成部１３５はアラーム情報を生成し、制御パケット管理部１３４に渡す。なお、アラーム情報生成部１３５は、リンクの利用率が閾値を超過している間、該当リンクに関するアラーム情報を定期的に生成する。
【００９７】
平衡制御部１３０ｂは、平衡判定部１３６、平衡情報記憶部１３７、および平衡解除部１３８を有する。
平衡判定部１３６は、ノード１００を入口ノードとする各区間の平衡状態の有無を判定する。例えば、平衡判定部１３６は、トラヒック制御情報記憶部１１０を参照し、同一区間の複数のパスの間で平衡状態が所定時間以上継続しているか否かを判定する。平衡状態が所定時間以上継続している場合、平衡判定部１３６は、該当区間が平衡状態にあると判定する。平衡判定部１３６は、平衡状態か否かの判定結果を、平衡情報記憶部１３７に設定する。また、平衡判定部１３６は、平衡状態になった区間について、平衡状態が解消したか否かを判定する。そして、平衡状態が解消すると、平衡判定部１３６は、平衡状態が解消したことを平衡情報記憶部１３７に設定する。
【００９８】
平衡情報記憶部１３７は、宛先ごとの平衡状態の管理情報を記憶する。例えば、ＲＡＭ１０２やＨＤＤ１０３の記憶領域の一部が、平衡情報記憶部１３７として使用される。平衡状態の管理情報には、例えば、平衡状態になっているか否かを示すフラグ、平衡状態の区間の平衡解除処理の実行時刻などが含まれる。
【００９９】
平衡解除部１３８は、平衡状態になった区間の平衡解除処理を行う。例えば、平衡解除部１３８は、平衡状態になった区間の平衡解除動作の実行時刻を決定する。例えば平衡解除部１３８は、ランダムな数値に所定時間を乗算し、待ち時間とする。現在の時刻から待ち時間経過後の時刻が、平衡解除動作の実行時刻である。
【０１００】
そして、平衡解除部１３８は、平衡状態になった区間が平衡解除動作の実行時刻になっても依然として平衡状態であれば、トラヒック制御情報記憶部１１０内の該当区間の各パスに対して、十分に偏りを持たせた転送確率を設定する。第２の実施の形態では、平衡解除時の転送確率としては、予め決められた値を用いるものとする。例えば、平衡状態となった区間に２つのパスが存在する場合、８：２の割合でトラヒックを分散させることが設定される。この場合、一方のパスの転送確率を「８０％」、他方のパスの転送確率を「２０％」とする。なお平衡解除時の転送確率は、予めオペレータの操作入力によって任意の値が設定される。
【０１０１】
次に、転送確率管理部１３０内に保持される情報について詳細に説明する。
図１１は、トラヒック記憶部のデータ構造例を示す図である。トラヒック記憶部１３２には、トラヒック管理テーブル１３２ａが格納されている。トラヒック管理テーブル１３２ａには、通信インタフェース、流入トラヒック量、リンク帯域、送出トラヒック量、トラヒック利用制限値の欄が設けられている。
【０１０２】
通信インタフェースの欄には、ネットワーク１０上の他のノードに接続された通信インタフェースの識別子が設定される。図３に示すように、ノード１００においては、２つの通信インタフェース１０７ａ，１０７ｂがネットワーク１０内の他のノード４００，５００に接続されている。従って、通信インタフェース１０７ａ，１０７ｂの識別子が、入力インタフェースの欄に設定される。
【０１０３】
流入トラヒック量の欄には、対応する通信インタフェースに流入するトラヒック量が設定される。トラヒック量は、１秒当たりの流入データ容量で示される。
リンク帯域の欄には、対応する通信インタフェースを用いて通信されるリンクの最大伝送容量が設定される。リンク帯域は、１秒当たりに流入可能なデータ容量で示される。
【０１０４】
送出トラヒック量の欄には、対応する通信インタフェースを介して送出されるトラヒック量が設定される。トラヒック量は、１秒当たりの送出データ容量で示される。
トラヒック利用制限値の欄には、対応する通信インタフェースを介して、輻輳を発生させずに送出可能なトラヒックの利用率の閾値が予め設定されている。
【０１０５】
図１２は、平衡情報記憶部のデータ構造例を示す図である。平衡情報記憶部１３７には、平衡管理テーブル１３７ａが格納されている。平衡管理テーブル１３７ａには、宛先、区間、分散状態カウンタ、平衡状態フラグ、待ち時間、パス、および平衡解除時転送確率の欄が設けられている。
【０１０６】
宛先の欄には、宛先のノードのノードＩＤが設定される。
区間の欄には、入口ノードであるノード１００から宛先のノードまでの区間の区間ＩＤが設定される。
【０１０７】
分散状態カウンタの欄には、対応する区間のトラヒックが複数のパスに分散された期間を計測するためのカウンタ（分散状態カウンタ）が設定される。例えば、分散状態が１分経過するごとに、分散状態カウンタの値が１ずつカウントアップされる。
【０１０８】
平衡状態フラグの欄には、対応する区間が平衡状態にあるか否かを示すフラグ（平衡状態フラグ）が設定される。例えば、平衡状態でなければ平衡状態フラグに「０」が設定され、平衡状態であれば平衡状態フラグに「１」が設定される。
【０１０９】
待ち時間の欄には、平衡状態になってから平衡解除動作の実行までの待ち時間が設定される。
パスの欄には、対応する区間のトラヒックの転送に使用されるパスのパスＩＤが設定される。
【０１１０】
平衡解除時転送確率の欄には、平衡解除処理を実行した場合の各パスの転送確率が設定される。第２の実施の形態においては、オペレータの操作入力によって予め平衡解除時転送確率が設定されている。
【０１１１】
このような構成により、誘引力や平衡状態の有無に応じた転送確率が設定されると共に、輻輳の予兆の検出が行われる。
次に、平衡制御部１３０ｂで実行される処理についてさらに詳細に説明する。
【０１１２】
図１３は、平衡判定処理の手順を示すフローチャートである。平衡判定処理は、平衡判定部１３６によって繰り返し実行される処理である。以下、図１３に示す処理をステップ番号に沿って説明する。
【０１１３】
［ステップＳ１１］平衡判定部１３６は、トラヒック制御テーブル１１１を参照し、ノード１００を入口ノードとする未処理の区間を１つ選択する。
［ステップＳ１２］平衡判定部１３６は、平衡管理テーブル１３７ａを参照し、選択した区間が既に平衡状態か否かを判断する。具体的には平衡判定部１３６は、選択した区間の平衡状態フラグが「１」であれば、平衡状態であると判断する。平衡判定部１３６は、既に平衡状態であれば、処理をステップＳ１９に進める。平衡判定部１３６は、平衡状態でなければ、処理をステップＳ１３に進める。
【０１１４】
［ステップＳ１３］平衡判定部１３６は、トラヒック制御テーブル１１１を参照し、選択した区間で複数のパスが利用されているか否かを判断する。具体的には、平衡判定部１３６は、転送確率が「０％」以外のパスが２以上あれば、複数のパスが利用されていると判断する。平衡判定部１３６は、複数のパスが利用されている場合、処理をステップＳ１４に進める。平衡判定部１３６は、１つのパスのみが利用されていれば、トラヒックが集約されているものと判断し、処理をステップＳ１７に進める。
【０１１５】
［ステップＳ１４］平衡判定部１３６は、トラヒック制御テーブル１１１を参照し、選択した区間で輻輳抑制制御を実施中か否かを判断する。具体的には、選択した区間に対応する輻輳抑制制御の欄に「あり」と設定されていれば、輻輳抑制制御を実施しているものと判断される。輻輳抑制制御の欄に「なし」と設定されていれば、輻輳抑制制御を実施していないものと判断される。平衡判定部１３６は、輻輳抑制制御を実施中であれば、分散状態を許容すべきと判断し、処理をステップＳ１７に進める。また平衡判定部１３６は、輻輳抑制制御を実施中でなければ、処理をステップＳ１５に進める。
【０１１６】
［ステップＳ１５］平衡判定部１３６は、平衡管理テーブル１３７ａを参照し、選択した区間の分散状態カウンタの値が、予め設定された規定値以上か否かを判断する。平衡判定部１３６は、分散状態カウンタの値が規定値以上であれば、選択した区間が平衡状態であると判断し、処理をステップＳ１６に進める。平衡判定部１３６は、分散状態カウンタの値が規定値未満であれば、処理がステップＳ１８に進められる。
【０１１７】
［ステップＳ１６］平衡判定部１３６は、平衡管理テーブル１３７ａにおける選択した区間の平衡状態フラグを、平衡状態「１」にセットする。
［ステップＳ１７］平衡判定部１３６は、平衡管理テーブル１３７ａにおける選択した区間の分散状態カウンタの値を、ゼロクリアする。ゼロクリアとは、値を「０」に設定することである。その後、処理がステップＳ１９に進められる。
【０１１８】
［ステップＳ１８］平衡判定部１３６は、平衡管理テーブル１３７ａにおける選択した区間の分散状態カウンタの値を１だけカウントアップする。
［ステップＳ１９］平衡判定部１３６は、ノード１００を入口ノードとするすべての区間について処理したか否かを判断する。平衡判定部１３６は、該当区間をすべて処理した場合、処理をステップＳ２０に進める。平衡判定部１３６は、未処理の区間がある場合、処理をステップＳ１１に進める。
【０１１９】
［ステップＳ２０］平衡判定部１３６は、すべての区間を未処理の状態にリセットし、所定時間（例えば１分）待機する。待機時間が経過すると、平衡判定部１３６は、処理をステップＳ１１に進める。
【０１２０】
このようにして、規定時間以上トラヒックの分散状態が継続している区間について、平衡状態であると判定される。すなわち、輻輳抑制制御していないにもかかわらず、規定時間以上にわたって複数のパスを利用している場合（１つのパスに集約されない場合）、平衡状態であると判断される。
【０１２１】
次に、平衡状態と判定された区間について、平衡状態の解消の有無を判定する処理について詳細に説明する。
図１４は、平衡解消判定処理の手順を示すフローチャートである。平衡解消判定処理は、平衡判定部１３６によって繰り返し実行される処理である。以下、図１４に示す処理をステップ番号に沿って説明する。
【０１２２】
［ステップＳ３１］平衡判定部１３６は、平衡管理テーブル１３７ａを参照し、ノード１００を入口ノードとする未処理の区間を１つ選択する。
［ステップＳ３２］平衡判定部１３６は、選択した区間の平衡状態フラグを参照し、平衡状態か否かを判断する。平衡判定部１３６は、平衡状態であれば、処理をステップＳ３３に進める。平衡判定部１３６は、平衡状態でなければ、処理をステップＳ３５に進める。
【０１２３】
［ステップＳ３３］平衡判定部１３６は、トラヒック制御テーブル１１１を参照し、選択した区間の各パスの転送確率が所定値以上偏っているか否かを判断する。例えば、平衡判定部１３６は、転送確率が８０％以上のパスがあれば、転送確率の偏りありと判断する。平衡判定部１３６は、転送確率の所定値以上の偏りがある場合、処理をステップＳ３４に進める。平衡判定部１３６は、転送確率の所定値以上の偏りがない場合、処理をステップＳ３５に進める。
【０１２４】
［ステップＳ３４］平衡判定部１３６は、平衡管理テーブル１３７ａにおける選択区間の平衡状態フラグを解除する（値を「０」に変更する）。また平衡判定部１３６は、選択した区間の待ち時間を削除する。
【０１２５】
［ステップＳ３５］平衡判定部１３６は、ノード１００を入口ノードとするすべての区間について処理したか否かを判断する。平衡判定部１３６は、該当区間をすべて処理した場合、処理をステップＳ３６に進める。平衡判定部１３６は、未処理の区間がある場合、処理をステップＳ３１に進める。
【０１２６】
［ステップＳ３６］平衡判定部１３６は、すべての区間を未処理の状態にリセットし、処理をステップＳ３１に進める。
このように平衡状態が解消された場合、平衡状態フラグが解除される。すなわち、一端平衡状態になっても、待ち時間経過前に平衡状態が解消していれば、平衡解除のための転送確率の変更処理は実行されない。
【０１２７】
次に、平衡解除処理について説明する。
図１５は、平衡解除処理の手順を示すフローチャートである。平衡解除処理は、平衡解除部１３８によって繰り返し実行される。以下、図１５に示す処理をステップ番号に沿って説明する。
【０１２８】
［ステップＳ４１］平衡解除部１３８は、平衡管理テーブル１３７ａを参照し、ノード１００を入口ノードとする未処理の区間を１つ選択する。
［ステップＳ４２］平衡解除部１３８は、平衡管理テーブル１３７ａを参照し、選択した区間が新たに平衡状態になったか否かを判断する。具体的には平衡解除部１３８は、選択した区間の平衡状態フラグが「１」であり、かつ待ち時間が設定されていない場合、新たに平衡状態になったものと判断する。平衡解除部１３８は、新たに平衡状態になった場合、処理をステップＳ４３に進める。平衡解除部１３８は、平衡状態になっていないか、あるいは以前から平衡状態であった場合、処理をステップＳ４４に進める。
【０１２９】
［ステップＳ４３］平衡解除部１３８は、平衡解除動作の実行までの待ち時間を決定する。例えば、平衡解除部１３８は、０分から１０分の間の１分ごと値の１つをランダムに生成し、生成した時間を待ち時間とする。現在の時刻から待ち時間経過後の時刻が、平衡解除動作の実行タイミングである。
【０１３０】
［ステップＳ４４］平衡解除部１３８は、ノード１００を入口ノードとするすべての区間についてステップＳ４１〜Ｓ４３の処理を実施したか否かを判断する。平衡解除部１３８は、該当区間をすべて処理した場合、処理をステップＳ４５に進める。平衡解除部１３８は、未処理の区間がある場合、処理をステップＳ４１に進める。
【０１３１】
［ステップＳ４５］平衡解除部１３８は、すべての区間を未処理の状態にリセットし、処理をステップＳ４６に進める。
［ステップＳ４６］平衡解除部１３８は、平衡管理テーブル１３７ａを参照し、ノード１００を入口ノードとする未処理の区間を１つ選択する。
【０１３２】
［ステップＳ４７］平衡解除部１３８は、平衡管理テーブル１３７ａを参照し、選択した区間が平衡状態か否かを判断する。具体的には平衡解除部１３８は、選択した区間の平衡状態フラグが「１」である場合、平衡状態であると判断する。平衡解除部１３８は、平衡状態である場合、処理をステップＳ４８に進める。平衡解除部１３８は、平衡状態でない場合、処理をステップＳ５０に進める。
【０１３３】
［ステップＳ４８］平衡解除部１３８は、平衡管理テーブル１３７ａを参照し、平衡状態であると判定してから、選択した区間の待ち時間が経過したか否かを判断する。平衡解除部１３８は、待ち時間が経過した場合、処理をステップＳ４９に進める。平衡解除部１３８は、待ち時間が経過していなければ、処理をステップＳ５０に進める。
【０１３４】
［ステップＳ４９］平衡解除部１３８は、選択した区間の各パスの転送確率を、平衡解除時転送確率に変更する。具体的には、平衡解除部１３８は、平衡管理テーブル１３７ａを参照し、選択した区間の各パスの平衡解除時転送確率を取得する。そして、平衡解除部１３８は、トラヒック制御テーブル１１１における選択した区間の各パスの転送確率として、取得した平衡解除時転送確率を設定する。
【０１３５】
［ステップＳ５０］平衡解除部１３８は、ノード１００を入口ノードとするすべての区間についてステップＳ４６〜Ｓ４９の処理を実施したか否かを判断する。平衡解除部１３８は、該当区間をすべて処理した場合、処理をステップＳ５１に進める。平衡解除部１３８は、未処理の区間がある場合、処理をステップＳ４６に進める。
【０１３６】
［ステップＳ５１］平衡解除部１３８は、すべての区間を未処理の状態にリセットし、処理をステップＳ４１に進める。
このようにして、平衡状態に陥った区間についてランダムな時間後の平衡解除動作の実行タイミングが決定され、実行タイミングまで待って平衡解除動作による転送確率の変更処理が実行される。
【０１３７】
なお、図１３〜図１５に示した処理は、他のノード２００，３００，４００，５００においても、そのノードが入口ノードとして機能する場合に実行される。その結果、入口ノードは異なるが宛先が共通の複数の区間が平衡状態に陥った場合でも、各入口ノードにおいて異なる時間に平衡解除が実行される。また、各入口ノードが継続して誘引力による転送確率の更新処理を実行することで、１つの入口ノードで転送確率を偏らせれば、その影響が他の入口ノードにも徐々に伝播する。その結果、徐々にトラヒックが集約される。
【０１３８】
次に、具体例を用いて、平衡状態の解消状況について説明する。
図１６は、トラヒックが分散された状態の例を示す図である。図１６の例では、ノード１００のトラヒック制御テーブル１１１には、ノード３００を宛先とする区間に対して２つのパス「Ａ−１」、「Ａ−２」が設定されている。パス「Ａ−１」は、ノード４００を経由する経路である。「Ａ−２」は、ノード５００を経由する経路である。各パスの転送確率は、共に「５０％」である。
【０１３９】
ノード２００のトラヒック制御テーブル２１１には、ノード３００を宛先とする区間に対して２つのパス「Ｂ−１」、「Ｂ−２」が設定されている。パス「Ｂ−１」は、ノード４００を経由する経路である。「Ｂ−２」は、ノード５００を経由する経路である。各パスの転送確率は、共に「５０％」である。
【０１４０】
なお、図１６に示すトラヒック制御テーブル１１１，２１１では、出力インタフェースと経路との欄は省略されている。また、各ノード間のリンクの容量はすべて１００Ｍｂｐｓであるものとする。
【０１４１】
図１６の例では、時刻「１２：００」に、ノード１００に対し、ノード３００宛の２０Ｍｂｐｓのトラヒックが流入し、ノード２００に対し、ノード３００宛の４０Ｍｂｐｓのトラヒックが流入している。ノード１００の各パス「Ａ−１」，「Ａ−２」の転送確率は均等であるため、ノード１００では、各パスに１０Ｍｂｐｓずつのトラヒックが振り分けられている。またノード２００の各パス「Ｂ−１」，「Ｂ−２」の転送確率も均等であるため、ノード２００では、各パスに２０Ｍｂｐｓずつのトラヒックが振り分けられている。
【０１４２】
このように、各パスの転送確率が均等であると、ノード３００の２つのリンクからに流入するトラヒックも３０Ｍｂｐｓずつで同じである。２つのリンクの容量が同じであるものとすると、リンクの利用率も等しくなる。すると、式（２）に基づいて誘引力が計算されると、ノード３００において計算される各２つのリンクの誘引力は等しくなる。その結果、中継ノードであるノード４００，５００には、ノード３００から同じ値の誘引力が通知される。
【０１４３】
ノード４００，５００は、ノード３００から通知された誘引力と、ノード１００，２００それぞれとの間のリンクの利用率とから、各リンクの誘引力を計算する。ここで、式（１）に基づいて誘引力が計算されるものとする。すると、ノード４００が算出するノード１００から流入するリンクの誘引力と、ノード５００が算出するノード１００から流入するリンクの誘引力とは等しくなる。すると、ノード１００は、ノード４００，５００から同じ値の誘引力を受け取る。その結果、各パスの転送確率は「５０％」ずつで維持されてしまう。ノード２００においても、パスの転送確率は「５０％」ずつで維持される。
【０１４４】
すると、各ノード１００，２００では、分散状態の経過時間が計測される。そして、分散状態が規定時間以上維持されると、各ノード１００，２００は、平衡状態であると判断し、平衡管理テーブルを更新する。
【０１４５】
図１７は、平衡状態と判定したときの平衡管理テーブルの例を示す図である。図１７には、規定時間として５分が設定されており、１分間隔で平衡判定処理が繰り返される場合の例が示してある。
【０１４６】
１分間隔で平衡判定処理が繰り返されると、平衡ノード１００の平衡管理テーブル１３７ａとノード２００の平衡管理テーブル２３７ａとのそれぞれにおいて、分散状態になってから１分経過ごとに、分散状態カウンタがカウントアップされる。そして、５分経過後の１２時０５分に平衡状態であると判定され、平衡状態フラグが「１」に設定される。このとき、分散状態カウンタが「０」にリセットされる。このように、５分以上輻輳抑制制御をしていないにもかかわらずトラヒックが集約されない場合に、平衡状態であると判断される。このようにして、ノード１００が区間「Ａ」の平衡状態を検出し、ノード２００が区間「Ｂ」の平衡状態を検出する。
【０１４７】
平衡状態を検出した各ノード１００，２００は、待ち時間を決定する。すなわち、ノード１００，２００は、０〜１０分の間のランダムな時間を生成し、生成した時間を待ち時間とする。図１７の例では、ノード１００が待ち時間「７分」であり、ノード２００が待ち時間「２分」である。決定された待ち時間は、それぞれのノード１００，２００の平衡管理テーブル１３７ａ，２３７ａに設定される。なお、平衡解除時転送確率は、オペレータにより、確率の比が８：２になるように予め設定されている。
【０１４８】
この結果、２分後の１２時７分に、ノード２００がパス「Ｂ−１」の転送確率を８０％、「Ｂ−２」の転送確率を２０％に変更する。
図１８は、一方のノードが転送確率を変更した例を示す図である。ノード２００が転送確率を変更したことで、ノード２００に流入するトラヒックは、８：２に分散される。その結果、パス「Ｂ−１」で３２Ｍｂｐｓのトラヒックが転送され、パス「Ｂ−２」で８Ｍｂｐｓのトラヒックが転送される。なお、ノード１００は７分後に変更するため、パス「Ａ−１」、「Ａ−２」の転送確率は５０％のままである。
【０１４９】
ノード２００による区間「Ｂ」の転送確率変更により、ノード４００からノード３００へのリンクを流れるトラヒック量は、平衡状態の３０Ｍｂｐｓから４２Ｍｂｐｓに増加している。一方、ノード５００からノード３００へのリンクを流れるトラヒック量は、平衡状態の３０Ｍｂｐｓから１８Ｍｂｐｓへと減少している。すると、平衡解除処理によってトラヒック量に偏りが発生していることが分かる。トラヒック量に偏りがあれば、パスの誘引力に差が発生する。
【０１５０】
図１８に示すネットワークでは、次のような手順でパスの誘引力が決定される。パスの誘引力の計算では、パスの経路を逆にたどるようにリンクの誘引力が順次計算される。例えばパス「Ａ−１」は、ノード１００、ノード４００、ノード３００の順でパケット転送を行う経路である。
【０１５１】
この経路の場合、まずパスの出口ノードであるノード３００で誘引力が計算される。そして、計算された誘引力が、ノード４００に通知される。次にノード４００で、通知された誘引力を更新し、ノード１００へ誘引力を通知する。そして、ノード１００で、通知された誘引力をパス「Ａ−１」の誘引力として決定する。
【０１５２】
出口ノードであるノード３００は、式（２）に従って誘引力を計算する。また中継ノードであるノード４００，５００は、式（１）に従って誘引力を計算する。すると、ノード１００に通知される誘引力を１つの式で表すと、以下の式になる。
【０１５３】
誘引力＝０．５×｛（出口ノードへ流入するリンク利用率の和）×パスの出口ノードに接続するリンク利用率＋中継ノードへ流入するリンク利用率の和｝×パスの入口ノードに接続するリンク利用率      ・・・（３）
式（３）に図１８に示す各リンクのトラヒック量に応じた利用率を代入すると、パス「Ａ−１」とパス「Ａ−２」の誘引力はそれぞれ以下のようになる。
【０１５４】
パス「Ａ−１」の誘引力＝０．５×（（０．４２＋０．１８）×０．４２＋（０．１＋０．３２））×０．１＝０．０３３６
パス「Ａ−２」の誘引力＝０．５×（（０．４２＋０．１８）×０．１８＋（０．１＋０．０８））×０．１＝０．０１４４
なお、誘引力の通知は、制御パケットを用いて定期的に実行される。例えば、図１８の状態から３０秒後にノード１００に対してノード４００，５００から誘引力が通知されてものとする。すると、通知された誘引力に基づいてノード１００において、各パスの転送確率が変更される。誘引力の比で転送確率を算出する場合は、転送確率は以下のように変化する。
【０１５５】
パス「Ａ−１」への転送確率＝０．０３３６÷（０．０３３６＋０．０１４４）×１００＝７０％
パス「Ａ−２」への転送確率＝０．０１４４÷（０．０３３６＋０．０１４４）×１００＝３０％
と変化する。
【０１５６】
図１９は、誘引力に基づく転送確率変更後の状態を示す図である。図１９に示すように、ノード１００においてパス「Ａ−１」の転送確率は「７０％」、パス「Ａ−２」の転送確率は「３０％」となっている。その結果、パス「Ａ−１」へのトラヒック量が１４Ｍｂｐｓに変更され、パス「Ａ−２」へのトラヒック量が６Ｍｂｐｓに変更されている。
【０１５７】
またノード１００による区間「Ａ」の転送確率変更により、ノード４００からノード３００へのリンクを流れるトラヒック量は、４２Ｍｂｐｓから４６Ｍｂｐｓに増加している。一方、ノード５００からノード３００へのリンクを流れるトラヒック量は、１８Ｍｂｐｓから１４Ｍｂｐｓへと減少している。すなわち、トラヒックの集約度合いが高くなっている。
【０１５８】
その後、ノード１００とノード２００とにおいて、定期的に誘引力に基づく転送確率の変更が行われる。図１９の状態から算出されるパス「Ａ−１」、「Ａ−２」、「Ｂ−１」、「Ｂ−２」の誘引力と、転送確率は次のようになる。
【０１５９】
パスＡ−１誘引力＝０．５×（（０．４６＋０．１４）×０．４６＋（０．１４＋０．３２））×０．１４＝０．０５１５２  →［転送確率８８％］
パスＡ−２誘引力＝０．５×（（０．４６＋０．１４）×０．１４＋（０．０６＋０．０８））×０．０６＝０．００６７２  →［転送確率１２％］
パスＢ−１誘引力＝０．５×（（０．４６＋０．１４）×０．４６＋（０．１４＋０．３２））×０．３２＝０．１１８  →［転送確率９３％］
パスＢ−２誘引力＝０．５×（（０．４６＋０．１４）×０．１４＋（０．０６＋０．０８））×０．０８＝０．００９０  →［転送確率７％］
偏りがさらに大きくなって、パス「Ａ−１」，「Ｂ−１」へトラヒックが集約しつつあることが分かる。
【０１６０】
図２０は、集約が進んだ状態を示す図である。図２０に示すように、ノード１００においてパス「Ａ−１」の転送確率は「８８％」、パス「Ａ−２」の転送確率は「１２％」となっている。その結果、パス「Ａ−１」へのトラヒック量が１７．６Ｍｂｐｓに変更され、パス「Ａ−２」へのトラヒック量が２．４Ｍｂｐｓに変更されている。ノード２００においてパス「Ｂ−１」の転送確率は「９３％」、パス「Ｂ−２」の転送確率は「７％」となっている。その結果、パス「Ｂ−１」へのトラヒック量が３７．２Ｍｂｐｓに変更され、パス「Ｂ−２」へのトラヒック量が２．８Ｍｂｐｓに変更されている。
【０１６１】
またノード１００，２００による区間「Ａ」，「Ｂ」の転送確率変更により、ノード４００からノード３００へのリンクを流れるトラヒック量は、４６Ｍｂｐｓから５４．８Ｍｂｐｓに増加している。一方、ノード５００からノード３００へのリンクを流れるトラヒック量は、１４Ｍｂｐｓから５．２Ｍｂｐｓへと減少している。すなわち、トラヒックの集約度合いがさらに高くなっている。
【０１６２】
図２０の状態から、パス「Ａ−１」、「Ａ−２」、「Ｂ−１」、「Ｂ−２」の誘引力と、転送確率を計算すると次のようになる。
パスＡ−１誘引力
＝０．５×（（０．５４８＋０．０５２）×０．５４８＋（０．１７６＋０．３７２））×０．１７６＝０．０４７  →［転送確率９８．７％］
パスＡ−２誘引力
＝０．５×（（０．５４８＋０．０５２）×０．０５２＋（０．０２８＋０．０２４））×０．０２４＝０．００１  →［転送確率１．３％］
パスＢ−１誘引力
＝０．５×（（０．５４８＋０．０５２）×０．５４８＋（０．１７６＋０．３７２））×０．３７２＝０．１６３  →［転送確率９９．３％］
パスＢ−２誘引力
＝０．５×（（０．５４８＋０．０５２）×０．０５２＋（０．０２８＋０．０２４））×０．０２８＝０．００１２  →［転送確率０．７％］
さらに集約が進み、ほとんどパス「Ａ−２」，「Ｂ−２」の転送確率が０％に近付いていることが分かる。あとの変化については省略するが、さらに何度か繰り返すことで、完全に０％となり、１つの経路にトラヒックが集約される。なお、各ノードでは、パスの転送確率の計算結果が所定値以下（例えば１％未満）になった場合、そのパスの転送確率を「０％」にすることもできる。
【０１６３】
このように誘引力に基づく転送確率の更新を繰り返せば、平衡解除動作を区間「Ａ」で行わなくても平衡状態が解消する。図２０の例であれば、すべてのトラヒックが誘引力の大きいパス「Ａ−１」、「Ｂ−１」に次第に集約され、ノード５００がスリープ可能となる。すなわち、平衡状態となった場合、転送確率のバランスを強制的に崩すことで、トラヒックを１つの経路に集約させることができる。そして、トラヒックを集約させることでスリープ可能なノードが発生し、省電力化が促進できる。
【０１６４】
ただし、すべてのトラヒックを集約すると輻輳が発生するケースもある。例えば、区間「Ａ」のトラヒックが４０Ｍｂｐｓ、区間「Ｂ」のトラヒックが６０Ｍｂｐｓの場合である。このような場合、輻輳抑制制御により、平衡状態を解消した上でパス「Ａ−２」、「Ｂ−２」に一部のトラヒックが分散転送される。
【０１６５】
区間「Ｂ」のトラヒックが非常に少なくて、区間「Ｂ」のバランス解除によってトラヒックの偏りがほとんど出ず区間「Ａ」の平衡状態の解消が出来なかった場合にのみ、ノード１００において７分後に予定された区間「Ａ」での解除動作が行われる。
【０１６６】
なお、平衡状態と判定されている区間に関して、平衡解除動作がうまく動作していれば図１４に示した処理により、平衡状態である旨の判定が解除される。
〔第３の実施の形態〕
次に第３の実施の形態について説明する。第３の実施の形態は、入口ノードにおいて平衡状態を検出すると、出口ノードへ平衡状態の発生を通知する。そして、入口ノードは、出口ノードからの応答内容に応じて平衡解除の方法を決定するものである。
【０１６７】
このとき、出口ノードは、複数の入口ノードからの通知に基づいて各入口ノードへの応答内容を決定する。例えば、出口ノードは、各入口ノードからのトラヒック量の順位を応答内容に含める。また、出口ノードは、平衡状態となった複数の区間の経路を比較し、経路が重複している区間同士を関連区間と定義する。関連区間の入口ノード同士が、関連装置である。また、出口ノードは、各入口ノードの区間との間で関連区間となる区間の数（関連区間数）を応答内容に含める。
【０１６８】
入口ノードでは、出口ノードから通知されたトラヒック量の順位に基づいて、平衡解除動作までの待ち時間（転送確率の変更タイミング）を決定する。また、入口ノードでは、出口ノードから通知された関連区間数に基づいて、平衡解除時の各経路の転送確率を決定する。
【０１６９】
図２１は、第３の実施の形態におけるシステム構成例を示す図である。ネットワーク４０には、複数のノード６００，６００ａ，６００ｂ，６００ｃ，６００ｄ，６００ｅ，６００ｆ，６００ｇが含まれている。
【０１７０】
ネットワーク４０に含まれるノードのうち、ノード６００，６００ａ，６００ｂ，６００ｃ，６００ｄ，６００ｅは、それぞれ他のネットワーク４１〜４６に接続されている。ノード６００，６００ａ，６００ｂ，６００ｃ，６００ｄ，６００ｅは、ネットワーク４０内でのトラヒックの転送に加え、他のネットワークから入力されるトラヒックや他のネットワークへ出力するトラヒックの転送を行うエッジノードである。
【０１７１】
ネットワーク４０に含まれるノードのうち、ノード６００ｆ，６００ｇは、ネットワーク４０内のトラヒックを転送する中継ノードである。ノード６００ｆ，６００ｇは、共にノード６００，６００ａ，６００ｂ，６００ｃ，６００ｄ，６００ｅに接続されている。そしてノード６００ｆ，６００ｇは、ノード６００，６００ａ，６００ｂ，６００ｃ，６００ｄ，６００ｅ間のトラヒックを転送する。
【０１７２】
各ノードには、ネットワーク４０上で識別するためのＩＤが付与されている。ノード６００のＩＤは「１」である。ノード６００ａのＩＤは「２」である。ノード６００ｂのＩＤは「３」である。ノード６００ｃのＩＤは「４」である。ノード６００ｄのＩＤは「５」である。ノード６００ｅのＩＤは「６」である。ノード６００ｆのＩＤは「７」である。ノード６００ｇのＩＤは「８」である。
【０１７３】
図２２は、第３の実施の形態に係るノードの機能を示すブロック図である。ノード６００は、トラヒック制御情報記憶部６１０、トラヒック制御部６２０、転送確率管理部６３０、およびスリープ制御部６４０を有する。このうち、トラヒック制御情報記憶部６１０、トラヒック制御部６２０、およびスリープ制御部６４０については、第２の実施の形態の図８や図１０などに示した要素のうちの同名の要素と同じ機能を有している。
【０１７４】
転送確率管理部６３０の機能は、大別すると、制御パケット管理部６３１、集約・輻輳抑制制御部６３２、入口側平衡制御部６３３、および出口側平衡制御部６３４に分けられる。制御パケット管理部６３１は、集約・輻輳抑制制御部６３２、入口側平衡制御部６３３、または出口側平衡制御部６３４から入力された情報を制御パケットによって、他のノード宛に送信する。また、制御パケット管理部６３１は、他のノードから入力された制御パケットの内容を解析し、その内容を集約・輻輳抑制制御部６３２、入口側平衡制御部６３３、または出口側平衡制御部６３４に入力する。
【０１７５】
集約・輻輳抑制制御部６３２は、集約制御におけるパスの誘引力の計算、および輻輳の予兆を検知したときの輻輳抑制制御の開始指示などを行う。
集約・輻輳抑制制御部６３２は、トラヒック計測部６３２ａ、トラヒック記憶部６３２ｂ、誘引力計算部６３２ｃ、およびアラーム情報生成部６３２ｄを有する。集約・輻輳抑制制御部６３２内の各要素は、図１０に示した第２の実施の形態における同名の要素と同じ機能を有している。
【０１７６】
入口側平衡制御部６３３は、平衡判定部６３３ａ、平衡情報記憶部６３３ｂ、平衡通知メッセージ生成部６３３ｃ、動作定義記憶部６３３ｄおよび平衡解除部６３３ｅを有している。このうち、平衡判定部６３３ａと平衡情報記憶部６３３ｂとについては、図１０に示した第２の実施の形態における同名の要素と同じ機能を有している。
【０１７７】
平衡通知メッセージ生成部６３３ｃは、平衡状態となった区間がある場合に、区間の出口ノードへ平衡状態になったことを通知する通知メッセージを生成する。通知メッセージは、制御パケット管理部６３１を介して出口ノードに渡される。具体的には、平衡通知メッセージ生成部６３３ｃは、平衡情報記憶部６３３ｂを参照して、平衡状態となった区間を検出すると、その区間のトラヒック量（転送量）をトラヒック計測部６３２ａから取得する。区間のトラヒック量は、例えば、ＳＮＭＰ（Simple Network Management Protocol）のＭＩＢ（Management Information Base）から取得することもできる。次に、平衡通知メッセージ生成部６３３ｃは、平衡状態となった区間の区間ＩＤ、その区間のパス、パスを構成するリンク、および転送量などを含む平衡通知メッセージを生成する。そして、平衡通知メッセージ生成部６３３ｃは、平衡通知メッセージを制御パケット管理部６３１に渡す。
【０１７８】
動作定義記憶部６３３ｄは、出口ノードからの応答内容に応じた平衡状態の解除動作の定義内容を記憶している。例えば、ＲＡＭやＨＤＤの記憶領域の一部が動作定義記憶部６３３ｄとして使用される。平衡状態解除の動作定義としては、例えば、トラヒック量の順位に応じた解除処理開始までの価値時間や、関連区間数およびトラヒック量の順位に応じた各パスの転送確率などが定義されている。
【０１７９】
平衡解除部６３３ｅは、制御パケット管理部６３１から平衡通知メッセージに対する応答を受け取ると、動作定義記憶部６３３ｄを参照し、平衡解除処理までの待ち時間や、平衡解除時の各パスの転送確率を決定する。そして、平衡解除部６３３ｅは、決定した待ち時間経過後、決定した転送確率となるように、トラヒック制御情報記憶部６１０内の平衡状態とあったパスの転送確率を更新する。
【０１８０】
出口側平衡制御部６３４は、通知取得部６３４ａ、通知記憶部６３４ｂ、および応答部６３４ｃを有する。
通知取得部６３４ａは、制御パケット管理部６３１を介して平衡通知メッセージを取得する。そして、通知取得部６３４ａは、取得した平衡通知メッセージを通知記憶部６３４ｂに格納する。
【０１８１】
通知記憶部６３４ｂは、入口ノードから送られた平衡通知メッセージを記憶する。例えば、ＲＡＭやＨＤＤの記憶領域の一部が通知記憶部６３４ｂとして使用される。
応答部６３４ｃは、入口ノードから送られた平衡通知メッセージを解析し、各入口ノードに対して平衡解除の方法の決定に利用される情報を応答する。例えば、応答部６３４ｃは、いずれかの入口ノードから平衡通知メッセージを受信すると、その平衡通知メッセージを通知記憶部６３４ｂに格納する。その後、応答部６３４ｃは、所定期間、他の入口ノードから平衡通知メッセージが送られるのを待つ。そして、応答部６３４ｃは、所定期間内に通知記憶部６３４ｂに蓄積された平衡通知メッセージに基づいて、各平衡通知メッセージに対する応答メッセージを生成する。例えば、応答部６３４ｃは、各区間のトラヒック量の順位や、関連区間数を含む応答メッセージを生成する。区間のトラヒック量の順位は、例えばその区間、およびその区間との間で関連区間となる他の区間からなる集合の中でトラヒック量により順位づけしたときの順位を用いる。応答部６３４ｃは、生成した応答メッセージを、制御パケット管理部６３１を介して入口ノードに送信する。
【０１８２】
なお、図２２には、ノード６００の機能を示したが、他のノード６００ａ，６００ｂ，６００ｃ，６００ｄ，６００ｅ，６００ｆ，６００ｇも同様の機能を有している。
ここで、ノード６００ａ，６００ｂ，６００ｃ，６００ｄを入口ノード、ノード６００ｅを出口ノードとする各区間のトラヒックが平衡状態となった場合を想定する。
【０１８３】
次に、動作定義記憶部６３３ｄの内容について詳細に説明する。
図２３は、動作定義記憶部のデータ構造の一例を示す図である。動作定義記憶部６３３ｄには、待ち時間テーブル６３３−１と転送確率テーブル６３３−２とが格納されている。
【０１８４】
待ち時間テーブル６３３−１には、トラヒック量の順位に応じた待ち時間が定義されている。待ち時間テーブル６３３−１には、トラヒック量順位と待ち時間との欄が設けられている。トラヒック量順位の欄には、関連区間をトラヒック量の多い順に並べたときの順位が設定されている。待ち時間の欄には、トラヒック量の順位に対応する待ち時間が設定されている。図２３の例では、トラヒック量の順位が低いほど、待ち時間が短くなる。例えば、トラヒック量の順位が最下位であれば、即時に平衡解除処理を実行することが設定されている。
【０１８５】
転送確率テーブル６３３−２には、関連区間数やトラヒック量順位に応じた各パスの確率比が設定さている。転送確率テーブル６３３−２には、関連区間数、トラヒック量順位、および確率比の欄が設けられている。
【０１８６】
関連区間数の欄には、関連区間数の範囲が設定される。図２３の例では、３未満と３以上との範囲が関連区間数の欄に設定されている。
トラヒック量順位の欄には、トラヒック量の順位が全体のうちのどの程度の位置にあるのかが設定される。図２３の例では、関連区間数が３以上の場合にのみ、トラヒック量の欄に値が設定されている。そして、関連区間をトラヒック量順位に基づいて３つのグループに分類したときに、上位１／３のグループに属するのか、中位１／３のグループに属するのか、下位１／３のグループに属するのかによるグループ分けが示されている。
【０１８７】
確率比の欄には、対応する関連区間数およびトラヒック量順位の場合の該当区間の各パスの確率比が設定されている。図２３の例では、関連区間数が３未満であれば、確率比が８：２になるように各パスの転送確率が設定される。関連区間数が３以上の場合、トラヒック量順位が上位１／３に属する場合には確率比８：２、トラヒック量順位が中位１／３に属する場合には確率比９：１、トラヒック量順位が下位１／３に属する場合には確率比１０：０である。すなわち、トラヒック量順位が低いほど、平衡解除処理で設定する転送確率の偏りが大きくなる。
【０１８８】
なお、他のノード６００ａ，６００ｂ，６００ｃ，６００ｄにも、図２３と同じ内容の待ち時間テーブルおよび転送確率テーブルが格納される。すなわち、各ノード６００，６００ａ，６００ｂ，６００ｃ，６００ｄは、共通の基準によって、待ち時間と転送確率とを決定する。
【０１８９】
図２４は、第３の実施の形態における平衡状態の例を示す図である。図２４の例では、ノード６００からノード６００ｅへは、１０Ｍｂｐｓのトラヒックが転送されている。ノード６００ａからノード６００ｅへは、１４Ｍｂｐｓのトラヒックが転送されている。ノード６００ｂからノード６００ｅへは、２０Ｍｂｐｓのトラヒックが転送されている。ノード６００ｃからノード６００ｅへは、３０Ｍｂｐｓのトラヒックが転送されている。ノード６００ｄからノード６００ｅへは、６０Ｍｂｐｓのトラヒックが転送されている。
【０１９０】
各ノード６００ａ，６００ｂ，６００ｃ，６００ｄからノード６００ｅ宛の区間には、ノード６００ｆを経由するパスと、ノード６００ｇを経由するパスとが存在する。図２４の例では、各ノード６００ａ，６００ｂ，６００ｃ，６００ｄは、各パスに均等にトラヒックを振り分けている。その結果、ノード６００ｆからノード６００ｅへのリンクのトラヒック量は、６７Ｍｂｐｓとなっている。同様に、ノード６００ｇからノード６００ｅへのリンクのトラヒック量も、６７Ｍｂｐｓとなっている。このように、ノード６００ｅ宛のトラヒックが平衡状態に陥っている。
【０１９１】
図２５は、平衡状態のときの入口ノードのトラヒック制御テーブルの内容を示す図である。図２５に示すように、ノード６００，６００ａ，６００ｂ，６００ｃ，６００ｄそれぞれのトラヒック制御テーブル６１１，６１１ａ，６１１ｂ，６１１ｃ，６１１ｄは、区間ごとに、その区間内の経路に対して５０％ずつの転送確率が設定されている。なお、ノード６００を入口ノードとし、ノード６００ｅを出口ノードとする区間の区間ＩＤは「Ａ」である。ノード６００ａを入口ノードとし、ノード６００ｅを出口ノードとする区間の区間ＩＤは「Ｂ」である。ノード６００ｂを入口ノードとし、ノード６００ｅを出口ノードとする区間の区間ＩＤは「Ｃ」である。ノード６００ｃを入口ノードとし、ノード６００ｅを出口ノードとする区間の区間ＩＤは「Ｄ」である。ノード６００ｄを入口ノードとし、ノード６００ｅを出口ノードとする区間の区間ＩＤは「Ｅ」である。
【０１９２】
図２５に示した状態が継続することで、各ノード６００，６００ａ，６００ｂ，６００ｃ，６００ｄでは、ノード６００ｅを宛先とする区間が平衡状態となっていることを検出する。各ノード６００，６００ａ，６００ｂ，６００ｃ，６００ｄで平衡状態が検出されると、ノード６００ｅとのメッセージの送受信を行った後に、平衡解除のための転送確率の変更処理が行われる。
【０１９３】
図２６は、第３の実施の形態における平衡解除処理の手順の一例を示すシーケンス図である。図２６の例では、５台の入口ノードのうち、トラヒック量が最も少ないノード６００とトラヒック量が最も多いノード６００ｄとの処理を代表的に示している。以下、図２６に示す処理をステップ番号に沿って説明する。
【０１９４】
［ステップＳ６１］ノード６００は、区間「Ａ」の平衡状態を検出する。
［ステップＳ６２］ノード６００は、区間「Ａ」が平衡状態となったことを示す平衡通知メッセージを、出口ノードであるノード６００ｅに送信する。
【０１９５】
［ステップＳ６３］ノード６００ｄは、区間「Ｅ」の平衡状態を検出する。
［ステップＳ６４］ノード６００ｄは、区間「Ｅ」が平衡状態となったことを示す平衡通知メッセージを、出口ノードであるノード６００ｅに送信する。
【０１９６】
［ステップＳ６５］ノード６００ｅでは、各ノード６００，・・・，６００ｄから送信された平衡通知メッセージを受信する。ノード６００ｅでは、受信した平衡通知メッセージは、通知記憶部６３４ｂに格納される。なお、平衡通知メッセージが各ノードから送信される時刻にはある程度の差が生じる。そのためノード６００ｅは、最初の平衡通知メッセージを受信してから、所定の期間待ってから次のステップＳ６６に処理を進める。
【０１９７】
［ステップＳ６６］ノード６００ｅは、平衡状態となった区間に関し、トラヒック量の多い順に順位付けを行う。図２４の例であれば、ノード６００ｄの順位が「１」、ノード６００ｃの順位が「２」、ノード６００ｂの順位が「３」、ノード６００ａの順位が「４」、ノード６００の順位が「５」となる。
【０１９８】
［ステップＳ６７］ノード６００ｅは、平衡状態となった区間それぞれに対する関連区間数を判定する。ある区間に対して、少なくとも１つのリンクが共通となる他の区間が、関連する区間である。そして、ある区間に関連する他の区間の数が関連区間数である。例えば図２４の例であれば、ノード６００ｆからノード６００ｅへのリンク、およびノード６００ｇからノード６００ｅへのリンクは、すべての区間に含まれている。すなわち、５つの区間は、少なくとも１つのリンクが共通している。その結果、すべての区間の関連区間数は「４」となる。
【０１９９】
［ステップＳ６８］ノード６００ｅは、平衡通知メッセージを送信した各ノードに対して応答メッセージを送信する。応答メッセージには、送信相手のノードの関連区間数やトラヒック量順位が示されている。
【０２００】
［ステップＳ６９］ノード６００は、応答メッセージを受信する。
［ステップＳ７０］ノード６００は、応答メッセージに示される関連区間数とトラヒック量順位とに基づいて、待ち時間を決定する。図２３に示した待ち時間テーブル６３３−１によれば、トラヒック量順位が最後であるノード６００の待ち時間は「０」である。
【０２０１】
［ステップＳ７１］ノード６００は、応答メッセージに示される関連区間数とトラヒック量順位とに基づいて転送確率を決定する。図２３に示した転送確率テーブル６３３−２によれば、関連区間数が「４」（３以上）で、トラヒック量順位が最後（下位１／３）の場合の確率比は「１０：０」である。そこで、ノード６００では、一方のパスの転送確率を１００％、他方のパスの転送確率を「０％」に変更することが決定される。
【０２０２】
［ステップＳ７２］ノード６００は、待ち時間を設けずに、区間「Ａ」のパス「Ａ−１」、「Ａ−２」の転送確率を、それぞれ「１００％」と「０％」に変更する。
［ステップＳ７３］ノード６００ｄは、応答メッセージを受信する。
【０２０３】
［ステップＳ７４］ノード６００ｄは、応答メッセージに示される関連区間数とトラヒック量順位とに基づいて、待ち時間を決定する。図２３に示した待ち時間テーブル６３３−１によれば、トラヒック量順位が「１」であるノード６００の待ち時間は「４分」である。
【０２０４】
［ステップＳ７５］ノード６００ｄは、応答メッセージに示される関連区間数とトラヒック量順位とに基づいて転送確率を決定する。図２３に示した転送確率テーブル６３３−２によれば、関連区間数が「４」（３以上）で、トラヒック量順位が最初（上位１／３）の場合の確率比は「８：２」である。そこでノード６００ｄでは、一方のパスの転送確率を８０％、他方のパスの転送確率を「２０％」に変更することが決定される。
【０２０５】
［ステップＳ７６］ノード６００ｄは、平衡状態であることを検出してから４分経過後に、依然として平衡状態であるかどうかを確認する。もし既に平衡状態が解消していれば、ステップＳ７７の処理を実行せずに、処理が終了する。平衡状態が解消していなければ、ノード６００ｄは処理をステップＳ７７に進める。
【０２０６】
［ステップＳ７７］ノード６００ｄは、区間「Ｅ」のパス「Ｅ−１」、「Ｅ−２」の転送確率を、それぞれ「８０％」と「２０％」に変更する。
以上のような手順で、平衡状態が解除される。
【０２０７】
図２６に示したように、入口ノードである各ノード６００，６００ａ，６００ｂ，６００ｃ，６００ｄは、平衡判定処理を行い、区間「Ａ」〜「Ｅ」が平衡状態となったと判断すると、平衡通知メッセージを送信する。
【０２０８】
図２７は、入口ノードから出口ノードに通知される平衡通知メッセージの例を示す図である。図２７に示すように、ノード６００，６００ａ，６００ｂ，６００ｃ，６００ｄそれぞれからノード６００ｅに平衡通知メッセージ５１〜５５が送信される。平衡通知メッセージ５１〜５５は、宛先、メッセージ種別、区間、パス・構成リンク、および転送量のフィールドを有している。
【０２０９】
宛先のフィールドには、平衡通知メッセージ５１〜５５の宛先のノードのノードＩＤが設定される。メッセージ種別のフィールドには、平衡通知メッセージであることを示す情報（平衡通知）が設定される。区間のフィールドには、平衡状態と判定された区間の区間ＩＤが設定される。パス・構成リンクのフィールドには、平衡状態となった区間のパスのパスＩＤと、各パスを構成するリンクを示すリンク情報が設定される。リンク情報は、パスの経路を構成する各リンクの、トラヒック送出元のノードのノードＩＤと、トラヒック流入先のノードのノードＩＤとの組で示される。転送量のフィールドには、平衡状態となった区間のトラヒック量が設定される。
【０２１０】
このように、平衡通知メッセージ５１〜５５には、出口ノードであるノード６００ｅ宛のトラヒック量の統計情報が含められる。ノード６００ｅは、これら５つの平衡通知メッセージ５１〜５５を受信する。なお平衡通知メッセージ５１〜５５が同時刻に到達しない場合も十分ありうるので、ノード６００ｅは、最初の平衡通知メッセージを受信してから一定時間、他の平衡通知メッセージの受信を待つ。そして、ノード６００ｅは、一定時間内に受け取ったすべての平衡通知メッセージ５１〜５５の内容から、以下の情報を認識する。
【０２１１】
第１には、トラヒック量の多い順は、ノードＩＤの「５」、「４」、「３」、「２」、「１」の順であることを認識する。
第２には、ノードＩＤ「１」のノード６００と関連する区間は４つある（リンク７→６、８→６が同じ）ことを認識する。同様に、ノードＩＤ「２」、「３」、「４」、「５」のノード６００ａ，６００ｂ，６００ｃ，６００ｄと関連する区間は４つある（リンク７→６、８→６が同じ）ことを認識する。
【０２１２】
そして、ノード６００ｅは、平衡通知メッセージ５１〜５５の通知元に対して、応答メッセージを送信する。
図２８は、応答メッセージの例を示す図である。図２８に示すように、応答メッセージ６１〜６５は、宛先、メッセージ種別、区間、関連区間数、およびトラヒック量順位のフィールドを有している。
【０２１３】
宛先のフィールドには、応答メッセージ６１〜６５の宛先のノードのノードＩＤが設定される。メッセージ種別のフィールドには、平衡通知に対して情報を応答する応答メッセージであることを示す情報（情報応答）が設定される。区間のフィールドには、平衡状態と判定された区間の区間ＩＤが設定される。関連区間数のフィールドには、対応する区間に関連する区間の数（関連区間数）が設定される。トラヒック量順位の欄には、対応する区間のトラヒック量が、ノード６００ｅを宛先として平衡状態となった区間の中で何番目かを示す数値（トラヒック量順位）が設定される。
【０２１４】
入口ノードであるノード６００，６００ａ，６００ｂ，６００ｃ，６００ｄは応答メッセージ６１〜６５を受信する。そしてノード６００，６００ａ，６００ｂ，６００ｃ，６００ｄは、図２３に示した解除方法に従って待ち時間と、変更後のパスの転送確率を決定する。すなわち、トラヒック量の少ないノードほど、平衡解除のための転送確率の変更処理を早く実行する。また、トラヒック量の少ないノードほど、変更後の転送確率の偏り度合いを大きくする。その結果、応答メッセージ６１〜６５がノード６００，６００ａ，６００ｂ，６００ｃ，６００ｄに送信されると、まずノード６００によって転送確率の変更処理が行われる。
【０２１５】
図２９は、ノードＩＤ「１」のノードで転送確率を変更した状態を示す図である。図２９に示すように、ノード６００は、自身が一番少ないトラヒック量であるため、即時に転送確率の比が１０：０になるように、パス「Ａ−１」とパス「Ａ−２」との転送確率を変更する。すなわち、パス「Ａ−１」の転送確率が「１００％」、パス「Ａ−２」の転送確率が「０％」に変更されている。
【０２１６】
図３０は、ノードＩＤ「１」のノードでの転送確率変更後の各リンクのトラヒック量を示す図である。ノード６００で転送確率が変更されたことにより、ノード６００からノード６００ｆへのリンクのトラヒック量は１０Ｍｂｐｓとなり、ノード６００からノード６００ｇへのリンクのトラヒック量は０Ｍｂｐｓとなっている。その結果、ノード６００ｆからノード６００ｅへのリンクのトラヒック量は７２Ｍｂｐｓに増加し、ノード６００ｇからノード６００ｅへのリンクのトラヒック量は６２Ｍｂｐｓに減少している。なお、各リンクの輻輳抑制制御開始の閾値は、８０Ｍｂｐｓであるものとする。
【０２１７】
ノード６００ｆからノード６００ｅへのリンクとノード６００ｇからノード６００ｅへのリンクとは、転送確率を変更した区間「Ａ」との他の区間「Ｂ」、「Ｃ」、「Ｄ」、「Ｅ」それぞれとの間で共通するリンクである。そのため、ノード６００ｆからノード６００ｅへのリンクと、ノード６００ｇからノード６００ｅへのリンクとのトラヒック量の増減により、変更される誘引力は、ノード６００ａ，６００ｂ，６００ｃ，６００ｄに伝播する。そして、ノード６００ａ，６００ｂ，６００ｃ，６００ｄは、伝播した誘引力に応じて、平衡状態となっていた区間の転送確率を変更する。誘引力の計算方法は、第２の実施の形態と同様であるものとする。この場合、区間「Ｂ」、「Ｃ」、「Ｄ」、「Ｅ」のパスの転送確率は次のように変化する。
パス「Ｂ−１」、「Ｃ−１」、「Ｄ−１」、「Ｅ−１」：５２．４％
パス「Ｂ−２」、「Ｃ−２」、「Ｄ−２」、「Ｅ−２」：４７．６％
このような転送確率の変化によって、トラヒック転送量がさらに変化する。
【０２１８】
図３１は、ノードＩＤ「２」、「３」、「４」、「５」のノードでの転送確率変更後の各リンクのトラヒック量を示す図である。ノード６００ａからノード６００ｆへのリンクのトラヒック量は７．３Ｍｂｐｓとなり、ノード６００ａからノード６００ｇへのリンクのトラヒック量は６．７Ｍｂｐｓとなっている。ノード６００ｂからノード６００ｆへのリンクのトラヒック量は１０．５Ｍｂｐｓとなり、ノード６００ｂからノード６００ｇへのリンクのトラヒック量は９．５Ｍｂｐｓとなっている。ノード６００ｃからノード６００ｆへのリンクのトラヒック量は１５．７Ｍｂｐｓとなり、ノード６００ｃからノード６００ｇへのリンクのトラヒック量は１４．３Ｍｂｐｓとなっている。ノード６００ｄからノード６００ｆへのリンクのトラヒック量は３１．４Ｍｂｐｓとなり、ノード６００ｄからノード６００ｇへのリンクのトラヒック量は２８．６Ｍｂｐｓとなっている。その結果、ノード６００ｆからノード６００ｅへのリンクのトラヒック量は７４．９Ｍｂｐｓに増加し、ノード６００ｇからノード６００ｅへのリンクのトラヒック量は５９．１Ｍｂｐｓに減少している。
【０２１９】
図３１に示したように１つの入口ノードで平衡解除動作を実行すると、ネットワーク上の各リンクの誘引力が更新され、転送確率もノード６００ｆを経由するパスのほうが高い転送確率となる方向に変動する。その結果、すべての入口ノードにおいて平衡状態が解除される。
【０２２０】
このように、第３の実施の形態では、トラヒック量の少ない順に平衡解除動作をさせている。しかも関連区間が４と多かったため、トラヒック量の少ないノードの平衡解除動作は、他の区間と共有するリンクでのトラヒック量全体に与える変化としては小さくなる。そのため、確率比を「１０：０」と極端な変更を行っても輻輳の発生の危険性は少ない。また確率比を「１０：０」とする極端な変更を行うことで、トラヒックを早期に集約させることができる。なお、トラヒック量の少ない区間で確率の変更度合いを少なくすると、微小な変化しか引き起こせず、バランスが崩れて収束状態となるまでには時間がかかってしまう。ただし、関連区間がない場合などは、極端な変更をすると大きなトラヒック変動を引き起こす可能性があるため、８：２などといった変動にすることが妥当である。
【０２２１】
また、トラヒック量が多い順に平衡解除動作をさせる場合、たとえば第３の実施の形態において６０Ｍｂｐｓの転送量である区間「Ｅ」で８：２に変更したとすると、リンク「７→６」がいきなり８５Ｍｂｐｓとなってしまい、輻輳抑制制御の閾値を超える。従って、トラヒック量の大きい区間の平衡解除動作をするときは、一時的に品質劣化を引き起こす可能性が高くなるといえる。しかしながら、変化の度合いが大きいとバランスが崩れて収束状態となるまでの時間は短くて済む。これらのパラメータはオペレータのポリシーによって調整可能である。
【０２２２】
〔第４の実施の形態〕
次に第４の実施の形態について説明する。第４の実施の形態は、平衡状態メッセージを受信した出口ノードにおいて、入口ノードでの平衡解除動作のタイミングや変更内容を決定した上で、決定結果を入口ノードに伝えるものである。すなわち、前述の第３の実施の形態では、応答を受けた入口ノードで、バランス解除動作のタイミングや量を決定したが、第４の実施の形態では、これらの決定を出口ノードでまとめて行う。このように出口ノードでまとめて平衡解除動作のタイミングなどを管理することで、トラヒック量の多い順、少ない順に行うというやり方だけではなく、より信頼性の高い制御が可能となる。例えば、品質を劣化させないで平衡状態を解消できるように、平衡解除動作させる区間を選び、変更確率を決定するということが可能である。
【０２２３】
第４の実施の形態では、平衡状態となった各区間の収容可残量を用いて、平衡解除動作を行う入口ノードを決定するものとする。区間の収容可残量は、その区間の各パスの収容可残量のうちの最小の値である。またパスの収容可残量は、そのパスに含まれる各リンクの収容可残量のうちの最小値である。従って、区間の収容可残量は、その区間の各パスに含まれるすべてのリンクの収容可残量のうちの最小値となる。
【０２２４】
ここで、リンクの収容可残量は、各リンクの収容可能量からトラヒック量を減算した値である。
図３２は、収容可残量を説明する図である。リンク７０には、リンク帯域Ｗが決まっている。リンク帯域Ｗは、そのリンク７０で転送可能なトラヒックの最大量である。しかし、リンク帯域Ｗを超えてトラヒックがリンク７０へ流入するすると、輻輳が発生する。そこで、リンク帯域Ｗより小さい値の輻輳閾値Ｃが設定されている。輻輳閾値Ｃは、例えばリンク帯域Ｗ×０．８の値である。トラヒック量Ｔが輻輳閾値Ｃに達すると、輻輳抑制制御が開始される。そのため、輻輳閾値までのトラヒック量が、リンク７０の収容可容量と定義される。そして、収容可容量から実際に流れているトラヒック量Ｔとの差分が、収容可残量である。
【０２２５】
このような収容可残量がリンクごとに計算できる。そして、区間の各パスに含まれるすべてのリンクの収容可残量のうち、最も少ない値がパス収容可残量である。第４の実施の形態では、平衡状態となった各区間の区間収容可残量を用い、輻輳閾値を超えない範囲でできるだけ大きなトラヒックの偏りが発生するように、出口ノードで制御する。
【０２２６】
第４の実施の形態のネットワーク構成は、図２１に示した第３の実施の形態の構成と同じである。
図３３は、第４の実施の形態に係るノードの機能を示すブロック図である。第４の実施の形態の機能の多くは、第３の実施の形態と同じである。そこで、第３の実施の形態と同じ機能の要素には、図２２に示された要素と同じ符号を附し、説明を省略する。
【０２２７】
第３の実施の形態と異なる機能は、制御パケット管理部６３１ａ、収容可残量記憶部６３３ｆ、平衡通知メッセージ生成部６３３ｇ、平衡解除部６３３ｈ、および応答部６３４ｄである。
【０２２８】
制御パケット管理部６３１ａは、第３の実施の形態の制御パケット管理部６３１が有する機能に加え、収容可残量最小値を受け渡す機能を有する。すなわち、第４の実施の形態では、パスを構成するリンク（入口ノードに接続していないリンク）に関する情報を得るための手段がさらに必要となるが、制御パケット管理部６３１ａは、パスに沿って誘引力を通知する手段を備えている。そこで、制御パケット管理部６３１ａは、ノード６００が出口ノードまたは中継ノードとして機能する場合、誘引力を通知する制御パケットに、各リンクの実際のトラヒック情報を含めることで、入口ノードへリンクのトラヒック量を通知する。具体的には、制御パケット管理部６３１ａは、トラヒック記憶部６３２ｂを参照し、流入トラヒック量、リンク帯域、およびトラヒック利用制限値から、各リンクの収容可残量を算出する。そして、制御パケット管理部６３１ａは、ノード６００が出口ノードであれば、算出したリンクの収容可残量をパスの収容可残量として、誘引力と共に制御パケットによって、該当リンクで接続されたノードへ送信する。
【０２２９】
また制御パケット管理部６３１ａは、ノード６００が中継ノードであれば、入口ノード側に隣接するノードとの間のリンクの収容可残量を算出する。そして制御パケット管理部６３１ａは、算出したリンクの収容可残量と、出口ノード側に隣接するノードから取得したパスの収容可残量とを比較する。算出した収容可残量の方が小さければ、制御パケット管理部６３１ａは、算出したリンクの収容可残量の値を、パスの収容可残量として決定する。算出した収容可残量が通知されたパス収容可残量以上であれば、制御パケット管理部６３１ａは、パスの収容可残量を変更しないものと決定する。そして、制御パケット管理部６３１ａは、決定したパスの収容可残量を制御パケットによって、入口ノード側に隣接するノードへ送信する。
【０２３０】
また制御パケット管理部６３１ａは、ノード６００が入口ノードとして機能する場合、隣接するノードから受信した制御パケットからパスの収容可残量を抽出し、収容可残量記憶部６３３ｆに格納する。
【０２３１】
収容可残量記憶部６３３ｆは、ノード６００が入口ノードとして機能する場合に、区間ごとのパスの収容可残量を記憶する。例えばＲＡＭやＨＤＤの記憶領域の一部が、収容可残量記憶部６３３ｆとして使用される。
【０２３２】
平衡通知メッセージ生成部６３３ｇは、第３の実施の形態における平衡通知メッセージ生成部６３３ｃが有する機能に加え、平衡通知メッセージに区間の収容可残量を含める機能を有する。すなわち、平衡通知メッセージ生成部６３３ｇは、平衡状態となった区間を検知した場合には、その区間の各パスの収容可残量を、収容可残量記憶部６３３ｆから取得する。そして平衡通知メッセージ生成部６３３ｇは、取得したパスの収容可残量のうちの最小値を区間の収容可残量として平衡通知メッセージに含め、その平衡通知メッセージを制御パケット管理部６３１ａを介して出口ノードに送信する。
【０２３３】
平衡解除部６３３ｈは、平衡通知メッセージに対する応答メッセージを制御パケット管理部６３１ａから受け取ると、その応答メッセージの内容に応じて平衡解除動作を行う。例えば応答メッセージには、平衡状態となった区間の各パスの転送確率の比（確率比）が示されている。なお、応答メッセージに変更後の確率比が示されていない場合、平衡解除部６３３ｈは、平衡解除動作を実行しない。
【０２３４】
応答部６３４ｄは、制御パケット管理部６３１ａから受信した平衡通知メッセージに基づいて、平衡解除動作を実行するノードを決定する。その際、応答部６３４ｄは、平衡状態となった各区間の収容可残量を参照し、輻輳抑制制御の閾値を超えない範囲で、最も大きなトラヒックの偏りを生じさせることができる区間を選択する。そして応答部６３４ｄは、該当区間の入口ノードを、平衡解除動作を実行するノードに決定する。
【０２３５】
例えば、応答部６３４ｄは、以下の式により、平衡状態（転送確率が５０％ずつ）から転送確率を８０％に変更したときのトラヒック増加予定量Ｙを参照する。
Ｙ＝Ｘ×（０．８−０．５）      ・・・（４）
ここでＸは、区間に流入するトラヒック量である。応答部６３４ｄは、例えば平衡状態となった区間のうちトラヒック増加予定量Ｙが大きい順に選択し、その区間の収容可残量と比較する。応答部６３４ｄは、選択した区間のトラヒック増加量が該当区間の収容可残量未満であれば、選択した区間の入口ノードを、平衡解除動作を実行するノードとする。
【０２３６】
応答部６３４ｄは、平衡解除動作を実行する入口ノード宛に、平衡解除動作時の転送確率の比を指定した応答メッセージを、制御パケット管理部６３１ａを介して送信する。また応答部６３４ｄは、平衡解除動作を実行する入口ノード以外の入口ノードに対しては、平衡解除動作時の転送確率の比を含まない応答メッセージを、制御パケット管理部６３１ａを介して送信する。
【０２３７】
なお、図３３にはノード６００の機能を示したが、他のノード６００ａ，６００ｂ，６００ｃ，６００ｄ，６００ｅ，６００ｆ，６００ｇも同様の機能を有している。
次に、パスの収容可残量を通知するための制御パケット（状態通知制御パケット）のデータフォーマットについて説明する。
【０２３８】
図３４は、状態通知制御パケットの例を示す図である。なお図３４の状態通知制御パケット７１，７２には、図２４に示したトラヒックが発生している場合のパスの収容可残量が示されている。
【０２３９】
図３４に示すように状態通知制御パケット７１，７２には、宛先、区間、パス、誘引力、およびパス収容可残量のフィールドが設けられている。宛先のフィールドには、状態通知制御パケット７１，７２の宛先となるノードのノードＩＤが設定される。区間のフィールドには、状態通知の対象となっている区間の区間ＩＤが設定される。パスのフィードには、状態通知の対象となっているパスのパスＩＤが設定される。誘引力のフィールドには、入口側に隣接するノードとの間のリンクの誘引力が設定される。パス収容可残量のフィールドには、出口ノードから各ノードまでの経路のリンクの収容可残量のうち、最も小さい値が、パスの収容可残量として設定される。
【０２４０】
例えば、出口ノードであるノード６００ｅでは、ノード６００ｆからノード６００ｅへのリンク（リンク「７→６」）の収容可残量が計算される。図２４を参照すると、リンク「７→６」のトラヒック量は６７Ｍｂｐｓである。各リンクのリンク帯域が１００Ｍｂｐｓ、輻輳閾値が８０Ｍｂｐｓであるものとすると、リンク「７→６」の収容可残量は１３Ｍｂｐｓである。そこで、ノード６００ｅからノード６００ｆへ送信される状態通知制御パケット７１には、パスの収容可残量として１３Ｍｂｐｓが設定される。
【０２４１】
中継ノードであるノード６００ｆでは、ノード６００からノード６００ｆへのリンク（リンク「１→７」）の収容可残量が計算される。図２４を参照すると、リンク「１→７」のトラヒック量は５Ｍｂｐｓである。すると、リンク「１→７」の収容可残量は７５Ｍｂｐｓである。ノード６００ｆが算出したリンクの収容可残量は、ノード６００ｅから通知されたパスの収容可残量よりも大きい。そのため、ノード６００ｆは、パスの収容可残量の値を更新せずに、状態通知制御パケット７２をノード６００に送信する。
【０２４２】
なお、誘引力は、各ノードで算出され、状態通知制御パケット７１，７２内の誘引力が更新される。その結果、ノード６００ｅから通知された誘引力「Ｐ１」が、ノード６００ｆで計算した誘引力「Ｐ２」に更新されている。
【０２４３】
状態通知制御パケット７２を受信したノード６００では、パスの収容可残量が収容可残量記憶部６３３ｆに格納される。そして、入口ノードであるノード６００は、状態通知制御パケット７２に基づいて、パス「Ａ−１」のパス収容可能残量が１３Ｍｂｐｓであるということを把握する。
【０２４４】
図３５は、収容可残量記憶部のデータ構造例を示す図である。収容可残量記憶部６３３ｆには、残量管理テーブル６３３−３が格納されている。残量管理テーブル６３３−３には、宛先、区間、パス、およびパス収容可残量の欄が設けられている。
【０２４５】
宛先の欄には、区間の出口ノードのノードＩＤが設定される。区間の欄には，区間の区間ＩＤが設定される。パスの欄には、区間に設定されたパスのパスＩＤが設定される。パス収容可残量の欄には、パスの収容可残量が設定される。
【０２４６】
平衡通知メッセージ生成部６３３ｇは、平衡状態となった区間がある場合、残量管理テーブル６３３−３を参照し、その区間の収容可残量を判断することができる。すなわち、平衡通知メッセージ生成部６３３ｇは、平衡状態となった区間の各パスの収容可残量のうちの最小値を、その区間の収容可残量とする。
【０２４７】
以下、図２４に示したような平衡状態が発生した場合の第４の実施の形態における処理手順について説明する。
図３６は、第４の実施の形態における平衡解除処理の手順の一例を示すシーケンス図である。図３６の例では、５台の入口ノードのうち、ノード６００とノード６００ｃとの処理を代表的に示している。以下、図３６に示す処理をステップ番号に沿って説明する。
【０２４８】
［ステップＳ８１］ノード６００は、区間「Ａ」の平衡状態を検出する。
［ステップＳ８２］ノード６００は、区間「Ａ」が平衡状態となったことを示す平衡通知メッセージを、出口ノードであるノード６００ｅに送信する。この際、平衡通知メッセージには、区間「Ａ」の収容可残量が含められる。
【０２４９】
［ステップＳ８３］ノード６００ｃは、区間「Ｄ」の平衡状態を検出する。
［ステップＳ８４］ノード６００ｃは、区間「Ｄ」が平衡状態となったことを示す平衡通知メッセージを、出口ノードであるノード６００ｅに送信する。この際、平衡通知メッセージには、区間「Ｄ」の収容可残量が含められる。
【０２５０】
［ステップＳ８５］ノード６００ｅでは、各ノード６００，・・・，６００ｄから送信された平衡通知メッセージを受信する。ノード６００ｅでは、受信した平衡通知メッセージは、通知記憶部６３４ｂに格納される。なお、平衡通知メッセージが各ノードから送信される時刻にはある程度の差が生じる。そのためノード６００ｅは、最初の平衡通知メッセージを受信してから、所定の期間待ってから次のステップＳ８６に処理を進める。
【０２５１】
［ステップＳ８６］ノード６００ｅは、平衡状態となった各区間のトラヒック増加予定量を、前述の式（４）を用いて計算する。
［ステップＳ８７］ノード６００ｅは、平衡解除動作を実行させるノードを選択する。具体的にはノード６００ｅは、所定の割合（例えば８：２）でトラヒックを偏らせても輻輳抑制制御が開始されない区間のうち、トラヒック増加予定量が最も大きい区間の入口ノードを、平衡解除動作を実行させるノードとして選択する。図３６の例では、ノード６００ｃが、平衡解除動作を実行させるノードとして選択されている。
【０２５２】
［ステップＳ８８］ノード６００ｅは、平衡通知メッセージを送信した各ノードに対して、応答メッセージを送信する。この際、ノード６００ｅは、平衡解除動作を実行させるノード６００ｃに対しては、変更後の各パスの転送確率の比を指定した応答メッセージを送信する。また、ノード６００ｅは、平衡解除動作を実行させるノード６００ｃ以外のノード６００に対しては、変更後の各パスの転送確率の比を指定しない応答メッセージを送信する。
【０２５３】
［ステップＳ８９］ノード６００は、応答メッセージを受信する。ノード６００が受信した応答メッセージには転送確率の比が示されていないため、ノード６００は平衡解除動作を行わずに処理を終了する。
【０２５４】
［ステップＳ９０］ノード６００ｃは、応答メッセージを受信する。ノード６００ｃが受信した応答メッセージには転送確率の比が示されているため、ノード６００ｃは処理をステップＳ９１に進める。
【０２５５】
［ステップＳ９１］ノード６００ｄは、応答メッセージに示された転送確率の比に従って、区間「Ｄ」の各パスの転送確率を設定する。なお、応答メッセージに待ち時間が示されている場合、ノード６００ｄは、指定された待ち時間経過後に転送確率の変更を行う。
【０２５６】
以上のような手順で、平衡状態が解除される。
次に、入口ノードから出口ノードに送信される平衡通知メッセージの内容について詳細に説明する。
【０２５７】
図３７は、入口ノードから出口ノードに送信される平衡通知メッセージの例を示す図である。図２４に示したような平衡状態が発生すると、入口ノードである各ノード６００，６００ａ，６００ｂ，６００ｃ，６００ｄから出口ノードであるノード６００ｅへ、平衡通知メッセージ８１〜８５が送信される。第４の実施の形態における平衡通知メッセージ８１〜８５は、図２７に示した第３の実施の形態の平衡通知メッセージ５１〜５５に対して、区間収容可残量のフィールドを追加したものである。
【０２５８】
区間収容可残量のフィールドには、平衡状態となった区間の収容可残量が設定される。図３７の例では、すべての区間「Ａ」、「Ｂ」、「Ｃ」、「Ｄ」、「Ｅ」の収容可残量が１３Ｍｂｐｓである。
【０２５９】
このような平衡通知メッセージ８１〜８５を受信したノード６００ｅは、１３Ｍｂｐｓを超えない範囲でなるべくトラヒック量に偏りをつけられるような区間を判断する。平衡解除動作で設定する転送確率の比が８：２であるものとすると、区間ごとに式（４）によりトラヒック増加予定量Ｙが計算される。そして、トラヒック増加予定量Ｙが、区間の収容可能残量である１３Ｍｂｐｓを超えない範囲で最も大きい区間が選択される。
【０２６０】
図３７の例では、区間「Ａ」のトラヒック増加予定量は３Ｍｂｐｓである。区間「Ｂ」のトラヒック増加予定量は４．２Ｍｂｐｓである。区間「Ｃ」のトラヒック増加予定量は６Ｍｂｐｓである。区間「Ｄ」のトラヒック増加予定量は９Ｍｂｐｓである。区間「Ｅ」のトラヒック増加予定量は１８Ｍｂｐｓである。
【０２６１】
すると、区間「Ｅ」については、転送確率の比を８：２（８０％と２０％）にしてしまうと、トラヒック増加予定量が区間の収容可能残量を超えてしまう。そこで、区間「Ｅ」以外の区間のうち、トラヒック増加予定量が最も大きい区間「Ｄ」が選択され、その区間の入口ノードであるノード６００ｃが平衡解除動作を実行させるノードとして決定される。
【０２６２】
そして、ノード６００ｅからノード６００ｃにのみ変更割合と待ち時間を指示する応答メッセージが送信され、ほかのノード６００，６００ａ，６００ｂ，６００ｄには何もしないように指示する応答メッセージが送信される。
【０２６３】
図３８は、第４の実施の形態における応答メッセージの例を示す図である。図３８に示すように、応答メッセージ９１〜９５は、宛先、メッセージ種別、区間、確率比、および待ち時間のフィールドを有している。
【０２６４】
宛先のフィールドには、応答メッセージ９１〜９５の宛先のノードのノードＩＤが設定される。メッセージ種別のフィールドには、平衡通知に対して指示を応答する応答メッセージであることを示す情報（指示応答）が設定される。区間のフィールドには、平衡状態と判定された区間の区間ＩＤが設定される。確率比のフィールドには、均衡解除動作時にパスに設定する転送確率の比が設定される。待ち時間のフィールドには、均衡解除動作を実行するまでの待ち時間が設定される。
【０２６５】
図３８の例では、ノード６００ｃへの応答メッセージ９４のみ、確率比が設定されている。その結果、ノード６００ｃのみが、平衡状態となった区間の各パスの転送確率を、確率比に応じた転送確率（８０％と２０％）に変更する平衡解除動作を実行する。
【０２６６】
なお、ノード６００ｅは、上記の例のように平衡解除動作対象のノードとして１つのノードだけを選んでもよいし、複数のノードを選んでもよい。複数のノードを選んだ場合、ノード６００ｅは、トラヒック増加予定量が大きい区間の入口ノードほど、先に平衡解除動作が実行されるように、応答メッセージの待ち時間に差を設けることができる。
【０２６７】
また、平衡解除動作対象のノードを複数選んだ場合、選んだ各ノードに異なる確率比を通知してもよい。例えば、転送量が少ない区間の入口ノードに対しては、「１０：０」の確率比を通知してもよい。
【０２６８】
以上のようにして、出口ノードにおいて平衡解除動作の詳細な指示を行うことで、通信品質を維持したまま、迅速に平衡状態を解消させることができる。
〔その他の実施の形態〕
なお、上記の例では分散状態カウンタにより、分散状態の経過時間を計測しているが、他の方法で時間を計測してもよい。例えば、分散状態になった時刻を記録し、その時刻からの経過時間を監視してもよい。また、各パスの確率が一定期間変わらない場合に、平衡状態であると判断してもよい。
【０２６９】
なお、パスの誘引力は負荷の多い経路が多くなるようにいろいろな定義が可能である。
また、上記の処理機能は、コンピュータによって実現することができる。その場合、各ノードが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disc）などがある。
【０２７０】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０２７１】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０２７２】
また、上記の処理機能の少なくとも一部を、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現することもできる。
【０２７３】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【０２７４】
以上の実施の形態に開示された技術には、以下の付記に示す技術が含まれる。
（付記１）  ネットワークを介して接続された装置宛のデータを、該ネットワーク上の複数の経路のいずれかを介して転送するデータ転送装置において、
前記複数の経路それぞれを前記装置宛のデータの転送に利用する割合を示す利用割合が記憶された記憶手段を参照し、各経路の利用割合に応じて前記装置宛のデータをいずれかの経路に振り分けて転送する転送手段と、
データ転送の負荷が他よりも少ない経路の前記記憶手段に設定された利用割合を下げていく集約手段と、
利用割合が所定値より大きい経路が複数存在している状態が所定時間以上継続している場合、平衡状態であると判定する平衡判定手段と、
平衡状態と判定された場合、経路間で偏りを持たせた利用割合を前記記憶手段に設定する平衡解除手段と、
を有することを特徴とするデータ転送装置。
【０２７５】
（付記２）  前記平衡解除手段は、前記装置宛のデータ転送が平衡状態と判断され、かつ前記複数の経路のいずれかで輻輳の予兆が検出されていない場合に、経路間で偏りを持たせた利用割合を前記記憶手段に設定する付記１記載のデータ転送装置。
【０２７６】
（付記３）  前記平衡解除手段は、前記装置宛のデータ転送が平衡状態と判断されてからの待ち時間を決定し、該待ち時間経過後に、経路間で偏りを持たせた利用割合を前記記憶手段に設定することを特徴とする付記１または２のいずれかに記載のデータ転送装置。
【０２７７】
（付記４）  前記平衡判定手段は、平衡状態となった後、前記装置宛のデータ転送が所定以上の偏りを持った利用割合で前記複数の経路へ送出されている場合、平衡状態が解消したものと判定し、
前記平衡解除手段は、前記装置宛のデータ転送が平衡状態と判断され、かつ前記待ち時間経過前に平衡状態が解消していない場合に、経路間で偏りを持たせた利用割合を前記記憶手段に設定することを特徴とする付記３記載のデータ転送装置。
【０２７８】
（付記５）  前記平衡解除手段は、ランダムに生成した時間を前記待ち時間に決定することを特徴とする付記３または４のいずれかに記載のデータ転送装置。
（付記６）  前記平衡解除手段は、前記装置宛のデータ転送が平衡状態となった場合、該装置に対して平衡状態になったことを通知し、該通知に対する該装置からの応答内容に応じて、前記待ち時間を決定することを特徴とする付記３または４のいずれかに記載のデータ転送装置。
【０２７９】
（付記７）  前記平衡解除手段は、前記装置に対して平衡状態になったことを通知した複数の平衡状態装置を前記装置宛のトラヒック量によって順位付けしたときの、前記データ転送装置の順位を前記装置から取得し、該順位に応じて待ち時間を決定することを特徴とする付記６記載のデータ転送装置。
【０２８０】
（付記８）  前記平衡解除手段は、前記装置宛のデータ転送が平衡状態となった場合、該装置に対して平衡状態になったことを通知し、通知に対する該装置からの応答内容に応じて、前記複数の経路それぞれの利用割合の偏り度合いを決定することを特徴とする付記１乃至７のいずれかに記載のデータ転送装置。
【０２８１】
（付記９）  前記平衡解除手段は、前記装置に対して平衡状態になったことを通知した複数の平衡状態装置を前記装置宛のトラヒック量によって順位付けしたときの、前記データ転送装置の順位を前記装置から取得し、該順位に応じて前記複数の経路それぞれの利用割合の偏り度合いを決定することを特徴とする付記８記載のデータ転送装置。
【０２８２】
（付記１０）  前記平衡解除手段は、前記複数の平衡状態装置のうち、前記複数の経路と少なくとも一部が重複する経路で前記装置へデータを転送する関連装置を前記装置宛のトラヒック量によって順位付けしたときの前記データ転送装置の順位と、前記関連装置の数とを前記装置から取得し、前記関連装置の数と前記順位とに応じて前記複数の経路それぞれの利用割合の偏り度合いを決定することを特徴とする付記９記載のデータ転送装置。
【０２８３】
（付記１１）  ネットワークを介して接続された装置からのデータを、該ネットワーク上の複数の経路のいずれかを介して受信するデータ受信装置において、
前記データ受信装置宛のデータ転送が、データの転送に利用する割合を示す利用割合が所定値より大きい経路が複数存在している状態が所定時間以上継続した平衡状態であること、および前記データ受信装置宛のデータの転送量が示された通知を複数の装置から取得し、記憶手段に格納する通知取得手段と、
前記記憶手段を参照し、前記複数の装置それぞれから前記データ受信装置宛に送信したデータ量に基づいて前記複数の装置宛の応答内容を決定し、決定した応答内容を前記複数の装置それぞれに対して送信する応答手段と、
を有することを特徴とするデータ受信装置。
【０２８４】
（付記１２）  前記応答手段は、前記複数の装置それぞれから前記データ受信装置宛に送信したデータ量の多い順に該複数の装置を順位付けし、前記複数の装置それぞれに対して順位を応答することを特徴とする付記１１記載のデータ受信装置。
【０２８５】
（付記１３）  前記応答手段は、前記複数の経路と少なくとも一部が重複する経路で前記装置へデータを転送する関連装置を前記装置宛のトラヒック量によって順位付けしたときの前記データ転送装置の順位と、前記関連装置の数とを応答することを特徴とする付記１１記載のデータ受信装置。
【０２８６】
（付記１４）  前記応答手段は、通知を送信した前記複数の装置の少なくともいずれか１つを選択し、該選択した装置に対して、前記データ受信装置宛のデータ転送に利用可能な前記複数の経路それぞれの利用割合に偏りを持たせた該利用割合の変更指示を送信することを特徴とする付記１１記載のデータ受信装置。
【０２８７】
（付記１５）  前記応答手段は、前記データ受信装置宛のデータ転送に利用可能な複数の経路それぞれの利用割合を所定の割合に偏りを持たせた場合に輻輳抑制制御が開始されない装置のうち、該所定の割合に偏りを持たせた場合にトラヒックが増加する経路のトラヒック増加量が多い装置を優先的に選択することを特徴とする付記１４記載のデータ受信装置。
【０２８８】
（付記１６）  ネットワークを介して接続された装置宛のデータを、該ネットワーク上の複数の経路のいずれかを介して転送するデータ転送方法において、
コンピュータが、
前記複数の経路それぞれを前記装置宛のデータの転送に利用する割合を示す利用割合が記憶された記憶手段を参照し、各経路の利用割合に応じて前記装置宛のデータをいずれかの経路に振り分けて転送し、
データ転送の負荷が他よりも少ない経路の前記記憶手段に設定された利用割合を下げていき、
利用割合が所定値より大きい経路が複数存在している状態が所定時間以上継続している場合、平衡状態であると判定し、
平衡状態と判定された場合、経路間で偏りを持たせた利用割合を前記記憶手段に設定する、
ことを特徴とするデータ転送方法。
【０２８９】
（付記１７）  ネットワークを介して接続された装置宛のデータを、該ネットワーク上の複数の経路のいずれかを介して転送する処理をコンピュータに実行させるデータ転送プログラムにおいて、
前記コンピュータに、
前記複数の経路それぞれを前記装置宛のデータの転送に利用する割合を示す利用割合が記憶された記憶手段を参照し、各経路の利用割合に応じて前記装置宛のデータをいずれかの経路に振り分けて転送し、
データ転送の負荷が他よりも少ない経路の前記記憶手段に設定された利用割合を下げていき、
利用割合が所定値より大きい経路が複数存在している状態が所定時間以上継続している場合、平衡状態であると判定し、
平衡状態と判定された場合、経路間で偏りを持たせた利用割合を前記記憶手段に設定する、
処理を実行させることを特徴とするデータ転送プログラム。
【符号の説明】
【０２９０】
１  データ転送装置
１ａ，１ｂ，１ｃ  通信インタフェース
１ｄ  記憶手段
１ｅ  転送手段
１ｆ  集約手段
１ｇ  平衡判定手段
１ｈ  平衡解除手段
２  データ受信手段
３，４  中継装置
【図１】
0005561006.tif 000002
【図２】
0005561006.tif 000003
【図３】
0005561006.tif 000004
【図４】
0005561006.tif 000005
【図５】
0005561006.tif 000006
【図６】
0005561006.tif 000007
【図７】
0005561006.tif 000008
【図８】
0005561006.tif 000009
【図９】
0005561006.tif 000010
【図１０】
0005561006.tif 000011
【図１１】
0005561006.tif 000012
【図１２】
0005561006.tif 000013
【図１３】
0005561006.tif 000014
【図１４】
0005561006.tif 000015
【図１５】
0005561006.tif 000016
【図１６】
0005561006.tif 000017
【図１７】
0005561006.tif 000018
【図１８】
0005561006.tif 000019
【図１９】
0005561006.tif 000020
【図２０】
0005561006.tif 000021
【図２１】
0005561006.tif 000022
【図２２】
0005561006.tif 000023
【図２３】
0005561006.tif 000024
【図２４】
0005561006.tif 000025
【図２５】
0005561006.tif 000026
【図２６】
0005561006.tif 000027
【図２７】
0005561006.tif 000028
【図２８】
0005561006.tif 000029
【図２９】
0005561006.tif 000030
【図３０】
0005561006.tif 000031
【図３１】
0005561006.tif 000032
【図３２】
0005561006.tif 000033
【図３３】
0005561006.tif 000034
【図３４】
0005561006.tif 000035
【図３５】
0005561006.tif 000036
【図３６】
0005561006.tif 000037
【図３７】
0005561006.tif 000038
【図３８】
0005561006.tif 000039