(57)【特許請求の範囲】
【請求項１】
１つ以上のエンドポイントと相互接続された１つ以上のネットワークノードを有するコンピュータネットワークにおけるパケット送信方法であって、
ネットワークノードにおいて、エンドポイント識別子によって特定されたパケットを受信する受信工程であって、前記エンドポイント識別子は、第１の値を保持する第１のセクション及び第２の値を保持する第２のセクションを含み、前記第１の値及び前記第２の値は、個々に前記コンピュータネットワークにおけるエンドポイントの物理的位置の少なくとも一部に対応しており、前記第１のセクション及び前記第２のセクションは、スタックに配置されている、前記受信工程と、
前記エンドポイント識別子の前記第１の値又は前記第２の値の少なくとも１つに基づいて前記エンドポイントに前記パケットを転送する転送パスの少なくとも一部を決定する決定工程と、
前記ネットワークノードから、前記転送パスの前記決定した少なくとも一部に沿って、前記パケットを前記エンドポイントに転送する転送工程と、
前記ネットワークノードから、前記パケットを前記転送パスの前記決定された少なくとも一部に沿って前記エンドポイントに転送することに連動して、前記スタックから少なくとも前記第１のセクションを削除する削除工程と、
を含む、方法。
【請求項２】
前記第１の値が、データセンタ、前記データセンタがあるビルディング、前記ビルディングの中のルーム、前記ルームの中の列、又は前記エンドポイントが位置する前記列の中のラックのうちの少なくとも１つを特定し、
前記第２の値が、仮想マシンの論理的位置、前記仮想マシンがホストされているサーバの物理的位置のうちのいずれか１つを特定する、請求項１に記載の方法。
【請求項３】
前記転送パスの少なくとも一部を決定する決定工程は、少なくとも前記第１の値を前記ネットワークノードのメモリ中のフォワーディングテーブル内のエントリと比較することを含み、前記フォワーディングテーブルは、前記第１の値に対応するエントリを有し、前記エントリは、宛先エンドポイントに対する前記転送パスの少なくとも一部を指定する、請求項１に記載の方法。
【請求項４】
前記転送工程が、前記第１のセクション中の前記第１の値を変更することなしに、前記転送パスの前記決定された少なくとも一部に沿って、前記ネットワークノードから前記エンドポイントに前記パケットを転送することを含む、請求項３に記載の方法。
【請求項５】
前記ネットワークノードから前記パケットを前記宛先エンドポイントに転送することに連動して、前記スタックの前記第１のセクション中の少なくとも前記第１の値を変更する工程を更に含む、請求項３に記載の方法。
【請求項６】
前記転送パスの少なくとも一部を決定する決定工程は、少なくとも前記第１の値を前記ネットワークノードにおいてフォワーディングテーブル内のエントリと比較することを含み、前記フォワーディングテーブルは、前記第１の値に対応するエントリを有し、前記エントリは、前記エンドポイントへの前記転送パスの少なくとも一部を指定し、
当該方法は、前記ネットワークノードから前記パケットを前記転送パスの前記決定された少なくとも一部に沿って宛先エンドポイントに転送することと連動して、前記スタックから前記第１のセクションを削除する工程を更に含む、請求項１に記載の方法。
【請求項７】
前記ネットワークノードは、第１のネットワークノードであり、
前記転送パスの少なくとも一部を決定する決定工程は、前記第１の値を前記第１のネットワークノードにおいてフォワーディングテーブル内のエントリと比較することを含み、前記フォワーディングテーブルは、前記第１の値に対応するエントリを有し、前記エントリは、第２のネットワークノードを経由する前記エンドポイントへの前記転送パスの少なくとも一部を指定し、
当該方法は、
前記第２の値を前記第２のネットワークノードにおいてフォワーディングテーブルのエントリと比較することによって前記エンドポイントへの前記転送パスの別の部分を決定する工程と、
前記第２のネットワークノードから前記パケットをネットワークパスの前記決定された別の部分に沿って、前記エンドポイントに転送する工程と、
を更に含む請求項１に記載の方法。
【請求項８】
前記ネットワークノードは、第１のネットワークノードであり、
前記転送パスの少なくとも一部を決定する決定工程は、前記第１の値を前記第１のネットワークノードにおいてフォワーディングテーブル内のエントリと比較することを含み、前記フォワーディングテーブルは、前記第１の値に対応するエントリを有し、前記エントリは、第２のネットワークノードを経由する前記エンドポイントへの前記転送パスの少なくとも一部を指定し、
当該方法は、
前記第２の値を前記第２のネットワークノードにおいてフォワーディングテーブルのエントリと比較することによって前記エンドポイントへの前記転送パスの別の部分を決定する工程と、
前記スタックから前記第２のセクションを削除する工程と、
前記第２のネットワークノードから前記パケットをネットワークパスの前記決定された別の部分に沿って、前記第２のセクションなしで、前記エンドポイントに転送する工程と、
を更に含む請求項１に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピュータネットワークは、有線又は無線のネットワークリンクを経由して、ルータ、スイッチ、ブリッジ、又は他のネットワークノードによって互いに相互接続された物理的又は仮想的な多くのサーバを有することがある。ネットワークノードは、１つ以上のネットワークプロトコルに従って、ネットワークリンクを経由して、メッセージ交換によってサーバ間で通信することを可能することができる。
【０００２】
コンピュータネットワークの設計と運用に関する困難の１つは、スケーラビリティ（scalability：拡張性）である。サービスの数が増えるにつれて、必要なリソース及び運用上の複雑さの量も増加する。例えば、現代のルータは、コンピュータネットワーク内の特定のサーバに到達するためにネットワークのルートを指定するためのルーティング（routing：経路指定）テーブルをメモリに通常は持っている。サーバの数が増えるにつれて、ルーティングテーブルのサイズ及びルーティングテーブルに対するネットワークルートの計算の複雑さが増加する。それ故に、サーバの数が数百万又は数千万に達すると、ルータのハードウェアコスト及び運用上の複雑さの両方が、管理しがたいレベルにまで増えることがある。
【発明の概要】
【０００３】
この概要は、発明の詳細において以下でさらに詳細に説明するコンセプトの選択を簡略化した形式で紹介することを提供する。この概要は、請求する発明特定事項の重要な特徴又は必須の特徴を特定することを意図せず、請求する発明特定事項の範囲を制限するために使用されることも意図するものでもない。
【０００４】
数百万台のサーバ、仮想マシン、又は他のエンドポイントへのコンピュータネットワークの拡張は、既存のネットワーク技術に基づいては困難であり得る。エンドポイントの数が増加するにつれて、ハードウェアコスト及び運用上の複雑さが管理しがたいレベルにまで増加し得る。例えば、数百万のエンドポイントのペアの間でのネットワークルート（route：経路）の計算は、多量の計算能力を必要とすることがあり、ルーティングテーブルがルータのメモリの容量を超えるという結果にもなりかねない。他の例では、ネットワークトラフィックマネジメント技術（例えば、トラフィックエンジニアリング又はロードバランシング）を、数百万又は数千万のエンドポイントに実装することは困難となり得る。例えば、トラフィックエンジニアリングに対するネットワークルート（又はトンネル）の計算、トラフィックエンジニアリングトンネルに対するネットワークバンド幅の配分、又は、他の同様の非決定的多項式完全（nondeterministic-polynomial  complete）（「ＮＰ完全（NP-complete）」）問題は、エンドポイントの数が大きくなると、難しくなり得る。
【０００５】
本技術のいくつかの実施形態は、ハードウェア又はソフトウェアで定義された階層構造（hierarchy）の中で互いに相互接続された別個の物理的又はオーバーレイドメイン中にコンピュータネットワークをパーティション化（partitioning）することによってコンピュータネットワークのスケーラビリティ（拡張性）を改善することができる。コントロールプレーン機能（例えば、ネットワークルートの計算）及び／又はフォワーディングプレーン機能（例えば、ルーティング（経路指定）、フォワーディング（転送）、スイッチング）は、パーティション化され、（１）特定のドメインのネットワーク構成（例えば、特定のドメインの中のエンドポイント及び／又はより低いベルドメイン）、及び（２）階層構造において特定のドメインに接続された１つ以上のより高いレベルのドメインに基づいてドメイン毎の基準で別個に実行される。それ故に、特定のドメインは、階層の他のドメインにあるエンドポイント又はネットワークノードを気にせずに、ドメインの様々なネットワークオペレーションを管理することができる。その結果、ネットワーク構成及びオペレーションは、パーティション化され、全体のコンピュータネットワークのサイズが増大したとしても、ハードウェアコスト及びオペレーションの複雑さを削減することができる。本技術の他の実施形態は、各エンドポイントが置かれている物理的位置の少なくとも一部に基づいてコンピュータネットワーク中のエンドポイントを特定することを対象とする。
【図面の簡単な説明】
【０００６】
【図１Ａ】本技術の実施形態によるコンピュータネットワークの階層パーティション化を説明する概略図である。
【図１Ｂ】本技術の実施形態によるコンピュータネットワークの階層パーティション化を説明する概略図である。
【図２】本技術の実施形態による１つ又は複数のデータセンタに対するコンピュータネットワークに対する図１Ａに記載の階層パーティション化技術の応用例を説明する概略図である。
【図３】本技術の実施形態によるエンドポイント識別子の例を利用する図２のコンピュータネットワークのオペレーションを説明する概略図である。図２のコンピュータネットワークの一部は、明確性のために省略してある。
【図４】本技術の実施形態による図３のネットワークコントローラのソフトウェアコンポーネントの例を示すブロック図である。
【図５Ａ】本技術の実施形態によるスタック中に配置されたセクションを持つエンドポイント識別子の例を説明するブロック図である。
【図５Ｂ】本技術の実施形態によるスタック中に配置されたセクションを持つエンドポイント識別子の例を説明するブロック図である。
【図６】本技術の実施形態による図５Ａ又は図５Ｂのセクションのうちの１つの１つの例を説明するブロック図である。
【図７】本技術の実施形態によるＩＰアドレスを使用するエンドポイント識別子の１つの例を説明する概略図である。
【図８】本技術の実施形態によるパーティション化されたコンピュータネットワークを構成するプロセスの実施形態を説明するフローチャートである。
【図９Ａ】本技術の実施形態によるドメイン内のアウトバウンド通信を管理するプロセスの実施形態を説明するフローチャートである。
【図９Ｂ】本技術の実施形態によるドメイン内のインバウンド通信を管理するプロセスの実施形態を説明するフローチャートである。
【図１０】図１Ａのコンピュータネットワークの例のコンポーネントに適切なコンピューティングデバイスである。
【発明を実施するための形態】
【０００７】
コンピュータネットワークを構成し、動作するためのシステム、デバイス、コンポーネント、モジュール、ルーチン及びプロセスのいくつかの実施形態が以下で説明される。以下の説明では、コンポーネントの特定の詳細は、本技術のいくつかの実施形態の完全な理解を提供するために含まれる。当業者であれば、本技術が追加の実施形態を有することができることも理解できる。本技術は、図１Ａ〜図１０を参照して以下で説明する実施形態のいくつかの詳細なしに実施することもできる。
【０００８】
本明細書で使われるように、「コンピュータネットワーク（computer  network）」という用語は、一般に、複数のエンドポイントが互いに及び他のネットワーク（例えば、インターネット）へ接続される複数のネットワークノードを持つ相互接続ネットワークを指す。「ネットワークノード（network  node）」という用語は、一般に物理的又はソフトウェアエミュレーション転送パスのネットワークデバイスを指す。ネットワークノードの例は、ルータ、スイッチ、ハブ、ブリッジ、ロードバランサ、セキュリティゲートウェイ、ファイアウォール、ネットワークネームトランスレータ、又はネームサーバである。各ネットワークノードは、コンピュータネットワーク内で別個の値（distinct  value）を持つネットワークノード識別子（network  node  identifier）と関連することができる。
【０００９】
本明細書でまた使用されるように、コンピュータネットワークの「コントロールプレーン（control  plane）」という用語は、一般に、コンピュータネットワークの中でネットワークトラフィックを運ぶ宛先及び／又はその方法を決めることに関連するネットワークアーキテクチャの一部を指す。コントロールプレーンは、集中コントローラ又は例えば、ＢＧＰ、ＯＳＰＦ、ＩＳＩＳ、ＬＤＰ、ＲＳＶＰなど分散ルーティング又はフォワーディングプロトコルを使ってネットワークノード内で、ルーティング又はフォワーディングテーブルの計算、構成及び／又は管理を含む。他のコントロールプレーン機能は、バンド幅配分、トラフィック管理、輻湊制御、ネットワークルート（経路）保護計算、障害回復、システム構成、管理、アナリティクス、及び／又は他のネットワーク動作も含む。
【００１０】
コンピュータネットワークの「フォワーディングプレーン（forwarding  plane）」という用語は、一般に、ネットワークトラフィックを運ぶネットワークアーキテクチャの別の部分を指す。フォワーディングプレーンは、ネットワークトラフィックを、コントロールプレーンロジック又はプロトコルに従って確立されたネットワーク経路（network  route）又は転送パス（forwarding  path）に沿って、次のホップへ転送する。フォワーディングプレーンパケットは、ネットワークノードを通して進み、コントロールプレーンによって確立されたテーブルを使用して、各ネットワークノードにおけるパケットなどのメッセージのルーティング、スイッチング、及び転送を実行する。
【００１１】
「エンドポイント（end  point）」という用語は、一般に、物理的又はソフトウェアエミュレーションのコンピューティングデバイスを指す。エンドポイントの例は、ネットワークサーバ、ネットワーク記憶デバイス、パーソナルコンピュータ、モバイルコンピューティングデバイス（例えば、スマートフォン）、又は仮想マシンを含む。各エンドポイントは、コンピュータネットワークにおいて別個の値を持つことができるエンドポイント識別子（end  point  identifier）と関連することができる。エンドポイント識別子（又はネットワークノード識別子）の例は、マルチプロトコルラベルスイッチド（「ＭＰＬＳ（multiprotocol  label  switched）」）ネットワークで使用されるラベルの一部、ＭＰＬＳネットワークで使用されるラベルのスタック、インターネットプロトコル（「ＩＰ」）に従う１つ以上のアドレス、１つ以上の仮想ＩＰアドレス、仮想ローカルエリアネットワークにおける１つ以上のタグ、１つ以上のメディアアクセスコントロールアドレス、１つ以上のラムダ識別子、１つ以上の接続パス、１つ以上の物理インタフェース識別子、又は１つ以上のパケットヘッダ又はエンベロープを含む。
【００１２】
「ドメイン（domain）」という用語は、一般に、コンピュータネットワークの物理的又は論理的パーティション（partition）を指す。ドメインは、コンピュータネットワーク内で、互いに相互接続された及び／又は多くのエンドポイントと相互接続された選ばれた数のネットワークノードを含むことができる。ドメインは、ドメインの階層の中で同じレベル又は異なるレベルで、特定のドメインを他のドメインに接続する多くの追加のネットワークノードを含む１つ以上のより高いレベルのドメインと接続することもできる。以下の説明において、１つ以上のＳＤＮコントローラを使用するソフトウェア定義ネットワーク（「ＳＤＮ（software  defined  network）」）は、コンピュータネットワークのパーティション化の実施形態を説明するために利用される。しかしながら、別の実施形態において、コンピュータネットワークの１つ以上のドメインは、少なくとも部分的に、分散ルーティング及び／又は転送プロトコルを使用する分散コンピュータネットワークである。
【００１３】
ドメインの中の個々のネットワークノードとエンドポイントは、コンピュータネットワークの別のエンドポイントへの転送メッセージ（例えば、データパケット）の方法を特定するフォワーディングテーブル（forwarding  table）を個別に含むことができる。ある実施形態において、フォワーディングテーブルは、エンドポイント識別子の特定の値に対応する、ネットワーク経路（network  route）、転送パス（forwarding  path）、物理インタフェース、又は論理インタフェースを別個に特定する複数のエントリを含むことができる。エントリの例は、下記の通り、各識別子に対する適切な値を持つことができる。
【表１】
0006628792.tif 000002
ある実施形態において、受信識別子（incoming  identifier）と送信識別子（outgoing  identifier）は、異なる値を持ち得る。このように、エンドポイント識別子の少なくとも１部は、ネットワークノードからのメッセージ転送に連動して変更され得る。別の実施形態において、受信識別子と送信識別子が同じ値を持つことがあり、エントリの例を代わりに以下に示すことができる：
【表２】
0006628792.tif 000003
さらなる実施形態において、フォワーディングテーブルは、エンドポイント識別子の特定の値に基づく１つ以上の他のテーブル中のエントリを個別に参照する複数のエントリを含むことができる。
【００１４】
多くのエンドポイントに相互接続するためのコンピュータネットワークの拡張は、既存のネットワーク技術に基づいて困難であるか、不可能ですらあり得る。例えば、コンピュータネットワークにおける百万のエンドポイントのペアの間でのネットワーク経路計算は、任意の既存のルータのメモリ容量を超える経路指定テーブル（routing  table）という結果をもたらし得る。別の例では、トラフィックエンジニアリングトンネルの計算がＮＰ完全（NP-complete）なので、トラフィックエンジニアリング技術を実行することは困難であり得る。
【００１５】
本技術のいくつかの実施形態において、階層の中で互いに相互接続された別個のドメインにコンピュータネットワークをパーティション化することにより、コンピュータネットワークの拡張性を改善することができる。個々のドメインは、エンドポイント識別子によって別個に特定されたエンドポイントの管理可能な数（例えば、２５６個、５１２個、１０２４個、又は他の適切な数）を含むことができる。ある実施形態において、エンドポイント識別子は、特定のドメインと、特定のドメインが接続された１つ以上のより高いレベルのドメインの中でエンドポイントに対応する個別の値を別個に有することができる。エンドポイント識別子の例が、図５〜図７を参照して以下で説明される。
【００１６】
コントロールプレーン機能（例えば、ネットワーク経路の計算）及び／又はフォワーディングプレーン機能（例えば、経路指定、転送、スイッチング）は、（１）特定のドメインのネットワーク構成（例えば、特定のドメイン内のエンドポイント及び／又はより低いレベルのドメイン）、及び（２）階層の特定のドメインに接続された１つ以上のより高いレベルのドメインに基づいて、ドメイン毎の基準で別個にパーティション化され、実行されることができる。例えば、パケットの宛先エンドポイント（destination  end  point）が、発信元エンドポイント（originating  end  point）と同じドメインにある場合、パケットは、事前に計算されたネットワーク経路に従って、同じドメイン中で宛先エンドポイントに直接転送することができる。同じドメインにないエンドポイントに宛てられたパケットに対しては、パケットは、１つ以上高いレベルのドメインに転送することができ、そこで順番に独立して、エンドポイント識別子に基づいて、さらにパケットの経路指定、転送、又は他の処理が行われる。それ故に、特定のドメインは、様々なコントロールプレーン機能及び／又はフォワーディングプレーン機能を独立して実施するために、（１）特定のドメイン（任意のより低いレベルのドメインを含む）内のエンドポイント及び（２）１つ以上のより高いレベルのドメインのエンドポイントを認識する必要しかない。結果として、発信元ドメインは、階層の他のドメインのネットワーク動作を気にせずに、そのドメインにおける様々なネットワーク動作を管理することができる。それ故に、各パーティション化されたドメインにおけるネットワーク構成及び／又は動作は、全体としてのコンピュータネットワークのサイズが増加したとしても管理可能に保つことができる。
【００１７】
図１Ａは、本技術の実施形態による階層の複数のドメインへのコンピュータネットワーク１００の階層パーティション化を説明する概略図である。図１Ａに示されたように、コンピュータネットワーク１００は、１つ以上のレベル１ドメイン１０４（Ｄ１−１及びＤ１−２としてそれぞれ識別される）と相互接続されたコアドメイン１０２（Ｄ０として識別される）を含むことができる。レベル１ドメイン１０４は、１つ以上のレベル２ドメイン１０６（Ｄ２−１とＤ２−２としてそれぞれ識別される）を含むことができ、それらは、順番に１つ以上のエンドポイント１０８（ＥＰとして識別される）及び１つ以上のネットワークノード１１２を含むことができる。図１Ａにおいて、３つのドメインレベル及び各レベルにおける特定の数のドメインが説明の目的で示されている。別の実施形態において、コンピュータネットワーク１００は、各レベルで適切な数のドメイン及び／又はエンドポイントを有する任意の適切なレベルのドメインにパーティション化することができる。
【００１８】
コアドメイン１０２は、互いに相互接続された１つ以上のネットワークノード１１２を含むことができる。説明の目的で２つのネットワークノード１１２が、図１Ａに示されている。別の実施形態において、コアドメイン１０２は、任意の適切な数のネットワークノード１１２及び／又は他の適切なコンポーネントを含むことができる。ネットワークノード１１２は、より低いレベルのドメインにおけるエンドポイント１０８のペアの間での通信を容易にするために様々なコンピューティング及び／又は通信コンポーネントを含むことができる。例えば、コアドメイン１０２のネットワークノード１１２は、ラベルスイッチルータ（label  switched  router）、長距離高密度波長分割多重化モジュール（long  haul  dense  wavelength  division  multiplexing  module）、ダイナミックコンテキストルータ（dynamic  context  router）、インタフェースメッセージプロセッサ（interface  message  processors）、及び／又は他の適切なコンポーネントを１つ以上含むことができる。
【００１９】
コンピュータネットワーク１００は、階層における隣接したレベルにあるドメインのペアの間の１つ以上のエッジノード（edge  node）を含むこともできる。本明細書で使われるように、エッジノードは、一般に、より低いレベルのドメインと相互接続されたより高いレベルのドメインとの間のネットワークノードを指す。エッジノードは、（１）より高いレベルのドメインへの宛先、及び（２）より低いレベルのドメインに対するエントリポイントの両方、又はその逆も含む。例えば、レベル１ドメインＤ１−１は、コアドメイン１０２とインタフェースするレベル１エッジノード１１４（ＥＮ１として識別される）を含むことができる。レベル１ドメインＤ１−１は、レベル２ドメインＤ２−１とインタフェースするレベル２エッジノード１１４（ＥＮ２−１として識別される）と、レベル２ドメインＤ２−２とインタフェースする別のレベル２エッジノード１１４（ＥＮ２−２として識別される）を含むこともできる。レベル１ドメインＤ１−２は、コアドメインＤ０とインタフェースするレベル１エッジノード１１４（ＥＮ１−２として識別される）と、レベル２ドメインＤ２−３とインタフェースするレベル２エッジノード１１４（ＥＮ２−３として識別される）を含むことができる。
【００２０】
以下でさらに詳細に検討するように、階層の特定のドメインにある任意のエンドポイント１０８は、階層のより低いレベルにある１つ以上のエッジノードと特定のドメインの階層のより高いレベルにある１つ以上のエッジノードを特定することによって、他のドメインにある他のエンドポイント１０８に到達することができる。例えば、レベル１ドメインＤ１−１にあるエンドポイント１０８は、（１）レベル１エッジノードＥＮ１−１と（２）レベル２エッジノードＥＮ２−１及びＥＮ２−２を認識することによって、階層における任意の他のエンドポイント１０８に到達することができる。
【００２１】
図１Ａの隣接したレベルにあるドメインのペアの間で、単に１つのエッジノード１１４しか示されていないが、ある実施形態においては、個々のエッジノード１１４は、同じフォワーディング状態（例えば、コンピュータネットワーク１００における宛先ホップ又は転送パス）を持つエッジノード１１４のグループを含むことができる。例えば、図１Ｂに示されたように、レベル１ドメインＤ１−１は、ＥＮ１−１−１からＥＮ１−１−Ｘとして識別されるエッジノード１１４のグループを含む。レベル１ドメインＤ１−２は、ＥＮ１−２−１からＥＮ１−２−Ｙとして識別されるエッジノード１１４のグループを含む。別の例において、レベル２エッジノードＥＮ２−１、ＥＮ２−２及びＥＮ２−３は、それぞれエッジノード（図示せず）のグループを含むこともできる。ある実施形態において、特定のドメインからのパケットは、エッジノードグループの中のエッジノード１１４の任意の１つを通して、所望の宛先に到達することができる。例えば、レベル１ドメインＤ１−１におけるエンドポイント１０８は、エッジノードＥＮ１−１−１からＥＮ１−１−Ｘのうちの任意の１つを通してレベル２ドメインＤ２−３にある任意のエンドポイント１０８に到達することができる。別の実施形態において、特定のドメインからのパケットは、トラフィックエンジニアリングなどの技術を利用して、エッジノードグループの中のエッジノード１１４の特定の１つを通して、通過することができる。さらなる実施形態において、特定のドメインからのパケットは、他の適切な方法でエッジノードグループにあるエッジノード１１４を通して、通過することができる。
【００２２】
図１Ａに戻って参照すると、コンピュータネットワーク１００の各ドメインは、コントロールプレーン機能（例えば、ネットワーク経路の計算）及び／又はフォワーディングプレーン機能（例えば、経路指定、転送、スイッチング）を、（１）特定のドメインのエンドポイント１０８のネットワーク構成及び（２）階層にあるドメインの位置及び接続性に基づいて、独立して管理することができる。例えば、レベル２ドメインＤ２−１に対するフォワーディングテーブルは、（１）レベル２ドメインＤ２−１のエンドポイント１０８の構成と（２）そのより高いレベルのドメインのアイデンティティ（identity）（すなわち、レベル１ドメインＤ１−１とコアドメインＤ０）に基づいて計算することができる。例えば、フォワーディングテーブルは、ドメインＤ２−１の発信元エンドポイント１０８から同じドメインの宛先エンドポイント１０８への１つ以上のネットワーク経路（例えば、ネットワークノード１１２経由又は図示されていない他のネットワークノード経由）を指定するエントリを含むことができる。ある実施形態において、エッジノード１１４におけるフォワーディングテーブルは、特定のドメインにおけるすべてのエンドポイント１０８に対するネットワーク経路を含むことができ、一方、そのドメインの他のネットワークノード１１２におけるフォワーディングテーブルは、エンドポイント１０８の一部に対するネットワーク経路しか含まないかも知れない。別の実施形態において、すべてのエッジノード１１４とネットワークノード１１２におけるフォワーディングテーブルは、特定のドメイン内のすべてのエンドポイント１０８に対するネットワーク経路を含むことができる。
【００２３】
前の例を続けると、フォワーディングテーブルは、レベル２ドメインＤ２−１にないすべての宛先エンドポイント１０８に対するネットワーク経路を指定する１つ以上のエントリも含むことができる。例えば、レベル２ドメインＤ２−２のすべての宛先エンドポイント１０８は、レベル２エッジノードＥＮ２−１を指すレベル２ドメインＤ２−１の同じネットワーク経路を持つことができる。レベル２ドメインＤ２−３のすべての宛先エンドポイント１０８は、レベル２エッジノードＥＮ２−１、レベル１エッジノードＥＮ１−１、又はネットワークノード１１２の１つを指す同じネットワーク経路を持つことができる。それ故に、他のドメインの複数の宛先エンドポイント１０８に対する１つのネットワーク経路の指定によって、複数の宛先エンドポイント１０８は、単一の（又は限られた数の）宛先に「統合された（aggregated）」と見なされ得る。それ故に、レベル２ドメインＤ２−１に対するフォワーディングテーブルは、管理可能な数のエントリ（例えば、３，０００エントリ未満）を含むことができる。結果として、第１のレベル２ドメインＤ２−１のネットワークノードに対する値段の高い機器を回避することができ、運用の複雑さも従来技術と比較して削減することができる。
【００２４】
レベル１ドメインＤ１−１は、自身のネットワークノード（例えば、レベル１エッジノード１１４）に同様のフォワーディングテーブルを含むこともできる。フォワーディングテーブルは、発信元のより低いレベルのドメイン（例えば、レベル２ドメインＤ２−１）から同じドメインの宛先のより低いレベルのドメイン（例えば、レベル２ドメインＤ２−２）への１つ以上のネットワーク経路を指定するエントリを含むことができる。宛先のより低いレベルのドメインがレベル１ドメインＤ１−１でない場合、レベル１ドメインＤ１−１は、例えば、コアドメイン１０２へのエッジノードＥＮ１−１への、ネットワーク経路を指定することができる。コアドメイン１０２は、レベル１ドメインＤ１−１として同様のやり方でより低いレベルドメインへのネットワーク経路をそれぞれ指定するエントリを有するネットワークノード１１２における別のフォワーディングテーブルを含むこともできる。
【００２５】
コンピュータネットワーク１００のドメインのフォワーディングテーブルは、特定のドメインの特定の宛先エンドポイント１０８への受信メッセージに対するネットワーク経路を指定するエントリを含むこともできる。例えば、レベル１ドメインＤ１−２におけるフォワーディングテーブルは、レベル２ドメインＤ２−３におけるすべてのエンドポイント１０８に対するレベル１エッジノードＥＮ１−２からレベル２エッジノードＥＮ２−３へのネットワーク経路を指定するエントリを含むことができる。レベル２ドメインＤ２−３におけるフォワーディングテーブルは、次に、そのドメインにあるエンドポイント１０８のそれぞれに対する１つ以上のネットワーク経路を含むことができる。いくつかの例が、コンピュータネットワーク１００のオペレーションの例を説明するために以下で検討される。別の実施形態において、コンピュータネットワーク１００は、他の適切な動作、シーケンス、状態、及び／又は他の特徴を持つことができる。
【００２６】
動作中、ドメインにあるネットワークノード１１２（又はエッジノード１１４）は、送信元エンドポイント１０８（例えば、レベル２ドメインＤ２−１のエンドポイント１０８）から関連する宛先エンドポイント識別子と共にパケットを受信することができる。ネットワークノード１１２（又はエッジノードＥＮ２−１）は、宛先エンドポイント識別子の値と自身のフォワーディングテーブルのエントリとを比較して、パケットを転送するためのネットワーク経路を決定する。宛先（例えば、エンドポイント１０８’）が同じドメイン（すなわち、レベル２ドメインＤ２−１）にある場合、エントリの１つが、例えば、ネットワークノード１１２を経由して、エンドポイント１０８’へのメッセージを直接転送するためのネットワーク経路を指定することができる。
【００２７】
宛先（例えば、ドメインＤ２−３のエンドポイント１０８’’）が、送信元エンドポイント１０８と同じドメインにない場合、エントリは、より高いレベルのドメイン（例えば、レベル１ドメインＤ１−１）を指すネットワーク経路を指定することができる。結果として、ネットワークノード１１２は、パケットをエッジノードＥＮ２−１へ転送する。レベル１ドメインＤ１−１において、エッジノードＥＮ２−１は、宛先エンドポイント識別子の値を自身のフォワーディングテーブルのエントリと比較し、コアドメイン１０２のエッジノードＥＮ１−１へのネットワーク経路を決定する。コアドメイン１０２において、エッジノードＥＮ１−１は、宛先エンドポイント識別子の値と自身のフォワーディングテーブルのエントリとを比較して、１つ以上のネットワークノード１１２を通るエッジノードＥＮ１−２へのネットワーク経路を決定する。エッジノードＥＮ１−２は、順番に、エッジノードＥＮ２−３へのネットワーク経路を決定し、次に、エンドポイント１０８’’へメッセージを転送する経路を決定する。
【００２８】
上述のように、コンピュータネットワーク１００における各ドメインと関連するより低いレベルのドメインは、それぞれ自身のネットワークオペレーションを独立に管理することができる。例えば、各ドメインは、特定のドメインのネットワーク構成と特定のドメインに接続された１つ以上のより高いレベルのドメインに基づいて、コントロールプレーン機能及び／又はフォワードプレーン機能を独立して管理することができる。それ故に、特定のドメインのネットワークオペレーションは、コンピュータネットワーク全体のネットワーク状態の情報には依存することなく、その代わりに、その特定のドメインのネットワーク状態には依存する。「ネットワーク状態（network  state）」という用語は、ネットワークノード及び／又はエンドポイントの識別（ＩＤ）及び接続、ネットワークノード及び／又はエンドポイント（例えば、リンクアップ／ダウンなど）の現在の動作状態、コンピュータネットワーク内のバンド幅配分、及び／又はコンピュータネットワークの状況及び／又は特性に関連する他の適切なデータを一般に指す。結果として、コンピュータネットワーク１００の拡張は、既存のドメインの動作の複雑さに限定的な影響か又は何の影響も持たない。例えば、コンピュータネットワーク１００は、別のレベル２ドメインＤ２−４（明確性のために細い線で示された）を含むように拡張された場合、他のレベル２ドメイン１０６のオペレーションは、限定的な調整しか必要としない。例えば、レベル２ドメインＤ２−１、Ｄ２−２、及びＤ２−３のフォワーディングテーブルは、新しいレベル２ドメインＤ２−４に追加されたエンドポイント１０８を認識するために更新することが必要となり得る。しかしながら、新たなドメインＤ２−４の追加のエンドポイントは、個別のドメインにない他のエンドポイントと「統合される」ので、フォワーディングテーブル中のエントリの数は、事実上増加することはない。結果として、コンピュータネットワーク１００は、数百万、数千万のエンドポイント１０８を含むように拡張することができ、一方、各ドメインにおいて動作の複雑性の同様のレベルを維持することが一般にできる。
【００２９】
図２は、本技術の実施形態による１つのデータセンタ又は複数のデータセンタに対するコンピュータネットワーク１００に対する図１Ａの階層パーティション化技術の応用例を説明する概略図である。図２に示したように、コンピュータネットワーク１００は、１つ以上のネットワークノード１１２を有するコアドメイン１０２を含むことができる。コンピュータネットワーク１００’は、１つ以上のレベル１ドメイン１０４を含むこともできる。説明の目的で、個別にドメインＤ１−１とＤ１−２と識別される２つのレベル１ドメイン１０４が図２に示されている。図示した実施形態において、レベル１ドメインＤ１−１は、２つのレベル２ドメイン１０６（別個にＤ２−１とＤ２−２として識別される）を含む。レベル１ドメインＤ１−２は、１つのレベル２ドメインＤ２−３を含む。他の実施形態において、レベル１ドメイン１０４は、他の適切な数のドメイン及び／又はエンドポイントを含むことができる。
【００３０】
レベル２ドメイン１０６は、別個に１つ以上のエンドポイント１０８、１つ以上のエッジノード１１４、及びエンドポイント１０８をエッジノードに１１４に接続する１つ以上のネットワークノード１１２を含むことができる。１つの実施形態において、ネットワークノード１１２は、それぞれ、トップオブラック（「ＴＯＲ」）ルータ又はスイッチを含むことができる。別の実施形態において、ネットワークノード１１２は、ブリッジ、ゲートウェイ、又は他の適切な通信デバイスを含むことができる。図示した実施形態において、レベル２ドメイン１０６のそれぞれは、エッジノードグループを形成する２つのエッジノード１１４（例えば、エッジノードＥＮ２−１とＥＮ２−１’）を含む。ある実施形態において、エッジノードグループにあるエッジノード１１４は、例えば、非トラフィックエンジニアリングタイプのパケットに対して、ランダムにアクセスすることができる。別の実施形態において、エッジノードグループにおける１つのエッジノード１１４は、個別に識別され、例えば、トラフィックエンジニアリングタイプのパケットを処理するよう指定され得る。さらなる実施形態において、エッジノード１１４は、他の適切な方法で他の任意の適切な基準に基づいてアクセスすることができる。上述の実施形態のいずれにおいても、同じエンドポイント識別子は、図３を参照して以下でさらに詳細に検討されるように、使用することができる。
【００３１】
図２に示されたように、コンピュータネットワーク１００’の個別のドメインは、特定のドメインのネットワークオペレーションを構成し、モニタし、及び／又は制御するように適合されたネットワークコントローラ１１０（「コントローラ（controller）」として本明細書で参照される）を含むことができる。図示した実施形態において、ネットワークコントローラ１１０は、個別のコンピューティングデバイスとして示される。別の実施形態において、ネットワークコントローラ１１０は、エンドポイント１０８の１つにおけるサーバ又は仮想マシンであり得る。さらなる実施形態において、複数のドメイン（例えば、レベル２ドメインＤ２−１とＤ２−２）は共通のネットワークコントローラ１１０を共用することができる。コントローラ１１０の例が図４を参照して以下でさらに詳細に検討される。
【００３２】
図２に示された階層パーティション化は、様々な方法で１つ又は複数のデータセンタを覆うことができる。例えば、ある実施形態において、図２に示された階層パーティション化は、データセンタの１つ以上のＴ３ブロードバンドスイッチを含むコアドメイン１０２を有する１つのデータセンタを覆うことができる。レベル１ドメイン１０６は、Ｔ１及び／又はＴＯＲスイッチを有するレベル２ドメイン１０６に接続されたＴ２スイッチを含むことができる。別の実施形態において、レベル１ドメイン１０４は、Ｔ２スイッチ及びＴ１スイッチの両方を含むことができ、一方、レベル２ドメイン１０６は、ＴＯＲスイッチを含む。別の例において、図２に示された階層パーティション化は、複数のデータセンタを覆うこともできる。例えば、コアドメイン１０２は、複数のデータセンタ及びＴ３ブロードバンドスイッチに相互接続されたコアネットワークを含むことができる。各データセンタ内で、レベル１ドメインは、Ｔ２スイッチを含むことができ、一方、レベル２ドメインは、Ｔ１及び／又はＴＯＲスイッチを含むことができる。さらなる例では、パーティション化コンピュータネットワーク１００’は、追加の及び／又は異なるパーティション化レベルを含むことができる。
【００３３】
ある実施形態において、コンピュータネットワーク１００’における各エンドポイント１０８は、スタックに配置された複数のセクションを持つエンドポイント識別子１２０の値によって明確に識別することができる。各セクションは、エンドポイント１０８の物理的又は論理的位置に対応することができる。例えば、図３に示したようにレベル２ドメインＤ２−３の宛先エンドポイント１０８’’は、それぞれがエンドポイント１０８’’の物理的又は論理的位置に対応する４つのセクション１２２ａ〜１２２ｄを持つスタックによって明確に特定することができる。説明した例において、階層にある各レベルのドメインは、エンドポイント識別子１２０のセクションと関連付けられ、特定のドメインと関連する対応するエッジノード１１４の１つ以上に到達するために使用することができる。例えば、第１のセクション１２２ａは、３８という値の例を持つコアドメイン１０２に対応する値を持つ。第２のセクション１２２ｂは、６３という値の例を持つレベル１ドメインＤ１−２に対応する値を持つ。第３のセクション１２２ｃは、レベル２ドメインＤ２−３に対応する値を持つ。第４のセクション１２２ｄは、１４という値の例を持つエンドポイント１０８’’におけるサーバ又は仮想マシンに対応する値を持つ。他の実施形態において、エンドポイント識別子は、図５Ａ又は図５Ｂに示されるように、単一のセクション又は複数のエンドポイント識別子を有する複合（compound）エンドポイント識別子を含むこともできる。さらなる実施形態において、エンドポイント１０８を他の適切な方法及び／又は値によって指定することができ、図７にはＩＰアドレスを使った１例が示されている。
【００３４】
以下の検討では、レベル２ドメインＤ２−１のエンドポイント１０８から異なるレベル２ドメインＤ２−３のエンドポイント１０８’’へのパケットの転送に関するオペレーションの例を説明する。動作中は、エンドポイント１０８は、ドメインＤ２−３の宛先エンドポイント１０８’’の例えば、ＩＰアドレス又は他の適切な識別子などに基づいてエンドポイント識別子１２０ペイロード１２４を有するパケットを生成することができる。エンドポイント識別子１２０は、上述の通り、セクション１２２ａ〜１２２ｄのそれぞれの値を含むことができる。説明した実施形態において、エンドポイント１０８は、生成したパケットをネットワークデバイス１１２へ転送する。ネットワークノード１１２は、エンドポイント識別子１２０のトップセクションの値（すなわち、第１のセクション１２２ａ）と、ネットワークノード１１２のフォワーディングテーブル（図示せず）のエントリを比較し、パケットを転送するための転送パス又は次のホップを決定する。例えば、１つの実施形態において、値「３８」は、レベル２エッジノードＥＮ２−１への転送パスに特に対応することができ、それは、次に、エンドポイント識別子１２０のトップセクションが自身のフォワーディングテーブルと比較され、レベル１エッジノードＥＮ１−１への別の転送パスが決定される。別の実施形態において、値「３８」は、エッジノードＥＮ２−１とＥＮ２−１を含むエッジノードグループに対応することができる。そのような実施形態において、エッジノードＥＮ２−１とＥＮ２−１’の１つは、例えばハッシュ関数、又は他の適切な方法で、パケットをランダムに転送するために選択され得る。
【００３５】
レベル１エッジノードＥＮ１−１は、次に、コアドメイン１０２のネットワークノード１１２の１つ以上にメッセージを転送する。１つ以上のネットワークノード１１２は、トップセクションと自身のフォワーディングテーブル中のエントリを比較し、トップセクション（すなわち、第１のセクション１２２ａ）を削除し、メッセージをレベル１エッジノードＥＮ１−２へ転送する。レベル１エッジノードＥＮ１−２は、次に、トップセクション（すなわち、第２のセクション１２２ｂ）を自身のフォワーディングテーブルにあるエントリと比較し、トップセクション（すなわち、セクション１２２ｂ）を削除し、メッセージをレベル２エッジノードＥＮ２−３又はエッジノードＥＮ２−３とＥＮ２−３’を含むエッジノードグループへ転送する。レベル２エッジノードＥＮ２−３（又はＥＮ２−３’）は、次に、トップセクション（すなわち、第３のセクション１２２ｃ）を自身のフォワーディングテーブルと比較し、トップセクション（すなわち、第３のセクション１２２ｃ）を削除し、メッセージをドメインＤ２−３のネットワークノード１１２’へ転送する。ネットワークノード１１２’は、次に、トップセクション（すなわち、第４のセクション１２２ｄ）と自身のフォワーディングテーブル内のエントリを比較し、トップセクション（すなわち、第４のセクション１２２ｄ）を削除し、メッセージのペイロードをエンドポイント１０８’’へ転送する。
【００３６】
上述の実施形態において、ネットワークノード１１２、エッジノードＥＮ２−１、ＥＮ１−１、ＥＮ１−２、ＥＮ２−３は、ネットワーク処理の間にエンドポイント識別子１２０のトップセクションを変更しない。別の実施形態において、上述のコンポーネントの少なくとも１つは、決定したネットワーク経路に沿ってパケットを転送する前に、エンドポイント識別子１２０のトップセクションの値をスワップ（swap）することができる。スワッピングは、それぞれのコンポーネントで記録され、保存される。さらなる実施形態において、エンドポイント１０８は、ネットワークノード１１２を通過することなくエッジノード１１４に直接メッセージを転送することができる。その上さらなる実施形態において、エッジノードＥＮ１−２、ＥＮ２−３及びネットワークノード１１２’は、例えば、特定のドメイン及び関連するエッジノード１１４に対応するエンドポイント識別子１２０のどのセクションを特定するかによって、エンドポイント識別子１２０のトップセクションを削除せずに、それぞれの転送機能を実行することができる。
【００３７】
別の例において、レベル２ドメインＤ２−１のエンドポイント１０８は、同様のやり方で、同じドメインのエンドポイント１０８’にパケットを送信することもできる。例えば、レベル２ドメインＤ２−１中のエンドポイント１０８は、エンドポイント識別子１２０とペイロード１２４を用いて、パケットを生成することができる。エンドポイント識別子１２０は、エンドポイント１０８’に対応する値（例えば、２２）を持つ１つのセクション（例えば、第４のセクション１２２ｄ）のみを含むことができる。エンドポイント１０８は、次に、エンドポイント識別子１２０とペイロードを持つパケットをネットワークノード１１２へ送信する。ネットワークノード１１２は、エンドポイント識別子１２０のトップセクション（すなわち、第４のセクション１２２ｄ）の値とフォワーディングテーブルのエントリとを比較し、エンドポイント識別子１２０のトップセクションを削除し、決定した転送パスに沿ってエンドポイント１０８’にパケットを転送する。
【００３８】
図４は、本技術の実施形態による図３のコントローラ１１０のソフトウェアコンポーネントの例を示すブロック図である。図４と後述の他の図において、個別のソフトウェアコンポーネント、モジュール、及びルーチンは、Ｃ、Ｃ＋＋、Ｃシャープ、Ｊａｖａ（登録商標）、及び／または他の適切なプログラミング言語におけるソースコードとして書かれるコンピュータプログラム、プロシージャ、またはプロセスであり得る。コンピュータプログラム、プロシージャ、又はプロセスは、オブジェクト又はマシンコードにコンパイルされ、パーソナルコンピュータ、ネットワークサーバ、ラップトップコンピュータ、スマートフォン、及び／又は他の適切なコンピューティングデバイスのプロセッサによって実行されるために提示される。ソース及び／又はオブジェクトコード及び関連するデータの様々な実装は、リードオンリメモリ、ランダムアクセスメモリ、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス、及び／又は他の適切な記憶媒体を含むコンピュータメモリに保存することができる。
【００３９】
ある実施形態において、コントローラは、１つ以上の階層化ドメインのネットワーク状態の記録を包含するデータベース又はネットワーク記憶デバイスを含むか又は動作可能にそれらに接続されることができる。ネットワーク状態の記録は、ネットワークノードの識別、ネットワークノード及び／又はエンドポイントの接続、ネットワークノード及び／又はエンドポイント（例えば、リンクアップ／ダウンなど）の現在の動作状態、ドメイン内のバンド幅分配に関連するデータ、及び／又は他の適切なネットワークデータに関連したデータを含むことができる。上述の通り、コントロールプレーン機能及び／又はフォワーディングプレーン機能のパーティション化によって、各ドメインのネットワーク状態のモニタリングが、従来技術と比較したとき、単純化することができる。
【００４０】
図４に示したように、コントローラ１１０は、互いに動作可能に接続されている、経路計算コンポーネント１３０、エンドポイント識別子アロケーションコンポーネント１３２、エンドポイント識別子サーバ１３４、エンドポイント識別子マネージャ１３６、及びオプションのトラフィックエンジニアリングコンポーネント１３１を含むことができる。コントローラ１１０の特定のコンポーネントが図４に示されているが、他の実施形態において、コントローラ１１０は、１つ以上の入力／出力コンポーネント及び／又は他の適切なタイプのコンポーネントを含むこともできる。
【００４１】
経路計算コンポーネント１３０は、ドメイン構成１４０の入力に基づいて特定のドメイン内のネットワーク経路を計算するように構成することができる。ドメイン構成１４０は、特定のドメイン内、及び階層のより高い１つ以上のドメイン内にあるエンドポイント、ネットワークノード、エッジノードの情報を含むことができる。ドメイン構成１４０は、ネットワーク通信プロトコル、手作業のオペレータによる入力、又は他の適切な方法を使って自動的にコントローラ１１０と通信することができる。経路計算コンポーネント１３０は、様々な経路計算技術で実装することができる。例えば、１つの実施形態において、ネットワーク経路は、１つのエンドポイントから他への最短の経路に基づいて計算することができる。別の実施形態において、経路は、等価複数経路ルーティング（equal  cost  multiple  path  routing）に基づいて計算することができ、フォワーディング等価クラス（forwarding  equivalent  class）におけるパスのグループを単一のエントリ（又は複数のエントリ）で指定することができる。さらなる実施形態において、経路は、分散経路プロトコル及び／又は他の適切な技術と連動して計算することができる。
【００４２】
オプションのトラフィックエンジニアリングコンポーネント１３１は、トラフィックエンジニアリング技術に基づいてドメイン内の追加の経路を計算するように構成することができる。ある実施形態において、トラフィックエンジニアリングコンポーネント１３１は、ネットワークトラフィックの性質、トラフィックの測定又はシミュレーション、ドメインのトポロジ、及び／又は他の適切な基準に基づいてドメイン内の追加の経路を計算することができる。別の実施形態において、コントローラ１１０は、ソースエンドポイントから宛先へのネットワークバンド幅に対するリクエストを受信し、リクエストを満足する配分及び転送パスを決定するトラフィックエンジニアリングコンポーネント１３１へのリクエストを提供する、バンド幅分配コンポーネント（図示せず）も含むことができる。さらなる実施形態における、トラフィックエンジニアリングコンポーネント１３１は、省略することができる。
【００４３】
エンドポイント識別子分配コンポーネント１３２は、ドメイン構成１４０の入力に基づいて、ドメイン内の各エンドポイントに対してエンドポイント識別子の値を計算し、分配するように構成することができる。ある実施形態において、エンドポイント識別子の値は、スタック内の複数のセクションをそれぞれ含むことができる。別の実施形態において、エンドポイント識別子の値は、他の適切なデータスキームを含むこともできる。エンドポイント識別子分配コンポーネント１３２は、エンドポイント識別子の特定の値を経路計算コンポーネント１３０及び／又はオプションのトラフィックエンジニアリングコンポーネント１３１によって計算されたネットワーク経路に関連付けるように構成することもできる。
【００４４】
エンドポイント識別子マネージャ１３６は、ドメイン内のネットワークノード１１２（及び／又はエッジノード１１４）内のフォワーディングテーブル１３７を構成するように適合することができる。図４には示されていないが、エンドポイント識別子マネージャ１３６及びネットワークノード１１２は、通信を容易にする適切なインタフェース（例えば、アプリケーションプログラムインタフェース（「ＡＰＩ」））を含むこともできる。ある実施形態において、フォワーディングテーブル１３７内のエントリは、静的に生成することができる。そのため、フォワーディングテーブル１３７のエントリは、一度計算することができる。別の実施形態において、フォワーディングテーブル１３７のエントリは、定期的、連続的、又は別の適切な方法で更新することができる。
【００４５】
エンドポイント識別子サーバ１３４は、エンドポイント１０８によって問い合わせを受けたときに、エンドポイント識別子１２０の値を提供するように構成することができる。エンドポイント識別子１２０の値は、エッジノード１１４（図１Ａ）によって使用され、エッジノード１１４を通った個々のパケットの通過のために転送パスを決定することができる。例えば、ある実施形態において、送信元エンドポイント１０８は、エンドポイント識別子サーバ１３４に対して適切なインタフェース（例えば、ＡＰＩ）を経由して宛先エンドポイント１０８と関連するエンドポイント識別子１２０の値を問い合わせることができる。応答して、エンドポイント識別子サーバ１３４は、リクエストされた値を送信元エンドポイント１０８に提供する。リクエストされた値は、ネットワークノード１１２のフォワーディングテーブル１３７中のエントリの１つに対応する。送信元エンドポイント１０８は、次に、宛先エンドポイント１０８と関連するエンドポイント識別子の受信した値をメッセージ又はパケットに加える（append）か又はそうでなければ修正し（modify）、転送のためにネットワークノード１１２へメッセージを送信する。
【００４６】
図５Ａは、本技術の実施形態によって配置されたセクション１２２ａ〜１２２ｄを持つエンドポイント識別子の例を説明するブロック図である。図５Ａに示されたように、エンドポイント識別子１２０は、エンドポイント識別子１２０の中に４つのセクション１２２ａ〜１２２ｄを含み、それぞれＩＤ０、ＩＤ１、ＩＤ２、及びＩＤ３と識別され、コンピュータネットワークの階層に従って配置される。例えば、説明した実施形態において、セクションＩＤ０、ＩＤ１、ＩＤ２、及びＩＤ３のそれぞれは、図１Ａに示されたコンピュータネットワーク１００における、コアドメインＤ０（図１Ａ）、レベル１ドメインＤ１（図１Ａ）、レベル２ドメインＤ２（図１Ａ）、及びエンドポイント１０８にそれぞれ対応する値を含むように構成することができる。別の実施形態において、セクションＩＤ０、ＩＤ１、ＩＤ２、及びＩＤ３の少なくとも１つは、異なる及び／又は追加のドメインに対応することができる。さらなる実施形態において、エンドポイント識別子１２０は、２つ、３つ、５つ、又は他の適切な数のセクションを含むことができる。その上さらなる実施形態において、エンドポイント識別子１２０は、キュー、リスト、セット、又は他の適切なデータ構造において、配列することもできる。その上別の実施形態において、セクションＩＤ０、ＩＤ１、ＩＤ２、及びＩＤ３は、図５Ｂを参照してさらに詳細に後述する、コンピュータネットワークにおけるエンドポイントと関連する物理的位置に対応することができる。
【００４７】
図５Ｂは、本技術の実施形態によるセクション１２２ａ〜１２２ｄを有するエンドポイント識別子の別の例を説明するブロック図である。図５Ｂに示したように、セクションＩＤ０、ＩＤ１、ＩＤ２、及びＩＤ３は、それぞれ、エンドポイントに関連する物理的位置に対応することができる。例えば、セクションＩＤ０、ＩＤ１、ＩＤ２、及びＩＤ３は、それぞれ、ネットワークサーバのデータセンタＩＤ１６２、ビルディングＩＤ１６４、ルームＩＤ１６６、及びサーバＩＤ１６８に対応することができる。サーバＩＤによって識別されたネットワークサーバは、データセンタＩＤ１６２によって識別されたデータセンタのビルディングＩＤ１６４によって識別されたビルディングにあるルームＩＤ１６６によって識別されたルームに物理的に位置することができる。別の例において、セクションＩＤ０、ＩＤ１、ＩＤ２、及びＩＤ３の１つは、ネットワークサーバが位置する列を特定する列（row）ＩＤ又はネットワークサーバが位置する列を特定するラックＩＤに対応することもできる。その上さらなる例において、セクションＩＤ３は、例えば、サーバＩＤ１６８によって特定される、ネットワークサーバ上の仮想マシンを特定する仮想マシンＩＤに対応することもできる。その上他の例において、エンドポイント識別子１２０は、他の適切な数のセクション１２２を持つことができ、及び／又は物理的位置ＩＤに対応することもできる。
【００４８】
図６は、本技術の実施形態による図５のセクション１２２ａ〜１２２ｄの１つの実施形態を示すブロック図である。図６に示すように、セクション１２２は、オプションのトラフィックエンジニアリング識別子１５２及び宛先識別子１５４を含むことができる。トラフィックエンジニアリング識別子１５２は、セクション１２２がオプションのトラフィックエンジニアリングコンポーネント１３２（図４）によって計算される経路に関連することを示す値を含むように構成することができる。宛先識別子１５４は、ドメイン、物理的位置、物理的位置のグループ、特定のネットワークノード、ネットワークノードのグループ、エンドポイント、又は他の適切なアイテムに対応する値を含むように構成することができる。さらなる実施形態において、トラフィック識別子１５２は、省略することができる。
【００４９】
図７は、本技術の実施形態によるＩＰアドレス２００を使ったエンドポイント識別子の１つの例を説明する概略図である。図７で説明する実施形態に示されたように、エンドポイント識別子１２０は、数ビット（説明の目的で８ビットが示される）をそれぞれ持つ４つのセクション２０２を有するＩＰアドレス２００を含むことができる。セクション２０２のそれぞれは、図２に示されたコンピュータネットワーク１００のドメインＤ０、Ｄ１、及びＤ２又はエンドポイント１０８を表し、それぞれに対応することができる。別の実施形態において、図７に示されたように割り当てられていない送信元（original）ＩＰアドレスは、図７に示されたように仮想ＩＰアドレスに対応して処理することができる。さらなる実施形態において、ＩＰアドレス２００は、ＩＰｖ６に従うような他の適切なフォーマットを含むことができる。
【００５０】
図８は、本技術の実施形態によるパーティション化コンピュータネットワークを構成するプロセスの実施形態を説明するフローチャートである。図８に示す通り、プロセス３００は、ステージ３０２で、図１Ａに示された、階層にパーティション化されたコンピュータネットワークにおける特定のドメイン及び１つ以上のより高いレベルのドメインの構成データを各ドメインにおいて受信することを含む。構成データは、ドメインにおけるエンドポイントの数及びＩＤ、及びエンドポイントの接続性（connectivity）を含むことができる。構成データは、より高いレベルのドメインへのエッジノードのアイデンティティのようなより高いレベルのドメインに対する接続性データを含むこともできる。
【００５１】
プロセス３００は、ステージ３０４で、受信した構成データに基づいてネットワーク経路を生成することを含むこともできる。ある実施形態において、経路は、ドメインにおいてエンドポイントのペアの間で計算することができる。別の実施形態において、１つ以上の経路は、ドメインにないエンドポイントに関して、より高いレベルのドメインに対するエッジノードを対象として計算することができる。計算された経路は、次に、ステージ３０６で、ドメインに対するフォワーディングテーブル中のエンドポイント識別子と共に保存することができる。
【００５２】
図９Ａは、本技術の実施形態によるドメインにおける、アウトバウンドの通信を管理するプロセス４００の実施形態を説明するフローチャートであり、図９Ｂは、本技術の実施形態によるドメインにおける、インバウンドの通信を管理するプロセス５００を説明するフローチャートである。後述の通り、特定のドメインは、他のドメインから独立してインバウンド及びアウトバウンドの通信を管理し、すなわち、他のドメインにおける経路指定、転送、又は他のネットワーク動作に関係なく管理する。図９Ａに示されるように、プロセス４００は、例えば、特定のドメインにおけるネットワークノード１１２（図１Ａ）又はエッジノード１１４（図１Ａ）において、ステージ４０２で、宛先エンドポイントへのアウトバウンドメッセージを受信することを含めることができる。プロセス４００は、ステージ４０４で、受信したメッセージと関連するエンドポイント識別子をネットワークノード１１２又はエッジノード１１４のフォワーディングテーブルのエントリと比較することを含むこともできる。宛先エンドポイントが、同じドメインにある場合、フォワーディングテーブルは、直接メッセージを宛先エンドポイントに転送するネットワーク経路を指定するエントリを含む。プロセス４００は、次に、指定されたネットワーク経路に従って宛先エンドポイントにメッセージを転送することを含む。宛先のエンドポイントが同じドメインにない場合、フォワーディングテーブルは、メッセージをより高いレベルのドメインに転送するための別のネットワーク経路を指定するエントリを含む。プロセス４００は、次に、ステージ４０８において、メッセージをより高いレベルのドメインに転送することを含む。
【００５３】
図９Ｂは、本技術の実施形態によるドメインにおけるインバウンド通信を独立して管理するプロセス５００の実施形態を説明するフローチャートである。図９Ｂに示したように、ステージ５０２において、プロセス５００は、例えば、ドメインのエッジノード１１４（図１Ａ）において、入来メッセージを受信することを含む。プロセス５００は、ステージ５０４において、メッセージに関連するエンドポイント識別子の値をエッジノード１１４におけるフォワーディングテーブルのエントリと比較することも含む。１つの実施形態において、エンドポイント識別子のトップセクション（top  section）の値は、フォワーディングテーブルのエントリと比較される。他の実施形態において、エンドポイント識別子の追加の及び／又は異なるセクションを代わりに使うことができる。宛先がそのドメインの中の場合、フォワーディングテーブルは、エンドポイントへのネットワーク経路を指定するエントリを含み、プロセス５００は、ステージ５０６において、メッセージをネットワーク経路に従ってエンドポイントに転送することを含む。宛先がそのドメインにない場合、フォワーディングテーブルは、より低いレベルのドメインへの別のネットワーク経路を指定するエントリを含み、ステージ５０８において、プロセス５００は、メッセージをより低いレベルのドメインへ転送することを含む。ある実施形態において、プロセス５００は、メッセージをより低いレベルのドメインに転送する前に、エンドポイント識別子におけるトップセクションを削除することをオプションとして含む。別の実施形態において、トップセクションは、スワップされ、維持され、及び／又はそうでなければ変更することができる。より低いレベルのドメイン（及びより低いレベルのドメインのより低いレベルのドメイン、もしあれば）は、メッセージが宛先エンドポイントに転送されるまで、プロセス５００に一般的に似たような動作を実行することができる。
【００５４】
フォワーディングテーブルが、図９Ａと図９Ｂのネットワーク経路を決定する技術の例として使用されているが、別の実施形態において、ネットワーク経路は、アドホックベースで決定することができる。例えば、１つの実施形態において、インバウンド又はアウトバウンドのメッセージの受信に応答して、メッセージと関連する宛先エンドポイントが特定のドメインにあるか否かの判断をするために判定を実行することができる。他の実施形態において、判定は、連続ベースで、定期的ベースで、又は他の適切なベースで実行することができる。
【００５５】
図１０は、図１Ａ〜図３のコンピュータネットワーク１００のあるコンポーネントに適切なコンピューティングデバイス６００である。例えば、コンピューティングデバイス６００は、図１Ａのエンドポイント１０８又は図２及び図３のコントローラ１１０に適切であり得る。とても基本的な構成６０２において、コンピューティングデバイス６００は、１つ以上のプロセッサ６０４とシステムメモリ６０６を通常は含む。メモリバス６０８は、プロセッサ６０４とシステムメモリ６０６との間の通信に使用することができる。
【００５６】
望ましい構成に応じて、プロセッサ６０４は、マイクロプロセッサ（μＰ）、マイクロコントローラ（μＣ）、デジタルシグナルプロセッサ（ＤＳＰ）、又はそれらの任意の組合せを制限なく含む任意のタイプであり得る。プロセッサ６０４は、レベル１キャッシュ６１０、レベル２キャッシュ６１２、プロセッサコア６１４、及びレジスタ６１６などの１つ以上のレベルのキャッシュを含むことができる。プロセッサコア６１４の例は、数値演算ユニット（ＡＬＵ）、浮動小数点演算ユニット（ＦＰＵ）、デジタルシグナル処理コア（ＤＳＰコア）、又はそれらの任意の組合せを含むことができる。メモリコントローラ６１８の例は、プロセッサ６０４と共に使用されることもでき、又はいくつかの実装において、メモリコントローラ６１８は、プロセッサ６０４の内部部品であり得る。
【００５７】
望ましい構成に応じて、システムメモリ６０６は、揮発性メモリ（ＲＡＭなどの）、不揮発性メモリ（ＲＯＭ、フラッシュメモリなどの）又はそれらの任意の組合せを制限なく含む任意のタイプであり得る。システムメモリ６０６は、オペレーティングシステム６２０、１つ以上のアプリケーション６２２、及びプログラムデータ６２４を含むことができる。この説明した基本構成６０２は、内部の破線内のこれらのコンポーネントによって図１０で説明されている。
【００５８】
コンピューティングデバイス６００は、追加の特徴又は機能性、及び基本構成６０２と他のデバイスとインタフェースとの間の通信を容易にする追加のインタフェースを有することができる。例えば、バス／インタフェースコントローラ６３０は、記憶インタフェースバス６３４を経由して、基本構成６０２と１つ以上のデータ記憶デバイス６３２との間の通信を容易にするために使用することができる。データ記憶デバイス６３２は、リムーバブル記憶デバイス６３６、非リムーバブル記憶デバイス６３８、又はそれらの組合せであり得る。リムーバブル記憶デバイスと非リムーバブル記憶デバイスの例は、２、３例を挙げると、フレキシブルディスクドライブとハードディスクドライブ（ＨＤＤ）などの磁気ディスクドライブ、コンパクトディスク（ＣＤ）ドライブ又はデジタル多用途ディスク（ＤＶＤ）などの光ディスクドライブ、ソリッドステートドライブ（ＳＳＤ）、及びテープドライブを含む。コンピュータ記憶メディアの例は、コンピュータ読取可能命令、データ構造、プログラムモジュール、又は他のデータなどの情報の記憶に対して任意の方法又は技術で実装される揮発性と不揮発性のメディア、リムーバブルと非リムーバブルのメディアを含むことができる。
【００５９】
システムメモリ６０６、リムーバブル記憶デバイス６３６、非リムーバブル記憶デバイス６３８は、コンピュータ読取可能記憶メディアの例である。コンピュータ読取可能記憶メディアは、制限されず、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ又は他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）又は他の光学記憶、磁気カセット、磁気テープ、磁気ディスク記憶又は他の磁気記憶デバイス、又は所望の情報を記憶し、コンピューティングデバイス６００によってアクセス可能な任意の他のメディアを含む。そのようなコンピュータ読取可能記憶メディアは、コンピューティングデバイス６００の一部となり得る。「コンピュータ読取可能記憶メディア（computer  readable  storage  medium）」という用語は、伝搬された信号及び通信メディアを含まない。
【００６０】
コンピューティングデバイス６００は、様々なインタフェースデバイス（例えば、出力デバイス６４２、周辺機器インタフェース６４４、及び通信デバイス６４６）からバス／インタフェースコントローラ６３０を経由して基本構成（basic  configuration）６０２への通信を容易にするインタフェースバス６４０を含むこともできる。出力デバイス６４２の例は、グラフィックス処理ユニット６４８とオーディオ処理ユニット６５０を含み、それらは、１つ以上のＡ／Ｖポート６５２を経由して例えばディスプレイ又はスピーカなどの様々な外部デバイスと通信するように構成することができる。周辺機器インタフェース６４４の例は、シリアルインタフェースコントローラ６５４又はパラレルインタフェースコントローラ６５６を含み、それらは、１つ以上のＩ／Ｏポート６５８を経由して、例えば入力デバイス（例えば、キーボード、マウス、ペン、ボイス入力デバイス、タッチ入力デバイスなど）又は他の周辺機器デバイス（例えば、プリンタ、スキャナなど）などの外部デバイスと通信するように構成することができる。通信デバイス６４６の例は、ネットワークコントローラ６６０を含み、それは、１つ以上の通信ポート６６４を経由してネットワーク通信リンクを通して、１つ以上の他のコンピューティングデバイス６６２との通信を促進するように配置することができる。
【００６１】
ネットワーク通信リンクは、通信メディアの１つの例であり得る。通信メディアは、搬送波又は他の伝送メカニズムのようなコンピュータ読取可能命令、データ構造、プログラムモジュール、又は変調データ信号中の他のデータによって具体化され、情報配信メディアを含むこともできる。「変調されたデータ信号」は、信号中で情報をエンコードするようにその特性の１つ以上が設定又は変更された信号であっても良い。例として、制限なく、通信メディアは、有線ネットワーク又は直接有線接続などの有線メディア、及びアコースティック、無線周波数（ＲＦ）、マイクロ波、赤外線（ＩＲ）及び他の無線メディアなどの無線メディアを含む。本明細書で使用される、コンピュータ読取可能メディア（媒体）（computer  readable  media）という用語は、記憶メディア及び通信メディアの両方を含むことができる。
【００６２】
コンピューティングデバイス６００は、携帯電話、パーソナルデータアシスタント（ＰＤＡ）、パーソナルメディアプレーヤデバイス、ワイヤレスＷｅｂウォッチデバイス、パーソナルヘッドセットデバイス、アプリケーション固有デバイス、又は上述の機能の幾つかを含むハイブリッドデバイスのような小さいフォームファクタのポータブル（又はモバイル）電子デバイスの一部として実装することができる。コンピューティングデバイス６００は、ラップトップコンピュータ構成及び非ラップトップコンピュータ構成の両方を含むパーソナルコンピュータとして実装され得る。
【００６３】
本技術の特定の実施形態が説明の目的で上述された。しかしながら、様々な変更が上述の開示から逸脱することなく行うことができる。その上、１つの実施形態の複数の要素が他の実施形態の要素に追加して、又は代わりに他の実施形態と組合せることができる。その結果、本技術は、添付請求項による場合を除いては制限されない。
【図１Ａ】
0006628792.tif 000004
【図１Ｂ】
0006628792.tif 000005
【図２】
0006628792.tif 000006
【図３】
0006628792.tif 000007
【図４】
0006628792.tif 000008
【図５Ａ】
0006628792.tif 000009
【図５Ｂ】
0006628792.tif 000010
【図６】
0006628792.tif 000011
【図７】
0006628792.tif 000012
【図８】
0006628792.tif 000013
【図９Ａ】
0006628792.tif 000014
【図９Ｂ】
0006628792.tif 000015
【図１０】
0006628792.tif 000016