(57)【要約】【課題】ノード間で通信帯域を公平に共有するための帯域制御機能が適用された通信システムで、通信の遮断を抑制し、通信帯域の利用効率を向上させることを目的とする。【解決手段】トポロジデータベース（ＴＤＢ）４３０は、ＲＰＲネットワークに属する各ＲＰＲノードの数を記憶する。トラフィックレイト計測部４７０−１〜２は、それぞれフェアネス制御対象トラフィックが利用可能な通信帯域を計算するための各種パラメータをフェアネス制御部４６０−１〜２に送る。フェアネス制御部４６０−１〜２は、輻輳を検出すると、トラフィックレイト計測部４７０−１〜２から送られたパラメータから計算されるフェアネス制御対象トラフィックが利用可能な通信帯域をノード数で除算した結果をフェアレイトの初期値とする。【選択図】図２
2008219722.tif 000002
【特許請求の範囲】
【請求項１】
送受信されるフレームの集合であるトラフィックであって通信帯域が上限値以下に制御されるトラフィックであるフェアネス対象制御トラフィックの通信帯域の上限値を示すフェアレイトを、自身が属する通信システムの他のノードに送信するノードであって、
自ノードが送信元となって自ノードから送信したフェアネス制御対象トラフィックの通信帯域と、他のノードから送信されて自ノードを通過するフェアネス制御対象トラフィックの通信帯域とを計測するトラフィックレイト計測手段と、
自ノードが送信元となって自ノードから送信したフェアネス制御対象トラフィックの通信帯域と、他のノードから送信されて自ノードを通過するフェアネス制御対象トラフィックの通信帯域とを用いて求められるフェアネス制御対象トラフィックが利用可能な通信帯域を、輻輳箇所を通過するフェアネス制御対象トラフィックを送信するノードのノード数とみなすことが可能な値で除算することによりフェアレイトを算出するフェアネス制御手段とを備えた
ことを特徴とするノード。
【請求項２】
フェアネス制御手段は、
隣接ノードと自ノードとを接続するリンクの通信帯域から通信帯域が保証されているトラフィックである帯域保証型トラフィックの通信帯域を減算した値から、自ノードが送信元となって自ノードから送信した帯域保証型トラフィックの通信帯域と他のノードから送信されて自ノードを通過する帯域保証型トラフィックの通信帯域との合計を減算することによって、フェアネス制御対象トラフィックが利用可能な通信帯域を算出し、
前記フェアネス制御対象トラフィックが利用可能な通信帯域を算出するときに、自ノードが送信元となって自ノードから送信した帯域保証型トラフィックの通信帯域と他のノードから送信されて自ノードを通過する帯域保証型トラフィックの通信帯域との合計を、トラフィックレイト計測手段によって計測された通信帯域から算出する
請求項１に記載のノード。
【請求項３】
フェアネス制御手段は、自ノードが送信元となって自ノードから送信したフェアネス制御対象トラフィックの通信帯域と、他のノードから送信されて自ノードを通過するフェアネス制御対象トラフィックの通信帯域とを加算することによって、フェアネス制御対象トラフィックが利用可能な通信帯域を算出する
請求項１に記載のノード。
【請求項４】
送受信されるフレームの集合であるトラフィックであって通信帯域が上限値以下に制御されるトラフィックであるフェアネス対象制御トラフィックの通信帯域の上限値を示すフェアレイトを、自身が属する通信システムの他のノードに送信するノードであって、
自ノードが送信元となって自ノードから送信したフェアネス制御対象トラフィックの通信帯域と、他のノードから送信されて自ノードを通過するフェアネス制御対象トラフィックの通信帯域との総和を計測するトラフィックレイト計測手段と、
トラフィックレイト計測手段によって測定された前記総和を、輻輳箇所を通過するフェアネス制御対象トラフィックを送信するノードのノード数とみなすことが可能な値で除算することによりフェアレイトを算出するフェアネス制御手段とを備えた
ことを特徴とするノード。
【請求項５】
自ノードの上流に配置される各ノードの数を記憶するノード数記憶手段を備え、
フェアネス制御手段は、輻輳箇所を通過するフェアネス制御対象トラフィックを送信するノードのノード数として、ノード数記憶手段に記憶されたノード数を用いてフェアレイトを算出する
請求項１から請求項４のうちのいずれか１項に記載のノード。
【請求項６】
通信システムに属するノードの数を記憶するノード数記憶手段を備え、
フェアネス制御手段は、輻輳箇所を通過するフェアネス制御対象トラフィックを送信するノードのノード数として、ノード数記憶手段に記憶されたノード数を用いてフェアレイトを算出する
請求項１から請求項４のうちのいずれか１項に記載のノード。
【請求項７】
受信したフェアネス制御対象トラフィックを構成するフレームに格納された当該フレームの送信元ノードを示す送信元ノード識別子を記憶する送信元ノード識別子記憶手段と、
フェアネス制御対象トラフィックを構成するフレームを受信したときに当該フレームに格納されている送信元ノード識別子が送信元ノード識別子記憶手段に記憶されているか否かを判定し、前記送信元ノード識別子が送信元ノード識別子記憶手段に記憶されていなければ、前記送信元ノード識別子を送信元ノード識別子記憶手段に記憶させ、輻輳箇所を通過するフェアネス制御対象トラフィックを送信するノードのノード数を表す値を、送信元ノード識別子記憶手段に記憶された送信元ノード識別子の数に基づいて定めるノード計数手段とを備える
請求項１から請求項４のうちのいずれか１項に記載のノード。
【請求項８】
フェアネス制御対象トラフィックを構成するフレームを受信したときに当該フレームに格納されたＴＴＬを、ＴＴＬの初期値から減算し、輻輳箇所を通過するフェアネス制御対象トラフィックを送信するノードのノード数を表す値を、前記減算結果の最大値に基づいて定めるノード計数手段とを備える
請求項１から請求項４のうちのいずれか１項に記載のノード。
【請求項９】
ノード計数手段は、輻輳箇所を通過するフェアネス制御対象トラフィックを送信するノードのノード数を表す値を所定期間毎に初期値に初期化する
請求項７または請求項８に記載のノード。
【請求項１０】
ノード計数手段は、輻輳箇所を通過するフェアネス制御対象トラフィックを送信するノードのノード数を表す値の初期化前の値に基づいて初期値を定める
請求項９に記載のノード。
【請求項１１】
通信経路がＬＳＰであるＭＰＬＳネットワークを構成する
請求項１から請求項１０のうちのいずれか１項に記載のノード。
【請求項１２】
通信経路がリングレットであるＲＰＲネットワークを構成する
請求項１から請求項１０のうちのいずれか１項に記載のノード。
【請求項１３】
送受信されるフレームの集合であるトラフィックであって通信帯域が上限値以下に制御されるトラフィックであるフェアネス対象制御トラフィックの通信帯域の上限値を示すフェアレイトを、自身が属する通信システムの他のノードに送信するノードを含む通信システムであって、
ノードは、
自ノードが送信元となって自ノードから送信したフェアネス制御対象トラフィックの通信帯域と、他のノードから送信されて自ノードを通過するフェアネス制御対象トラフィックの通信帯域とを計測するトラフィックレイト計測手段と、
自ノードが送信元となって自ノードから送信したフェアネス制御対象トラフィックの通信帯域と、他のノードから送信されて自ノードを通過するフェアネス制御対象トラフィックの通信帯域とを用いて求められるフェアネス制御対象トラフィックが利用可能な通信帯域を、輻輳箇所を通過するフェアネス制御対象トラフィックを送信するノードのノード数とみなすことが可能な値で除算することによりフェアレイトを算出するフェアネス制御手段とを備えた
ことを特徴とする通信システム。
【請求項１４】
送受信されるフレームの集合であるトラフィックであって通信帯域が上限値以下に制御されるトラフィックであるフェアネス対象制御トラフィックの通信帯域の上限値を示すフェアレイトを、自身が属する通信システムの他のノードに送信するノードを含む通信システムであって、
ノードは、
自ノードが送信元となって自ノードから送信したフェアネス制御対象トラフィックの通信帯域と、他のノードから送信されて自ノードを通過するフェアネス制御対象トラフィックの通信帯域との総和を計測するトラフィックレイト計測手段と、
トラフィックレイト計測手段によって測定された前記総和を、輻輳箇所を通過するフェアネス制御対象トラフィックを送信するノードのノード数とみなすことが可能な値で除算することによりフェアレイトを算出するフェアネス制御手段とを備えた
ことを特徴とする通信システム。
【請求項１５】
送受信されるフレームの集合であるトラフィックであって通信帯域が上限値以下に制御されるトラフィックであるフェアネス対象制御トラフィックの通信帯域の上限値を示すフェアレイトを、自身が属する通信システムの他のノードに送信するノードが備えているコンピュータに、
自ノードが送信元となって自ノードから送信したフェアネス制御対象トラフィックの通信帯域と、他のノードから送信されて自ノードを通過するフェアネス制御対象トラフィックの通信帯域とを計測するトラフィックレイト計測処理と、および
自ノードが送信元となって自ノードから送信したフェアネス制御対象トラフィックの通信帯域と、他のノードから送信されて自ノードを通過するフェアネス制御対象トラフィックの通信帯域とを用いて求められるフェアネス制御対象トラフィックが利用可能な通信帯域を、輻輳箇所を通過するフェアネス制御対象トラフィックを送信するノードのノード数とみなすことが可能な値で除算することによりフェアレイトを算出するフェアネス制御処理
を実行させるためのノード用プログラム。
【請求項１６】
送受信されるフレームの集合であるトラフィックであって通信帯域が上限値以下に制御されるトラフィックであるフェアネス対象制御トラフィックの通信帯域の上限値を示すフェアレイトを、自身が属する通信システムの他のノードに送信するノードが備えているコンピュータに、
自ノードが送信元となって自ノードから送信したフェアネス制御対象トラフィックの通信帯域と、他のノードから送信されて自ノードを通過するフェアネス制御対象トラフィックの通信帯域との総和を計測するトラフィックレイト計測処理、および
トラフィックレイト計測処理で測定された前記総和を、輻輳箇所を通過するフェアネス制御対象トラフィックを送信するノードのノード数とみなすことが可能な値で除算することによりフェアレイトを算出するフェアネス制御処理
を実行させるためのノード用プログラム。
【請求項１７】
送受信されるフレームの集合であるトラフィックであって通信帯域が上限値以下に制御されるトラフィックであるフェアネス対象制御トラフィックの通信帯域の上限値を示すフェアレイトを、自身が属する通信システムの他のノードに送信するノードがフェアレイトを導出するフェアレイト導出方法であって、
ノードが備えるトラフィックレイト計測手段が、自ノードが送信元となって自ノードから送信したフェアネス制御対象トラフィックの通信帯域と、他のノードから送信されて自ノードを通過するフェアネス制御対象トラフィックの通信帯域とを計測し、
ノードが備えるフェアネス制御手段が、自ノードが送信元となって自ノードから送信したフェアネス制御対象トラフィックの通信帯域と、他のノードから送信されて自ノードを通過するフェアネス制御対象トラフィックの通信帯域とを用いて求められるフェアネス制御対象トラフィックが利用可能な通信帯域を、輻輳箇所を通過するフェアネス制御対象トラフィックを送信するノードのノード数とみなすことが可能な値で除算することによりフェアレイトを算出する
ことを特徴とするフェアレイト導出方法。
【請求項１８】
送受信されるフレームの集合であるトラフィックであって通信帯域が上限値以下に制御されるトラフィックであるフェアネス対象制御トラフィックの通信帯域の上限値を示すフェアレイトを、自身が属する通信システムの他のノードに送信するノードがフェアレイトを導出するフェアレイト導出方法であって、
ノードが備えるトラフィックレイト計測手段が、自ノードが送信元となって自ノードから送信したフェアネス制御対象トラフィックの通信帯域と、他のノードから送信されて自ノードを通過するフェアネス制御対象トラフィックの通信帯域との総和を計測し、
ノードが備えるフェアネス制御手段が、トラフィックレイト計測手段によって測定された前記総和を、輻輳箇所を通過するフェアネス制御対象トラフィックを送信するノードのノード数とみなすことが可能な値で除算することによりフェアレイトを算出する
ことを特徴とするフェアレイト導出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ノード、通信システム、ノード用プログラム、およびノードに適用されるフェアレイト導出方法に関し、特に、トラフィックにリンクの通信帯域を共有させるノード、通信システム、ノード用プログラム、およびノードに適用されるフェアレイト導出方法に関する。
【背景技術】
【０００２】
インターネットにおいては、トラフィックに対して予め所定の通信帯域を割り当てる時分割多重方式と異なり、パケット多重方式と呼ばれる多重方式が用いられている。
【０００３】
パケット多重方式では、通信帯域は全てのトラフィックにより共有される。ネットワークノード（以降では、単にノードと記述する）は、他のトラフィックによって使用されていない通信帯域が存在する場合に、トラフィックを送信することができる。すなわち、他のトラフィックのレイトが低ければ、ノード間で送受信可能なデータ量に余裕があり、トラフィックを送信できる。
【０００４】
ここで、トラフィックとは、通信ネットワーク内のノードから送信されるデータ単位の集合である。例えば、ＲＰＲ（Ｒｅｓｉｌｉｅｎｔ  Ｐａｃｋｅｔ  Ｒｉｎｇ）が適用された通信ネットワークでは、ＲＰＲのノードから送信されるフレーム（ＲＰＲフレーム）がデータ単位であり、ＲＰＲフレームの集合がトラフィックに該当する。また、トラフィックが使用する通信帯域は、トラフィックに含まれるデータ単位（例えばＲＰＲフレーム）のデータ量の総和を送信に要した時間で除算した値（すなわちレイト）として定義される。ただし、ノードが実際にトラフィックの通信帯域（レイト）を算出する方法は前述の定義に沿った方法だけに限定されず、その他の簡易化された方法などが用いられる場合もある。
【０００５】
時分割多重方式では、あるトラフィックに割り当てられた通信帯域が未使用であっても、他のトラフィックがその通信帯域を使用することは禁止される。一方、パケット多重方式では空き帯域に他のトラフィックを多重することが可能である。そのため、パケット多重方式の帯域利用効率は時分割多重化方式よりも高くなる。この効果はパケット多重方式の統計多重効果と呼ばれている。
【０００６】
しかし、パケット多重方式は、上記の特徴が故に、多数のトラフィックが同一時間内に通信システムの特定リンクに集中的に送信された結果、そのリンクの通信帯域を超過した事態（輻輳）が発生すると、トラフィックの転送に遅延が生じたり、トラフィックの一部が廃棄されたりする場合がある。この場合に通信が不安定になったり、あるいは通信が遮断されたりしてしまうという短所がパケット多重方式にはある。
【０００７】
この問題を解決するために、パケット多重方式においても時分割多重方式と同様に特定のトラフィックに対して所定の通信帯域を保証したり、各トラフィックに優先度と呼ばれるパラメータを付加した上で優先度の高いトラフィックを優先的に送信したりするなどの様々な帯域制御方法が考案されている。
【０００８】
そのような帯域制御方法の１つとして、通信システム内のあるリンクを通過する全てのトラフィックに、そのリンクの通信帯域を公平に共有させるような帯域制御方法がある。「トラフィックにリンクの通信帯域を公平に共有させる」とは、そのリンクで送信することができる通信帯域をそのリンクを使用するトラフィックの数で等分割した値を超えないように、各トラフィックの通信帯域を制御することである。例えば、リンクの通信帯域が１０Ｇｂｐｓであり、通信帯域を制御されるトラフィックとしてＡ，Ｂ，Ｃ，Ｄの４種類のトラフィックがあるとする。この場合、各トラフィックの通信帯域が１０Ｇｂｐｓ／４＝２．５Ｇｂｐｓを超えないように制御する。このようにトラフィックの通信帯域を制御することを、「トラフィックにリンクの通信帯域を公平に供給させる」という。
【０００９】
このような制御の例として、ＩＥＥＥ（ｔｈｅ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ）において２００４年に標準化されたＲＰＲで用いられているフェアネス（Ｆａｉｒｎｅｓｓ）と呼ばれる帯域制御がある。フェアネスは、非特許文献１に記載されている。以下、通信帯域が制御されるトラフィックをフェアネス制御対象トラフィックと記す。
【００１０】
ＲＰＲが適用された通信ネットワーク（以下、ＲＰＲネットワークと記す。）は、時計方向にフレームを転送するリング（リングレット）と、反時計方向にフレームを転送するリング（リングレット）とを備えた２重リングネットワークである。リングレットは、ＲＰＲネットワークの通信経路である。
【００１１】
ＲＰＲネットワークのトラフィックには、トラフィックの通信帯域が保証されている帯域保証型トラフィックと、帯域が保証されないベストエフォート型トラフィックが規定されている。トラフィックの通信帯域が保証されているとは、トラフィックの通信帯域が確保されていることである。
【００１２】
帯域保証型トラフィックは、予め所定の通信帯域が排他的に割り当てられ、ベストエフォート型トラフィックに対して優先的に送信されるトラフィックである。帯域保証型トラフィックは、保証帯域以下のレイトであれば、常に通信が保証される。ただし、複数の帯域保証型トラフィックが通信システムに存在し、かつ、それらが同一のリンクを共有している場合、それらのトラフィックに割り当てられた通信帯域の総和が、共有しているリンクの通信帯域の最小値以下となるように、各帯域保証型トラフィックの保証帯域を設定する必要がある。
【００１３】
一方、ベストエフォート型トラフィックは、パケット多重方式における通常のトラフィックであって、前述のように未使用の通信帯域が存在する場合にのみ、送信することができるトラフィックである。
【００１４】
ＲＰＲでは、帯域保証型トラフィックのサービスクラスとして、クラスＡとクラスＢが規定されている。また、ＲＰＲでは、ベストエフォート型トラフィックのサービスクラスとして、クラスＣが規定されている。さらに、クラスＡはクラスＡ０とクラスＡ１に細分され、また、クラスＢはクラスＢ−ＣＩＲとクラスＢ−ＥＩＲに細分される。クラスＢは、帯域保証型トラフィックのサービスクラスとして規定されているが、後述するように、クラスＢのうちクラスＢ−ＥＩＲのトラフィックはベストエフォート型のトラフィックである。
【００１５】
クラスＡ０は真の意味での帯域保証型のサービスクラスであって、クラスＡ０のトラフィックの空き帯域が生じたとしても、他のサービスクラスのトラフィックをその空き帯域を使用して送信することは禁止されている。すなわち、クラスＡ０は、予め所定の通信帯域が排他的に割り当てられたサービスクラスである。また、その通信帯域がクラスＡ０のトラフィックによって使用されていなくても、他のサービスクラスのトラフィックはその通信帯域を使用できない。
【００１６】
クラスＡ１も予め所定の通信帯域が割り当てられた帯域保証型のサービスクラスである。ただし、その通信帯域がクラスＡ１のトラフィックによって使用されていない場合、フェアネス制御対象トラフィックはその未使用帯域を使用することができる。すなわち、クラスＡ１のトラフィックのレイトがクラスＡ１のために予め割り当てられた通信帯域よりも低い場合、予め割り当てられた通信帯域のうちクラスＡ１のトラフィックによって使用されていない帯域で、フェアネス制御対象トラフィックを送信することができる。
【００１７】
クラスＢのトラフィックにも、予め所定の通信帯域が割り当てられている。クラスＢのトラフィックに割り当てられた通信帯域以上のレイトでクラスＢのトラフィックを送信した場合、割り当てられた通信帯域以下のトラフィックはクラスＢ−ＣＩＲのトラフィックとして送信され、また、割り当てられた通信帯域を超過するトラフィックはクラスＢ−ＥＩＲのトラフィックとして送信される。
【００１８】
クラスＢ−ＣＩＲはクラスＡ１とほぼ同様のサービスクラスである。ただし、以下の点で両者は異なる。クラスＡ０とクラスＡ１のトラフィックはクラスＢ−ＣＩＲのトラフィックよりも優先的に送信される点が両者の差異となる。また、クラスＡ０およびクラスＡ１のトラフィックについては最小のレイテンシが保証されるのに対して、クラスＢ−ＣＩＲのトラフィックについてはそのようなレイテンシが保証されない点も異なる。
【００１９】
クラスＢ−ＥＩＲはクラスＣと同様にベストエフォート型のトラフィックである。ただし、送信の優先度はクラスＣよりも高く設定されている。
【００２０】
ＲＰＲではベストエフォート型のトラフィックがフェアネス制御対象トラフィックとして決められている。すなわち、ＲＰＲでは、ベストエフォート型であるクラスＢ−ＥＩＲおよびクラスＣのトラフィックがフェアネス制御対象トラフィックとして定められている。
【００２１】
以下に、ＲＰＲネットワークを構成するリンクにおいて輻輳が発生した場合の一般的なノードの動作について説明する。輻輳発生箇所のすぐ上流に存在するノードをヘッドノード（Ｈｅａｄ  Ｎｏｄｅ）と呼ぶ。ＲＰＲネットワークを構成するリンクで輻輳が発生すると、ヘッドノードは、自ノード（すなわちヘッドノード自身）の上流に配置されるノードに対して、そのノード（ヘッドノードの上流のノード）を通過するフェアネス制御対象トラフィックの通信帯域として許可する通信帯域の上限値を示すフェアレイト（ＦａｉｒＲａｔｅ）を広告する。具体的には、ヘッドノードは、フェアレイトを格納した制御フレーム（フェアネスフレーム）を自ノード（ヘッドノード自身）の上流にある隣接ノードに送信する。ヘッドノードからフェアネスフレームを受信した上流の隣接ノードは、そのノード自身からＲＰＲネットワーク内に送信するフェアネス制御対象トラフィックのうち、輻輳箇所を通過するトラフィックが使用する通信帯域がフェアレイト以下となるように帯域制御処理を実行する。
【００２２】
また、ヘッドノードの上流に配置された各ノードは、以下のように動作する。ヘッドノードの上流に配置された各ノードは、上流の隣接ノードから受信したフェアネス制御対象トラフィックの通信帯域がフェアレイト以上である場合には、ヘッドノードが広告したフェアレイトを格納したフェアネスフレームをその上流の隣接ノードに送信する。一方、上流の隣接ノードから受信したフェアネス制御対象トラフィックの通信帯域がフェアレイト未満である場合は、フェアネス制御対象トラフィックの通信帯域を抑制する必要がない旨を、上流の隣接ノードにフェアネスフレームで通知する。具体的には、フェアレイトをフルレイト（ＦｕｌｌＲａｔｅ）とするフェアネスフレームを上流の隣接ノードに送信する。フェアレイトがフルレイトでないフェアネスフレームを受信した各ノードは、そのノード自身からＲＰＲネットワーク内に送信するフェアネス制御対象トラフィックのうち、輻輳箇所を通過するトラフィックが使用する通信帯域がフェアレイト以下となるように帯域制御処理を実行する。
【００２３】
フェアレイトがフルレイトではないフェアネスフレームを受信し、かつ、フェアレイトがフルレイトであるフェアネスフレームを送信するノードは、テイルノード（Ｔａｉｌ  Ｎｏｄｅ）と呼ばれる。また、ヘッドノードからテイルノードまでの通信経路は輻輳領域（Ｃｏｎｇｅｓｔｉｏｎ  Ｄｏｍａｉｎ）と呼ばれる。
【００２４】
下流の隣接ノードより、フェアレイトがフルレイトであるフェアネスフレームを受信したノードは、同様のフェアネスフレームを上流に送信する。従って、テイルノードよりも上流のノードは、それらが送信するフェアネスの制御対象トラフィックに対して帯域制御処理を実行しない。
【００２５】
以上のようにして、ＲＰＲネットワークでは、輻輳が発生した場合においても、特定のノードのみが輻輳箇所のリンクの通信帯域を占有することなく、複数のノードが公平に共有することが可能である。
【００２６】
また、非特許文献１では、ヘッドノードが最初に広告するフェアレイトが以下のように規定されている。すなわち、ヘッドノードが最初に広告するフェアレイトは、輻輳を検出する直前にヘッドノードからＲＰＲネットワーク内に送信されたフェアネス制御対象トラフィックのレイトであると規定されている。
【００２７】
また、下流局からのフェアネスフレームにより通知されるフェアレイトに従ってフレームを送出するノードが特許文献１に記載されている。
【００２８】
【特許文献１】特開２００６−３４５３３９号公報
【非特許文献１】“ＩＥＥＥ  Ｓｔａｎｄａｒｄｓ  ８０２．１７  パート１７：リジリエントパケットリング  アクセスメソッド＆フィジカルレイヤスペシフィケイションズ（Ｐａｒｔ１７：Ｒｅｓｉｌｉｅｎｔ  ｐａｃｋｅｔ  ｒｉｎｇ（ＲＰＲ）  ａｃｃｅｓｓ  ｍｅｔｈｏｄ  ＆  ｐｈｙｓｉｃａｌ  ｌａｙｅｒ  ｓｐｅｃｉｆｉｃａｔｉｏｎｓ）”，“１０．フェアネス（１０．Ｆａｉｒｎｅｓｓ）” ，ＩＥＥＥ（Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ，Ｉｎｃ），２００４年，ｐ．２２５−２８４
【発明の開示】
【発明が解決しようとする課題】
【００２９】
上述のように、輻輳を検出する直前にヘッドノードからＲＰＲネットワーク内に送信されたフェアネス制御対象トラフィックのレイトを、ヘッドノードが最初に広告するフェアレイトとすると、ＲＰＲネットワークにおいてヘッドノードが広告するフェアレイトの初期値が０となってしまう場合が生じる。すると、フェアレイトの初期値が０となることによって、上流のノードからのトラフィックの送信が停止してしまい、通信が遮断してしまったり、通信システムの帯域利用効率が低下したりするといった問題があった。
【００３０】
輻輳を検出する直前にヘッドノードからＲＰＲネットワーク内に送信されたフェアネス制御対象トラフィックのレイトを、ヘッドノードが最初に広告するフェアレイトとすると、以下に例示するような場合にフェアレイトの初期値が０となる。例えば、ヘッドノードが、それまで送信していなかったベストエフォート型トラフィックの送信を開始することにより輻輳が発生した場合、フェアレイトの初期値は０となる。また、ヘッドノードが、それまでベストエフォート型トラフィックを全く送信しておらず、かつ、クラスＢのトラフィックの送信を開始することにより、上流のノードが送信しているベストエフォート型トラフィックがクラスＢのトラフィックに割り当てられていた通信帯域を使用できなくなった結果として輻輳が発生した場合にも、フェアレイトの初期値は０となる。このような状況が発生すると、ヘッドノードより上流にあるノードは、それまで送信していたベストエフォート型トラフィックの送信を一旦停止せざるを得なくなる。その後のヘッドノードによるフェアレイト調整動作に伴い、フェアレイトが徐々に増大することにより、上流のノードがトラフィックの送信を再開することができるようになる。しかし、フェアレイトの初期値として０が通知されてから、そのような状態になるまでは、上流のノードによるベストエフォート型トラフィックの送信が抑制される。そのため、通信システムの帯域利用効率が大きく低下してしまう。
【００３１】
そこで、本発明は、ノード間で通信帯域を公平に共有するための帯域制御機能が適用された通信システムで、通信の遮断を抑制し、通信帯域の利用効率を向上させることを目的とする。
【課題を解決するための手段】
【００３２】
本発明のノードは、送受信されるフレームの集合であるトラフィックであって通信帯域が上限値以下に制御されるトラフィックであるフェアネス対象制御トラフィックの通信帯域の上限値を示すフェアレイトを、自身が属する通信システムの他のノードに送信するノードであって、自ノードが送信元となって自ノードから送信したフェアネス制御対象トラフィックの通信帯域と、他のノードから送信されて自ノードを通過するフェアネス制御対象トラフィックの通信帯域とを計測するトラフィックレイト計測手段（例えば、トラフィックレイト計測部４７０−１〜２）と、自ノードが送信元となって自ノードから送信したフェアネス制御対象トラフィックの通信帯域と、他のノードから送信されて自ノードを通過するフェアネス制御対象トラフィックの通信帯域とを用いて求められるフェアネス制御対象トラフィックが利用可能な通信帯域を、輻輳箇所を通過するフェアネス制御対象トラフィックを送信するノードのノード数とみなすことが可能な値で除算することによりフェアレイトを算出するフェアネス制御手段（例えば、フェアネス制御部４６０−１〜２）とを備えたことを特徴とする。
【００３３】
フェアネス制御手段が、隣接ノードと自ノードとを接続するリンクの通信帯域から通信帯域が保証されているトラフィックである帯域保証型トラフィックの通信帯域を減算した値（例えば、ｕｎｒｅｓｅｒｖｅｄＲａｔｅ）から、自ノードが送信元となって自ノードから送信した帯域保証型トラフィックの通信帯域と他のノードから送信されて自ノードを通過する帯域保証型トラフィックの通信帯域との合計（例えば、ｌｐＮｒＸｍｉｔＲａｔｅ−（ｌｐＡｄｄＲａｔｅ＋ｌｐＦｗＲａｔｅ））を減算することによって、フェアネス制御対象トラフィックが利用可能な通信帯域を算出し、前記フェアネス制御対象トラフィックが利用可能な通信帯域を算出するときに、自ノードが送信元となって自ノードから送信した帯域保証型トラフィックの通信帯域と他のノードから送信されて自ノードを通過する帯域保証型トラフィックの通信帯域との合計を、トラフィックレイト計測手段によって計測された通信帯域から算出する構成であってもよい。
【００３４】
フェアネス制御手段が、自ノードが送信元となって自ノードから送信したフェアネス制御対象トラフィックの通信帯域と、他のノードから送信されて自ノードを通過するフェアネス制御対象トラフィックの通信帯域とを加算することによって、フェアネス制御対象トラフィックが利用可能な通信帯域を算出する構成であってもよい。そのような構成によれば、簡素な処理でフェアレイトを算出できる。
【００３５】
また、本発明のノードは、送受信されるフレームの集合であるトラフィックであって通信帯域が上限値以下に制御されるトラフィックであるフェアネス対象制御トラフィックの通信帯域の上限値を示すフェアレイトを、自身が属する通信システムの他のノードに送信するノードであって、自ノードが送信元となって自ノードから送信したフェアネス制御対象トラフィックの通信帯域と、他のノードから送信されて自ノードを通過するフェアネス制御対象トラフィックの通信帯域との総和を計測するトラフィックレイト計測手段と、トラフィックレイト計測手段によって測定された前記総和を、輻輳箇所を通過するフェアネス制御対象トラフィックを送信するノードのノード数とみなすことが可能な値で除算することによりフェアレイトを算出するフェアネス制御手段とを備えたことを特徴とする。
【００３６】
自ノードの上流に配置される各ノードの数を記憶するノード数記憶手段（例えば、ＴＤＢ４３０）を備え、フェアネス制御手段が、輻輳箇所を通過するフェアネス制御対象トラフィックを送信するノードのノード数として、ノード数記憶手段に記憶されたノード数を用いてフェアレイトを算出する構成であってもよい。
【００３７】
通信システムに属するノードの数を記憶するノード数記憶手段（例えば、ＴＤＢ４３０）を備え、フェアネス制御手段が、輻輳箇所を通過するフェアネス制御対象トラフィックを送信するノードのノード数として、ノード数記憶手段に記憶されたノード数を用いてフェアレイトを算出する構成であってもよい。
【００３８】
受信したフェアネス制御対象トラフィックを構成するフレームに格納された当該フレームの送信元ノードを示す送信元ノード識別子を記憶する送信元ノード識別子記憶手段（例えば、ノード計数部４８０−１〜２が備える内部記憶装置）と、フェアネス制御対象トラフィックを構成するフレームを受信したときに当該フレームに格納されている送信元ノード識別子が送信元ノード識別子記憶手段に記憶されているか否かを判定し、前記送信元ノード識別子が送信元ノード識別子記憶手段に記憶されていなければ、前記送信元ノード識別子を送信元ノード識別子記憶手段に記憶させ、輻輳箇所を通過するフェアネス制御対象トラフィックを送信するノードのノード数を表す値を、送信元ノード識別子記憶手段に記憶された送信元ノード識別子の数に基づいて定めるノード計数手段（例えば、ノード計数部４８０−１〜２）とを備える構成であってもよい。
【００３９】
フェアネス制御対象トラフィックを構成するフレームを受信したときに当該フレームに格納されたＴＴＬを、ＴＴＬの初期値から減算し、輻輳箇所を通過するフェアネス制御対象トラフィックを送信するノードのノード数を表す値を、前記減算結果の最大値に基づいて定めるノード計数手段（例えば、ノード計数部４８０−１〜２）とを備える構成であってもよい。
【００４０】
ノード計数手段が、輻輳箇所を通過するフェアネス制御対象トラフィックを送信するノードのノード数を表す値を所定期間毎に初期値に初期化する構成であってもよい。
【００４１】
ノード計数手段が、輻輳箇所を通過するフェアネス制御対象トラフィックを送信するノードのノード数を表す値の初期化前の値に基づいて初期値を定める構成であってもよい。
【００４２】
通信経路がＬＳＰであるＭＰＬＳネットワークを構成するノードであってもよい。
【００４３】
通信経路がリングレットであるＲＰＲネットワークを構成するノードであってもよい。
【００４４】
また、本発明の通信システムは、送受信されるフレームの集合であるトラフィックであって通信帯域が上限値以下に制御されるトラフィックであるフェアネス対象制御トラフィックの通信帯域の上限値を示すフェアレイトを、自身が属する通信システムの他のノードに送信するノードを含む通信システムであって、ノードが、自ノードが送信元となって自ノードから送信したフェアネス制御対象トラフィックの通信帯域と、他のノードから送信されて自ノードを通過するフェアネス制御対象トラフィックの通信帯域とを計測するトラフィックレイト計測手段と、自ノードが送信元となって自ノードから送信したフェアネス制御対象トラフィックの通信帯域と、他のノードから送信されて自ノードを通過するフェアネス制御対象トラフィックの通信帯域とを用いて求められるフェアネス制御対象トラフィックが利用可能な通信帯域を、輻輳箇所を通過するフェアネス制御対象トラフィックを送信するノードのノード数とみなすことが可能な値で除算することによりフェアレイトを算出するフェアネス制御手段とを備えたことを特徴とする。
【００４５】
また、本発明の通信システムは、送受信されるフレームの集合であるトラフィックであって通信帯域が上限値以下に制御されるトラフィックであるフェアネス対象制御トラフィックの通信帯域の上限値を示すフェアレイトを、自身が属する通信システムの他のノードに送信するノードを含む通信システムであって、ノードが、自ノードが送信元となって自ノードから送信したフェアネス制御対象トラフィックの通信帯域と、他のノードから送信されて自ノードを通過するフェアネス制御対象トラフィックの通信帯域との総和を計測するトラフィックレイト計測手段と、トラフィックレイト計測手段によって測定された前記総和を、輻輳箇所を通過するフェアネス制御対象トラフィックを送信するノードのノード数とみなすことが可能な値で除算することによりフェアレイトを算出するフェアネス制御手段とを備えたことを特徴とする。
【００４６】
また、本発明のノード用プログラムは、送受信されるフレームの集合であるトラフィックであって通信帯域が上限値以下に制御されるトラフィックであるフェアネス対象制御トラフィックの通信帯域の上限値を示すフェアレイトを、自身が属する通信システムの他のノードに送信するノードが備えているコンピュータに、自ノードが送信元となって自ノードから送信したフェアネス制御対象トラフィックの通信帯域と、他のノードから送信されて自ノードを通過するフェアネス制御対象トラフィックの通信帯域とを計測するトラフィックレイト計測処理と、および自ノードが送信元となって自ノードから送信したフェアネス制御対象トラフィックの通信帯域と、他のノードから送信されて自ノードを通過するフェアネス制御対象トラフィックの通信帯域とを用いて求められるフェアネス制御対象トラフィックが利用可能な通信帯域を、輻輳箇所を通過するフェアネス制御対象トラフィックを送信するノードのノード数とみなすことが可能な値で除算することによりフェアレイトを算出するフェアネス制御処理を実行させることを特徴とする。
【００４７】
また、本発明のノード用プログラムは、送受信されるフレームの集合であるトラフィックであって通信帯域が上限値以下に制御されるトラフィックであるフェアネス対象制御トラフィックの通信帯域の上限値を示すフェアレイトを、自身が属する通信システムの他のノードに送信するノードが備えているコンピュータに、自ノードが送信元となって自ノードから送信したフェアネス制御対象トラフィックの通信帯域と、他のノードから送信されて自ノードを通過するフェアネス制御対象トラフィックの通信帯域との総和を計測するトラフィックレイト計測処理、およびトラフィックレイト計測処理で測定された前記総和を、輻輳箇所を通過するフェアネス制御対象トラフィックを送信するノードのノード数とみなすことが可能な値で除算することによりフェアレイトを算出するフェアネス制御処理を実行させることを特徴とする。
【００４８】
また、本発明のフェアレイト導出方法は、送受信されるフレームの集合であるトラフィックであって通信帯域が上限値以下に制御されるトラフィックであるフェアネス対象制御トラフィックの通信帯域の上限値を示すフェアレイトを、自身が属する通信システムの他のノードに送信するノードがフェアレイトを導出するフェアレイト導出方法であって、ノードが備えるトラフィックレイト計測手段が、自ノードが送信元となって自ノードから送信したフェアネス制御対象トラフィックの通信帯域と、他のノードから送信されて自ノードを通過するフェアネス制御対象トラフィックの通信帯域とを計測し、ノードが備えるフェアネス制御手段が、自ノードが送信元となって自ノードから送信したフェアネス制御対象トラフィックの通信帯域と、他のノードから送信されて自ノードを通過するフェアネス制御対象トラフィックの通信帯域とを用いて求められるフェアネス制御対象トラフィックが利用可能な通信帯域を、輻輳箇所を通過するフェアネス制御対象トラフィックを送信するノードのノード数とみなすことが可能な値で除算することによりフェアレイトを算出することを特徴とする。
【００４９】
また、本発明のフェアレイト導出方法は、送受信されるフレームの集合であるトラフィックであって通信帯域が上限値以下に制御されるトラフィックであるフェアネス対象制御トラフィックの通信帯域の上限値を示すフェアレイトを、自身が属する通信システムの他のノードに送信するノードがフェアレイトを導出するフェアレイト導出方法であって、ノードが備えるトラフィックレイト計測手段が、自ノードが送信元となって自ノードから送信したフェアネス制御対象トラフィックの通信帯域と、他のノードから送信されて自ノードを通過するフェアネス制御対象トラフィックの通信帯域との総和を計測し、ノードが備えるフェアネス制御手段が、トラフィックレイト計測手段によって測定された前記総和を、輻輳箇所を通過するフェアネス制御対象トラフィックを送信するノードのノード数とみなすことが可能な値で除算することによりフェアレイトを算出することを特徴とする。
【発明の効果】
【００５０】
本発明によれば、ノード間で通信帯域を公平に共有するための帯域制御機能が適用された通信システムで、通信の遮断を抑制し、通信帯域の利用効率を向上させることができる。また、その結果、通信システムの信頼性を向上させることができる。
【発明を実施するための最良の形態】
【００５１】
以下、本発明の実施の形態を図面を参照して説明する。
【００５２】
実施の形態１．
図１は、本発明のノードを含む通信ネットワークの例を示す説明図である。図１では、通信ネットワークがＲＰＲネットワークである場合を例示している。図１に示す通信ネットワークに含まれる８台のノード１００〜１７０は本発明のノードである。ノード１００〜１７０は、“ＩＥＥＥ  Ｓｔａｎｄａｒｄｓ  ８０２．１７”に準拠して動作するノードであり、以下、ノード１００〜１７０をＲＰＲノードと記す。ＲＰＲノード１００〜１７０は、“ＩＥＥＥ  Ｓｔａｎｄａｒｄｓ  ８０２．１７”に準拠して動作するが、ヘッドノードとして最初に他のノードに通知するフェアレイト（すなわちフェアレイトの初期値）の決定の仕方が従来のＲＰＲノードとは異なる。また、図１に示すＲＰＲネットワークでは、各ＲＰＲノード１００〜１７０にはそれぞれ配下の端末（リングネットワークに属していない端末）２００〜２７０が接続されている。
【００５３】
ＲＰＲノードとその配下の端末とはイーサネットフレームを送受信する。なお、イーサネットは登録商標である。ＲＰＲノードは、配下の端末からイーサネットフレームを受信すると、そのイーサネットフレームをペイロードに格納したフレーム（ＲＰＲフレームと記す。）を生成し、そのＲＰＲフレームを他のＲＰＲノードに転送する。具体的には、イーサネットフレームの宛先となる端末を配下の端末としているＲＰＲノードにＲＰＲフレームを転送する。また、ＲＰＲノードは、自ノードを宛先とするＲＰＲフレームを受信すると、ＲＰＲフレームからイーサネットフレームを抽出し、イーサネットフレームを配下の端末に送信する。
【００５４】
各ノード１００〜１７０は、それぞれポートＰ１〜Ｐ３を有する。ポートＰ１，Ｐ２は、隣接するＲＰＲノードとＲＰＲフレームを送受信するためのポートである。ポートＰ３は、配下の端末とイーサネットフレームを送受信するためのポートである。
【００５５】
図２は、本発明のノードの構成例を示すブロック図である。以下、図２を参照して、ＲＰＲノード１００を例にしてノードの構成について説明するが、他のＲＰＲノード１１０〜１７０（図１参照。）の構成もＲＰＲノード１００の構成と同一である。
【００５６】
図２に示すＲＰＲノード１００は、入力ポート４００−１〜３と、フレーム解析部４１０−１〜２と、ＲＰＲスイッチ処理部４２０と、トポロジデータベース（Ｔｏｐｏｌｏｇｙ  ＤａｔａＢａｓｅ）４３０と、フレーム多重部４４０−１〜２と、出力ポート４５０−１〜３と、フェアネス制御部４６０−１〜２と、トラフィックレイト計測部４７０−１〜２とを備える。以下、トポロジデータベースをＴＤＢと記す。
【００５７】
ＲＰＲノード１００の入力ポート４００−１〜３は、図１に示すＲＰＲノード１００のポートＰ１〜Ｐ３における受信側のポート（フレームを受信するポート）である。
【００５８】
入力ポート４００−１〜２は、隣接するＲＰＲノードから送信されるＲＰＲフレームを受信するポートである。具体的には、入力ポート４００−１は、時計回り方向に隣接するＲＰＲノード（本例ではＲＰＲノード１１０）から送信されるＲＰＲフレームを受信するポートである。また、入力ポート４００−２は、反時計回り方向に隣接するＲＰＲノード（本例ではＲＰＲノード１７０）から送信されるＲＰＲフレームを受信するポートである。また、入力ポート４００−３は、配下の端末（本例では端末２００）から送信されるイーサネットフレームを受信するポートである。
【００５９】
ＲＰＲノード１００の出力ポート４５０−１〜３は、図１に示すＲＰＲノード１００のポートＰ１〜Ｐ３における送信側のポート（フレームを送信するポート）である。
【００６０】
出力ポート４５０−１〜２は、隣接するＲＰＲノードにＲＰＲフレームを送信するポートである。具体的には、出力ポート４５０−１は、時計回り方向に隣接するＲＰＲノード（本例ではＲＰＲノード１１０）にＲＰＲフレームを送信するポートである。また、出力ポート４５０−２は、反時計回り方向に隣接するＲＰＲノード（本例ではＲＰＲノード１７０）にＲＰＲフレームを送信するポートである。また、出力ポート４５０−３は、配下の端末（本例では端末２００）にイーサネットフレームを送信するポートである。
【００６１】
フレーム解析部４１０−１〜２は、それぞれ入力ポートが受信したＲＰＲフレームがフェアネスフレームであるか否かを判定する。この判定では、例えば、受信したＲＰＲフレームのヘッダを参照し、フェアネスフレームを示す情報がヘッダに記述されていたならば、受信したＲＰＲフレームがフェアネスフレームであると判定すればよい。また、他の種類のフレームを示す情報がヘッダに記述されていたならば、受信したＲＰＲフレームがフェアネスフレームでないと判定すればよい。フレーム解析部４１０−１〜２は、受信したＲＰＲフレームがフェアネスフレームであるならば、そのフェアネスフレームをフェアネス制御部４６０−２，１に送る。受信したＲＰＲフレームがフェアネスフレームでなければ、そのＲＰＲフレームをＲＰＲスイッチ処理部４２０に送る。
【００６２】
具体的には、フレーム解析部４１０−１は、入力ポート４００−１が隣接のＲＰＲノード（本例ではＲＰＲノード１１０）から受信したＲＰＲフレームについてフェアネスフレームであるか否かを判定し、フェアネスフレームであると判定したならば、そのＲＰＲフレームをフェアネス制御部４６０−２に送る。また、フェアネスフレームでないと判定したならば、そのＲＰＲフレームをＲＰＲスイッチ処理部４２０に送る。
【００６３】
同様に、フレーム解析部４１０−２は、入力ポート４００−２が隣接のＲＰＲノード（本例ではＲＰＲノード１７０）から受信したＲＰＲフレームについてフェアネスフレームであるか否かを判定し、フェアネスフレームであると判定したならば、そのＲＰＲフレームをフェアネス制御部４６０−１に送る。また、フェアネスフレームでないと判定したならば、そのＲＰＲフレームをＲＰＲスイッチ処理部４２０に送る。
【００６４】
ＲＰＲスイッチ処理部４２０は、“ＩＥＥＥ  Ｓｔａｎｄａｒｄｓ  ８０２．１７”において定義されるＲＰＲに関する各種処理を実行する。
【００６５】
ＲＰＲスイッチ処理部４２０が実行する処理の例として、隣接ＲＰＲノード（本例ではＲＰＲノード１１０およびＲＰＲノード１７０）から受信したＲＰＲフレームの転送処理、配下の端末（本例では端末２００）より受信したイーサネットフレームからＲＰＲフレームを生成してＲＰＲネットワーク内に送信する処理、自ノード宛てのＲＰＲフレームに格納されたイーサネットフレームを抽出して配下の端末２００に送信する処理、Ｔｏｐｏｌｏｇｙ  Ｄｉｓｃｏｖｅｒｙ  Ｐｒｏｔｏｃｏｌ（ＴＤＰ）によりＲＰＲネットワークのトポロジ情報を管理する処理、ＯＡＭ（Ｏｐｅｒａｔｉｏｎｓ，Ａｄｍｉｎｉｓｔｒａｔｉｏｎ，Ｍａｉｎｔｅｎａｎｃｅ）によりＲＰＲネットワークを管理する処理等がある。
【００６６】
ＲＰＲスイッチ処理部４２０は、時計回り方向に隣接するＲＰＲノード（本例ではＲＰＲノード１１０）に転送するフレームを、トラフィック計測部４７０−１を介してフレーム多重部４４０−１に送る。同様に、反時計回り方向に隣接するＲＰＲノード（本例ではＲＰＲノード１７０）に転送するフレームを、トラフィック計測部４７０−２を介してフレーム多重部４４０−２に送る。
【００６７】
以降では、ＲＰＲスイッチ処理部４２０の処理の詳細については、本発明の動作に深く関わる動作を除いて、説明を省略する。
【００６８】
ＲＰＲスイッチ処理部４２０は、出力ポート４５０−１に対応するバッファと、出力ポート４５０−２に対応するバッファとを備えている。出力ポート４５０−１に対応するバッファは、出力ポート４５０−１から送信する予定のトラフィックのうち、フェアネス制御対象トラフィックを保持する。同様に、出力ポート４５０−２に対応するバッファは、出力ポート４５０−２から送信する予定のトラフィックのうち、フェアネス制御対象トラフィックを保持する。輻輳が生じた場合、これらのバッファの使用量（フェアネス制御対象トラフィックの容量）が増加する。従って、これらのバッファの使用量が閾値以上になったことによって、輻輳が発生したと判定することができる。例えば、出力ポート４５０−１に対応するバッファの使用量が閾値を超えた場合、ＲＰＲノード１００からＲＰＲノード１１０へ向かうリンクで輻輳が発生したと判定することができる。同様に、出力ポート４５０−２に対応するバッファの使用量が閾値を超えた場合、ＲＰＲノード１００からＲＰＲノード１７０へ向かうリンクで輻輳が発生したと判定することができる。ＲＰＲスイッチ処理部４２０は、出力ポート４５０−１に対応するバッファの使用量が閾値を超えた場合、その旨をフェアネス制御部４６０−１に通知する。また、出力ポート４５０−２に対応するバッファの使用量が閾値を超えた場合、その旨をフェアネス制御部４６０−２に通知する。
【００６９】
ＴＤＢ４３０は、ＲＰＲノード１００のＲＰＲスイッチ処理部４２０が実行するＴＤＰの処理の結果、図１に示すＲＰＲネットワークのトポロジ情報が登録されるデータベースである。ＴＤＢ４３０には、ＲＰＲスイッチ処理部４２０によりトポロジ情報として、ＲＰＲネットワークを構成するＲＰＲノードのノード数、各ＲＰＲノードの位置、各リンクの障害情報等が登録される。また、ＴＤＢ４３０に登録されたトポロジ情報は、各フェアネス制御部４６０−１〜２およびＲＰＲスイッチ処理部４２０によって参照される。各フェアネス制御部４６０−１〜２は、ＲＰＲネットワークを構成するＲＰＲノードのノード数を参照し、フェアレイトの初期値の計算に用いる。
【００７０】
フレーム多重部４４０−１は、トラフィックレイト計測部４７０−１から送られたデータフレームと、フェアネス制御部４６０−２から送られたフェアネスフレームとを多重する。そして、フレーム多重部４４０−１は、多重したフレームを、出力ポート４５０−１を介して時計回り方向に隣接するＲＰＲノード（本例ではＲＰＲノード１１０）に送信する。
【００７１】
同様に、フレーム多重部４４０−２は、トラフィックレイト計測部４７０−２から送られたデータフレームと、フェアネス制御部４６０−１から送られたフェアネスフレームとを多重する。そして、フレーム多重部４４０−２は、多重したフレームを、出力ポート４５０−２を介して反時計回り方向に隣接するＲＰＲノード（本例ではＲＰＲノード１７０）に送信する。
【００７２】
フェアネス制御部４６０−１およびフェアネス制御部４６０−２は、“ＩＥＥＥ  Ｓｔａｎｄａｒｄｓ  ８０２．１７”において定義されるフェアネスに関する各種処理を実行する。
【００７３】
フェアネス制御部４６０−１およびフェアネス制御部４６０−２が実行する処理の例としては、自ノードの出力ポート４５０−１または出力ポート４５０−２における輻輳の検出、フェアレイトの演算、フェアネスフレームの生成と送信、隣接ノードより受信したフェアネスフレームの解析、ＲＰＲノード１００のＲＰＲスイッチ処理部４２０への帯域制御情報の通知等がある。
【００７４】
例えば、フェアネス制御部４６０−１は、フレーム解析部４１０−２からフェアネスフレームが送られると、そのフェアネスフレームからフェアレイトを抽出し、ＲＰＲスイッチ処理部４２０に通知する。ＲＰＲスイッチ処理部４２０は、そのフェアレイトを上限値として、出力ポート４５０−２から送信するフェアネス制御対象フレームの通信帯域をその上限値以下に制御する。同様に、フェアネス制御部４６０−２は、フレーム解析部４１０−１からフェアネスフレームが送られると、そのフェアネスフレームからフェアレイトを抽出し、ＲＰＲスイッチ処理部４２０に通知する。ＲＰＲスイッチ処理部４２０は、そのフェアレイトを上限値として、出力ポート４５０−１から送信するフェアネス制御対象フレームの通信帯域をその上限値以下に制御する。
【００７５】
以降では、フェアネス制御部４６０−１およびフェアネス制御部４６０−２が実行する処理の詳細については、本発明の動作に深く関わる動作を除いて、説明を省略する。
【００７６】
フェアネス制御部４６０−１〜２は、ＲＰＲフレームを送る下流の隣接ＲＰＲノードとの間に輻輳が生じたか否かを判定する。例えば、フェアネス制御部４６０−１は、ＲＰＲスイッチ処理部４２０から、出力ポート４５０−１に対応するバッファの使用量が閾値を超えた旨の通知を受けた場合、自ノードと出力ポート４５０−１から送信されるＲＰＲフレームを受信する隣接ノード（本例ではＲＰＲノード１１０）との間に輻輳が生じたと判定する。同様に、フェアネス制御部４６０−２は、ＲＰＲスイッチ処理部４２０から、出力ポート４５０−２に対応するバッファの使用量が閾値を超えた旨の通知を受けた場合、自ノードと出力ポート４５０−２から送信されるＲＰＲフレームを受信する隣接ノード（本例ではＲＰＲノード１７０）との間に輻輳が生じたと判定する。
【００７７】
フェアネス制御部４６０−１は、自ノードと出力ポート４５０−１から送信されるＲＰＲフレームを受信する隣接ノードとの間に輻輳が生じたと判定した場合、トラフィックレイト計算部４７０−１から送られるパラメータと、ＲＰＲネットワークを構成するＲＰＲノードのノード数とを用いて、フェアレイトの初期値を算出する。このとき、フェアネス制御部４６０−１は、ＲＰＲネットワークを構成するＲＰＲノードのノード数をＴＤＢ４３０から読み込む。同様に、フェアネス制御部４６０−２は、自ノードと出力ポート４５０−２から送信されるＲＰＲフレームを受信する隣接ノードとの間に輻輳が生じたと判定した場合、トラフィックレイト計算部４７０−２から送られるパラメータと、ＲＰＲネットワークを構成するＲＰＲノードのノード数とを用いて、フェアレイトの初期値を算出する。フェアネス制御部４６０−２も、ＲＰＲネットワークを構成するＲＰＲノードのノード数をＴＤＢ４３０から読み込む。フェアネス制御部４６０−１〜２によって行われるフェアレイトの初期値の算出については後述する。
【００７８】
トラフィックレイト計測部４７０−１は、“ＩＥＥＥ  Ｓｔａｎｄａｒｄｓ  ８０２．１７”において定義される様々なトラフィックレイトの計測処理を実行する。そして、トラフィックレイトの計測結果や計測結果から演算によって導出した値を前述のパラメータとしてフェアネス制御部４６０−１に通知する。同様に、トラフィックレイト計測部４７０−２は、“ＩＥＥＥ  Ｓｔａｎｄａｒｄｓ  ８０２．１７”において定義される様々なトラフィックレイトの計測処理を実行する。そして、トラフィックレイトの計測結果や計測結果から演算によって導出した値をパラメータとしてフェアネス制御部４６０−１に通知する。
【００７９】
トラフィックレイト計測部４７０−１〜２は、トラフィックの種別毎にトラフィックレイトを計測する。例えば、トラフィックレイト計測部４７０−１〜２は、自ノードが送信元となって自ノードから送信したフェアネス制御対象トラフィックの通信帯域（レイト）を計測する。このトラフィックレイトはａｄｄＲａｔｅと呼ばれる。また、例えば、トラフィックレイト計測部４７０−１〜２は、上流のＲＰＲノードから受信し、かつ、下流のＲＰＲノードに送信するトラフィックの通信帯域（レイト）を計測する。すなわち、上流のＲＰＲノードから送信され、自ノード（ここではＲＰＲノード１００）を通過するトラフィックの通信帯域（レイト）を計測する。このトラフィックレイトはｆｗＲａｔｅと呼ばれる。また、例えば、トラフィックレイト計測部４７０−１〜２は、クラスＡ０以外のトラフィックの通信帯域（レイト）を計測する。このトラフィックレイトはｎｒＸｍｉｔＲａｔｅと呼ばれる。トラフィックレイト計測部４７０−１〜２は、他の任意のトラフィックの種別についてもトラフィックレイトを計測してもよい。
【００８０】
また、トラフィックレイト計測部４７０−１〜２は、計測したトラフィックレイトに対して、低域通過フィルタによる平滑化処理や正規化処理等の演算も合わせて実行する。
【００８１】
トラフィックレイト計測部４７０−１は、計測や演算によって導出したパラメータをフェアネス制御部４６０−１に送る。同様に、トラフィックレイト計測部４７０−２は、計測や演算によって導出したパラメータをフェアネス制御部４６０−２に送る。
【００８２】
例えば、トラフィックレイト計測部４７０−１〜２は、上述のａｄｄＲａｔｅ（自ノードから送信したフェアネス制御対象トラフィックのレイト）、ｆｗＲａｔｅ（上流のＲＰＲノードから送られて自ノードを通過するトラフィックのレイト）、ｎｒＸｍｉｔＲａｔｅ（クラスＡ０以外のトラフィックのレイト）に対して平滑化処理を行い、平滑化処理後の各レイトをフェアネス制御部４６０−１〜２に送る。なお、平滑化処理を行わずにフェアネス制御部４６０−１〜２に送ってもよいが、平滑化処理後の値を送ることが好ましい。
【００８３】
トラフィックレイト計測部４７０−１〜２は、以下の式１の演算を行うことによってａｄｄＲａｔｅの平滑化を行えばよい。
【００８４】
新ｌｐＡｄｄＲａｔｅ＝旧ｌｐＡｄｄＲａｔｅ＋（ａｄｄＲａｔｅ−旧ｌｐＡｄｄＲａｔｅ）／ｌｐＣｏｅｆ        （式１）
【００８５】
式１において、新ｌｐＡｄｄＲａｔｅは、新たに算出する平滑化後のａｄｄＲａｔｅである。旧ｌｐＡｄｄＲａｔｅは、前回算出していた平滑化後のａｄｄＲａｔｅである。ｌｐＣｏｅｆは、平滑化処理用の定数であり、予めネットワーク管理者によって定められる。ｌｐＣｏｅｆの値が小さいほど、平滑化の程度が弱まり、ｌｐＡｄｄＲａｔｅの変化はａｄｄＲａｔｅの変化に近づく。また、ｌｐＣｏｅｆの値が大きいほど、平滑化の程度が強まり、ｌｐＡｄｄＲａｔｅの変化はａｄｄＲａｔｅの変化に比べて緩やかになる。
【００８６】
このような平滑化処理を行うことで、例えば、ａｄｄＲａｔｅが１秒間で０Ｇｂｐｓから５Ｇｂｐｓに変化する場合であっても、ｌｐＡｄｄＲａｔｅは０Ｇｂｐｓから５Ｇｂｐｓに変化するのに１０秒かかるようになる。
【００８７】
また、トラフィックレイト計測部４７０−１〜２は、以下の式２の演算を行うことによってｆｗＲａｔｅの平滑化を行えばよい。
【００８８】
新ｌｐＦｗＲａｔｅ＝旧ｌｐＦｗＲａｔｅ＋（ｆｗＲａｔｅ−旧ｌｐＦｗＲａｔｅ）／ｌｐＣｏｅｆ        （式２）
【００８９】
式２において、新ｌｐＦｗＲａｔｅは、新たに算出する平滑化後のｆｗＲａｔｅである。旧ｌｐＦｗＲａｔｅは、前回算出していた平滑化後のｆｗＲａｔｅである。ｌｐＣｏｅｆは平滑化処理用の定数である。
【００９０】
また、トラフィックレイト計測部４７０−１〜２は、以下の式３の演算を行うことによってｎｒＸｍｉｔＲａｔｅの平滑化を行えばよい。
【００９１】
新ｌｐＮｒＸｍｉｔＲａｔｅ＝旧ｌｐＮｒＸｍｉｔＲａｔｅ＋（ｎｒＸｍｉｔＲａｔｅ−旧ｌｐＮｒＸｍｉｔＲａｔ）／ｌｐＣｏｅｆ        （式３）
【００９２】
式３において、新ｌｐＮｒＸｍｉｔＲａｔｅは、新たに算出する平滑化後のｎｒＸｍｉｔＲａｔｅである。旧ｌｐＮｒＸｍｉｔＲａｔｅは、前回算出していた平滑化後のｎｒＸｍｉｔＲａｔｅである。ｌｐＣｏｅｆは平滑化処理用の定数である。
【００９３】
トラフィックレイト計測部４７０−１〜２は、以上のようにして導出したｌｐＡｄｄＲａｔｅ，ｌｐＦｗＲａｔｅ，ｌｐＮｒＸｍｉｔＲａｔｅをフェアネス制御部４６０−１〜２に送る。このように、平滑化処理後の値をフェアネス制御部４６０−１〜２に送ることで、フェアネス制御部４６０−１〜２はａｄｄＲａｔｅ等の短い周期での変化を無視してフェアレイトの初期値を算出することができる。
【００９４】
また、トラフィックレイト計測部４７０−１〜２は、ＲＰＲノード間のリンクの通信帯域からクラスＡ０のトラフィックに割り当てられた通信帯域を減算した値（この値をｕｎｒｅｓｅｒｖｅｄＲａｔｅと呼ぶ。）をフェアネス制御部４６０−１〜２に送る。ここで、ＲＰＲノード間のリンクの通信帯域は定数である。また、クラスＡ０のトラフィックに割り当てられた通信帯域も定数である。クラスＡ０のトラフィックに割り当てられた通信帯域は、定数として予めネットワーク管理者によって定められる。従って、ｕｎｒｅｓｅｒｖｅｄＲａｔｅも定数である。
【００９５】
なお、ｌｐＡｄｄＲａｔｅ，ｌｐＦｗＲａｔｅ，ｌｐＮｒＸｍｉｔＲａｔｅ，ｕｎｒｅｓｅｒｖｅｄＲａｔｅは、いずれも上述の意味で“ＩＥＥＥ  Ｓｔａｎｄａｒｄｓ  ８０２．１７”で定義されている記号である。
【００９６】
トラフィックレイト計測部４７０−１〜２は、上記のパラメータｌｐＡｄｄＲａｔｅ，ｌｐＦｗＲａｔｅ，ｌｐＮｒＸｍｉｔＲａｔｅや定数ｕｎｒｅｓｅｒｖｅｄＲａｔｅ以外に、他のパラメータをフェアネス制御部４６０−１〜２に送ってもよい。
【００９７】
次に、フェアレイトの初期値を算出する動作について説明する。以下の説明では、図１に示すＲＰＲネットワーク中のＲＰＲノード１００からＲＰＲノード１１０へ向かうリンクで輻輳が発生した場合に、ＲＰＲノード１００がフェアレイトの初期値を算出する場合を例にして説明する。
【００９８】
ＲＰＲノード１００のフェアネス制御部４６０−１は、自ノードの出力ポート４５０−１において、クラスＡ０以外のサービスクラスのトラフィックが使用する通信帯域が、クラスＡ０以外のトラフィックに割り当てられた通信帯域を超過した場合に、輻輳が発生したと判断する。
【００９９】
また、ＲＰＲノード１００のフェアネス制御部４６０−１は、ＲＰＲノード１００のＲＰＲスイッチ処理部４２０において、ＲＰＲノード１００の出力ポート４５０−１から送信される予定のトラフィックのうち、フェアネスの制御対象であるトラフィックを保持するバッファの使用量が所定の閾値を超過したことをＲＰＲノード１００のＲＰＲスイッチ処理部４２０から通知された場合にも、輻輳が発生したと判断する。
【０１００】
このようにＲＰＲフレームを送る下流の隣接ＲＰＲノードどの間に輻輳が生じたと判定した場合、ＲＰＲノード１００のフェアネス制御部４６０−１は、ＲＰＲノード１００の上流に配置されるＲＰＲノードにフェアレイトを通知する。具体的にはフェアレイトを格納したフェアネスフレームを上流のＲＰＲノードに送信する。このフェアネスフレームを受信した上流のＲＰＲノードは、フェアレイトに応じてフェアネス制御対象トラフィックのレイトを抑制し、その結果、ＲＰＲノード１００からＲＰＲノード１００に向かうリンクを通過するフェアネス制御対象トラフィックのレイトも抑制される。
【０１０１】
フェアネス制御部４６０−１は、輻輳が生じたと判定した後に、最初に上流のノードに広告するフェアレイト（フェアレイトの初期値）を、以下のように導出する。すなわち、フェアネス制御部４６０−１は、ＲＰＲノード１００からＲＰＲノード１１０へ向かうリンクの通信帯域から、クラスＡ０のトラフィックに予め割り当てられた通信帯域と、クラスＡ１およびクラスＢ−ＣＩＲのトラフィックが輻輳検出時に使用していた通信帯域とを引いた値を、ＲＰＲノード１００の上流ノードのノード数により除算した値をフェアレイトの初期値とする。換言すれば、輻輳検出時に輻輳の検出されたリンクにおいてフェアネス制御対象トラフィックが利用可能な通信帯域を、ヘッドノードの上流ノードのノード数により除算した値をフェアレイトの初期値とする。
【０１０２】
ＲＰＲネットワークはリングトポロジであるため、ＲＰＲノード１００の上流に配置されているＲＰＲノードのノード数は、ＲＰＲネットワークを構成するＲＰＲノードのノード数と同一である。フェアネス制御部４６０−１は、ＲＰＲネットワークを構成するＲＰＲノードのノード数を、ＲＰＲノード１００のＴＤＢ４３０を参照することにより、取得する。そして、そのノード数を、ＲＰＲノード１００の上流に配置されているＲＰＲノードのノード数として用いる。
【０１０３】
具体的には、フェアネス制御部４６０−１は、以下に示す式５の演算を行うことによって、フェアレイトの初期値を導出すればよい。
【０１０４】
ｆａｉｒＲａｔｅ＝（ｕｎｒｅｓｅｒｖｅｄＲａｔｅ−（ｌｐＮｒＸｍｉｔＲａｔｅ−（ｌｐＡｄｄＲａｔｅ＋ｌｐＦｗＲａｔｅ）））／ｎｕｍＳｔａｔｉｏｎｓ        式５
【０１０５】
式５において、ｆａｉｒＲａｔｅはフェアレイトの初期値である。また、既に説明したように、ｕｎｒｅｓｅｒｖｅｄＲａｔｅは、下流の隣接ノードと自ノードとを接続するリンクの通信帯域からクラスＡ０のトラフィックに割り当てられた通信帯域を減算した値である。ｌｐＮｒＸｍｉｔＲａｔｅは、輻輳の発生していた方向に送信していたクラスＡ０以外のトラフィックのレイトを平滑化処理した値である。ｌｐＡｄｄＲａｔｅは、ヘッドノード（すなわち、ＲＰＲノード１００自身）が送信元となってＲＰＲノード１００自身からＲＰＲネットワーク内の輻輳が発生した方向に送信していたフェアネス制御対象トラフィックのレイトを平滑化処理した値である。ｌｐＦｗＲａｔｅは、ヘッドノード（すなわち、ＲＰＲノード１００）の上流ノードより送信され、かつ、ヘッドノードを通過するフェアネス制御対象トラフィックのレイトを平滑化処理した値である。ｎｕｍＳｔａｔｉｏｎｓはＲＰＲネットワークを構成するＲＰＲノードのノード数である。
【０１０６】
式５における（ｌｐＮｒＸｍｉｔＲａｔｅ−（ｌｐＡｄｄＲａｔｅ＋ｌｐＦｗＲａｔｅ））は、自ノードが送信元となって自ノードから送信した帯域保証型トラフィックの通信帯域と、他のノードから送信されて自ノードを通過する帯域保証型トラフィックの通信帯域との合計を意味する。
【０１０７】
なお、トラフィックのレイトを平滑化処理した値を使用しているのは、レイトの短周期の変化を無視するためである。ただし、必ず平滑化処理後の値を用いなければならないわけではない。トラフィックレイト計測部４７０−１〜２がフェアネス制御部４６０−１〜２に平滑化前のレイトを通知し、フェアネス制御部４６０−１〜２がその値を用いてフェアレイトの初期値であるｆａｉｒＲａｔｅを導出してもよい。
【０１０８】
次に、他の算出式を用いてフェアレイトの初期値を導出する方法について説明する。輻輳発生時においては、フェアネスの制御対象であるトラフィックが使用可能な通信帯域と、それらのトラフィックが実際に使用している通信帯域とは、ほぼ等しいとみなすことができる。すなわち、輻輳発生時では、クラスＡ０以外のトラフィックに割り当てられた通信帯域のほとんど全てが、クラスＡ０以外のトラフィックにより使用されているとみなすことができる。従って、ｕｎｒｅｓｅｒｖｅｄＲａｔｅとｌｐＮｒＸｍｉｔＲａｔｅの値がほぼ等しいとみなすことができる。よって、式５におけるｆａｉｒＲａｔｅ（フェアレイトの初期値）の近似値を以下に示す式６で表すことができる。
【０１０９】
ｆａｉｒＲａｔｅ’＝（ｌｐＡｄｄＲａｔｅ＋ｌｐＦｗＲａｔｅ）／ｎｕｍＳｔａｔｉｏｎｓ          式６
【０１１０】
式６におけるｆａｉｒＲａｔｅ’は、前出のフェアレイトの初期値の近似値である。フェアネス制御部４６０−１は、式６の演算を行うことによってフェアレイトの初期値を導出してもよい。式６の演算によってフェアレイトの初期値を導出すれば、式５の演算を行う場合に比べて演算が容易になるという利点がある。
【０１１１】
また、ＲＰＲノードのトラフィックレイト計測部４７０−１〜２が、自ノードより下流のＲＰＲノードに送信するフェアネス制御対象トラフィックのレイトの総和を計測し、その計測結果をフェアネス制御部４６０−１〜２に通知してもよい。このとき、フェアネス制御対象トラフィックのレイトの総和に平滑化処理を行い、その結果をフェアネス制御部４６０−１〜２に通知してもよい。トラフィックレイト計測部４７０−１〜２が、自ノードより下流のＲＰＲノードに送信するフェアネス制御対象トラフィックのレイトの総和を計測してフェアネス制御部４６０−１〜２に出力すれば、フェアネス制御部４６０−１〜２は式６における加算（ｌｐＡｄｄＲａｔｅとｌｐＦｗＲａｔｅの加算）を省略し、通知された総和をｎｕｍＳｔａｔｉｏｎｓで除算すればよい。よって、式６を用いた演算を簡素化することができる。
【０１１２】
本発明によれば、上記のようにフェアレイトの初期値を算出するので、フェアレイトの初期値が０となるために生じる通信の遮断や帯域利用効率の低下を防止することができる。また、その結果、通信システムの信頼性を向上させることができる。
【０１１３】
なお、“ＩＥＥＥ  Ｓｔａｎｄａｒｄｓ  ８０２．１７”に記載されているフェアネスの方式には、Ａｇｇｒｅｓｓｉｖｅモードと呼ばれるモードがある。Ａｇｇｒｅｓｓｉｖｅモードは、ヘッドノードがリアルタイムに測定したｌｐＡｄｄＲａｔｅをフェアレイトとするモードである。また、フェアレイトの初期値のみをｌｐＡｄｄＲａｔｅとして、以降は輻輳の程度によってフェアレイトの値を制御するモードもある。
【０１１４】
Ａｇｇｒｅｓｓｉｖｅモードでは、輻輳を検出している期間におけるフェアレイトは、フェアレイトの初期値と同様に、ヘッドノードからＲＰＲネットワーク内に送信されたフェアネス制御対象トラフィックのレイトであると規定されている。例えば、Ａｇｇｒｅｓｓｉｖｅモードにおいて、ヘッドノードがフェアネス制御対象トラフィックをＲＰＲネットワーク内に全く送信せずに、フェアネス制御対象トラフィック以外のトラフィック（帯域保証型トラフィック）を送信することにより、輻輳が発生している場合には、フェアレイトは初期値だけでなく常に０となる。値が０であるフェアレイトが通知されることにより、上流ノードがフェアネス制御対象トラフィックの送信を停止した結果、輻輳が解消すると、ヘッドノードは上流ノードにフルレイトを通知する。すると、上流ノードは一斉にフェアネス制御対象トラフィックの送信を開始することにより、再び輻輳が発生するという動作が繰り返されることになる。このような周期的な動作は、ストリームデータの通信には好ましくない。また、通常のデータ通信に対しても、一部のデータの損失が全てのデータの再送に繋がる恐れがあるため好ましくない。
【０１１５】
上述の周期的動作を防止するために、Ａｇｇｒｅｓｓｉｖｅモードでは、フェアネス制御部４６０−１〜２は、輻輳検出以降のフェアレイトを算出する場合でも、式５または式６に示す演算を行うことで、フェアレイトを算出することが好ましい。初期値だけでなく輻輳検出後のフェアレイトをいずれも式５または式６に示す演算で算出することで、Ａｇｇｒｅｓｓｉｖｅモードにおける上述の問題を解決することができる。
【０１１６】
実施の形態２．
【０１１７】
以下、第２の実施の形態のノードが、第１の実施の形態と同様に、図１に例示するＲＰＲネットワークを構成するＲＰＲノードである場合を例にして説明する。
【０１１８】
既に説明したように、第１の実施の形態では、フェアネス制御対象トラフィックが使用可能な通信帯域を、ＲＰＲネットワークを構成する全てのＲＰＲノードのノード数により除算した数値をフェアレイトの初期値として算出する。しかし、全てのＲＰＲノードが輻輳箇所を通過するフェアネス制御対象トラフィックを送信しているわけではない。ＲＰＲでは、ヘッドノードからテイルノードまでの輻輳領域に含まれるＲＰＲノードのみが、ヘッドノードから広告されるフェアレイトに従って、フェアネス制御対象トラフィックの送信レイトを制御する。そのため、式５または式６におけるｎｕｍＳｔａｔｉｏｎｓの代わりに、ヘッドノードからテイルノードまでの輻輳領域に含まれるＲＰＲノードのノード数を用いれば、フェアレイトの初期値をより適切な値として算出することができる。
【０１１９】
しかし、ヘッドノードは輻輳検出時に自ノードの上流に配置される何れのＲＰＲノードがテイルノードとなるのかを知り得ない。そのため、ヘッドノードからテイルノードまでに配置されているＲＰＲノードのノード数を正確に求めることができない。
【０１２０】
第２の実施の形態では、自ノードを通過するフェアネス制御対象トラフィックを送信しているＲＰＲノードのノード数を推測する。そして、そのノード数を用いてフェアレイトの初期値を算出することで、フェアレイトの初期値をより適切な値とする。
【０１２１】
図３は、本発明の第２の実施の形態のノードの構成例を示すブロック図である。以下、図３を参照して、図１に示すＲＰＲノード１００を例にしてノードの構成を説明するが、図１に示す他のＲＰＲノード１１０〜１７０の構成もＲＰＲノード１００の構成と同様である。また、図２に示す構成要素と同様の構成要素については、図２と同一の符号を付し、詳細な説明を省略する。
【０１２２】
第２の実施の形態のノードは、第１の実施の形態のノード（図２参照。）の構成要素に加えて、さらにノード計数部４８０−１〜２を備える。
【０１２３】
ノード計数部４８０−１は、自ノード（本例ではＲＰＲノード１００自身）を通過して、時計回り方向に隣接するＲＰＲノードに送られるＲＰＲフレームを参照し、自ノード（ＲＰＲノード１００）を通過するフェアネス制御対象トラフィックを送信している上流のＲＰＲノードのノード数を計数する。ノード計数部４８０−１は、自ノードを通過するＲＰＲフレームをトラフィックレイト計測部４７０−１から入力されフレーム多重部４４０−１に送る。同様に、ノード計数部４８０−２は、自ノード（本例ではＲＰＲノード１００自身）を通過して、反時計回り方向に隣接するＲＰＲノードに送られるＲＰＲフレームを参照し、自ノード（ＲＰＲノード１００）を通過するフェアネス制御対象トラフィックを送信している上流のＲＰＲノードのノード数を計数する。ノード計数部４８０−２は、自ノードを通過するＲＰＲフレームをトラフィックレイト計測部４７０−２から入力されフレーム多重部４４０−２に送る。
【０１２４】
フェアネス制御部４６０−１は、式５または式６における“ｎｕｍＳｔａｔｉｏｎｓ”の代わりに、ノード計数部４８０−１が計数したノード数を用いてフェアレイトの初期値を算出する。同様に、フェアネス制御部４６０−２は、式５または式６における“ｎｕｍＳｔａｔｉｏｎｓ”の代わりに、ノード計数部４８０−２が計数したノード数を用いてフェアレイトの初期値を算出する。従って、第２の実施の形態では、フェアネス制御部４６０−１〜２は、ＴＤＢ４３０から“ｎｕｍＳｔａｔｉｏｎｓ”の値を読み込まなくてよい。
【０１２５】
次に、ノード計数部４８０−１〜２の動作について説明する。ノード計数部４８０−１〜２は、いずれも、トラフィックレイト計測部より送られたフェアネス制御対象トラフィックのデータフレームの送信元ＲＰＲノードのノード識別子を記録するための内部記憶装置（図示せず。）を備えている。以降では、送信元ＲＰＲ  ＭＡＣアドレスを送信元ＲＰＲノードのノード識別子として用いる場合を例にして説明するが、データフレームに格納され、かつ、送信元ＲＰＲノードを特定可能な情報であれば、送信元ＲＰＲ  ＭＡＣアドレス以外の情報であっても送信元ＲＰＲノードのノード識別子として用いることができる。また、以下の説明では、ノード計数部４８０−１を例にして説明するが、ノード計数部４８０−２の動作も同様である。
【０１２６】
ノード計数部４８０−１は、トラフィックレイト計測部４７０−１から送られるフェアネス制御対象トラフィックのデータフレームの送信元ＲＰＲ  ＭＡＣアドレスを上述の内部記憶装置に重複しないように記憶させる。ノード計数部４８０−１は、内部記憶装置に送信元ＲＰＲ  ＭＡＣアドレスを記録する度に、自ノード（本例ではＲＰＲノード１００）を通過するフェアネス制御対象トラフィックを送信しているＲＰＲノードのノード数を表す変数をインクリメントする。この変数の値が、自ノードを通過するフェアネス制御対象トラフィックを送信しているＲＰＲノードのノード数の推定値である。
【０１２７】
図４は、ノード計数部が行うノード数の計数処理の一例を示すフローチャートである。入力ポート４００−１が上流のＲＰＲノードからフェアネス制御対象トラフィックを構成するＲＰＲフレームを受信し、ノード計数部４８０−１にそのＲＰＲフレームが送られると、ノード計数部４８０−１は、以下の処理を行う。
【０１２８】
ノード計数部４８０−１は、フェアネス制御対象トラフィックを構成するＲＰＲフレームが入力されると、そのＲＰＲフレームの送信元ＲＰＲ  ＭＡＣアドレスを参照し、その送信元ＲＰＲ  ＭＡＣアドレスが内部記憶装置に登録されているか否かを判定する（ステップＳ１）。
【０１２９】
送信元ＲＰＲ  ＭＡＣアドレスが内部記憶装置に登録されていなければ（ステップＳ１のＮｏ）、ノード計数部４８０−１は、ノード数を表す変数を１インクリメントする（ステップＳ２）。次に、ノード計数部４８０−１は、入力されたＲＰＲフレームの送信元ＲＰＲ  ＭＡＣアドレスを内部記憶装置に登録する（ステップＳ３）。続いて、ノード計数部４８０−１は、そのＲＰＲフレームをフレーム多重部４４０−１に送る（ステップＳ４）。
【０１３０】
送信元ＲＰＲ  ＭＡＣアドレスが内部記憶装置に登録されている場合（ステップＳ１のＹｅｓ）、ノード計数部４８０−１は、ステップＳ２，Ｓ３の処理を行わずに、ＲＰＲフレームをフレーム多重部４４０−１に送る（ステップＳ４）。
【０１３１】
フェアネス制御部４６０−１は、輻輳が発生したと判定した場合、ノード計数部４８０−１が保持しているノード数を表す変数の値をノード計数部４８０−１から読み込む。そして、“ｎｕｍＳｔａｔｉｏｎｓ”の代わりにその変数の値を用いて、式５の演算を行い、フェアレイトの初期値を算出する。式５ではなく、式６の演算によってフェアレイトの初期値を算出してもよい。
【０１３２】
また、自ノードを通過するフェアネス制御対象トラフィックを送信しているＲＰＲノードのノード数は、長時間経過しても一定値であることが好ましいが、そのようなノード数が頻繁に変化する場合もある。そこで、所定の時間毎に、自ノードを通過するフェアネス制御対象トラフィックを送信しているＲＰＲノードのノード数を表す変数を初期化してもよい。
【０１３３】
図５は、ノード計数部が行う変数の初期化処理の一例を示すフローチャートである。ノード計数部４８０−１は、まず初期化時刻（初期化を行う時刻）に現在時刻を設定する（ステップＳ１１）。次に、ノード計数部４８０−１は、自身の内部記憶装置に記憶されている全ての送信元ＲＰＲ  ＭＡＣアドレスを削除する（ステップＳ１２）。
【０１３４】
ステップＳ１２の後、ノード計数部４８０−１は、自ノードを通過するフェアネス制御対象トラフィックを送信しているＲＰＲノードのノード数を表す変数を初期化する（ステップＳ１３）。ステップＳ１３では、変数の値を所定の初期値に初期化する。
【０１３５】
また、ステップＳ１３では、初期化前の変数の値に基づいて、変数の値を初期化してもよい。また、初期化直前の変数の値をそれぞれ記憶しておき、その値に基づいて変数の値を初期化してもよい。例えば、初期化前の変数の値の１／２の値を初期値として初期化してもよい。ここで挙げた１／２は例示であり、１／２に限定されるわけではない。また、以前に行った初期化直前の値の平均値を初期値として初期化を行ってもよい。このように、初期化前の変数の値に基づいて初期化を行えば、ノードの初期化直後に輻輳が発生した場合であっても、フェアレイトの初期値が過大に見積もられることを防止することができる。
【０１３６】
ステップＳ１３の後、ノード計数部４８０−１は、ステップＳ１１で設定した初期化時刻から所定の時間が経過したか否かを判定する（ステップＳ１４）。初期化時刻から所定の時間が経過していれば（ステップＳ１４のＹｅｓ）、ステップＳ１１に移行し、ステップＳ１１以降の処理を繰り返す。初期化時刻から所定の時間が経過していなければ（ステップＳ１４のＮｏ）、ステップＳ１４の判定を再度行う。
【０１３７】
また、ステップＳ１３で、変数の値を０以外の初期値に定める場合には、ノード計数部４８０−１は、図４に示すフローチャートにおいて、ステップＳ２の直前に、変数の値と、内部記憶装置に登録されている送信元ＲＰＲ  ＭＡＣアドレスの数が等しいか否かの判定を行う。等しい場合には、ステップＳ２に移行し変数をインクリメントしてからステップＳ３に移行する。また、変数の値と、内部記憶装置に登録されている送信元ＲＰＲ  ＭＡＣアドレスの数が異なっていれば、ステップＳ２の処理を行わずにステップＳ３に移行する。変数の値を０以外の初期値に定める場合の例として、上述のように、初期化前の変数の値に基づいて変数を初期化する場合が挙げられる。
【０１３８】
以上の動作の説明では、ノード計数部４８０−１およびフェアネス制御部４６０−１を例にして説明したが、ノード計数部４８０−２およびフェアネス制御部４６０−２の動作も同様である。
【０１３９】
第２の実施の形態によれば、輻輳箇所を通過するフェアネス制御対象トラフィックを送信しているＲＰＲノードのノード数を用いてフェアレイトの初期値を算出するので、より適切なフェアレイトの初期値を算出することができる。
【０１４０】
次に、第２の実施の形態の変形例について説明する。以下に示す第２の実施の形態の変形例では、ノード計数部は、フェアネス制御対象トラフィックを構成するデータフレームのＴＴＬ（Time to Live）を利用して、自ノードを通過するフェアネス制御対象トラフィックを送信しているＲＰＲノードのノード数を計数する。ＴＴＬは、ＲＰＲフレームのヘッダに格納されている。ＴＴＬは、ＲＰＲフレームが１つ隣のＲＰＲノードに転送される毎に１減算され、０になった時点でそのＲＰＲフレームがＲＰＲネットワークから削除される。ＲＰＲノードが、受信したＲＰＲフレームのＴＴＬを減算したり、ＴＴＬが０となったＲＰＲフレームの削除を行う。以下の説明においても、ノード計数部４８０−１を例にして説明する。
【０１４１】
本変形例では、ノード計数部４８０−１〜２は、内部記憶装置に送信元ＲＰＲ  ＭＡＣアドレスを登録しなくてよい。
【０１４２】
ノード計数部４８０−１は、トラフィックレイト計測部４７０−１からフェアネス制御対象トラフィックのデータフレームが送られると、そのデータフレームに格納されているＴＴＬと、ＴＴＬの初期値との差を算出する。この差をホップ数と記す。ノード計数部４８０−１は、輻輳箇所を通過するフェアネス制御対象トラフィックを送信しているＲＰＲノードのノード数を示す変数の値と、ホップ数とを比較し、ホップ数の方が大きい値であれば、変数の値をそのホップ数の値に更新する。
【０１４３】
また、ＴＴＬの初期値は、ＲＰＲフレームの場合には、ＲＰＲフレームに格納されている値を使用すればよい。ここでは、通信ネットワークがＲＰＲである場合を例にして説明しているが、ＲＰＲ以外の通信プロトコルが適用されたフレームの場合には、各ノードがＴＴＬの初期値を予め定められた所定の値に設定することとし、各ノードのノード計数部がその所定の値をＴＴＬの初期値として記憶装置（図示せず。）に記憶しておけばよい。
【０１４４】
図６は、ノード計数部が行うノード数の計数処理の一例を示すフローチャートである。入力ポート４００−１が上流のＲＰＲノードからフェアネス制御対象トラフィックを構成するデータフレームを受信し、ノード計数部４８０−１にそのデータフレームが送られると、ノード計数部４８０−１は、以下の処理を行う。なお、データフレームは、制御フレーム以外のフレームである。本例では、端末が送信したイーサネットフレームを格納しているＲＰＲフレームがデータフレームである。
【０１４５】
ノード計数部４８０−１は、フェアネス制御対象トラフィックを構成するデータフレームが入力されると、そのデータフレームに格納されているＴＴＬと、ＴＴＬの初期値（図６では、ＴＴＬ＿Ｂａｓｅと記す。）との差を求める（ステップＳ２１）。具体的には、ノード計数部４８０−１は、ＴＴＬの初期値から、データフレームに格納されているＴＴＬの値を減算する。この減算結果がホップ数である。
【０１４６】
次に、ノード計数部４８０−１は、ホップ数が、輻輳箇所を通過するフェアネス制御対象トラフィックを送信しているＲＰＲノードのノード数を示す変数の値よりも大きいか否かを判定する（ステップＳ２２）。
【０１４７】
ホップ数が変数の値よりも大きければ（ステップＳ２２のＹｅｓ）、ノード計数部４８０−１は、変数の値を、ホップ数の値に更新する（ステップＳ２３）。換言すれば、変数にホップ数を代入する。続いて、ノード計数部４８０−１は、データフレームをフレーム多重部４４０−１に送る（ステップＳ２４）。
【０１４８】
ホップ数が変数の値よりも小さければ（ステップＳ２２のＮｏ）、ノード計数部４８０−１は、ステップＳ２３の処理を行わずに、ＲＰＲフレームをフレーム多重部４４０−１に送る（ステップＳ２４）。
【０１４９】
次に、変数の初期化処理について説明する。図７は、ノード計数部が行う変数の初期化処理の一例を示すフローチャートである。ノード計数部４８０−１は、まず初期化時刻（初期化を行う時刻）に現在時刻を設定する（ステップＳ３１）。この処理は、既に説明したステップＳ１１の処理と同様である。
【０１５０】
続いて、ノード計数部４８０−１は、自ノードを通過するフェアネス制御対象トラフィックを送信しているＲＰＲノードのノード数を表す変数を初期化する（ステップＳ３２）。この処理は、既に説明したステップＳ１３の処理と同様である。
【０１５１】
ステップＳ３２の後、ノード計数部４８０−１は、ステップＳ３１で設定した初期化時刻から所定の時間が経過したか否かを判定する（ステップＳ３３）。初期化時刻から所定の時間が経過していれば（ステップＳ３３のＹｅｓ）、ステップＳ３１に移行し、ステップＳ３１以降の処理を繰り返す。初期化時刻から所定の時間が経過していなければ（ステップＳ３３のＮｏ）、ステップＳ３３の判定を再度行う。ステップＳ３３の処理は、既に説明したステップＳ１４の処理と同様である。
【０１５２】
上記以外の動作は、既に説明した第２の実施の形態の動作と同様である。
【０１５３】
以上のような第２の実施の形態の変形例によれば、輻輳箇所を通過するベストエフォート型トラフィックを送信しているノードのうち、最も遠い位置に配置されているノードまでのノード数を用いてフェアレイトの初期値を算出するので、より適切なフェアレイトの初期値を算出することができる。
【０１５４】
上記の各実施の形態では、ノードが接続されている通信ネットワークがＲＰＲネットワークである場合を例にして説明した。通信システム内のあるリンクを通過するトラフィックに、そのリンクの通信帯域を公平に共有させる帯域制御を行うことができる通信ネットワークのノードであれば、ＲＰＲノード以外のノードであっても本発明を適用することができる。例えば、ＬＳＰ（Ｌａｂｅｌ  Ｓｗｉｔｃｈｅｄ  Ｐａｔｈ，ラベルスイッチパス）を通信経路とするＭＰＬＳ（Ｍｕｌｔｉ  Ｐｒｏｔｏｃｏｌ  Ｌａｂｅｌ Ｓｗｉｔｈｃｉｎｇ，マルチプロトコルラベルスイッチング）ネットワークのノードとして本発明のノードを用いてもよい。すなわち、本発明のノードは、ＬＳＰを通信経路とするＭＰＬＳを構成するノードであってもよい。
【０１５５】
通信ネットワークがＲＰＲネットワークのようなリングネットワークではなく、第１の実施の形態と同様に予め記憶していたノード数を用いてフェアレイトの初期値を算出する場合、各ノードは、トポロジ情報として自ノードの上流に配置されるノードのノード数をＴＤＢに記憶しておけばよい。そして、フェアレイトの初期値を算出するときには、そのノード数を用いればよい。
【０１５６】
上記の各実施の形態においては、ノードがフェアネス制御部４６０−１〜２等の各処理部を備える構成として説明したが、ノードがコンピュータと記憶装置を予め備えた上で、そのコンピュータが記憶装置に記憶されたノード用プログラムに従って動作することにより、各処理部と同様の動作を実現する構成であってもよい。
【産業上の利用可能性】
【０１５７】
本発明は、トラフィックにリンクの通信帯域を共有させるノードや通信システムに好適に適用される。
【図面の簡単な説明】
【０１５８】
【図１】本発明のノードを含む通信ネットワークの例を示す説明図である。
【図２】本発明のノードの構成例を示すブロック図である。
【図３】本発明の第２の実施の形態のノードの構成例を示すブロック図である。
【図４】ノード計数部が行うノード数の計数処理の一例を示すフローチャートである。
【図５】ノード計数部が行う変数の初期化処理の一例を示すフローチャートである。
【図６】ノード計数部が行うノード数の計数処理の一例を示すフローチャートである。
【図７】ノード計数部が行う変数の初期化処理の一例を示すフローチャートである。
【符号の説明】
【０１５９】
１００〜１７０  ノード
４００−１〜３  入力ポート
４１０−１〜２  フレーム解析部
４２０  ＲＰＲスイッチ処理部
４３０  トポロジデータベース（ＴＤＢ）
４４０−１〜２  フレーム多重部
４５０−１〜３  出力ポート
４６０−１〜２  フェアネス制御部
４７０−１〜２  トラフィックレイト計測部
【図１】
2008219722.tif 000003
【図２】
2008219722.tif 000004
【図３】
2008219722.tif 000005
【図４】
2008219722.tif 000006
【図５】
2008219722.tif 000007
【図６】
2008219722.tif 000008
【図７】
2008219722.tif 000009