(57)【特許請求の範囲】
【請求項１】
マルチテナントクラスタ環境においてパーティション認識ルーティングをサポートするための方法であって、
前記マルチテナントクラスタ環境内の１つ以上のテナントをサポートするステップと、
前記１つ以上のテナントの各々を複数のパーティションのうちの１つのパーティションに関連付けるステップと、
前記複数のパーティションの各々を複数のノードのうちの１つ以上のノードに関連付けるステップとを含み、前記複数のノードの各々は複数のスイッチのうちのリーフスイッチに関連付けられ、前記複数のスイッチは複数のリーフスイッチと他のレベルの複数のスイッチとを含み、前記方法はさらに、
１つ以上のリニアフォワーディングテーブルを生成するステップを含み、前記１つ以上のリニアフォワーディングテーブルは前記複数のパーティション間に分離を提供し、
前記複数のノードの各々はパーティショニング順序に関連付けられる、方法。
【請求項２】
１つ以上のリニアフォワーディングテーブルを生成するステップは、
前記複数のリーフスイッチの各々について、前記複数のノードを、各ノードに関連付けられた前記パーティショニング順序に従って順序付けて、ノードの順序をもたらすステップと、
ノードの前記順序で、複数のエンドノードをルーティングするステップとを含み、
前記ルーティングするステップは、各ノードについて、少なくとも１つの下りポートと少なくとも１つの上りポートとを選択するステップを含み、
前記選択するステップは、負荷基準とスイッチのパーティションマーキングとからなる群から選択される少なくとも１つの要因に基づく、請求項１に記載の方法。
【請求項３】
前記複数のノードを、各ノードに関連付けられた前記パーティショニング順序に従って順序付けるステップの前に、単一リーフスイッチパーティションについてフィルタリングするステップをさらに含む、請求項２に記載の方法。
【請求項４】
前記複数のパーティション間に分離を提供するステップは、異なるパーティションに関連付けられたノード間の通信が、前記複数のスイッチのうちのスイッチ間のルートを共有しないことを保証するステップを含む、請求項１〜３のいずれか１項に記載の方法。
【請求項５】
前記複数のスイッチおよび前記複数のノードがツリートポロジーで配置されるようにするステップをさらに含む、請求項１〜４のいずれか１項に記載の方法。
【請求項６】
前記ツリートポロジーは、ファットツリートポロジーである、請求項５に記載の方法。
【請求項７】
前記マルチテナントクラスタ環境は、インフィニバンドネットワークを含む、請求項１〜６のいずれか１項に記載の方法。
【請求項８】
マルチテナントクラスタ環境においてパーティション認識ルーティングをサポートするシステムであって、前記システムは、
１つ以上のマイクロプロセッサと、
前記１つ以上のマイクロプロセッサ上で走るプロセッサとを含み、
前記プロセッサは、複数のステップを実行するために動作し、前記複数のステップは、
前記マルチテナントクラスタ環境内の１つ以上のテナントをサポートするステップと、
前記１つ以上のテナントの各々を複数のパーティションのうちの１つのパーティションに関連付けるステップと、
前記複数のパーティションの各々を複数のノードのうちの１つ以上のノードに関連付けるステップとを含み、前記複数のノードの各々は複数のスイッチのうちのリーフスイッチに関連付けられ、前記複数のスイッチは複数のリーフスイッチと他のレベルの複数のスイッチとを含み、前記複数のステップはさらに、
１つ以上のリニアフォワーディングテーブルを生成するステップを含み、前記１つ以上のリニアフォワーディングテーブルは前記複数のパーティション間に分離を提供し、
前記複数のノードの各々はパーティショニング順序に関連付けられる、システム。
【請求項９】
１つ以上のリニアフォワーディングテーブルを生成するステップは、
前記複数のリーフスイッチの各々について、前記複数のノードを、各ノードに関連付けられた前記パーティショニング順序に従って順序付けて、ノードの順序をもたらすステップと、
ノードの前記順序で、複数のエンドノードをルーティングするステップとを含み、
前記ルーティングするステップは、各ノードについて、少なくとも１つの下りポートと少なくとも１つの上りポートとを選択するステップを含み、
前記選択するステップは、負荷基準とスイッチのパーティションマーキングとからなる群から選択される少なくとも１つの要因に基づく、請求項８に記載のシステム。
【請求項１０】
前記複数のステップは、前記複数のノードを、各ノードに関連付けられた前記パーティショニング順序に従って順序付けるステップの前に、単一リーフスイッチパーティションについてフィルタリングするステップをさらに含む、請求項９に記載のシステム。
【請求項１１】
前記複数のパーティション間に分離を提供するステップは、異なるパーティションに関連付けられたノード間の通信が、前記複数のスイッチのうちのスイッチ間のルートを共有しないことを保証するステップを含む、請求項８〜１０のいずれか１項に記載のシステム。
【請求項１２】
前記複数のスイッチおよび前記複数のノードがツリートポロジーで配置されるようになっている、請求項８〜１１のいずれか１項に記載のシステム。
【請求項１３】
前記ツリートポロジーは、ファットツリートポロジーである、請求項１２に記載のシステム。
【請求項１４】
前記マルチテナントクラスタ環境は、インフィニバンドネットワークを含む、請求項８〜１３のいずれか１項に記載のシステム。
【請求項１５】
請求項１〜７のいずれかに記載の方法をコンピュータに実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
著作権表示：
この特許文献の開示の一部は、著作権保護の対象となる資料を含む。この特許文献または特許開示は特許商標庁の特許ファイルまたは記録に記載されているため、著作権保有者は、何人によるその複写複製に対して異議はないが、その他の場合には如何なるときもすべての著作権を保有する。
【０００２】
発明の分野：
この発明は一般にコンピュータシステムに関し、特にマルチテナントクラスタ環境に関する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
背景：
マルチテナンシーは、利用可能なシステムリソースの多大な利用を約束し、サービスプロバイダのためにコスト効率の良い動作を維持するのに役立つ。しかしながら、マルチテナント高性能コンピューティング（multi-tenant high-performance computing：ＨＰＣ）インフラストラクチャは、テナントへの性能分離（performance isolation）の提供およびネットワークファブリック全体にわたる効率的な負荷バランシングの達成にともに関連付けられた独特の課題をもたらす。
【課題を解決するための手段】
【０００４】
概要：
システムおよび方法は、マルチテナントクラスタ環境においてパーティション認識ルーティングをサポートすることができる。例示的な方法は、マルチテナントクラスタ環境内の１つ以上のテナントをサポートすることができる。この方法は、１つ以上のテナントの各々を複数のパーティションのうちの１つのパーティションに関連付けることができる。この方法は次に、複数のパーティションの各々を複数のノードのうちの１つ以上のノードに関連付けることができ、複数のノードの各々は複数のスイッチのうちのリーフスイッチに関連付けられ、複数のスイッチは複数のリーフスイッチと複数のルートスイッチとを含む。最後に、この方法は、１つ以上のリニアフォワーディングテーブルを生成することができ、１つ以上のリニアフォワーディングテーブルは複数のパーティション間に分離を提供し、複数のノードの各々はパーティショニング順序に関連付けられる。
【発明の効果】
【０００５】
一実施形態によれば、マルチテナントＨＰＣシステムでは、各テナントは、他のテナントの作業負荷によって影響されない、予測可能なネットワーク性能を体験することができる。
【図面の簡単な説明】
【０００６】
【図１】一実施形態に従ったマルチテナントクラスタ環境の図である。
【図２】本開示の一実施形態が実践され得るネットワーク環境におけるツリートポロジーの図である。
【図３】本開示の一実施形態が実践され得るマルチテナントクラスタ環境におけるルーティングの図である。
【図４】本開示の一実施形態が実践され得るマルチテナントクラスタ環境におけるルーティングの図である。
【図５】一実施形態に従ったマルチテナントクラスタ環境においてパーティション認識ルーティングをサポートする図である。
【図６】一実施形態に従ったマルチテナントクラスタ環境においてパーティション認識ルーティングをサポートする図である。
【図７】一実施形態に従ったマルチテナントクラスタ環境においてパーティション認識ルーティングをサポートする図である。
【図８】一実施形態に従ったマルチテナントクラスタ環境においてパーティション認識ルーティングをサポートする図である。
【図９】一実施形態に従ったマルチテナントクラスタ環境においてパーティション認識ルーティングをサポートするための方法の図である。
【発明を実施するための形態】
【０００７】
詳細な説明：
以下の詳細な説明では、添付図面の図において、この発明を限定のためではなく例示のために説明する。なお、この開示における「ある」または「１つの」または「いくつかの」実施形態への参照は必ずしも同じ実施形態に対するものではなく、そのような参照は少なくとも１つを意味する。特定の実現化例が説明されるが、これらの特定の実現化例は例示的な目的のためにのみ提供されるということが理解される。当業者であれば、他の構成要素および構成が、この発明の範囲および精神から逸脱することなく使用されてもよい、ということを認識するであろう。
【０００８】
図面および詳細な説明全体にわたって同じ要素を示すために、共通の参照番号が使用される。したがって、ある図で使用される参照番号は、要素が別のところで説明される場合、そのような図に特有の詳細な説明において参照される場合もあり、または参照されない場合もある。
【０００９】
この発明の以下の説明は、高性能ネットワークについての一例として、インフィニバンド（登録商標）（InfiniBand：ＩＢ）ネットワークを使用する。他のタイプの高性能ネットワークが何ら限定されることなく使用され得るということは、当業者には明らかであろう。以下の説明はまた、ファブリックトポロジーについての一例として、ファットツリートポロジーを使用する。他のタイプのファブリックトポロジーが何ら限定されることなく使用され得るということは、当業者には明らかであろう。
【００１０】
インフィニバンド
インフィニバンド（ＩＢ）は、インフィニバンド・トレード・アソシエーション（InfiniBand Trade Association）によって開発されたオープン標準無損失ネットワーク技術である。この技術は、特にＨＰＣアプリケーションおよびデータセンターを対象とする、高スループットおよび少ない待ち時間の通信を提供するシリアルポイントツーポイント全二重相互接続（serial point-to-point full-duplex interconnect）に基づいている。
【００１１】
インフィニバンドアーキテクチャ（InfiniBand Architecture：ＩＢＡ）は、２層トポロジー分割をサポートする。低層では、ＩＢネットワークはサブネットと呼ばれ、１つのサブネットは、スイッチおよびポイントツーポイントリンクを使用して相互接続される一組のホストを含み得る。より高いレベルでは、１つのＩＢファブリックは、ルータを使用して相互接続され得る１つ以上のサブネットを構成する。
【００１２】
１つのサブネット内で、ホストは、スイッチおよびポイントツーポイントリンクを使用して接続される。加えて、サブネットにおける指定されたサブネットデバイス上に存在する、１つのマスター管理エンティティ、すなわちサブネットマネージャ（subnet manager：ＳＭ）がある。サブネットマネージャは、ＩＢサブネットを構成し、起動し、維持することを担当する。加えて、サブネットマネージャ（ＳＭ）は、ＩＢファブリックにおいてルーティングテーブル計算を行なうことを担当し得る。ここで、たとえば、ＩＢネットワークのルーティングは、ローカルサブネットにおけるすべての送信元と宛先とのペア間の適正な負荷バランシングを目標とする。
【００１３】
サブネット管理インターフェイスを通して、サブネットマネージャは、サブネット管理パケット（subnet management packet：ＳＭＰ）と呼ばれる制御パケットを、サブネット管理エージェント（subnet management agent：ＳＭＡ）と交換する。サブネット管理エージェントは、すべてのＩＢサブネットデバイス上に存在する。ＳＭＰを使用することにより、サブネットマネージャは、ファブリックを発見し、エンドノードおよびスイッチを構成し、ＳＭＡから通知を受信することができる。
【００１４】
一般に、マスターサブネットマネージャを除く他のすべてのサブネットマネージャは、耐故障性のために待機モードで作動する。しかしながら、マスターサブネットマネージャが故障した状況では、待機中のサブネットマネージャによって、新しいマスターサブネットマネージャが取り決められる。マスターサブネットマネージャはまた、サブネットの周期的な掃引を行なってあらゆるトポロジー変化を検出し、それに応じてネットワークを再構成する。
【００１５】
さらに、サブネット内のホストおよびスイッチは、ローカル識別子（local identifier：ＬＩＤ）を使用してアドレス指定可能であり、単一のサブネットは４９１５１個のＬＩＤに制限可能である。サブネット内で有効なローカルアドレスであるＬＩＤの他に、各ＩＢデバイスは、その不揮発性メモリに焼き付けられる６４ビットのグローバル一意識別子（global unique identifier：ＧＵＩＤ）を有し得る。ＧＵＩＤは、ＩＢレイヤー３（Ｌ３）アドレスであるグローバル識別子（global identifier：ＧＩＤ）を形成するために使用され得る。ＧＩＤは、６４ビットのサブネット識別子（ＩＤ）を６４ビットのＧＵＩＤと連結して、ＩＰｖ６のような１２８ビットのアドレスを形成することによって作成され得る。たとえば、異なるポートＧＵＩＤが、ＩＢファブリックに接続されたポートに割当てられ得る。
【００１６】
ＳＭは、ネットワーク初期化時間に、ルーティングテーブル（すなわち、ツリー内のノードの各ペア間の接続／ルート）を計算し得る。さらに、トポロジーが変化するたびに、ルーティングテーブルは、接続性および最適性能を保証するために更新され得る。通常動作中、ＳＭは、トポロジー変化をチェックするためにネットワークの周期的な光掃引を実行し得る。光掃引中に変化が発見された場合、または、ネットワーク変化を信号で伝えるメッセージ（トラップ）をＳＭが受信した場合、ＳＭは、発見された変化に従ってネットワークを再構成し得る。
【００１７】
たとえば、ＳＭは、リンクがダウンした場合、デバイスが追加された場合、またはリンクが除去された場合など、ネットワークトポロジーが変化する場合に、ネットワークを再構成し得る。再構成ステップは、ネットワーク初期化中に行なわれるステップを含み得る。さらに、再構成は、ネットワーク変化が生じたサブネットに制限されるローカルスコープを有し得る。また、ルータを用いる大きいファブリックのセグメント化は、再構成スコープを制限し得る。
【００１８】
ＩＢシステムにおけるマルチテナンシー
ネットワーキングの観点から見れば、マルチナンシーは、パーティショニングを介して、ネットワークリソースの多大な利用を提供し、サービスプロバイダのためにコスト効率の良い動作を維持するのに役立ち得る。しかしながら、マルチテナントインフラストラクチャは、いくつかの重要なセキュリティ問題も課し、最も難しい問題のうちの１つは、テナントへの性能分離の提供に関連付けられている。各テナントには、システムにおける他のテナントの作業負荷によって影響されない、予測可能なネットワーク性能が提供されるべきである。ＩＢシステムにおけるネットワーク分離は、パーティショニングを通して提供され得る。
【００１９】
一実施形態によれば、パーティションとは、あるグループのメンバーは同じグループの他のメンバーにのみ通信できるといった、ポートの論理グループである。ホストチャネルアダプタ（host channel adapter：ＨＣＡ）およびスイッチで、パケットは、分離を実施するためにパーティションメンバーシップ情報を使用してフィルタリングされ得る。無効のパーティショニング情報を有するパケットは、当該パケットが入来ポートに到着するやいなや破棄され得る。マルチテナントＩＢシステムでは、パーティションは、テナントクラスタを作成するために使用され得る。パーティション実施が行なわれると、ノードは、異なるテナントクラスタに属する他のノードと通信できない。このように、損なわれた、または悪意のあるテナントノードが存在する場合でも、システムのセキュリティは保証され得る。
【００２０】
ＩＢルーティングは通常、スイッチに格納されたリニアフォワーディングテーブル（linear forwarding table：ＬＦＴ）に基づき得る。ＬＦＴは、パーティショニング情報を検討することなく、サブネットマネージャ（ＳＭ）によって計算される。よって、中間ネットワークリンクは、異なるパーティションに属するトラフィックを運ぶかもしれない。中間リンクのこの共有は、パーティション干渉をもたらす場合がある。その結果、テナントは、予測不能なネットワーク性能を体験する。さらに、ルーティングアルゴリズムのバランシング特徴も、パーティショニングされたサブネットにおいて影響を受ける。これは、パーティション境界を横断するリンクがユーザトラフィックのために利用されなくても、これらのリンクは他の機能的リンクと同じやり方でルーティングされる（よって、バランシングにおいて検討される）ためである。劣化したバランシングは、減少した有効帯域幅および次善のネットワーク利用をもたらすかもしれない。
【００２１】
ＩＢは通常、各パーティションに、他のパーティションにおけるノードにかかわらず、利用可能な帯域幅の共有を保証するために使用され得るサービス品質（Quality of Service：ＱｏＳ）特徴を提供する。次に、サービスレベル（service level：ＳＬ）と呼ばれる利用可能な差別化されたトラフィッククラスを各パーティションに割当てることによって、帯域幅保証が提供される。各ＳＬは次に、リンク上の利用可能な１５個の仮想レーン（virtual lane：ＶＬ）のうちの１つに、ＳＬ対ＶＬマッピングテーブルに従ってマッピングされる。
【００２２】
ＳＬをパーティションに割当てる際、ＩＢネットワークは通常、多数のパーティションを有し得る（たとえば、各ポートは最大３２，７６８個のパーティションのメンバーであり得る）一方で、システムはネットワークにおいて別個のパーティションを作成するために１５個のＶＬしか利用できないため、問題が生じるおそれがある。さらに、既存のＩＢハードウェアにおいて９個のＶＬ（サブネット管理用に確保された１個を含む）しかサポートしないことは、よくあることである。また、ＳＬは稀少なリソースであるため、それらのうちのできるだけ多くを、他の目的のために、たとえば、ネットワークにおいて耐故障性またはサービス差別化を提供するために、自由にしておくことが望ましい場合がある。
【００２３】
ＩＢアーキテクチャ
一実施形態によれば、ＩＢは、ＩＢＴＡ（インフィニバンド・トレード・アソシエーション）によって開発されたオープン標準無損失ネットワーク技術である。この技術は、高スループットおよび少ない待ち時間の通信を提供するシリアルポイントツーポイント全二重相互接続を定義する。ＩＢネットワークは、ルータを使用して相互接続された１つ以上のサブネットからなり得る。１つのサブネット内で、ホストは、スイッチおよびポイントツーポイントリンクを使用して接続される。各ＩＢサブネット内には、ＩＢサブネットを構成し、起動し、維持する、任意の指定されたサブネットデバイス上に存在する、１つのマスター管理エンティティ、すなわちサブネットマネージャ（ＳＭ）があり得る。
【００２４】
サブネット管理インターフェイスを通して、ＳＭは、サブネット管理パケット（ＳＭＰ）と呼ばれる制御パケットを、すべてのＩＢデバイス上に存在するサブネット管理エージェント（ＳＭＡ）と交換する。ＳＭＰを使用して、ＳＭは、ファブリックを発見し、エンドノードおよびスイッチを構成し、ＳＭＡから通知を受信することができる。ＳＭはまた、サブネットの周期的な光掃引を行なってあらゆるトポロジー変化を検出し、それに応じてネットワークを再構成することができる。
【００２５】
一実施形態によれば、ＩＢネットワークにおけるサブネット内ルーティングは、スイッチに格納されたＬＦＴに基づき得る。ＬＦＴは、使用中のルーティングメカニズムに従って、ＳＭによって計算される。サブネットでは、エンドノード上のすべてのＨＣＡポートおよびすべてのスイッチが、ローカル識別子（ＬＩＤ）を使用してアドレス指定される。ＬＦＴにおける各エントリは、宛先ＬＩＤ（ＤＬＩＤ）と出力ポートとからなる。テーブルにおけるＬＩＤごとに１つのエントリのみがサポートされる。パケットがあるスイッチに到着すると、その出力ポートは、そのスイッチのフォワーディングテーブルにおいてＤＬＩＤを探すことによって判断される。所与の送信元−宛先ペア（ＬＩＤペア）間のネットワークにおいてパケットは同じ経路を通るため、ルーティングは決定論的である。
【００２６】
一実施形態によれば、パーティショニングは、ネットワークファブリックを共有するシステムの論理グループの分離を提供するためにＩＢによってサポートされたセキュリティメカニズムである。ファブリックにおけるノード上の各ＨＣＡポートは、１つ以上のパーティションのメンバーであり得る。パーティションメンバーシップは、ＳＭの一部であり得る集中型パーティションマネージャによって管理される。ＳＭは、各ポートに関するパーティションメンバーシップ情報を、１６ビットのパーティションキー（Ｐキー）のテーブルとして構成することができる。ＳＭはまた、ＬＩＤに関連付けられたＰキー情報を含むパーティション実施テーブルを用いて、スイッチおよびルータを構成することができる。
【００２７】
一実施形態によれば、ノード間の通信のために、管理キューペア（ＱＰ０およびＱＰ１）を除き、キューペア（Queue Pair：ＱＰ）およびエンドツーエンドコンテキスト（End-to-End context：ＥＥＣ）を特定のパーティションに割当てることができる。次に、Ｐキー情報を、送信されたすべてのＩＢトランスポートパケットに追加することができる。パケットがＨＣＡポートまたはスイッチに到着すると、そのＰキー値を、ＳＭによって構成されたテーブルに対して確認することができる。無効のＰキー値が見つかった場合、そのパケットは直ちに廃棄される。このように、通信は、パーティションを共有するポート間でのみ許可される。
【００２８】
一実施形態に従ったマルチテナントクラスタ環境の図を示す図１に、ＩＢパーティションの一例を示す。図１に示す例では、ノードＡ１０１〜Ｅ１０５は、インフィニバンドファブリック１００を使用して、それぞれのホストチャネルアダプタ１１１〜１１５を介して通信する。ノードＡ〜Ｅは、パーティション、すなわちパーティション１  １１０、パーティション２  １２０、およびパーティション３  １３０内に配置される。パーティション１は、ノードＡ１０１およびノードＤ１０４を含む。パーティション２は、ノードＡ１０１、ノードＢ１０２、およびノードＣ１０３を含む。パーティション３は、ノードＣ１０３およびノードＥ１０５を含む。パーティションの配置のため、ノードＤ１０４およびノードＥ１０５は、１つのパーティションを共有していないので、通信することを許可されない。一方、たとえば、ノードＡ１０１およびノードＣ１０３は、双方ともパーティション２  １２０の一部であるため、通信することを許可される。
【００２９】
一実施形態によれば、ＩＢは、各物理リンクがＶＬを使用して複数の仮想リンクに分割され得る階層化アーキテクチャである。各ＶＬは、それ自体のバッファリングリソース、フロー制御リソース、および輻輳管理リソースを有し得る。ＱｏＳは、差別化された一組のトラフィッククラス、すなわちＳＬを通して提供され得る。ＳＬは、ネットワークにおいてあるパケットが受信できるサービスのクラスを表わす。各ＳＬは、構成されたＳＬ対ＶＬマッピングテーブルに基づいて、リンク上のＶＬにマッピングされる。ＩＢは、最大１６個のＶＬをサポートする。しかしながら、最後のＶＬはサブネット管理トラフィック用に確保され、通常、ユーザアプリケーションによって使用されない。
【００３０】
ファットツリー（ＦＴｒｅｅ）トポロジーおよびルーティング
一実施形態によれば、ＩＢベースのＨＰＣシステムのいくつかは、ファットツリートポロジーを採用して、ファットツリーが提供する有用な特性を利用する。これらの特性は、各送信元宛先ペア間の複数経路の利用可能性に起因する、完全二等分帯域幅および固有の耐故障性を含む。ファットツリーの背後にある初期の考えは、ツリーがトポロジーのルート（root）に近づくにつれて、より利用可能な帯域幅を用いて、ノード間のより太いリンクを採用することであった。より太いリンクは、上位レベルのスイッチにおける輻輳を回避するのに役立つことができ、二等分帯域幅は維持される。
【００３１】
図２は、本開示の一実施形態が実践され得るネットワーク環境におけるツリートポロジーの図を示す。図２に示すように、ネットワークファブリック２００において、１つ以上のエンドノード２０１〜２０４が接続され得る。ネットワークファブリック２００は、複数のリーフスイッチ２１１〜２１４と複数のスパインスイッチまたはルート（root）スイッチ２３１〜２３４とを含むファットツリートポロジーに基づき得る。加えて、ネットワークファブリック２００は、スイッチ２２１〜２２４といった１つ以上の中間スイッチを含み得る。
【００３２】
また、図２に示すように、エンドノード２０１〜２０４の各々は、マルチホームノード、すなわち、複数のポートを通してネットワークファブリック２００の２つ以上の部分に接続される単一のノードであり得る。たとえば、ノード２０１はポートＨ１およびＨ２を含み、ノード２０２はポートＨ３およびＨ４を含み、ノード２０３はポートＨ５およびＨ６を含み、ノード２０４はポートＨ７およびＨ８を含み得る。
【００３３】
加えて、各スイッチは複数のスイッチポートを有し得る。たとえば、ルートスイッチ２３１はスイッチポート１〜２を有し、ルートスイッチ２３２はスイッチポート３〜４を有し、ルートスイッチ２３３はスイッチポート５〜６を有し、ルートスイッチ２３４はスイッチポート７〜８を有し得る。
【００３４】
一実施形態によれば、ファットツリールーティングメカニズムは、ＩＢベースのファットツリートポロジーのための最も人気のあるルーティングアルゴリズムのうちの１つである。ファットツリールーティングメカニズムはまた、ＯＦＥＤ（Open Fabric Enterprise Distribution：ＩＢベースのアプリケーションを構築しデプロイメントするための標準ソフトウェアスタック）サブネットマネージャ、すなわちＯｐｅｎＳＭにおいて実現される。
【００３５】
ファットツリールーティングメカニズムは、ネットワークファブリックにおいてリンクを越えて最短経路ルートを均一に広げるＬＦＴを生成することを目標とする。このメカニズムは、索引付け順序でファブリックを横断し、エンドノードの目標ＬＩＤ、ひいては対応するルートを各スイッチポートに割当てる。同じリーフスイッチに接続されたエンドノードについては、索引付け順序は、エンドノードが接続されるスイッチポートに依存し得る（すなわち、ポートナンバリングシーケンス）。各ポートについては、メカニズムはポート使用カウンタを維持することができ、新しいルートが追加されるたびに、ポート使用カウンタを使用して使用最小ポートを選択する。
【００３６】
上述のように、パーティショニングされたサブネットでは、共通のパーティションのメンバーではないノードは通信することを許可されない。実際には、これは、ファットツリールーティングアルゴリズムによって割当てられたルートのうちのいくつかがユーザトラフィックのために使用されないことを意味する。ファットツリールーティングメカニズムが、それらのルートについてのＬＦＴを、他の機能的経路と同じやり方で生成する場合、問題が生じる。ノードは索引付けの順序でルーティングされるため、この挙動は、リンク上の劣化したバランシングをもたらすおそれがある。パーティションに気づかずにルーティングが行なわれるため、ファットツリーでルーティングされたサブネットは通常、パーティション間の劣った分離を提供する。
【００３７】
図３は、本開示の一実施形態が実践され得るマルチテナントクラスタ環境におけるルーティングの図を示す。より特定的には、図３は、劣化した負荷バランシングおよび劣った分離の問題を詳述する。
【００３８】
図３は、ルートスイッチ３２５〜３２６およびリーフスイッチ３２０〜３２１という４つのスイッチと、３つの重複するパーティションにあるノードＡ３０１〜Ｆ３０６という６つのエンドノードとを有する２レベルファットツリートポロジーを示す。パーティション１は、ノードＢ３０２およびノードＣ３０３を含む。パーティション２は、ノードＡ３０１、ノードＣ３０３、ノードＤ３０４、およびノードＦ３０６を含む。最後に、パーティション３は、ノードＤ３０４およびノードＥ３０５を含む。
【００３９】
一実施形態によれば、パーティション１および３はそれぞれリーフスイッチ３２０および３２１内に完全に限定される（すなわち、単一リーフスイッチパーティション）。このため、パーティション１および３におけるノード間の通信は、ルートスイッチ３２５または３２６にトラフィックを移動させることなく、それらの対応するリーフスイッチを通して起こる。このトポロジーがファットツリールーティングメカニズムによってルーティングされる場合、リーフスイッチ３２０および３２１に接続されたノードに向かうルートにはルートスイッチが割当てられ、そのため、リーフスイッチ間フローはそれらの宛先に到着できる。負荷バランシングのために、ＡおよびＣに向かうルートにはルートスイッチ３２５が割当てられ（図ではリンクｐとして示す）、一方、ルートスイッチ３２６はノードＢに向かうトラフィックをルーティングする（図ではリンクｑとして示す）。同様に、リーフスイッチ３２１については、リーフスイッチ間パーティション２におけるノードＤおよびＦに向かうトラフィックはルートスイッチ３２５を介してルーティングされ（図ではリンクｒとして示す）、ノードＥに向かうトラフィックはルートスイッチ３２６を介してルーティングされる（図ではリンクｓとして示す）。
【００４０】
一実施形態によれば、ルートスイッチに対するエンドポート選択は、ノード識別子を有する小さい円として図に示される。ルーティングはパーティショニング情報を検討することなく（ファットツリールーティングメカニズムを使用して）行なわれるため、サブネットにおける経路は、バランスがうまくとれていない。リンクｐおよびｒは過剰に申し込まれ、一方、リーフスイッチ内フローはリンクｑまたはｓをまったく使用しないであろう。ノードＢおよびＥに向けて割当てられたルートは、双方のノードが、それらのパーティショニングに起因して、それらのリーフスイッチの外部からの通信を受信することができないため、（比較的低い管理トラフィックを除き）利用されない。このバランシングの問題はまた、あるパーティションの通信がトポロジーにおけるレベルのうちのいくつかのみに制限される場合に、ファットツリーで起こる。
【００４１】
本開示の一実施形態が実践され得るマルチテナントクラスタ環境におけるルーティングの図を示す図４を、ここで参照する。より特定的には、図４は、ファットツリー内の劣った分離に関連する問題を詳述する。
【００４２】
図４は、ルートスイッチ４２５〜４２６およびリーフスイッチ４２０〜４２１という４つのスイッチと、ノードＡ４０１〜Ｇ４０８という８つのエンドノードとを有する２レベルファットツリートポロジーを示す。同様に、エンドノードは２つのパーティションに分割される。パーティション１は、ノードＡ４０１、ノードＢ４０２、ノードＧ４０７、およびノードＨ４０８を含む。パーティション２は、ノードＣ４０３、ノードＤ４０４、ノードＥ４０５、およびノードＦ４０６を含む。
【００４３】
パーティションの各々は、２つのリーフスイッチの各々に接続された２つのノードを有する。図に示すように、ファットツリールーティングメカニズムは、ルートスイッチ４２５および４２６上で下向きポートを割当てる。ファットツリールーティングメカニズムの性質のため、各ルートスイッチは、双方のパーティションに属するノードに向かうトラフィックをルーティングし、それは、パーティショニンングされた環境において望まれない、劣った分離を提供する。たとえば、ノードＡおよびＣに向かうトラフィックは、共有されたリンクｐ上にルーティングされる。異なるパーティションのノード間の中間リンクの共有は、それらの間の干渉を引き起こすおそれがある。ネットワークはパーティション間の完全分離を提供するために十分なリソースをルートレベルで有するにもかかわらず、ファットツリールーティングメカニズムは所望の分離を提供しない。
【００４４】
パーティション認識ファットツリー（ｐＦＴｒｅｅ）ルーティング
一実施形態によれば、パーティション認識ファットツリールーティングメカニズム（ここにさまざまにｐＦＴｒｅｅと呼ばれる）は、ＩＢネットワークにおけるマルチテナンシーに関連付けられた所望の目的を達成することができる。たとえば、ｐＦＴｒｅｅメカニズムは、ツリーにおいてリンクを越えてルートを均一に分散することによって、ファットツリートポロジーのためのバランスのとれたリニアフォワーディングテーブルを提供することができる。加えて、ｐＦＴｒｅｅは、リンク上でルートをバランスよく維持しながら、異なるパーティションに属する経路間の競合を除去することができる。
【００４５】
一実施形態によれば、ｐＦＴｒｅｅメカニズムは、サブネットについてのパーティショニング情報を使用して、あるパーティションにおけるノードが、他のパーティションで走る作業負荷に影響されない予測可能なネットワーク性能を受信することを保証することができる。トポロジーが（負荷バランシングについて妥協することなく）各レベルでパーティション分離を提供するために利用可能であるリンクを十分に有していない状況では、ｐＦＴｒｅｅは、競合の影響を減少させるためにＶＬを割当てることができる。
【００４６】
一実施形態によれば、ｐＦＴｒｅｅメカニズムは、各エンドノードに関連付けられたＬＩＤのためにすべての関連スイッチ上にＬＦＴをセットアップするように、再帰的に機能することができる。これは、以下の擬似コード（ここにリスティング１と呼ばれる）において示される。
【００４７】
【数１】
0006653699.tif 000002
【００４８】
一実施形態によれば、ROUTEDOWNGOINGBYASCENDING()が、以下の擬似コード（ここにリスティング２と呼ばれる）において例示される。
【００４９】
【数２】
0006653699.tif 000003
【００５０】
一実施形態によれば、ROUTEUPGOINGBYDESCENDING()が、以下の擬似コード（ここにリスティング３と呼ばれる）において例示される。
【００５１】
【数３】
0006653699.tif 000004
【００５２】
一実施形態によれば、ASSIGNVIRTUALLANES()が、以下の擬似コード（ここにリスティング４と呼ばれる）において例示される。
【００５３】
【数４】
0006653699.tif 000005
【００５４】
一実施形態によれば、単一リーフスイッチパーティション（すなわち、単一のリーフスイッチ内で完全に通信することができるパーティション）をフィルタリングして除去した後、各リーフスイッチについて、メカニズムは、接続されたエンドノードを、パーティショニングに特有の順序で（たとえば、一意的なパーティショニング順序番号を有する各パーティションを介して）ソートすることができる（上述のリスティング１の４行目）。この順序付けは、リーフスイッチでの利用可能な数の上り（up-going）ポートを考慮して、ノードがそれらのパーティションに従ってルーティングされることを保証することを支援できる。ｐＦＴｒｅｅメカニズムは次に、ROUTEDOWNGOINGBYASCENDING（上述のリスティング１の９行目）などの機能を呼び出し、ツリーにおいて上昇して、リスティング２に示すように、ＬＩＤをルーティングするための次のレベルのポートを選択することができる。
【００５５】
一実施形態によれば、ポート選択は、すでに割当てられた最小数のルートに基づく。これは、利用可能な経路を越えて負荷が広がることを保証するのに役立ち得る。しかしながら、いくつかのポートが同じ負荷で利用可能である場合、機能はこれらの負荷最小ポートを通して繰り返され、ルーティングされているノードのパーティションキーで既にマーキングされているスイッチに接続されているポートを選択することができる（リスティング２の３〜９行目）。どのスイッチもマーキングされていない場合（それは、このパーティションのための第１のノードがルーティングされていることを示し得る）、システムはデフォルトで、最高のグローバル一意識別子（ＧＵＩＤ）を有するポートを選択することができる（リスティング２の２行目）。あるスイッチがあるパーティションのために初めて選択された場合、それはパーティションキーで下向き方向にマーキングされる（リスティング２の１１行目）。
【００５６】
一実施形態によれば、あるスイッチでＬＩＤのために下り（down-going）ポートが設定された後で、メカニズムは、それのための上向きポートを、ツリー呼び出しを下ることによって、接続されたすべての下向きスイッチ上に割当てることができる（リスティング３のROUTEUPGOINGBYDESCENDING）。ここでも、上りポートの選択は、上向き方向で、まず負荷基準に、次にリモートスイッチのパーティションマーキングに基づき得る。プロセスは次に、すべてのＬＦＴが設定されるまでツリーにおいて次のレベルへと上昇することによって繰り返され得る。なお、スイッチは、複数のパーティションキーでマーキングされ得る。ｐＦＴｒｅｅメカニズムは、各パーティションについてルーティングされたノードのカウントを格納する、各スイッチ用のテーブルを維持することができる。このカウンタは、マーキングされたパーティションを有するいくつかのスイッチが、ノードをルーティングするために利用可能である場合に、ポートの選択を決定するために使用され得る。あるパーティションについてすでにルーティングされた最大数のノードを有するスイッチが、選択され得る。
【００５７】
一実施形態によれば、パーティション分離基準を保つルーティングテーブルが一旦生成されると、メカニズムは、リンクのうちのいくつかが、異なるパーティションにおけるノードに向かうフローのために使用されているかどうかをチェックすることに進むことができる。それらの場合について、メカニズムは、分離を提供するために、ＶＬを干渉パーティションに割当てることができる。ＶＬ割当てメカニズムの一例を、リスティング４に示す。
【００５８】
一実施形態によれば、ＶＬ割当てメカニズムはパーティションを通して繰り返され、パーティションにおいてノードによって使用された任意の中間通信リンクが、別個のＶＬを割当てられていない別のパーティションと中間リンクを共有するかどうかをチェックすることができる。そのような状況に遭遇した場合、新しいＶＬを割当てることができる。ｐＦＴｒｅｅルーティングメカニズムは、厳密モードおよび通常モードという、ＶＬ選択のための２つのモードをサポートすることができる。
【００５９】
一実施形態によれば、厳密モードでは、ｐＦＴｒｅｅルーティングのために必要とされるＶＬの数がシステムにおける利用可能なＶＬを上回る場合、ルーティングは失敗するおそれがある（リスティング４の１０行目）。
【００６０】
一実施形態によれば、通常モードでは、アルゴリズムは、パーティションへのＶＬの割当てをＶＬ１から再開することができる（リスティング４の８行目）。
【００６１】
一実施形態によれば、ＩＢベースのファットツリーネットワークのための効率的なパーティション認識ルーティングメカニズム（さまざまにｐＦＴｒｅｅと呼ばれる）が提供される。ｐＦＴｒｅｅメカニズムは、ネットワーク全体のパーティションの分離を、ファットツリートポロジーに提供することができる。加えて、ｐＦＴｒｅｅは、スイッチのためのバランスのとれたＬＦＴを生成する。十分なネットワークリソースを与えられて、ｐＦＴｒｅｅは、もっぱら物理リンクレベルでパーティションを分離することができる。たとえば、ファットツリーが２つの重複しない等しいサイズのパーティションを有する場合、ｐＦＴｒｅｅは、ルーティング自体に基づいて、中間ネットワークリンクを２つの等しいサイズの論理サブネットワークに分割することができる。さらに、ネットワークが完全なパーティション分離を提供するために利用可能なリソースを十分に有していない場合、ｐＦＴｒｅｅは、物理的分離と連動して機能する、補足ＶＬベースの分離スキームを採用することができる。
【００６２】
一実施形態によれば、ｐＦＴｒｅｅルーティングメカニズムは、２つの主な目的を達成することを目標とする。第１に、メカニズムは、ツリーにおいてリンクを越えてルートを均一に分散することによって、ファットツリートポロジーのためのバランスのとれたＬＦＴを生成することができる。第２に、ｐＦＴｒｅｅは、リンク上でルートをバランスよく維持しながら、異なるパーティションに属する経路間の競合を除去する。ｐＦＴｒｅｅは、サブネットについてのパーティショニング情報を使用することができ、あるパーティションにおけるノードが、他のパーティションで走る作業負荷に影響されない予測可能なネットワーク性能を受信することを保証する。トポロジーが（負荷バランシングについて妥協することなく）各レベルでパーティション分離を提供するために利用可能であるリンクを十分に有していない場合、ｐＦＴｒｅｅは、競合の影響を減少させるためにＶＬを使用することができる。
【００６３】
一実施形態によれば、ｐＦＴｒｅｅメカニズムは、各エンドノードに関連付けられたＬＩＤのためにすべての関連スイッチ上にＬＦＴをセットアップするように、再帰的に機能することができる。単一リーフスイッチパーティションをフィルタリングして除去した後、各リーフスイッチについて、メカニズムは、接続されたエンドノードを、パーティショニングに特有の順序でソートすることができる。この順序付けは、リーフスイッチでの利用可能な数の上りポートを考慮して、ノードがそれらのパーティションに従ってルーティングされることを保証する。各レベルでのポート選択は、利用可能な経路を越えて負荷が広がることを確実にするために、すでに割当てられた最小数のルートに基づき得る。しかしながら、いくつかのポートが同じ負荷で利用可能である場合、機能はこれらの負荷最小ポートを通して繰り返され、ルーティングされているノードのパーティションキーですでにマーキングされているスイッチに接続されているポートを選択する。どのスイッチもマーキングされていない場合（すなわち、ある特定のパーティションのための第１のノードのためのルーティング）、ｐＦＴｒｅｅは、最高のグローバル一意識別子（ＧＵＩＤ）を有するポートのデフォルト選択をするようになり得る。あるスイッチがあるパーティションのために初めて選択された場合、そのスイッチはパーティションキーでマーキングされ得る。このように、メカニズムは、バランシングのために十分な経路が利用可能であると仮定すると、１つのパーティションに属するノードは、同じスイッチおよび対応するリンクを通してルーティングされるであろうということを保証するのに役立ち得る。パーティション分離基準を保つルーティングテーブルが一旦生成されると、メカニズムは、リンクのうちのいくつかが、異なるパーティションにおけるノードに向かうフローのために使用されているかどうかをチェックすることに進むことができる。それらの場合について、メカニズムは、分離を提供するために、ＶＬを干渉パーティションに割当てることができる。
【００６４】
一実施形態に従ったマルチテナントクラスタ環境においてパーティション認識ルーティングをサポートする図である図５〜８を、ここで参照する。
【００６５】
一実施形態に従って、ｐＦＴｒｅｅルーティングにおけるポート選択メカニズムを、過剰に申し込まれたファットツリーネットワークの単純な区分として、図５〜８に示す。
【００６６】
ルートスイッチ５２５〜５２６およびリーフスイッチ５２０〜５２１という４つのスイッチと、ノードＡ５０１〜Ｇ５０８という８つのエンドノードとを有する、２レベルファットツリートポロジーを示す図５を、ここで参照する。同様に、エンドノードは２つのパーティションに分割される。パーティション１は、ノードＡ４０１、ノードＤ５０４、ノードＧ５０７、およびノードＨ５０８を含む。パーティション２は、ノードＢ５０２、ノードＣ５０３、ノードＥ５０５、およびノードＦ５０６を含む。
【００６７】
一実施形態によれば、図５に示すように、例示的な区分は２つのリーフスイッチ（５２０および５２１）からなり、それらは各々、４つのエンドノードと、リーフスイッチより上の次のレベルの２つのスイッチ、すなわちルートスイッチ（５２５および５２６）とに接続されている。下向き方向における割当てられたルートの数、および、各リンク上に適正なバランシングを保証するためにルーティングされ得るノードの最大数をそれぞれ表わす、「下り」および「最大」についての変数も、図に示される。
【００６８】
一実施形態によれば、ルーティングすべき４つのエンドノードを有する各リーフスイッチに２つの上りポートがあると仮定すると、アップリンクの各々は、リンクがバランスのとれた状態であることを保証するために、２つのエンドノードを下にルーティングすべきである（すなわち、最大＝２）。
【００６９】
一実施形態によれば、リーフスイッチ５２０について、ノードＡおよびノードＢという第１の２つのノードのルーティングを、図６に示す。ルーティングメカニズムは、ノードＡに向かうトラフィックをルーティングするためにルートスイッチ５２５を選択し、図に「（パーティション１）」として示されたノードＡのパーティションキーで当該スイッチをマーキングすることができる。同様に、ノードＢについて、ルートスイッチ５２６を選択し、図に「（パーティション２）」として示されたノードＢのパーティションキーでマーキングすることができる。変数「下り」も、２つの下向きリンクの各々の上でルーティングされた単一のノードをカウントするために更新される。
【００７０】
一実施形態によれば、ノードＣおよびＤについて、図７に与えられるように、対応するパーティションキーですでにマーキングされているスイッチが選択され得る。結果として生じるルートは、第１のパーティションに属するノード、すなわちノードＡおよびＤに向かって、ルートスイッチ５２５を通って同じリンクを用いて流れる。同様に、第２のパーティションのノード、すなわちノードＢおよびＣは、ルートスイッチ５２６を通って下向きにルーティングされ得る。ルートのこの分離は、２つのパーティションのトラフィックフロー間の干渉を回避する。なお、各リンク上で下向きにルーティングされるノードの数は、変数「最大」を上回らない。それは、ルーティングは依然としてバランスがとれていることを意味する。
【００７１】
最後に、一実施形態によれば、図８は、リーフスイッチ５２１に接続されたエンドノードのためのルーティングを示す。ここでも、第２のレベルのスイッチはすでに、第１のリーフスイッチルーティングからのパーティションキーでマーキングされているため、ノード、すなわちノードＥ、Ｆ、ＧおよびＧの各々をルーティングするために、対応するスイッチが選択され得る。図に示すように、最後のルーティングは、ルーティングに基づいて中間ネットワークリンクを２つの等しいサイズの論理サブネットワークに分割することによって、２つのパーティションを分離することができる。
【００７２】
図９は、一実施形態に従ったマルチテナントクラスタ環境においてパーティション認識ルーティングをサポートするための方法の図を示す。例示的な方法９００は、マルチテナントクラスタ環境内の１つ以上のテナントをサポートするステップ９０１で始まり得る。ステップ９０２で、例示的な方法は、１つ以上のテナントの各々を複数のパーティションのうちの１つのパーティションに関連付け得る。方法は、ステップ９０３で、複数のパーティションの各々を複数のノードのうちの１つ以上のノードに関連付け得る。複数のノードの各々は複数のスイッチのうちのリーフスイッチに関連付けられ、複数のスイッチは複数のリーフスイッチと他のレベルの複数のスイッチとを含む。最後に、ステップ９０４で、方法は、１つ以上のリニアフォワーディングテーブルを生成し得る。１つ以上のリニアフォワーディングテーブルは複数のパーティション間に分離を提供し、複数のノードの各々はパーティショニング順序に関連付けられる。
【００７３】
本発明の多くの特徴は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せにおいて、当該ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せを使用して、もしくは当該ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せの助けを得て行なわれ得る。したがって、本発明の特徴は、（たとえば、１つ以上のプロセッサを含む）処理システムを使用して実現されてもよい。
【００７４】
本発明の特徴は、ここに提示された特徴のいずれかを行なうように処理システムをプログラミングするために使用可能な命令を格納する記憶媒体またはコンピュータ読取可能媒体であるコンピュータプログラム製品において、当該コンピュータプログラム製品を使用して、もしくは当該コンピュータプログラム製品の助けを得て実現され得る。記憶媒体は、フロッピー（登録商標）ディスク、光ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、マイクロドライブ、および光磁気ディスクを含む任意のタイプのディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＤＲＡＭ、ＶＲＡＭ、フラッシュメモリデバイス、磁気カードまたは光カード、ナノシステム（分子メモリＩＣを含む）、もしくは、命令および／またはデータを格納するために好適な任意のタイプの媒体またはデバイスを含み得るものの、それらに限定されない。
【００７５】
マシン読取可能媒体のうちのいずれか１つに格納されて、本発明の特徴は、処理システムのハードウェアを制御するために、および、処理システムが本発明の結果を利用する他のメカニズムとやりとりすることを可能にするために、ソフトウェアおよび／またはファームウェアに組込むことができる。そのようなソフトウェアまたはファームウェアは、アプリケーションコード、デバイスドライバ、オペレーティングシステム、および実行環境／コンテナを含み得るものの、それらに限定されない。
【００７６】
この発明の特徴はまた、たとえば、特定用途向け集積回路（application specific integrated circuit：ＡＳＩＣ）などのハードウェアコンポーネントを使用して、ハードウェアで実現されてもよい。ここに説明された機能を行なうようなハードウェア状態マシンの実現は、当業者には明らかであろう。
【００７７】
加えて、本発明は、本開示の教示に従ってプログラミングされた１つ以上のプロセッサ、メモリおよび／またはコンピュータ読取可能記憶媒体を含む、１つ以上の従来の汎用または専用デジタルコンピュータ、コンピューティングデバイス、マシン、またはマイクロプロセッサを使用して、便利に実現されてもよい。ソフトウェア技術の当業者には明らかであるように、本開示の教示に基づいて、適切なソフトウェアコーディングを、熟練したプログラマーによって容易に準備することができる。
【００７８】
本発明のさまざまな実施形態が上に説明されてきたが、それらは限定のためではなく例示のために提示されたことが理解されるべきである。形態および詳細におけるさまざまな変更を、この発明の精神および範囲から逸脱することなくそこで行なうことができるということは、当業者には明らかであろう。
【００７９】
本発明は、特定された機能およびそれらの関係の実行を示す機能構築ブロックの助けを得て、上に説明されてきた。これらの機能構築ブロックの境界はしばしば、説明の便宜上、ここに任意に定義されてきた。特定された機能およびそれらの関係が適切に実行される限り、代替的な境界を定義することができる。あらゆるそのような代替的な境界はこのため、この発明の範囲および精神内にある。
【００８０】
この発明の前述の説明は、例示および説明のために提供されてきた。それは、網羅的であるよう、またはこの発明を開示された形態そのものに限定するよう意図されてはいない。本発明の広さおよび範囲は、上述の例示的な実施形態のいずれによっても限定されるべきでない。当業者には、多くの修正および変形が明らかであろう。修正および変形は、開示された特徴のあらゆる関連する組合せを含む。実施形態は、この発明の原理およびその実際的な適用を最良に説明するために選択および説明されたものであり、それにより、他の当業者が、特定の使用に好適なさまざまな修正を考慮して、さまざまな実施形態についてこの発明を理解することを可能にする。この発明の範囲は、請求項およびそれらの均等物によって定義されることが意図されている。
【図１】
0006653699.tif 000006
【図２】
0006653699.tif 000007
【図３】
0006653699.tif 000008
【図４】
0006653699.tif 000009
【図５】
0006653699.tif 000010
【図６】
0006653699.tif 000011
【図７】
0006653699.tif 000012
【図８】
0006653699.tif 000013
【図９】
0006653699.tif 000014