(57)【要約】【課題】物理計算機システムから任意の仮想ネットワーク・トポロジを自動的に作成するアーキテクチャおよび方法を提供すること。【解決手段】本アーキテクチャおよび方法により、システム内でコンピュータを物理接続し配線を構成する必要なく、同一の物理計算機システム上での複数の分散アプリケーションの自動的な遠隔インストールが可能になる。【選択図】図５
2011217405.tif 000002
【特許請求の範囲】
【請求項１】
分散されたコンピューティング・システムの一部である、ネットワーク・スイッチを介して前記分散されたコンピューティング・システムに接続される、コンピュータに常駐するドライバと、
少なくとも１つの仮想ローカル・エリア・ネットワーク（ＶＬＡＮ）を前記ネットワーク・スイッチに割り当て、物理ネットワーク・インターフェースの上に、少なくとも１の前記ＶＬＡＮに関連づけられ、ユニークなＶＬＡＮ識別で識別される複数の仮想ネットワーク・インターフェース（ＶＮＩＣ）を作成するように、前記ドライバに遠隔で指示し、前記コンピュータから遠隔なリソース・マネージャとを備え、
前記リソース・マネージャは、オペレーティング・システムのアプリケーション・プログラム・インターフェースによって前記コンピュータに前記ドライバをダウンロードしてインストールするように構成され、前記アプリケーション・プログラム・インターフェースは、さらに少なくとも１つの前記ＶＬＡＮおよび前記複数のＶＮＩＣを確立するために使用され、
前記ドライバは、ネットワーク・インターフェース・ドライバとインターネット・プロトコル・ドライバとの間のプロトコル・スタックにインストールされ、
前記ネットワーク・スイッチの少なくとも１つのスイッチ・ポートは、２またはそれ以上のＶＬＡＮに割り当てられる
ことを特徴とするシステム。
【請求項２】
分散されたコンピューティング・システムの一部である、ネットワーク・スイッチを介して前記分散されたコンピューティング・システムに接続される、コンピュータに常駐するドライバと、
少なくとも１つの仮想ローカル・エリア・ネットワーク（ＶＬＡＮ）を前記ネットワーク・スイッチに割り当て、物理ネットワーク・インターフェースの上に、少なくとも１の前記ＶＬＡＮに関連づけられ、ユニークなＶＬＡＮ識別で識別される複数の仮想ネットワーク・インターフェース（ＶＮＩＣ）を作成するように、前記ドライバに遠隔で指示し、前記コンピュータから遠隔なリソース・マネージャとを備えたシステムにより実行される方法であって、
前記リソース・マネージャが、オペレーティング・システムのアプリケーション・プログラム・インターフェースによって前記コンピュータに前記ドライバをダウンロードしてインストールし、前記アプリケーション・プログラム・インターフェースは、さらに少なくとも１つの前記ＶＬＡＮおよび前記複数のＶＮＩＣを確立するために使用されるステップと、
前記ドライバは、ネットワーク・インターフェース・ドライバとインターネット・プロトコル・ドライバとの間のプロトコル・スタックにインストールされるステップと、
前記ネットワーク・スイッチの少なくとも１つのスイッチ・ポートは、２またはそれ以上のＶＬＡＮに割り当てられるステップと
を備えたことを特徴とする方法。
【請求項３】
分散されたコンピューティング・システムの一部である、ネットワーク・スイッチを介して前記分散されたコンピューティング・システムに接続される、コンピュータに常駐するドライバと、
少なくとも１つの仮想ローカル・エリア・ネットワーク（ＶＬＡＮ）を前記ネットワーク・スイッチに割り当て、物理ネットワーク・インターフェースの上に、少なくとも１の前記ＶＬＡＮに関連づけられ、ユニークなＶＬＡＮ識別で識別される複数の仮想ネットワーク・インターフェース（ＶＮＩＣ）を作成するように、前記ドライバに遠隔で指示し、前記コンピュータから遠隔なリソース・マネージャとを備えた装置であって、
前記リソース・マネージャが、オペレーティング・システムのアプリケーション・プログラム・インターフェースによって前記コンピュータに前記ドライバをダウンロードしてインストールし、前記アプリケーション・プログラム・インターフェースは、さらに少なくとも１つの前記ＶＬＡＮおよび前記複数のＶＮＩＣを確立するために使用される手段と、
前記ドライバは、ネットワーク・インターフェース・ドライバとインターネット・プロトコル・ドライバとの間のプロトコル・スタックにインストールされる手段と、
前記ネットワーク・スイッチの少なくとも１つのスイッチ・ポートは、２またはそれ以上のＶＬＡＮに割り当てられる手段と
を備えたことを特徴とする装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散型コンピューティング・システム、および分散型コンピューティング・システムで実行される分散アプリケーションに関する。より詳細には、本発明は、物理分散コンピューティング・システムから任意の仮想ネットワーク・トポロジを自動的に作成し、そうしたシステムが複数の分散アプリケーションをホストすることを可能にする技術に関する。
【背景技術】
【０００２】
インターネットの使用は過去数年に渡って爆発的に増え、現在も増加し続けている。ワールド・ワイド・ウェブ（または単に「ウェブ」）で提供される多くのサービス、たとえば電子メール、オンライン・ショッピング、ニュースおよび情報収集、音楽鑑賞、ビデオクリップの閲覧、仕事探し、などに人々は非常に満足してきている。インターネット・ベースのサービスに対して高まりつつある需要に対応するために、ウェブ・サイトをホストすること、そうしたサイトのバック・エンド・サービスを提供すること、およびそうしたサイトに関連するデータを格納することに専用化されたコンピュータ・システムが驚異的に成長している。
【０００３】
分散型コンピュータ・システムの１つのタイプはインターネット・データ・センタ（ＩＤＣ）であり、これは、インターネット・ベースのサービスをホストする多くのコンピュータを収容する、特別に設計された複合体である。ＩＤＣは、「ウェブ・ファーム」および「サーバ・ファーム」とも呼ばれ、通常、空調管理された物理的に安全な建物内で数百から数千台のコンピュータを収容する。こうしたコンピュータは、１つまたは複数のインターネットサービスまたはウェブ・サイトをサポートする１つまたは複数のプログラムに相互接続される。ＩＤＣは、信頼できるインターネット・アクセス、信頼できる電源機構、および安全な動作環境を提供する。分散型コンピュータ・システムのもう１つのタイプは、企業データ・センタ（ＥＤＣ；enterprise data centers）である。ＥＤＣはＩＤＣに類似しているが、企業をターゲットとしている。
【０００４】
図１は、インターネット・データ・センタ１００を示す。このデータ・センタは、特別に構成された室内に配置された多くのサーバ・コンピュータ１０２を有する。このコンピュータは、汎用コンピュータであり、通常、サーバとして構成される。インターネット・データ・センタとは、単一のエンティティ用の単一のサイトを収容するように（たとえば、Ｙａｈｏｏ！やＭＳＮ用のデータ・センタ）、または複数のエンティティ用の複数のサイトを含むように（たとえば、複数の企業のサイトをホストするＥｘｏｄｕｓセンタ）構築することができる。
【０００５】
ＩＤＣ１００は、コンピュータ資源（リソース）を共有する３つのエンティティ、すなわちエンティティＡ、エンティティＢ、およびエンティティＣを有して示してある。これらのエンティティは、ウェブに存在したいと望む様々な企業を表す。ＩＤＣ１００は、トラフィックが重いときに、これらのエンティティが使うことのできる追加コンピュータのプール１０４を有する。たとえば、オンラインの小売業にかかわるエンティティは、クリスマス・シーズン中は非常に多くの要求に直面する。追加コンピュータは、こうした要求に対処する柔軟性をＩＤＣに与える。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許７，０１７，４１２号明細書
【特許文献２】米国特許６，１９５，０９１号明細書
【特許文献３】米国特許５，９６８，１２６号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００７】
今日、大型ＩＤＣは複雑であり、しばしば複数のアプリケーションをホストすることが必要とされている。たとえば、数千台のコンピュータを稼働させ、多くの分散アプリケーションをホストするウェブ・サイトもある。こうした分散アプリケーションはしばしば複雑なネットワーク要件、すなわち、複雑なアプリケーションをサポートするようにＩＤＣ内に配線構成を手作業で配置することはもちろん、コンピュータをある特定のネットワーク・スイッチに物理接続することをオペレータに要求する複雑なネットワーク要件を有している。その結果、アプリケーションの要件を満たすように物理ネットワーク・トポロジを構築するというこうした作業は、煩わしく時間のかかる、人為的ミスを引き起こしがちな処理となる可能性がある。
【０００８】
したがって、分散アプリケーションを物理計算機システム上で設計して展開する、改良された技術を求めるニーズが存在する。
【課題を解決するための手段】
【０００９】
物理計算機システムから任意の仮想ネットワーク・トポロジを自動的に作成するアーキテクチャおよび方法を説明する。このアーキテクチャおよび方法は、システム内でコンピュータを物理接続して配線を構成する必要なく、同一の物理計算機システムに複数の分散アプリケーションを自動的に遠隔インストールすることを可能とする。
【００１０】
一実装形態では、分散コンピューティング・システムは、スイッチ（たとえば、イーサネット（登録商標）スイッチ）を含むネットワークを介して相互接続された多くのコンピュータから構成される。こうしたコンピュータは、アプリケーション（たとえば、ウェブ・サーバ、データベース、負荷平衡化（load balancing）、ファイアウォール、大容量データ記憶など）によって必要とされる様々な専用タスクを実施するようにプログラミングすることができる。本方法は、分散コンピューティング・システム（distributed computing system）上でホストされる各分散アプリケーションごとに、物理ネットワークの上に１つまたは複数の仮想ローカル・エリア・ネットワーク（ＶＬＡＮ）を作成する。分散アプリケーションをホストするのに使われるコンピュータは、そのアプリケーションに関連づけられたそれぞれのＶＬＡＮに自動的に接続される。このＶＬＡＮは、各アプリケーションが互いに分離して動作することを確実にする。
【００１１】
コンピュータのこうした自動接続は、２つの動作を含む。第１の動作は、コンピュータが接続されるスイッチ・ポートへのＶＬＡＮメンバシップ（VLAN membership）の割当てである。この割当ては、関連づけられたＶＬＡＮ識別でタグづけされたパケットを受け取るスイッチ・ポートを指定する。第２の動作は、各コンピュータにおける、単一の物理ネットワーク・インターフェース（ＮＩＣ；Network Interface Card）を介した仮想ネットワーク・インターフェース（ＶＮＩＣ）の作成である。各ＶＮＩＣは、関連づけられたＶＬＡＮを一義的に表す。こうすることにより、単一の物理ＮＩＣを有するコンピュータがいくつかのＶＬＡＮに関与することが可能になる。ある特定のＶＬＡＮに関連づけられたパケットは、そのコンピュータに経路指定され、そのＶＬＡＮに対応するＶＮＩＣを介して処理される。
【００１２】
仮想ネットワーク・トポロジを作成する能力により、アプリケーション設計者は、本質的にどのタイプのネットワーク構成も速く自動的に作成することができるようになる。たとえば、設計者は、分離ゾーン（すなわち、「ＤＭＺ（非武装地帯）」）を定義することができる。このゾーンは、所与のゾーン内でファイアウォール・コンピュータをＶＬＡＮに遠隔割振りし、スイッチを割り当て、サーバをＶＬＡＮに追加することによって定義される。次いで、個々のサーバが異なる複数のアプリケーションをそこでホストする同一の計算機システム全体にアプリケーションを展開することができる。
【図面の簡単な説明】
【００１３】
【図１】従来のインターネット・データ・センタ（ＩＤＣ）を示す図である。
【図２】１つまたは複数の分散アプリケーションをサポートするように自動的に構成することができる、物理コンピューティング・リソースを有する分散コンピューティング・システムを示す図である。
【図３】分散コンピューティング・システム上での分散アプリケーションの設計、展開、および管理を自動化するプラットフォーム・アーキテクチャの各層を示す図である。
【図４】分散アプリケーションをホストするのに使うことができる、例示的な物理コンピューティング・リソースの物理ネットワーク・トポロジを示す図である。
【図５】図４の物理コンピューティング・リソースにおいてホストすることができる分散アプリケーションの仮想ネットワーク・トポロジを示す図である。
【図６】図４の仮想ネットワーク・トポロジで使われるサーバ、およびそのサーバに実装される仮想ローカル・エリア・ネットワーク（ＶＬＡＮ）ドライバと、さらに、仮想ネットワーク・トポロジに従って、分散アプリケーション用に物理リソースを展開するのに使われるリソース・マネージャを示す図である。
【図７】物理コンピューティング・リソースから仮想ネットワーク・トポロジを生成する処理を示す図である。
【発明を実施するための形態】
【００１４】
以下の開示では、物理コンピューティング・リソース（physical computing resources）における分散型ソフトウェア・アプリケーションの自動展開（automated deployment）のための仮想ネットワーク・トポロジの生成を説明する。物理計算機システムから任意の仮想ネットワーク・トポロジを生成する能力は、同一の分散コンピューティング・システム上でホストされるすべての分散アプリケーション用のカスタム・ネットワーク・トポロジの作成を可能とする。これは、複雑であるとともに複数のアプリケーションをホストするように、しばしば要求される大型データ・センタには特に有用である。このようなデータ・センタでインストールされる分散アプリケーションはしばしば複雑なネットワーク要件をもち、こうした要件を満たす物理ネットワーク・トポロジを構築することは煩わしく時間のかかる、人為的ミスを引き起こしがちな処理となる可能性がある。展開された各アプリケーションごとに計算機システムを物理的に再構成すること（たとえば、配線を経路指定し直すこと、様々なスイッチなどにコンピュータを物理接続することなど）を必要としない仮想ネットワーク・トポロジの生成を可能にすることは、人間中心の操作への依存を減少させ、そうすることによってコストおよび人為的ミスを減少させる。
【００１５】
分散コンピューティング・システム
図２は、１つまたは複数の分散アプリケーションをサポートする必要に応じて自動的に展開することができる分散コンピューティング・システム２００を示す。分散コンピューティング・システム２００は、スイッチを含むネットワーク２０４を介して相互接続される多くのサーバ２０２（１）、２０２（２）、…、２０２（Ｎ）のモノリシックな（完全に統制された）集合を含む。一実装形態では、ネットワーク・スイッチ２０４は、他のタイプのスイッチを使うこともできるが、ノンブロッキング（non-blocking）なイーサネット（登録商標）スイッチである。ネットワーク２０４は、サーバ２０２（１）〜２０２（Ｎ）がそれぞれ接続される複数の物理ポートＰ1、Ｐ2、…、ＰNを有して示してある。この分散コンピューティング・システム２００は、１つまたは複数の負荷平衡化（load balancing）コンピュータ２０６および１つまたは複数のファイアウォール・コンピュータ２０８をさらに含む。こうしたコンピュータのタイプはそれぞれ、ネットワーク・スイッチ２０４の物理ポートＰN+1およびＰN+2に接続して示してある。分散コンピューティング・システムは、負荷平衡化装置およびファイアウォールに加えて、他のタイプの専用装置、たとえばウェブ・キャッシュ、ＳＳＬ（セキュア・ソケット・レイヤ）アクセラレータ、ＮＡＳ（ネットワーク付加記憶；network attached storage）装置などをさらに含むことができる。
【００１６】
分散コンピューティング・システム２００は、インターネット・ベースのサービスをホストするインターネット・データ・センタ（ＩＤＣ）、より一般的にはデータ・センタなど大規模計算機システムに展開される物理リソースを表す。例示的なデータ・センタは、ローカル・エリア・ネットワーク（ＬＡＮ）によって相互接続される数十万台のコンピュータから構成される場合もある。
【００１７】
分散コンピューティング・システム２００は、１つまたは複数の仮想ネットワーク・トポロジ生成サーバ２１０をさらに含み、このサーバは、物理ポートＰN+3を介してネットワーク・スイッチ２０４に結合されるものとして示してある。このサーバ２１０は、アプリケーション設計者が分散コンピューティング・システム２００から、複数の分散アプリケーションを同一のシステム２００でホストすることができるように、仮想ネットワーク・トポロジを作成することを可能にする。分散アプリケーションとは、ネットワーク接続された複数のコンピュータに実装され、それによって実行されるソフトウェア・プログラムである。このようなアプリケーションの例として、ｅメール・サービス、ウェブ・サイト、コンテンツ・データベース、オンライン・コマース、ストレージ、ニュースおよび情報サービス、娯楽サービスなどがある。
【００１８】
仮想ネットワーク・トポロジを生成するために、サーバ２１０は、各分散アプリケーションごとに少なくとも１つの仮想ローカル・エリア・ネットワーク（ＶＬＡＮ）を作成する。サーバ２１０は次いで、選択されたサーバおよび関連づけられたスイッチ・ポートに、それ自体をある特定のＶＬＡＮに関連づけるように、指図する。仮想ネットワーク・トポロジ生成サーバ２１０は、分散アプリケーションをサポートすることにおいて、それぞれのＶＬＡＮへの物理リソースの展開を促す（facilitate）１つまたは複数のリソース・マネージャ２１２を、実行させる。リソース・マネージャ（群）２１２は、関連するアプリケーションが互いに分離して安全に動作できるように、サーバ２０２、ネットワーク・スイッチ２０４、負荷平衡化コンピュータ（群）２０６、およびファイアウォール・コンピュータ（群）２０８と通信して様々なＶＬＡＮを確立する。リソース・マネージャ（群）２１２は、ＶＬＡＮの作成および割振り、ならびにどのコンピュータ（群）がそのＶＬＡＮに接続されるか、を追跡する。このような情報は、仮想ネットワーク・トポロジ生成サーバ２１０においてリソース・マネージャ（群）２１２によって保持されるデータベースに保存することができる。サーバ２１０はまた、アプリケーションのトポロジのカスタマイズを可能にする。たとえば、サーバは、重要な構成要素を分離させるためにアプリケーション内で分離ゾーン、すなわち「ＤＭＺ」を作成することができる。
【００１９】
仮想ネットワーク・トポロジを役立たせることができるいくつかの方法がある。たとえば、仮想トポロジ生成は、自動化を促す（facilitate）ために、使うことができる。ネットワーク・トポロジは、以下でより詳細に説明するように、要求に応じて人間の介入なしで生成することができる。仮想トポロジ生成は、同一の物理ネットワークが、安全なやり方でアプリケーションが互いに干渉することなく複数のアプリケーションをホストすることも可能にする。仮想トポロジ生成は、アプリケーション設計者がアプリケーションのある部分を他の部分から分離させる別個の分離ゾーンを定義し施行すること、を可能とする。このような分離ゾーンは、非常に短い時間で素早く構築することができる。仮想トポロジ生成のさらに別の可能な使用法は、複数の分散アプリケーションの間で専用ハードウェア・リソースをプールすることを可能にすることである。図２では、たとえば、負荷平衡化コンピュータのプールは、物理ネットワークのどの地点でも定義し接続することができる。負荷平衡化装置は、次いで、このプールから割り振って、アプリケーションの仮想ネットワーク内に置くことができる。
【００２０】
どのようにして仮想ネットワーク・トポロジが生成され、アプリケーションが物理コンピューティング・リソースに自動的に展開されるかを説明する前に、以下のセクションで、物理計算機システムの上に構築されるプラットフォーム・アーキテクチャを扱う。このアーキテクチャは、自動展開（automated deployment）および管理機能（management functions）の様々な部分を開発することができる枠組み（framework）を提供する。
【００２１】
プラットフォーム・アーキテクチャ
図３は、分散コンピューティング・システム２００における分散アプリケーションの設計、展開、および管理を自動化するプラットフォーム・アーキテクチャ３００を示す。アーキテクチャ３００は、分散コンピューティング・システム２００の物理コンピュータ・リソースを表す基底層３０２の上にある複数の層を示している。自動展開サービス層（automated deployment services layer）３０４は、マシンを分散コンピューティング・システム２００で使われるサーバに変換するツールを提供する。このようなツールは、ＯＳ（オペレーティング・システム）イメージの作成、編集、および展開を可能にする。こうしたマシンの遠隔プログラミングは、システムおよびネットワーク装置が構成され管理されることを可能にする、マイクロソフトのＷｉｎｄｏｗｓ（登録商標）オペレーティング・システムにおけるプログラミング・インターフェース（ＡＰＩ）であるＷＭＩ（Windows（登録商標）Management Instrumentation）などの、完全にプログラムに従ったインターフェース（fully programmatic interfaces）を使って実現される。
【００２２】
ネットワーク管理層３０６は、自動展開サービス層３０４の上にある。ネットワーク管理層３０６は、ネットワーク管理および仮想トポロジ生成を考慮に入れている。１つには、ネットワーク管理層はネットワーク・コンピュータ用のドライバ・モデルをサポートし、このモデルは、ネットワーク・スイッチ２０４の関連づけられたポートに接続される、単一の物理ネットワーク・インターフェースを介した１つまたは複数のＶＬＡＮへの個々のコンピュータの接続を促す（facilitate）。このドライバ・モデルに従って、ＶＬＡＮドライバは、サーバでインストールされて、単一の物理ネットワーク・インターフェース上の仮想ネットワーク・インターフェース（ＶＮＩＣ）を作成するのに使われる。ＶＬＡＮドライバは、各ＶＬＡＮごとに１つの仮想ネットワーク・インターフェース（ＶＮＩＣ）を作成する。ＶＮＩＣは、サーバのＩＰスタック内のネットワーク・インターフェース（ＮＩＣ）のすぐ上に常駐し、そうすることによってサーバは、すべてのパケットが同一の物理ＮＩＣを介して物理的に移動するけれども、複数のＶＬＡＮを介して渡されるパケットを処理することができるようになる。このことは、図６に関連して以下でより詳細に説明する。
【００２３】
このドライバ・モデルは、スイッチ・ポートへのＶＬＡＮのタグづけの構成を可能にして、分散コンピューティング・システムを介して渡されるデータ・パケットが、スイッチ・ポートが属すＶＬＡＮについての識別でタグづけされるようにする。ネットワーク・スイッチ２０４は、こうしたタグづけを施行し、スイッチが属すＶＬＡＮを識別するタグを有するパケットのみを受け取る。一実装形態では、ネットワーク・スイッチ２０４は、タグつきのポートおよびタグなしのポートの両方を有する。あるスイッチのタグつきのポートは、ＶＬＡＮ識別子でタグづけされ、他のスイッチのタグつきのポートへの接続に使われる。こうすることにより、スイッチを含むネットワークを介したパケットの高速転送が可能になる。スイッチのタグなしのポートは、サーバ２０２またはコンピュータ２０６、２０８への接続に使われる。パケットがその宛先サーバのスイッチ・ポートに到達すると、サーバがタグづけに関して何も知らなくてよいように、サーバに向けてパケットを伝達する前にＶＬＡＮタグがパケットからはぎ取られる。
【００２４】
物理リソース管理層３０８は、ネットワーク管理層３０６の上にある。物理リソース管理層３０８は、分散コンピューティング・システム２００の物理モデルを維持して、所有権（ownership）を追跡し、すべての物理コンピューティング・リソースの割振りを調整する。物理管理層３０８は、バッチされたリソース割振りをさらにサポートし、そうすることによって物理コンピューティング・リソースの動的な構成および管理を可能にする。
【００２５】
論理リソース管理層３１０は、物理リソース管理層３０８の上にある。論理リソース管理層３１０は、分散アプリケーションによって要求される論理リソースの割振りを促す。たとえば、こうしたアプリケーションは、データベース、負荷バランシング・サービス、ファイアウォール、ウェブ・サービスなどとしての、このようなリソースを必要とする場合がある。論理リソース管理層３１０は、このような論理リソースを露出（公開）する。
【００２６】
次の層はサービス定義モデルおよびランタイム層３１２であり、この層は、分散アプリケーションの記述およびその動作の追跡を可能にする。サービス定義モデル（ＳＤＭ）は、アプリケーションの内観（introspection）およびアプリケーション・リソースの制御のための動作処理およびＡＰＩを記述する名前空間およびコンテクストを提供する。サービス定義モデルはさらに、オペレータおよび開発者が共通のアプリケーション・ビューを共有することを可能にする。
【００２７】
コンピューティング・リソース層３０２の上の第６番目の層は、構成要素層３１４である。この層は、分散アプリケーションの再利用可能な構築ブロックの定義を許可し、このブロックは、コンテクスト、名前づけ、およびバインディング（binding）のためにＳＤＭ  ＡＰＩを使う。こうした構築ブロックは、「構成要素（components）」と呼ばれる。
【００２８】
最上位層は動作論理（operations logic）層３１６であり、分散アプリケーションの動作態様を調整する。この動作論理は、サービスの開始、サービスの拡大および縮小（growing and shrinking）、アップグレードおよびダウングレード、障害検出および回復、ならびに状態区分化に責任がある。この動作論理により、展開およびアプリケーションに渡って検証済みの動作実行の再利用が可能になる。ＳＤＭ層を使うことにより、動作論理は、起こり得る問題をよりよく理解するためのコンテクストを有する。たとえば、故障が起こると、動作論理は、その部屋の中間にある何らかのサーバではなく、ｅメールサービスのフロント・エンドでその故障が起きたと判定することができる。
【００２９】
仮想ネットワーク・トポロジ
プラットフォーム・アーキテクチャは、同一の計算機システムが複数のアプリケーションをサポートすることができるように、物理リソース上に仮想ネットワーク・トポロジを生成するフレームワーク（枠組み）を提供する。仮想ＬＡＮ（ＶＬＡＮ）は、アプリケーションが分散コンピューティング・システムで実行される他のアプリケーションと分離して実行することができるように、各アプリケーションごとに作成することができる。仮想ネットワーク・トポロジが作成されると、システムは、物理リソースの自動展開および適切なＶＬＡＮへの接続を促して、分散アプリケーションの実行を可能にする。
【００３０】
図４は、ネットワーク・スイッチ４０４を介して相互接続される５つのサーバ４０２（１）〜４０２（５）からなる例示的な配置を有する物理ネットワーク・トポロジ４００を示す。各サーバ４０２は、ネットワーク・スイッチ４０４の、関連づけられたポートＰ1〜Ｐ5に物理的に結合される。説明のために、このネットワーク・スイッチは、１つまたは複数のイーサネット（登録商標）スイッチとして実装される。
【００３１】
仮想ネットワーク・トポロジは、物理コンピューティング・リソース４００上で実行される分散アプリケーションを表すように作成することができる。例示的な本実装形態では、仮想ネットワーク・トポロジは、イーサネット（登録商標）スイッチ、ＶＬＡＮ、および仮想ネットワーク・インターフェース（ＶＮＩＣ）を使って作成される。イーサネット（登録商標）のネットワークにより、ネットワークの分離（isolation）のために複数のＶＬＡＮへの隔離（segregation）が可能になる。ＶＬＡＮ内のノードは、同一のＶＬＡＮ内の他のノードと自由に通信することができるが、ＶＬＡＮの外のノードと直接話すことはできない。ＶＬＡＮは、ポート・ベースのＶＬＡＮとしても、プロトコル・ベースのＶＬＡＮとしても実装することができる。ポート・ベースのＶＬＡＮは、単一のスイッチ中に生じるが、プロトコル・ベースのＶＬＡＮは、複数のスイッチに及ぶことができる。プロトコル・ベースのＶＬＡＮは、ＩＥＥＥ８０２．１Ｑに従って標準化されている。非特許文献１（ＩＥＥＥ８０２．１Ｑ標準）は、どのようにしてパケットに印がつけられ、どのようにしてＶＬＡＮがサポートされるか記述している。各パケット（フレーム）は、そのフレームにタグ・ヘッダを追加することによって、８０２．１Ｑ情報で印がつけられる（タグづけされる）ので、この標準は、タグ・ヘッダのような８０２．１Ｑパケットの拡張を記述している。
【００３２】
２つ以上のコンピュータをＶＬＡＮに置くことは、それらのコンピュータを同一の物理ネットワークに接続することと物理的に等価である。この特性は、物理ネットワークの上位に任意の仮想トポロジを作成するように拡張される。たとえば、サーバ４０２（１）、４０２（３）、および４０２（５）上の３つのウェブ・サーバと、サーバ４０２（２）上の１つのデータベースとをアプリケーションが必要とする、と仮定する。さらに、アプリケーション設計者はセキュリティに関心があり、ある分離ゾーンにウェブ・サーバ４０２（１）、４０２（３）、４０２（５）を、および別個の分離ゾーンにデータベース・サーバ４０２（２）を置き、その２つの分離ゾーンを、ファイアウォールを介して接続したいと望んでいる。
【００３３】
図５は、図４の物理リソース４００から形成することができるとともに、このアプリケーション設計者の目標を達成する仮想ネットワーク・トポロジ５００を示す。この仮想ネットワーク・トポロジ５００は、２つのＶＬＡＮ、すなわちウェブＶＬＡＮ５０２およびデータベース（ＤＢ）ＶＬＡＮ５０４を有する。ウェブ・サーバ４０２（１）、４０２（３）、および４０２（５）はウェブＶＬＡＮ５０２に置かれ、データベース・サーバ４０２（２）はＤＢ  ＶＬＡＮ５０４に置かれる。ファイアウォールはサーバ４０２（４）に展開され、次いでウェブＶＬＡＮ５０２およびデータベースＶＬＡＮ５０４の両方に接続される。このファイアウォール４０２（４）は、ＤＭＺWeb５０６およびＤＭＺDB５０８で表されるように、アプリケーションについて２つの分離ゾーンを作成する。
【００３４】
この例では、ファイアウォール・サーバ４０２（４）は２つのＶＬＡＮのメンバーである。ただし、このサーバは、ネットワーク・スイッチ４０４のポートＰ4への接続用のただ１つの物理インターフェースしかもたない。１つの物理インターフェースが２つのＶＬＡＮをサポートすることを可能にするには、サーバ４０２（４）上にＶＬＡＮドライバが、２つの仮想ネットワーク・インターフェース（ＶＮＩＣ）を作成するようにインストールされ、そうすることによって物理ネットワーク・インターフェース（ＮＩＣ）は、両方のＶＬＡＮに接続されるように見えるようになる。サーバ側から見ると、各仮想ネットワーク・インターフェースは、別個のネットワークに物理接続されているように見える。
【００３５】
図６は、ファイアウォール・サーバ４０２（４）をより詳細に示す。このファイアウォールはＶＬＡＮドライバ６０２を実装し、このドライバは、ネットワーク・インターフェース（ＮＩＣ）ドライバ６０４とＩＰドライバ６０６の間のプロトコル・スタック内に実装される。一実装形態では、ＶＬＡＮドライバ６０２は、リソース・マネージャ２１２によってダウンロードされてインストールされる。ＮＩＣドライバ６０４は、スイッチ４０４のポートＰ4への物理接続を介するすべてのパケット・トラフィックを処理する。ＶＬＡＮドライバ６０２は、物理ネットワーク・インターフェースにバインドし、各物理ネットワーク・インターフェースを介する１つまたは複数の仮想ネットワーク・インターフェース（ＶＮＩＣ）を作成する。各仮想ネットワーク・インターフェースは、一義的なＶＬＡＮ識別を表す。この例では、ＶＬＡＮドライバ６０２は、２つの仮想ネットワーク・インターフェース、すなわちウェブＶＬＡＮ５０２用のＶＮＩＣ  ＶＬＡＮWEB６０８およびＤＢ  ＶＬＡＮ５０４用のＶＮＩＣ  ＶＬＡＮDB６１０を作成する。
【００３６】
ある特定のＶＬＡＮに向けられた発信パケットは、関連づけられたＶＮＩＣにおいて、対応するＶＬＡＮ識別でタグづけされる。アプリケーションは、特定のＶＮＩＣインターフェースに直接バインドすることによって、適切なＶＬＡＮを選ぶ。パケットは次いで、物理インターフェースを介してネットワーク・スイッチに送られる。このスイッチは、ＶＬＡＮタグを調べ、どのＶＬＡＮにそのパケットがバインドされているか確かめることができる。着信パケットも同様に、ＶＬＡＮ識別でタグづけされる。関連づけられたＶＮＩＣは、パケットを受け取ってタグをはぎ取り、適切なアプリケーションで使うためにそのパケットをアップ・ストリームでＩＰドライバに渡す。こうすることにより、単一の物理ＮＩＣを有するサーバがいくつかのＶＬＡＮに関与することが可能になる。
【００３７】
仮想ネットワーク・トポロジ生成サーバ２１０は、スイッチ４０４に結合されて示してある。遠隔プログラム制御技術を使って、このサーバ２１０は、ファイアウォール・サーバで（まだない場合は）ＶＬＡＮドライバをダウンロードさせてインストールし、次いで、仮想ネットワーク・トポロジ用のＶＮＩＣを作成する命令を提供することができる。サーバがただ１つのＶＬＡＮのメンバー（たとえば、ウェブ・サーバ４０２（１）、４０２（３）、４０２（５）およびデータベース・サーバ４０２（２））である場合、ＶＬＡＮドライバ６０２をインストールする必要もＶＮＩＣを作成する必要もないことに留意されたい。ネットワーク・インターフェースは、スイッチ・ポートへの適切な物理接続を指定することができ、スイッチ・ポートは、適切なＶＬＡＮ帰属関係（membership）を有して構成することができ、ＶＬＡＮを介してすべてのトラフィックをサーバにまたはそこから転送する。一方、サーバがただ１つのＶＬＡＮ用に使われるとしても、ＶＬＡＮドライバをインストールし１つのＶＮＩＣを作成することに不都合はない。
【００３８】
特殊な装置の場合、リソース・マネージャは、こうした装置にＶＮＩＣをインストールすることができない。しかし、こうした装置でも、ある特定のＶＬＡＮに対応するようにプログラミングすることができる。いくつかの装置は、複数の物理ポートを備える。こうした物理ポートはそれぞれ、こうした装置が接続されるスイッチ・ポートをプログラミングすることによって、異なるＶＬＡＮのメンバーにすることができる。他の特殊な装置の場合、リソース・マネージャは、特定のＶＬＡＮ上に適切なポートを位置決めするために、装置専用のドライバを用いてそうした装置をプログラミングする。これは、スイッチ・ポートに特定のＶＬＡＮのメンバーであると命じることに似ている。
【００３９】
仮想ネットワーク・トポロジの生成
図７は、分散アプリケーションをサポートする仮想ネットワーク・トポロジを生成し、そのアプリケーション用のリソースを展開する処理７００を示す。処理７００は一連のブロックとして示してあり、このブロックは、コンピューティング・システム２００内の様々なコンピュータによって実施される動作を表している。この動作は、様々なコンピュータで実行することができるソフトウェアで実装することができる。したがって、ブロックは、関連する動作を実施するプロセッサによって実行することができる、コンピュータ可読媒体に格納された命令を表している。
【００４０】
ブロック７０２で、アプリケーション設計者は、分散コンピューティング・システム２００上で展開されることになる分散アプリケーションの仮想レイアウトを設計する。仮想レイアウトは、どのような構成要素が使用され、どのようにしてその構成要素が相互接続されるか指定する。たとえば、図５に示すアプリケーションを設計するために、設計者は、ウェブ・サーバ、データベース・サーバ、ファイアウォール用の構成要素、およびこうした構成要素の間の接続を指定することができる。
【００４１】
ブロック７０４で、このシステムは、分散アプリケーションの様々な構成要素を具体化するように割り振られる物理リソースを決定する。システムは、たとえば、どれだけのサーバが、アプリケーションをサポートするために展開されるべきかを決定する。こうした決定は、サービスのサイズなどのようなパラメータ、どれだけの数のユーザが予想されるか、などを示す、設計者から受け取った入力に部分的に基づく。
【００４２】
アプリケーションが設計され、構成要素の具体化（instantiations）が決定されると、仮想ネットワーク・トポロジ生成サーバ２１０に実装されたリソース・マネージャ２１２は、仮想ＬＡＮ（ＶＬＡＮ）および仮想ネットワーク・インターフェース（ＶＮＩＣ）を使って、仮想ネットワーク・トポロジから物理ネットワークへのマッピングを実現する。ブロック７０６で、仮想ネットワーク・トポロジ生成サーバ２１０は、各アプリケーションごとに少なくとも１つの仮想ＬＡＮ（ＶＬＡＮ）を作成する。１つのアプリケーション用の仮想ネットワーク・トポロジは、図５に示す仮想ネットワーク・トポロジ５００の場合のように、複数のＶＬＡＮを使用して、複数の分離ゾーンを確立することができる。この例では、仮想ネットワーク・トポロジ生成サーバ２１０は、２つのＶＬＡＮ、すなわちウェブＶＬＡＮ５０２およびＤＢ  ＶＬＡＮ５０４を作成する。この２つのＶＬＡＮは、ウェブ・サーバ４０２（１）、４０２（３）、および４０２（５）をデータベース・サーバ４０２（２）から分離し、そうすることによって２つの分離ゾーンＤＭＺWeb５０６およびＤＭＺDB５０８を作成する。
【００４３】
ブロック７０８で、仮想ネットワーク・トポロジ生成サーバ２１０にあるリソース・マネージャ２１２は、物理コンピューティング・リソースをそれぞれのＶＬＡＮに展開する。言い換えると、リソース・マネージャ２１２は、アプリケーションの仮想ネットワーク・トポロジをサポートするために、物理ネットワーク４００（図４）からの物理リソースを割り当てる。こうした展開は、図７のブロック７０８（１）および７０８（２）で示す２つの下位動作を含む。
【００４４】
ブロック７０８（１）で、リソース・マネージャ２１２は、ネットワーク・スイッチ４０４の外部スイッチ・ポート（すなわち、サーバに接続されるポート）を、そのサーバが属す指定されたＶＬＡＮに割り当てる。外部スイッチ・ポートは、１つまたは複数のＶＬＡＮ帰属関係を有して構成することができる。
【００４５】
ブロック７０８（２）で、リソース・マネージャ２１２は、指定されたＶＬＡＮを介した通信を可能にするために仮想ネットワーク・インターフェース（ＶＮＩＣ）をサーバで作成し、そうすることによってサーバは、そのＶＬＡＮのメンバーになることができる。サーバがただ１つのＶＬＡＮのメンバー（たとえば、ウェブ・サーバ４０２（１）、４０２（３）、４０２（５）およびデータベース・サーバ４０２（２））である場合は、この動作は任意選択であることに留意されたい。この場合、サーバはただ１つのＶＬＡＮを介して通信することになるので、そうしたＶＬＡＮ帰属関係を有するスイッチ・ポートを構成することが適切である。スイッチは、サーバからのすべてのトラフィックがただ１つの構成されたＶＬＡＮに向けられたものであると想定している。サーバが２つ以上のＶＬＡＮのメンバー（たとえば、ファイアウォール・サーバ４０２（４））である場合は、ＶＬＡＮドライバがサーバにインストールされる。ＶＬＡＮドライバは、物理ネットワーク・インターフェースにバインドされ、その上に２つ以上の仮想ネットワーク・インターフェース（ＶＮＩＣ）を作成する。各仮想ネットワーク・インターフェースは、一義的なＶＬＡＮ識別を表す。ＶＮＩＣ上で送り出されるパケットは、そのＶＬＡＮ識別でタグづけされる。スイッチはそのＶＬＡＮタグを調べ、どのＶＬＡＮにそのパケットがバインドされるか確かめることができる。
【００４６】
物理コンピューティング・リソースは、判断ブロック７１０で表すようにアプリケーションが完全にインストールされるまで、この２段階動作方式で展開され続ける。
【００４７】
物理リソースの展開を例示するために、どのようにしてリソース・マネージャ２１２が図５の仮想ネットワーク・トポロジ５００に向けてコンピュータを展開するか検討する。図５および６の両方を参照してこの処理を説明する。最初に、２つのＶＬＡＮ、すなわちウェブＶＬＡＮ５０２およびＤＢ  ＶＬＡＮ５０４が動作７０６で作成される。次に、分離ゾーンＤＭＺWeb５０６を定義するために、リソース・マネージャ２１２がファイアウォール・サーバ４０２（４）をウェブＶＬＡＮ５０２に追加することを決定すると仮定する。リソース・マネージャ２１２は、スイッチ４０４に、ポート４がウェブＶＬＡＮ５０２を参照するように設定するように、通知する。これは、図６で、「ＶＬＡＮWeb」識別をポート４に追加することによって示してある。このことは、処理７００の動作７０８（１）を表す。スイッチ４０４は、ここで、分離ゾーンＤＭＺWeb５０６の一部であることを理解する。リソース・マネージャ２１２は次いで、ファイアウォール・サーバ４０２（４）にあるＶＬＡＮドライバ６０２に、図６にＶＮＩＣ  ＶＬＡＮWeb６０８で示すウェブＶＬＡＮ用のＶＮＩＣを作成するように指示する。このことは、処理７００の動作７０８（２）を表す。ＶＮＩＣ  ＶＬＡＮWeb６０８を介して渡されるパケットは、ＶＬＡＮWeb識別でタグづけされ、スイッチ４０４によってウェブＶＬＡＮ５０２上に正しく経路指定される。
【００４８】
ここで、リソース・マネージャ２１２が、他方の分離ゾーンＤＭＺDB５０８を定義するために同じファイアウォール・サーバ４０２（４）をＤＢ  ＶＬＡＮ５０４に追加すると仮定する。リソース・マネージャ２１２は、スイッチ４０４に、ポート４がさらにＤＢ  ＶＬＡＮ５０４を参照するように設定するように通知する。これは図６で、「ＶＬＡＮDB」識別をポート４に追加することによって示してある。これもやはり、処理７００の動作７０８（１）を表す。ここで、スイッチ４０４は分離ゾーンＤＭＺDB５０８の一部でもあり、ＶＬＡＮDB識別を有するパケットを受け取ることになる。リソース・マネージャ２１２は次いで、ファイアウォール・サーバ４０２（４）にあるＶＬＡＮドライバ６０２に、今度は図６にＶＮＩＣ  ＶＬＡＮDB６１０で示すＤＢ  ＶＬＡＮ用の第２のＶＮＩＣを作成するように、指示する。これもやはり、処理７００の動作７０８（２）を表す。ＶＮＩＣ  ＶＬＡＮDB６１０を介して渡されるパケットは、ＶＬＡＮDB識別でタグづけされ、スイッチ４０４によってＤＢ  ＶＬＡＮ５０４上に正しく経路指定される。
【００４９】
この処理は、各ウェブ・サーバ４０２（１）、４０２（３）、４０２（５）をウェブＶＬＡＮ５０２に、およびデータベース・サーバをＤＢ  ＶＬＡＮ５０４に接続するために繰り返すことができる。上述したように、こうしたサーバの追加は、対応するスイッチ・ポートＰ1、Ｐ2、Ｐ3、およびＰ5を適切なＶＬＡＮ帰属関係を有して構成するだけで実現することができる。こうしたサーバは現時点ではただ１つのＶＬＡＮの一部なので、仮想ネットワーク・インターフェースをサーバで作成する必要はない。
【００５０】
例示的なリソース・マネージャＡＰＩ
以下のセクションでは、スイッチおよびサーバを遠隔に構成するリソース・マネージャ（ＲＭ）２１２によって提供されるアプリケーション・プログラム・インターフェース（ＡＰＩ）の例示的な組（set）を提供する。このＡＰＩは、ＶＬＡＮを確立すること、スイッチを適切なＶＬＡＮに接続すること、関連づけられたＶＬＡＮ上への通信を促すためにサーバでＶＮＩＣを作成すること、に使われ、そうすることによって仮想ネットワーク・トポロジから物理ネットワーク・リソースへのマッピングを実現する。こうしたトポロジ・マッピングは、専用の帯域外ネットワーク（dedicated out-of-band network）ではなく、既存のネットワークを介した帯域内技術（in-band techniques）を使って完成されることに留意されたい。したがって、そこには、開始するためのデフォルトの接続性が存在し、それによって、必要に応じて新しいＶＬＡＮを構成する基礎を提供する。
【００５１】
仮想トポロジの構築および割振り解除は、ＲＭによって公開される、以下の中心となるウェブ方法（core web methods ）によって促される。  
・AllocateVlan()  
・ConstructVlan()  
・AttachComputerToVlan()  
・DetachComputerFromVlan()  
・ReleaseVlan()  
以下は、ＲＭによって提供される例示的なインターフェースの一覧を示し、上記の５つのウェブ方法の説明を含む。以下において部分的な和訳を（）に追加している。
【００５２】
Register  
/// <summary>   
/// Registers this resource manager with the runtime on the machine   
/// "runtimeAddress"（マシン「runtimeAddress」上のランタイムを使用してこの  
/// リソース・マネージャを登録する）.  
/// </summary>  
/// <param name="runtimeAddress">lP address of the runtime to register with  
/// （登録するランタイムのｌＰアドレス）.</param>  
/// <returns>Component instance of this resource manager（この  
/// リソース・マネージャのコンポーネント・インスタンス）.</returns>  
/// <remarks>  
/// Just returns the component instance of this resource manager of duplicate  
/// calls（二重のコールでこのリソース・マネージャのコンポーネント・  
/// インスタンスに戻る）.  
/// </remarks>  
[WebMethod(Description="Register this resource manager with the runtime.")] public long Register(string runtimeAddress)  
【００５３】
Unregister  
/// <summary>  
/// Unregisters this resource manager from the runtime on the machine  
/// "runtimeAddress"（マシン「runtimeAddress」上のランタイムからこのリソース  
/// ・マネージャを登録解除する）.  
/// </summary>  
/// <param name="runtimeAddress">IP address of the runtime to unregister from  
/// （登録解除するランタイムのＩＰアドレス）.</param>  
/// <remarks>  
/// Does nothing on a duplicate call（二重のコールで何もしない）.   
/// </remarks>  
[WebMethod(Description="Unregister this resource manager from the runtime（ランタイムからこのリソース・マネージャを登録解除する）.")] public void Unregister(string runtimeAddress)  
【００５４】
RegisterComputer  
/// <summary>  
/// Register a computer and its relationship with network devices (typically  
/// switches) with the Network Resource Manager（ネットワーク・リソース・  
/// マネージャで、コンピュータと、そのネットワーク・デバイス(一般にスイッチ)  
/// との関係を登録する）.</summary>  
/// <param name="computer">Information on the computer to register（登録する  
/// コンピュータについての情報）.</param>  
/// <remarks>  
/// A computer must be registered before any operation is performed on that   
/// computer(any method call that requires a 'computerId')（コンピュータ上で  
/// 何らかの操作(‘computerId’を必要としている何らかのメソッド・コール)が  
/// 行われる前に、コンピュータは登録されなければならない）. 
///  
/// A "managed" computer is a computer that contains the VLAN tag driver and   
/// the network resource manager has permission to update the computer's   
/// virtual interface and IP addressing setting. If unmanaged, the computer   
/// is moved to thespecified VLAN and is not accessed (the caller must   
/// create the proper virtual interface on the computer)（「managed」  
/// コンピュータは、ＶＬＡＮタグ・ドライバを含んでいるコンピュータであり、  
/// ネットワーク・リソース・マネージャの仮想インターフェースとＩＰアドレス  
/// 指定セッティングをアップデートするアクセス権を持っている。管理されない  
/// ならば、コンピュータは指定されたＶＬＡＮに移動されて、アクセスされない  
/// (呼びだし側はコンピュータの上の適切な仮想インターフェースを作成しなけれ  
/// ばならない。)）.  
/// </remarks>  
[WebMethod(Description="Register a computer with the Network Resource Manager（ネットワーク・リソース・マネージャにコンピュータを登録する）.")] public void RegisterComputer(NrmComputer computer)  
【００５５】
RegisterDevice  
/// <summary>  
/// Register a network device with the Network Resource Manager（ネットワーク  
/// ・リソース・マネージャでネットワーク・デバイスを登録する）.  
/// </summary>  
/// <param name="device">Information on the device to register（登録する  
/// デバイスについての情報）.</param>  
/// <remarks>  
/// A device must be registered before any operation is performed on that   
/// device.  On registration the device will be connected to and soft   
/// configuration information retrieved（何らかの操作がそのデバイス上で行われ  
/// る前に、デバイスは登録されなければなりない。登録に関して、デバイスが  
/// それに接続され、ソフト構成情報が取り出される。）.  
/// <remarks>  
[WebMethod(Description="Register a network device with the Network Resource Manager（ネットワーク・リソース・マネージャでネットワーク・デバイスを登録する）.")] public void RegisterDevice(NrmDevice device)  
【００５６】
UnregisterComputer  
/// <summary>  
/// Unregister a computer from the Network Resource Manager（ネットワーク・  
/// リソース・マネージャでコンピュータを登録解除する）.  
/// </summary>  
/// <param flame="computerId">Identifier of computer to unregister（登録解除  
/// するコンピュータの識別子）.</param>  
/// <param name="force">Force automatic clean up of held resources（保持して  
/// いるリソースについて自動的クリーンアップを強制執行する）.</param>  
/// <remarks>  
/// A computer must been previously registered and all held network resources  
/// released before unregistration（コンピュータは以前に登録されていなければ  
/// ならず、全ての保持されているネットワーク・リソースは登録解除するまえに  
/// リリースされる）.  
/// The 'force' flag will scrub the database of any references to the device   
/// without attempting to communicate with the device（‘強制執行’フラグは、  
/// デバイスと通信せずにそのデバイスへの全てのリファレンスのデータベースを  
/// 消し込むことになる）.  
/// </remarks>  
[WebMethod(Description="Unregister a computer from the Network Resource Manager（ネットワーク・リソース・マネージャからコンピュータを登録解除する）.")] public void UnregisterComputer(long computerid, boot force)   
【００５７】
UnregisterDevice  
/// <summary>  
/// Unregister a device from the Network Resource Manager（ネットワーク・  
/// リソース・マネージャからデバイスを登録解除する）.  
/// </summary>  
/// <param name="deviceId">Identifier of device to unregister（登録解除する  
/// デバイスの識別子）.</param>  
/// <param name="force">Force automatic clean up of held resources（保持して  
/// いるリソースの自動的なクリーンアップを強制執行する）.</param>  
/// <remarks>  
/// A device must been previously registered and all held network resources  
///  releasedbefore unregistration（デバイスは登録されていなければならず、  
/// すべての保持しているネットワーク・リソースは登録解除する前にリリースさ  
/// れる）.  
///  
/// The 'force' flag will scrub the database of any references to the device   
/// without attempting to communicate with the device（‘強制執行’フラグは、  
/// デバイスと通信せずにそのデバイスへの全てのリファレンスのデータベースを  
/// 消し込むことになる）.  
/// </remarks>  
[WebMethod(Description="Unregister a network device from the Network Resource Manager（ネットワーク・リソース・マネージャからネットワーク・デバイスを登録解除する）.")] public void UnregisterDevice(long deviceId, boot force)  
【００５８】
AllocateVlan   
/// <summary>  
/// Allocates a new VLAN from the network resource database if available and  
/// is supported by this network environment. If successful, the allocated  
/// vlan is recorded with the owner identification（新しいＶＬＡＮを、それが  
/// 使用可能で、このネットワーク環境によってサポートされているならば、  
/// ネットワーク・リソース・データベースから割り当てる。成功したならば、  
/// 割り当てられたｖｌａｎはオーナ識別子を使用して記録される。）.  
/// </summary>  
/// <param name="ownerId">Owner identification of the allocated resource  
/// （割り当てられたリソースのオーナ識別）.</param>  
/// <returns>A VLAN tag identifier of the newly allocated VLAN.</returns>  
/// <remarks>  
/// The allocation is only performed in the network resource database and the  
///  network is not affected. A call to 'ConstructVlan' is required to create   
/// the actual vlan in the network environment（この割当てはネットワーク・  
/// リソース・データベース中で実行されるだけで、このネットワークは影響を受け  
/// ない。‘ConstructVlan’へのコールは、ネットワーク環境において実際の  
/// ｖｌａｎを作成するために必要とされる。）.  
/// </remarks>  
[WebMethod(Description="Allocate a VLAN")]  
/// <algorithm>  
/// Prior State（事前の状態）:  
/// The number of VLANs available within a network fabric is determined by   
/// three factors: the type and configuration of physical switch(es), the   
/// number of VLANs reserved for internal use, and previous allocations of   
/// VLANs. While the current theoretical range of VLANs is 1 to 4095, the   
/// actual number may be limited by the implementation of VLANs on a switch.   
/// For example, a switch may only support a range of 1 to 1001 with a maximum   
/// allocated VLANs of 256. Knowledge of the switch architecture,reserved for   
/// internal use VLANs and previously allocated VLANs is tracked in a  
///  persistent database（ネットワーク構造内で使用可能なＶＬＡＮｓの数は  
/// ３つの要因によって決定される：物理的なスイッチのタイプと構成、  
/// 内部使用のために確保されたＶＬＡＮｓの数、ＶＬＡＮｓの前の割当て数。  
/// ＶＬＡＮｓの現在の理論的な範囲が１から４０９５まであるのに対して、実際の  
/// 数はスイッチ上のＶＬＡＮｓの実装によって制限されることになる。例えば、  
/// スイッチは２５６の最大の割り当てられたＶＬＡＮｓによって１から１００１の  
/// 範囲をサポートするだけの場合もある。内部的なＶＬＡＮｓの使用に確保された  
/// スイッチ・アーキテクチャに関する知識、および以前に割り当てられた
/// ＶＬＡＮｓは、持続的なデータベースで追跡される。）.  
///  
/// Description（記述）:  
///  1. Validate parameter is valid. OwnerId must be non-zero value（有効化  
///   パラメータは有効である。Owneridは非０の値でなければならない。）. 
///  2. Transaction lock database（トランザクションはデータベースを  
///   ロックする）.  
///  3. Examine database to determine if a new VLAN can be allocated without  
///     exceeding the maximum permitted by the current network fabric
/// （新しいＶＬＡＮが、現在  のネットワーク構造によって許された最大を越えず  
///  に割り当てられることができるかどうかを決定するために、データベースを  
///  調査する）.  
///  4. If no more VLANs are permitted, throw exception and release database   
///  lock（もはやＶＬＡＮｓが許されないならば、例外報告をスローして、  
///  データベース・ロックを解除する）. 
///  5. Create new row in database to represent the allocated VLAN entry.   
///  The VLAN identifier is determined by a linear scan of existing VLAN   
///  entries to find the first available (not allocated) identifier（データ  
///  ベースの中で新しい列（row）を作成し、割り当てられたＶＬＡＮエントリを  
///  提示する。ＶＬＡＮ識別子は、最初の使用可能な(割り当てられていない)識別子  
///  を見つけるために、既存のＶＬＡＮエントリを線型走査して、決定される。）.  
///  6. Commit transaction（トランザクションを確定する）.  
///  7. Return the allocated VLAN identifier to caller（呼びだし側に割り当て  
///  られたＶＬＡＮ識別子を戻す）.  
/// <algorithm>  
public int AllocateVlan(long ownerId)  
【００５９】
AllocateVlanWithId  
/// <summary>  
/// Allocates the specific VLAN requested from the network resource database  
/// if available and is supported by this network environment. If successful,  
/// the allocated vlan is recorded with the owner identification（要求された  
/// 特定のＶＬＡＮを、それが使用可能でこのネットワーク環境によってサポート  
/// されるならば、このネットワーク・リソース・データベースから割り当てる。  
/// 成功したならば、割り当てられたｖｌａｎはオーナ識別子を使用して記録される  
/// 。）.  
/// </summary>  
/// <param name="ownerId">Owner identification of the allocated resource  
/// （割り当てられたリソースのオーナ識別）.</param>  
/// <param name="vlanId">The identifier of the VIan to allocate（割り当てる  
/// Ｖｌａｎ識別子）.</param>  
/// <remarks>  
/// The allocation is only performed in the network resource database and   
/// the network is not affected.  A call to 'ConstructVlan' is require to   
/// create the actual vlan in the network environment.  The default VLAN can   
/// not be allocated（割当てはネットワーク・リソース・データベース中で実行  
/// されるだけで、ネットワークは影響されない。‘ConstructVlan’へのコールは、  
/// ネットワーク環境において実際のｖｌａｎを作成するために必要とされる。  
/// デフォルトＶＬＡＮは割り当てられることができない。）.</remarks>  
[Web Method(Description="Allocates a specific VLAN（特定のVLANを割り当てる）.")] public void AllocateVlanWith Id(long ownerId, int vlan Id)  
【００６０】
ConstructVlan  
/// <summary>  
/// Constructs a previously allocated VLAN by creating a new vlan entry in   
/// the network hardware (switches) and updating the state of the Network   
/// VLAN entry in the database（ネットワーク・ハードウェア(スイッチ)中で  
/// 新しいｖｌａｎエントリを作成し、データベースの中でネットワークＶＬＡＮ  
/// エントリの状態をアップデートすることによって、以前に割り当てられた  
/// ＶＬＡＮを構成する）.  
/// </summary>  
/// <param name='vlanId">Identifier of VLAN to construct（構成するＶＬＡＮの  
/// 識別子）.</param>  
/// <remarks>  
/// The VLAN must have been successfully created via the 'AllocateVlan'  
///  method（VLANは‘AllocateVlan’メソッドを介して成功裏に作成される必要が  
/// ある）.  
/// </remarks>  
/// <devdoc>  
[WebMethod(Description="Construct a pre-allocated VLAN（事前に割り当てられたＶＬＡＮの構築）.")]  
/// <algorithm>  
/// Prior State（事前の状態）:  
///   The VLAN identifier to be constructed was allocated in a prior method   
///   call to AllocateVlan() which reserves the VLAN identifier in the   
///   persistent database. All network switches are defined in the database   
///   and are available for configuration（構成されるＶＬＡＮ識別子は、持続的  
///   なデータベース中にＶＬＡＮ識別子を確保するAllocateVlan()への事前の方法  
///   コールの中で割り当てられていた。すべてのネットワーク・スイッチは  
///   データベースの中で定義されていて、構成のために使用可能である）.
///  
/// Description（記述）:  
///   1. Transaction lock database（トランザクションはデータベースを  
///    ロックする）.  
///   2. The vlanId must exist in the database in the 'allocated' state  
///   （vlanIdは、‘割り当てられた’状態で、データベースの中に存在しなければ  
///    ならない）.  
///   3. For each switch in the database, allocate the VLAN identifier on   
///     that switch using the type specific device driver for that switch  
///    （データベース中の各  スイッチに対して、そのスイッチ用のタイプの特定の  
///    デバイス・ドライバを使 って、そのスイッチ上にＶＬＡＮ識別子を割り当て
///    る）.  
///   4. Update state of the VLAN to 'constructed' in the database（データ  
///      ベース内で‘構成されている’ＬＡＮの状態をアップデートする）.  
///   5. Commit transaction（トランザクションを確定する）.  
/// </algorithm>  
public void ConstructVlan(int vlanId)  
【００６１】
AttachComputerToVlan  
/// <summary>  
/// Attach a computer to the VLAN and update its virtual interface and   
///  addressing  if managed（コンピュータをＶＬＡＮに付加し、それが管理され  
///  ているならば、その仮想インターフェースとアドレス指定をアップデートする）.  
/// </summary>  
/// <param name="computerId">Identifier of computer to attach to（付加する  
/// コンピュータの識別子）.</param>  
/// <param name="vlanId">VLAN identifier to attach port to（付加ポートの  
/// ＶＬＡＮ識別子）.</param>  
/// <param name="tagged">The VLAN is tagged and required the VLAN driver  
/// （このＶＬＡＮはタグ付けされ、ＶＬＡＮドライバを必要とする）.</param>  
/// <param name="managed">The target computer is managed（ターゲット・  
/// コンピュータは管理される）.</param>  
/// <returns>  
/// The IP address and subnet mask used to access the computer on the   
/// specified  VLAN  （ＩＰアドレスとサブ・ネット・マスクは、指定された  
/// ＶＬＡＮ上のコンピュータをアクセスするのに使用される）.  
/// </returns>  
/// <remarks>  
/// Attaching to the default VLAN is not possible.  Detaching a computer from   
/// all  VLANs will place it on the default VLAN. "（デフォルトＶＬＡＮに付加  
/// することは不可能である。すべてのVLANsからコンピュータを取り外すことは  
/// それをデフォルトVLANに置くことになる。）  
///  
/// If the 'tagged' argument is true then the computer will be attached to   
/// the VLAN  specified in tagged mode.  This requires the computer to use  
/// the Virtual VLAN  driver to create a virtual interface for that VLAN to  
/// access the network.  Acomputer can exist in multiple tagged VLAN, but  
///  only a single untagged VLAN.  Notpossible to mix tagged and untagged  
///  VLANs（‘tagged’引数が真であるならば、そのコンピュータはタグ付けされた  
/// モードで指定されたＶＬＡＮに付加されることになる。このことは、その
/// コンピュータが、  そのＶＬＡＮがネットワークにアクセスするための仮想  
/// インターフェースを作成するために、仮想のＶＬＡＮドライバを使うことを  
/// 必要とする。コンピュータは、複数のタグを付けられたＶＬＡＮにおいて  
/// 存在することができ、１つのタグ付けされないＶＬＡＮに存在することが  
/// できる。タグ付けされたＶＬＡＮｓと、タグ付けされないＶＬＡＮｓを混在  
/// させることは不可能である。）.  
///  
/// A "managed" computer is a computer that contains the VLAN tag driver and   
/// the network resource manager has permission to update the computer's   
/// virtual interface and IP addressing setting.  If unmanaged, the computer   
/// is moved to the specified VLAN and is not accessed.  If 'managed' is true  
/// then the 'tagged' argument must be true.  If 'managed' is false and   
/// 'tagged' is true, the caller is responsible for creating a virtual  
/// interface on the computer（「managed」コンピュータは、ＶＬＡＮタグ  
/// ドライバを含んでいるコンピュータであり、ネットワーク・リソース・  
/// マネージャは、コンピュータの仮想インターフェースとＩＰアドレス指定  
/// セッティングをアップデートするアクセス権を持っている。管理されていない  
/// ならば、そのコンピュータは指定されたＶＬＡＮに移動されて、アクセスされ  
/// ない。‘managed’が真であるならば、‘tagged’引数は真であることになる。  
/// ‘managed’が偽で、‘tagged’が真であるならば、呼びだし側は、  
/// コンピュータの上の仮想インターフェースを作成する責任がある。）.  
/// </remarks>  
[WebMethod(Description="Attach a computer to the specified VLAN（コンピュータを、指定されたVLANに付加する）.")]   
/// <algorithm>  
/// Prior State（事前の状態）:  
///   The computer to be attached has been registered with the NRM to provide  
///   details on the wire path between the physical NICs on the computer and   
///   the port on the switch  connected to.  The VLAN identifier has been   
///   successful constructed（付加されるコンピュータは、コンピュータの上の  
///   物理的なＮＩＣｓと接続されたスイッチの上のポートの間でワイヤ・パスの上  
///   の詳細を提供するＮＲＭによって登録されている。ＶＬＡＮ識別子は成功裏に  
///   構築されている。）.  
///  
/// Description（記述）:  
///   1. Transaction lock database（トランザクションはデータベースを  
///    ロックする）.  
///   2. The computerId must exist in the database with topology details  
///    （computerIdはトポロジ詳細を有してデータベースの中に存在しなければ  
///    ならない）.  
///   3. The vlanId must exist in the database in the 'constructed' state  
///    （vlanIdは、‘constructed’状態でデータベース中に存在しなければなら  
///    ない）.  
///   4. Using a remote call, add a new Virtual NIC on the specified computer  
///    for the VLAN identifier provided（リモートのコールを使って、提供された  
///      ＶＬＡＮ識別子のために新しい仮想ＮＩＣを指定されたコンピュータの上に  
///     追加する）.  
///   3. For each switch in the database, attach the switch port physically   
///    attached to the computer to the VLAN identifier using the type  
///     specific device driver for that switch（データベース中の各スイッチに
///     対して、そのスイッチ用のタイプ特定デバイス・ドライバを使って、  
///     ＶＬＡＮ識別子に物理的にコンピュータに接続されスイッチ・ポートを付加  
///     する）.  
///   4. Add a new 'attached' record to the database to indicate the   
///    computer's relationship with the VLAN（ＶＬＡＮとコンピュータの関係を  
///    示すために、新しい、‘attached’の記録をデータベースに追加する）.  
///   5. Commit transaction（トランザクションを確定する）.  
/// <falgorithm>  
public string AttachComputerToVlan(long computerId, int vlanId, boot tagged, bool managed)  
【００６２】
DetachComputerFromVlan  
/// <summary>  
/// Detach a computer from a VLAN（ＶＬＡＮからコンピュータを切り離す）.  
/// </summary>  
/// <param name="vlanId">Vlan identifier to detach from（切り離すＶｌａｎ  
/// 識別子）.</param>  
/// <param name"computerId">Computer identifier to detach from（切り離す  
/// コンピュータ識別子）.</param>  
/// <param name="managed">The target computer is managed（ターゲット・  
/// コンピュータは管理されている）.</param>  
/// <remarks>  
/// Detaching from the default VLAN is not possible.  If the managed flag is   
/// set then the Network Resource Manager requires remote access to the VLAN   
/// tag driver and the virtual VLAN interface will be removed from the   
/// specified computer.  If the remote computer has failed, set the 'managed'  
/// parameter to 'false'（デフォルトＶＬＡＮからの分離は不可能である。  
/// 管理されたフラグが設定されているならば、ネットワーク・リソース・  
/// マネージャはＶＬＡＮタグ・ドライバへの遠隔アクセスを必要とし、仮想の  
/// ＶＬＡＮインターフェースは指定されたコンピュータから削除される。  
/// リモート・コンピュータがfailになると、‘managed’パラメータを‘偽’に  
/// 設定する。）.  
/// </remarks>  
[Web Method(Description="Detach a computer from the specified VLAN.")]  
/// <algorithm>  
/// Prior State（事前の状態）:  
///   The computer to be attached has been registered with the NRM to provide  
///   details  on the wire path between the physical NICs on the computer and  
///   the port on the  switch connected to.  The VLAN identifier has been   
///   successful constructed.  The computer was attached to the VLAN in a   
///   prior method call to AttachComputerToVlan（付加されたコンピュータは、  
///   コンピュータ上の物理的なＮＩＣｓと接続されたスイッチの上のポートの間で  
///   ワイヤ・パスの上の詳細を提供するＮＲＭによって登録されている。ＶＬＡＮ  
///   識別子は、成功裏に構成されている。コンピュータはAttachComputerToVlanへ  
///   の以前のメソッド・コールでＶＬＡＮに付加されている。）.  
///  
/// Description（記述）:  
///   1. Transaction lock database（トランザクションはデータベースをロック  
///    する）.  
///   2. The computerId must exist in the database with topology details  
///     （computerIdはトポロジ詳細を有してデータベースの中に存在しなければ  
///      ならない）.  
///   3. The vlanId must exist in the database in the 'constructed' state  
///     （vlanIdは、‘構成された’状態で、データベースの中に存在しなければ  
///     ならない）.  
///   4. An 'attached' record must exist in the database（‘attached’記録が  
///     データベース中に存在しなければならない）.  
///   5. For each switch in the database, detach the switch port physically   
///   attached to the computer to the VLAN identifier using the type specific  
///   device driver for that switch（データベース中の各スイッチのために、その  
///    スイッチ用タイプ特定デバイス・ドライバを使って、ＶＬＡＮ識別子に物理的  
///    にコンピュータに付加したスイッチ・ポートを切り離す）.  
///   6. Using a remote call, remove the Virtual NIC on the specified   
///   computer for the VLAN identifier provided（リモートのコールを使って、  
///   提供されたＶＬＡＮ識別子に対する指定されたコンピュータ上の仮想ＮＩＣを  
///   削除する）.  
///   7. Remove the 'attached' record from the database to indicate the   
///     computer's relationship with the VLAN no longer exist（ ＶＬＡＮとの  
///     コンピュータの関係がもはや存在していないのを示すために、‘attached’  
///     記録をデータベースから削除する）. 
///   8. Commit transaction（トランザクションを確定する）.  
/// </algorithm>  
public void DetachComputerFromVlan(long computerId, int vlan Id, boot managed)  
【００６３】
AttachComputerToExternal  
/// <summary>  
/// Attach a computer to the external VLAN and update its virtual interface   
/// and  addressing if managed（コンピュータを外部のＶＬＡＮに付加し、それが  
/// 管理されているならば、その仮想インターフェースとアドレス指定をアップデー  
/// トする）.  
/// </summary>  
/// <param name="computerId">Identifier of computer to attach to（付加する  
/// コンピュータの識別子）.</param>  
/// <param name="taggeds'The VLAN is tagged and required the VLAN driver  
/// （そのVLANはタグ付けされ、VLANドライバを必要とする）.</param>  
/// <param name="managed">The target computer is managed（ターゲット・  
/// コンピュータは管理される）.</param>  
/// <returns>  
/// The IP address and subnet mask used to access the computer on the   
///  specified VLAN（ＩＰアドレスとサブ・ネット・マスクは、指定されたＶＬＡＮ  
/// 上のコンピュータへのアクセスに使用される）.  
/// </returns>  
/// <remarks>  
/// If the 'tagged' argument is true then the computer will be attached to  
/// the VLAN specified in tagged mode.  This requires the computer to use  
/// the Virtual VLAN driver to create a virtual interface for that VLAN to   
/// access the network.  A computer can exist in multiple tagged VLAN, but   
/// only a single untagged VLAN.  Not possible to mix tagged and untagged   
/// VLANs（‘タグ付けされた’引数が時真であるならば、そのコンピュータはタグ  
/// 付けされたモードで指定されたＶＬＡＮに付加されることになる。このことは、  
/// そのコンピュータが、そのＶＬＡＮがネットワークにアクセスするための仮想  
/// インターフェースを作成するために、仮想のＶＬＡＮドライバを使うことを必要  
/// とする。  
/// コンピュータは、複数のタグを付けられたＶＬＡＮにおいて存在することが  
/// でき、１つのタグ付けされないＶＬＡＮに存在することができる。タグ付け  
/// されたＶＬＡＮｓと、タグ付けされないＶＬＡＮｓを混在させることは  
/// 不可能である。）.  
///  
/// A "managed" computer is a computer that contains the VLAN tag driver and   
/// the  network resource manager has permission to update the computer's   
/// virtual  interface and IP addressing setting. If unmanaged, the computer  
/// is moved to the specified VLAN and is not accessed. If 'managed' is true  
/// then the 'tagged' argument  must be true. If 'managed' is false and   
/// 'tagged' is true, the caller is responsible for creating a virtual   
/// interface on the computer（「managed」コンピュータは、ＶＬＡＮタグ・  
/// ドライバを含んでいるコンピュータであり、ネットワーク・リソース・  
/// マネージャは、コンピュータの仮想インターフェースとＩＰアドレス指定  
/// セッティングをアップデートするアクセス権を持っている。管理されていない  
/// ならば、コンピュータは指定されたＶＬＡＮに移動されて、アクセスされない。  
/// ‘managed’が真であるならば、‘tagged’引数は真であることになる。  
/// ‘managed’が偽で、‘tagged’が真であるならば、呼びだし側は、  
/// コンピュータ上に仮想インターフェースを作成することに責任がある。）.  
/// </remarks>  
[WebMethod(Description="Attach a computer to the external VLAN（コンピュータを外部ＶＬＡＮに取り付ける）.")] public string AttachComputerToExternal(long computerId, boot tagged, boot managed)  
【００６４】
DetachComputerFromExternal  
/// <summary>  
/// Detach a computer from the external VLAN（外部のＶＬＡＮからコンピュータ  
/// を切り離す）.  
/// </summary>  
/// <param name="computerId">Computer identifier to detach from（切り離す  
/// コンピュータ識別子）.</param>  
/// <param name="managed">The target computer is managed（ターゲット・  
/// コンピュータは管理されている）.</param>  
/// <remarks>  
/// If the managed flag is set then the Network Resource Manager requires  
///  remote access to the VLAN tag driver and the virtual VLAN interface will  
/// be removed from the specified computer. If the remote computer has   
/// failed, set the 'managed' parameterto 'false'（管理されたフラグが設定され  
/// ているならば、ネットワーク・リソース・マネージャはＶＬＡＮタグ・ドライバ  
/// への遠隔アクセスを必要とし、その仮想のＶＬＡＮインターフェースは指定され  
/// たコンピュータから削除されることになる。そのリモート・コンピュータがfail  
/// になったら、‘managed’パラメータを‘偽’に設定する。）.</remarks>  
[WebMethod(Description="Detach a computer from the external VLAN（外部のＶＬＡＮからコンピュータを切り離す）.")]  
public void DetachComputerFromExternal(long computerId, boot managed)  
【００６５】
ReleaseVlan  
/// <summary>  
/// Releases a previously allocated/constructed. If constructed, the VLAN   
/// resourceis deleted from the network fabric（以前に割り当てられた/構成され  
/// たものをリリースする。構成されているならば、ＶＬＡＮリソースは  
/// ネットワーク構成から削除される。）.  
/// </summary>  
/// <param name="vlanId">Identifier of the VLAN to release（リリースする  
/// ＶＬＡＮの識別子）.</param>  
/// <remarks>  
/// The VLAN must have been successfully created via the 'AllocateVlan'   
/// method（ＶＬＡＮは‘AllocateVlan’メソッドで成功裏に作成されていなければ  
/// ならない）.</remarks>  
/// <devdoc>  
[WebMethod(Description="Release a previously allocated/constructed VLAN（以前に割り当てた／構成されたＶＬＡＮをリリースする）.")]  
/// <algorithm>  
/// Prior State（事前の状態）:  
///   The VLAN identifier has been successful constructed. No computer   
///   attachedrecords reference this VLAN identifier（ＶＬＡＮ識別子は、成功  
///   裏に構成されている。どのコンピュータの付加記録もこのＶＬＡＮ識別子を  
///   参照しない。）.  
///  
/// Description（記述）:  
///   1. Transaction lock database（トランザクションはデータベースを  
///     ロックする）.  
///   2. The vlanId must exist in the database in the 'constructed' state  
///     （vlanIdは、‘constructed’状態で、データベース中に存在しなければ  
///      ならない）.  
///   3. For each switch in the database, delete the VLAN identifier using   
///     the type  specific device driver for that switch（データベース中の  
///     各スイッチに対して、そのスイッチ用のタイプ特定デバイス・ドライバを  
///     使って、ＶＬＡＮ識別子を削除する）.  
///   4. Remove the VLAN record from the database to indicate the VLAN   
///     identifier is no longer allocated（ＶＬＡＮ識別子がもはや割り当てられ  
///     ないことを示すために、ＶＬＡＮ記録をデータベースから削除する）.  
///   5. Commit transaction（トランザクションを確定する）.  
/// </algorithm>  
public void ReleaseVlan(int vlanId)  
【００６６】
ReleaseComputerToDiscovery  
/// <summary>  
/// Releases all heId network resources of a computer and returns the computer  
/// back to the 'Discovery' VLAN. The IP address of the computer is returned  
/// （コンピュータのすべての保持しているネットワーク・リソースをリリースし、  
/// コンピュータを‘discocery’ＶＬＡＮに返す。コンピュータのＩＰアドレスは  
/// 返される。）.</summary>  
/// <param name="computerId">Identifier of the computer in the HRM to release  
/// （リリースするＨＲＭにおけるコンピュータの識別子）.</param>  
/// <param name="managed">The target computer is managed（ターゲット・  
/// コンピュータは管理されている）.</param>  
/// <returns>IP address of the computer within the Discovery VLAN  
/// （‘Discocery’ＶＬＡＮ中のコンピュータのＩＰアドレス）.</returns>  
/// <remarks>  
/// If the computer had at least one VLAN created it will return a static IP   
/// addressset by the Network Resource Manager, else it will return the   
/// original IP provided by the Hardwarre Resoruce Manager（コンピュータが  
/// 作成された少なくとも１つのＶＬＡＮを持っていたならば、それはネットワーク  
/// ・ソース・マネージャによってセットされた静的ＩＰアドレスを返し、  
/// そうでなければ、それはHardwarre Resoruceマネージャによって提供された  
/// オリジナルのＩＰを返すことになる）.</remarks>  
/// <devdoc>  
///  This code was written to support the PcFactory requirement to return   
/// a computer back to the Discovery VLAN to permit it to remotely re boot  
/// the computer to force a PXE boot sequence（このコードは、コンピュータを  
/// 遠隔にリブートすることをコンピュータに許し、ＰＸＥブート・シーケンスを  
/// 強制するDiscocery ＶＬＡＮにコンピュータを返すというPcFactory必要条件を  
/// サポートするために書き込まれる）.</devdoc>  
[WebMethod(Description="Release computer to the discovery network（discoceryネットワークへのコンピュータのリリース）.")]  
public string ReleaseComputerToDiscovery(long computerId, boot managed)  
【００６７】
ReleaseResourcesByOwner  
/// <summary>  
/// Releases all network resources that are associated with a specific owner  
/// （特定のオーナに関連づけられるすべてのネットワーク・リソースをリリース  
/// する）.  
/// </summary>  
/// <param name="ownerId">The object representing the owner of the resources  
/// （リソースのオーナを表しているオブジェクト）.</param>  
/// <devdoc>  
[WebMethod(Description="Release all resources heId by a specific owner.（特定のオーナによって保持されているすべてのリソースをリリースする）")]  
public void ReleaseResourcesByOwner(long ownerId)  
【００６８】
ReleaseResourcesByComputer  
/// <summary>  
/// Releases all network resources that are associated with a specific   
/// computer（コンピュータと関連づけられるすべてのネットワーク・リソースを  
///  リリースする）.  
/// </summary>  
/// <param name- computend">The identifier representing the computer  
/// （コンピューを表している識別子）.</param>  
/// <param name- managed">The target computer is managed（ターゲット・  
/// コンピュータは管理されている）.</param>  
/// <remarks>  
/// Releases all attached VLANs to this computer. Typically used by clean up   
/// logic remove a computer from the network. If the managed flag is set then  
///  the Network Resource Manager requires remote access to the VLAN tag   
///  driver and any created virtual VLAN interface will be removed from the   
/// specified  computer. If the remote computer has failed, set the 'managed'  
///   parameter to'false'（このコンピュータに付加されている全てのVLANsを  
/// リリースする。一般に、クリーンアップ・ロジックを使用して、コンピュータを  
/// ネットワークから削除する。管理されたフラグが設定されているならば、  
/// ネットワーク・リソース・マネージャはＶＬＡＮタグ・ドライバに遠隔アクセス  
/// を必要とし、全ての作成された仮想のＶＬＡＮインターフェースは指定された  
/// コンピュータから削除される。リモート・コンピュータがfailになると、  
/// ‘managed’パラメータを‘偽’に設定する。）.  
/// </remarks>  
[WebMethod(Description="Release all resources heId by a specific owner（特定のオーナによって保持されたすべてのリソースをリリースする）.")] public void ReleaseResourcesByComputer(long computerId, boot managed   
【００６９】
QueryConfiguration  
/// <summary>  
/// Returns information on the Network Resource Manager's configuration   
/// settings（ネットワーク・リソース・マネージャのコンフィギュレーション・  
/// セッティングについてのリターン情報）.  
/// </summary>  
/// <returns>NrmConfiguration value.</returns>  
[WebMethod(Description="Query configuration settings.")]  
public NrmConfiguration QueryConfiguration()  
【００７０】
QueryComputer  
/// <summary>  
/// Returns information of a specific registered network computer（特定の登録  
/// されたネットワーク・コンピュータのリターン情報）.  
/// </summary>  
/// <returns>NrmComputer value.</returns>  
[WebMethod(Description="Query a registered network computer（登録されたネットワーク・コンピュータをクエリする）.")] public NrmComputer QueryComputer(long computerId)  
【００７１】
QueryComputerlpAddress  
/// <summary>  
/// Query the IP address of a computer on a specific VLAN（特定のＶＬＡＮ上の  
/// コンピュータのＩＰアドレスをクエリする）.  
/// </summary>  
/// <param name="computerId">Identifier of computer to query（クエリする  
/// コンピュータの識別子）.</param>  
/// <param name="vlanId">VLAN identifier to query IP address of（それの  
/// ＩＰアドレスをクエリするＶＬＡＮ識別子）.</param>  
/// <returns>  
/// The IP address to access the computer on the specified VLAN（指定された  
/// ＶＬＡＮ上のコンピュータにアクセスするためのＩＰアドレス）.  
/// </returns>  
/// <remarks>  
/// For each VLAN a computer is attached to it will have a fixed (static)   
/// IP address that is used to access the computer remotely over the specific  
/// VLAN（各ＶＬＡＮに対して、それに付加された各コンピュータは、特定の  
/// ＶＬＡＮを介して遠隔にコンピュータにアクセスするために使われる固定された
/// （静的）ＩＰアドレスを持つことになる）.  
/// </remarks>  
[WebMethod(Description="Query the IP address of a computer on a specific VLAN（特定のＶＬＡＮ上のコンピュータのＩＰアドレスをクエリする）.")] public string QueryComputerlpAddress(long computerid, int vlanId)  
【００７２】
QueryComputers  
/// <summary>  
/// Returns all registered network computers within the Network Resource   
/// Manager's database（ネットワーク・リソース・マネージャのデータベース内に  
/// 登録された全てのネットワーク・コンピュータを返す）.  
/// </summary>  
/// <returns>An array of NrmComputer values.</returns>  
[WebMethod(Description="Query all registered network computers（すべて登録されたネットワーク・コンピュータにクエリする）.")]  
public NrmComputer □ QueryComputers()  
【００７３】
QueryDevice  
/// <summary>  
/// Returns information of a specific registered network device（特定の  
/// 登録されたデバイスの情報を返す）.  
/// </summary>  
/// <returns>NrmDevice value.</returns>  
[WebMethod(Description="Query a registered network device（登録されたネットワークをクエリする）.")]  
public NrmDevice QueryDevice(long deviceId)  
【００７４】
QueryDevices  
/// <summary>  
/// Returns all registered network devices within the Network Resource   
/// Manager'sdatabase（すべてネットワーク・リソース・マネージャのデータベース  
/// 中の全ての登録されたネットワーク・デバイスを返す）.  
/// </summary>   
/// <returns>An array of NrmDevice values.</returns>  
/// <remarks>Typical use is for diagnostics and/or administrator tools  
/// （典型的な使用は、ダイアグノスティックス、および／またはマネージャ・  
/// ツール向けである）.</remarks>  
[WebMethod(Description="Query all registered network devices（すべての登録されたネットワーク・デバイスをクエリする）.")]  
public NrmDevice □ QueryDevices()  
【００７５】
QueryExternalVlanId   
/// <summary>  
/// Retrieves the VLAN identifier of the external VLAN（外部ＶＬＡＮの  
/// ＶＬＡＮ識別子を取り出す）.  
/// </summary>  
/// <returns>Identifier of the external VLAN（外部ＶＬＡＮの識別子）.</returns>  
[WebMethod(Description"Query the VLAN identifier of the external VLAN（外部ＶＬＡＮのＶＬＡＮ識別子にクエリする）.")]  
public int QueryExternalVlanId()  
【００７６】
QueryVlans  
/// <summary>  
/// Retrieves the status of all allocated VLANs（すべての割り当てられた  
/// ＶＬＡＮｓのステータスを取り出す）.  
/// </summary>  
/// <returns>A dataset of NetworkVlan rows（NetworkVlanのrowのdataset）.  
/// </returns>  
/// <remarks>Typical use is for diagnostics and/or administrator tools  
/// （典型的な使用は、ダイアグノスティックス、および／またはマネージャ  
/// ・ツール向けである）.</remarks>  
[WebMethod(Description="Query the resource handle of an allocated VLAN（割り当てられたＶＬＡＮのリソース・ハンドルにクエリする）.")]  
public DataSet QueryVlans()  
【００７７】
UpdateComputerToStatic  
/// <summary>  
/// Update the VLAN-0 virtual interface from its default DHCP state to using   
/// a status IP address. This command is very specific to the sequence of   
/// configuring the networking of a newly imaged "managed" computer running   
/// the Virtual VLAN/MUX driver（ＶＬＡＮ−Ｏ仮想インターフェースを、  
/// そのデフォルトＤＨＣＰ状態から、ステータスＩＰアドレスを使うように  
/// アップデートする。このコマンドは、仮想のＶＬＡＮ／ＭＵＸドライバを実行し  
/// ている新しくイメージされた、「managed」コンピュータのネットワーキングを  
/// 設定するシーケンスに非常に特有である）.</summary>  
/// <param name="computerId">Identifier of computer to update  
///  （アップデートするコンピュータの識別子）.</param>  
/// <remarks>  
/// To support the PXE/ADS imaging environment, new computer nodes PXE boot  
/// and are imaged on an untagged VLAN using DHCP to obtain their IP address.  
///  To provide the NRM with a method to access the computer node at a later  
///   time(after removing all VLANs), the DHCP address is updated with a  
///  staticIP address on a non-conflicting address range（ＰＸＥ／ＡＤＳ  
/// イメージング環境をサポートするために、新しいコンピュータ・ノードはＰＸＥ  
/// ブートされ、それらのＩＰアドレスを得るためにＤＨＣＰを使って、タグ付け  
/// されなかったＶＬＡＮ上でイメージ化される。その後（すべてのＶＬＡＮｓを  
/// 削除した後）に、コンピュータ・ノードにアクセスする方法をＮＲＭに提供する  
/// ために、そのＤＨＣＰアドレスは矛盾していないアドレス範囲上の静的なＩＰ  
/// アドレスを使用してアップデートされる。）.  
///  
/// The VLAN number used to generate the IP address is the "Static" VLAN and   
/// defined in the global network configuration entry in the database. Due to  
/// the "Static" VLAN spanning multiple address ranges, a smaller subnet mask  
/// is used and is also defined in the global network configuration entry in   
/// the database（ＩＰアドレスを生成するために使われたＶＬＡＮ番号は、  
/// 「Static」ＶＬＡＮであり、データベース中のグローバルなネットワーク構成  
/// エントリで定義される。複数のアドレス範囲に及ぶ「Static」ＶＬＡＮに起因  
/// して、より小さいサブ・ネット・マスクが、データベース中のグローバルな  
/// ネットワーク構成エントリで、使用され、また定義される。）.  
///  
/// This call can not use the DHCP address to access the computer and a   
/// previous created Virtual NIC interface must be used for access  
/// （このコールは、コンピュータにアクセスするためにＤＨＣＰアドレスを使う  
/// ことができず、前に作成された仮想のＮＩＣインターフェースがアクセスの  
/// ために使われなければならない）.  
/// </remarks>  
[WebMethod(Description="Update computer from DHCP to static IP on VLAN-Q（ＤＨＣＰからＶＬＡＮ−０上の静的なＩＰにコンピュータをアップグレードする）.")]  
public void UpdateComputerToStatic(long computerId)  
【００７８】
Status  
/// <summary>  
/// Used by external services to obtain the current status of this web   
/// service（このウェブ・サービスのカレント・ステータスを得るために外部の  
/// サービスによって使われる）.  
/// </summary>  
/// <returns>O for normal, １ if not registered（通常は０、登録されていない  
/// 場合１）.</returns>  
/// <remarks>  
/// Used by the monitor service to check for availability（可用性をチェック  
/// するためにモニタ・サービスによって使用される）.  
/// </remarks>  
[WebMethod(Description="Current status of this web service（このウェブ・サービスのカレント・ステータス）.")]  
public int Status() 
【００７９】
結論
以上、本発明を構造上の特徴および／または方法論的な動作に特有な言語で説明したが、添付の特許請求の範囲で定義される本発明は、説明したこうした特有の特徴にも動作にも必ずしも限定されないことを理解されたい。そうではなく、こうした特有の特徴および動作は、特許請求の範囲に記載されている本発明を実装する例示的な形体として開示するものである。さらに、こうした特許請求の範囲は可能な範囲および対象の例示に過ぎず、本明細書で説明した特徴の多くの組合せおよび下位組合せが、特許請求の範囲の対象となるものと期待される。
【符号の説明】
【００８０】
１００  インターネット・データ・センタ（ＩＤＣ）
１０２  サーバ・コンピュータ
１０４  追加コンピュータのプール
２００  分散コンピューティング・システム
２０２  サーバ
２０４  ネットワーク・スイッチ（スイッチを含むネットワーク）
２０６  負荷平衡化コンピュータ
２０８  ファイアウォール・コンピュータ
２１０  仮想ネットワーク・トポロジ生成サーバ
２１２  リソース・マネージャ
３００  プラットフォーム・アーキテクチャ
３０２  基底層（物理コンピューティング・リソース層）
３０４  自動展開サービス層
３０６  ネットワーク管理層
３０８  物理リソース管理層、物理管理層
３１０  論理リソース管理層
３１２  サービス定義モデルおよびランタイム
３１４  構成要素層
３１６  動作論理層
４００  物理ネットワーク・トポロジ
４０２（１）  サーバ、ウェブ・サーバ
４０２（２）  サーバ、データベース・サーバ
４０２（３）  サーバ、ウェブ・サーバ
４０２（４）  サーバ、ファイアウォール、ファイアウォール・サーバ
４０２（５）  サーバ、ウェブ・サーバ
４０４  ネットワーク・スイッチ
５００  仮想ネットワーク・トポロジ
５０２  ウェブＶＬＡＮ
５０４  データベース（ＤＢ）ＶＬＡＮ
５０６  ＤＭＺWeb
５０８  ＤＭＺDB
６０２  ＶＬＡＮドライバ
６０４  ネットワーク・インターフェース（ＮＩＣ）ドライバ
６０６  ＩＰドライバ
６０８  ＶＮＩＣ  ＶＬＡＮWEB
６１０  ＶＮＩＣ  ＶＬＡＮDB
【図１】
2011217405.tif 000003
【図２】
2011217405.tif 000004
【図３】
2011217405.tif 000005
【図４】
2011217405.tif 000006
【図５】
2011217405.tif 000007
【図６】
2011217405.tif 000008
【図７】
2011217405.tif 000009