インターネットにおいては、トラフィックに対して予め所定の通信帯域を割り当てる時分割多重方式と異なり、パケット多重方式と呼ばれる多重方式が用いられている。
パケット多重方式では、通信システムの通信帯域は全てのトラフィックにより共有される。ネットワークノード(以降では、単にノードと記述する)は、他のトラフィックによって使用されていない通信帯域が存在する場合に、トラフィックを送信することができる。すなわち、他のトラフィックのレイトが低ければ、ノード間で送受信可能なデータ量に余裕があり、トラフィックを送信できる。
トラフィックとは、フレームの集合である。また、トラフィックが使用する通信帯域は、トラフィックに含まれるフレームのデータ量(フレームサイズ)の総和を送信に要した時間で除算した値であり、レイトと同義である。
時分割多重方式では、あるトラフィックに割り当てられた通信帯域が未使用であっても、他のトラフィックがその通信帯域を使用することは禁止される。一方、パケット多重方式では空き帯域に他のトラフィックを多重することが可能である。そのため、パケット多重方式の帯域利用効率は時分割多重化方式よりも高くなる。この効果はパケット多重方式の統計多重効果と呼ばれている。
しかし、パケット多重方式は、上記の特徴が故に、多数のトラフィックが同一時間内に通信システムの特定リンクに集中的に送信された結果、そのリンクの通信帯域を超過した事態(輻輳)が発生すると、トラフィックの転送に遅延が生じたり、トラフィックの一部が廃棄されたりする場合がある。この場合に通信が不安定になったり、あるいは通信が遮断されたりしてしまうという短所がパケット多重方式にはある。
この問題を解決するために、パケット多重方式においても時分割多重方式と同様に特定のトラフィックに対して所定の通信帯域を保証したり、各トラフィックに優先度と呼ばれるパラメータを付加した上で優先度の高いトラフィックを優先的に送信したりするなどの様々な通信帯域の制御方法が考案されている。
そのような帯域制御方法の1つとして、通信システム内のあるリンクを通過する全てのトラフィックに、そのリンクの通信帯域を公平に共有させるような帯域制御方法がある。「トラフィックにリンクの通信帯域を公平に共有させる」とは、そのリンクで送信することができる通信帯域をそのリンクを使用するトラフィックの数で等分割した値を超えないように、各トラフィックの通信帯域を制御することである。例えば、リンクの通信帯域が10Gbpsであり、通信帯域を制御されるトラフィックとしてA,B,C,Dの4種類のトラフィックがあるとする。この場合、各トラフィックの通信帯域が10Gbps/4=2.5Gbpsを超えないように制御する。このようにトラフィックの通信帯域を制御することを、「トラフィックにリンクの通信帯域を公平に共有させる」という。
このような制御の例として、IEEE(the Institute of Electrical and Electronics Engineers)において2004年に標準化されたRPR(Resilient Packet Ring)で用いられているフェアネス(Fairness)と呼ばれる帯域制御がある。フェアネスは、非特許文献1に記載されている。
以下、通信帯域が制御されるトラフィックをフェアネス制御対象トラフィックと記す。
RPRが適用された通信ネットワーク(以下、RPRネットワークと記す。)は、時計方向にフレームを転送するリング(リングレット)と、反時計方向にフレームを転送するリング(リングレット)とを備えた2重リングネットワークである。リングレットは、RPRネットワークの通信経路である。
図7は、RPRネットワークの例を示す説明図である。図7では、IEEE802.17に準拠して動作するノード(以下、RPRノードと記述する)を8台含む場合を例示している。図7に例示するRPRネットワーク10では、各RPRノード100〜170がそれぞれ別々の端末200〜270に接続されている。
RPRノードとその配下の端末(リングネットワークに属していない端末)とはイーサネットフレームを送受信する。なお、イーサネットは登録商標である。RPRノードは、配下の端末からイーサネットフレームを受信すると、そのイーサネットフレームをペイロードに格納したフレーム(RPRフレームと記す。)を生成し、そのRPRフレームを他のRPRノードに転送する。具体的には、イーサネットフレームの宛先となる端末を配下の端末としているRPRノードにRPRフレームを転送する。また、RPRノードは、自ノードを宛先とするRPRフレームを受信すると、RPRフレームからイーサネットフレームを抽出し、イーサネットフレームを配下の端末に送信する。
各ノード100〜170は、それぞれポートP1〜P3を有する。ポートP1,P2は、隣接するRPRノードとRPRフレームを送受信するためのポートである。ポートP3は、配下の端末とイーサネットフレームを送受信するためのポートである。
RPRネットワークのトラフィックには、トラフィックの通信帯域が保証されている帯域保証型トラフィックと、帯域が保証されないベストエフォート型トラフィックが規定されている。トラフィックの通信帯域が保証されているとは、トラフィックの通信帯域が確保されていることである。
帯域保証型トラフィックは、予め所定の通信帯域が排他的に割り当てられ、ベストエフォート型トラフィックに対して優先的に送信されるトラフィックである。帯域保証型トラフィックは、保証帯域以下のレイトであれば、常に通信が保証される。ただし、複数の帯域保証型トラフィックが通信システムに存在し、かつ、それらが同一のリンクを共有している場合、それらのトラフィックに割り当てられた通信帯域の総和が、共有しているリンクの通信帯域の最小値以下となるように、各帯域保証型トラフィックの保証帯域を設定する必要がある。
一方、ベストエフォート型トラフィックは、パケット多重方式における通常のトラフィックであって、前述のように未使用の通信帯域が存在する場合にのみ、送信することができるトラフィックである。
RPRネットワークでは、ベストエフォート型トラフィックがフェアネスによる帯域制御処理の対象(フェアネス制御対象トラフィック)となる。
以下に、本発明に関連する技術として、RPRネットワークを構成するリンクにおいて輻輳が発生した場合の一般的なノードの動作について説明する。輻輳発生箇所のすぐ上流に存在するノードをヘッドノード(Head Node)と呼ぶ。RPRネットワークを構成するリンクで輻輳が発生すると、ヘッドノードは、自ノード(すなわちヘッドノード自身)の上流に配置されるノードに対して、そのノード(ヘッドノードの上流のノード)を通過するフェアネス制御対象トラフィックの通信帯域として許可する通信帯域の上限値を示すフェアレイト(FairRate)を広告する。具体的には、ヘッドノードは、フェアレイトを格納した制御フレーム(フェアネスフレーム)を自ノード(ヘッドノード自身)の上流にある隣接ノードに送信する。ヘッドノードからフェアネスフレームを受信した上流の隣接ノードは、そのノード自身からRPRネットワーク内に送信するフェアネス制御対象トラフィックのうち、輻輳箇所を通過するトラフィックが使用する通信帯域がフェアレイト以下となるように帯域制御処理を実行する。
また、ヘッドノードの上流に配置された各ノードは、以下のように動作する。ヘッドノードの上流に配置された各ノードは、上流の隣接ノードから受信したフェアネス制御対象トラフィックの通信帯域がフェアレイト以上である場合には、ヘッドノードが広告したフェアレイトを格納したフェアネスフレームをその上流の隣接ノードに送信する。一方、上流の隣接ノードから受信したフェアネス制御対象トラフィックの通信帯域がフェアレイト未満である場合は、フェアネス制御対象トラフィックの通信帯域を抑制する必要がない旨を、上流の隣接ノードにフェアネスフレームで通知する。具体的には、フェアレイトをフルレイト(FullRate)とするフェアネスフレームを上流の隣接ノードに送信する。フェアレイトがフルレイトでないフェアネスフレームを受信した各ノードは、そのノード自身からRPRネットワーク内に送信するフェアネス制御対象トラフィックのうち、輻輳箇所を通過するトラフィックが使用する通信帯域がフェアレイト以下となるように帯域制御処理を実行する。
フェアレイトがフルレイトではないフェアネスフレームを受信し、かつ、フェアレイトがフルレイトであるフェアネスフレームを送信するノードは、テイルノード(Tail Node)と呼ばれる。また、ヘッドノードからテイルノードまでの通信経路は輻輳領域(Congestion Domain)と呼ばれる。
下流の隣接ノードより、フェアレイトがフルレイトであるフェアネスフレームを受信したノードは、同様のフェアネスフレームを上流に送信する。従って、テイルノードよりも上流のノードは、それらが送信するフェアネスの制御対象トラフィックに対して帯域制御処理を実行しない。
図8は、一般的なRPRノードが、自ノードがテイルノードであるか否かを判定する処理のフローチャートである。一般的なRPRは、隣接するRPRノードからフェアネスフレームを受信すると、上流の隣接ノードから受信したフェアネス制御対象トラフィックの通信帯域がフェアレイト未満であるか否かを判定する(ステップS1)。そして、上流の隣接ノードから受信したフェアネス制御対象トラフィックの通信帯域がフェアレイト未満であるならば(ステップS1のYes)、自ノードがテイルノードであると判定する(ステップS2)。一方、フェアレイト以上であれば(ステップS1のNo)、自ノードはテイルノードでないと判定する(ステップS3)。
上述のような制御により、RPRネットワークでは、輻輳が発生した場合においても、特定のノードのみが輻輳箇所のリンクの通信帯域を占有することなく、複数のノードが公平に共有することが可能である。
次に、RPRの他の特徴である高信頼性を実現する高速のプロテクション機能について説明する。RPRネットワークおいて、RPRノード間のリンクが切断された場合、そのリンクの両側のRPRノードは、リンクの切断を検出する。リンクの切断を検出したRPRノードは、直ちに他の全てのRPRノードに、リンクに障害が発生した旨を通知する。この障害発生の通知を受信した他のRPRノードは、リンクの切断箇所を迂回するようにトラフィックを送信する動作状態に遷移する。その結果、RPRネットワークは、通信を継続することができる。
RPRは、都市網のように、大容量のトラフィックが流れる基幹系通信システムへの採用を前提として、SDH(Synchronous digital hierarchy )またはSONET(Synchronous Optical Network )と同等の50ms以内の短時間で通信を回復するように設計されている。そのため、信頼性の高い通信システムを構築することが可能である。
しかし、IEEE802.17では、トラフィックの宛先であるRPRノードが故障した場合に通信を続行するための方法について記載されていない。そこで、RPRノードを2重化することによって、一方のRPRノードが故障した場合でも通信を継続可能とする様々なRPRノード冗長化技術が提案されている。
図9は、冗長化されたRPRノードを含むRPRネットワークの例を示す説明図である。図9に例示するRPRネットワーク20では、RPRノード100,110を1台のRPRノードに仮想化している。そして、RPRノード100,110の配下に共通の端末200を接続させている。なお、他のRPRノード120〜170には、それぞれ別々の端末220〜270が接続されている。図9に例示するように、RPRノード100,110に共通の端末200を接続させることにより、RPRノード100,110の一方が故障したとしても、端末200は他方のRPRノードにトラフィックを送信することによって、通信を継続することができる。本例のように、同じ端末に接続されることで冗長化された一対のRPRノード100,110は互いにペアノードと呼ばれる。
RPRノード冗長化技術では、フレームを複数回受信することを防止する方法、ブロードキャストストームの防止方法、配下の端末がフレームを送信する出力ポートを決定する方法、障害発生時の通信復旧方法等が規定される。
ノード冗長化技術の例は、例えば特許文献1に記載されている。
IEEE802.17に記載されている高速プロテクション技術に、上述のRPRノード冗長化技術を組み合わせることにより、RPRネットワークの信頼性をより一層向上させることが可能である。
以下、本発明の実施の形態を図面を参照して説明する。
以下の説明では、輻輳箇所側にトラフィックを送信する場合に当該トラフィックの送信方向を下流側とする(単に、下流と記すこともある。)。その反対側の方向を、上流側とする(単に、上流と記すこともある。)。各ノードは、フェアネスフレームを下流側の隣接ノードから受信する。
図1は、本発明の通信システムの例を示す説明図である。図1では、本発明の通信システム15がRPRネットワークである場合を例示している。RPRネットワーク内における通信経路は、2重化されたリングレットである。また、本発明のノード10,11は、冗長化されたノード(冗長化ノード)である。すなわち、本発明のノード10,11は隣接するように配置され、配下の端末として共通の端末200が接続される。端末200は、本発明のノード10,11の両方に接続されている。
冗長化される本発明のノードの数は複数であればよい。すなわち、図1では、2つのノード10,11が冗長化された場合を例示しているが、3つ以上のノードが冗長化されてもよい。その場合も、冗長化される各ノードは隣接するように配置される。すなわち、冗長化される各ノードは連続して並ぶように配置される。
RPRネットワーク15は、本発明のノード10,11と、ノード120〜170とがリング状に接続された通信システムである。ノード120〜170は、一般的なRPRネットワークで用いられる一般的なノードである。本発明のノード10,11とノード120〜170は、“IEEE Standards 802.17”に準拠して動作するRPRノードである。ただし、RPRノード10,11は、フェアネスフレームを受信したときの動作が、一般的な他のRPRノード120〜170とは異なる。
既に述べたように、本発明のノード10,11には、共通の端末200が接続されている。他の一般的なRPRノード120〜170には、それぞれ配下の端末220〜270が接続されている。一般的なRPRノード120〜170の配下の端末220〜270は、他のRPRノードには接続されない。
また、本発明のノード10,11には、複数台のノードを1台のRPRノードとして仮想化するための冗長化技術が適用されている。例えば、冗長化された複数台のノードが端末200に重複してイーサネットフレームを送信しないようにする動作が適用されている。この動作の例については、後述する。
また、冗長化された複数台のノードに接続されている端末200は、イーサネットフレームをノードに送信する場合に、その複数台のノードのうちのいずれか1台のみにイーサネットフレームを送信する。例えば、端末200は、冗長化された複数のノード(図1に示す例ではノード10,11)の中から、端末200自身が送信しようとするイーサネットフレームの宛先MACアドレスおよび送信元MACアドレスに応じたノードを1つ選択し、そのノードにイーサネットフレームを送信する。ただし、冗長化された複数のノードの中から端末200が1つのノードを選択する方法は、上記の例に限定されない。
各ノード10,11,120〜170は、それぞれポートP1〜P3を有する。ポートP1,P2は、隣接するRPRノードとRPRフレームを送受信するためのポートである。ポートP3は、配下の端末とイーサネットフレームを送受信するためのポートである。
冗長化されない各RPRノード120〜170として、例えば、図10に示す構成のRPRノードを用いればよい。
各端末200〜270は、RPRノードに対してトラフィックを送信する。端末がRPRノードに対して送信するトラフィックの中には、フェアネス制御対象トラフィックもある。どのようなトラフィックをフェアネス制御対象トラフィックとするかは、ネットワーク管理者によって様々に定められる。各RPRノード10,11,120〜170が備えるRPRスイッチ処理420(図2、図10参照)は、例えば、端末から受信したフレームのヘッダに格納されている宛先アドレス、送信元アドレス、VLAN識別子、プライオリティ(優先度)等に基づいて、端末から受信したトラフィックがフェアネス制御対象トラフィックであるか否かを判定する。また、各ノードのRPRスイッチ処理420は、端末から受信したフェアネス制御対象トラフィックをRPRネットワーク内に送信する場合、そのフェアネス制御対象トラフィックが輻輳箇所を通過する場合に通信帯域を制御する。端末から受信したフェアネス制御対象トラフィックが輻輳箇所を通過しない場合には、通信帯域の制御を行わない。従って、端末から受信したフェアネス制御対象トラフィックのうち、輻輳箇所を通過させるトラフィックが、実際に通信帯域を制御されるフェアネス制御対象トラフィックとなる。
次に、本発明のノードの構成について説明する。図2は、本発明のノードの構成例を示すブロック図である。図10に例示するRPRノードと同様の構成要素については、図10と同一の符号を付す。以下、図2を参照して、RPRノード10を例にしてノードの構成を説明するが、冗長化された他のRPRノード11(図1参照。)の構成もRPRノード10と同一である。
本発明のRPRノード10は、入力ポート400−1〜3と、フレーム解析部410−1〜2と、RPRスイッチ処理部420と、TDB記憶部530と、フレーム多重部440−1〜2と、出力ポート450−1〜3と、フェアネス制御部560−1〜2と、トラフィックレイト計測部470−1〜2と、設定用インタフェース580とを備える。入力ポート400−1〜3、フレーム解析部410−1〜2、RPRスイッチ処理部420、フレーム多重部440−1〜2、出力ポート450−1〜3、トラフィックレイト計測部470−1〜2は、図10に示した当該構成要素と同様である。
RPRノード10の400−1〜3は、図1に示すRPRノード10のポートP1〜P3における受信側のポート(フレームを受信するポート)である。
入力ポート400−1〜2は、隣接するRPRノードから送信されるRPRフレームを受信するポートである。具体的には、入力ポート400−1は、時計回り方向に隣接するRPRノード(本例ではRPRノード11)から送信されるRPRフレームを受信するポートである。また、入力ポート400−2は、反時計回り方向に隣接するRPRノード(本例ではRPRノード170)から送信されるRPRフレームを受信するポートである。また、入力ポート400−3は、配下の端末(本例では端末200)から送信されるイーサネットフレームを受信するポートである。
RPRノード10の出力ポート450−1〜3は、図1に示すRPRノード10のポートP1〜P3における送信側のポート(フレームを送信するポート)である。
出力ポート450−1〜2は、隣接するRPRノードにRPRフレームを送信するポートである。具体的には、出力ポート450−1は、時計回り方向に隣接するRPRノード(本例ではRPRノード11)にRPRフレームを送信するポートである。また、出力ポート450−2は、反時計回り方向に隣接するRPRノード(本例ではRPRノード170)にRPRフレームを送信するポートである。また、出力ポート450−3は、配下の端末(本例では端末200)にイーサネットフレームを送信するポートである。
フレーム解析部410−1〜2は、それぞれ入力ポートが受信したRPRフレームがフェアネスフレームであるか否かを判定する。この判定では、例えば、受信したRPRフレームのヘッダを参照し、フェアネスフレームを示す情報がヘッダに記述されていたならば、受信したRPRフレームがフェアネスフレームであると判定すればよい。また、他の種類のフレームを示す情報がヘッダに記述されていたならば、受信したRPRフレームがフェアネスフレームでないと判定すればよい。フレーム解析部410−1およびフレーム解析部410−2は、受信したRPRフレームがフェアネスフレームであるならば、そのフェアネスフレームを、フェアネス制御部560−1およびフェアネス制御部560−2のうちの対応する方に送る。受信したRPRフレームがフェアネスフレームでなければ、そのRPRフレームをRPRスイッチ処理部420に送る。
具体的には、フレーム解析部410−1は、入力ポート400−1が隣接のRPRノード(本例ではRPRノード11)から受信したRPRフレームについてフェアネスフレームであるか否かを判定し、フェアネスフレームであると判定したならば、そのRPRフレームをフェアネス制御部560−2に送る。また、フェアネスフレームでないと判定したならば、そのRPRフレームをRPRスイッチ処理部420に送る。
同様に、フレーム解析部410−2は、入力ポート400−2が隣接のRPRノード(本例ではRPRノード170)から受信したRPRフレームについてフェアネスフレームであるか否かを判定し、フェアネスフレームであると判定したならば、そのRPRフレームをフェアネス制御部560−1に送る。また、フェアネスフレームでないと判定したならば、そのRPRフレームをRPRスイッチ処理部420に送る。
RPRスイッチ処理部420は、“IEEE Standards 802.17”において定義されるRPRに関する各種処理を実行する。
RPRスイッチ処理部420が実行する処理の例として、隣接RPRノード(本例ではRPRノード11およびRPRノード170)から受信したRPRフレームの転送処理、配下の端末(本例では端末200)より受信したイーサネットフレームからRPRフレームを生成してRPRネットワーク内に送信する処理、自ノード宛てのRPRフレームに格納されたイーサネットフレームを抽出して配下の端末200に送信する処理、Topology Discovery Protocol(TDP)によりRPRネットワークのトポロジ情報を管理する処理、OAM(Operations,Administration,Maintenance)によりRPRネットワークを管理する処理等がある。
また、本発明のノードは、冗長化ノードが重複して配下の端末にイーサネットフレームを送信することを防止するRPRノード冗長化技術が適用される。例えば、後述するように、本発明のノードのTDB記憶部530は、予め、各冗長化ノードのRPR MACアドレスを予め記憶する。そして、RPRスイッチ処理部420は、自ノード宛てのRPRフレームだけでなく、他の冗長化ノード宛のRPRフレームを受信した場合にも、そのRPRフレームからイーサネットフレームを抽出して配下の端末200に送信し、そのRPRフレームを廃棄する処理を行う。また、自ノードと配下の端末200との間のリンクが切断されていることを検出している場合、RPRスイッチ処理部420は、自ノードまたは他の冗長化ノード宛のRPRフレームを受信したならば、そのRPRフレームを次のRPRノードに転送する。例えば、RPRノード10が、RPRノード170から、自ノード宛またはRPR11宛のRPRフレームを受信した場合、そのRPRフレームに格納されているイーサネットフレームを端末200に送信し、そのRPRフレームを廃棄する。このとき、RPRノード10と端末200間のリンクが切断されているならば、自ノード宛またはRPR11宛のRPRフレームを次のRPRノード11に転送する。この場合、RPRノード11が端末200にイーサネットフレームを送信する。
RPRスイッチ処理部420は、時計回り方向に隣接するRPRノード(本例ではRPRノード11)に転送するフレームを、トラフィック計測部470−1を介してフレーム多重部440−1に送る。同様に、反時計回り方向に隣接するRPRノード(本例ではRPRノード170)に転送するフレームを、トラフィック計測部470−2を介してフレーム多重部440−2に送る。
以降では、RPRスイッチ処理部420の処理の詳細については、本発明の動作に深く関わる動作を除いて、説明を省略する。
RPRスイッチ処理部420は、出力ポート450−1に対応するバッファと、出力ポート450−2に対応するバッファとを備えている。出力ポート450−1に対応するバッファは、出力ポート450−1から送信する予定のトラフィックのうち、フェアネス制御対象トラフィックを保持する。同様に、出力ポート450−2に対応するバッファは、出力ポート450−2から送信する予定のトラフィックのうち、フェアネス制御対象トラフィックを保持する。輻輳が生じた場合、これらのバッファの使用量(フェアネス制御対象トラフィックの容量)が増加する。従って、これらのバッファの使用量が閾値以上になったことによって、輻輳が発生したと判定することができる。例えば、出力ポート450−1に対応するバッファの使用量が閾値を超えた場合、RPRノード10からRPRノード11へ向かうリンクで輻輳が発生したと判定することができる。同様に、出力ポート450−2に対応するバッファの使用量が閾値を超えた場合、RPRノード10からRPRノード170へ向かうリンクで輻輳が発生したと判定することができる。RPRスイッチ処理部420は、出力ポート450−1に対応するバッファの使用量が閾値を超えた場合、その旨をフェアネス制御部460−1に通知する。また、出力ポート450−2に対応するバッファの使用量が閾値を超えた場合、その旨をフェアネス制御部460−2に通知する。
TDB記憶部530は、TDB(トポロジデータベース)を記憶する記憶装置である。TDBは、自ノード(ここではRPRノード10)のRPRスイッチ処理部420が実行するTDPの処理の結果、自ノードが属するRPRネットワークのトポロジ情報が登録されるデータベースである。TDBには、RPRスイッチ処理部420によりトポロジ情報として、RPRネットワークを構成するRPRノードのノード数、各RPRノードの位置、各リンクの障害情報等が登録される。また、TDBは、各フェアネス制御部560−1〜2およびRPRスイッチ処理部420によって参照される。
RPRスイッチ処理部420は、各RPRノードがTDBを作成するための制御フレーム(Topology Protection フレーム。以下、TPフレームと記す。)を定期的に生成し、各リングレットにブロードキャスト送信する。RPRスイッチ処理部420は、TPフレームを生成するとき、自ノードのRPR MACアドレスを送信元アドレスとしてTPフレームに格納する。また、RPRスイッチ処理部420は、TTL(Time To Live)と、TTLの初期値(以下、TTLベースと記す。)と、隣接するそれぞれのRPRノードとの間のリンクに障害が発生しているか否かを示す情報もTPフレームに格納する。このとき、TTLベースおよびTTLは、TPフレーム作成時にTDBに登録されているRPRノードの数に基づいて定めればよい。なお、TPフレームに格納される情報は、上記の情報に限定されるわけではない。
また、他のRPRノードから送信されたTPフレームを受信した場合、RPRスイッチ処理部420は、TPフレーム内のTTLを1減算する。RPRスイッチ処理部420は、その減算結果が0でなければ、次のRPRノードにTPフレームを転送し、減算結果が0であればそのTPフレームを廃棄する。
また、RPRスイッチ処理部420は、他のノードからTPフレームを受信した場合、以下のようにTDBを作成する。受信したTPフレームには、TTLと、TTLベース(TTLの初期値)とが含まれている。従って、TTLとTTLベースとからホップカウント(自ノードから何ホップ目にTPパケットの送信元のノードが存在するかを示す値)を求めることができる。RPRスイッチ処理部420は、入力ポート400−1から受信したそれぞれのTPパケット毎に、TTLベースからTTLを減算した値をホップカウントとして求め、ホップカウントの順番にTPパケットの送信元のRPR MACアドレス等をトポロジ情報としてTDB記憶部530に記憶させる。同様に、入力ポート400−2から受信した各TPパケットについても、TPパケット毎に、TTLベースからTTLを減算した値をホップカウントとして求め、ホップカウントの順番にTPパケットの送信元のRPR MACアドレス等をトポロジ情報としてTDB記憶部530に記憶させる。
また、TPフレームには、その送信元ノードと、その送信元ノードに隣接する各RPRノードとの間のリンクに障害が発生しているか否かを示す情報が含まれている。すなわち、障害が発生している場合には、この情報から、RPRノード間のリンクのうちどのリンクで障害が発生しているかがわかる。RPRスイッチ処理部420は、TPフレーム内の情報を参照して、RPRノード間のリンクに障害が発生している場合に、どのリンクで障害が発生しているかを示す障害情報をトポロジ情報としてTDB記憶部530に記憶させる。
このように記憶されたRPR MACアドレスや、リンクの障害情報がTDBとなる。
図2に例示したRPRノード10のRPRスイッチ処理部420だけでなく、各ノードのRPRスイッチ処理部420は定期的にTPフレームを送信する。そして、各ノードのRPRスイッチ処理部420は、他の各RPRノードから受信したTPフレームを用いて定期的にTDBを作成し直す。故障したRPRノードはTPフレームを送信しない。すなわち、TDBにRPR MACアドレスが登録されているか否かによって、RPRノードが正常であるか故障しているかを判定することができる。RPRスイッチ処理部420および各フェアネス制御部560−1〜2は、TDBにRPR MACアドレスが登録されているRPRノードは正常であると判断し、TDBにRPR MACアドレスが登録されていないRPRノードは故障していると判断する。
また、RPRスイッチ処理部420は、自ノードと配下の端末200との間のリンクに障害が発生しているか否かを判定する。例えば、RPRスイッチ処理部420および端末200は、一定周期でキープアライブフレームを相互に送信する。RPRスイッチ処理部420は、一定個数のキープアライブフレームが端末から未着である場合(一定期間、端末からキープアライブフレームを受信していない場合)、自ノードと端末との間のリンクに障害が発生したと判定する。また、RPRスイッチ処理部420は、入力ポート400−3を介して物理層におけるリンクの状況の情報を取得することによって、自ノードと端末との間のリンクに障害が発生しているか否かを判定してもよい。
また、RPRスイッチ処理部420は、自ノードと配下の端末との間のリンクに障害が発生しているか否かを、他の各冗長化ノードに通知する。例えば、各冗長化ノードのRPRスイッチ処理部420は、自ノードと配下の端末との間のリンクに障害が発生しているか否かを示す特殊フレームを、他の各冗長化ノードに一定周期で送信することによって通知する。自ノードと配下の端末との間のリンクに障害が発生しているならば、その旨を示す特殊フレームを他の各冗長化ノードに送信する。この特殊フレームとして、TPフレームを用いてもよい。
また、フレーム解析部410−1およびフレーム解析部410−2は、他の冗長化ノードから、上記の特殊フレーム(TPフレームであってもよい。)を受信した場合、その特殊フレームを、フェアネス制御部460−1およびフェアネス制御部460−2それぞれに送る。フェアネス制御部460−1およびフェアネス制御部460−2は、配下の端末との間のリンク障害を示す特殊フレームを受け取ることによって、どの冗長化ノードと配下の端末との間でリンク障害が生じているかを特定する。また、端末との間でリンク障害が生じている冗長化ノードの数を計数することができる。
また、RPRノードの冗長化技術として、自ノード宛てのRPRフレームだけでなく、他の冗長化ノード宛のRPRフレームを受信した場合にも、そのRPRフレームからイーサネットフレームを抽出して配下の端末に送信する冗長化技術を採用している場合には、他の冗長化ノードを送信元とし、自ノード宛または他の冗長化ノード(送信元とは異なる冗長化ノード)を宛先とするフレームを受信したときに、その送信元の冗長化ノードと端末との間のリンクに障害が発生したと判定することもできる。この場合も、フレーム解析部410−1およびフレーム解析部410−2は、そのようなフレームを受信したときに、フェアネス制御部460−1およびフェアネス制御部460−2に送る。そして、フェアネス制御部460−1およびフェアネス制御部460−2は、そのフレームの送信元の冗長化ノードと端末との間のリンクに障害が発生したと判定すればよい。
設定用インタフェース部580は、ネットワーク管理者から各冗長化ノードの位置情報が入力されるインタフェースである。設定用インタフェース部580は、入力された位置情報をTDB記憶部530に記憶させる。従って、TDB記憶部530は、TDBの他に、各冗長化ノードの位置情報を記憶する。ここで、各冗長化ノードの位置情報は、例えば、RPRネットワーク内における冗長化ノードの配置順に各冗長化ノードのRPR MACアドレスを列挙した情報である。各冗長化ノードのアドレスは配置順に列挙され、フェアネスフレームは下流側の隣接ノードから送られてくるので、フェアネス制御部560−1〜2は、この位置情報を参照することによって、上流側における冗長化ノードの有無や、上流側における冗長化ノードの配置順を判断することができる。例えば、フェアネスフレームを送信した下流側の隣接ノードのRPR MACアドレスをトポロジデータベースから特定することができる。そして、位置情報を参照して、その下流側の隣接ノードのアドレスと自ノードのアドレスに続いて並ぶ次のアドレス以降が、自ノードの上流側の冗長化ノードのアドレスであると判定できる。そして、上流側の冗長化ノードのアドレスがあれば、上流側に冗長化ノードがあると判定できる。また、下流側の隣接ノードのアドレスと自ノードのアドレスに続いて並ぶ次のアドレスがなければ、自ノードが最上流のアドレスであり、上流側に冗長化ノードがないと判定できる。また、下流側の隣接ノードのアドレスが位置情報に含まれていなければ、自ノードが最下流の冗長化ノードであると判定することができる。また、位置情報に含まれる各RPR MACアドレスの総数は、冗長化ノードの数を表す。
フレーム多重部440−1は、トラフィックレイト計測部470−1から送られたデータフレームと、フェアネス制御部560−2から送られたフェアネスフレームとを多重する。そして、フレーム多重部440−1は、多重したフレームを、出力ポート450−1を介して時計回り方向に隣接するRPRノード(本例ではRPRノード11)に送信する。
同様に、フレーム多重部440−2は、トラフィックレイト計測部470−2から送られたデータフレームと、フェアネス制御部560−1から送られたフェアネスフレームとを多重する。そして、フレーム多重部440−2は、多重したフレームを、出力ポート450−2を介して反時計回り方向に隣接するRPRノード(本例ではRPRノード170)に送信する。
トラフィックレイト計測部470−1は、IEEE802.17において規定されている様々なトラフィックレイトの計測処理を実行した上で、その計測結果や、計測結果に対して行った演算の結果を自ノードのフェアネス制御部560−1に通知する。同様に、トラフィックレイト計測部470−2も様々なトラフィックレイトの計測処理を実行し、その計測結果を自ノードのフェアネス制御部560−2に通知する。
各トラフィックレイト計測部470−1〜2が計測するトラフィックレイトの例としては、自ノードから送信したフェアネス制御の対象となるトラフィックのレイト、上流ノードから送信され、かつ、自ノードを通過するトラフィックのレイト等がある。
また、各トラフィックレイト計測部470−1〜2は、計測したトラフィックレイトに対して低域通過フィルタによる平滑化処理や正規化処理等の演算も合わせて実行する。
フェアネス制御部560−1およびフェアネス制御部560−2は、“IEEE Standards 802.17”において定義されるフェアネスに関する各種処理を実行する。
フェアネス制御部560−1およびフェアネス制御部560−2が実行する処理の例としては、自ノードの出力ポート450−1または出力ポート450−2における輻輳の検出、フェアレイトの演算、フェアネスフレームの生成と送信、隣接ノードより受信したフェアネスフレームの解析、自ノードのRPRスイッチ処理部420への帯域制御情報の通知等がある。
本発明のノード10が備えるフェアネス制御部560−1およびフェアネス制御部560−2は、フェアネスフレーム受信時に、以下の処理を行う。なお、以下の説明では、フェアネス制御部560−1を例にして説明するが、フェアネス制御部560−2の動作も同様である。
フェアネス制御部560−1は、自ノード(ここではRPRノード10)の下流側のRPRノード(ここではRPRノード170とする。)から、フェアネスフレームを受信した場合、自ノードをテイルノードとするか否かを判定する処理と、自ノードが端末から受信したフェアネス制御対象トラフィックであって、輻輳箇所を通過させるフェアネス制御対象トラフィックの通信帯域の上限値を決定する処理とを行う。この2つの処理は、一般的なRPRノード120〜170がフェアネスフレーム受信時に行う処理とは異なる。一般的なRPRノード120〜170は、図8に示す処理を行い、また、フェアネスフレームに格納されたフェアレイトを上記のフェアネス制御対象トラフィックの通信帯域の上限値とする。
図3は、本発明のノードが備えるフェアネス制御部が自ノードをテイルノードとするか否かを判定する処理の例を示すフローチャートである。RPRノード10のフレーム解析部410−2が下流側のRPRノード170からフェアネスフレームを受信して、自ノードのフェアネス制御部560−1にそのフェアネスフレームを送ると、フェアネス制御部560−1は、以下のように動作する。
フェアネス制御部560−1は、自ノードの上流側の隣接ノードが冗長化ノードであるか否かを判定する(ステップS21)。この判定は、TDB記憶部530に記憶されている位置情報を参照して行えばよい。
上流側の隣接ノードが冗長化ノードである場合(ステップS21のYes)、フェアネス制御部560−1は、上流側の何れかの冗長化ノードから、その冗長化ノードが配下の端末から受信して下流側に送信したフェアネス制御対象トラフィックを受信可能であるか否かを判定する(ステップS22)。すなわち、端末からフェアネス制御対象トラフィックを受信可能な上流側の冗長化ノードから制御対象トラフィックを受信可能か否かを判定する。より詳しくは、上流側の何れかの冗長化ノードの中に、端末との間のリンクが正常であり、故障しておらず、自ノードとの間の各リンクおよび各冗長化ノードが全て正常である冗長化ノードが存在するか否かを判定する。このステップS22の判定処理については後述する。
端末からフェアネス制御対象トラフィックを受信可能な上流側の冗長化ノードから制御対象トラフィックを受信可能であると判定した場合(ステップS22のYes)、ステップS24に移行する。
上流側の隣接ノードが冗長化ノードでない場合(ステップS21のNo)、または、端末からフェアネス制御対象トラフィックを受信可能な上流側の冗長化ノードから制御対象トラフィックを受信できないと判定した場合(ステップS22のNo)、ステップS23に移行する。
ステップS23に移行した場合、フェアネス制御部560−1は、上流の隣接ノードから受信したフェアネス制御対象トラフィックの通信帯域がフェアレイト未満であるか否かを判定する(ステップS23)。このフェアレイトは、下流側から受信したフェアネスフレームに格納されているフェアレイトである。上流の隣接ノードから受信したフェアネス制御対象トラフィックの通信帯域がフェアレイト以上であれば(ステップS23のNo)、ステップS24に移行する。上流の隣接ノードから受信したフェアネス制御対象トラフィックの通信帯域がフェアレイト未満であるならば(ステップS23のYes)、ステップS25に移行する。
ステップS24に移行したならば、フェアネス制御部560−1は、自ノードはテイルノードではないと判断する(ステップS24)。ステップS24では、フェアネス制御部560−1は、下流側から受信したフェアネスフレームを上流側のRPRノードに送信する。
ステップS25に移行したならば、フェアネス制御部560−1は、自ノードはテイルノードであると判断する(ステップS25)。ステップS25では、フェアネス制御部560−1は、フルレイトを格納したフェアネスフレーム(通信帯域の抑制不要を表すフェアネスフレーム)を上流側のRPRノードに送信する。
このように、フェアネス制御部560−1は、ステップS21でYesと判定し、かつ、ステップS22でYesと判定した場合、上流の隣接ノードから受信したフェアネス制御対象トラフィックの通信帯域によらずに、下流側から通知されたフェアレイトを上流側の隣接ノードに通知する。
図4は、上流側の何れかの冗長化ノードの中に、端末との間のリンクが正常であり、故障しておらず、自ノードとの間の各リンクおよび各冗長化ノードが全て正常である冗長化ノードが存在するか否かを判定する処理(ステップS22)の処理経過を示すフローチャートである。
図3に示すステップS22に移行した場合、フェアネス制御部560−1は、自ノードより上流側の冗長化ノードを、自ノードに近い順に選択し、選択した冗長化ノード毎に、ステップA3等の判定処理を行う。上流側の何番目の冗長化ノードを選択するかを表す変数をnとする。例えば、n=1であるとすると、上流側の冗長化ノードのうち、自ノードに1番近い冗長化ノードを選択することを意味する。ステップS22に移行した場合、フェアネス制御部560−1は、nを初期値0に設定する(ステップA1)。次に、nを1インクリメントする(ステップA2)。
ステップA2の後、フェアネス制御部560−1は、選択した冗長化ノード(n番目の冗長化ノード)と、その選択した冗長化ノードの下流側に隣接する冗長化ノードとの間のリンク(n番目のリンクとする。)に障害が発生しているか否かを判定する(ステップA3)。フェアネス制御部560−1は、TDB記憶部530に記憶されているTDBを参照して、上流側のn番目のリンクに障害が発生しているか否かを判断すればよい。
上流側のn番目のリンクに障害が発生していないならば(ステップA3のNo)、フェアネス制御部560−1は、選択した冗長化ノード(n番目の冗長化ノード)が故障しているか否かを判定する(ステップA4)。n番目の冗長化ノードのアドレスは、位置情報において、自ノードのアドレスから上流側に並んだn番目のアドレスであると特定できる。フェアネス制御部560−1は、そのn番目の冗長化ノードのアドレスが、トポロジデータベースに登録されていれば、その冗長化ノードは正常であると判定する(ステップA4のNo)。選択しているn番目の冗長化ノードのアドレスが、トポロジデータベースに登録されていなければ、その冗長化ノードは故障していると判定する(ステップA4のYes)。
上流側のn番目のリンクに障害が発生している場合(ステップA3のYes)、または、上流側のn番目の冗長化ノードが故障している場合(ステップS4のYes)、フェアネス制御部560−1は、ステップS22の判定結果をNoとする(ステップA8)。
選択しているn番目の冗長化ノードが正常である場合、そのn番目の冗長化ノードとその配下の端末との間のリンクに障害が発生しているか否かを判定する(ステップA5)。例えば、選択している冗長化ノードから、配下の端末との間のリンクに障害が発生していることを示す特殊フレームを受信しているならば、リンクに障害があると判定すればよい。また、選択している冗長化ノードから、配下の端末との間のリンクに障害が発生していないことを示す特殊フレームを受信しているならば、リンクに障害はないと判定すればよい。また、他の方法で、ステップA5の判定を行ってもよい。
選択したn番目の冗長化ノードとその配下の端末との間のリンクに障害が発生していなければ(ステップA5のNo)、フェアネス制御部560−1は、ステップS22の判定結果をYesとする(ステップA7)。
一方、選択したn番目の冗長化ノードとその配下の端末との間のリンクに障害が発生している場合(ステップA5のYes)、そのn番目の冗長化ノードが最上流の冗長化ノードであるか否かを判定する(ステップA6)。この判定は、TDB記憶部530に予め記憶されている位置情報を参照して行えばよい。選択している冗長化ノードよりも上流の冗長化ノードのアドレスがなければ、選択している冗長化ノードが最上流の冗長化ノードであると判定すればよい。その場合、ステップS22の判定結果をNoとする(ステップA8)。
選択している冗長化ノードよりも上流の冗長化ノードのアドレスが位置情報にあれば、選択している冗長化ノードは最上流の冗長化ノードではない(ステップA6のNo)。この場合、ステップA2に移行し、A2以降の処理を繰り返す。すなわち、ステップA2でnを1インクリメントし、次の上流側の冗長化ノードを選択し、ステップA3などの判定を行っていく。
次に、輻輳箇所を通過させるフェアネス制御対象トラフィックの通信帯域の上限値を決定する処理について説明する。図5は、この処理の処理経過を示すフローチャートである。フェアネス制御部560−1は、フェアネスフレームが送られると、端末からフェアネス制御対象トラフィックを受信してRPRネットワーク内に送信することができる冗長化ノードの数を計数する(ステップS31)。フェアネス制御部560−1は、TDB記憶部530に記憶されている位置情報、トポロジデータベース、および、端末との間のリンクに障害が発生している冗長化ノードの情報に基づいて、ステップS31の計数処理を行えばよい。例えば、まず、位置情報に列挙された各冗長化ノードのRPR MACアドレスのうち、トポロジデータベースに含まれているアドレスを計数する。この計数値は、故障していない冗長化ノードのノード数である。換言すれば、端末からトラフィックを受信できれば、そのトラフィックをRPRネットワーク内に送信することができる冗長化ノードの数である。この計数値から、端末との間のリンクに障害が発生している旨を通知した他の冗長化ノードのノード数を減算することによって、端末からフェアネス制御対象トラフィックを受信してRPRネットワーク内に送信することができる冗長化ノードの数を求めることができる。端末との間のリンクに障害が発生している旨を通知した他の冗長化ノードのノード数は、例えば、端末との間のリンクに障害が発生している旨を示す特殊フレームを受信した数である。
続いて、フェアネス制御部560−1は、端末からフェアネス制御対象トラフィックを受信してRPRネットワーク内に送信することができる冗長化ノードの数で、下流側から受信したフェアネスフレームに格納されていたフェアレイトを除算する。そして、その除算結果を、端末から受信したフェアネス制御対象トラフィックであって輻輳箇所を通過させるフェアネス制御対象トラフィックの通信帯域の上限値として決定する(ステップS32)。
なお、ステップS31では、フェアネス制御部560−1は、自ノードよりも上流側に故障している冗長化ノードがあるか否かを判定し、自ノードよりも上流側に故障している冗長化ノードがある場合には、最下流の冗長化ノードからその故障している冗長化ノードの下流側に隣接する冗長化ノードまでの中から、端末からフェアネス制御対象トラフィックを受信してRPRネットワーク内に送信することができる冗長化ノードを計数してもよい。例えば、フェアネス制御部560−1は、位置情報により、自ノードより上流側の冗長化ノードのアドレスを特定し、そのアドレスの中でトポロジデータベースに含まれていないアドレスがあれば、自ノードよりも上流側に故障している冗長化ノードがあると判定すればよい。そして、フェアネス制御部560−1は、最下流の冗長化ノードから故障している冗長化ノードの下流側に隣接する冗長化ノードまでの各アドレスの数を、位置情報を参照して計数する。そして、その計数値から、最下流の冗長化ノードから故障している冗長化ノードの下流側に隣接する冗長化ノードまでの各冗長化ノードのうち、端末との間のリンクに障害が発生している旨を通知した他の冗長化ノードの数を減算すればよい。ステップS32では、フェアレイトをこのノード数で除算して、通信帯域の上限値として決定すればよい。ただし、自ノードよりも上流側に故障している冗長化ノードがあったとしても、このようなノード数の計数方法ではなく、既に説明したステップS31で述べた計数方法でノード数を計数してもよい。
以上の説明では、フェアネス制御部560−1を例に説明したが、フェアネス制御部560−2の動作も同様である。
RPRスイッチ処理部420は、端末から受信したフェアネス制御対象トラフィックであって、輻輳箇所を通過させるフェアネス制御対象トラフィックを送信する場合、そのトラフィックの通信帯域を、フェアネス制御部560−1およびフェアネス制御部560−2が決定した上限値以下に制御する。
なお、RPRスイッチ処理部420は、自ノードから送信するトラフィックが輻輳箇所を通過するか否かを、例えば、以下のように判定すればよい。フェアネスフレームの送信元アドレスには、輻輳箇所のすぐ上流にあるRPRノードのRPR MACアドレスが格納されている。RPRスイッチ処理部420は、このアドレスと、TDBとを参照して、何ホップ先で輻輳が発生しているかを判断する。あるいは、フェアネスフレームに格納されているTTLとその初期値の差分により、輻輳箇所までのホップ数を計算して輻輳箇所を判断してもよい。そして、トラフィックを構成するデータフレームの宛先アドレスとTDBとを参照して、そのトラフィックが輻輳箇所を通過するか否かを判定すればよい。また、トラフィックを構成するデータフレームのTTL(現在値)と輻輳箇所までのホップ数とを比較して、トラフィックが輻輳箇所を通過するか否かを判定してもよい。
また、フルレイトを格納したフェアネスフレームを受信した場合、フェアネス制御部560−1〜2は、通信帯域の上限値を決定せず、RPRスイッチ処理部420は、フェアネス制御対象トラフィックに対する帯域抑制を行わない。
以下、図1に例示するRPRネットワーク15中のRPRノード150からRPRノード140に向かうリンクにおいて輻輳が発生した場合を例にして、動作を説明する。
RPRノード150のフェアネス制御部460−2(図10参照)は、自ノードの出力ポート450−2においてトラフィックが使用する通信帯域が、予め定められた通信帯域を超過した場合に、自ノードの反時計回り方向の隣接ノード140との間のリンクで輻輳が生じたと判定する。
また、RPRノード150のRPRスイッチ処理部420は、出力ポート450−2から送信する予定のトラフィックのうち、フェアネス制御対象トラフィックを保持するバッファの使用量が閾値を超えたときに、その旨をフェアネス制御部460−2に通知する。RPRノード150のフェアネス制御部460−2は、RPRスイッチ処理部420からこの通知を受けた場合にも、自ノードの反時計回り方向の隣接ノード140との間のリンクで輻輳が生じたと判定する。
輻輳が生じたと判定したRPRノード150のフェアネス制御部460−2は、自ノード(RPRノード150)の上流に配置されるRPRノードにフェアレイトを広告することによって、RPRノード150からRPRノード140に向かうリンクを通過するフェアネス制御対象トラフィックのレイトを抑制させる。
“IEEE Standards 802.17”では、最初に広告するフェアレイトの値(フェアレイトの初期値)は、輻輳を検出する直前にRPRノード150からRPRネットワーク内に送信されたフェアネス制御対象トラフィックのレイトであると規定されている。RPRノード150のトラフィックレイト計測部470−2は、自ノードが送信元となるフェアネス制御対象トラフィックのレイトおよび、上流側のRPRノードから送信され自ノードを通過するフェアネス制御対象のレイトをそれぞれ計測している。フェアネス制御部460−2は、輻輳直前におけるそれらのレイトの和をフェアレイトとして、フェアレイトを格納したフェアネスフレームを上流側に送信する。
なお、最初にフェアレイトを広告した後も、RPRノード150のトラフィックレイト計測部470−2は、所定の時間間隔で“IEEE Standards 802.17”の規定に従ってフェアレイトを計算し、上流側に送信する。
RPRノード150の上流側の隣接ノードであるRPRノード160は、RPRノード150からフェアネスフレームを受信すると、自ノードの配下の端末260から受信したフェアネス制御対象トラフィックのうち、輻輳箇所を通過するトラフィックが使用する通信帯域を、フェアネスフレームに格納されたフェアレイト以下になるように制御する。
また、RPRノード160は、自ノードの上流の隣接ノードであるRPRノード170から受信したフェアネス制御対象トラフィックの通信帯域がフェアレイト以上である場合に、RPRノード150から通知されたフェアレイトを格納したフェアネスフレームをRPRノード170に送信する。一方、RPRノード170から受信したフェアネス制御対象トラフィックの通信帯域がフェアレイト未満である場合には、RPRノード160は、自ノードがテイルノードであると判定する。そして、フェアネス制御対象トラフィックの通信帯域を抑制する必要がない旨をフェアネスフレームによってRPRノード170に通知する。すなわち、フルレイトを格納したフェアネスフレームをRPRノード170に送信する。
上流側の他の一般的なRPRノード170の動作は、上記のRPRノード160の動作と同様である。
次に、本発明のRPRノード10,11が、下流のRPRノードからフルレイトではないフェアレイトが格納されたフェアネスフレームを受信した場合の動作を説明する。ここでは、何れの冗長化ノード10,11も故障しておらず、何れのリンクにも障害は発生していないものとする。
本発明のRPRノード10のフレーム解析部410−2は、RPRノード170からフェアネスフレームを受信すると、フェアネス制御部560−1に送る。フェアネス制御部560−1は、通信帯域の上限値決定処理(図5参照。)を行う。まず、フェアネス制御部560−1は、端末からフェアネス制御対象トラフィックを受信してRPRネットワーク内に送信することができる冗長化ノードの数を計数する(ステップS31)。既に説明したように、TDB記憶部530に記憶されている位置情報、トポロジデータベース、および、端末との間のリンクに障害が発生している冗長化ノードの情報に基づいて、この計数処理を行えばよい。本例では、冗長化ノード10,11は正常であり、端末200と冗長化ノード10,11との間の各リンクも正常であるので、フェアネス制御部560−1は、ノード数を2と計数する。そして、フェアネス制御部560−1は、フェアネスフレームに格納されたフェアレイトを上記のノード数2で除算した値を、自ノードが端末から受信したフェアネス制御対象トラフィックであって輻輳箇所を通過させるフェアネス制御対象トラフィックの通信帯域の上限値として決定する。すなわち、フェアレイトの1/2を通信帯域の上限値とする。そして、RPRノード10のRPRスイッチ処理部420は、端末200から受信して輻輳箇所を通過させるフェアネス制御対象トラフィックの通信帯域を、フェアレイトの1/2以下に抑制する。
また、RPRノード10のフェアネス制御部560−1は、自ノードをテイルノードとするか否かを判定する処理(図3参照)を行う。本例では、フェアネス制御部560−1は、上流の隣接ノードが冗長化ノードであると判定し(ステップS21のYes)、ステップS22に移行する。冗長化ノード11は故障しておらず、冗長化ノード10,11間のリンク、および冗長化ノード11と端末200との間のリンクに障害は発生していない。よって、フェアネス制御部560−1は、ステップS22の処理(図4参照。)において、ステップA1,A2,A3,A4,A5,A7の順に処理を行う。そして、ステップS22の処理を終了し、上流側の何れかの冗長化ノードの中に、端末との間のリンクが正常であり、故障しておらず、自ノードとの間の各リンクおよび各冗長化ノードが全て正常である冗長化ノードが存在すると判定する(ステップS22のYes)。ステップS22の処理の後、フェアネス制御部560−1は、自ノードがテイルノードではないと判定し(ステップS24)、下流側から受信したフェアネスフレームを上流側のRPRノード11に送信する。
RPRノード11がRPRノード10からフェアネスフレームを受信した場合、RPRノード11のフェアネス制御部560−1は、上述のRPRノード10のフェアネス制御部560−1と同様に通信帯域の上限値を決定する。すなわち、自ノードが端末から受信したフェアネス制御対象トラフィックであって輻輳箇所を通過させるフェアネス制御対象トラフィックの通信帯域の上限値を、フェアレイトの1/2に決定する。そして、RPRノード11のRPRスイッチ処理部420は、端末200から受信して輻輳箇所を通過させるフェアネス制御対象トラフィックの通信帯域を、フェアレイトの1/2以下に抑制する。
また、RPRノード11のフェアネス制御部560−1は、自ノードをテイルノードとするか否かを判定する処理(図3参照)を行う。この場合、フェアネス制御部560−1は、上流の隣接ノードが冗長化ノードでないと判定し、ステップS23に移行する。そして、自ノードの上流の隣接ノードから受信したフェアネス制御対象トラフィックのレイトがフェアレイト以上であれば(ステップS23のNo)、自ノードがテイルノードでないと判定し(ステップS24)、RPRノード10から通知されたフェアレイトを格納したフェアネスフレームを上流のRPRノード120に送信する。自ノードの上流の隣接ノードから受信したフェアネス制御対象トラフィックのレイトがフェアレイト未満であれば(ステップS23のYes)、自ノードがテイルノードであると判定し(ステップS25)、フルレイトを格納したフェアネスフレームを上流のRPRノード120に送信する。
上記の動作によって、冗長化されたRPRノード10,11の下流側のRPRノード10が輻輳領域に属した場合、上流側のRPRノード11も常に輻輳領域に含まれる。そして、冗長化された各RPRノード10,11がフェアネス制御対象トラフィックの送信に利用可能な通信帯域の合計はフェアレイトに等しい。従って、輻輳領域に含まれる一般的なRPRノード150〜170の配下の端末250〜270がフェアネス制御対象トラフィックの送信に利用可能な通信帯域と、冗長化ノード10,11の配下の端末200がフェアネス制御対象トラフィックの送信に利用可能な通信帯域とが同一となる。その結果、それらの端末間でRPRネットワークの通信帯域を公平に共有することができる。
次に、冗長化されたRPRノード10,11のいずれか一方が故障した場合の動作について説明する。ここでは、RPRノード11が故障した場合のRPRノード10の動作について説明するが、RPRノード10が故障した場合のRPRノード11の動作も同様である。
端末200は、RPRノード11の故障を検出した場合、RPRノード11に送信していたトラフィックをRPRノード10に送信する。
この状態において、RPRノード10が、下流のRPRノード170からフルレイトではないフェアレイトが格納されたフェアネスフレームを受信したとする。RPRノード10のフェアネス制御部560−1にそのフェアネスフレームが送られると、フェアネス制御部560−1は、自ノードをテイルノードとするか否かを判定する処理(図3参照)を行う。本例では、フェアネス制御部560−1は、上流の隣接ノードが冗長化ノードであると判定し(ステップS21のYes)、ステップS22に移行する。本例では、上流側の1番目の冗長化ノード11が故障している。従って、フェアネス制御部560−1は、ステップS22の処理(図4参照。)において、ステップA1,A2,A3,A4,A8の順に移行してステップS22の処理を終え、ステップS23(図3参照。)に移行する。また、上流側に隣接している冗長化ノード11は故障しているので、冗長化ノード11からトラフィックを受信することはない。従って、上流からのフェアネス制御対象トラフィックの通信帯域は必ずフェアレイト未満となり、自ノードがテイルノードであると判定する。
また、フェアネス制御部560−1は、通信帯域の上限値決定処理(図5参照。)を行う。フェアネス制御部560−1は、端末からフェアネス制御対象トラフィックを受信してRPRネットワーク内に送信することができる冗長化ノードの数を計数する(ステップS31)。本例では、RPRノード11は故障しているので、端末からフェアネス制御対象トラフィックを受信してRPRネットワーク内に送信することができる冗長化ノードの数として1を計数する。フェアネス制御部560−1は、フェアネスフレームに格納されたフェアレイトを、上記のノード数1で除算した値(すなわち、フェアレイト)を、自ノードが端末から受信したフェアネス制御対象トラフィックであって輻輳箇所を通過させるフェアネス制御対象トラフィックの通信帯域の上限値として決定する。RPRノード10のRPRスイッチ処理部420は、端末200から受信して輻輳箇所を通過させるフェアネス制御対象トラフィックの通信帯域を、フェアレイト以下に抑制する。
なお、冗長化ノード10,11間のリンクに障害が生じている場合の動作は、ステップS22の処理において、ステップA1,A2,A3,A8の順に移行して処理を終える点以外は、ノード11が故障した場合の動作と同様である。
次に、冗長化されたRPRノード10,11のいずれか一方と端末200との間のリンクに障害が発生した場合の動作について説明する。ここでは、RPRノード11と端末200との間のリンクに障害が発生した場合のRPRノード10,11の動作について説明するが、RPRノード10と端末200との間のリンクに障害が発生した場合の動作も同様である。
端末200は、RPRノード11と端末200との間のリンクの障害を検出すると、RPRノード11に送信していたトラフィックをRPRノード10に送信する。
この状態において、RPRノード10が、下流のRPRノード170からフルレイトではないフェアレイトが格納されたフェアネスフレームを受信したとする。RPRノード10のフェアネス制御部560−1にそのフェアネスフレームが送られると、フェアネス制御部560−1は、自ノードをテイルノードとするか否かを判定する処理(図3参照)を行う。本例では、フェアネス制御部560−1は、上流の隣接ノードが冗長化ノードであると判定し(ステップS21のYes)、ステップS22に移行する。本例では、上流側の1番目の冗長化ノード11と端末200との間のリンクに障害が発生している。従って、フェアネス制御部560−1は、ステップS22の処理(図4参照。)において、ステップA1,A2,A3,A4,A5,A6,A8の順に移行してステップS22の処理を終え、ステップS23(図3参照。)に移行する。なお、本例では、RPRノード10の上流側の冗長化ノードがRPRノード11のみである場合を例示しているが、上流側にさらに冗長化ノードが存在する場合には、ステップA6からステップA2に移行し、ステップA2以降の処理を繰り返す。
フェアネス制御部560−1は、RPRノード11から受信するフェアネス制御対象トラフィックのレイトとフェアレイトとを比較する(ステップS23)。そして、RPRノード11から受信するフェアネス制御対象トラフィックのレイトがフェアレイト以上であれば、自ノードはテイルノードではなく(ステップS24)、フェアレイトを格納したフェアネスフレームを上流のRPRノード11に送信する。一方、そのレイトがフェアレイト未満である場合には、自ノードはテイルノードであり(ステップS25)、フルレイトを格納したフェアネスフレームを上流のRPRノード11に送信する。
また、フェアネス制御部560−1は、通信帯域の上限値決定処理(図5参照。)を行う。フェアネス制御部560−1は、RPRノード11が故障した場合と同様に、ステップS31,S32の処理を行い、フェアレイトを、端末200から受信して輻輳箇所を通過させるフェアネス制御対象トラフィックの通信帯域の上限値に決定する。
以上の動作により、RPRノード11が故障した場合やRPRノード11と端末200間のリンクに障害が発生した場合であっても、輻輳領域に含まれる各端末250〜270および端末200がフェアネス制御対象トラフィックの送信に利用可能な通信帯域とを同一にすることができる。
なお、上記の例では、各冗長化ノード10,11が、ステップS31,S32に示す処理を行って通信帯域の上限を求める場合を示した。端末200から受信して輻輳箇所を通過させるフェアネス制御対象トラフィックの通信帯域の上限値を決定する処理は、ステップS31,S32に限定されない。
例えば、予め、他の冗長化ノードが故障しているか否か、他の冗長化ノードと端末との間のリンクに障害が生じているか否か、冗長化ノード間の各リンクに障害が生じているか否かに応じて、自ノードで決定する通信帯域の上限値を定めておいてもよい。図1に示す例では、ノード10のフェアネス制御部560−1〜2は、冗長化ノード11が故障しておらず、冗長化ノード11と端末200とのリンクに障害が発生しておらず、冗長化ノード10,11間のリンクに障害が発生していない場合には、通信帯域の上限値をフェアレイトの1/2にし、冗長化ノード11が故障いるか、冗長化ノード11と端末200とのリンクに障害が発生しているか、あるいは、冗長化ノード10,11間のリンクに障害が発生している場合には、通信帯域の上限値をフェアレイトにすると予め定めておいてもよい。そして、他の冗長化ノードおよびそのリンクの状態に応じて、通信帯域の上限値を決定してもよい。RPRノード11も同様である。このとき、各冗長化ノードが決定する通信帯域の上限値は、その総和がフェアレイトと等しくなるように定められていればよい。例えば、RPRノード10が決定する通信帯域の上限値とRPRノード11が決定する通信帯域の上限値は、それぞれフェアレイトの1/2にならなくても、その総和がフェアレイトになるように定められていればよい。
上記の各実施の形態では、ノードが接続されている通信ネットワークがRPRネットワークである場合を例にして説明した。本発明の通信システムは、フェアレイトを他のノードに対して通知するノードを含む通信システムであれば、RPRネットワーク以外の通信システムであってもよい。例えば、LSP(Label Switched Path,ラベルスイッチパス)を通信経路とするMPLS(Multi Protocol Label Swithcing,マルチプロトコルラベルスイッチング)ネットワークであってもよい。また、本発明のノードは、LSPを通信経路とするMPLSに用いられる冗長化ノードであってもよい。
上記の実施の形態では、ノードがフレーム解析部410−1〜2、RPRスイッチ処理部420、フレーム多重部440−1〜2、フェアネス制御部560−1〜2、トラフィックレイト計測部470−1〜2、設定用インタフェース580等の各処理部を備える構成として説明したが、ノードがコンピュータと記憶装置を予め備えた上で、そのコンピュータが記憶装置に記憶されたノード用プログラムに従って動作することにより、各処理部と同様の動作を実現する構成であってもよい。また、記憶装置をTDB記憶部530として用いればよい。
また、本発明の通信システムに含まれる冗長化ノードは、図6に示す構成要素を備えていればよい。本発明の通信システムに含まれる複数の冗長化ノード700は、隣接するように配置される。図6では、そのうちの1つを示している。そして、各冗長化ノード700は、上流側の隣接ノードが冗長化ノードであるか否かを判定する冗長化ノード判定手段(例えば、ステップ21の処理を行うフェアネス制御部560−1〜2)と、端末から通信帯域が制御される制御対象トラフィックを受信可能な上流側の冗長化ノードから制御対象トラフィックを受信可能か否かを判定する受信可否判定手段(例えば、ステップ22の処理を行うフェアネス制御部560−1〜2)と、上流側の隣接ノードが冗長化ノードであると判定され、端末から制御対象トラフィックを受信可能な上流側の冗長化ノードから制御対象トラフィックを受信可能と判定されたときに、下流側の隣接ノードから通知されたフェアレイトを上流側の隣接ノードに対して通知するフェアレイト通知手段(例えば、ステップ24の処理を行うフェアネス制御部560−1〜2)とを備える。
また、各冗長化ノード700は、端末から制御対象トラフィックを受信してその制御対象トラフィックを通信システム内に送信することができる冗長化ノードに設定されている所定の制御対象トラフィックの通信帯域の上限値の総和が、下流側の隣接ノードから通知されたフェアレイトと等しくなるように、自ノードから送信する所定の制御対象トラフィックの通信帯域の上限値を決定する通信帯域決定手段(例えば、フェアネス制御部560−1〜2)を備える。
このような冗長化ノードを備えていることにより、冗長化ノードに接続された端末と、その他のノードに接続された端末との間で、利用できる通信帯域を公平にすることができる。
また、以上の説明では、通信帯域決定手段が、端末から制御対象トラフィックを受信して制御対象トラフィックを通信システム内に送信することができる冗長化ノードのノード数で、下流側の隣接ノードから通知されたフェアレイトを除算し、その除算結果を、自ノードから送信する所定の制御対象トラフィックの通信帯域の上限値として決定することが開示されている。
また、以上の説明では、通信帯域決定手段が、端末から制御対象トラフィックを受信して制御対象トラフィックを通信システム内に送信することができる冗長化ノードのノード数を計数する計数手段(例えば、ステップ31の処理を行うフェアネス制御部560−1〜2)と、計数手段によって計数されたノード数で下流側の隣接ノードから通知されたフェアレイトを除算し、その除算結果を、自ノードから送信する所定の制御対象トラフィックの通信帯域の上限値として決定する除算手段(例えば、ステップ32の処理を行うフェアネス制御部560−1〜2)とを有することが開示されている。
また、以上の説明では、各冗長化ノードのアドレスを配置順に列挙した位置情報を予め記憶する位置情報記憶手段(例えば、TDB記憶部530)と、故障していないノードのアドレスとノード間のリンクの障害発生箇所の情報とを含むトポロジデータベースを記憶するトポロジデータベース記憶手段(例えば、TDB記憶部530)と、自ノードと端末との間のリンクに障害が発生したことを示す端末間リンク障害情報を他の各冗長化ノードに通知する障害情報通知手段(例えば、RPRスイッチ処理部420)とを備え、計数手段が、位置情報に列挙されているアドレスのうち、トポロジデータベースに含まれているアドレスを計数し、そのアドレスの計数結果から端末間リンク障害情報を通知した他の冗長化ノードの数を減算することによって、端末から制御対象トラフィックを受信して制御対象トラフィックを通信システム内に送信することができる冗長化ノードのノード数を計数することが開示されている。
また、以上の説明では、計数手段が、自ノードよりも上流側に故障している冗長化ノードが存在している場合、最下流の冗長化ノードから故障している冗長化ノードの下流側に隣接する冗長化ノードまでの中から、端末から制御対象トラフィックを受信して制御対象トラフィックを通信システム内に送信することができる冗長化ノードのノード数を計数することが開示されている。
また、以上の説明では、各冗長化ノードのアドレスを配置順に列挙した位置情報を予め記憶する位置情報記憶手段(例えば、TDB記憶部530)と、故障していないノードのアドレスとノード間のリンクの障害発生箇所の情報とを含むトポロジデータベースを記憶するトポロジデータベース記憶手段(例えば、TDB記憶部530)と、自ノードと端末との間のリンクに障害が発生したことを示す端末間リンク障害情報を他の各冗長化ノードに通知する障害情報通知手段(例えば、RPRスイッチ処理部420)とを備え、受信可否判定手段が、自ノードの上流側の冗長化ノードを自ノードに近い順に1つずつ選択し、選択した冗長化ノードと、選択した冗長化ノードの下流側に隣接する冗長化ノードとの間のリンクに障害が発生しているか否かを、トポロジデータベースに基づいて判定し、選択した冗長化ノードが故障しているか否かを、トポロジデータベースに基づいて判定し、選択した冗長化ノードと端末との間のリンクに障害が発生しているか否かを、選択した冗長化ノードから端末間リンク障害情報を受信しているか否かに基づいて判定し、自ノードの上流側の冗長化ノードを自ノードに近い順に1つずつ選択するときに、選択した冗長化ノードとその選択した冗長化ノードの下流側に隣接する冗長化ノードとの間のリンクに障害が発生していないと判定し、選択した冗長化ノードが故障していないと判定し、選択した冗長化ノードと端末との間のリンクに障害が発生していると判定したことを条件に次の冗長化ノードを選択し、いずれかの冗長化ノードを選択したときに、選択した冗長化ノードとその選択した冗長化ノードの下流側に隣接する冗長化ノードとの間のリンクに障害が発生していないと判定し、選択した冗長化ノードが故障していないと判定し、選択した冗長化ノードと端末との間のリンクに障害が発生していないと判定した場合に、端末から通信帯域が制御される制御対象トラフィックを受信可能な上流側の冗長化ノードから制御対象トラフィックを受信可能であると判定し、いずれかの冗長化ノードを選択したときに、選択した冗長化ノードの下流側に隣接する冗長化ノードとのリンクに障害が発生していると判定した場合、または、選択した冗長化ノードが故障していると判定した場合、または、順に選択した各冗長化ノードと端末との間のリンクにそれぞれ障害が発生していると判定した場合に、端末から通信帯域が制御される制御対象トラフィックを受信可能な上流側の冗長化ノードから制御対象トラフィックを受信できないと判定することが開示されている。
また、通信システムが、リングレットを通信経路とするRPRネットワークである場合が開示されている。さらに、通信システムが、LSPを通信経路とするMPLSネットワークであってもよいことが開示されている。