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