(57)【要約】  等コストの最短（最小コスト）経路間の一貫したタイブレイク決定は、複数のエンド・ツー・エンド経路毎に順序付きのノード識別子の組を比較することによって実現される。あるいは、同じ結果は、ツリーの分岐するブランチのノード識別子を使用して等コスト経路の選択を行うことにより、最短経路ツリーが構成されるので、オンザフライで実現することが可能である。何れの変形も、最短経路が算出されるのがネットワーク内のどこかにかかわらず、等コスト経路について一貫した選択が行われることを可能にする。これにより、何れかの２つのノード間のトラフィック・フローが、順方向及び逆方向の何れにおいても、ネットワークを通じて常に同じ経路をたどることになるであろう。
2015520997.tif 000002
【特許請求の範囲】
【請求項１】
パケット転送ネットワークのノードにおいてパケットを転送するうえで使用するための転送情報を決定する方法であって、前記ネットワークのノードはそれぞれ、一意のノード識別子を有し、前記方法は、
前記ネットワークの第１のノードと前記ネットワークの第２のノードとの間の最低コスト経路を決定する工程と、
複数の最低コスト経路が実質的に等しいコストを有する旨を決定する工程と、
前記実質的に等しいコストを有する複数の最低コスト経路から最低コスト経路を選択する工程であって、前記選択される最低コストが、
最低コスト経路毎に、個別の経路識別子を導き出すために第１の順序付け基準に応じて前記最低コスト経路によって経由されるノードに割り当てられたそれぞれのノード識別子をソートする工程と、
第２の順序付け基準に応じて経路識別子を順序付ける工程と、
前記順序付けられた経路識別子の一方端においてその経路識別子を有する最低コスト経路を選択する工程と
によって選択される経路である工程と、
前記第１の順序付け基準及び前記第２の順序付け基準は、
（１）前記第１の順序付け基準は、昇順の順序付けであり、前記第２の順序付け基準は、第１の経路の前記経路識別子が、第２の経路の前記経路識別子のプレフィクスである場合、前記第１の経路の前に前記第２の経路を順序付ける修正された辞書式順序付けであること、及び
（２）前記第１の順序付け基準は、降順の順序付けであり、前記第２の順序付け基準は、第１の経路の前記経路識別子が、第２の経路の前記経路識別子のプレフィクスである場合、前記第２の経路の前に前記第１の経路を順序付ける辞書式順序付けであること
のうちから選択される条件を満たす方法。
【請求項２】
請求項１記載の方法であって、最低コスト経路を選択する工程は、
最低コスト経路毎に、個別の経路識別子を導き出すために昇順の順序付け基準に応じて前記最低コスト経路によって経由されるノードに割り当てられたそれぞれのノード識別子をソートする工程と、
第１の経路の前記経路識別子が第２の経路の前記経路識別子のプレフィックスである場合に、前記第１の経路の前に前記第２の経路を順序付ける修正された辞書式順序付け基準に応じて前記経路識別子を順序付ける工程と、
前記順序付けられた経路識別子の一方端においてその経路識別子を有する最低コスト経路を選択する工程と
を含む方法。
【請求項３】
請求項２記載の方法であって、最低コスト経路毎に個別の経路識別子を導き出すために昇順の順序付け基準に応じて前記最低コスト経路によって経由されるノードに割り当てられたそれぞれのノード識別子をソートする工程は、昇順の辞書式順序付け基準に応じて前記それぞれのノード識別子をソートする工程を含む方法。
【請求項４】
請求項１記載の方法であって、最低コスト経路を選択する工程は、
最低コスト経路毎に、個別の経路識別子を導き出すために降順の順序付け基準に応じて前記最低コスト経路によって経由されるノードに割り当てられたそれぞれのノード識別子をソートする工程と、
第１の経路の前記経路識別子が第２の経路の前記経路識別子のプレフィックスである場合に、前記第２の経路の前に前記第１の経路を順序付ける辞書式順序付け基準に応じて前記経路識別子を順序付ける工程と、
前記順序付けられた経路識別子の一方端においてその経路識別子を有する最低コスト経路を選択する工程と
を含む方法。
【請求項５】
請求項４記載の方法であって、最低コスト経路毎に個別の経路識別子を導き出すために降順の順序付け基準に応じて前記最低コスト経路によって経由されるノードに割り当てられたそれぞれのノード識別子をソートする工程は、降順の辞書式順序付け基準に応じて前記それぞれのノード識別子をソートする工程を含む方法。
【請求項６】
請求項１記載の方法であって、
前記最低コスト経路のうちの少なくとも１つが最大数のノードを経由し、前記最低コスト経路のうちの少なくとも他の１つが最大数のノードよりも少ないノードを経由し、
前記複数の最低コスト経路から最低コスト経路を選択する工程は、
最低コスト経路毎に、個別の経路識別子を導き出すために第１の順序付け基準に応じて前記最低コスト経路によって経由されるノードに割り当てられたそれぞれのノード識別子をソートする工程と、
前記最大数のノードよりも少ないノードを経由する最低コスト経路毎に、更なる少なくとも１つの識別子を対応する経路識別子に加え、前記加えることは、前記第１の順序付け基準と一貫しており、
第２の順序付け基準に応じて前記経路識別子を順序付ける工程と、
前記順序付けられた経路識別子の一方端において経路識別子を有する最低コスト経路を選択する工程と
を含む方法。
【請求項７】
請求項６記載の方法であって、更なる少なくとも１つの識別子を加える工程は、
前記第１の順序付け基準が昇順の順序付けである場合、更なる少なくとも１つの識別子を加える工程であって、更なる識別子はそれぞれ、ノード識別子の全てよりも高いと認められ、
前記第１の順序付け基準が降順の順序付けである場合、更なる少なくとも１つの識別子を加える工程であって、更なる識別子はそれぞれ、ノード識別子の全てよりも低いと認められる方法。
【請求項８】
請求項７記載の方法であって、少なくとも１つの更なる識別子を加える工程は、各経路識別子が、最大ノード数よりも少ないノードを経由する最低コスト経路毎に経路識別子それぞれに更なる識別子を、最大ノ―ド数に等しい数の識別子を有する状態になるまで加える工程を含む方法。
【請求項９】
請求項７記載の方法であって、
前記第１の順序付け基準は昇順の順序付け基準であり、
少なくとも１つの識別子を加える工程は、何れのノード識別子よりも大きいと認められた値を有する少なくとも１つの更なる識別子を、最大ノード数よりも少ないノードを経由する最低コスト経路毎に前記個別の経路識別子の終端に加える工程を含む方法。
【請求項１０】
請求項９記載の方法であって、前記第１の順序付け基準は、昇順の辞書式順序付け基準である方法。
【請求項１１】
請求項７記載の方法であって、
前記第１の順序付け基準は降順の順序付け基準であり、
少なくとも１つの識別子を加える工程は、何れのノード識別子よりも低いと認められた値を有する少なくとも１つの更なる識別子を、前記最大ノード数よりも少ないノードを経由する最低コスト経路毎に前記個別の経路識別子の終端に加える工程を含む方法。
【請求項１２】
請求項１１記載の方法であって、前記第１の順序付け基準は、降順の辞書式順序付け基準である方法。
【請求項１３】
請求項７記載の方法であって、
前記第１の順序付け基準は昇順の順序付け基準であり、
少なくとも１つの識別子を加える工程は、何れのノード識別子よりも低いと認められた値を有する更なる識別子を、前記最大ノード数よりも少ないノードを経由する最低コスト経路毎に前記個別の経路識別子の先端に、経路識別子全てが共通の数の識別子を有する状態になるまで加える工程を含む方法。
【請求項１４】
請求項１３記載の方法であって、前記第１の順序付け基準は、昇順の辞書式順序付け基準である方法。
【請求項１５】
請求項７記載の方法であって、
前記第１の順序付け基準は降順の順序付け基準であり、
少なくとも１つの識別子を加える工程は、何れのノード識別子よりも大きいと認められた値を有する更なる識別子を、前記最大ノード数よりも少ないノードを経由する最低コスト経路毎に前記個別の経路識別子の先端に、経路識別子全てが共通の数の識別子を有する状態になるまで加える工程を含む方法。
【請求項１６】
請求項１５記載の方法であって、前記第１の順序付け基準は、降順の辞書式順序付け基準である方法。
【請求項１７】
パケット転送ネットワークの転送ノードにおいてパケットを転送するうえで使用するための転送情報を決定する方法であって、前記ネットワークのノードはそれぞれ、一意のノード識別子を有し、前記方法は、
前記ネットワークの第１のノード及び第２のノード間の最低コスト経路を決定する工程と、
複数の最低コスト経路が実質的に等しいコストを有すると決定する工程であって、前記最低コスト経路の少なくとも１つは最大数のノードを経由し、前記最低コスト経路の少なくとも別の１つは前記最大数のノードよりも少ないノードを経由する工程と、
最低コスト経路毎に、個別の経路識別子を導き出すために第１の順序付け基準に応じて前記最低コスト経路によって経由されるノードに割り当てられたそれぞれのノード識別子をソートする工程と、
前記最大数のノードよりも少ないノードを経由する最低コスト経路毎に、更なる少なくとも１つの識別子を対応する経路識別子に加える工程であって、該加える工程は、前記第１の順序付け基準と一貫している工程と、
第２の順序付け基準に応じて経路識別子を順序付ける工程と、
前記順序付けられた経路識別子の一方端において経路識別子を有する最低コスト経路を選択する工程とを含む方法。
【請求項１８】
請求項１７記載の方法であって、更なる少なくとも１つの識別子を加える工程は、
前記第１の順序付け基準が昇順の順序付けである場合、更なる少なくとも１つの識別子を加える工程であって、更なる識別子はそれぞれ、ノード識別子の全てよりも高いと認められる工程と、
前記第１の順序付け基準が降順の順序付けである場合、更なる少なくとも１つの識別子を加える工程であって、更なる識別子はそれぞれ、ノード識別子の全てよりも低いと認められる工程と
を含む方法。                                   
【請求項１９】
請求項１８記載の方法であって、少なくとも１つの更なる識別子を加える工程は、各経路識別子が、前記最大ノード数より少ないノードを経由する最低コスト経路毎に経路識別子それぞれに更なる識別子を、最大ノ―ド数以上の数の識別子を有する状態になるまで加える工程を含む方法。
【請求項２０】
請求項１８記載の方法であって、少なくとも１つの更なる識別子を加える工程は、前記最大ノード数より少ないノードを経由する最低コスト経路毎に経路識別子それぞれに更なる識別子を、経路識別子それぞれが共通の数の識別子を有する状態になるまで加える工程を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、イーサネット（登録商標）ネットワークなどのパケット転送通信ネットワークにおける、等コスト最短経路などの複数の可能性のうちから経路を一貫して選択することに関する。
【背景技術】
【０００２】
パケット転送通信ネットワークでは、ノードは、ネットワークのトポロジについて学習することが可能であり、その他のネットワーク・ノードそれぞれにトラフィックをどのようにしてルーティングするかについて、トポロジについて獲得する知識に基づいて決定することが可能である。経路を選択する主な基礎は経路コストであり、これは、ノード間のホップの数、及びノードを接続するリンクの帯域幅などの特定の他のメトリックの一方又は両方で規定することが可能である。開放型最短経路優先（Ｏｐｅｎ  Ｓｈｏｒｔｅｓｔ  Ｐａｔｈ  Ｆｉｒｓｔ、ＯＳＰＦ）及び中間システム間連携（Ｉｎｔｅｒｍｅｄｉａｔｅ  Ｓｙｓｔｅｍ−ｔｏ−Ｉｎｔｅｒｍｅｄｉａｔｅ  Ｓｙｓｔｅｍ、ＩＳ−ＩＳ）は、経路コストの各ノードのアドバータイズメントに基づいて最短経路を確立する広く使用されているリンク状態プロトコルである。前述のプロトコルは通常、複数の等コスト経路間でのタイブレイクを行うことを試行しない。その代わりに、いくつかの等コスト経路にわたり、トラフィックを分散する。分散アルゴリズムは規定されておらず、ルータ間で異なり得る。あるいは、他のルータによって行われた選択との一貫性は考慮されないが、単一の経路の局所の選択を行い得る。よって、何れの場合にも、フローの逆方向は、順方向によって使用される経路を使用することが保証されない。
【０００３】
マルチキャスト開放型最短経路優先（ＭＯＳＰＦ）などのマルチキャスト・ルーティング・プロトコルは、同じ最短経路ツリーを構成するネットワーク内の各ルータに依存する。この理由で、ＭＯＳＰＦは、同一のツリーが生成されることを確実にするために、リンク・タイプ、ＬＡＮ対ポイントツーポイント、及びルータ識別子に基づいたタイブレイク手法を実現する。しかし、タイブレイク決定を最大の識別子を有する親に基づかせることは、一般に、逆方向のフローによって使用される経路が、順方向のフローによって使用される経路と同じでなくなることを示唆する。
【０００４】
スパニング・ツリー・プロトコル（Ｓｐａｎｎｉｎｇ  Ｔｒｅｅ  Ｐｒｏｔｏｃｏｌ（ＳＴＰ）、ラピッド・スパニング・ツリー・プロトコル（ＲＳＴＰ）、マルチプル・スパニング・ツリー・プロトコル（ＭＳＴＰ）は、任意のトポロジにおいてループのないスパニング・ツリーを作成する方法である。スパニング・ツリー・プロトコルは、ネットワーク内の各ノードによって実行される。スパニング・ツリー・プロトコルは全て、（ブリッジ識別子、ポート識別子）に基づいた局所的なタイブレイク決定を使用して、等コスト経路間で選択を行う。スパニング・ツリーでは、最初にルート・ノードが選ばれ、次に全てのノードにより該ルートに関するツリーが構成される。よって、行き及び戻りのトラフィックについて全ての経路は対称であるが（本質的に、単純なツリーはこれを唯一の可能な構成とする）、選択処理は遅く、単純なツリー構造は如何なる冗長な容量も使用することが可能でない。同様に、Ｒａｄｉａ  ＰｅｒｌｍａｎのＲｂｒｉｄｇｅｓの提案は、親ノードの識別子をタイブレイカとして使用する。
【０００５】
Ｍｉｃｋ  Ｓｅａｍａｎは、ＩＥＥＥ８０２．１ワーキング・グループへの最短経路ブリッジの提案（ｈｔｔｐ：／／ｗｗｗ．ｉｅｅｅ８０２．ｏｒｇ／１／ｆｉｌｅｓ／ｐｕｂｌｉｃ／ｄｏｃｓ２００５／ｎｅｗ−ｓｅａｍａｎ−ｓｈｏｒｔｅｓｔ−ｐａｔｈ−０３０５−０２．ｐｄｆ）において、「カット・ベクトル」を追加することにより、一貫したタイブレイク決定を実行する、ラピッド・スパニング・ツリー・プロトコルへの単純なプロトコル拡張について説明している。上記提案は、ノード毎のＶＩＤを使用して、ノード毎のスパニング・ツリーを識別する。ブリッジによって伝送される必要がある情報全てを正規の単一のイーサネット（登録商標）・フレームに適合させるために、前述の手法は現在、イーサネット（登録商標）・ネットワークのサイズを３２個のブリッジに制限している。
【０００６】
図１は、平凡なネットワークの例の場合でも、親ノードの識別子に基づいたタイブレイク手法が対称な経路を生成することができない態様を示す。前述の例では、リンクは等コストを有しているとみなされ、よって、経路コストの決定は単に、ホップの数を考慮する。まず、ＡからＢへの経路を計算することを考えてみる。計算がノード２に達すると、等コスト経路の存在が発見される。第１の経路（Ａ−１−３−６）及び第２の経路（Ａ−１−４−５）が存在している。タイブレイク・アルゴリズムは、最小の識別子を有する親ノードに基づいて経路を選択した場合、第２の経路（Ａ−１−４−５）を選択することになる。ノード識別子５はノード識別子６よりも小さいからである。しかし、次に、ＢからＡへの経路を計算することを考えてみる。計算がノード１に達すると、等コスト経路の存在が発見される。第１の経路（Ｂ−２−６−３）及び第２の経路（Ｂ−２−５−４）が存在している。同じタイブレイク基準を使用すれば、タイブレイク・アルゴリズムは、第１の経路（Ｂ−２−６−３）を選択する。ノード識別子３はノード識別子４よりも小さいからである。よって、ノードＡ及びＢにより行われる最短経路計算が、一貫性のない結果をもたらすことが分かり得る。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ＩＥＥＥ８０２．１ａｑに対して提案されたプロバイダ・リンク状態ブリッジング（ＰＬＳＢ（Ｐｒｏｖｉｄｅｒ  Ｌｉｎｋ  Ｓｔａｔｅ  Ｂｒｉｄｇｉｎｇ））などの一部の新たなプロトコルでは、ユニキャスト・トラフィックと、未知のトラフィック／マルチキャスト・トラフィックとの両方に対してネットワークにわたる転送の一貫性を維持し、順方向及び逆方向のフローの両方で、共通の経路を使用する旨の要件が存在している。したがって、等コスト経路間でタイブレイクを行う場合、ノードが一貫して同一の決定に到達することが可能であることが重要である。更に、ノードが最小量の処理能力でタイブレイクを行うことが可能であることが望ましい。
【課題を解決するための手段】
【０００８】
本発明の第１の局面は、パケット転送ネットワークの第１のノードにおいてパケットを転送するうえで使用するための転送情報を決定する方法を提供する。方法は、上記ネットワークの上記第１のノード及び第２のノード間の最短経路を決定し、複数の最短経路がいつ、実質的に等コストであるかを決定する。方法は、実質的に等しいコストの経路毎に、上記経路内にあるノードの組を規定するノード識別子の組を形成し、第１の順序付け基準を使用してノード識別子の組それぞれを順序付けて、経路識別子を形成する。第１の順序付け基準は、ノード識別子が経路内に現れる順序とは無関係である。方法は、次いで、経路識別子を比較することにより、複数の等コスト経路間で選択する。ネットワークの各ノードは一意のノード識別子を有する。
【０００９】
効果的には、第１の順序付け基準は昇順又は降順の辞書式順序であるが、全体的に順序付けられたノード識別子の組を生成する如何なる順序付け基準も用いることが可能である。
【００１０】
好ましくは、方法は、第２の順序付け基準を使用して、複数の経路識別子を順序付きリストに順序付ける工程を更に含む。同様に、第２の順序付け基準は、昇順の辞書式順序、降順の辞書式順序、又は全体的に順序付けられた経路識別子の組を生成する如何なる順序付け基準であり得る。
【００１１】
本発明の別の局面は、パケット転送ネットワークの第１のノードにおいてパケットを転送するうえで使用するための転送情報を決定する方法を提供する。方法は、最短経路ツリーを反復的に形成することにより、ネットワークの第１のノード及び第２のノード間の最短経路を決定する工程と、最短経路ツリーを形成する一方で、複数の経路がいつ、等コストを有するかを決定する工程とを含み、各等コスト経路は、等コスト経路に共通の分岐ノードから分岐するブランチを有する。方法は、ブランチそれぞれにおいて、第１の選択基準を使用してノード識別子を識別して、ブランチ識別子を形成し、ブランチ識別子を比較することにより、複数のブランチ間で選択する。
【００１２】
効果的には、方法は、辞書式順序などの、各ブランチにおけるノード識別子を比較し、選択するための全体的な順序付け基準を使用する。
【００１３】
効果的には、方法は、分岐ノードへ引き返す一方で、分岐ブランチそれぞれにおける第１の選択基準を満たすノード識別子を記録する。このことは、計算を更に単純にし、記憶要件を低減する効果を有する。
【００１４】
本発明の局面は何れも、異なる第１の順序付け／選択基準及び共通の第２の順序付け／選択基準を使用することにより、又は共通の第１の順序付け／選択基準及び異なる第２の選択順序付け／基準を使用することにより、２つの等コスト経路を選択するために使用することが可能である。３つ又は４つの等コスト経路は、ノードにおいて第１の順序付け／選択基準及び第２の順序付け／選択基準を一貫して適用し、順序付きリスト内の特定の位置において識別子を選択することにより、同様なやり方で選択することが可能である。
【００１５】
本発明は、複数のエンド・ツー・エンド経路毎に、順序付けられたノード識別子の組を比較することにより、等コスト経路間で選択するために、タイブレイカとして使用することが可能である。あるいは、選択の決定が行われる必要がある所の局所で、ツリーの分岐するブランチのノード識別子を使用して等コスト経路の選択を行うことにより、最短経路ツリーが構成されるので、オンザフライで同じ結果を得ることが可能であるということが分かっている。このことは、計算量を削減し、格納される必要のあるデータ量を削減する効果を有する。計算量を更に削減するために、ブランチは対単位で比較することが可能である。このことは、ネットワークのサイズ及び複雑度が増大するにつれ、特に重要となる。本発明の変形は何れも、ネットワーク内のどこで最短経路が算出されるかにかかわらず、等コスト経路の一貫した選択が行われることを可能にするという重要な特性を有する。これにより、何れかの２つのノード間のトラフィック・フローが、順方向及び逆方向の何れにおいても、ネットワークを通じて常に同じ経路をたどることが確実になる。
【００１６】
本発明は、最短経路を決定する何れの特定のやり方にも制限されることを意図するものでない。ダイクストラのアルゴリズム、フロイドのアルゴリズム、又は何れかの他の適切な代替策を使用することが可能である。
【００１７】
本発明は、厳密に同じ値を有する等コスト経路間、又はリンク・メトリック及びホップ数の何れの観点からも互いに所望のオフセットの範囲内にある経路間のタイブレイカとして使用することが可能である。このことは、現実世界では、適格な経路の組間での多様性を増大させるうえで望ましいことがあり得る。例えば、一般に、何れの２つの端点の間でも厳密な等コストを実現するために要求される対称的な態様でノード及びリンクを展開することの費用対効果が常に高い訳でないことがあり得る。異なる経路上のホップ数が互いに１ホップの範囲内にあることを要求する旨の制約を緩和することにより、適度な非対称性がなお適格な経路をもたらし得、ループ経路を達成するためには２ホップの差が、必要な最低限であるので、ループのないトポロジがなお保証される。
【００１８】
「最短経路」の語は、距離のみに基づいた経路の決定に限定されず、リンクの「コスト」を特定するために使用することが可能な何れかのメトリック、又はメトリックの組み合わせを包含することを意図している。メトリックの非網羅的なリストは、距離、ホップ数、容量、速度、使用量、可用性である。
【００１９】
方法は、障害が生じたノード又はリンクなどの選択された経路上にないネットワークの部分の除去により、等コスト最短経路の選択が、影響を受けないという点で安定している。
【００２０】
効果的には、ネットワークはイーサネット（登録商標）ネットワークであるが、本発明は特に対称トラフィック・ルーティング経路に対する要件を有するものなどの他のタイプのパケット転送ネットワークにも適用することが可能である。
【００２１】
本明細書及び特許請求の範囲に記載の機能は、ソフトウェア、ハードウェア、又はそれらの組み合わせで実現することが可能である。本発明は、適切にプログラムされたコンピュータ、又は何れかの形態の処理装置によって実現することが可能である。よって、本発明の別の局面は、上記方法の何れかを実現するためのソフトウェアを提供する。ソフトウェアは、電子記憶装置上、ハード・ディスク上、光ディスク上、又は他のマシン読み取り可能な記憶媒体上に記憶し得る。ソフトウェアは、マシン読み取り可能な担体上のコンピュータ・プログラム・プロダクトとして配布し得、又はネットワーク接続を介してノードにダウンロードし得る。
【００２２】
本発明の更なる局面は、上記方法の何れかを行うよう構成されたプロセッサを備えるネットワーク・ノードを提供する。
【００２３】
本発明の更なる局面は、等コスト経路間で選択するための上記方法をそれぞれが一貫して適用するノードのネットワークを提供する。
【００２４】
本発明の実施例は、添付図面を参照して例としてのみ説明する。
【図面の簡単な説明】
【００２５】
【図１】等コスト経路を有するネットワーク・トポロジを示す図である。
【図２】本発明を実現することが可能なパケット転送ネットワークの例を示す図である。
【図３】図２のブリッジ・ノードの１つにおける装置を模式的に示す図である。
【図４】最短経路の局所性を示す図である。
【図５】タイブレイク決定の局所性を示す図である。
【図６】最短経路の算出を例証するための例示的なネットワーク・トポロジを示す図である。
【図７】最短経路の算出を例証するための例示的なネットワーク・トポロジを示す図である。
【図８】最短経路の算出を例証するための例示的なネットワーク・トポロジを示す図である。
【図９】最短経路の算出を例証するための更なる例示的なネットワーク・トポロジを示す図である。
【図１０】図９に示すネットワーク・トポロジの最短経路算出のタイブレイク工程を示す図である。
【図１１】図９に示すネットワーク・トポロジの最短経路算出のタイブレイク工程を示す図である。
【図１２】図９に示すネットワーク・トポロジの最短経路算出のタイブレイク工程を示す図である。
【図１３】メッシュ・ネットワークに対してデュアル・ホーミングされたノードの例を示す図である。
【図１４】ノード間で一貫した結果をもたらすために拡張タイブレイク手法が必要であり得る等コスト経路の例を示す図である。
【発明を実施するための形態】
【００２６】
本発明の実施例は、添付図面を参照して例としてのみ説明する。
【実施例】
【００２７】
図２は、本発明を実現することが可能な、リンク状態プロトコルによって制御されたイーサネット（登録商標）ネットワーク１０の例を示し、図３は模式的に、ノード４１乃至４８のうちの１つにおける装置を示す。メッシュ・ネットワークを形成する（ブリッジ、又はブリッジ・ノードとも呼ばれる）ノード４１乃至４８は、相互に交換リンク状態アドバータイズメント５６を交換する。このことは、良く理解されている、リンク状態ルーティング・システムの機構を介して実現される。ルーティング・システム・モジュール５１は、リンク状態ルーティング・プロトコルを使用して、ネットワーク・トポロジに関するネットワーク内のピア・ノードと情報５６を交換する。前述の情報の交換はネットワーク・トポロジの同期化されたビューをノードが生成することを可能にする。各ノードでは、最短経路決定モジュール５２は、他のノードそれぞれへの最短経路を決定する最短経路ツリーを算出する。モジュール５２によって決定された最短経路は、ネットワークを介してトラフィックを方向付けるためのエントリで転送情報ベース５４を埋めるために使用される。以下に更に詳細に説明するように、モジュール５２が複数の等コスト経路に遭遇する場合に状況が生じることになる。タイブレイク・モジュール５３は、一貫したやり方で等コスト経路の１つ（又は複数）を選択する。通常の動作では、パケットがノードで受信され（５７）、宛先ルックアップ・モジュール５５は、受信パケットを転送すべき（５８）ポート（又は、マルチキャスト宛先の場合は、複数のポート）を、ＦＩＢ５４を使用して決定する。有効なエントリがＦＩＢ５４に存在していない場合、パケットを廃棄し得る。図３に示すモジュールは、例証の目的のために過ぎず、当業者が分かるように、ノードのモジュールのうちの機能を結合し、又は分散させることによって実現し得る。
【００２８】
特定のノードがブリッジの特定の対間の最短経路上にあるかを決定するために、種々の最短経路アルゴリズムを使用することが可能である。ノード対間の最短経路を計算するために、フロイドのアルゴリズム（Ｒ．Ｆｌｏｙｄ：Ａｌｇｏｒｉｔｈｍ  ９７  （ｓｈｏｒｔｅｓｔ  ｐａｔｈ），Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  ｏｆ  ｔｈｅ  ＡＣＭ，７：３４５，１９６２や、ダイクストラの単一始点最短経路アルゴリズム（Ｅ．Ｗ．Ｄｉｊｋｓｔｒａ：Ａ  ｎｏｔｅ  ｏｎ  ｔｗｏ  ｐｒｏｂｌｅｍｓ  ｉｎ  ｃｏｎｎｅｘｉｏｎ  ｗｉｔｈ  ｇｒａｐｈｓ，  Ｎｕｍｅｒｉｃａｌ  Ｍａｔｈｅｍａｔｉｃｓ，１：２６９−２７１，１９５９）などの全点対間最短経路アルゴリズムをノード４１乃至４８において実現し得る。更に、何れかの適切な最短経路アルゴリズムを利用することが可能である。最短経路アルゴリズムによって使用されるリンク・メトリックは、トラフィック・エンジニアリング情報を考慮に入れるよう静的に、又は動的に修正することが可能である。例えば、リンク・メトリックは、容量、速度、使用量、及び可用性などのコストの尺度を含み得る。
【００２９】
課題に対する前置きとして、等コスト経路間で一貫した決定を行うことが可能なタイブレイク・アルゴリズムの要件をまず説明する。要件のリストは以下表１に記載する。
【００３０】
【表１】
2015520997.tif 000003
タイブレイク・アルゴリズムの本質は、常に「機能する」ということである。アルゴリズムが提示される経路の組がどれであろうと、アルゴリズムは常に１つの経路のみを選択できるべきである。したがって、何よりもまず、タイブレイク・アルゴリズムは完全（１）であるべきである。一貫したタイブレイクのためには、アルゴリズムは、等コスト経路が発見され、タイブレイクが行われる順序にかかわらず、同じ結果をもたらさなければならない。すなわち、タイブレイク・アルゴリズムは、可換（２）であり、かつ結合的（３）でなければならない。３つの経路間のタイブレイクが、経路の対が考慮に入れられる順序にかかわらず同じ結果をもたらさなければならないという要件（３）はそれほど明白でなく、しかし、ネットワークを通じた計算の方向に応じて異なる順序で等コスト経路が発見されるので、一貫した結果のために絶対に必要である。タイブレイク・アルゴリズムは対称（４）でなければならない（すなわち、タイブレイク・アルゴリズムは経路の方向にかかわらず、同じ結果をもたらさなければならない）。２つのノードＡ及びＢ間の最短経路はＢとＡとの間の最短経路の逆でなければならない。最後に、局所性（５）は、ルーティング・システムによって活用される最短経路の非常に重要な特性である。局所性の特性は、単に、最短経路のサブ経路も最短経路であるということを意味する。最短経路のこの一見して些細な特性は、宛先ベースの転送を使用するパケット・ネットワークにおいて重要なアプリケーションを有する。前述のネットワークでは、経路に沿った中間ノードにおける転送決定は、パケットの送信元アドレスでなく、宛先アドレスにのみ基づく。よって、その転送情報を生成するために、ノードはそれ自体から他のノード全てへの最短経路を計算すればよく、生成される転送情報の量は、ネットワーク内のノードの数とともに、二次関数的にではなく、線形的に増大する。デスティネーションベースの転送を可能にするために、タイブレイク・アルゴイズムは、よって、最短経路の局所性の特性を維持しなければならない。すなわち、タイブレイク・アルゴリズムによって選択された最短経路のサブ経路は、タイブレイク・アルゴリズムによって選択された最短経路でなければならない。
【００３１】
計算効率の考慮点により、タイブレイク・アルゴリズムに対して、一見して異なる別の要件が課される。すなわち、アルゴリズムは、等コスト経路が発見されると直ちにタイブレイク決定を行うことができるべきである。図５はこの点を示す。中間ノードＩが、ノードＡに２つの等コスト経路ｐ及びｑによって接続され、ノードＢに別の等コスト経路の対ｒ及びｓによって接続される。したがって、全てノードＩを通過する、ノードＡとノードＢとの間の４つの等コスト経路ｐ＋ｒ、ｐ＋ｓ、ｑ＋ｒ、ｑ＋ｓが存在している。ＡからＢへの最短経路の計算が進むにつれ、ＡとＩとの間の等コストのサブ経路の存在がまず発見される。前述の２つの経路の知識を繰り越すことを要することを避けるために、タイブレイク・アルゴリズムは、第２の等コスト最短サブ経路の存在が発見され次第、それらのうちから選ぶことができるべきである。中間ノードにおいて行われるタイブレイク決定は、最終的には、計算の結果に影響を及ぼす。ノードＡとノードＩとの間の２つのサブ経路ｐ及びｑの一方をなくすことにより、アルゴリズムは、ノードＡとノードＢとの間の４つの最短経路のうちの２つを更なる考慮から除外する。同様に、逆方向では、タイブレイク・アルゴリズムは、最終決定を行う前にサブ経路ｒ及びサブ経路ｓから選ぶ。これらの局所決定は互いに一貫していなければならず、特に、２つの等コスト経路間での選択は、経路が同様に延長された場合に同じに留まるべきである。例えば、図３に表す場合には、タイブレイク・アルゴリズムは以下の４つの同一性を検証すべきである。
【００３２】
ｔｉｅｂｒｅａｋ（ｃｏｎｃａｔ（ｐ，ｒ），ｃｏｎｃａｔ（ｑ，ｒ））＝ｃｏｎｃａｔ（ｔｉｅｂｒｅａｋ（ｐ，ｑ），ｒ）
ｔｉｅｂｒｅａｋ（ｃｏｎｃａｔ（ｐ，ｓ），ｃｏｎｃａｔ（ｑ，ｓ））＝ｃｏｎｃａｔ（ｔｉｅｂｒｅａｋ（ｐ，ｑ），ｓ）
ｃｏｎｃａｔ（ｐ，ｔｉｅｂｒｅａｋ（ｒ，ｓ））＝ｔｉｅｂｒｅａｋ（ｃｏｎｃａｔ（ｐ，ｒ），ｃｏｎｃａｔ（ｐ，ｓ））
ｃｏｎｃａｔ（ｑ，ｔｉｅｂｒｅａｋ（ｒ，ｓ））＝ｔｉｅｂｒｅａｋ（ｃｏｎｃａｔ（ｑ，ｒ），ｃｏｎｃａｔ（ｑ，ｓ））
タイブレイク・アルゴリズムが一貫した局所的決定を行うことを保証するのに対称性（４）及び局所性（５）の条件は必要かつ十分であり、このことは、等コスト最短経路の存在下で単一始点最短経路アルゴリズムの非常に効率的な実現をもたらすために活用することが可能である。
【００３３】
表１に記載された要件のリストは網羅的であることを意図するものでなく、表１に含まれていた可能性がある他の最短経路の特性も存在している。例えば、最短経路の一部でないリンクがグラフから除去された場合、最短経路は影響を受けない。同様に、選択された経路の一部でないリンクがグラフから除去された場合に、かつ前述のリンクが、アルゴリズムによって除去された等コスト経路のうちのいくつかの一部であった場合にも、複数の等コスト経路間のタイブレイク・アルゴリズムの選択は影響を受けないはずである。
【００３４】
次に、一貫したタイブレイク・アルゴリズムの第１の実施例を説明する。前述のアルゴリズムは、経路毎に経路識別子を形成することによって始まる。経路識別子は、ネットワークを通る経路が経由するノードそれぞれの識別子の順序付きリストである。ノード識別子は辞書式順序でソートされる。経路識別子は、結果として生じる順序付きノ―ド識別子の連結である。図６は、端ノードＡ、Ｂ及び中間ノード０乃至９を備えた例示的なネットワークを示す。
【００３５】
ノードＡ及びＢ間の（図６の最上部に沿った）第１の経路は、ノード識別子Ａ−０−５−６−１−４−８−Ｂを有するノードを経由する。ノード識別子のリストを昇順の辞書的順序で順序付けした後、経路は経路識別子０１４５６８ＡＢによって表すことが可能である。前述の構成により、経路及びその逆が同じ経路識別子を有することが確実となる。更に、アルゴリズムは最短経路又はほぼ最短の経路のみを扱うので、２つの経路（すなわち、直接経路、及び対応する逆経路）のみが一識別子を共有し得る。最後に、タイブレイク・アルゴリズムは単に、最小の（又は最大の）経路識別子を有する経路を選択する。アルゴリズムは以下のように要約することが可能である。すなわち、
１）ノード識別子の組の全体の順序付けを実現する第１の順序付け基準に応じて経路内のノードの識別子の組をソートする。好ましい第１の順序付け基準は、昇順又は降順の辞書式順序である。
【００３６】
２）順序付けされたノード識別子の組を連結して経路識別子を作成する。
【００３７】
３）経路識別子の組の全体の順序付けを実現する第２の順序付け基準に応じて経路識別子をソートする。好ましい第２の順序付け基準は、昇順又は降順の辞書式順序である。
【００３８】
４）ソートされた経路識別子の組の一方端（最初又は最後）に経路識別子が現れる経路を選択する。効果的には、前述の工程は、順序付けられた経路識別子の組に最初に現れる経路識別子を選択する。
【００３９】
前述のアルゴリズムを一貫して行う、ネットワーク内のノードそれぞれは、同じ順序付け基準を使用し、同じ経路を選択するために、経路識別子の組における同じ同意の位置における経路を選択する。
【００４０】
「辞書式順序」の語は、ノード識別子の組が識別子のサイズの順序に配列されることを意味している。よって、ノード識別子がアルファベットである場合、ノード識別子の組はアルファベット順Ａ、Ｂ、Ｃ、Ｄ等に配列され、ノード識別子が数字である場合、ノード識別子の組は数字順に配列される。明らかに、前述の手法は、ノードをラベリングする何れのやり方にも、識別子のタイプの何れの組み合わせにも対処し得る。例えば、数字及び文字の混合は、文字に対する数字の順序（例えば、最初に数字を、次いで文字を順序付ける）を合意することによって順序付けることが可能である。あるいは、各文字には、その情報交換用米国標準コード（Ａｍｅｒｉｃａｎ  Ｓｔａｎｄａｒｄ  Ｃｏｄｅ  ｆｏｒ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｉｎｔｅｒｃｈａｎｇｅ：ＡＳＣＩＩ）が与えられ得、ＡＳＣＩＩコードは昇順（降順）にソートすることが可能である。各ノードは、同じ規則を使用して経路のノード識別子を同じやり方で順序付ける。前述のアルゴリズムは、一貫した結果をもたらす。経路（厳密には、経路及びその逆からなる対）とその識別子との間に１対１のマッピングが存在しており、経路識別子の厳密な順序付けが存在している。
【００４１】
もう一度、図６を参照すると、順序付けされた後の、ノードＡとノードＢとの間の最も上方の経路は、経路識別子０１４５６８ＡＢによって表す。同様に、ノードＡとノードＢとの間の第２の経路はノードＡ−０−７−９−１−４−８−Ｂを経由し、このことは、順序付け後、経路識別子０１４７８９ＡＢによって表すことが可能である。最後に、ノードＡとノードＢとの間の（図６の最も下に沿った）第３の経路はノードＡ−０−７−９−２−３−８−Ｂを経由し、このことは、順序付け後、経路識別子０２３７８９ＡＢによって表すことが可能である。タイブレイク・アルゴリズムは、順序付けられた経路識別子の各要素を合意の方向で比較する。前述の例では、使用される規則は、経路識別子が特定の方向で（例えば、左から右に）比較された場合、順序付けされた経路識別子のうちの最低のものを各ノードが選択するというものである。３つの等コスト経路の順序付けされた経路識別子は、
０１４５６８ＡＢ
０１４７８９ＡＢ
０２３７８９ＡＢである。
【００４２】
識別子の左側の要素から始めると、３つの経路識別子は全て、「０」で始まる。次の要素は「１」又は「２」であり、よって、最も上から２つの識別子のみを更に考慮に入れればよい。４番目の要素に達すると、「０１４５…」は「０１４７…」よりも小さく、よって、最も上の経路が選択される。ＩＳ−ＩＳ及びイーサネット（登録商標）における実際のノード識別子は、６つの８ビット・バイトを含み、００−ｅ０−７ｂ−ｃｌ−ａ８−ｃ２などの１６進の文字列として通常、記述される。一貫して使用されるという条件で、ノードのニックネームも使用することが可能である。
【００４３】
図７は、異なる順序付け基準の効果を例証するために、単純なネットワーク・トポロジを示す。２つのノードＸ、Ｙは、ノード識別子１乃至８を有する４つの等コスト経路によって接続される。考えられる４つの選択肢を次に説明する。
【００４４】
●昇順により、ノードＩＤをソートする。昇順により、経路ＩＤをソートする。最初の（最小の）経路ＩＤを選択する。各経路におけるノード識別子が、サイズの昇順（例えば、ノード１、７を有する最も上の経路は１７となる）で順序付けられた場合、それにより、経路識別子１７、２８、３５、４６が得られる。前述の識別子をサイズの昇順に配列し、順序付きリストにおける最初の経路識別子を選択することにより、ノード１及び７を有する最初の（最も上の）経路を選択するという結果になる。
【００４５】
●昇順により、ノードＩＤをソートする。昇順により、経路ＩＤをソートする。最後の（最大の）経路ＩＤを選択する。この選択肢は、ノード４及び６を有する最後の（最も下の）経路を選択するという結果となる。
【００４６】
●降順により、ノードＩＤをソートする。昇順により、経路ＩＤをソートする。最初の（最小の）経路ＩＤを選択する。サイズの降順で各経路におけるノード識別子をソートすることにより、経路識別子（７１，８２，５３，６４）が得られる。サイズの昇順で前述の経路識別子を配列すると、（５３，６４，７１，８２）が得られ、順序付きリストにおける最初の（最小の）経路識別子を選択すると、ノード３及び５を有する３番目の経路を選択するという結果となる。
【００４７】
●降順により、ノードＩＤをソートする。昇順により、経路ＩＤをソートする。最後の（最大の）経路ＩＤを選択する。この選択肢は、ノード８及び２を有する２番目の経路を選択するという結果となる。
【００４８】
以下に更に説明するように、複数の等コスト経路を選択するために、異なる複数の順序付け及び／又は選択の基準を適用することが望ましい状況が存在している。
【００４９】
これまで、本明細書では、アルゴリズムが局所でないこと、及び、等コスト経路全てが見つかった後にタイブレイクを行うことを仮定している。しかし、分岐するブランチ上のノードのみを考慮に入れることにより、前述のアルゴリズムの局所バージョンが、同じ結果をもたらし得るということが明らかとなった。実際に、タイブレイク結果は、分岐するブランチにおける最小のノード識別子の相対位置にのみ依存する。一貫したタイブレイク・アルゴリズムの第２の実施例は、
１）第１の選択基準を満たす第１の経路の分岐するブランチにおけるノード識別子を見つける。これは、第１の経路のブランチ識別子とみなし得る。
【００５０】
２）第１の選択基準を満たす第２の経路の分岐するブランチにおけるノード識別子を見つける。これは、第２の経路のブランチ識別子とみなし得る。
【００５１】
工程（１）及び（２）によって選択されたブランチ識別子を処理する第２の選択基準を使用して経路の１つを選択する。
として要約することが可能である。
【００５２】
第１の選択基準の好ましい選択肢は、辞書式順序（昇順又は降順の辞書式順序）などの全体の順序付け手法を使用してノード識別子が配列される場合に最初（又は最後）であるノード識別子を見つけるというものである。以下に説明するように、上記手法がブランチにおいて全体のノード識別子の組をまとめ、次いで、上記組を順序付けることは必要でない。その代わりに、上記手法は、辞書式順序の認識を使用してノード識別子の対を反復して比較することが可能である。同様に、第２の選択基準の好ましい選択肢は、辞書式順序（昇順又は降順の辞書式順序）などの全体の順序付け手法を使用してブランチ識別子が配列される場合に最初（又は最後）であるブランチ識別子を見つけるというものである。
【００５３】
もう一度、図７のトポロジを参照するに、ノードＸとノードＹとの間の４つの等コスト経路は、親ノードＸからの４つの等コストの分岐するブランチを表し得る。タイブレイク・アルゴリズムは、４つのブランチのうちの１つを選択する必要がある。考えられる選択肢は４つ存在している。すなわち、
●  各ブランチにおける最小のノードＩＤを識別する。これは、ブランチ識別子として（１，２，３，４）をもたらす。次いで、ブランチ識別子のうちの最小のものを識別する。このことは、ノード１及び７を有する最初の（最も上の）経路を選択するという結果となる。
【００５４】
●  各ブランチにおける最小のノードＩＤを識別する。次いで、ブランチ識別子のうちの最大のものを識別する。このことは、ノード４及び６を有する最後の（最も下の）経路を選択するという結果となる。
【００５５】
●  各ブランチにおける最大のノードＩＤを識別する。これは、ブランチ識別子として（５，６，７，８）をもたらす。次いで、ブランチ識別子のうちの最小のものを識別する。このことは、ノード３及び５を有する経路を選択するという結果となる。
【００５６】
●  各ブランチにおける最大のノードＩＤを識別する。次いで、ブランチ識別子のうちの最大のものを識別する。この選択肢は、ノード２及び８を有する経路を選択するという結果となる。
【００５７】
以下に更に説明するように、ノードが、複数の等コスト経路を選択するために、異なる複数の順序付け及び／又は選択の基準を適用することが望ましい状況が存在している。
【００５８】
前述のアルゴリズムは、単純な比較により、非常に簡単にかつ効率的に実現することが可能である。図８は別のネットワーク・トポロジを示す。方法の局所バージョンは、ノード１３で始まり、ノード１５からつながっている分岐する２つの経路の発見に進む。方法は、２つの経路が再び合流するノード１６まで別個の２つの経路を探索する。この時点で、方法は、２つの経路毎のノード識別子を検査する。第１の経路の場合、ノード識別子は１０、１４、１７、２１であり、第２の経路の場合、ノード識別子は１１、１２、１９、２０である。最も低い識別子（１０）を有する経路は上側の経路である。経路を比較する２つのやり方を説明する。まず、方法は、分岐する経路毎にノード識別子のリストを維持することが可能であり、前述のリストの要素を比較することが可能である。あるいは、方法は、各ブランチにおいて見つかった最低ノード識別子を追跡して、単に、ノード１６からノード１５に向けて後戻りすることが可能である。
【００５９】
逆進工程それぞれでは、方法は、その工程で遭遇した新たなノード識別子と、それまで見つかった最低ノード識別子を比較する。最低ノード識別子が記憶される。方法がノード１５まで後戻りすると、２つの最低値（上側のブランチにおける１０、下側のブランチにおける１１）は単に、最低ノード識別子を有する経路を見つけるために互いに比較することが可能である。よって、上側の経路が選択される。
【００６０】
ネットワークにおける最短コスト経路を見つけるための最も一般的なアルゴリズムの１つはダイクストラのアルゴリズム（Ｄｉｊｋｓｔｒａ  ５９）である。これは、経路の長さが正のホップ毎リンク・コストの和として定義される場合に、グラフ内の点（始点ノード又はルート・ノード）から、考えられる宛先全てへの最短経路を見つけるという問題を解決する。前述の問題は場合によっては、単一始点最短経路問題と呼ばれている。グラフＧ＝（Ｎ，Ｌ）であって、Ｎがノードの組であり、Ｌがそれらを接続するリンクの組であるグラフの場合、ダイクストラのアルゴリズムは、始点ノードからの距離の昇順でノードを訪ねるために、通常、ＴＥＮＴと呼ばれる優先度キューを使用する。ダイクストラのアルゴリズムを実現するために必要なその他のデータ構造は以下の通りである。
【００６１】
距離：始点ノードから各ノードへの最短距離の最善の推定のアレイ。
【００６２】
親：ノード毎の先行ノードのアレイ。
以下の記載では、既知のダイクストラのアルゴリズムを説明し、複数の等コスト経路が発見された場合にタイブレイクを行うよう修正することが可能な態様を説明する。ダイクストラのアルゴリズムは、最も慣用されている最短経路発見アルゴリズムの１つであるため、ここで説明する。しかし、他のアルゴリズムも同様に使用することが可能である。初期化段階は、始点ノード自体以外の各ノードの距離を無限大に設定する。始点ノードの距離はゼロに設定し、その親は、ツリーのルートなので、ヌルに設定される。計算の開始時に、優先度キューは始点ノードのみを含む。アルゴリズムが進むにつれ、ノ―ドが、該ノードへの始点ノードからの経路が見つかった場合に優先度キューに追加される。始点ノードとそれらとの間の最短経路が見つかった後、始点ノードからの距離の昇順でノードが優先度キューから引き出される。始点ノードから到達可能なノードが全て、優先度キューを巡回すると、アルゴリズムは停止する。優先度キューＴＥＮＴが空きでない間、アルゴリズムは以下の工程を行う。
【００６３】
１）始点ノードに最も近いノードＮをＴＥＮＴにおいて見つけ、それをＴＥＮＴから除去する。
【００６４】
２）Ｎに接続されたノード毎に、始点へのノードの距離が、Ｎをその親にすることによって削減される場合、ノードの親をＮに変更し、ノードの距離を新たな距離に設定し、ノードをＴＥＮＴに追加する。
アルゴリズムが完了すると、Ｄｉｓｔａｎｃｅ（ｎｏｄｅ）は始点ノードからノード（又は、ノ―ドが始点ノードから到達可能でない場合、無限大）への最短距離を含み、Ｐａｒｅｎｔ（ｎｏｄｅ）は、（始点ノード、及び始点ノードから到達可能でないノードを除き、）スパニング・ツリー内のノードの先行ノードを含む。親の変更が実際にノードの距離を削減する場合にのみ、ノードの親が更新される。これは、始点ノードと特定の他のノードとの間に複数の等コスト最短経路が存在する場合、アルゴリズムの実行中に遭遇する最初のもののみが考慮に入れられるということを意味する。
上記工程は、ダイクストラのアルゴリズムの通常の工程である。この時点で、一貫したタイブレイク工程を追加するようダイクストラが修正される。上記工程２は以下のように修正される。すなわち、
２）ノードＮに接続されたノード毎に、以下を行う。
【００６５】
２ａ）始点へのノードの距離が、Ｎをその親にすることによって削減される場合、ノードの親をＮに変更し、ノードの距離を新たな距離に設定し、ノードをＴＥＮＴに追加する。
【００６６】
２ｂ）Ｎをその親にした後に、始点ノードへのノード距離が同じに留まる場合、ノードの親を変更すべきかを決定するためにタイブレイク・アルゴリズムを呼び出す。
分岐する２つのブランチの合流点に到達すると、タイブレイク・アルゴリズムが呼び出される。例えば、図８に示すトポロジを検討するに、ダイクストラのアルゴリズムがノード１３で始まった場合、ノード１５から延びる、分岐するブランチ（ノード１０、１４、１７、２１を有する上方ブランチ、及びノード１１、１２、１９、２）を有する下方ブランチ）が発見され、前述の分岐するブランチはノード１６で合流する。２つのブランチ間で選択するようタイブレイク・アルゴリズムが呼び出されるのはノード１６においてである。
【００６７】
以下の擬似コードは、ＴＥＮＴの組の優先度キューの実現形態を使用した、一貫したタイブレイクを備えた修正されたダイクストラ・アルゴリズムの実現形態を示す。エンキュー（Ｅｎｑｕｅｕｅ）処理は２つの引数（すなわち、キュー及びノード）をとり、ノードを、始点ノードからのその距離に応じて適切なキュー位置に入れる。デキュー（Ｄｅｑｕｅｕｅ）処理は、キューの先頭におけるノード（すなわち、始点ノードからの最小の距離を有するノード）をキューから除去する。
【００６８】
【表２】
2015520997.tif 000004
タイブレイク・アルゴリズムは、ノードの現在の親及び新たな候補の親それぞれから始めて、分岐する点に戻るまで、２つの等コスト経路を後戻りすることによって動作する。分岐する２つの経路が、異なるホップ数を有し得るということは、話をやや複雑にし得る。未知の、等しくないホップ数だけ、２つの経路を後戻りしなければならないからである。前述の問題は、常に、２つの経路のうちの長い方を最初に後戻りし、又は、等コストを有している場合、２つの経路を同時に後戻りすることによって解決することが可能である。あるいは、前述の問題は、同じホップ数を有する場合にのみ、２つの経路が考慮に入れられることを確実にすることにより、完全になくすことが可能である。このことは、経路コストにホップ数を組み入れることにより、又は一次のタイブレイカとしてホップ数を使用することにより、簡単に実現される。
【００６９】
以下の擬似コードは、２つの経路が同じループ数を有し（、かつ、したがって、それらの分岐するブランチもそうである）と仮定するタイブレイク・アルゴリズムの実現形態を示す。タイブレイク関数は、等しい２つの経路の端における２つのノードをとり、そのうちの一方を返して、選択したのは２つの経路のうちのどれかを示す。
【００７０】
【表３】
2015520997.tif 000005
アルゴリズムを行わなければならない頻度はアプリケーションに依存する。ＰＬＳＢは基本的に、全点対最短経路（場合によっては、それらの部分集合）を計算する必要がある。この場合、ダイクストラのアルゴリズムは、ネットワーク内のノード全て（厳密には１つを除く全て）について実行する必要がある。フロイドのアルゴリズムは、全点対最短距離を計算するので、一度のみ実行されればよい。他のアプリケーションは、より少数の経路の計算しか必要でないことがあり得る（例えば、１つの最短経路のみが必要な場合、経路の端点の一方を始点として、ダイクストラのアルゴリズムを１度だけ実行すればよい）。
【００７１】
図９は、リンクによって相互接続されたノードＡ乃至Ｈ、Ｊのネットワークの例を示す。
リンク毎に、そのリンクに関連付けられたメトリックを、リンク上の整数値として示す。前述のネットワークにおけるノードＡとノードＢとの間に、別々の６つの等コスト最短経路が存在している。これらは、それらそれぞれの長さ及び経路識別子とともに以下の表に示す。
【００７２】
【表４】
2015520997.tif 000006
前述の６つの経路は全て、同じ長さ１０を有する。タイブレイク・アルゴリズムの非局所バージョンは、最小の経路識別子（ＡＢＣＤＥ）を有するもの（すなわち、経路ＡＦＣＨＢ）を選択する。この節の残りの部分では、ダイクストラのアルゴリズムの実行中に等コストの経路及びサブ経路が発見されるにつれ、局所タイブレイク決定のみを行うことにより、タイブレイク・アルゴリズムの局所バージョンがどのようにして同じ結果に到達するかを示す。ダイクストラのアルゴリズムは、ネットワーク内のノードの親（又は先行するノード）及び距離のテ―ブルを初期化する。距離は全て、距離がゼロに設定される始点ノード以外は、無限大に設定される。親はこの段階では定義されていない。
【００７３】
【表５】
2015520997.tif 000007
ダイクストラのアルゴリズムは更に、始点ノードＡのみを含めるよう優先度キューを初期化する（すなわち、Ａ：ＴＥＮＴ＝［（Ａ，０）］）。
ダイクストラのループの１回目の反復は、ＴＥＮＴにおける最初かつ唯一のノード（すなわち、ノードＡ）を選択する。次いで、ノードＡの近傍（すなわち、ノードＦ及びＧ）毎に、次いで、始点へのその距離を更新し、ノードＡをそれらの親とする。最終的に、前述の２つのノードが、ＴＥＮＴ優先度キューに追加される。このダイクストラのアルゴリズムの１回目の反復中に、距離及び親のテーブルは、
【００７４】
【表６】
2015520997.tif 000008
となる。前述の１回目の反復の終了時に、優先度キューは、ＴＥＮＴ＝［（Ｇ，１），（Ｆ，２）］となる。
ダイクストラ・ループの２回目の反復により、最小の距離を有するノード（すなわち、ノードＧ）が優先度キューから除去される。これにより、まだ処理されていないＧの近傍の２つ（すなわち、ノードＣ及びＤ）が更新され、それらが優先度キューに加えられる。
【００７５】
【表７】
2015520997.tif 000009
２回目の反復の終了時に、優先度キューは、ＴＥＮＴ＝［（Ｆ，２），（Ｄ，４），（Ｃ，５）］となる。ダイクストラ・ループの３回目の反復により、ノードＦが優先度キューから除去される。これにより、ノードＦの２つの近傍（すなわち、ノードＣ及びＥ）が更新され、ノードＥが優先度キューに追加される（ノードＣはそこに既に存在している）。ノードＣの距離は変わらないが、ノードＦを通るノードＡとノードＣとの間の新たな候補の等経路が存在している。したがって、ノードＦを通る前述の新たな経路と、ノードＧを通る旧いものとの間で選ぶようタイブレイク・アルゴリズムを呼び出さなければならない。このことは図１０に示す。タイブレイク・アルゴリズムは、ノードＣの親の新たな候補であるノードＦ、及びその旧い親であるノードＧによって呼び出される。ｏｌｄＭｉｎは旧い親の識別子Ｇに設定され、ｎｅｗＭｉｎは、新たな親の識別子Ｆに設定される。ノードＦ及びＧは同じ親（ノードＡ）を共有するので、後戻りループは実行されない。タイブレイクは単に、ｏｌｄＭｉｎ及びｎｅｗＭｉｎを比較し、ｎｅｗＭｉｎ＝Ｆ＜Ｇ＝ｏｌｄＭｉｎであるので、ノードＦがノードＣの新たな親として選択される。
【００７６】
【表８】
2015520997.tif 000010
３回目の反復の終了時に、優先度キューは、ＴＥＮＴ＝［（Ｄ，４），（Ｅ，４），（Ｃ，５）］
となる。ダイクストラ・ループの４回目の反復により、距離４を有する２つのノードのうちの１つ（例えば、ノードＤ）が優先度キューから除去される。Ｄの２つの近傍のうち、１つのみ（すなわち、ノードＨ）が更新され、優先度キューに追加される。
【００７７】
【表９】
2015520997.tif 000011
４回目の反復の終了時に、優先度キューは、ＴＥＮＴ＝［（Ｅ，４），（Ｃ，５），（Ｈ，６）］となる。ダイクストラ・ループの５回目の反復により、ノードＥが優先度キューから除去される。Ｅの２つの近傍のうち、１つのみ（すなわち、ノードＪ）が更新され、優先度キューに追加される。
【００７８】
【表１０】
2015520997.tif 000012
５回目の反復の終了時に、優先度キューは、ＴＥＮＴ＝［（Ｃ，５），（Ｈ，６），（Ｊ，６）］となる。ダイクストラ・ループの６回目の反復により、ノードＣが優先度キューから除去される。Ｃの近傍のうちの２つ（すなわち、ノードＪ及びＨ）は、ノードＡ乃至Ｃへ等コスト経路を有する。したがって、タイブレイク・アルゴリズムは、ノードＪ及びＨそれぞれについて２回呼び出されなくてはならない。
ノードＪの場合、タイブレイク・アルゴリズムは、新たな潜在的な親（すなわち、ノードＣ）、及び旧い親（すなわち、ノードＥ）によって呼び出される。ｏｌｄＭｉｎは旧い親の識別子Ｅに設定され、ｎｅｗＭｉｎは新たな親の識別子Ｃに設定される。前述の２つのノード（すなわち、Ｅ及びＣ）は同じ親（ノードＦ）を共有するので、後戻りループは実行されない。タイブレイクは単に、ｏｌｄＭｉｎ及びｎｅｗＭｉｎを比較し、ｎｅｗＭｉｎ＝Ｃ＜Ｅ＝ｏｌｄＭｉｎであるので、新たな親が選択される。したがって、ノードＪの親はノードＣによって置き換えられる。これは図１１に示す。
ノードＨの場合、タイブレイク・アルゴリズムは、新たな潜在的な親（すなわち、ノードＣ）、及び旧い親（すなわち、ノードＤ）によって呼び出される。ｏｌｄＭｉｎは旧い親の識別子Ｄに設定され、ｎｅｗＭｉｎは新たな親の識別子Ｃに設定される。前述の２つのノードは異なる親を有するので、何れの経路も１ホップ分更に後戻りしなければならない。Ｄの親はＧであり、Ｇ＞ｏｌｄＭｉｎ（＝Ｄ）であるため、ｏｌｄＭｉｎは変わらない。Ｃの親はＦであり、Ｆ＞ｎｅｗＭｉｎ（＝Ｃ）であるため、ｎｅｗＭｉｎは変わらない。Ｆ及びＧは同じ親（すなわち、ノードＡ）を共有するので、後戻りループは停止する。タイブレイク・アルゴリズムは次いで、ｏｌｄＭｉｎ及びｎｅｗＭｉｎを比較し、ｎｅｗＭｉｎ＝Ｃ＜Ｄ＝ｏｌｄＭｉｎであるので、ノードＨの新たな親になるようノードＣが選択される。このことは図１２に示す。
【００７９】
【表１１】
2015520997.tif 000013
６回目の反復の終了時に、優先度キューは、ＴＥＮＴ＝［（Ｈ，６），（Ｊ，６）］となる。
ダイクストラ・ループの７回目の反復により、距離６を有する２つのノードのうちの１つ（例えば、ノードＨ）が優先度キューから除去される。Ｈの近傍のうち、１つのみ（すなわち、ノードＢ）が更新され、優先度キューに追加される。
【００８０】
【表１２】
2015520997.tif 000014
７回目の反復の終了時に、優先度キューは、ＴＥＮＴ＝［（Ｊ，６），（Ｂ，１０）］となる。ダイクストラ・ループの８回目の反復により、ノードＪが優先度キューから除去される。Ｊの近傍のうち、ノードＢのみを更新すればよい。その距離は変わらないが、ノードＪを通るノードＡ及びノードＢ間の新たな候補の等経路が存在している。
タイブレイク・アルゴリズムは、ノードＢの新たな潜在的な親（すなわち、ノードＪ）、及び旧い親（すなわち、ノードＨ）によって呼び出される。ｏｌｄＭｉｎは旧い親の識別子Ｈに設定され、ｎｅｗＭｉｎは新たな親の識別子Ｊに設定される。前述の２つのノード（すなわち、Ｈ及びＪ）は同じ親（ノードＣ）を共有するので、後戻りループは実行されない。タイブレイクは単に、ｏｌｄＭｉｎ及びｎｅｗＭｉｎを比較し、ｏｌｄＭｉｎ＝Ｈ＜Ｊ＝ｎｅｗＭｉｎであるので、旧い親が選択され、ノードＢの親は同じままである。
【００８１】
【表１３】
2015520997.tif 000015
８回目の反復の終了時に、優先度キューは、ＴＥＮＴ＝［（Ｂ，１０）］となる。
最後に、ダイクストラのループの最後の反復により、ノードＢがキューから除去され、アルゴリズムは終結する。Ｂの近傍の何れも更新することが可能でないからである（ノードＢは、始点ノードＡから最も遠いノードである）。
ノードＡからノードＢへの最短経路の逆は、ノードＢで始め、ノードＡに達するまで親をたどり、親テーブルから直接読み出し得る（ＢＨＣＦＡ）。局所のタイブレイク・アルゴリズムによって選択されるノードＡからノードＢへの最短経路はしたがって、その逆経路である（ＡＦＣＨＢ）。
ノードＡとノードＢとの間には６つの等コスト経路が存在しているが、局所タイブレイクは、ダイクストラのアルゴリズムの実行中に、合計４回だけしか、呼び出されていない。その最初の呼び出しでは、タイブレイク・アルゴリズムは、サブ経路ＡＦＣとサブ経路ＡＧＣとの間で選ばなければならなかった。それはサブ経路ＡＦＣを選択し、それにより、２つの経路ＡＧＣＪＢ及びＡＧＣＨＢを更なる考慮から除外する。その２回目の呼び出しでは、タイブレイク・アルゴリズムは、サブ経路ＡＦＣＪとサブ経路ＡＦＥＪとの間で選ばなければならなかった。それにより、サブ経路ＡＦＣＪが選択され、それにより、第３の経路（ＡＦＥＪＢ）が更なる考慮から除外される。その３回目の呼び出しでは、タイブレイク・アルゴリズムは、サブ経路ＡＧＤＨとサブ経路ＡＧＣＨとの間で選ばなければならなかった。それにより、サブ経路ＡＧＣＨが選択され、それにより、第４の経路（ＡＧＤＨＢ）が更なる考慮から除外されている。最後に、その４回目の呼び出しでは、タイブレイク・アルゴリズムは、サブ経路ＡＦＣＨＢとサブ経路ＡＦＣＪＢとの間で選ばなければならなかった。それにより、第５の経路（すなわち、ＡＦＣＪＢ）が除去され、最終の解決策として、経路ＡＦＣＨＢが選択されている。
【００８２】
負荷分散のための等コストのマルチ経路の選択
多くのネットワーキング・アプリケーションでは、多くの場合、特に、一貫した態様で実現することが可能である場合、いくつかの等コスト経路を使用することが効果的であり得る。タイブレイク・アルゴリズムの２つの変形を使用することにより、ノードの対間の２つの等コスト経路を、それらが存在する場合に使用することが可能である。図１３は、エッジ・ノードＸ及びＹがコア・ノードＡ、Ｂ、Ｃ、及びＤの完全なメッシュに対してそれぞれデュアル・ホーミングされた通常のネットワーキングのシナリオを示す。冗長性のために、ノードＸがコア・ノードＡ及びＢに接続され、ノードＹがノードＣ及びＤに接続されて、エッジ・ノードはそれぞれ、２つのコア・ノードに接続される。コア・ノードはそれぞれ、その他のコア・ノード全てに接続される。例えば、ノードＡはＢ、Ｃ、及びＤに接続される。前述のトポロジの問題は、ノード対間で１つの最短経路のみが使用された場合、通常の状況下で、多くのアクセス容量が浪費されるという点である。複数の等コスト最短経路が２つのノード間で存在している場合、タイブレイク・アルゴリズムの２つの変形を使用して、厳密に２つの経路を一貫して選択するために使用することが可能である。ノード全てによって合意された規則は何れも、等コスト経路間で選択を行うために使用することが可能である。特に好都合な規則の１つには、最小の識別子を有する第１の経路及び最大の識別子を有する第２の経路を選択するというものがある。図１３では、コア・ノードは完全なメッシュ型であるので、エッジ・ノードＸ及びＹ間で４つの等コスト経路、すなわち、（Ｘ，Ａ，Ｃ，Ｙ）、（Ｘ，Ａ，Ｄ，Ｙ）、（Ｘ，Ｂ，Ｃ，Ｙ）、（Ｘ，Ｂ，Ｄ，Ｙ）が存在している。タイブレイク・アルゴリズムの２つの変形はこれらの２つの経路、すなわち、
（Ｘ，ｍｉｎ（Ａ，Ｂ），ｍｉｎ（Ｃ，Ｄ），Ｙ）及び
（Ｘ，ｍａｘ（Ａ，Ｂ），ｍａｘ（Ｃ，Ｄ），Ｙ）
を選択する。
ノード識別子は一意であるため、ｍｉｎ（Ａ，Ｂ）！＝ｍａｘ（Ａ，Ｂ）であり、ｍｉｎ（Ｃ，Ｄ）！＝ｍａｘ（Ｃ，Ｄ）である。これらの２つの経路は最大多様性を有する。これらは、端点のみを共通に有している。図１３では、選択された２つの経路は、（Ｘ，Ａ，Ｃ，Ｙ）及び（Ｘ，Ｂ，Ｄ，Ｙ）である。
異なるホップ数を有する等コスト最短経路のタイブレイク
第２の実施例として上述した局所のタイブレイク手法の４つの変形は以下のルールによって規定される。
【００８３】
１．最小のノード識別子を含むブランチを選択する。
【００８４】
２．最小のノード識別子を含まないブランチを選択する。
【００８５】
３．最大のノード識別子を含むブランチを選択する
４．最大のノード識別子を含まないブランチを選択する。
【００８６】
以上規定したように、４つの変形は全て、等しくない数のノードを経由する等コスト経路の場合に効果的である。しかし、第１の実施例として上述した大局タイブレイク手法は、等コスト経路が、異なる数のノードを経由する場合には効果的でないことがあり得る。前述の状況の１つを図１４に示す。リンクＡ−Ｃ、Ｃ−Ｂ、及びＢ−Ｄそれぞれにはコスト１を割り当て、リンクＡ−Ｂにはコスト２を割り当てる。よって、経路Ａ−Ｃ−Ｂ及びＡ−Ｂはそれぞれ、コスト２を有し、等コスト経路である。
【００８７】
上記手法を使用して、経路Ａ−Ｂの識別子であるＡＢが辞書式に、経路Ａ−Ｃ−Ｂの識別子であるＡＢＣよりも先に順序付けられる。しかし、リンクＢ−Ｄを加えると、経路Ａ−Ｃ−Ｂ−Ｄ及びＡ−Ｂ−Ｄはそれぞれ、コスト３を有し、これらも等コスト経路である。上記手法を使用して、経路Ａ−Ｃ−Ｂ−Ｄの識別子であるＡＢＣＤが辞書式に、ＡＢＤより先に順序付けられる。よって、経路Ａ−Ｃ−Ｂよりも経路Ａ−Ｂを選ぶタイブレイク・アルゴリズムは更に、経路Ａ−Ｂ−Ｄよりも経路Ａ−Ｃ−Ｂ−Ｄを選び、その結果は、上記局所性の特性と一貫していない。
【００８８】
上記大局タイブレイク手法の４つの変形は、以下のルールによって規定される。すなわち、
１．  昇順でノード識別子をソートして経路識別子を形成し、経路識別子を辞書式にソートし、ソートされた経路識別子のうちの識別子が最初の経路を選択する。
【００８９】
２．  昇順でノード識別子をソートして経路識別子を形成し、経路識別子を辞書式にソートし、ソートされた経路識別子のうちで識別子が最後の経路を選択する。
【００９０】
３．  降順でノード識別子をソートして経路識別子を形成し、経路識別子を辞書式にソートし、ソートされた経路識別子のうちで識別子が最初の経路を選択する。
【００９１】
４．  降順でノード識別子をソートして経路識別子を形成し、経路識別子を辞書式にソートし、ソートされた経路識別子のうちで識別子が最後の経路を選択する。
【００９２】
以上規定したように、大局タイブレイク・アルゴリズムの変形３及び４は、等しくない数のノードを経由する等コスト経路の場合に効果的であるが、変形１及び２は常に、一貫した結果をもたらす訳でない。
【００９３】
大局タイブレイク手法の変形１及び２は、等コスト経路の１つの経路識別子が等コスト経路のうちの別のものの経路識別子のプレフィックスである場合には、適切に機能する訳でない。経路選択を行うことが可能になる前に、より短い経路識別子に対して、ノ―ド識別子がなくなるので問題が生じる。
【００９４】
前述の問題に対処するために、より短い経路識別子は、比較する対象の等コスト経路全ての経路識別子が同じ数のノード識別子を有するように、ダミーのノード識別子を加えることによってパディングする（埋める）ことができる。しかし、パディングは、経路識別子を形成するために使用される順序付け基準と一貫しているべきである。
【００９５】
例えば、等コスト経路識別子が全て、同じ長さを有している状態になるまで、他の等コスト経路よりも少ないノードを有する経路の識別子の終端に、何れのノード識別子よりも低い値が与えられるヌル識別子を加えることは当然であるように思われ得る。このことは、例えば、辞書における単語を順序付ける場合に採用されている規則である。しかし、このことは値の昇順での各経路におけるノードの識別子のソートと一貫していない。
【００９６】
各経路におけるノード識別子が、経路識別子を導き出すために値の昇順でソートされた場合、等コスト経路識別子が全て、同じ長さを有する状態になるまで、何れのノード識別子よりも高い値が与えられる特別な識別子を、他の等コスト経路識別子よりも少ないノード識別子を有する経路識別子の終端に加えるべきである。あるいは、何れのノード識別子よりも低い値が与えられるヌル識別子には、等コスト経路識別子が全て、同じ長さを有する状態になるまで、他の等コスト経路識別子よりも少ないノード識別子を有する経路識別子の先端に加え得る。
【００９７】
同様に、各経路におけるノード識別子が、経路識別子を導き出すために値の降順でソートされた場合、等コスト経路識別子全てが同じ長さを有する状態になるまで、何れのノード識別子よりも低い値が与えられるヌル識別子を、他の等コスト経路識別子よりも少ないノード識別子を有する経路識別子の終端に加えるべきである。これは通常の辞書式順序付けである。あるいは、何れのノード識別子よりも高い値が与えられる特別の識別子を、等コスト経路識別子全てが同じ長さを有する状態になるまで、他の等コスト経路識別子よりも少ないノード識別子を有する経路識別子の先端に加え得る。
【００９８】
要約すれば、別々のノードを経由する等コスト経路を扱うよう一般化された大局タイブレイク手法の８つの変形が存在する。
【００９９】
【表１４】
2015520997.tif 000016
経路識別子を導き出すために値の昇順で各経路におけるノード識別子がソートされる場合に所望の結果を実現するやり方がいくつか存在している。例えば、等コスト経路識別子全てが同じ長さを有する状態になるまで特別の識別子をその終端に加えることにより、より少ないノード識別子を有する経路識別子をパディングする代わりに、辞書式に経路識別子を順序付ける前に、より短い経路識別子の終端に、何れのノード識別子よりも高い値が与えられる単一の特定の識別子を加えることで十分である。同じ結果を実現するための更に別にやり方には、第１の順序付け基準として経路識別子の辞書式比較を行うが、辞書式比較により、決定を行う前に経路識別子の１つがなくなった場合にのみ、二次的な順序付け基準としてホップの数を使用するということがある。すなわち、経路識別子の１つが、その他の経路識別子のプレフィックスである場合、より長い識別子を有する経路が、より短い識別子を有する経路の前にくると認められる。等しい長さの文字列の辞書式順序付けは、一次的な順序付け基準として使用され、経路識別子の長さ（すなわち、経路におけるホップの数）は、辞書式比較により、決定を行うことが可能である状態になる前に経路識別子のうちの１つがなくなった場合、二次順序付け基準として使用される。この場合、より大きなホップ数を有する経路が、より小さいホップ数を有する経路より前に来ると認められる。
【０１００】
逆に、等コスト経路識別子が全て、同じ長さを有している状態になるまで、ヌル識別子をその先端に加えることにより、より少ないノード識別子を有する経路識別子をパディングする代わりに、単に、より大きな数のホップを有する経路よりも先に、より小さな数のホップを有する経路を順序付けることにし得る。経路識別子の辞書式順序付けはその場合、同じ数のホップを有する経路の二次的な順序付け基準として使用される。この場合、より小さいホップ数を有する経路が、より大きなホップ数を有する経路より前に来ると認められる。経路識別子の長さが一次的な順序付け基準として使用され、すなわち、より少ないホップを有する経路は常に、より多いホップを有する経路に先行し、辞書式順序付けは、同じ数のホップを有する経路の二次的な順序付け基準として使用される。
【０１０１】
同様に、経路識別子を導き出すために値の降順で各経路におけるノード識別子がソートされる場合に所望の結果を実現するやり方がいくつか存在している。例えば、等コスト経路識別子全てが同じ長さを有する状態になるまでヌル識別子をその終端に加えることにより、より少ないノード識別子を有する経路識別子をパディングする代わりに、辞書式に経路識別子を順序付ける前に、より短い経路識別子の終端に、何れのノード識別子よりも低い値が与えられる単一のヌル識別子を加えることで十分である。同じ結果を実現するための更に別にやり方には、第１の順序付け基準として経路識別子の辞書式比較を行うが、辞書式比較により、決定を行う前に経路識別子の１つがなくなった場合にのみ、二次的な順序付け基準としてホップの数を使用するということがある。すなわち、経路識別子の１つが、その他の経路識別子のプレフィックスである場合、より短い識別子を有する経路が、より長い識別子を有する経路の前にくると認められる。等しい長さの文字列の辞書式順序付けは、一次的な順序付け基準として使用され、経路識別子の長さ（すなわち、経路におけるホップの数）は、辞書式比較が決定を行うことが可能である状態になる前に経路識別子のうちの１つがなくなった場合、二次的な順序付け基準として使用される。この場合、より小さなホップ数を有する経路が、より大きなホップ数を有する経路より前に来ると認められる。
【０１０２】
逆に、等コスト経路識別子が全て、同じ長さを有している状態になるまで、特別の識別子をその先端に加えることにより、より少ないノード識別子を有する経路識別子をパディングする代わりに、単に、より小さい数のホップを有する経路よりも先に、より大きな数のホップを有する経路を順序付けることにし得る。経路識別子の辞書式順序付けが次いで、同じ数のホップを有する経路の二次的な順序付け基準として使用される。この場合、より大きいホップ数を有する経路が、より小さなホップ数を有する経路より前に来ると認められる。経路識別子の長さが一次的な順序付け基準として使用され、すなわち、より多いホップを有する経路は常に、より少ないホップを有する経路に先行し、辞書式順序付けは、同じ数のホップを有する経路の二次的な順序付け基準として使用される。
【０１０３】
異なる数のノードを経由する等コスト経路を扱うよう一般化された大局タイブレイク手法の８つの変形は、経路識別子の長さ、及び経路識別子自体が経路識別子の完全な順序付けを確立するために使用される修正されたいくつかの辞書式順序付けによって表現することが可能である。以下の表３では、一次的な順序付け基準として使用される辞書式順序付けは、従来の辞書式順序付けの限定バージョンである。一方の経路識別子が他方の経路識別子のプレフィクスである場合、決定を行わない。
【０１０４】
【表１５】
2015520997.tif 000017
一次的な順序付け基準が辞書式順序付けであり、共通のプレフィクスを共有する文字列が長さの昇順でソートされる伝統的な辞書式順序付けは、変形３及び４に対応する。変形１及び２は、共通のプレフィックスを共有する文字列が長さの降順でソートされる修正された辞書式順序に対応する。変形５乃至８は、文字列の長さが一次的な順序付け基準であり、辞書式順序付けが、等しい長さの文字列に対する二次的な順序付け基準として使用される、文字列を順序付ける方法に関する。
【０１０５】
一次的なタイブレイク手法としてのホップ数
異なる長さの経路識別子の完全な順序付けをもたらすためのフレームワークを確立すると、第１のレベルのタイブレイカとしてホップ数（すなわち、経路識別子の長さ）を使用する効果を明らかにすることが可能である。場合によっては、経路識別子の長さを使用して行われる最初のタイブレイクは、最終的に選択されたであろう経路を考慮から除外するものでない。すなわち、ホップ数に基づく第１のタイブレイクは、最終結果に影響を及ぼすものでない。しかし、第１のレベルのタイブレイクが、通常選択されたであろう経路を取り除いた場合、新たなタイブレイクの変形が得られる。
【０１０６】
第１のレベルのタイブレイクが、最小数又は最大数のホップを備えた等コスト経路のみを考慮に入れることによって行われた場合、辞書式順序付けが、経路識別子の唯一の順序付け基準であるので、変形１乃至４は変形５乃至８と同じ結果をもたらす。すなわち、変形１乃至４の二次的な基準、及び変形５乃至８の一次的な基準は全て、機能しなくなる。タイブレイクに入力される等コスト経路の識別子は全て、同じ最大長又は最小長を共有するからである。変形５乃至８は常に、最小数のホップを有する経路を選択し、したがって、最小数のホップを有する等コスト経路を選択する第１のレベルのタイブレイクによって影響を受けない。これらは、上記第１の実施例の２つの変形に対応する。逆に、変形６乃至７の何れか一方が続く最小数のホップを備えた等コスト経路を選択することにより、第１のレベルのタイブレイクが行われた場合、第１の実施例の他の２つの変形が得られる。同様に、変形６乃至７は常に、最大数のホップを有する経路を選択し、したがって、最大数のホップを有する等コスト経路を選択する第１のレベルのタイブレイクによって影響を受けない。
【０１０７】
要約すれば、８つの変形のうちの最初の２つは、上記第１の実施例に変形でない。変形３及び４は、従来の辞書式順序付けが、等しくない長さの経路識別子に適用される第１の実施例の変形に対応する。最後の４つの変形は、最大数のホップを有する経路のみを選択することにより、第１のレベルのタイブレイクが行われる第１の実施例の変形に数学的に等価である。以下の大局タイブレイクの１２の変形は、ノード識別子及び経路識別子の順序付け基準によって表現することが可能である。
【０１０８】
上記表４では、一次的な順序付け基準として使用される辞書式順序付けは、従来の辞書式順序付けの限定バージョンである。一方の経路識別子が他方の経路識別子のプレフィクスである場合、決定を行わない。この場合、経路識別子の長さに基づいた二次的な順序付け基準を呼び出さなければならない。
【０１０９】
【表１６】
2015520997.tif 000018
大局タイブレイクの４つの変形の各群は、局所タイブレイクの４つの変形に対応する。大局タイブレイク変形１乃至４は、等コスト最短経路が全て、それらのホップ数にかかわらず、考慮に入れられる場合に対応する。変形５乃至８は、最小数のホップを有する等コスト最短経路のみが最短経路とみなされる場合に対応する。変形９乃至１２は、最大数のホップを有する等コスト最短経路のみが最短経路とみなされる場合に対応する。
【０１１０】
説明を明瞭にするために、上記説明は、文字列の比較が左から右に行われる、経路識別子の辞書式順序付け及びその変形に基づく。文字列の比較が右から左に行われる逆辞書式順序付けにより、必要に応じて変更を加えて、同じタイブレイク変形を説明することが可能である。実際に、考えられる経路識別子全ての曖昧でない順序付けをもたらす、経路識別子を順序付ける何れの方法も本発明の趣旨から逸脱しない限り、使用することが可能である。
【０１１１】
本発明は、本明細書及び特許請求の範囲に記載の実施例に限定されず、上記実施例は、本発明の範囲から逸脱しない限り、修正又は変形し得る。  
【図１】
2015520997.tif 000019
【図２】
2015520997.tif 000020
【図３】
2015520997.tif 000021
【図４】
2015520997.tif 000022
【図５】
2015520997.tif 000023
【図６】
2015520997.tif 000024
【図７】
2015520997.tif 000025
【図８】
2015520997.tif 000026
【図９】
2015520997.tif 000027
【図１０】
2015520997.tif 000028
【図１１】
2015520997.tif 000029
【図１２】
2015520997.tif 000030
【図１３Ａ】
2015520997.tif 000031
【図１３Ｂ】
2015520997.tif 000032
【図１４】
2015520997.tif 000033
【国際調査報告】
2015520997.tif 000034
2015520997.tif 000035