以下、本実施の形態について図面を参照して説明する。
〔第1の実施の形態〕
図1は、第1の実施の形態に係るデータ転送装置の構成を示すブロック図である。データ転送装置1は、通信インタフェース1aを介してデータ受信装置2宛のデータが入力される。また、データ転送装置1は、データ受信装置2への経路に接続された2つの通信インタフェース1b,1cを有する。図1の例では、通信インタフェース1bは、中継装置3を経由してデータ受信装置2にデータを通信する経路に接続されている。また、通信インタフェース1cは、中継装置4を経由してデータ受信装置2にデータを通信する経路に接続されている。ここで、中継装置3を経由するパスを「経路#1」、中継装置4を経由するパスを「経路#2」とする。
データ転送装置1は、通信インタフェース1aを介して入力されたデータ受信装置2宛のデータを転送するために、記憶手段1d、転送手段1e、集約手段1f、平衡判定手段1g、および平衡解除手段1hを有する。
記憶手段1dは、複数の経路それぞれをデータ受信装置2宛のデータの転送に利用する割合を示す利用割合が記憶されている。例えば記憶手段1dには、経路ごとに、転送データ全体のうち該当経路の利用割合が転送確率で示されている。
転送手段1eは、記憶手段1dを参照し、各経路の利用割合に応じて、データ受信装置2宛のデータを各経路に振り分けて転送する。例えば転送手段1eは、転送確率が50%と設定されている経路に対しては、データ受信装置2宛の転送データ全体の50%のデータを、該当経路を介して転送する。
集約手段1fは、データ転送の負荷が他よりも少ない経路の記憶手段1dに設定された利用割合を下げていく。例えば集約手段1fは、経路の負荷を示す指標として、各経路上で隣接する中継装置3,4から、該当経路を使って通信されるデータ量が多いほどより大きな値となる誘引力値を取得する。経路の誘引力値は、その経路を介して転送されるデータ量が増加した場合、データ量の増加割合よりも誘引力値の増加割合の方が大きくなるような計算式で算出される。すなわち誘引力値は、経路を介して転送されるデータ量の増加度合いを増幅させた値であるとともに、経路の負荷が反映されている。例えば、経路に流れるデータ量が10%増加した場合には、その経路の誘引力値は10%より多く増加する。その結果、各経路間の利用割合に偏りがあれば、集約手段1fは、転送するデータ量の多い経路の利用割合を徐々に増加させていき、他の経路の利用割合を徐々に減らす。そして、集約手段1fは、例えば、最終的に1つの経路を除き利用割合を0に設定する。これにより、データ転送に使用する経路を1つに集約させることができる。
平衡判定手段1gは、データ受信装置2宛のデータ転送に関する利用割合が所定値より大きい経路が複数存在している状態が所定時間以上継続している場合、データ受信装置2宛のデータ転送が平衡状態であると判定する。平衡状態と判定するための利用割合の所定値としては、0%以上、50%未満の値が設定される。例えば所定値として0が設定される。例えば、2つの経路の転送確率が共に「50%」の場合、それぞれの経路を介して転送されるデータ量が等しくなる。すると集約手段1fが記憶手段1dに設定する各経路の転送確率も「50%」ずつとなる。このような場合、各経路の利用割合が「50%」ずつで安定し、所定時間以上継続して、利用割合が所定値より大きい経路が複数存在することとなり、平衡状態と判定される。
平衡解除手段1hは、データ受信装置2宛のデータ転送が平衡状態と判定された場合、経路間で偏りを持たせた利用割合を記憶手段に設定する。例えば平衡解除手段1hは、一方の経路(経路#1)の転送確率を80%、他方の経路(経路#2)転送確率を20%とする。
このようなデータ転送装置1によれば、各経路の利用割合が平衡状態となってしまっても、平衡解除手段1hによって、各経路の利用割合として、偏った割合が設定される。すると、転送手段1eが各経路にデータを転送するデータ量についても、経路間で偏りが生じる。経路を転送するデータ量の偏りの度合いが増幅されて中継装置3,4で誘引力値が計算され、集約手段1fに渡される。すると、集約手段1fにより、経路を転送するデータ量の偏りの度合いが強められる。その後、誘引力値に応じた経路を転送するデータ量の偏りの度合いの強化が集約手段1fで繰り返されることで、データ受信装置2宛のデータ転送に利用する経路が、単一の経路に集約される。
このように平衡状態になったときには、平衡解除手段1hによって平衡状態を崩すことができ、自律制御でトラヒックを集約させることが可能となる。
なお、平衡解除手段1hは、データ受信装置2宛のデータ転送が平衡状態と判断され、かつ複数の経路のいずれかで輻輳の予兆が検出されていない場合に、複数の経路それぞれへデータを送出する割合に偏りを持たせるようにすることもできる。これにより、輻輳抑制制御と平衡解除制御とのうち輻輳抑制制御を優先し、ネットワークの信頼性を高めることができる。
また平衡解除手段1hは、データ受信装置宛のデータ転送が平衡状態と判断されてからの待ち時間を決定し、その待ち時間経過後に、複数の経路それぞれへデータを送出する割合に偏りを持たせることもできる。例えば平衡解除手段1hは、ランダムに生成した時間を待ち時間に決定する。これにより、データ転送装置1以外にもデータ受信装置2を宛先とするデータ転送を行う装置が平衡状態となった場合に、複数の装置が同時にデータ転送の割合を変更することを抑制できる。すなわち、複数の装置が同時にデータ転送の割合を大きく変えると、ネットワーク上で輻輳が発生する危険性が高まってしまう。データ転送の割合を変更する時期をずらすことで、輻輳の発生を抑制できる。
なお待ち時間を決定する場合、平衡解除手段1hは、データ受信装置2宛のデータ転送が平衡状態となった場合、データ受信装置2に対して平衡状態になったことを通知し、その通知に対するデータ受信装置2からの応答内容に応じて、待ち時間を決定してもよい。例えば、平衡解除手段1hは、データ受信装置2に対して平衡状態になったことを通知した複数の装置(平衡状態装置)をデータ受信装置2宛のトラヒック量によって順位付けしたときの、データ転送装置1の順位をデータ受信装置2から取得する。そして平衡解除手段1hは、取得した順位に応じて待ち時間を決定することができる。このようにデータ受信装置2からの情報に基づいて待ち時間を決定すれば、他の平衡状態装置との間で待ち時間が同じになることを抑制することができる。その結果、複数の装置が同時にデータ転送の割合を変更することが抑制され、輻輳の発生も抑制される。しかも、トラヒック量の順位付け情報を通知することで、トラヒック量の降順あるいは昇順に平衡解除動作を実施するよう制御できる。降順(トラヒック量の多い順)にすると、バランスを早く崩せる可能性が高い。昇順(トラヒック量の少ない順)にすると、輻輳の発生などによる品質劣化のリスクを低くできる。ネットワークに求められる信頼性や省電力化の必要性に応じて、適切な平衡解除動作実施順を決定可能となる。
また、平衡判定手段1gは、平衡状態となった後に、データ受信装置2宛のデータ転送が所定以上の偏りを持った割合で複数の経路へ送出されている場合、平衡状態が解消したものと判定することができる。この場合、平衡解除手段1hは、データ受信装置2宛のデータ転送が平衡状態と判断され、かつ待ち時間経過前に平衡状態が解消していない場合に、複数の経路それぞれへデータを送出する割合に偏りを持たせる。これにより、不要な平衡解除動作が実行されることによる輻輳の発生を抑止することができる。
また平衡解除手段1hは、データ受信装置2に対して平衡状態になったことを通知し、通知に対するデータ受信装置からの応答内容に応じて、複数の経路それぞれへデータを送出する割合の偏り度合いを決定することができる。例えば、平衡解除手段1hは、データ受信装置2に対して平衡状態になったことを通知した複数の平衡状態装置をデータ受信装置2宛のトラヒック量によって順位付けしたときの、データ転送装置の順位をデータ受信装置2から取得する。そして平衡解除手段1hは、取得した順位に応じて複数の経路それぞれの利用割合の偏り度合いを決定する。このように、データ受信装置2からの情報に応じて複数の経路それぞれの利用割合の偏り度合いを決定することで、輻輳の発生を抑制しながら、短期間でトラヒックを集約できるような、適切な偏り度合いを設定することができる。
また利用割合の偏り度合いを決定する場合、平衡解除手段1hは、複数の平衡状態装置のうち、データ転送装置1の複数の経路と少なくとも一部が重複する経路でデータ受信装置2へデータを転送する関連装置の情報を用いることができる。例えば、平衡解除手段1hは、関連装置をデータ受信装置2宛のトラヒック量によって順位付けしたときのデータ転送装置1の順位と、データ転送装置1に対する関連装置の数とをデータ受信装置2から取得する。そして平衡解除手段1hは、取得した関連装置の数と順位とに応じて複数の経路それぞれの利用割合の偏り度合いを決定する。関連装置が多い場合には、データ転送装置1で利用割合を変更しても、その変更によるネットワーク全体への影響が少ないと判断できる。そこで関連装置が多い場合には、利用割合の変更時の割合の偏りの度合いを大きめにし、早期にトラヒックを集約させることができる。
〔第2の実施の形態〕
次に、第2の実施の形態について説明する。第1の実施の形態では、データ転送の技術として説明したが、多くのネットワークではパケットによってデータ転送が行われる。そこで、第2の実施の形態では、ネットワークに配置されたルータでパケットを転送する場合を例に採り、適切なパケット転送経路の振り分け技術について説明する。なお、以下の説明では、ネットワーク内でパケットの転送を行うルータを、ノードと呼ぶこととする。
図2は、第2の実施の形態のシステム構成例を示す図である。ネットワーク10には、複数のノード100,200,300,400,500が含まれている。
ネットワーク10に含まれるノードのうち、ノード100,200,300は、それぞれ他のネットワーク21〜23に接続されている。ノード100,200,300は、ネットワーク10内でのトラヒックの転送に加え、他のネットワークから入力されるトラヒックや他のネットワークへ出力するトラヒックの転送を行うノードとして機能する。このような他のネットワークと間のトラヒックの転送を行うノード100,200,300を、特にエッジノードと呼ぶ。
エッジノードのうち、他のネットワークから流入したトラヒックを、ネットワーク10を介して転送するノードを入口ノードと呼ぶ。また、エッジノードのうち、ネットワーク10を介して転送されてきたトラヒックを他のネットワークへ送出するノードを出口ノードと呼ぶ。出口ノードは、図1に示したデータ受信装置でもある。エッジノードは、トラヒックの転送方向に応じて、入口ノードとして機能したり、出口ノードとして機能したりする。
ネットワーク10に含まれるノードのうち、ノード400,500は、ネットワーク10内のトラヒックを転送する。このようなネットワーク10内でのトラヒックの転送を行うノード400,500を、特に中継ノードと呼ぶ。ノード400,500は、共にノード100,200,300に接続されている。そしてノード400,500は、ノード100,200,300間のトラヒックを転送する。
各ノードには、ネットワーク10上で識別するためのIDが付与されている。ノード100のIDは「1」である。ノード200のIDは「2」である。ノード300のIDは「3」である。ノード400のIDは「4」である。ノード500のIDは「5」である。
ネットワーク10内では、各ノードが、例えば個々のパケット単位で、伝送経路を選択する。なお、エッジノードとして機能しているノードは、ネットワーク10内でのパケットの中継をするため、中継ノードとしての機能も兼ね備える。
また各ノードは、トラヒックの流入が一定時間途絶えると、スリープモードに移行する。スリープモードでは、ノードの多くの機能が停止し、消費電力が低く抑えられる。ただしスリープモードであっても、制御パケットの転送に必要な機能は動作し続ける。なお、スリープモードは、省電力モードの一例である。例えばノードへのトラヒックの流入が一定時間途絶えた場合、省電力モードとして、該当ノードを、動作周波数を低下させる低電力モードに移行させることも可能である。
図2に示したような構成により、ネットワーク10内でトラヒックが転送される。第2の実施の形態では、ノード100,200に流入したトラヒックを、ノード300に転送する場合を想定する。ネットワークに流入したトラヒックは、入口となるノード100,200に予め定義された経路で、出口となるノード300に転送される。このような入口のノードから出口のノードまでのトラヒックの経路を「パス」と呼ぶ。第2の実施の形態において、トラヒックが他のネットワーク21,22から流入するノード100,200は、入口ノードとして機能する。トラヒックを他のネットワーク23へ送出させるノード300は、出口ノードとして機能する。トラヒックをネットワーク10内で中継するノード400,500は、中継ノードとして機能する。入口ノードとして機能するノード100,200は、流入したトラヒックを、予め設定されたパスに所定の転送確率で分配する。
図3は、第2の実施の形態に用いるノードのハードウェアの一構成例を示す図である。ノード100は、CPU(Central Processing Unit)101によって装置全体が制御されている。CPU101には、バス108を介してRAM(Random Access Memory)102と複数の周辺機器が接続されている。
RAM102は、ノード100の主記憶装置として使用される。RAM102には、CPU101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、CPU101による処理に必要な各種データが格納される。
バス108に接続されている周辺機器としては、ハードディスクドライブ(HDD:Hard Disk Drive)103、グラフィック処理装置104、入力インタフェース105、光学ドライブ装置106、および通信インタフェース107a,107b,107c,107d,107eがある。
HDD103は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103は、ノード100の二次記憶装置として使用される。HDD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
グラフィック処理装置104には、モニタ11が接続されている。グラフィック処理装置104は、CPU101からの命令に従って、画像をモニタ11の画面に表示させる。モニタ11としては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置などがある。
入力インタフェース105には、キーボード12とマウス13とが接続されている。入力インタフェース105は、キーボード12やマウス13から送られてくる信号をCPU101に送信する。なお、マウス13は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
光学ドライブ装置106は、レーザ光などを利用して、光ディスク14に記録されたデータの読み取りを行う。光ディスク14は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク14には、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
通信インタフェース107aは、ノード400に接続されている。通信インタフェース107aは、ノード400との間でデータの送受信を行う。通信インタフェース107bは、ノード500に接続されている。通信インタフェース107bは、ノード500との間でデータの送受信を行う。通信インタフェース107cは、ネットワーク21に接続されている。通信インタフェース107cは、ネットワーク21を介したデータの送受信を行う。
以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。図3にはノード100のハードウェア構成例を示したが、他のノード200,300,400,500も同様のハードウェア構成で実現することができる。
このようなシステムの各ノード100,200,300,400,500は、連携して、集約制御、輻輳抑制制御、および平衡解除制御を行う。
まず、集約制御について説明する。
図4は、集約制御の一例を示す図である。図4の例では、ノード100,200に流入したトラヒックをノード300に転送する場合を想定している。第2の実施の形態における集約制御では、入口ノードとして機能するノード100,200がパケットを転送するパスの誘引力を設定する。誘引力とは、ネットワーク上を転送されるトラヒックの集約を促進するための数値である。誘引力が大きいパスに、より多くのトラヒックが振り分けられる。
図4の例では、ノード100には、ノード300宛のトラヒックのパスとして、ノード400を経由するパス31と、ノード500を経由するパス32とが設定されている。ここで、パス31の識別子は「A−1」、パス32の識別子は「A−2」である。また、ノード200には、ノード300宛のトラヒックのパスとして、ノード400を経由するパス33と、ノード500を経由するパス34とが設定されている。ここで、パス33の識別子は「B−1」、パス34の識別子は「B−2」である。
図4の例では、各パス31〜34のトラヒック量を、パスを示す矢印の太さで示している。すなわち、パス31の方がパス32よりもトラヒック量が多く、パス33の方がパス34よりもトラヒック量が多い。
ノード100,200は、トラヒックが多く流れるパスの誘引力を大きくなるように、各パスの誘引力を設定する。すると、ノード100は、「A−1」のパス31の誘引力を、「A−2」のパス32の誘引力よりも大きくする。同様に、ノード200は、「B−1」のパス33の誘引力を、「B−2」のパス34の誘引力よりも大きくする。
誘引力が大きなパスには多くのトラヒックが分配され、その結果、そのパスの誘引力がさらに大きくなる。時間の経過と共に、トラヒックの集約度が高められ、最終的には、パス31とパス33とにトラヒックが集約される。
誘引力が大きいパスにトラヒックを集約することで、トラヒックを転送していないノード500が生じる。トラヒックを転送していないノード500は、流入するトラヒックが無いことを検知して、スリープモードに移行する。
ところで、集約制御は、トラヒックを特定のパスに集めるよう動作するため、全体のトラヒック量が増大した場合、集約されたパス上で輻輳が発生しやすくなる。そこで、輻輳の発生を抑制する制御が行われる。以下、輻輳抑制制御について説明する。
図5は、輻輳抑制制御の一例を示す図である。輻輳抑制制御では、ノード間のリンクごとにトラヒック量を計測する。リンクとは、隣接するノード間の伝送路である。例えば、各ノードは、自己の有するリンクへ送出するトラヒック量を計測する。各ノードには、輻輳の予兆を検知するためのトラヒックの閾値が、リンクごとに設定されている。閾値は、例えば、リンク帯域に対するトラヒックの量(利用率)で指定される。利用率は、例えばトラヒック量をリンク帯域で除算した値である。各ノードは、自己の有するリンクの利用率が閾値を超過した場合、アラームを発生させる。アラームを発生させたノードは、アラームの情報を、利用率が閾値を超過したリンクを経由するパスの入口ノードに対して送信する。
図5の例では、ノード400とノード300との間のリンクにおいて、トラヒックが閾値を超過している。この場合、ノード400がアラームを発生させ、アラームの情報をノード100とノード200に送信する。
アラームを受信した入口のノード100,200は、アラームが発生したリンクを経由するパスの宛先のノード300宛のトラヒックを、複数のパスに分散させる。トラヒックを分散させた結果、スリープモードであったノード500を経由するトラヒックが発生する。その結果、ノード500が起動(ウェイクアップ)し、パケットの転送を開始する。
なお、ノード100,200は、アラームに応じてトラヒックを分散させる場合、均等に分散させずに、ある程度の偏りを維持したまま分散させることができる。例えば、ノード100は、パス31へのトラヒックの転送確率を「80%」、パス32へのトラヒックの転送確率を「20%」とする。これにより、輻輳抑制制御が原因となり各パスのトラヒックが平衡状態となることを抑制できる。
しかしながら、各パスのトラヒックが平衡状態となるのを抑制する制御を行っても、平衡状態に陥ることを避けられない場合がある。
図6は、トラヒックの平衡状態発生例を示す図である。図6の例では、すべてのリンクのトラヒック容量は100MB、トラヒックの閾値が80MBであるものとする。また、ノード100からノード300宛のトラヒックは、パス31に集約されている。ノード200からノード300宛のトラヒックは、パス33に集約されている。
このとき、ノード400からノード300へのリンクのトラヒック量が80MBを超過すると、ノード400でアラームが発生し、輻輳抑制制御が開始される。なお、ノード400によるアラームの送信は、ノード400からノード300へのリンクのトラヒック量が所定値以下になるまで繰り返し行われる。アラームの発生に応じて、ノード100,200においてトラヒックが分散される。このとき、ノード100に流入するノード300宛のトラヒック量が80MBを超過し、ノード200に流入するノード300宛のトラヒック量が80MBを超過しているものとする。この場合、ノード500からノード100へのリンクにおいてもトラヒック量が閾値を超過する。すると、ノード100,200は、各リンクのトラヒック容量は同じであるため、複数のパス31〜34に均等にトラヒックを分散させ、可能な限りのトラヒックの転送を行う。これにより、ノード100からノード300宛のパス31,32のトラヒック量が等しくなり、平衡状態となる。同様に、ノード200からノード300宛のパス33,34のトラヒック量が等しくなり、平衡状態が発生する。トラヒック量が平衡状態にあると、各パスの誘引力が等しくなる。
その後、ノード100,200に流入するトラヒック量が減っても、そのため、各パスの誘引力が等しいままである。集約制御は、誘引力が大きいパスにトラヒックを集約するものであるが、誘引力が均等な場合、特定のパスにトラヒックを集約することができない状況に陥る。すなわち、一度平衡状態が発生すると、誘引力に基づくトラヒックの集約制御だけではトラヒックの平衡状態を解消できない。
そこで、平衡状態が発生すると、平衡解除制御が行われる。
図7は、平衡解除制御の例を示す図である。平衡状態を崩すにあたり、単純に平衡を崩すだけでは、スリープ可能ノードができるようにトラヒックを集約ができない場合がある。また、一度にトラヒック増が発生するリンクで、輻輳が発生し激しい品質劣化を招く場合もあり得る。
「不適切集約例1」では、ノード100がパス31にトラヒックを集約し、ノード200がパス34にトラヒックを集約している。その結果、ノード400はパス31のトラヒックを中継し、ノード500はパス34のトラヒックを中継している。そのため、いずれのノードもスリープモードに移行することができない。
「不適切集約例2」では、ノード100がパス31にトラヒックを一気に集約し、同時に、ノード200がパス33にトラヒックを一気に集約している。その結果、ノード400からノード300へのリンクのトラヒックが急激に増加し、輻輳が発生している。輻輳の発生はパケットロストなどを誘発し、ネットワーク全体の品質劣化を招く。
そこで第2の実施の形態では、スリープモードへ移行可能なノードを発生させ、かつトラヒックの急増を引き起こさないように平衡状態を解除する。
「適切集約例」では、ノード100とノード200との間で、トラヒック集約の開始時期をずらしている。また、ノード100とノード200は、トラヒックの集約を一気に行うのではなく、徐々にトラヒックを集約する。図7の例では、ノード200が先にトラヒックの集約を行っている。ノード200は、初期段階では、パス33へのトラヒックの転送確率を50%より高く(例えば80%)し、パス34へのトラヒックの転送確率を50%より低く(例えば20%)する。このとき、一方のパスの転送確率を一気に「100%」にすることはない。その後、集約制御に基づき、誘引力に応じたトラヒックの振り分けが行われる。すると、トラヒック量が閾値を超過するリンクが発生しない限り、時間の経過と共にトラヒックが集約される。図7の例では、ノード100に流入したトラヒックは、パス31に集約され、ノード200に流入したトラヒックは、パス33に集約されている。
このように、第2の実施の形態では、あるノード宛のトラヒックが平衡状態に陥った場合に、適切なタイミングで平衡解除を適度に行う仕組みを実現する。以下、第2の実施の形態における各ノードの機能について説明する。
図8は、各ノードの機能を示す図である。ノード100は、トラヒック制御情報記憶部110、トラヒック制御部120、転送確率管理部130、およびスリープ制御部140を有している。
トラヒック制御情報記憶部110は、ノード100に流入するトラヒックの宛先ごとのパス、各パスの転送確率などを記憶する。例えば、RAM102やHDD103の記憶領域の一部が、トラヒック制御情報記憶部110として使用される。なお、ノード100が中継ノードとして機能する場合、トラヒック制御情報記憶部110に、ノード100を経由するパスの経路情報を登録しておくことができる。この場合、トラヒック制御部120は、中継すべきパケットの宛先に応じたパスをトラヒック制御情報記憶部110から検出し、検出したパスの経路によって、パケットの転送先を認識できる。
トラヒック制御部120は、入力されたパケットを中継する。ノード100が入口ノードとして機能する場合、トラヒック制御部120は、トラヒック制御情報記憶部110を参照し、入力されたパケットの宛先に対応するパスの転送確率に応じて、パケットの転送先を決定する。なお、トラヒック制御部120は、宛先となる出口ノードへのトラヒックが輻輳抑制制御中の場合、例えば、輻輳が発生したリンクでの容量制限を超過した分のトラヒックを、他のリンクへ振り分ける。また、ノード100が中継ノードとして機能する場合、トラヒック制御部120は、入力されたパケットの宛先に対応するパスをトラヒック制御情報記憶部110から検出し、そのパスの経路における出口ノード側に隣接するノードへパケットを転送する。
転送確率管理部130は、パスの転送確率を管理する。具体的には、転送確率管理部130は、他のノード400,500の転送確率管理部430との間で、制御パケットを通信する。制御パケットには、各ノードの誘引力、輻輳の予兆を検出した場合のアラーム情報などが含まれる。転送確率管理部130は、集約制御を行っている場合、他のノード400,500の誘引力や、トラヒック制御部120によるトラヒックの振り分け状況に基づいて、各パスの誘引力を計算する。そして、転送確率管理部130は、パスの誘引力に基づいて、そのパスの転送確率を計算し、トラヒック制御情報記憶部110に格納する。
また転送確率管理部130は、他のノード400,500からアラーム情報を取得すると、集約制御を停止し、輻輳抑制制御を開始する。輻輳抑制制御では、転送確率管理部130は、トラヒック量が閾値を超過したリンクを経由するパスへのトラヒックの一部を、そのパスと同じノード宛のパスに分散させるように、各パスの転送確率を決定する。そして、転送確率管理部130は、決定した各パスの転送確率を、トラヒック制御情報記憶部110に格納する。
さらに、転送確率管理部130は、トラヒック制御部120によるトラヒックの分散状況に基づいて、同一宛先の複数のパスの間での平衡状態の発生を検出する。平衡状態が発生した場合、転送確率管理部130は、平衡状態となっている複数のパスの平衡解除制御を行う。平衡解除制御では、転送確率管理部130は、ランダムな値を生成し、その値に基づいて待ち時間を決定する。転送確率管理部130は、待ち時間経過後になっても平衡状態が崩れていなければ、複数のパスのトラヒックに偏りができるように、各パスの転送確率を決定する。そして、転送確率管理部130は、決定した各パスの転送確率を、トラヒック制御情報記憶部110に格納する。
スリープ制御部140は、スリープモードへの移行およびスリープモードから通常モードへの復帰を制御する。例えば、スリープ制御部140は、トラヒック制御部120によるトラヒック制御を監視し、最後のトラヒック処理からの経過時間を計測する。そして、スリープ制御部140は、最後のトラヒック処理からの経過時間が、予め設定されたスリープモード移行時間を超えると、ノード100をスリープモードに移行させる。スリープ制御部140は、他のノードからスリープへの移行を指示するメッセージを受け取った場合にも、ノード100をスリープモードに移行させる。スリープモードでは、例えば、転送確率管理部130における制御パケットの送受信機能を残し、その他のトラヒック制御部120などの機能が停止される。また、スリープ制御部140は、スリープモード時に通信インタフェース107a,107b,107cでパケットが受信されると、スリープモードを解除し、通常モードに移行する。通常モードに移行する際には、スリープ制御部140は、トラヒック制御部120などの停止していた機能を起動させる。
ノード200は、トラヒック制御情報記憶部210、トラヒック制御部220、転送確率管理部230、およびスリープ制御部240を有している。ノード300は、トラヒック制御情報記憶部310、トラヒック制御部320、転送確率管理部330、およびスリープ制御部340を有している。ノード400は、トラヒック制御情報記憶部410、トラヒック制御部420、転送確率管理部430、およびスリープ制御部440を有している。ノード500は、トラヒック制御情報記憶部510、トラヒック制御部520、転送確率管理部530、およびスリープ制御部540を有している。ノード200,300,400,500内の各要素は、ノード100内の同名の要素と同じ機能を有している。
このようなシステム構成により、ネットワーク10の入口ノードへ流入するパケットが、適切なパスで出口ノードに転送され、他のネットワークへ送出される。例えば、ノード100に流入したパケットは、トラヒック制御部120によりノード400またはノード500に転送される。またノード200に流入したパケットは、トラヒック制御部220により、ノード400またはノード500に転送される。なお、入口となるノード100,200は、例えば、転送するパケットにパスの経路情報を付与する。この場合、パケットを受信したノード400,500のトラヒック制御部420,520は、パケットに付与された経路情報に沿ってパケットを転送する。これにより、各パケットは、複数の中継ノードを経由しても、入口ノードで決定したパスに沿って出口ノードに転送される。
なお、トラヒック制御部120は、各リンクのトラヒック誘引力が設定される前は、例えばOSPF(Open Shortest Path First)やRIP(Routing Information Protocol)、MPLS(Multi-Protocol Label Switching)などの既存のルーティングプロトコル、パケット転送技術を用いてパケットの振り分けを行う。システムの運用開始直後はトラヒックが無いため、いずれのリンクにも誘引力が発生しない(初期値「0」のまま)。このような初期段階のトラヒックは、トラヒック制御部120によって、既存のルーティングプロトコル、パケット転送技術の定義に従って振り分けられる。そのトラヒックが宛先のノードに到達すると、宛先のノードでトラヒック誘引力を含む制御パケットが生成され、他のノードに転送される。その結果、ノード100においても、リンクに対応付けて誘引力が設定される。その後は、トラヒック制御部120は、トラヒック誘引力に基づくパケットやパケットフローの振り分けを行う。
図9は、トラヒック制御情報記憶部のデータ構造例を示す図である。トラヒック制御情報記憶部110には、トラヒック制御部120がパケットの転送先を決定するために利用する情報が設定される。図9の例では、トラヒック制御情報記憶部110には、トラヒック制御テーブル111が格納されている。
トラヒック制御テーブル111には、宛先、区間、パス、出力インタフェース、経路、転送確率、および輻輳抑制制御の欄が設けられている。
宛先の欄には、パケットの宛先となる出口ノードのノードIDが設定される。図9の例では、ノード300のノードID「3」が、宛先の欄に設定されている。
区間の欄には、入口ノードと出口ノードとの組を区間と定義し、その区間IDが設定される。図9の例では、ノードID「1」のノード100を入口ノード、ノードID「3」のノード300を出口ノードとする区間ID「A」が設定されている。
パスの欄には、宛先のノードにパケットを転送する際に使用可能なパスの識別情報が設定される。例えば区間IDと該当区間のパスの通し番号との組で、パスIDが構成される。図9の例では、「A−1」と「A−2」のパスIDが設定されている。
出力インタフェースの欄には、パスIDに対応するパス上で隣接するノードに接続された通信インタフェースのID(インタフェースID)が設定される。
経路の欄には、パスIDに対応するパスの経路上のノードが設定される。図9の例では、パスID「A−1」のパスが、ノードID「4」のノード400を中継ノードとする経路であることが示されている。また,パスID「A−2」のパスが、ノードID「5」のノード500を中継ノードとする経路であることが示されている。
転送確率の欄には、パスIDで示されるパスの転送確率が設定される。トラヒックが集約されている場合、1つのパスの転送確率が「100%」となる。
輻輳抑制制御の欄には、宛先ごとに、輻輳抑制制御が行われているか否かを示す情報が設定される。
次に、転送確率管理部130の詳細構成について説明する。
図10は、第2の実施の形態に係る転送確率管理部の詳細構成例を示す図である。転送確率管理部130の機能は、大別すると、集約・輻輳抑制制御部130aと平衡制御部130bとに分けられる。集約・輻輳抑制制御部130aは、集約制御におけるパスの誘引力の計算、および輻輳の予兆を検知したときの輻輳抑制制御の開始指示などを行う。平衡制御部130bは、1つの区間に対する複数のパスの間でトラヒック量が平衡した場合に、平衡状態を崩すための制御を行う。
集約・輻輳抑制制御部130aは、トラヒック計測部131、トラヒック記憶部132、誘引力計算部133、制御パケット管理部134、およびアラーム情報生成部135を有する。
トラヒック計測部131は、各リンク(隣接するノードとの間の伝送経路)のトラヒック処理量を計測する。具体的には、トラヒック計測部131は、トラヒック制御部120によるトラヒック制御を監視し、各通信インタフェース107a,107b,107cへの流入トラヒック量および送出トラヒック量を計測する。トラヒック計測部131は、計測したトラヒック量をトラヒック記憶部132に格納する。
トラヒック記憶部132は、通信インタフェース107a,107b,107cへの流入トラヒックの量を記憶する記憶機能である。例えば、RAM102内の記憶領域の一部が、トラヒック記憶部132として使用される。
誘引力計算部133は、誘引力を適宜計算する。ノード100が出口ノードとして機能する場合、例えば、誘引力計算部133は、流入するリンクの利用率(トラヒック量/リンク帯域)を用いてリンクごとの誘引力を計算する。ノード100が中継ノードとして機能する場合、例えば、誘引力計算部133は、流入するリンクの利用率に加え、出口ノード側に隣接するノードから通知された誘引力を用いて、その誘引力の伝播先となるリンクごとの誘引力を計算する。誘引力の伝播先となるリンクとは、その誘引力を受信したリンク以外のリンクである。例えば誘引力計算部133は、以下の式で伝播先となるリンクの誘引力を計算する。
誘引力=0.5×{(流入するリンク利用率の和)+(通知された誘引力)}×(伝播先となるリンクの流入方向の利用率) ・・・(1)
0.5を乗算しているのは、通知された誘引力と、ノードへ流入するリンクの利用率の和の平均をとるという意味である。なお、出口ノードでは、通知される誘引力がない。そこで、出口ノードでは以下の式で誘引力を計算する。
誘引力=(流入するリンク利用率の和)×(伝播先となるリンクの流入方向の利用率)
・・・(2)
なお、出口ノードにおける伝播先となるリンクは、その出口ノードにトラヒックが流入するすべてのリンクである。ノード100が出口ノードまたは中継ノードとして機能する場合、誘引力計算部133が計算した誘引力は、制御パケット管理部134に渡される。
ノード100が入口ノードとして機能する場合、誘引力計算部133は、出口ノード側に隣接するノードから通知された誘引力を、その隣接するノードとの間のリンクの誘引力とする。なお、誘引力計算部133における各リンクの誘引力の計算では、そのリンクの利用率が大きいほど、誘引力も大きくなる。
ノードが入口ノードとして機能する場合、誘引力計算部133は、通知された各リンクの誘引力を、そのリンクを介してトラヒックを流出するパスの誘引力とする。そして誘引力計算部133は、パスの誘引力に基づき、そのパスの転送確率を計算する。例えば誘引力計算部133は、100%の値を誘引力に応じて各パスに比例配分する。具体的には、区間が同一のすべてのパスの誘引力の合計値で、その区間の各パスの誘引力を除算し、除算結果をそのパスの転送確率とする。なお、第2の実施の形態では、除算結果を100倍し、転送確率をパーセンテージで表すものとする。
制御パケット管理部134は、制御パケットの生成および転送を管理する。具体的には、制御パケット管理部134は、ノード100が出口ノードとして機能する場合、定期的に生成されるリンクごとの誘引力を誘引力計算部133から受け取り、リンクごとの制御パケットを生成する。生成された制御パケットには、各リンクの誘引力が含まれる。そして、制御パケット管理部134は、リンクごとの制御パケットを、対応するリンクに接続された通信インタフェースを介して送信する。
また、制御パケット管理部134は、ノード100が中継ノードとして機能する場合、他のノードから送られてきた制御パケットに含まれるトラヒック誘引力を、誘引力計算部133に渡す。その後、制御パケット管理部134は、伝播先のリンクごとの更新後の誘引力を、誘引力計算部133から受け取る。さらに、制御パケット管理部134は、受信した制御パケットを複製し、伝播先のリンクごとの制御パケットとする。次に、制御パケット管理部134は、伝播先のリンクごとの制御パケットの誘引力を、誘引力計算部133により更新された誘引力に更新する。そして、制御パケット管理部134は、伝播先のリンクに接続された通信インタフェースを介して、該当する伝播先のリンクに対応する制御パケットを転送する。
さらに、制御パケット管理部134は、制御パケットの内容に応じて、輻輳抑制制御の有無をトラヒック制御テーブル111に設定する。具体的には、制御パケット管理部134は、制御パケット内に、輻輳発生の可能性を示すアラーム情報が含まれている場合、その制御パケットが送られてきたリンクの経路で輻輳の発生の可能性があると判断する。また、制御パケット管理部134は、アラーム情報生成部135からアラーム情報を受け取った場合にも、輻輳の発生の可能性があると判断する。そして、制御パケット管理部134は、トラヒック制御テーブル111内の輻輳の発生の可能性があるリンクを経由するパスを有する区間について、輻輳抑制制御ありの情報を設定する。また、制御パケット管理部134は、ノード100が入口ノードとなる区間のいずれのパスにおいても輻輳の発生の可能性が検知されていなければ、トラヒック制御テーブル111内の該当区間について、輻輳抑制制御なしの情報を設定する。
制御パケット管理部134は、アラーム情報生成部135からアラーム情報を受け取った場合には、そのアラーム情報を含む制御パケットを、輻輳の発生の可能性があるリンク以外のリンクへブロードキャストで発信する。この際、制御パケット管理部134は、誘引力を通知する制御パケットにアラーム情報を含めて発信することができる。また、制御パケット管理部134は、誘引力を通知する制御パケットを待たずにアラーム情報のみを通知する制御パケットを生成して発信することもできる。
アラーム情報生成部135は、トラヒック記憶部132を監視し、各リンクのトラヒックの利用率が、所定の閾値(トラヒック利用制限値)を超えているか否かを判断する。利用率が閾値を超えたリンクがある場合、アラーム情報生成部135はアラーム情報を生成し、制御パケット管理部134に渡す。なお、アラーム情報生成部135は、リンクの利用率が閾値を超過している間、該当リンクに関するアラーム情報を定期的に生成する。
平衡制御部130bは、平衡判定部136、平衡情報記憶部137、および平衡解除部138を有する。
平衡判定部136は、ノード100を入口ノードとする各区間の平衡状態の有無を判定する。例えば、平衡判定部136は、トラヒック制御情報記憶部110を参照し、同一区間の複数のパスの間で平衡状態が所定時間以上継続しているか否かを判定する。平衡状態が所定時間以上継続している場合、平衡判定部136は、該当区間が平衡状態にあると判定する。平衡判定部136は、平衡状態か否かの判定結果を、平衡情報記憶部137に設定する。また、平衡判定部136は、平衡状態になった区間について、平衡状態が解消したか否かを判定する。そして、平衡状態が解消すると、平衡判定部136は、平衡状態が解消したことを平衡情報記憶部137に設定する。
平衡情報記憶部137は、宛先ごとの平衡状態の管理情報を記憶する。例えば、RAM102やHDD103の記憶領域の一部が、平衡情報記憶部137として使用される。平衡状態の管理情報には、例えば、平衡状態になっているか否かを示すフラグ、平衡状態の区間の平衡解除処理の実行時刻などが含まれる。
平衡解除部138は、平衡状態になった区間の平衡解除処理を行う。例えば、平衡解除部138は、平衡状態になった区間の平衡解除動作の実行時刻を決定する。例えば平衡解除部138は、ランダムな数値に所定時間を乗算し、待ち時間とする。現在の時刻から待ち時間経過後の時刻が、平衡解除動作の実行時刻である。
そして、平衡解除部138は、平衡状態になった区間が平衡解除動作の実行時刻になっても依然として平衡状態であれば、トラヒック制御情報記憶部110内の該当区間の各パスに対して、十分に偏りを持たせた転送確率を設定する。第2の実施の形態では、平衡解除時の転送確率としては、予め決められた値を用いるものとする。例えば、平衡状態となった区間に2つのパスが存在する場合、8:2の割合でトラヒックを分散させることが設定される。この場合、一方のパスの転送確率を「80%」、他方のパスの転送確率を「20%」とする。なお平衡解除時の転送確率は、予めオペレータの操作入力によって任意の値が設定される。
次に、転送確率管理部130内に保持される情報について詳細に説明する。
図11は、トラヒック記憶部のデータ構造例を示す図である。トラヒック記憶部132には、トラヒック管理テーブル132aが格納されている。トラヒック管理テーブル132aには、通信インタフェース、流入トラヒック量、リンク帯域、送出トラヒック量、トラヒック利用制限値の欄が設けられている。
通信インタフェースの欄には、ネットワーク10上の他のノードに接続された通信インタフェースの識別子が設定される。図3に示すように、ノード100においては、2つの通信インタフェース107a,107bがネットワーク10内の他のノード400,500に接続されている。従って、通信インタフェース107a,107bの識別子が、入力インタフェースの欄に設定される。
流入トラヒック量の欄には、対応する通信インタフェースに流入するトラヒック量が設定される。トラヒック量は、1秒当たりの流入データ容量で示される。
リンク帯域の欄には、対応する通信インタフェースを用いて通信されるリンクの最大伝送容量が設定される。リンク帯域は、1秒当たりに流入可能なデータ容量で示される。
送出トラヒック量の欄には、対応する通信インタフェースを介して送出されるトラヒック量が設定される。トラヒック量は、1秒当たりの送出データ容量で示される。
トラヒック利用制限値の欄には、対応する通信インタフェースを介して、輻輳を発生させずに送出可能なトラヒックの利用率の閾値が予め設定されている。
図12は、平衡情報記憶部のデータ構造例を示す図である。平衡情報記憶部137には、平衡管理テーブル137aが格納されている。平衡管理テーブル137aには、宛先、区間、分散状態カウンタ、平衡状態フラグ、待ち時間、パス、および平衡解除時転送確率の欄が設けられている。
宛先の欄には、宛先のノードのノードIDが設定される。
区間の欄には、入口ノードであるノード100から宛先のノードまでの区間の区間IDが設定される。
分散状態カウンタの欄には、対応する区間のトラヒックが複数のパスに分散された期間を計測するためのカウンタ(分散状態カウンタ)が設定される。例えば、分散状態が1分経過するごとに、分散状態カウンタの値が1ずつカウントアップされる。
平衡状態フラグの欄には、対応する区間が平衡状態にあるか否かを示すフラグ(平衡状態フラグ)が設定される。例えば、平衡状態でなければ平衡状態フラグに「0」が設定され、平衡状態であれば平衡状態フラグに「1」が設定される。
待ち時間の欄には、平衡状態になってから平衡解除動作の実行までの待ち時間が設定される。
パスの欄には、対応する区間のトラヒックの転送に使用されるパスのパスIDが設定される。
平衡解除時転送確率の欄には、平衡解除処理を実行した場合の各パスの転送確率が設定される。第2の実施の形態においては、オペレータの操作入力によって予め平衡解除時転送確率が設定されている。
このような構成により、誘引力や平衡状態の有無に応じた転送確率が設定されると共に、輻輳の予兆の検出が行われる。
次に、平衡制御部130bで実行される処理についてさらに詳細に説明する。
図13は、平衡判定処理の手順を示すフローチャートである。平衡判定処理は、平衡判定部136によって繰り返し実行される処理である。以下、図13に示す処理をステップ番号に沿って説明する。
[ステップS11]平衡判定部136は、トラヒック制御テーブル111を参照し、ノード100を入口ノードとする未処理の区間を1つ選択する。
[ステップS12]平衡判定部136は、平衡管理テーブル137aを参照し、選択した区間が既に平衡状態か否かを判断する。具体的には平衡判定部136は、選択した区間の平衡状態フラグが「1」であれば、平衡状態であると判断する。平衡判定部136は、既に平衡状態であれば、処理をステップS19に進める。平衡判定部136は、平衡状態でなければ、処理をステップS13に進める。
[ステップS13]平衡判定部136は、トラヒック制御テーブル111を参照し、選択した区間で複数のパスが利用されているか否かを判断する。具体的には、平衡判定部136は、転送確率が「0%」以外のパスが2以上あれば、複数のパスが利用されていると判断する。平衡判定部136は、複数のパスが利用されている場合、処理をステップS14に進める。平衡判定部136は、1つのパスのみが利用されていれば、トラヒックが集約されているものと判断し、処理をステップS17に進める。
[ステップS14]平衡判定部136は、トラヒック制御テーブル111を参照し、選択した区間で輻輳抑制制御を実施中か否かを判断する。具体的には、選択した区間に対応する輻輳抑制制御の欄に「あり」と設定されていれば、輻輳抑制制御を実施しているものと判断される。輻輳抑制制御の欄に「なし」と設定されていれば、輻輳抑制制御を実施していないものと判断される。平衡判定部136は、輻輳抑制制御を実施中であれば、分散状態を許容すべきと判断し、処理をステップS17に進める。また平衡判定部136は、輻輳抑制制御を実施中でなければ、処理をステップS15に進める。
[ステップS15]平衡判定部136は、平衡管理テーブル137aを参照し、選択した区間の分散状態カウンタの値が、予め設定された規定値以上か否かを判断する。平衡判定部136は、分散状態カウンタの値が規定値以上であれば、選択した区間が平衡状態であると判断し、処理をステップS16に進める。平衡判定部136は、分散状態カウンタの値が規定値未満であれば、処理がステップS18に進められる。
[ステップS16]平衡判定部136は、平衡管理テーブル137aにおける選択した区間の平衡状態フラグを、平衡状態「1」にセットする。
[ステップS17]平衡判定部136は、平衡管理テーブル137aにおける選択した区間の分散状態カウンタの値を、ゼロクリアする。ゼロクリアとは、値を「0」に設定することである。その後、処理がステップS19に進められる。
[ステップS18]平衡判定部136は、平衡管理テーブル137aにおける選択した区間の分散状態カウンタの値を1だけカウントアップする。
[ステップS19]平衡判定部136は、ノード100を入口ノードとするすべての区間について処理したか否かを判断する。平衡判定部136は、該当区間をすべて処理した場合、処理をステップS20に進める。平衡判定部136は、未処理の区間がある場合、処理をステップS11に進める。
[ステップS20]平衡判定部136は、すべての区間を未処理の状態にリセットし、所定時間(例えば1分)待機する。待機時間が経過すると、平衡判定部136は、処理をステップS11に進める。
このようにして、規定時間以上トラヒックの分散状態が継続している区間について、平衡状態であると判定される。すなわち、輻輳抑制制御していないにもかかわらず、規定時間以上にわたって複数のパスを利用している場合(1つのパスに集約されない場合)、平衡状態であると判断される。
次に、平衡状態と判定された区間について、平衡状態の解消の有無を判定する処理について詳細に説明する。
図14は、平衡解消判定処理の手順を示すフローチャートである。平衡解消判定処理は、平衡判定部136によって繰り返し実行される処理である。以下、図14に示す処理をステップ番号に沿って説明する。
[ステップS31]平衡判定部136は、平衡管理テーブル137aを参照し、ノード100を入口ノードとする未処理の区間を1つ選択する。
[ステップS32]平衡判定部136は、選択した区間の平衡状態フラグを参照し、平衡状態か否かを判断する。平衡判定部136は、平衡状態であれば、処理をステップS33に進める。平衡判定部136は、平衡状態でなければ、処理をステップS35に進める。
[ステップS33]平衡判定部136は、トラヒック制御テーブル111を参照し、選択した区間の各パスの転送確率が所定値以上偏っているか否かを判断する。例えば、平衡判定部136は、転送確率が80%以上のパスがあれば、転送確率の偏りありと判断する。平衡判定部136は、転送確率の所定値以上の偏りがある場合、処理をステップS34に進める。平衡判定部136は、転送確率の所定値以上の偏りがない場合、処理をステップS35に進める。
[ステップS34]平衡判定部136は、平衡管理テーブル137aにおける選択区間の平衡状態フラグを解除する(値を「0」に変更する)。また平衡判定部136は、選択した区間の待ち時間を削除する。
[ステップS35]平衡判定部136は、ノード100を入口ノードとするすべての区間について処理したか否かを判断する。平衡判定部136は、該当区間をすべて処理した場合、処理をステップS36に進める。平衡判定部136は、未処理の区間がある場合、処理をステップS31に進める。
[ステップS36]平衡判定部136は、すべての区間を未処理の状態にリセットし、処理をステップS31に進める。
このように平衡状態が解消された場合、平衡状態フラグが解除される。すなわち、一端平衡状態になっても、待ち時間経過前に平衡状態が解消していれば、平衡解除のための転送確率の変更処理は実行されない。
次に、平衡解除処理について説明する。
図15は、平衡解除処理の手順を示すフローチャートである。平衡解除処理は、平衡解除部138によって繰り返し実行される。以下、図15に示す処理をステップ番号に沿って説明する。
[ステップS41]平衡解除部138は、平衡管理テーブル137aを参照し、ノード100を入口ノードとする未処理の区間を1つ選択する。
[ステップS42]平衡解除部138は、平衡管理テーブル137aを参照し、選択した区間が新たに平衡状態になったか否かを判断する。具体的には平衡解除部138は、選択した区間の平衡状態フラグが「1」であり、かつ待ち時間が設定されていない場合、新たに平衡状態になったものと判断する。平衡解除部138は、新たに平衡状態になった場合、処理をステップS43に進める。平衡解除部138は、平衡状態になっていないか、あるいは以前から平衡状態であった場合、処理をステップS44に進める。
[ステップS43]平衡解除部138は、平衡解除動作の実行までの待ち時間を決定する。例えば、平衡解除部138は、0分から10分の間の1分ごと値の1つをランダムに生成し、生成した時間を待ち時間とする。現在の時刻から待ち時間経過後の時刻が、平衡解除動作の実行タイミングである。
[ステップS44]平衡解除部138は、ノード100を入口ノードとするすべての区間についてステップS41〜S43の処理を実施したか否かを判断する。平衡解除部138は、該当区間をすべて処理した場合、処理をステップS45に進める。平衡解除部138は、未処理の区間がある場合、処理をステップS41に進める。
[ステップS45]平衡解除部138は、すべての区間を未処理の状態にリセットし、処理をステップS46に進める。
[ステップS46]平衡解除部138は、平衡管理テーブル137aを参照し、ノード100を入口ノードとする未処理の区間を1つ選択する。
[ステップS47]平衡解除部138は、平衡管理テーブル137aを参照し、選択した区間が平衡状態か否かを判断する。具体的には平衡解除部138は、選択した区間の平衡状態フラグが「1」である場合、平衡状態であると判断する。平衡解除部138は、平衡状態である場合、処理をステップS48に進める。平衡解除部138は、平衡状態でない場合、処理をステップS50に進める。
[ステップS48]平衡解除部138は、平衡管理テーブル137aを参照し、平衡状態であると判定してから、選択した区間の待ち時間が経過したか否かを判断する。平衡解除部138は、待ち時間が経過した場合、処理をステップS49に進める。平衡解除部138は、待ち時間が経過していなければ、処理をステップS50に進める。
[ステップS49]平衡解除部138は、選択した区間の各パスの転送確率を、平衡解除時転送確率に変更する。具体的には、平衡解除部138は、平衡管理テーブル137aを参照し、選択した区間の各パスの平衡解除時転送確率を取得する。そして、平衡解除部138は、トラヒック制御テーブル111における選択した区間の各パスの転送確率として、取得した平衡解除時転送確率を設定する。
[ステップS50]平衡解除部138は、ノード100を入口ノードとするすべての区間についてステップS46〜S49の処理を実施したか否かを判断する。平衡解除部138は、該当区間をすべて処理した場合、処理をステップS51に進める。平衡解除部138は、未処理の区間がある場合、処理をステップS46に進める。
[ステップS51]平衡解除部138は、すべての区間を未処理の状態にリセットし、処理をステップS41に進める。
このようにして、平衡状態に陥った区間についてランダムな時間後の平衡解除動作の実行タイミングが決定され、実行タイミングまで待って平衡解除動作による転送確率の変更処理が実行される。
なお、図13〜図15に示した処理は、他のノード200,300,400,500においても、そのノードが入口ノードとして機能する場合に実行される。その結果、入口ノードは異なるが宛先が共通の複数の区間が平衡状態に陥った場合でも、各入口ノードにおいて異なる時間に平衡解除が実行される。また、各入口ノードが継続して誘引力による転送確率の更新処理を実行することで、1つの入口ノードで転送確率を偏らせれば、その影響が他の入口ノードにも徐々に伝播する。その結果、徐々にトラヒックが集約される。
次に、具体例を用いて、平衡状態の解消状況について説明する。
図16は、トラヒックが分散された状態の例を示す図である。図16の例では、ノード100のトラヒック制御テーブル111には、ノード300を宛先とする区間に対して2つのパス「A−1」、「A−2」が設定されている。パス「A−1」は、ノード400を経由する経路である。「A−2」は、ノード500を経由する経路である。各パスの転送確率は、共に「50%」である。
ノード200のトラヒック制御テーブル211には、ノード300を宛先とする区間に対して2つのパス「B−1」、「B−2」が設定されている。パス「B−1」は、ノード400を経由する経路である。「B−2」は、ノード500を経由する経路である。各パスの転送確率は、共に「50%」である。
なお、図16に示すトラヒック制御テーブル111,211では、出力インタフェースと経路との欄は省略されている。また、各ノード間のリンクの容量はすべて100Mbpsであるものとする。
図16の例では、時刻「12:00」に、ノード100に対し、ノード300宛の20Mbpsのトラヒックが流入し、ノード200に対し、ノード300宛の40Mbpsのトラヒックが流入している。ノード100の各パス「A−1」,「A−2」の転送確率は均等であるため、ノード100では、各パスに10Mbpsずつのトラヒックが振り分けられている。またノード200の各パス「B−1」,「B−2」の転送確率も均等であるため、ノード200では、各パスに20Mbpsずつのトラヒックが振り分けられている。
このように、各パスの転送確率が均等であると、ノード300の2つのリンクからに流入するトラヒックも30Mbpsずつで同じである。2つのリンクの容量が同じであるものとすると、リンクの利用率も等しくなる。すると、式(2)に基づいて誘引力が計算されると、ノード300において計算される各2つのリンクの誘引力は等しくなる。その結果、中継ノードであるノード400,500には、ノード300から同じ値の誘引力が通知される。
ノード400,500は、ノード300から通知された誘引力と、ノード100,200それぞれとの間のリンクの利用率とから、各リンクの誘引力を計算する。ここで、式(1)に基づいて誘引力が計算されるものとする。すると、ノード400が算出するノード100から流入するリンクの誘引力と、ノード500が算出するノード100から流入するリンクの誘引力とは等しくなる。すると、ノード100は、ノード400,500から同じ値の誘引力を受け取る。その結果、各パスの転送確率は「50%」ずつで維持されてしまう。ノード200においても、パスの転送確率は「50%」ずつで維持される。
すると、各ノード100,200では、分散状態の経過時間が計測される。そして、分散状態が規定時間以上維持されると、各ノード100,200は、平衡状態であると判断し、平衡管理テーブルを更新する。
図17は、平衡状態と判定したときの平衡管理テーブルの例を示す図である。図17には、規定時間として5分が設定されており、1分間隔で平衡判定処理が繰り返される場合の例が示してある。
1分間隔で平衡判定処理が繰り返されると、平衡ノード100の平衡管理テーブル137aとノード200の平衡管理テーブル237aとのそれぞれにおいて、分散状態になってから1分経過ごとに、分散状態カウンタがカウントアップされる。そして、5分経過後の12時05分に平衡状態であると判定され、平衡状態フラグが「1」に設定される。このとき、分散状態カウンタが「0」にリセットされる。このように、5分以上輻輳抑制制御をしていないにもかかわらずトラヒックが集約されない場合に、平衡状態であると判断される。このようにして、ノード100が区間「A」の平衡状態を検出し、ノード200が区間「B」の平衡状態を検出する。
平衡状態を検出した各ノード100,200は、待ち時間を決定する。すなわち、ノード100,200は、0〜10分の間のランダムな時間を生成し、生成した時間を待ち時間とする。図17の例では、ノード100が待ち時間「7分」であり、ノード200が待ち時間「2分」である。決定された待ち時間は、それぞれのノード100,200の平衡管理テーブル137a,237aに設定される。なお、平衡解除時転送確率は、オペレータにより、確率の比が8:2になるように予め設定されている。
この結果、2分後の12時7分に、ノード200がパス「B−1」の転送確率を80%、「B−2」の転送確率を20%に変更する。
図18は、一方のノードが転送確率を変更した例を示す図である。ノード200が転送確率を変更したことで、ノード200に流入するトラヒックは、8:2に分散される。その結果、パス「B−1」で32Mbpsのトラヒックが転送され、パス「B−2」で8Mbpsのトラヒックが転送される。なお、ノード100は7分後に変更するため、パス「A−1」、「A−2」の転送確率は50%のままである。
ノード200による区間「B」の転送確率変更により、ノード400からノード300へのリンクを流れるトラヒック量は、平衡状態の30Mbpsから42Mbpsに増加している。一方、ノード500からノード300へのリンクを流れるトラヒック量は、平衡状態の30Mbpsから18Mbpsへと減少している。すると、平衡解除処理によってトラヒック量に偏りが発生していることが分かる。トラヒック量に偏りがあれば、パスの誘引力に差が発生する。
図18に示すネットワークでは、次のような手順でパスの誘引力が決定される。パスの誘引力の計算では、パスの経路を逆にたどるようにリンクの誘引力が順次計算される。例えばパス「A−1」は、ノード100、ノード400、ノード300の順でパケット転送を行う経路である。
この経路の場合、まずパスの出口ノードであるノード300で誘引力が計算される。そして、計算された誘引力が、ノード400に通知される。次にノード400で、通知された誘引力を更新し、ノード100へ誘引力を通知する。そして、ノード100で、通知された誘引力をパス「A−1」の誘引力として決定する。
出口ノードであるノード300は、式(2)に従って誘引力を計算する。また中継ノードであるノード400,500は、式(1)に従って誘引力を計算する。すると、ノード100に通知される誘引力を1つの式で表すと、以下の式になる。
誘引力=0.5×{(出口ノードへ流入するリンク利用率の和)×パスの出口ノードに接続するリンク利用率+中継ノードへ流入するリンク利用率の和}×パスの入口ノードに接続するリンク利用率 ・・・(3)
式(3)に図18に示す各リンクのトラヒック量に応じた利用率を代入すると、パス「A−1」とパス「A−2」の誘引力はそれぞれ以下のようになる。
パス「A−1」の誘引力=0.5×((0.42+0.18)×0.42+(0.1+0.32))×0.1=0.0336
パス「A−2」の誘引力=0.5×((0.42+0.18)×0.18+(0.1+0.08))×0.1=0.0144
なお、誘引力の通知は、制御パケットを用いて定期的に実行される。例えば、図18の状態から30秒後にノード100に対してノード400,500から誘引力が通知されてものとする。すると、通知された誘引力に基づいてノード100において、各パスの転送確率が変更される。誘引力の比で転送確率を算出する場合は、転送確率は以下のように変化する。
パス「A−1」への転送確率=0.0336÷(0.0336+0.0144)×100=70%
パス「A−2」への転送確率=0.0144÷(0.0336+0.0144)×100=30%
と変化する。
図19は、誘引力に基づく転送確率変更後の状態を示す図である。図19に示すように、ノード100においてパス「A−1」の転送確率は「70%」、パス「A−2」の転送確率は「30%」となっている。その結果、パス「A−1」へのトラヒック量が14Mbpsに変更され、パス「A−2」へのトラヒック量が6Mbpsに変更されている。
またノード100による区間「A」の転送確率変更により、ノード400からノード300へのリンクを流れるトラヒック量は、42Mbpsから46Mbpsに増加している。一方、ノード500からノード300へのリンクを流れるトラヒック量は、18Mbpsから14Mbpsへと減少している。すなわち、トラヒックの集約度合いが高くなっている。
その後、ノード100とノード200とにおいて、定期的に誘引力に基づく転送確率の変更が行われる。図19の状態から算出されるパス「A−1」、「A−2」、「B−1」、「B−2」の誘引力と、転送確率は次のようになる。
パスA−1誘引力=0.5×((0.46+0.14)×0.46+(0.14+0.32))×0.14=0.05152 →[転送確率88%]
パスA−2誘引力=0.5×((0.46+0.14)×0.14+(0.06+0.08))×0.06=0.00672 →[転送確率12%]
パスB−1誘引力=0.5×((0.46+0.14)×0.46+(0.14+0.32))×0.32=0.118 →[転送確率93%]
パスB−2誘引力=0.5×((0.46+0.14)×0.14+(0.06+0.08))×0.08=0.0090 →[転送確率7%]
偏りがさらに大きくなって、パス「A−1」,「B−1」へトラヒックが集約しつつあることが分かる。
図20は、集約が進んだ状態を示す図である。図20に示すように、ノード100においてパス「A−1」の転送確率は「88%」、パス「A−2」の転送確率は「12%」となっている。その結果、パス「A−1」へのトラヒック量が17.6Mbpsに変更され、パス「A−2」へのトラヒック量が2.4Mbpsに変更されている。ノード200においてパス「B−1」の転送確率は「93%」、パス「B−2」の転送確率は「7%」となっている。その結果、パス「B−1」へのトラヒック量が37.2Mbpsに変更され、パス「B−2」へのトラヒック量が2.8Mbpsに変更されている。
またノード100,200による区間「A」,「B」の転送確率変更により、ノード400からノード300へのリンクを流れるトラヒック量は、46Mbpsから54.8Mbpsに増加している。一方、ノード500からノード300へのリンクを流れるトラヒック量は、14Mbpsから5.2Mbpsへと減少している。すなわち、トラヒックの集約度合いがさらに高くなっている。
図20の状態から、パス「A−1」、「A−2」、「B−1」、「B−2」の誘引力と、転送確率を計算すると次のようになる。
パスA−1誘引力
=0.5×((0.548+0.052)×0.548+(0.176+0.372))×0.176=0.047 →[転送確率98.7%]
パスA−2誘引力
=0.5×((0.548+0.052)×0.052+(0.028+0.024))×0.024=0.001 →[転送確率1.3%]
パスB−1誘引力
=0.5×((0.548+0.052)×0.548+(0.176+0.372))×0.372=0.163 →[転送確率99.3%]
パスB−2誘引力
=0.5×((0.548+0.052)×0.052+(0.028+0.024))×0.028=0.0012 →[転送確率0.7%]
さらに集約が進み、ほとんどパス「A−2」,「B−2」の転送確率が0%に近付いていることが分かる。あとの変化については省略するが、さらに何度か繰り返すことで、完全に0%となり、1つの経路にトラヒックが集約される。なお、各ノードでは、パスの転送確率の計算結果が所定値以下(例えば1%未満)になった場合、そのパスの転送確率を「0%」にすることもできる。
このように誘引力に基づく転送確率の更新を繰り返せば、平衡解除動作を区間「A」で行わなくても平衡状態が解消する。図20の例であれば、すべてのトラヒックが誘引力の大きいパス「A−1」、「B−1」に次第に集約され、ノード500がスリープ可能となる。すなわち、平衡状態となった場合、転送確率のバランスを強制的に崩すことで、トラヒックを1つの経路に集約させることができる。そして、トラヒックを集約させることでスリープ可能なノードが発生し、省電力化が促進できる。
ただし、すべてのトラヒックを集約すると輻輳が発生するケースもある。例えば、区間「A」のトラヒックが40Mbps、区間「B」のトラヒックが60Mbpsの場合である。このような場合、輻輳抑制制御により、平衡状態を解消した上でパス「A−2」、「B−2」に一部のトラヒックが分散転送される。
区間「B」のトラヒックが非常に少なくて、区間「B」のバランス解除によってトラヒックの偏りがほとんど出ず区間「A」の平衡状態の解消が出来なかった場合にのみ、ノード100において7分後に予定された区間「A」での解除動作が行われる。
なお、平衡状態と判定されている区間に関して、平衡解除動作がうまく動作していれば図14に示した処理により、平衡状態である旨の判定が解除される。
〔第3の実施の形態〕
次に第3の実施の形態について説明する。第3の実施の形態は、入口ノードにおいて平衡状態を検出すると、出口ノードへ平衡状態の発生を通知する。そして、入口ノードは、出口ノードからの応答内容に応じて平衡解除の方法を決定するものである。
このとき、出口ノードは、複数の入口ノードからの通知に基づいて各入口ノードへの応答内容を決定する。例えば、出口ノードは、各入口ノードからのトラヒック量の順位を応答内容に含める。また、出口ノードは、平衡状態となった複数の区間の経路を比較し、経路が重複している区間同士を関連区間と定義する。関連区間の入口ノード同士が、関連装置である。また、出口ノードは、各入口ノードの区間との間で関連区間となる区間の数(関連区間数)を応答内容に含める。
入口ノードでは、出口ノードから通知されたトラヒック量の順位に基づいて、平衡解除動作までの待ち時間(転送確率の変更タイミング)を決定する。また、入口ノードでは、出口ノードから通知された関連区間数に基づいて、平衡解除時の各経路の転送確率を決定する。
図21は、第3の実施の形態におけるシステム構成例を示す図である。ネットワーク40には、複数のノード600,600a,600b,600c,600d,600e,600f,600gが含まれている。
ネットワーク40に含まれるノードのうち、ノード600,600a,600b,600c,600d,600eは、それぞれ他のネットワーク41〜46に接続されている。ノード600,600a,600b,600c,600d,600eは、ネットワーク40内でのトラヒックの転送に加え、他のネットワークから入力されるトラヒックや他のネットワークへ出力するトラヒックの転送を行うエッジノードである。
ネットワーク40に含まれるノードのうち、ノード600f,600gは、ネットワーク40内のトラヒックを転送する中継ノードである。ノード600f,600gは、共にノード600,600a,600b,600c,600d,600eに接続されている。そしてノード600f,600gは、ノード600,600a,600b,600c,600d,600e間のトラヒックを転送する。
各ノードには、ネットワーク40上で識別するためのIDが付与されている。ノード600のIDは「1」である。ノード600aのIDは「2」である。ノード600bのIDは「3」である。ノード600cのIDは「4」である。ノード600dのIDは「5」である。ノード600eのIDは「6」である。ノード600fのIDは「7」である。ノード600gのIDは「8」である。
図22は、第3の実施の形態に係るノードの機能を示すブロック図である。ノード600は、トラヒック制御情報記憶部610、トラヒック制御部620、転送確率管理部630、およびスリープ制御部640を有する。このうち、トラヒック制御情報記憶部610、トラヒック制御部620、およびスリープ制御部640については、第2の実施の形態の図8や図10などに示した要素のうちの同名の要素と同じ機能を有している。
転送確率管理部630の機能は、大別すると、制御パケット管理部631、集約・輻輳抑制制御部632、入口側平衡制御部633、および出口側平衡制御部634に分けられる。制御パケット管理部631は、集約・輻輳抑制制御部632、入口側平衡制御部633、または出口側平衡制御部634から入力された情報を制御パケットによって、他のノード宛に送信する。また、制御パケット管理部631は、他のノードから入力された制御パケットの内容を解析し、その内容を集約・輻輳抑制制御部632、入口側平衡制御部633、または出口側平衡制御部634に入力する。
集約・輻輳抑制制御部632は、集約制御におけるパスの誘引力の計算、および輻輳の予兆を検知したときの輻輳抑制制御の開始指示などを行う。
集約・輻輳抑制制御部632は、トラヒック計測部632a、トラヒック記憶部632b、誘引力計算部632c、およびアラーム情報生成部632dを有する。集約・輻輳抑制制御部632内の各要素は、図10に示した第2の実施の形態における同名の要素と同じ機能を有している。
入口側平衡制御部633は、平衡判定部633a、平衡情報記憶部633b、平衡通知メッセージ生成部633c、動作定義記憶部633dおよび平衡解除部633eを有している。このうち、平衡判定部633aと平衡情報記憶部633bとについては、図10に示した第2の実施の形態における同名の要素と同じ機能を有している。
平衡通知メッセージ生成部633cは、平衡状態となった区間がある場合に、区間の出口ノードへ平衡状態になったことを通知する通知メッセージを生成する。通知メッセージは、制御パケット管理部631を介して出口ノードに渡される。具体的には、平衡通知メッセージ生成部633cは、平衡情報記憶部633bを参照して、平衡状態となった区間を検出すると、その区間のトラヒック量(転送量)をトラヒック計測部632aから取得する。区間のトラヒック量は、例えば、SNMP(Simple Network Management Protocol)のMIB(Management Information Base)から取得することもできる。次に、平衡通知メッセージ生成部633cは、平衡状態となった区間の区間ID、その区間のパス、パスを構成するリンク、および転送量などを含む平衡通知メッセージを生成する。そして、平衡通知メッセージ生成部633cは、平衡通知メッセージを制御パケット管理部631に渡す。
動作定義記憶部633dは、出口ノードからの応答内容に応じた平衡状態の解除動作の定義内容を記憶している。例えば、RAMやHDDの記憶領域の一部が動作定義記憶部633dとして使用される。平衡状態解除の動作定義としては、例えば、トラヒック量の順位に応じた解除処理開始までの価値時間や、関連区間数およびトラヒック量の順位に応じた各パスの転送確率などが定義されている。
平衡解除部633eは、制御パケット管理部631から平衡通知メッセージに対する応答を受け取ると、動作定義記憶部633dを参照し、平衡解除処理までの待ち時間や、平衡解除時の各パスの転送確率を決定する。そして、平衡解除部633eは、決定した待ち時間経過後、決定した転送確率となるように、トラヒック制御情報記憶部610内の平衡状態とあったパスの転送確率を更新する。
出口側平衡制御部634は、通知取得部634a、通知記憶部634b、および応答部634cを有する。
通知取得部634aは、制御パケット管理部631を介して平衡通知メッセージを取得する。そして、通知取得部634aは、取得した平衡通知メッセージを通知記憶部634bに格納する。
通知記憶部634bは、入口ノードから送られた平衡通知メッセージを記憶する。例えば、RAMやHDDの記憶領域の一部が通知記憶部634bとして使用される。
応答部634cは、入口ノードから送られた平衡通知メッセージを解析し、各入口ノードに対して平衡解除の方法の決定に利用される情報を応答する。例えば、応答部634cは、いずれかの入口ノードから平衡通知メッセージを受信すると、その平衡通知メッセージを通知記憶部634bに格納する。その後、応答部634cは、所定期間、他の入口ノードから平衡通知メッセージが送られるのを待つ。そして、応答部634cは、所定期間内に通知記憶部634bに蓄積された平衡通知メッセージに基づいて、各平衡通知メッセージに対する応答メッセージを生成する。例えば、応答部634cは、各区間のトラヒック量の順位や、関連区間数を含む応答メッセージを生成する。区間のトラヒック量の順位は、例えばその区間、およびその区間との間で関連区間となる他の区間からなる集合の中でトラヒック量により順位づけしたときの順位を用いる。応答部634cは、生成した応答メッセージを、制御パケット管理部631を介して入口ノードに送信する。
なお、図22には、ノード600の機能を示したが、他のノード600a,600b,600c,600d,600e,600f,600gも同様の機能を有している。
ここで、ノード600a,600b,600c,600dを入口ノード、ノード600eを出口ノードとする各区間のトラヒックが平衡状態となった場合を想定する。
次に、動作定義記憶部633dの内容について詳細に説明する。
図23は、動作定義記憶部のデータ構造の一例を示す図である。動作定義記憶部633dには、待ち時間テーブル633−1と転送確率テーブル633−2とが格納されている。
待ち時間テーブル633−1には、トラヒック量の順位に応じた待ち時間が定義されている。待ち時間テーブル633−1には、トラヒック量順位と待ち時間との欄が設けられている。トラヒック量順位の欄には、関連区間をトラヒック量の多い順に並べたときの順位が設定されている。待ち時間の欄には、トラヒック量の順位に対応する待ち時間が設定されている。図23の例では、トラヒック量の順位が低いほど、待ち時間が短くなる。例えば、トラヒック量の順位が最下位であれば、即時に平衡解除処理を実行することが設定されている。
転送確率テーブル633−2には、関連区間数やトラヒック量順位に応じた各パスの確率比が設定さている。転送確率テーブル633−2には、関連区間数、トラヒック量順位、および確率比の欄が設けられている。
関連区間数の欄には、関連区間数の範囲が設定される。図23の例では、3未満と3以上との範囲が関連区間数の欄に設定されている。
トラヒック量順位の欄には、トラヒック量の順位が全体のうちのどの程度の位置にあるのかが設定される。図23の例では、関連区間数が3以上の場合にのみ、トラヒック量の欄に値が設定されている。そして、関連区間をトラヒック量順位に基づいて3つのグループに分類したときに、上位1/3のグループに属するのか、中位1/3のグループに属するのか、下位1/3のグループに属するのかによるグループ分けが示されている。
確率比の欄には、対応する関連区間数およびトラヒック量順位の場合の該当区間の各パスの確率比が設定されている。図23の例では、関連区間数が3未満であれば、確率比が8:2になるように各パスの転送確率が設定される。関連区間数が3以上の場合、トラヒック量順位が上位1/3に属する場合には確率比8:2、トラヒック量順位が中位1/3に属する場合には確率比9:1、トラヒック量順位が下位1/3に属する場合には確率比10:0である。すなわち、トラヒック量順位が低いほど、平衡解除処理で設定する転送確率の偏りが大きくなる。
なお、他のノード600a,600b,600c,600dにも、図23と同じ内容の待ち時間テーブルおよび転送確率テーブルが格納される。すなわち、各ノード600,600a,600b,600c,600dは、共通の基準によって、待ち時間と転送確率とを決定する。
図24は、第3の実施の形態における平衡状態の例を示す図である。図24の例では、ノード600からノード600eへは、10Mbpsのトラヒックが転送されている。ノード600aからノード600eへは、14Mbpsのトラヒックが転送されている。ノード600bからノード600eへは、20Mbpsのトラヒックが転送されている。ノード600cからノード600eへは、30Mbpsのトラヒックが転送されている。ノード600dからノード600eへは、60Mbpsのトラヒックが転送されている。
各ノード600a,600b,600c,600dからノード600e宛の区間には、ノード600fを経由するパスと、ノード600gを経由するパスとが存在する。図24の例では、各ノード600a,600b,600c,600dは、各パスに均等にトラヒックを振り分けている。その結果、ノード600fからノード600eへのリンクのトラヒック量は、67Mbpsとなっている。同様に、ノード600gからノード600eへのリンクのトラヒック量も、67Mbpsとなっている。このように、ノード600e宛のトラヒックが平衡状態に陥っている。
図25は、平衡状態のときの入口ノードのトラヒック制御テーブルの内容を示す図である。図25に示すように、ノード600,600a,600b,600c,600dそれぞれのトラヒック制御テーブル611,611a,611b,611c,611dは、区間ごとに、その区間内の経路に対して50%ずつの転送確率が設定されている。なお、ノード600を入口ノードとし、ノード600eを出口ノードとする区間の区間IDは「A」である。ノード600aを入口ノードとし、ノード600eを出口ノードとする区間の区間IDは「B」である。ノード600bを入口ノードとし、ノード600eを出口ノードとする区間の区間IDは「C」である。ノード600cを入口ノードとし、ノード600eを出口ノードとする区間の区間IDは「D」である。ノード600dを入口ノードとし、ノード600eを出口ノードとする区間の区間IDは「E」である。
図25に示した状態が継続することで、各ノード600,600a,600b,600c,600dでは、ノード600eを宛先とする区間が平衡状態となっていることを検出する。各ノード600,600a,600b,600c,600dで平衡状態が検出されると、ノード600eとのメッセージの送受信を行った後に、平衡解除のための転送確率の変更処理が行われる。
図26は、第3の実施の形態における平衡解除処理の手順の一例を示すシーケンス図である。図26の例では、5台の入口ノードのうち、トラヒック量が最も少ないノード600とトラヒック量が最も多いノード600dとの処理を代表的に示している。以下、図26に示す処理をステップ番号に沿って説明する。
[ステップS61]ノード600は、区間「A」の平衡状態を検出する。
[ステップS62]ノード600は、区間「A」が平衡状態となったことを示す平衡通知メッセージを、出口ノードであるノード600eに送信する。
[ステップS63]ノード600dは、区間「E」の平衡状態を検出する。
[ステップS64]ノード600dは、区間「E」が平衡状態となったことを示す平衡通知メッセージを、出口ノードであるノード600eに送信する。
[ステップS65]ノード600eでは、各ノード600,・・・,600dから送信された平衡通知メッセージを受信する。ノード600eでは、受信した平衡通知メッセージは、通知記憶部634bに格納される。なお、平衡通知メッセージが各ノードから送信される時刻にはある程度の差が生じる。そのためノード600eは、最初の平衡通知メッセージを受信してから、所定の期間待ってから次のステップS66に処理を進める。
[ステップS66]ノード600eは、平衡状態となった区間に関し、トラヒック量の多い順に順位付けを行う。図24の例であれば、ノード600dの順位が「1」、ノード600cの順位が「2」、ノード600bの順位が「3」、ノード600aの順位が「4」、ノード600の順位が「5」となる。
[ステップS67]ノード600eは、平衡状態となった区間それぞれに対する関連区間数を判定する。ある区間に対して、少なくとも1つのリンクが共通となる他の区間が、関連する区間である。そして、ある区間に関連する他の区間の数が関連区間数である。例えば図24の例であれば、ノード600fからノード600eへのリンク、およびノード600gからノード600eへのリンクは、すべての区間に含まれている。すなわち、5つの区間は、少なくとも1つのリンクが共通している。その結果、すべての区間の関連区間数は「4」となる。
[ステップS68]ノード600eは、平衡通知メッセージを送信した各ノードに対して応答メッセージを送信する。応答メッセージには、送信相手のノードの関連区間数やトラヒック量順位が示されている。
[ステップS69]ノード600は、応答メッセージを受信する。
[ステップS70]ノード600は、応答メッセージに示される関連区間数とトラヒック量順位とに基づいて、待ち時間を決定する。図23に示した待ち時間テーブル633−1によれば、トラヒック量順位が最後であるノード600の待ち時間は「0」である。
[ステップS71]ノード600は、応答メッセージに示される関連区間数とトラヒック量順位とに基づいて転送確率を決定する。図23に示した転送確率テーブル633−2によれば、関連区間数が「4」(3以上)で、トラヒック量順位が最後(下位1/3)の場合の確率比は「10:0」である。そこで、ノード600では、一方のパスの転送確率を100%、他方のパスの転送確率を「0%」に変更することが決定される。
[ステップS72]ノード600は、待ち時間を設けずに、区間「A」のパス「A−1」、「A−2」の転送確率を、それぞれ「100%」と「0%」に変更する。
[ステップS73]ノード600dは、応答メッセージを受信する。
[ステップS74]ノード600dは、応答メッセージに示される関連区間数とトラヒック量順位とに基づいて、待ち時間を決定する。図23に示した待ち時間テーブル633−1によれば、トラヒック量順位が「1」であるノード600の待ち時間は「4分」である。
[ステップS75]ノード600dは、応答メッセージに示される関連区間数とトラヒック量順位とに基づいて転送確率を決定する。図23に示した転送確率テーブル633−2によれば、関連区間数が「4」(3以上)で、トラヒック量順位が最初(上位1/3)の場合の確率比は「8:2」である。そこでノード600dでは、一方のパスの転送確率を80%、他方のパスの転送確率を「20%」に変更することが決定される。
[ステップS76]ノード600dは、平衡状態であることを検出してから4分経過後に、依然として平衡状態であるかどうかを確認する。もし既に平衡状態が解消していれば、ステップS77の処理を実行せずに、処理が終了する。平衡状態が解消していなければ、ノード600dは処理をステップS77に進める。
[ステップS77]ノード600dは、区間「E」のパス「E−1」、「E−2」の転送確率を、それぞれ「80%」と「20%」に変更する。
以上のような手順で、平衡状態が解除される。
図26に示したように、入口ノードである各ノード600,600a,600b,600c,600dは、平衡判定処理を行い、区間「A」〜「E」が平衡状態となったと判断すると、平衡通知メッセージを送信する。
図27は、入口ノードから出口ノードに通知される平衡通知メッセージの例を示す図である。図27に示すように、ノード600,600a,600b,600c,600dそれぞれからノード600eに平衡通知メッセージ51〜55が送信される。平衡通知メッセージ51〜55は、宛先、メッセージ種別、区間、パス・構成リンク、および転送量のフィールドを有している。
宛先のフィールドには、平衡通知メッセージ51〜55の宛先のノードのノードIDが設定される。メッセージ種別のフィールドには、平衡通知メッセージであることを示す情報(平衡通知)が設定される。区間のフィールドには、平衡状態と判定された区間の区間IDが設定される。パス・構成リンクのフィールドには、平衡状態となった区間のパスのパスIDと、各パスを構成するリンクを示すリンク情報が設定される。リンク情報は、パスの経路を構成する各リンクの、トラヒック送出元のノードのノードIDと、トラヒック流入先のノードのノードIDとの組で示される。転送量のフィールドには、平衡状態となった区間のトラヒック量が設定される。
このように、平衡通知メッセージ51〜55には、出口ノードであるノード600e宛のトラヒック量の統計情報が含められる。ノード600eは、これら5つの平衡通知メッセージ51〜55を受信する。なお平衡通知メッセージ51〜55が同時刻に到達しない場合も十分ありうるので、ノード600eは、最初の平衡通知メッセージを受信してから一定時間、他の平衡通知メッセージの受信を待つ。そして、ノード600eは、一定時間内に受け取ったすべての平衡通知メッセージ51〜55の内容から、以下の情報を認識する。
第1には、トラヒック量の多い順は、ノードIDの「5」、「4」、「3」、「2」、「1」の順であることを認識する。
第2には、ノードID「1」のノード600と関連する区間は4つある(リンク7→6、8→6が同じ)ことを認識する。同様に、ノードID「2」、「3」、「4」、「5」のノード600a,600b,600c,600dと関連する区間は4つある(リンク7→6、8→6が同じ)ことを認識する。
そして、ノード600eは、平衡通知メッセージ51〜55の通知元に対して、応答メッセージを送信する。
図28は、応答メッセージの例を示す図である。図28に示すように、応答メッセージ61〜65は、宛先、メッセージ種別、区間、関連区間数、およびトラヒック量順位のフィールドを有している。
宛先のフィールドには、応答メッセージ61〜65の宛先のノードのノードIDが設定される。メッセージ種別のフィールドには、平衡通知に対して情報を応答する応答メッセージであることを示す情報(情報応答)が設定される。区間のフィールドには、平衡状態と判定された区間の区間IDが設定される。関連区間数のフィールドには、対応する区間に関連する区間の数(関連区間数)が設定される。トラヒック量順位の欄には、対応する区間のトラヒック量が、ノード600eを宛先として平衡状態となった区間の中で何番目かを示す数値(トラヒック量順位)が設定される。
入口ノードであるノード600,600a,600b,600c,600dは応答メッセージ61〜65を受信する。そしてノード600,600a,600b,600c,600dは、図23に示した解除方法に従って待ち時間と、変更後のパスの転送確率を決定する。すなわち、トラヒック量の少ないノードほど、平衡解除のための転送確率の変更処理を早く実行する。また、トラヒック量の少ないノードほど、変更後の転送確率の偏り度合いを大きくする。その結果、応答メッセージ61〜65がノード600,600a,600b,600c,600dに送信されると、まずノード600によって転送確率の変更処理が行われる。
図29は、ノードID「1」のノードで転送確率を変更した状態を示す図である。図29に示すように、ノード600は、自身が一番少ないトラヒック量であるため、即時に転送確率の比が10:0になるように、パス「A−1」とパス「A−2」との転送確率を変更する。すなわち、パス「A−1」の転送確率が「100%」、パス「A−2」の転送確率が「0%」に変更されている。
図30は、ノードID「1」のノードでの転送確率変更後の各リンクのトラヒック量を示す図である。ノード600で転送確率が変更されたことにより、ノード600からノード600fへのリンクのトラヒック量は10Mbpsとなり、ノード600からノード600gへのリンクのトラヒック量は0Mbpsとなっている。その結果、ノード600fからノード600eへのリンクのトラヒック量は72Mbpsに増加し、ノード600gからノード600eへのリンクのトラヒック量は62Mbpsに減少している。なお、各リンクの輻輳抑制制御開始の閾値は、80Mbpsであるものとする。
ノード600fからノード600eへのリンクとノード600gからノード600eへのリンクとは、転送確率を変更した区間「A」との他の区間「B」、「C」、「D」、「E」それぞれとの間で共通するリンクである。そのため、ノード600fからノード600eへのリンクと、ノード600gからノード600eへのリンクとのトラヒック量の増減により、変更される誘引力は、ノード600a,600b,600c,600dに伝播する。そして、ノード600a,600b,600c,600dは、伝播した誘引力に応じて、平衡状態となっていた区間の転送確率を変更する。誘引力の計算方法は、第2の実施の形態と同様であるものとする。この場合、区間「B」、「C」、「D」、「E」のパスの転送確率は次のように変化する。
パス「B−1」、「C−1」、「D−1」、「E−1」:52.4%
パス「B−2」、「C−2」、「D−2」、「E−2」:47.6%
このような転送確率の変化によって、トラヒック転送量がさらに変化する。
図31は、ノードID「2」、「3」、「4」、「5」のノードでの転送確率変更後の各リンクのトラヒック量を示す図である。ノード600aからノード600fへのリンクのトラヒック量は7.3Mbpsとなり、ノード600aからノード600gへのリンクのトラヒック量は6.7Mbpsとなっている。ノード600bからノード600fへのリンクのトラヒック量は10.5Mbpsとなり、ノード600bからノード600gへのリンクのトラヒック量は9.5Mbpsとなっている。ノード600cからノード600fへのリンクのトラヒック量は15.7Mbpsとなり、ノード600cからノード600gへのリンクのトラヒック量は14.3Mbpsとなっている。ノード600dからノード600fへのリンクのトラヒック量は31.4Mbpsとなり、ノード600dからノード600gへのリンクのトラヒック量は28.6Mbpsとなっている。その結果、ノード600fからノード600eへのリンクのトラヒック量は74.9Mbpsに増加し、ノード600gからノード600eへのリンクのトラヒック量は59.1Mbpsに減少している。
図31に示したように1つの入口ノードで平衡解除動作を実行すると、ネットワーク上の各リンクの誘引力が更新され、転送確率もノード600fを経由するパスのほうが高い転送確率となる方向に変動する。その結果、すべての入口ノードにおいて平衡状態が解除される。
このように、第3の実施の形態では、トラヒック量の少ない順に平衡解除動作をさせている。しかも関連区間が4と多かったため、トラヒック量の少ないノードの平衡解除動作は、他の区間と共有するリンクでのトラヒック量全体に与える変化としては小さくなる。そのため、確率比を「10:0」と極端な変更を行っても輻輳の発生の危険性は少ない。また確率比を「10:0」とする極端な変更を行うことで、トラヒックを早期に集約させることができる。なお、トラヒック量の少ない区間で確率の変更度合いを少なくすると、微小な変化しか引き起こせず、バランスが崩れて収束状態となるまでには時間がかかってしまう。ただし、関連区間がない場合などは、極端な変更をすると大きなトラヒック変動を引き起こす可能性があるため、8:2などといった変動にすることが妥当である。
また、トラヒック量が多い順に平衡解除動作をさせる場合、たとえば第3の実施の形態において60Mbpsの転送量である区間「E」で8:2に変更したとすると、リンク「7→6」がいきなり85Mbpsとなってしまい、輻輳抑制制御の閾値を超える。従って、トラヒック量の大きい区間の平衡解除動作をするときは、一時的に品質劣化を引き起こす可能性が高くなるといえる。しかしながら、変化の度合いが大きいとバランスが崩れて収束状態となるまでの時間は短くて済む。これらのパラメータはオペレータのポリシーによって調整可能である。
〔第4の実施の形態〕
次に第4の実施の形態について説明する。第4の実施の形態は、平衡状態メッセージを受信した出口ノードにおいて、入口ノードでの平衡解除動作のタイミングや変更内容を決定した上で、決定結果を入口ノードに伝えるものである。すなわち、前述の第3の実施の形態では、応答を受けた入口ノードで、バランス解除動作のタイミングや量を決定したが、第4の実施の形態では、これらの決定を出口ノードでまとめて行う。このように出口ノードでまとめて平衡解除動作のタイミングなどを管理することで、トラヒック量の多い順、少ない順に行うというやり方だけではなく、より信頼性の高い制御が可能となる。例えば、品質を劣化させないで平衡状態を解消できるように、平衡解除動作させる区間を選び、変更確率を決定するということが可能である。
第4の実施の形態では、平衡状態となった各区間の収容可残量を用いて、平衡解除動作を行う入口ノードを決定するものとする。区間の収容可残量は、その区間の各パスの収容可残量のうちの最小の値である。またパスの収容可残量は、そのパスに含まれる各リンクの収容可残量のうちの最小値である。従って、区間の収容可残量は、その区間の各パスに含まれるすべてのリンクの収容可残量のうちの最小値となる。
ここで、リンクの収容可残量は、各リンクの収容可能量からトラヒック量を減算した値である。
図32は、収容可残量を説明する図である。リンク70には、リンク帯域Wが決まっている。リンク帯域Wは、そのリンク70で転送可能なトラヒックの最大量である。しかし、リンク帯域Wを超えてトラヒックがリンク70へ流入するすると、輻輳が発生する。そこで、リンク帯域Wより小さい値の輻輳閾値Cが設定されている。輻輳閾値Cは、例えばリンク帯域W×0.8の値である。トラヒック量Tが輻輳閾値Cに達すると、輻輳抑制制御が開始される。そのため、輻輳閾値までのトラヒック量が、リンク70の収容可容量と定義される。そして、収容可容量から実際に流れているトラヒック量Tとの差分が、収容可残量である。
このような収容可残量がリンクごとに計算できる。そして、区間の各パスに含まれるすべてのリンクの収容可残量のうち、最も少ない値がパス収容可残量である。第4の実施の形態では、平衡状態となった各区間の区間収容可残量を用い、輻輳閾値を超えない範囲でできるだけ大きなトラヒックの偏りが発生するように、出口ノードで制御する。
第4の実施の形態のネットワーク構成は、図21に示した第3の実施の形態の構成と同じである。
図33は、第4の実施の形態に係るノードの機能を示すブロック図である。第4の実施の形態の機能の多くは、第3の実施の形態と同じである。そこで、第3の実施の形態と同じ機能の要素には、図22に示された要素と同じ符号を附し、説明を省略する。
第3の実施の形態と異なる機能は、制御パケット管理部631a、収容可残量記憶部633f、平衡通知メッセージ生成部633g、平衡解除部633h、および応答部634dである。
制御パケット管理部631aは、第3の実施の形態の制御パケット管理部631が有する機能に加え、収容可残量最小値を受け渡す機能を有する。すなわち、第4の実施の形態では、パスを構成するリンク(入口ノードに接続していないリンク)に関する情報を得るための手段がさらに必要となるが、制御パケット管理部631aは、パスに沿って誘引力を通知する手段を備えている。そこで、制御パケット管理部631aは、ノード600が出口ノードまたは中継ノードとして機能する場合、誘引力を通知する制御パケットに、各リンクの実際のトラヒック情報を含めることで、入口ノードへリンクのトラヒック量を通知する。具体的には、制御パケット管理部631aは、トラヒック記憶部632bを参照し、流入トラヒック量、リンク帯域、およびトラヒック利用制限値から、各リンクの収容可残量を算出する。そして、制御パケット管理部631aは、ノード600が出口ノードであれば、算出したリンクの収容可残量をパスの収容可残量として、誘引力と共に制御パケットによって、該当リンクで接続されたノードへ送信する。
また制御パケット管理部631aは、ノード600が中継ノードであれば、入口ノード側に隣接するノードとの間のリンクの収容可残量を算出する。そして制御パケット管理部631aは、算出したリンクの収容可残量と、出口ノード側に隣接するノードから取得したパスの収容可残量とを比較する。算出した収容可残量の方が小さければ、制御パケット管理部631aは、算出したリンクの収容可残量の値を、パスの収容可残量として決定する。算出した収容可残量が通知されたパス収容可残量以上であれば、制御パケット管理部631aは、パスの収容可残量を変更しないものと決定する。そして、制御パケット管理部631aは、決定したパスの収容可残量を制御パケットによって、入口ノード側に隣接するノードへ送信する。
また制御パケット管理部631aは、ノード600が入口ノードとして機能する場合、隣接するノードから受信した制御パケットからパスの収容可残量を抽出し、収容可残量記憶部633fに格納する。
収容可残量記憶部633fは、ノード600が入口ノードとして機能する場合に、区間ごとのパスの収容可残量を記憶する。例えばRAMやHDDの記憶領域の一部が、収容可残量記憶部633fとして使用される。
平衡通知メッセージ生成部633gは、第3の実施の形態における平衡通知メッセージ生成部633cが有する機能に加え、平衡通知メッセージに区間の収容可残量を含める機能を有する。すなわち、平衡通知メッセージ生成部633gは、平衡状態となった区間を検知した場合には、その区間の各パスの収容可残量を、収容可残量記憶部633fから取得する。そして平衡通知メッセージ生成部633gは、取得したパスの収容可残量のうちの最小値を区間の収容可残量として平衡通知メッセージに含め、その平衡通知メッセージを制御パケット管理部631aを介して出口ノードに送信する。
平衡解除部633hは、平衡通知メッセージに対する応答メッセージを制御パケット管理部631aから受け取ると、その応答メッセージの内容に応じて平衡解除動作を行う。例えば応答メッセージには、平衡状態となった区間の各パスの転送確率の比(確率比)が示されている。なお、応答メッセージに変更後の確率比が示されていない場合、平衡解除部633hは、平衡解除動作を実行しない。
応答部634dは、制御パケット管理部631aから受信した平衡通知メッセージに基づいて、平衡解除動作を実行するノードを決定する。その際、応答部634dは、平衡状態となった各区間の収容可残量を参照し、輻輳抑制制御の閾値を超えない範囲で、最も大きなトラヒックの偏りを生じさせることができる区間を選択する。そして応答部634dは、該当区間の入口ノードを、平衡解除動作を実行するノードに決定する。
例えば、応答部634dは、以下の式により、平衡状態(転送確率が50%ずつ)から転送確率を80%に変更したときのトラヒック増加予定量Yを参照する。
Y=X×(0.8−0.5) ・・・(4)
ここでXは、区間に流入するトラヒック量である。応答部634dは、例えば平衡状態となった区間のうちトラヒック増加予定量Yが大きい順に選択し、その区間の収容可残量と比較する。応答部634dは、選択した区間のトラヒック増加量が該当区間の収容可残量未満であれば、選択した区間の入口ノードを、平衡解除動作を実行するノードとする。
応答部634dは、平衡解除動作を実行する入口ノード宛に、平衡解除動作時の転送確率の比を指定した応答メッセージを、制御パケット管理部631aを介して送信する。また応答部634dは、平衡解除動作を実行する入口ノード以外の入口ノードに対しては、平衡解除動作時の転送確率の比を含まない応答メッセージを、制御パケット管理部631aを介して送信する。
なお、図33にはノード600の機能を示したが、他のノード600a,600b,600c,600d,600e,600f,600gも同様の機能を有している。
次に、パスの収容可残量を通知するための制御パケット(状態通知制御パケット)のデータフォーマットについて説明する。
図34は、状態通知制御パケットの例を示す図である。なお図34の状態通知制御パケット71,72には、図24に示したトラヒックが発生している場合のパスの収容可残量が示されている。
図34に示すように状態通知制御パケット71,72には、宛先、区間、パス、誘引力、およびパス収容可残量のフィールドが設けられている。宛先のフィールドには、状態通知制御パケット71,72の宛先となるノードのノードIDが設定される。区間のフィールドには、状態通知の対象となっている区間の区間IDが設定される。パスのフィードには、状態通知の対象となっているパスのパスIDが設定される。誘引力のフィールドには、入口側に隣接するノードとの間のリンクの誘引力が設定される。パス収容可残量のフィールドには、出口ノードから各ノードまでの経路のリンクの収容可残量のうち、最も小さい値が、パスの収容可残量として設定される。
例えば、出口ノードであるノード600eでは、ノード600fからノード600eへのリンク(リンク「7→6」)の収容可残量が計算される。図24を参照すると、リンク「7→6」のトラヒック量は67Mbpsである。各リンクのリンク帯域が100Mbps、輻輳閾値が80Mbpsであるものとすると、リンク「7→6」の収容可残量は13Mbpsである。そこで、ノード600eからノード600fへ送信される状態通知制御パケット71には、パスの収容可残量として13Mbpsが設定される。
中継ノードであるノード600fでは、ノード600からノード600fへのリンク(リンク「1→7」)の収容可残量が計算される。図24を参照すると、リンク「1→7」のトラヒック量は5Mbpsである。すると、リンク「1→7」の収容可残量は75Mbpsである。ノード600fが算出したリンクの収容可残量は、ノード600eから通知されたパスの収容可残量よりも大きい。そのため、ノード600fは、パスの収容可残量の値を更新せずに、状態通知制御パケット72をノード600に送信する。
なお、誘引力は、各ノードで算出され、状態通知制御パケット71,72内の誘引力が更新される。その結果、ノード600eから通知された誘引力「P1」が、ノード600fで計算した誘引力「P2」に更新されている。
状態通知制御パケット72を受信したノード600では、パスの収容可残量が収容可残量記憶部633fに格納される。そして、入口ノードであるノード600は、状態通知制御パケット72に基づいて、パス「A−1」のパス収容可能残量が13Mbpsであるということを把握する。
図35は、収容可残量記憶部のデータ構造例を示す図である。収容可残量記憶部633fには、残量管理テーブル633−3が格納されている。残量管理テーブル633−3には、宛先、区間、パス、およびパス収容可残量の欄が設けられている。
宛先の欄には、区間の出口ノードのノードIDが設定される。区間の欄には,区間の区間IDが設定される。パスの欄には、区間に設定されたパスのパスIDが設定される。パス収容可残量の欄には、パスの収容可残量が設定される。
平衡通知メッセージ生成部633gは、平衡状態となった区間がある場合、残量管理テーブル633−3を参照し、その区間の収容可残量を判断することができる。すなわち、平衡通知メッセージ生成部633gは、平衡状態となった区間の各パスの収容可残量のうちの最小値を、その区間の収容可残量とする。
以下、図24に示したような平衡状態が発生した場合の第4の実施の形態における処理手順について説明する。
図36は、第4の実施の形態における平衡解除処理の手順の一例を示すシーケンス図である。図36の例では、5台の入口ノードのうち、ノード600とノード600cとの処理を代表的に示している。以下、図36に示す処理をステップ番号に沿って説明する。
[ステップS81]ノード600は、区間「A」の平衡状態を検出する。
[ステップS82]ノード600は、区間「A」が平衡状態となったことを示す平衡通知メッセージを、出口ノードであるノード600eに送信する。この際、平衡通知メッセージには、区間「A」の収容可残量が含められる。
[ステップS83]ノード600cは、区間「D」の平衡状態を検出する。
[ステップS84]ノード600cは、区間「D」が平衡状態となったことを示す平衡通知メッセージを、出口ノードであるノード600eに送信する。この際、平衡通知メッセージには、区間「D」の収容可残量が含められる。
[ステップS85]ノード600eでは、各ノード600,・・・,600dから送信された平衡通知メッセージを受信する。ノード600eでは、受信した平衡通知メッセージは、通知記憶部634bに格納される。なお、平衡通知メッセージが各ノードから送信される時刻にはある程度の差が生じる。そのためノード600eは、最初の平衡通知メッセージを受信してから、所定の期間待ってから次のステップS86に処理を進める。
[ステップS86]ノード600eは、平衡状態となった各区間のトラヒック増加予定量を、前述の式(4)を用いて計算する。
[ステップS87]ノード600eは、平衡解除動作を実行させるノードを選択する。具体的にはノード600eは、所定の割合(例えば8:2)でトラヒックを偏らせても輻輳抑制制御が開始されない区間のうち、トラヒック増加予定量が最も大きい区間の入口ノードを、平衡解除動作を実行させるノードとして選択する。図36の例では、ノード600cが、平衡解除動作を実行させるノードとして選択されている。
[ステップS88]ノード600eは、平衡通知メッセージを送信した各ノードに対して、応答メッセージを送信する。この際、ノード600eは、平衡解除動作を実行させるノード600cに対しては、変更後の各パスの転送確率の比を指定した応答メッセージを送信する。また、ノード600eは、平衡解除動作を実行させるノード600c以外のノード600に対しては、変更後の各パスの転送確率の比を指定しない応答メッセージを送信する。
[ステップS89]ノード600は、応答メッセージを受信する。ノード600が受信した応答メッセージには転送確率の比が示されていないため、ノード600は平衡解除動作を行わずに処理を終了する。
[ステップS90]ノード600cは、応答メッセージを受信する。ノード600cが受信した応答メッセージには転送確率の比が示されているため、ノード600cは処理をステップS91に進める。
[ステップS91]ノード600dは、応答メッセージに示された転送確率の比に従って、区間「D」の各パスの転送確率を設定する。なお、応答メッセージに待ち時間が示されている場合、ノード600dは、指定された待ち時間経過後に転送確率の変更を行う。
以上のような手順で、平衡状態が解除される。
次に、入口ノードから出口ノードに送信される平衡通知メッセージの内容について詳細に説明する。
図37は、入口ノードから出口ノードに送信される平衡通知メッセージの例を示す図である。図24に示したような平衡状態が発生すると、入口ノードである各ノード600,600a,600b,600c,600dから出口ノードであるノード600eへ、平衡通知メッセージ81〜85が送信される。第4の実施の形態における平衡通知メッセージ81〜85は、図27に示した第3の実施の形態の平衡通知メッセージ51〜55に対して、区間収容可残量のフィールドを追加したものである。
区間収容可残量のフィールドには、平衡状態となった区間の収容可残量が設定される。図37の例では、すべての区間「A」、「B」、「C」、「D」、「E」の収容可残量が13Mbpsである。
このような平衡通知メッセージ81〜85を受信したノード600eは、13Mbpsを超えない範囲でなるべくトラヒック量に偏りをつけられるような区間を判断する。平衡解除動作で設定する転送確率の比が8:2であるものとすると、区間ごとに式(4)によりトラヒック増加予定量Yが計算される。そして、トラヒック増加予定量Yが、区間の収容可能残量である13Mbpsを超えない範囲で最も大きい区間が選択される。
図37の例では、区間「A」のトラヒック増加予定量は3Mbpsである。区間「B」のトラヒック増加予定量は4.2Mbpsである。区間「C」のトラヒック増加予定量は6Mbpsである。区間「D」のトラヒック増加予定量は9Mbpsである。区間「E」のトラヒック増加予定量は18Mbpsである。
すると、区間「E」については、転送確率の比を8:2(80%と20%)にしてしまうと、トラヒック増加予定量が区間の収容可能残量を超えてしまう。そこで、区間「E」以外の区間のうち、トラヒック増加予定量が最も大きい区間「D」が選択され、その区間の入口ノードであるノード600cが平衡解除動作を実行させるノードとして決定される。
そして、ノード600eからノード600cにのみ変更割合と待ち時間を指示する応答メッセージが送信され、ほかのノード600,600a,600b,600dには何もしないように指示する応答メッセージが送信される。
図38は、第4の実施の形態における応答メッセージの例を示す図である。図38に示すように、応答メッセージ91〜95は、宛先、メッセージ種別、区間、確率比、および待ち時間のフィールドを有している。
宛先のフィールドには、応答メッセージ91〜95の宛先のノードのノードIDが設定される。メッセージ種別のフィールドには、平衡通知に対して指示を応答する応答メッセージであることを示す情報(指示応答)が設定される。区間のフィールドには、平衡状態と判定された区間の区間IDが設定される。確率比のフィールドには、均衡解除動作時にパスに設定する転送確率の比が設定される。待ち時間のフィールドには、均衡解除動作を実行するまでの待ち時間が設定される。
図38の例では、ノード600cへの応答メッセージ94のみ、確率比が設定されている。その結果、ノード600cのみが、平衡状態となった区間の各パスの転送確率を、確率比に応じた転送確率(80%と20%)に変更する平衡解除動作を実行する。
なお、ノード600eは、上記の例のように平衡解除動作対象のノードとして1つのノードだけを選んでもよいし、複数のノードを選んでもよい。複数のノードを選んだ場合、ノード600eは、トラヒック増加予定量が大きい区間の入口ノードほど、先に平衡解除動作が実行されるように、応答メッセージの待ち時間に差を設けることができる。
また、平衡解除動作対象のノードを複数選んだ場合、選んだ各ノードに異なる確率比を通知してもよい。例えば、転送量が少ない区間の入口ノードに対しては、「10:0」の確率比を通知してもよい。
以上のようにして、出口ノードにおいて平衡解除動作の詳細な指示を行うことで、通信品質を維持したまま、迅速に平衡状態を解消させることができる。
〔その他の実施の形態〕
なお、上記の例では分散状態カウンタにより、分散状態の経過時間を計測しているが、他の方法で時間を計測してもよい。例えば、分散状態になった時刻を記録し、その時刻からの経過時間を監視してもよい。また、各パスの確率が一定期間変わらない場合に、平衡状態であると判断してもよい。
なお、パスの誘引力は負荷の多い経路が多くなるようにいろいろな定義が可能である。
また、上記の処理機能は、コンピュータによって実現することができる。その場合、各ノードが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD、DVD−RAM、CD−ROM/RWなどがある。光磁気記録媒体には、MO(Magneto-Optical disc)などがある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
また、上記の処理機能の少なくとも一部を、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現することもできる。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
以上の実施の形態に開示された技術には、以下の付記に示す技術が含まれる。
(付記1) ネットワークを介して接続された装置宛のデータを、該ネットワーク上の複数の経路のいずれかを介して転送するデータ転送装置において、
前記複数の経路それぞれを前記装置宛のデータの転送に利用する割合を示す利用割合が記憶された記憶手段を参照し、各経路の利用割合に応じて前記装置宛のデータをいずれかの経路に振り分けて転送する転送手段と、
データ転送の負荷が他よりも少ない経路の前記記憶手段に設定された利用割合を下げていく集約手段と、
利用割合が所定値より大きい経路が複数存在している状態が所定時間以上継続している場合、平衡状態であると判定する平衡判定手段と、
平衡状態と判定された場合、経路間で偏りを持たせた利用割合を前記記憶手段に設定する平衡解除手段と、
を有することを特徴とするデータ転送装置。
(付記2) 前記平衡解除手段は、前記装置宛のデータ転送が平衡状態と判断され、かつ前記複数の経路のいずれかで輻輳の予兆が検出されていない場合に、経路間で偏りを持たせた利用割合を前記記憶手段に設定する付記1記載のデータ転送装置。
(付記3) 前記平衡解除手段は、前記装置宛のデータ転送が平衡状態と判断されてからの待ち時間を決定し、該待ち時間経過後に、経路間で偏りを持たせた利用割合を前記記憶手段に設定することを特徴とする付記1または2のいずれかに記載のデータ転送装置。
(付記4) 前記平衡判定手段は、平衡状態となった後、前記装置宛のデータ転送が所定以上の偏りを持った利用割合で前記複数の経路へ送出されている場合、平衡状態が解消したものと判定し、
前記平衡解除手段は、前記装置宛のデータ転送が平衡状態と判断され、かつ前記待ち時間経過前に平衡状態が解消していない場合に、経路間で偏りを持たせた利用割合を前記記憶手段に設定することを特徴とする付記3記載のデータ転送装置。
(付記5) 前記平衡解除手段は、ランダムに生成した時間を前記待ち時間に決定することを特徴とする付記3または4のいずれかに記載のデータ転送装置。
(付記6) 前記平衡解除手段は、前記装置宛のデータ転送が平衡状態となった場合、該装置に対して平衡状態になったことを通知し、該通知に対する該装置からの応答内容に応じて、前記待ち時間を決定することを特徴とする付記3または4のいずれかに記載のデータ転送装置。
(付記7) 前記平衡解除手段は、前記装置に対して平衡状態になったことを通知した複数の平衡状態装置を前記装置宛のトラヒック量によって順位付けしたときの、前記データ転送装置の順位を前記装置から取得し、該順位に応じて待ち時間を決定することを特徴とする付記6記載のデータ転送装置。
(付記8) 前記平衡解除手段は、前記装置宛のデータ転送が平衡状態となった場合、該装置に対して平衡状態になったことを通知し、通知に対する該装置からの応答内容に応じて、前記複数の経路それぞれの利用割合の偏り度合いを決定することを特徴とする付記1乃至7のいずれかに記載のデータ転送装置。
(付記9) 前記平衡解除手段は、前記装置に対して平衡状態になったことを通知した複数の平衡状態装置を前記装置宛のトラヒック量によって順位付けしたときの、前記データ転送装置の順位を前記装置から取得し、該順位に応じて前記複数の経路それぞれの利用割合の偏り度合いを決定することを特徴とする付記8記載のデータ転送装置。
(付記10) 前記平衡解除手段は、前記複数の平衡状態装置のうち、前記複数の経路と少なくとも一部が重複する経路で前記装置へデータを転送する関連装置を前記装置宛のトラヒック量によって順位付けしたときの前記データ転送装置の順位と、前記関連装置の数とを前記装置から取得し、前記関連装置の数と前記順位とに応じて前記複数の経路それぞれの利用割合の偏り度合いを決定することを特徴とする付記9記載のデータ転送装置。
(付記11) ネットワークを介して接続された装置からのデータを、該ネットワーク上の複数の経路のいずれかを介して受信するデータ受信装置において、
前記データ受信装置宛のデータ転送が、データの転送に利用する割合を示す利用割合が所定値より大きい経路が複数存在している状態が所定時間以上継続した平衡状態であること、および前記データ受信装置宛のデータの転送量が示された通知を複数の装置から取得し、記憶手段に格納する通知取得手段と、
前記記憶手段を参照し、前記複数の装置それぞれから前記データ受信装置宛に送信したデータ量に基づいて前記複数の装置宛の応答内容を決定し、決定した応答内容を前記複数の装置それぞれに対して送信する応答手段と、
を有することを特徴とするデータ受信装置。
(付記12) 前記応答手段は、前記複数の装置それぞれから前記データ受信装置宛に送信したデータ量の多い順に該複数の装置を順位付けし、前記複数の装置それぞれに対して順位を応答することを特徴とする付記11記載のデータ受信装置。
(付記13) 前記応答手段は、前記複数の経路と少なくとも一部が重複する経路で前記装置へデータを転送する関連装置を前記装置宛のトラヒック量によって順位付けしたときの前記データ転送装置の順位と、前記関連装置の数とを応答することを特徴とする付記11記載のデータ受信装置。
(付記14) 前記応答手段は、通知を送信した前記複数の装置の少なくともいずれか1つを選択し、該選択した装置に対して、前記データ受信装置宛のデータ転送に利用可能な前記複数の経路それぞれの利用割合に偏りを持たせた該利用割合の変更指示を送信することを特徴とする付記11記載のデータ受信装置。
(付記15) 前記応答手段は、前記データ受信装置宛のデータ転送に利用可能な複数の経路それぞれの利用割合を所定の割合に偏りを持たせた場合に輻輳抑制制御が開始されない装置のうち、該所定の割合に偏りを持たせた場合にトラヒックが増加する経路のトラヒック増加量が多い装置を優先的に選択することを特徴とする付記14記載のデータ受信装置。
(付記16) ネットワークを介して接続された装置宛のデータを、該ネットワーク上の複数の経路のいずれかを介して転送するデータ転送方法において、
コンピュータが、
前記複数の経路それぞれを前記装置宛のデータの転送に利用する割合を示す利用割合が記憶された記憶手段を参照し、各経路の利用割合に応じて前記装置宛のデータをいずれかの経路に振り分けて転送し、
データ転送の負荷が他よりも少ない経路の前記記憶手段に設定された利用割合を下げていき、
利用割合が所定値より大きい経路が複数存在している状態が所定時間以上継続している場合、平衡状態であると判定し、
平衡状態と判定された場合、経路間で偏りを持たせた利用割合を前記記憶手段に設定する、
ことを特徴とするデータ転送方法。
(付記17) ネットワークを介して接続された装置宛のデータを、該ネットワーク上の複数の経路のいずれかを介して転送する処理をコンピュータに実行させるデータ転送プログラムにおいて、
前記コンピュータに、
前記複数の経路それぞれを前記装置宛のデータの転送に利用する割合を示す利用割合が記憶された記憶手段を参照し、各経路の利用割合に応じて前記装置宛のデータをいずれかの経路に振り分けて転送し、
データ転送の負荷が他よりも少ない経路の前記記憶手段に設定された利用割合を下げていき、
利用割合が所定値より大きい経路が複数存在している状態が所定時間以上継続している場合、平衡状態であると判定し、
平衡状態と判定された場合、経路間で偏りを持たせた利用割合を前記記憶手段に設定する、
処理を実行させることを特徴とするデータ転送プログラム。