(57)【要約】  ノード毎のECMPパス判定アルゴリズムで使用される次ホップ計算関数が提供される。これは、等コストマルチパス・パケット交換ネットワークにおいてネットワークリソースの間のトラヒックの拡散を増加させる。一実施例では、パケットは、ネットワークの各ECMPノードに対して、固有の鍵マテリアルで鍵が掛けられたエントロピー保存マッピング関数を実装させることにより、出力ポートにマッピングされる。固有の鍵マテリアルは、所与の入力が異なるノードで異なる出力にマッピングされるように、各ノードが共通の関数プロトタイプからそれぞれのマッピング関数をインスタンス化することを可能にする。マッピング関数の出力のセットが候補出力ポートの数より大きい場合、マッピング関数の鍵が掛けられた出力をECMPポートの候補のセットに変換するために、圧縮関数が使用される。
2014509145.tif 000002
【特許請求の範囲】
【請求項１】
パケットネットワークにおいてノードにより実質的に等コストのパスの間でパス選択を実行する方法であって、
前記ノードにより、固有の鍵マテリアルで鍵が掛けられたノード特有のエントロピー保存マッピング関数を可能な入力フロー識別子のセットに適用し、フロー識別子のノード特有の再編成された系列を取得するステップと、
前記フロー識別子のノード特有の再編成された系列を候補出力ポートのセットに割り当てるために圧縮関数を適用するステップと
を有する方法。
【請求項２】
前記パケットネットワークの各ノードは、分散等コストマルチパス（ECMP）処理を実装するために、独立してパス選択を実行する、請求項１に記載の方法。
【請求項３】
前記分散ECMP処理は、前記パケットネットワークの各ノードが、入力ポートで受信したパケット毎に、宛先への前記パケットネットワークを通じたパスにおける次のノードに送信するために、前記パケットを出力する適切な出力ポートを判定するように実装される、請求項２に記載の方法。
【請求項４】
ノード特有のエントロピー保存マッピング関数は、プロトタイプのエントロピー保存マッピング関数と前記固有の鍵マテリアルとにより完全に指定される、請求項１に記載の方法。
【請求項５】
前記プロトタイプのエントロピー保存マッピング関数は、前記パケットネットワークの複数のノードで共通である、請求項４に記載の方法。
【請求項６】
前記固有の鍵マテリアルと前記プロトタイプのエントロピー保存マッピング関数との認識により、前記パケットネットワークでのフロー割り当てが決定論的になるように、所与の入力フローIDについての出力パスの選択が判定可能になる、請求項４に記載の方法。
【請求項７】
前記ノード特有のエントロピー保存マッピング関数は、所与のフローIDに関連するパケットについて常に同じ出力パスを選択するように一貫している、請求項４に記載の方法。
【請求項８】
前記ノード特有のエントロピー保存マッピング関数は、同じ入口ノードから同じ出口ノードへの転送を必要とする異なるフローIDを有するパケットを、フローIDに従って、入口ノードと出口ノードとの間の異なる等コストパスの間で分配させる、請求項４に記載の方法。
【請求項９】
前記ノード特有のエントロピー保存マッピング関数は、フローIDを出力ポートにほぼ均一に分配する、請求項４に記載の方法。
【請求項１０】
前記圧縮関数は、前記パケットネットワークの複数のノードで共通である、請求項１に記載の方法。
【請求項１１】
前記ノード特有のエントロピー保存マッピング関数は、異なる入力のセットが前記異なる入力のセットと同じ数の要素を有する異なる出力のセットにマッピングされる全単射である、請求項１に記載の方法。
【請求項１２】
出力への入力のマッピングは、１対１である、請求項１１に記載の方法。
【請求項１３】
前記ノード特有のエントロピー保存マッピング関数は、異なる入力のセットが可能な異なる出力のより大きいセットにマッピングされ、異なる入力の数に対応する複数の異なる出力のみが使用される単射である、請求項１に記載の方法。
【請求項１４】
出力への入力のマッピングは、１対１である、請求項１３に記載の方法。
【請求項１５】
前記ノード特有のエントロピー保存マッピング関数は、指数に基づくマッピングである、請求項１に記載の方法。
【請求項１６】
前記指数に基づくマッピング関数は、冪剰余である、請求項１５に記載の方法。
【請求項１７】
前記指数に基づくマッピング関数は、f(x)=gx  mod  pの形式を有する、請求項１６に記載の方法。
【請求項１８】
前記冪剰余は、各ノードで異なる原始根を使用して各ノードで鍵が掛けられ、pが素数冪であり、gは原始根である、請求項１７に記載の方法。
【請求項１９】
前記ノード特有のエントロピー保存マッピング関数は、線形合同マッピング関数と組み合わされた指数に基づくマッピング関数である、請求項１に記載の方法。
【請求項２０】
前記固有の鍵マテリアルは、前記パケットネットワークに実装されたルーティングシステムを使用して広告される、請求項１に記載の方法。
【請求項２１】
前記固有の鍵マテリアルは、IS-ISシステム識別子、ノードMACアドレス、提供された値、及びこれらの組み合わせのうち少なくとも１つである、請求項１に記載の方法。
【請求項２２】
パケット交換ネットワークを通じたパスでパケットを転送する方法であり、各パケットは、宛先アドレスとフロー識別子とを有し、前記パケット交換ネットワークは、ノードの少なくとも１つの対の間に複数の実質的に等コストのパスを有し、それぞれの実質的に等コストのパスは、前記実質的に等コストのパス上の各ノードにおいて対応する候補出力ポートを有する方法であって、
ノードで分岐する複数の等コストのパスを有する宛先アドレスを有するパケットについて、
前記パケットの前記宛先アドレスについて各パケットの前記フロー識別子を候補出力ポートの１つにマッピングすることにより、前記ノードで候補出力ポートを選択するステップであり、前記マッピングは、全ての可能なフロー識別子について、関数が同じフロー識別子に対してほとんど又は全ての他のネットワークノードの対応する関数により生成された値とは異なる値を生成するように、前記ノードに本質的に固有である第１の関数を有するステップを有し、
前記関数の出力セットは、候補出力ポートの数より大きく、前記マッピングは、前記第１の関数の前記出力セットを前記候補出力ポートに制限されたセットにマッピングする圧縮関数を更に有する方法。
【請求項２３】
前記パケットネットワークの各ノードは、分散等コストマルチパス（ECMP）処理を実装するために、パケット毎に候補出力ポートを選択するステップを独立して実行する、請求項２２に記載の方法。
【請求項２４】
前記第１の関数は、線形合同マッピング関数と組み合わされた指数に基づくマッピングである、請求項２２に記載の方法。
【請求項２５】
前記第１の関数は、プロトタイプのエントロピー保存マッピング関数と固有の鍵マテリアルとにより完全に指定される、請求項２２に記載の方法。
【請求項２６】
前記プロトタイプのエントロピー保存マッピング関数は、前記パケットネットワークの複数のノードで共通である、請求項２５に記載の方法。
【請求項２７】
前記固有の鍵マテリアルと前記プロトタイプのエントロピー保存マッピング関数との認識により、前記パケットネットワークでのフロー割り当てが決定論的になるように、所与の入力フローIDについての出力パスの選択が判定可能になる、請求項２５に記載の方法。
【請求項２８】
前記第１の関数は、異なる入力のセットが前記異なる入力のセットと同じ数の要素を有する異なる出力のセットにマッピングされる全単射である、請求項２２に記載の方法。
【請求項２９】
前記第１の関数は、異なる入力のセットが可能な異なる出力のより大きいセットにマッピングされ、異なる入力の数に対応する複数の異なる出力のみが使用される単射である、請求項２２に記載の方法。
【請求項３０】
前記圧縮関数は、前記パケットネットワークの複数のノードで共通である、請求項２２に記載の方法。
【請求項３１】
パケット交換ネットワークを通じたパスでパケットを転送するシステムであり、各パケットは、宛先アドレスとフロー識別子とを有し、前記パケット交換ネットワークは、ノードの少なくとも１つの対の間に複数の実質的に等コストのパスを有し、それぞれの実質的に等コストのパスは、前記実質的に等コストのパス上の各ノードにおいて対応する候補出力ポートを有するシステムであって、
少なくとも１つのプロセッサと、
前記プロセッサを前記パケット交換ネットワークに結合するように動作可能な少なくとも１つのネットワークインタフェースと、
前記少なくとも１つのプロセッサにより実行される命令を格納するように動作可能なメモリと
を有し、
前記命令は、ノードで分岐する複数の等コストのパスを有する宛先アドレスを有するパケットについて、
前記パケットの前記宛先アドレスについて各パケットの前記フロー識別子を候補出力ポートの１つにマッピングすることにより、前記ノードで候補出力ポートを選択するように実行可能であり、前記マッピングは、全ての可能なフロー識別子について、関数が同じフロー識別子に対してほとんど又は全ての他のネットワークノードの対応する関数により生成された値とは異なる値を生成するように、前記ノードに本質的に固有である第１の関数を有し、
前記関数の出力セットは、候補出力ポートの数より大きく、前記マッピングは、前記第１の関数の前記出力セットを前記候補出力ポートに制限されたセットにマッピングする圧縮関数を更に有するシステム。
【請求項３２】
前記パケットネットワークの各ノードは、分散等コストマルチパス（ECMP）処理を実装するために、パケット毎に候補出力ポートを選択するステップを独立して実行する、請求項３１に記載のシステム。
【請求項３３】
前記第１の関数は、線形合同マッピング関数と組み合わされた指数に基づくマッピングである、請求項３１に記載のシステム。
【請求項３４】
前記第１の関数は、プロトタイプのエントロピー保存マッピング関数と固有の鍵マテリアルとにより完全に指定される、請求項３１に記載のシステム。
【請求項３５】
前記プロトタイプのエントロピー保存マッピング関数は、前記パケットネットワークの複数のノードで共通である、請求項３４に記載のシステム。
【請求項３６】
前記固有の鍵マテリアルと前記プロトタイプのエントロピー保存マッピング関数との認識により、前記パケットネットワークでのフロー割り当てが決定論的になるように、所与の入力フローIDについての出力パスの選択が判定可能になる、請求項３４に記載のシステム。
【請求項３７】
前記第１の関数は、異なる入力のセットが前記異なる入力のセットと同じ数の要素を有する異なる出力のセットにマッピングされる全単射である、請求項３１に記載のシステム。
【請求項３８】
前記第１の関数は、異なる入力のセットが可能な異なる出力のより大きいセットにマッピングされ、異なる入力の数に対応する複数の異なる出力のみが使用される単射である、請求項３１に記載のシステム。
【請求項３９】
前記圧縮関数は、前記パケットネットワークの複数のノードで共通である、請求項３１に記載のシステム。
【請求項４０】
パケット交換ネットワークを通じたパスでパケットを転送するネットワークエレメントであり、各パケットは、宛先アドレスとフロー識別子とを有し、前記パケット交換ネットワークは、前記ネットワークエレメントと少なくとも１つの他のノードとの間に複数の実質的に等コストのパスを有し、それぞれの実質的に等コストのパスは、前記ネットワークエレメントにおいて対応する候補出力ポートを有するネットワークエレメントであって、
少なくとも１つのプロセッサと、
前記プロセッサを前記パケット交換ネットワークに結合するように動作可能な少なくとも１つのネットワークインタフェースと、
前記少なくとも１つのプロセッサにより実行される命令を格納するように動作可能なメモリと
を有し、
前記命令は、前記ネットワークエレメントで分岐する複数の等コストのパスを有する宛先アドレスを有するパケットについて、
前記パケットの前記宛先アドレスについて各パケットの前記フロー識別子を候補出力ポートの１つにマッピングすることにより、前記ネットワークエレメントで候補出力ポートを選択するように実行可能であり、前記マッピングは、全ての可能なフロー識別子について、関数が同じフロー識別子に対してほとんど又は全ての他のネットワークエレメントの対応する関数により生成された値とは異なる値を生成するように、前記ネットワークエレメントに本質的に固有である第１の関数を有し、
前記関数の出力セットは、候補出力ポートの数より大きく、前記マッピングは、前記第１の関数の前記出力セットを前記候補出力ポートに制限されたセットにマッピングする圧縮関数を更に有するネットワークエレメント。
【請求項４１】
前記パケットネットワークの各ネットワークエレメントは、分散等コストマルチパス（ECMP）処理を実装するために、パケット毎に候補出力ポートを選択するステップを独立して実行する、請求項４０に記載のネットワークエレメント。
【請求項４２】
前記第１の関数は、線形合同マッピング関数と組み合わされた指数に基づくマッピングである、請求項４０に記載のネットワークエレメント。
【請求項４３】
前記第１の関数は、プロトタイプのエントロピー保存マッピング関数と固有の鍵マテリアルとにより完全に指定される、請求項４０に記載のネットワークエレメント。
【請求項４４】
前記プロトタイプのエントロピー保存マッピング関数は、前記パケットネットワークの複数のノードで共通である、請求項４３に記載のネットワークエレメント。
【請求項４５】
前記固有の鍵マテリアルと前記プロトタイプのエントロピー保存マッピング関数との認識により、前記パケットネットワークでのフロー割り当てが決定論的になるように、所与の入力フローIDについての出力パスの選択が判定可能になる、請求項４３に記載のネットワークエレメント。
【請求項４６】
前記第１の関数は、異なる入力のセットが前記異なる入力のセットと同じ数の要素を有する異なる出力のセットにマッピングされる全単射である、請求項４０に記載のネットワークエレメント。
【請求項４７】
前記第１の関数は、異なる入力のセットが可能な異なる出力のより大きいセットにマッピングされ、異なる入力の数に対応する複数の異なる出力のみが使用される単射である、請求項４０に記載のネットワークエレメント。
【請求項４８】
前記圧縮関数は、前記パケットネットワークの複数のノードで共通である、請求項４０に記載のネットワークエレメント。
【発明の詳細な説明】
【技術分野】
【０００１】
この出願は、2011年2月17日に“Next  Hop  Computation  Functions  For  Equal  Cost  Multi-Path  Packet  Switch  Networks”という題で出願された米国仮出願第61/443,993号の優先権を主張し、この内容を援用する。
【０００２】
本発明は、パケット交換ネットワークに関し、特にパケット交換ネットワークにおける等コストパスの次ホップ計算関数に関する。
【背景技術】
【０００３】
Ethernetネットワークアーキテクチャでは、ネットワークに接続されたデバイスは、いずれかの所与の時間に共有通信パスを使用する機能を競合する。ネットワークセグメントを相互接続するために複数のブリッジ又はノードが使用される場合、同じ宛先への複数の潜在的なパスがしばしば存在する。このアーキテクチャの利点は、ブリッジ間でのパスの冗長性を提供し、キャパシティ（収容力）が更なるリンクの形式でネットワークに追加されることを可能にする点にある。しかし、ループが形成されることを回避するために、一般的には、トラヒックがネットワークでブロードキャストされる方法を制限するために、スパニングツリーが使用されている。ルートはフレームをブロードキャストして応答を待機することにより学習され、また、要求及び応答の双方がスパニングツリーに従うため、全てではなくてもほとんどのトラヒックは、スパニングツリーの一部であるリンクに従う。このことは、スパニングツリーに存在するリンクの過剰利用をもたらし、スパニングツリーの一部ではないリンクの未利用をもたらす。スパニングツリーは、他の形式のパケット交換ネットワークにも同様に使用されることがある。
【０００４】
スパニングツリーを使用して制御されるネットワークに固有の制限のいくつかを克服するため、パケットネットワークのノードの動作を制御するためにリンクステートプロトコル制御プレーンが使用可能である。パケットネットワークを制御するためにリンクステートプロトコルを使用することは、ループのない最短パスの転送により、ネットワークキャパシティの効率的な使用を可能にする。トランスペアレントなブリッジと組み合わせてスパニングツリープロトコル（STP：Spanning  Tree  Protocol）を使用するのではなく、リンクステートプロトコル制御のパケットネットワークでは、メッシュネットワークを形成するブリッジは、各ノードがネットワークトポロジの同期したビューを有することができるように、リンクステート広告を交換する。
【０００５】
これは、リンクステートルーティングシステムの周知の機構を介して実現される。リンクステートルーティングプロトコルの２つの例は、OSPF（Open  Shortest  Path  First）とIS-IS（Intermediate  System  to  Intermediate  System）とを含むが、他のリンクステートルーティングプロトコルも同様に使用される可能性がある。リンクステートルーティングシステムでは、ネットワークのブリッジは、ネットワークトポロジの同期したビューを有し、必要なユニキャスト及びマルチキャスト接続を認識しており、ネットワークのブリッジのいずれかの対の間で最短パスの接続を計算することができ、ネットワークの共通のビューに基づいて計算された最短パスに従って転送情報ベース（FIB：forwarding  information  base）を個々に生成することができる。
【０００６】
リンクステートプロトコル制御のパケットネットワークは、Ethernetブリッジによる接続と同等のものを提供するが、フラッディング（flooding）及び学習によってではなく、ネットワークエレメントのFIBの構成を介してこれを実現する。全てのノードが同期したネットワークビューで自分の役目を計算し、自分のFIBを生成した場合、ネットワークは、一式のピアブリッジ（peer  bridge）からいずれか所与のブリッジまでループのないユニキャストツリーを有し、ブリッジでホストされたサービスインスタンス毎に、いずれか所与のブリッジから同じ一式のピアブリッジまで合同の（congruent）ループのないポイント・ツー・マルチポイント（p2mp）マルチキャストツリーを有する。その結果は、スパニングツリーのルートブリッジ（root  bridge）を通過することに制限されない所与のブリッジの対の間のパスになり、全体の結果は、メッシュの接続の幅をより良く利用することができるようになる。IEEE（Institute  of  Electrical  and  Electronics  Engineers）標準802.1aqは、この技術の１つの実装を指定している。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ネットワークのノードの間に複数の等コストパスが存在する場合が存在する。特に、相互接続されたスイッチの非常に密集したメッシュが存在するデータセンタでは、送信元と宛先との間又は送信元と宛先との間のパスに沿った中間ノードの間に複数の等コストパスが存在する可能性がある。ノードの対の間に複数の等コストパスが存在する場合、ネットワークリソースのより良い利用及び／又はより良いネットワークスループットを得るために、利用可能なパスの間でトラヒックを分配することが望ましいことがある。等コストマルチパス（ECMP：Equal  Cost  Multi-Path）ルーティングは、利用可能な実質的に等コストのパスの間でトラヒックを分配するための、パケット交換ネットワークを通じてパケットを転送する処理である。
【０００８】
ECMPルーティングは、トラヒックがネットワークに入るため、ヘッドエンドノード（head-end  node）で実装されてもよく、ネットワークの各ノードに分散的に実装されてもよい。ECMPルーティングが分散的に実装される場合、宛先までの複数の等コストパスを有する各ノードは、ネットワークのトラヒックを分配するために、複数の利用可能なパスにトラヒックの異なるフローをローカルで指示する。不都合なことに、分散されたノード毎のECMPが実装された場合、ネットワークキャパシティの最適な利用は実現することが困難になる。
【０００９】
例えば、図１は、パケットネットワークにおける典型的なトラヒック分配パターンを示している。ネットワークの各ノードは、利用可能なパスから選択するために、同じECMP計算関数を使用する。図１に示す例では、スイッチI-Lのうち１つに向かうトラヒックは、スイッチA-Dのいずれかに到達してもよい。目的は、ネットワークを通じてトラヒックを転送するために多数のパスが使用されるように、ネットワークにトラヒックを拡散させることである。不都合なことに、図１に示すように、各ノードでの同じ次ホップ計算関数の使用は、ネットワークの或る領域で非常に悪いトラヒック分配の結果になる可能性がある。特に、フローIDの規則性又はパターンは、トラヒックが集中するようになることをもたらし、ネットワークの利用可能なパスの間で非効率的なトラヒックの拡散を生じる可能性がある。
【課題を解決するための手段】
【００１０】
以下の概要及びこの願書の最後に示された要約は、以下の詳細な説明において説明するいくつかの概念を紹介するために提供されている。概要及び要約の部分は包括的ではなく、以下に示す特許請求の範囲に示された保護可能な対象物の範囲を記述することを意図しない。
【００１１】
ノード毎のECMPパス判定アルゴリズムで使用される次ホップ計算関数が提供される。これは、等コストマルチパス・パケット交換ネットワークにおいてネットワークリソースの間のトラヒックの拡散を増加させる。一実施例では、パケットは、ネットワークの各ECMPノードに対して、固有の鍵マテリアル（key  material）で鍵が掛けられたエントロピー保存マッピング関数を実装させることにより、出力ポートにマッピングされる。固有の鍵マテリアルは、所与の入力が異なるノードで異なる出力にマッピングされるように、各ノードが共通の関数プロトタイプからそれぞれのマッピング関数をインスタンス化することを可能にする。マッピング関数の出力のセット（集合）が候補出力ポートの数より大きい場合、マッピング関数の鍵が掛けられた出力をECMPポートの候補のセットに変換するために、圧縮関数が使用される。
【図面の簡単な説明】
【００１２】
【図１】例示的なパケット交換ネットワークの機能ブロック図
【図２】例示的なパケット交換ネットワークの機能ブロック図
【図３Ａ】ECMPルーティングを実装するためのノードにおける異なるマッピングの適用例
【図３Ｂ】ECMPルーティングを実装するためのノードにおける異なるマッピングの適用例
【図４】例示的なネットワークエレメントの機能ブロック図
【図５】ECMPルーティングを実装するために使用され得る処理を示すフローチャート
【発明を実施するための形態】
【００１３】
本発明の態様は、特に特許請求の範囲に示されている。本発明は、単なる例として図面に示されている。図面において同様の参照符号は同様の要素を示す。図面は、例示のみの目的で本発明の様々な実施例を開示しており、本発明の範囲を制限することを意図するものではない。明瞭にするために、各図面において全ての構成要素にラベルが付けられているとは限らない。
【００１４】
図１は、同じ次ホップ計算関数がネットワークの各ホップで使用されるサンプル的なネットワークを示している。図１の下から上へのトラヒックフロー及び各ノードのトラヒックは、ノードにより４つの可能な出力ポートのうち１つにローカルでマッピングされる。スイッチの下及び中間の行の間で、トラヒックは均一に分配され、２つの行を接続するメッシュの各リンクが利用される。しかし、スイッチの中間の行は、上の行に接続するリンクの全てを利用することができない。中間の行の最も左のスイッチは、最も左の出力ポートにマッピングされるトラヒックのみを受信している。同様に、その行の第iのスイッチは、直前の段階で第iのポートにマッピングされるトラヒックのみを受信する。この不健全な動作は、各ノードにおける同じマッピング関数の使用と、この例で使用されるメッシュの規則性の性質とによりもたらされる。しかし、この種類の非常に規則的なネットワーク構造は、必ずしも珍しいわけではない。特に、データセンタは、スイッチの行が非常に規則的なメッシュにより相互接続された図１に示すようなものと同様の規則的な構造を使用する傾向にある。
【００１５】
図２は、利用可能なリンクの間でトラヒックをネットワークに更に均一に分配するために、交互のECMPパス選択処理が実装された図１のネットワークを示している。簡潔にするために、DA=Jを有するトラヒックのみが図２に示されている。この例では、トラヒックは、ノードA、B、C及びDのいずれかに到達してもよい。これらのノードのそれぞれは、ノードE、F、G及びHのいずれかに接続するリンクを選択してもよい。そのノードは、トラヒックをノードJに転送する。図２と図１とを比較することにより、トラヒックが双方の層のノードを相互接続するリンクに非常に均一に分配されることが明らかである。図２に示す例のようなトラヒックパターンは、ネットワークのノードが異なるECMPパス選択アルゴリズムを使用する分散ECMPシステムで実現することが容易である。特に、独立した次ホップ選択アルゴリズムの使用は、パスIDに関連するパターンがパス選択において強い相関関係を有する可能性を低減するため、ネットワークにおけるトラヒックの広範囲にわたる分配を生じる。
【００１６】
例えば図２に示すようなトラヒックの拡散を実装するために、パケット交換ネットワークの各ノードが、入力ポートで受信したパケット毎に、宛先までネットワークを通じたパスで次ノードに送信するためにパケットを出力する適切な出力ポートを判定しなければならない分散ECMP処理が使用される。ECMPを実装するために、各ノードは、受信したパケットについて適切な転送の判定を行わなければならない。トラヒックの拡散を実現するために、ノードにより使用されるアルゴリズムは、何らかランダム化されなければならない。しかし、ネットワークトラヒックがシミュレーション及び予測されることを可能にするために、アルゴリズムは決定論的であるべきである。更に、個々のフローに関連するパケットは、パケットのフローが意図した宛先に向かって同じポートから出力されることを可能にするため、同じ出力ポートに一貫して割り当てられるべきである。
【００１７】
実施例によれば、ネットワークの各ノードでトラヒックを分配するために、並び替え（permutation）が使用される。並び替えは、トラヒックの特定のフローがネットワークを通じてルーティングされる方式が事前に予測され得るように、決定論的であるアルゴリズムを使用して生成される。しかし、並び替えは、入力の刺激（stimulus）における小さい差を前提とした疑似ランダムな出力動作を用いて、利用可能なリンクの間での良好なトラヒックの拡散を可能にするように設計される。更に、選択されたアルゴリズムは、本質的にローカルに固有の関数がECMPの次ホップを選択するために使用されることを可能にするために、ネットワークの各ノードがローカルで固有の鍵の値と共に同じアルゴリズムを使用するように設計される。パケットネットワークにおけるトラヒックのレイヤ２（Ethernet）スイッチングに焦点を当てた実施例について説明するが、トラヒックの拡散を実装するために説明される技術は、ECMPルーティングを使用したレイヤ３ネットワークにも有用になり得る。
【００１８】
一実施例では、入力スイッチの入力ポートで受信した各パケットは、フロー識別子（Flow  ID：Flow  Identifier）を割り当てられる。典型的には、フローIDは、IP送信元アドレス（SA：Source  Address）、IP宛先アドレス（DA：Destination  Address）、プロトコル識別子、送信元及び宛先ポート、並びに場合によってはパケットのヘッダの他の内容のように、カスタマMACヘッダ（C-MAC：customer  MAC  header）又はインターネットプロトコル（IP：Internet  Protocol）ヘッダの情報に基づいてもよい。或いは、フローIDは他の方法でパケットに割り当てられてもよい。例えば、管理システムは、特定のネットワークパスの健康状態及び性能を監視するために、管理パケットにフローIDを割り当ててもよい。フローIDは、入口スイッチ（ingress  switch）でパケットヘッダにカプセル化され、出口スイッチ（egress  switch）でパケットヘッダからカプセル化解除されてもよい。フローIDは、12ビットのVLAN識別子（B-VID）フィールド、24ビットのサービス識別子（I-SID）フィールド、新たな（まだ指定されてない）フィールド、又はこれらのフィールドのいずれか一部若しくは組み合わせで伝達されてもよい。特定の実装に応じて、フローIDの生成、配布及び／又は再生成を実装する複数の方法が実装されてもよい。
【００１９】
同じフローIDを有するパケットが、同じ中間スイッチを介して、すなわち、ネットワークを通じて同じパスを介して、同じ入口スイッチから同じ出口スイッチに転送されることを必要とする複数のプロトコルが存在する。このようにパケットを送信させることは、パケットの順序誤りの受信を回避し、その他にもネットワークでのデータの送信を容易にする。従って、ノードがECMPを実行する場合、宛先への等コストパスの間を選択するためにノードに実装されるアルゴリズムは、所与のフローIDに関連するパケットでは一貫して動作すべきである（すなわち、同じ出力パスを選択するべきである）。
【００２０】
しかし、ECMPネットワークでは、選択すべき入口スイッチから出口スイッチへの複数の実質的に等コストのパスが存在する場合、同じ入口スイッチから同じ出口スイッチへの転送を必要とする異なるフローIDを有するパケットは、入口スイッチと出口スイッチとの間の異なる等コストパスの間で、フローIDに従って分配されるべきである。
【００２１】
実施例によれば、実質的に等コストのパスの間で異なるフローIDを有するパケットのこの分配を実現するために、ネットワークの各スイッチは、以下により、特定のDA及び特定のフローIDを伝達する受信パケットの適切な出力ポートを判定する。
1.DAを、DAへの最小コストのパスのセットに対応する候補出力ポートのセットにマッピングする。唯一の最小コストのパスが存在する場合、唯一の候補出力ポートが存在する。DAへの複数の実質的に等コストの最小コストパスが存在する場合、複数の候補出力ポートが存在してもよい。
2.少なくともDAが複数の候補出力ポートに対応する場合、特定のスイッチに鍵が掛けられたマッピング関数を使用して、フローIDを候補出力ポートの１つにマッピングする。マッピングは、各スイッチにおいて、出力ポートへのフローIDの分配がほぼ均一に分配されるようなものであるべきである。唯一の対応する候補出力ポートが存在するDAを有するパケットについては、このステップは必要ない点に留意すべきである。パケットは、単にその出力ポートにルーティングされてもよい。
【００２２】
実施例によれば、ノードにおける候補出力ポートへのフローIDのマッピングは、エントロピー保存疑似ランダムマッピング（entropy-preserving  pseudo-random  mapping）（すなわち、マッピングの異なる出力の数は、異なる入力の数と等しくなるべきである）と、多数のマッピングされたフローIDを小数の候補出力ポートにマッピングする圧縮関数とを組み合わせることにより生成されてもよい。このエントロピー保存マッピングは、異なる入力のセットが異なる入力のセットと同じ数の要素を有する異なる出力のセットにマッピングされる全単射関数（bijective  function）でもよい。或いは、エントロピー保存マッピングは、異なる入力のセットが可能な異なる出力のより大きいセットにマッピングされる単射関数（injective  function）でもよい。この場合、異なる入力の数に対応する複数の異なる出力のみが使用される。いずれにしても、異なる出力への異なる入力のマッピングは、１対１である。
【００２３】
図３Ａ及び３Ｂは、８個の出力（A-H）への８個の入力（1-8）のマッピング例である。図３Ａに示すように、入力を出力にマッピングするための複数の方法が存在する。実施例によれば、各ノードは、フロー識別子を出力の候補セットにマッピングするためにマッピング関数を使用する。これは、事実上、フローIDの再編成された系列を生成する。このようにフロー識別子をマッピングすることは、フロー識別子をランダム化し、ネットワークのフローへのフロー識別子の割り当てに関連するいずれかのパターンを低減又は除去する。一実施例では、各ノードは、プロトタイプのマッピングを取得し、鍵の値をマッピングに適用し、ノードにおいて固有のマッピングをインスタンス化する。例えば、各ノードは、ノードで固有であるフローIDの再編成された系列の循環シフトを生成するために、乗算関数において鍵の値を使用してもよい。図３Ａは、第１の鍵を使用してプロトタイプのマッピングから導出された第１のマッピングを使用した入力1-8から出力A-Hへのマッピングを示しており、図３Ｂは、第２の鍵を使用して同じプロトタイプから導出された第２のマッピングを使用した入力1-8から出力A-Hへのマッピングを示している。図３Ａ及び３Ｂの比較で示すように、異なる鍵の使用は、異なる入力値（フローID）が異なる出力値にマッピングされることを生じる。
【００２４】
トラヒックの集約とフローの集中を回避するために、実施例によれば、マッピングは、２つのスイッチが同じエントロピー保存マッピングを有さないようにすべきである。これは、固有の鍵を各スイッチに割り当て、各スイッチに固有である鍵が掛けられたマッピング関数を使用してフローIDをマッピングすることにより、構成されてもよい。鍵は各スイッチで異なり、また、マッピングを実行するためにスイッチにより使用される基礎となるアルゴリズムは、鍵及びプロトタイプのエントロピー保存マッピング関数により完全に指定されるため、鍵が掛けられたマッピング関数は、スイッチに固有になる。これにより、ネットワークのトラヒックのフローが判定可能になり、また、出力ポートのセットへの特定のフローIDのマッピングが各スイッチで使用される異なる鍵のためネットワークの各スイッチで異なることが可能になる。
【００２５】
可能なフローIDの数は、ネットワークのECMPパスの数をかなり超えてもよいことが想定され得る。例えば、フローIDが12ビットの長さである場合、4096のオーダーの可能なフローIDが存在することが想定される。これらは、ネットワークのフローに割り当てられてもよく、4096の値の異なるセットへのマッピング関数を使用してマッピングされる。しかし、所与の宛先への4096個の等コストパスが存在する可能性は低い。従って、エントロピー保存マッピング関数は、候補出力ポートの数より大きい数の出力を生成するため、マッピングは、異なる出力の数を候補出力ポートの数に等しくなるように圧縮する圧縮関数を更に有する。圧縮関数は、プロトタイプのマッピングの疑似ランダム性を保持するようになるべきである。各ノードのエントロピー保存マッピング関数は、そのノードに関連する値に少なくとも部分的に基づくため、全てのノードに共通する標準的な圧縮関数の使用は、エントロピー保存マッピング関数の使用に関連するリンク分配のランダム性を維持する。
【００２６】
図３Ａ及び３Ｂは、マッピングの出力A-Hのそれぞれを３つの出力ポートのセットにマッピングするために同じ圧縮関数が使用される例を示している。図３Ａ及び３Ｂに示すように、マッピング関数の出力A、E及びHはポート1に圧縮され、マッピング関数の出力B及びFはポート2に圧縮され、マッピング関数の出力C、D及びGはポート3に圧縮される。従って、図３Ａ及び３Ｂの双方において、出力値のセットを出力ポートの候補セットに低減するために、同じ圧縮が使用されている。しかし、マッピングの間に導入されたエントロピーのため、共通の圧縮関数の使用は、入力（1-8）の異なるセットが出力ポートのそれぞれにマッピングされることを可能にする。特に図３Ａに示すように、第１のノードによるマッピング関数の実行に含まれる鍵（鍵1）は、入力フロー3、6及び7がポート1にマッピングされることを可能にし、フロー1及び4がポート2にマッピングされることを可能にし、フロー2、5及び8がポート3にマッピングされることを可能にする。図３Ｂでは、異なる鍵（鍵2）が使用され、フロー2、4及び7がポート1にマッピングされ、フロー5及び8がポート2にマッピングされ、フロー1、3及び6がポート3にマッピングされる。これらの図面に示すように、共通の圧縮関数の使用は、ネットワークの複数のノードが共通の圧縮関数を使用し得るように、マッピングにおいて導入されたエントロピーが出力ポートの選択に関して保存されることを可能にする。
【００２７】
マッピング例について、以下に詳細に説明する。以下の説明では、xがフローIDを示し、fがプロトタイプのマッピングを示し、nがスイッチの鍵を示し、fnが鍵が掛けられたマッピングを示し、fn(x)が圧縮関数の適用前のマッピングされたフローIDを示す。マッピングされたフローIDへの圧縮関数の適用は、出力ポートの候補の中からどの出力ポートがパケットを転送するために使用されるかを判定する。
【００２８】
好ましくは、候補のプロトタイプのマッピングは、異なる鍵を使用するスイッチのいずれかの対が、いずれのフローIDをも同じ値にマッピングしないエントロピー保存マッピングをインスタンス化するように構成されるべきである。一実施例によれば、フローIDに存在し得るパターンを乱すようにフローIDをランダム化するために、指数に基づくマッピングが使用される。他のマッピングが使用されてもよいが、指数に基づくマッピングの使用は、多くの用途で適切な結果を提供する。同様に、所望の特徴のセットを示す結合関数を取得するために、それぞれが所望の特性を有する複数のマッピングを結合することも可能である。従って、異なる実施例は、ECMPネットワークにおいて等コストリンクへの決定論的なトラヒックの拡散を実現するために、異なるマッピングを使用して（すなわち、複数のエントロピー保存のプロトタイプのマッピング関数を結合することにより）構成されてもよい。
【００２９】
ノードがローカルのマッピングをインスタンス化するために鍵として使用し得る複数の可能なグローバルに固有の値が存在する。例えば、スイッチは、IS-ISスイッチID、SPBM（Shortest  Path  Bridging  MAC）送信元ID（B-SA）又は固有性を保存する他の値の組み合わせ若しくはこれらの値の変換／組み合わせを使用してもよい。これらの値は、各マッピング関数がネットワークの特定のスイッチに固有になることを可能にするための、ノードマッピング関数の鍵として使用されてもよい。しかし、プロトタイプのマッピング関数（すなわち、使用されるアルゴリズム）は、所与のノードで使用される実際のマッピング関数がそのノードで使用される鍵の値により完全に指定されるように、全てのノードで同じである。鍵マテリアルがノードに固有の特性（すなわち、ノードID）に基づいて判定される例が提供されたが、他の実施例では、ECMP鍵マテリアルは、管理システムにより提供されたプログラム値、スイッチでランダムに生成されたプログラム値、又は固有の識別子（例えば、システムIDのハッシュ又はSPBM  SPSourceID）から導出されたプログラム値でもよい。更に、同じ鍵マテリアルを利用するネットワークのノードが存在しないことが重要であると考えられる用途では、各ノードが他のノードで使用されている鍵を学習することを可能にするため、及びルーティング領域内の相互のノードが固有の鍵マテリアルを使用していることを確保するため、ノードは、リンクステートルーティングシステムを使用して鍵マテリアルを広告してもよい。
【００３０】
理論的には望ましいが、鍵の固有性は絶対的に必要であるとは限らない。例えば、実用性の観点から、この方法は、２つのスイッチが同じ鍵を使用する可能性が比較的低く保持される限り、適切に実行する。
【００３１】
＜アルゴリズムの例＞
以下の説明では、フローIDは小さい整数であり、おそらく24ビットより大きくなく、8又は16ビットである可能性が高いことが想定される。並び替えサイズは、2の累乗（例えば、28、216）又はその近くでもよい。各スイッチは、固有の疑似ランダムな並び替え又は疑似の並び替えを割り当てられる。これに関して、パスの２つのスイッチが同じマッピングを使用する不健全な場合を回避することが重要である。スイッチマッピング関数は、小さい（<64ビット）（高い確率で）固有の整数で一般関数に鍵を掛けることにより構成される。全てのスイッチで同じでもよい圧縮関数も使用されてもよい。鍵の認識を前提とし、取り決めがリンクの番号に採用されている（例えば、各リンクのエンドポイントのブリッジ識別子に従ってECMP候補出力ポートを並び替える）ことを前提として、全てのスイッチでの同じエントロピー保存関数と全てのスイッチでの同じ圧縮関数との使用の組み合わせは、ネットワーク動作を完全に予測可能にする。
【００３２】
ネットワークのノードに対して同じ関数及び同じ圧縮処理を使用させることにより、（ノードでエントロピー保存マッピング関数をインスタンス化するために各ノードで使用された鍵マテリアルの認識を前提として）どのようにフローがネットワークを通じてルーティングされるかを判定することが可能になる。このことは、トラヒックパターンが測定により学習されることを必要とするのではなく、モデリングを通じたデータトラヒックパターンの予測を可能にする。従って、目標は、ネットワークのトラヒック動作をモデル化する機能を保持するために実際のランダム性を使用せずに、広い範囲の等コストリンクを通じてトラヒックを分配するために十分にランダムに動作する関数を見つけることである。
【００３３】
実施例によれば、スイッチは、ファミリ（同類）のいずれか２つのマッピングが十分に無相関になるように、並び替え又は単射（injection）のような異なるエントロピー保存マッピングを使用すべきである。一実施例では、入力セットを出力セットにマッピングするために使用されるマッピング関数は、単射である。すなわち、いずれか２つの異なる入力は、異なる出力にマッピングされる。更に、エントロピー保存のプロトタイプのマッピング関数は、異なるランダムな鍵マテリアルを使用したマッピング関数の２つのインスタンスが、有意義に／明白に相互に直接的に相関しない異なるマッピングを生じるという望ましい特性を有するべきである。
【００３４】
好ましい実施例では、エントロピー保存マッピング関数の２つの異なるインスタンスは、同じフローIDを異なるスイッチの同じ値にマッピングするべきではない。同様に、マッピングは、例えばIS-ISを介してルーティングシステムにより任意選択で広告されてもよい小さい固有の識別子により識別可能であるべきである／鍵が掛けられるべきである。これは、IS-ISシステムID、SPBM  SPSourceID（Shortest  Path  Bridging  MAC  Source  ID）、新たな固有の識別子、又は固有性を保持するこれらのいずれかの組み合わせでもよい。或いは、鍵は提供されてもよく、ランダムに生成されてもよく、システムIDのハッシュのような固有の識別子から導出されてもよい。マッピングはまた、簡単な圧縮関数により後続された場合、疑似ランダム性を表すべきである。これは、小数の候補出力ポートの場合に特に重要である。
【００３５】
線形合同マッピング（linear-congruential  mapping）に基づく並び替えは、共通のプロトタイプから鍵が掛けられた２つの異なるマッピングが決して同じ入力を同じ出力にマッピングしないような、簡単なエントロピー保存マッピングを生成することが分かる。線形合同の乱数生成は、前の乱数から連続する乱数を計算することにより動作する。例示的な線形合同マッピング関数は、xi+1=(Axi+C)  MOD  Mを使用して実装されてもよい。ただし、C及びMは互いに素である。
【００３６】
しかし、これらの簡単なマッピングのいくつかは、MODが圧縮関数として使用された場合に、特に小さい乗数ではランダム性から離れた特性を示す特性を示す。これに対して、冪剰余（modular    exponentiation）に基づく更に強い疑似ランダム性の並び替えは、より良い性能を示す。例えば、フローIDが簡単な並び替えを使用して再編成された再編成後のフローIDの疑似ランダムな並び替えを適用することは、更にランダムに見える再編成を生じさせる。同様に、冪剰余のような良好な疑似ランダム関数を使用してフローIDを再編成し、各ノードにおいて、再編成された系列において異なるオフセットで始めることも可能である。更に複雑なエントロピー保存マッピングもまた、基本のマッピングと望ましい特性とを組み合わせることにより構成されてもよい。例えば、線形合同マッピングと冪剰余マッピングとの組み合わせは、双方の良好な特性を示すことが分かる。結果のマッピングは、冪剰余マッピングの良好な疑似ランダム性の特性と、線形合同マッピングの固有性の特性とを示す。
【００３７】
例えば、素数p及び原始根gとした場合、関数f(x)=gx  mod  pは、範囲1...p-1へのいずれかの連続するp-1の整数（すなわち、x...x+p-2）の１対１のマッピングである。特に、これは整数1...p-1の疑似ランダムな並び替えを生成する。同様に、関数h(x)=(gx  mod  p)-1は、整数0...p-2の疑似ランダムな並び替えを生成する。従って、冪剰余は、再編成されたフローIDをランダム化するために使用されてもよい。或いは、冪剰余は、冪剰余自体が各ノードで鍵を掛けられる更なるランダムな再編成を構成するために使用されてもよい。例えば、異なる原始根が各ノードで使用されてもよい。これは、共通の基本根の適切に選択された累乗としてノード特有の原始根を生成することにより容易に実現される。
【００３８】
表１（以下に示す）は、累乗を使用して生成されたものである。ただし、fn(x)=3^[(2n+1)x+n  mod  2m]  mod  (2m+1)-1である。3x  mod  17は0...15（又は1...16）を1...16にマッピングする点に留意すべきである。0...15への1...16のマッピングは必ずしも必要ではないが、多くの方法で行われてもよく（例えば、x→x  mod  16、x→16-x等）、基礎となる並び替えの特性を変更しない。
【００３９】
【表１】
2014509145.tif 000003
フローIDが8又は16ビットである場合、冪剰余のために対応するフェルマー素数（F3=257、F4=65537）及び適切な原始根（例えば3）が使用されてもよい。整数論では、フェルマー素数は、Fp=22p+1（p=0...4）である素数である。望ましい場合には適切な並び替えを生成するために、結果の範囲1...Fp-1を0...Fp-2に逆にマッピングすることは簡単である。
【００４０】
フローIDが異なるビット数である場合、次に大きい（又は次に小さい）素数がその代わりに使用されてもよい。並び替えに選択された素数がフローIDの数よりわずかに小さい場合、結果のマッピングは不可逆であり、完全にはエントロピー保存ではない。素数がフローIDの数より大きい場合、最大のフローIDより大きい整数の像（image）に到達できないという事実を考慮して結果の系列が番号を付け替えられない限り、生成された値を表すために少なくとも１つの追加のビットが必要になる。例えば、フローIDが12ビットの長さである場合（m=12）、2m=4096であり、4096に最も近い大きい素数はp=4099である。4096、4097及び4098は入力セットにはならないため、これらの像は出力にはない。
・2^4098  mod  4099=1
・2^4097  mod  4099=2^4098/2  mod  4099=(1+4099)/2=2050
・2^4096  mod  4099=2050/2=1025
f(x)を0≦x≦4095について定義された関数であるとする。
・y=2^x  mod  4099
・(f<1025)である場合、f(x)=y-2
・(1025<y<2050)である場合、f(x)=y-3
・その他の場合、f(x)=y-4
前述の関数は、整数0...4095の並び替えを生成する。
【００４１】
表１において、簡単な線形合同の再編成x→(2n+1)x+n  mod  2mは、双方の望ましい特性を結合するプロトタイプのマッピングを生成するために、冪剰余y→3y  mod  2m+1と結合されている。表２は他の例を示しており、fn(x)=[((9n  mod  2m)+1)*(33x  mod  (2m+1))-1]  mod  (2m+1)である。
【００４２】
【表２】
2014509145.tif 000004
この場合、冪剰余は、鍵が掛けられた線形合同の再編成に続いて最初に適用される。冪剰余により生成された系列のゼロでない乗数による乗算は、系列の循環シフトを生成する。
【００４３】
いずれかの原始根は、適切に選択された指数を用いて他の原始根の累乗として表されてもよい。表２に示す例では、冪乗の基礎として使用される原始根は33=27である。
【００４４】
前述の並び替えは、ネットワークの各スイッチでフローIDを再編成するために使用され得る出力の数への入力の数の再編成を生じる。各スイッチは、再編成されたフローIDを取得し、スイッチに固有の方法でフローIDを更に再編成するために、その鍵を使用する。例えば、各スイッチは、鍵のゼロでない関数によるフローIDの再編成された系列の乗算が系列の循環シフトを生成するようにその鍵を使用してもよい。或いは、鍵マテリアルは、各スイッチで冪剰余の基礎として使用される異なる原始根を選択するために使用されてもよい。鍵マテリアルを使用する他の方法も同様に実装されてもよい。
【００４５】
前述の説明は、並び替えが１行表記を使用して記述される例に関して提供されているが、例えば循環表記（cycle  notation）のような他の表記も並び替えを表すために使用されてもよい。特に、循環表記は、一群の並び替えが基礎の並び替えの累乗により生成された場合に何が生じるかを視覚化する便利な方法を提供する。
【００４６】
並び替えの任意の累乗は、（循環表記系列の最後の要素が系列の最初の要素に戻ってマッピングするという取り決めにより）各要素が並び替えを通じたその像により後続される並び替えの循環表記を使用することにより、非常に効率的に計算されてもよい。循環表記では、並び替えの累乗sを行うことは、循環表記におけるsの要素だけ前にスキップすることに相当する。１行表記と循環表記との間の変換は容易である。並び替えの循環表記は並び替えのオーダーが並び替えの要素の数に等しいことを保証するため、並び替えの循環表記から始めることが可能である。
【００４７】
ここで、選択された形式の式f(x)=(2x+1)  mod  11又は等しく反復（recurrence）c(0)=1,c(x+1)=c(x)+2に基づく例示的な並び替えを使用してこの処理を示す。これは、10桁の並び替えを規定する。この並び替えの循環表記は（0  1  3  7  4  9  8  6  2  5）であり、１行表記は（1  3  5  7  9  0  2  4  6  8）である。１行表記は、並び替えられた系列における並び替えの効果を示しているが、循環表記は、並び替えが繰り返し適用されるため、各要素が通過する循環を示している。より簡潔には、１行表記及び循環表記は、以下のようにまとめられてもよい。
One-line[x]=f(x)
Cycle[n+1]=f(Cycle[n])  ただし、Cycle[0]は並び替えられている要素のうち任意に選択されたものである
１行表記と循環表記との間を変換することは容易である。循環表記の最初（例えば、0）になる任意の要素を取得し、循環の残りの要素毎に、系列の前の像を調べるために１行表記を使用する。
Cycle[0]=0
Cycle[n+1]=One-line[Cycle[n]]  ただし、n=1〜N
逆方向では、循環表記と１行表記との間を変換することは同様に容易である。
One-line[Cycle[n]]=Cycle[n+1]
同様に、並び替えの累乗sの１行表記は、その循環表記により与えられる。
One-line[Cycle[n]]=Cycle[n+s]
ただし、循環の最後で折り返しを実施するために注意が行われるべきである（すなわち、Cycleの長さでモジュロ演算することにより、インデックス化が行われる）。
【００４８】
従って、並び替えの１行表記又は循環表記が与えられた場合、並び替えの任意の累乗の１行表記又は循環表記が計算され得る。表３は、式f(x)=(2x+1)  mod  11に基づく例示的な並び替えの連続する累乗を示している。最も上の行（行0）は、並び替えの第0の累乗に対応し、行1は並び替えの１行表記に対応する。更に一般的には、行nは、並び替えの第nの累乗の１行表記を示す。表の列（連続する累乗を示す最も左の列を除く）は、基礎の並び替えの異なる循環表記に対応する。
【００４９】
【表３】
2014509145.tif 000005
以下の特性を有する並び替えの集合が構成されている。
・並び替えは、比較的小さい整数（例えば、システムID）により鍵が掛けられる。
・２つの並び替えは、同じ入力を同じ出力にマッピングしない。
・簡単な圧縮関数（例えば、mod）と結合された場合、マッピングは良好なランダム性の特性を有する。
【００５０】
これらの並び替えの集合は、（非常に大きい）ラテン方陣を生成するため、疑似グループ（quasigroup）の乗算テーブルとして見なされてもよい。この文脈におけるラテン方陣は、それぞれ各行及び各列にちょうど一度出現するn個のシンボルで埋められたn×nの配列である。特定のスイッチのマッピングは、乗算テーブルの行又は列により表される。前述の例は有限体に基づくが、同じ方法が疑似グループに当てはまる。鍵の特性は、フローIDのマッピングが反転できなければならないことである。
【００５１】
図４は、実施例に従ってECMPを実装するように構成され得る例示的なネットワークエレメントを示している。図４に示す例では、ネットワークエレメント10は、データプレーン20と制御プレーン22とを含む。他のアーキテクチャも同様に実装されてもよく、本発明は図４に示すように構成された実施例に限定されない。図４に示す実施例の特定の構成及び動作方法の説明は、どのように本発明が使用され得るか及び特定の場合に実装され得るかの一例を提供することのみを意図する。本発明は、通信ネットワークでプロトコルデータユニットを扱うように構成された如何なるネットワークエレメントに関しても、更に広く使用されてもよい。図４のネットワークエレメントは、エッジルータのようなエッジネットワークエレメント、ルータ／スイッチのようなコアネットワークエレメント、又は他の種類のネットワークエレメントとして使用されてもよい。図４のネットワークエレメントは、図１に関して前述した通信ネットワーク又は他の種類の有線／無線通信ネットワークのような通信ネットワーク上に実装されてもよい。
【００５２】
図４に示すように、ネットワークエレメントは、制御プレーン20とデータプレーン22とを含む。制御プレーン20は、１つ以上のCPU24を含む。各CPU24は、制御プレーンソフトウェア26を実行しており、制御プレーンソフトウェア26は、例えば、１つ以上のルーティング処理28、ネットワーク動作管理及び制御ソフトウェア30、インタフェース生成／管理処理32、及びECMP処理34を含んでもよい。ECMP処理は、ルーティング処理と独立して実行されてもよく、ルーティング処理の一部として実装されてもよい。ECMP処理は、前述のようにフローのECMPポートを選択するために、エントロピー保存マッピング関数を適用する。或いは、以下に説明するように、ECMP処理は、制御プレーンではなく、データプレーンに実装されてもよい。
【００５３】
制御プレーンはまた、CPUにロードされた場合、制御プレーンソフトウェア26を実装する命令及びデータを含むメモリ36を含む。メモリは、ルーティング処理28により判定されたネットワークのトポロジについての情報を含むリンクステートデータベース38を更に含む。ECMP処理34は、宛先への１つより多くの実質的に等コストのパスが存在するか否かを判定するためにLSDBの情報を使用し、フローを選択されたパスに割り当てるために前述のマッピング関数を適用する。
【００５４】
データプレーン22は、データを送受信するために物理媒体40に接続するポート44を含むラインカード42を含む。物理媒体は、光ファイバケーブル又は電線を含んでもよい。或いは、物理媒体は、例えば、セルラ、802.11又は802.16無線通信標準の１つを使用して、無線通信チャネルとして実装されてもよい。図示の例では、ポート44は、ポートの交換を容易にするためにラインカード42上にサポートされているが、ポート44を実装する他の方法も同様に使用されてもよい。
【００５５】
データプレーン22は、ネットワーク処理ユニット（NPU：Network  Processing  Unit）46及びスイッチファブリック48を更に含む。NPU及びスイッチファブリック48は、データがポートの間で交換され、ネットワークエレメントがネットワークトラヒックをネットワークのその宛先に転送することを可能にすることを可能にする。好ましくは、NPU及びスイッチファブリックは、ネットワークエレメントによるトラヒックの転送に関連する待ち時間を最小化するために、制御プレーンからの相当な介入なしにデータパケット上で動作する。ラインカードからスイッチファブリックにトラヒックを指示することに加えて、NPUはまた、優先順位付け及びトラヒックのシェーピングのようなサービスが特定のトラヒックのフローで実装されることを可能にする。ラインカードは、ラインカードとNPUとの間で共有されるパケットを処理する機能を可能にするために、処理機能も同様に含んでもよい。当該技術分野において既知のように、ラインカード及びデータプレーンのどこかにより、複数の処理ステップが実装されてもよい。本発明の実施例の実装に関連する顕著な特徴の不明瞭性を回避するため、特定の実装に関連する詳細は図４に含まれていない。
【００５６】
一実施例では、フローIDを次ホップの出力ポートにマッピングするために必要な計算は、データプレーンに実装されてもよい。この実施例では、制御プレーンは、ノード特有の機能を設定してもよいが、転送の判定には関与しない。パケットが受信され、宛先への複数の等コストのパスが存在するという判定が行われた場合、パケットは、前述のアルゴリズムを使用して、フロー毎に等コストパスにマッピングされる。ECMPを実装するために必要な計算についての役目が制御プレーンとデータプレーンとの間で割り当てられる特定の方法は、特定の実装に依存する。
【００５７】
ECMPが実装される場合、ルーティングソフトウェア28は、それぞれの可能な宛先へのネットワークを通じた最短パスのツリーを計算するために、リンクステートデータベース38を使用する。転送情報は、データプレーンに渡され、転送情報ベースにプログラムされる。ECMP処理34は、フローを宛先への実質的に等コストのパスのそれぞれに割り当てるために、ECMPアルゴリズムを適用する。このようにフローを割り当てる１つの方法が図５に示されている。図５に示すように、ECMP処理は、ノード特有の鍵マテリアルをプロトタイプのマッピング関数に適用し、ノード特有のマッピング関数を生成する（100）。ECMP処理は、ノード特有のマッピング関数を可能な入力フロー識別子のセットに適用し、フロー識別子の再編成された系列を取得する（102）。この再編成された系列は、テーブル又はアルゴリズムとしてECMP処理にプログラムされてもよい（104）。最後に、ECMP処理は、マッピングされたフローIDを候補出力ポートのセットに割り当てるために、圧縮関数を適用する（106）。
【００５８】
前述の関数は、コンピュータ可読メモリに格納されてコンピュータプラットフォームの１つ以上のプロセッサで実行される一式のプログラム命令として実装されてもよい。しかし、ここに記載の全てのロジックは、別個の構成要素、特定用途向け集積回路（ASIC：Application  Specific  Integrated  Circuit）のような集積回路、フィールドプログラマブルゲートアレイ（FPGA：Field  Programmable  Gate  Array）若しくはマイクロプロセッサのようなプログラム可能な論理デバイスと共に使用されるプログラム可能ロジック、状態機械、又はこれらのいずれかの組み合わせを含む他のデバイスを使用して具現されてもよい。プログラム可能ロジックは、読み取り専用メモリチップ、コンピュータメモリ、ディスク、又は他の記憶媒体のような有形の媒体に一時的又は永続的に固定されてもよい。全てのこのような実施例は、本発明の範囲内に入ることを意図する。
【００５９】
本発明の要旨及び範囲内で、図面に示す実施例及び明細書に記載の実施例の様々な変更及び変形が行われてもよいことが分かる。従って、前述の説明に含まれる全てのもの及び添付図面に示す全てのものは、限定的な意味ではなく、例示として解釈されるべきであることを意図する。本発明は、以下の特許請求の範囲及びその均等に規定されたもののみとして限定される。
【図１】
2014509145.tif 000006
【図２】
2014509145.tif 000007
【図３Ａ】
2014509145.tif 000008
【図３Ｂ】
2014509145.tif 000009
【図４】
2014509145.tif 000010
【図５】
2014509145.tif 000011
【国際調査報告】
2014509145.tif 000012
2014509145.tif 000013