(57)【特許請求の範囲】
【請求項１】
メッセージを、ルーティングしディスパッチするメッセージディスパッチャであって、前記メッセージ内容の任意の部分は、文字列と、対応する物理アドレスとが記載されているテーブル中に記載されており、前記メッセージの受信者の物理アドレスを、前記テーブル上の、前記メッセージ内容の任意の部分の文字列に対応する物理アドレスに変更することによりルーティングを行うメッセージディスパッチャと、
アプリケーションプログラムが前記メッセージディスパッチャと通信して前記メッセージ内容の前記任意の部分を定義するインタフェース
とを備え、前記文字列は仮想ネットワークのノードであり、前記仮想ネットワークは、前記仮想ネットワーク中の１つのノードが故障したおよび復旧したときに再編成されるネットワークであり、前記メッセージディスパッチャが、第１ネットワークメッセージの第１属性に基づいて前記第１ネットワークメッセージをルーティングし、前記第１属性とは異なる第２ネットワークメッセージの第２属性に基づいて前記第２ネットワークメッセージをルーティングすることを特徴とする装置。
【請求項２】
前記メッセージディスパッチャが、トランスポートに依存しないメッセージディスパッチャを備え、前記メッセージディスパッチャがトランスポートに依存しないプロトコルを使用して通信することを特徴とする請求項１に記載の装置。
【請求項３】
前記メッセージディスパッチャが、第１の送信者から受信者に宛てた第１ネットワークメッセージを第１サーバにルーティングし、
前記メッセージディスパッチャが、第２の送信者から前記受信者に宛てた第２ネットワークメッセージを第２サーバにルーティングすることを特徴とする請求項１に記載の装置。
【請求項４】
前記メッセージディスパッチャが、トランスポート層プロトコルより上の仮想ネットワークプロトコルを使用してメッセージをルーティングすることを特徴とする請求項１に記載の装置。
【請求項５】
前記トランスポート層プロトコルと前記仮想ネットワークプロトコルの間でメッセージを変換するトランスポートアダプタをさらに備えたことを特徴とする請求項１に記載の装置。
【請求項６】
前記メッセージ内容の前記任意の部分が、アプリケーションレベルヘッダを含むことを特徴とする請求項１に記載の装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は一般に、コンピュータネットワークに関する。より詳細には本発明は、メッセージ内容に基づいて適合的にメッセージをルーティングする仮想ネットワークに関する。
【０００２】
【従来の技術】
本出願は、2001年10月16日出願の米国仮出願第60/329796号および2001年10月19日出願の米国仮出願第60/346370号に関し、それらからの優先権を請求し、そのそれぞれを参照により本明細書に組み込む。
【０００３】
コンピュータアーキテクチャ内には、1および0の物理表現から高レベルアプリケーションプログラムまで様々なレベルの抽象化がある。コンピュータが最初に開発されたとき、それらの動作を制御するために、マシン言語と一般に呼ばれる低レベルプログラミング言語が一般的に使用された。しかし、異なるマシン言語を有する2つの異なるコンピュータプラットフォームのために同じプログラムを作成するには、プログラマは、プログラムを2度、それぞれのプラットフォームのマシン言語で1度ずつ書かなければならなかった。
【０００４】
コンピュータプログラマは、C、Pascalなどの高レベルプログラミング言語を作成し、次いでそのプログラムが使用されるそれぞれのプラットフォーム用のコンパイラを提供することによって、マシン言語を抽象化できることがわかった。プログラムがこれらの高レベルプログラミング言語の1つで書かれたとき、そのプログラムは、それぞれのマシン用にソースプログラムを再作成することなく、それぞれの特定マシン上で実行するようにコンパイルすることができた。この点での抽象化が継続し、より最近の仮想マシンの開発をもたらした。
【０００５】
仮想マシンの概念は、コンピュータ科学の技術分野でよく知られている。仮想マシンは、特定のコンピュータハードウェアアーキテクチャの具体的詳細に縛られない中間表現である。通常、仮想マシンは、その仮想マシンを実施するために使用されるハードウェアとは無関係に、同一であり続ける特定のセマンティックス(semantics)を保証する。したがってそのようなマシンのために書かれたプログラムは、修正することなく異なるハードウェアシステム上で実行することができる。したがって仮想マシンの一利点は、その動作セマンティックスが、どの1つのコンピュータプログラムの起源または動作要件とも無関係に、1つのコンピュータから次のコンピュータに一定であり続けることである。
【０００６】
コンピュータネットワークは、ネットワークが構築される基礎になる物理ハードウェアおよびネットワークプロトコルに依存する。これらのプロトコルは、そのプロトコルか実施される基礎になるネットワークアーキテクチャに依存する。結果として、ネットワークアプリケーションは、それらが使用されるそれぞれのネットワークのために再作成しなければならない。さらに、2つのマシンがネットワークを介して通信するためには、それぞれのマシンが、その特定ネットワークを介してどのように通信するかを理解しなければならない、すなわちそれぞれのマシンは、通信するための適切なネットワークドライバを有しなければならない。
【０００７】
コンピュータネットワーク内に実施された1つのレベルの抽象化は、OSIの7層ネットワークモデルに従って実施された、TCP/IPプロトコルスタック(protocol stack)の使用である。TCP/IPは、ネットワークプロトコルのいくつかの概念を抽象化し、TCP/IPプロトコルをそれぞれ理解する2つのマシンが互いに効果的に通信することを可能にする。しかし、TCP/IPを使用しても、それぞれのマシンは、ネットワークルーティングおよびトポロジ(topology)、バインディング(binding)、ならびにDNS解決をあるレベルで理解できなければならない。すなわち、OSIモデルは、マシン間の物理ワイヤを仮想化するだけで、マシンが通信するネットワークは仮想化しないので、ネットワーク上のそれぞれのコンピュータは、そのネットワークを介して効果的に通信するためにインストールされたネットワークサポートユーティリティを依然として相当有しなければならない。
【０００８】
例えば、TCP/IPは、ポートおよびIPアドレスの概念を理解するアプリケーションを必要とする。ポートおよびIPアドレスは、DNS名解決、ネットワークトポロジ、トランスポート(transport)帯域幅、および両端間のルーティングを理解するアプリケーションを必要とする。したがって、順序付けられたバイトシーケンスを信頼可能な方法で交換するためのモデルを単純化しながら、アプリケーションは依然として、多数のネットワークレベルの概念および詳細を直接取り扱わなければならない。OSIモデルは、ネットワークアプリケーションが必要とするネーミング、ルーティング、およびサービス品質などの高レベルの構造を扱わない。
【０００９】
【発明が解決しようとする課題】
従来型ネットワークの他の欠点は、メッセージエラーまたはネットワーク故障の後に、適合し復旧できないことである。現在のネットワークは、マシンが追加、移動、または削除されるときに、自動的に容易に適合できない。すなわち、ユーザは通常、ルーティングテーブルを編集して、ネットワークにその変更を知らせなければならない。
【００１０】
さらに、ネットワーク故障は、同じ機能を実行する冗長マシンを保守すること以外によっては、容易に修理されない。すなわち、第1マシンが故障すれば、第2(バックアップ)マシンが第1マシンの機能を引き継ぐ。しかし、第2マシンがその後故障し、同じ機能を実行する第3マシンがない場合、結果としてネットワークは損害を受けるであろう。知られているネットワークは自己治癒的ではない。したがって、これらの問題を克服する高度なネットワークが必要である。
【００１１】
従来型ネットワークの他の欠点は、それらのネットワークが、メッセージ内容に基づいてネットワークメッセージを動的にルーティングできないことである。Cisco Systems, Inc.による知られているルータは、事前定義された基準に基づいてメッセージをルーティングすることができるが、メッセージ内容に基づいて、ユーザ拡張可能ルーティング動作をサポートするように動的にプログラム可能ではない。アプリケーションが伝統的ルーティングおよびQoS要件に加えてメッセージの変換および処理を制御することができるシステムにとって、この機能がないことは、それらのルータを不適切にする。
【００１２】
上記に識別された問題のいくつかまたはすべてを解決する方法およびシステムを提供すれば、当技術分野の進歩であろう。
【００１３】
【課題を解決するための手段】
本発明の諸態様は、ネットワークを仮想化して、プラットフォームに依存しないネットワークコンピュータアプリケーションをプログラマが書くことを可能にするために使用することができる。仮想ネットワークは、ネットワークサービスを提供するアプリケーションと、そのコードを実行する、基礎になるシステムネットワークの間、例えばOSIネットワークモデル内の層6と7の間に、(ソフトウェアまたはハードウェアの)抽象化層を追加することによって作成することができる。同期化、イベンティング(eventing)、メッセージング、ネーミング、グループ、アドレシング、およびルーティングコンポーネントを含む1つまたは複数の仮想化コンポーネントを挿入することができる。
【００１４】
ネットワーキングシステムを抽象化することによって、ネットワークは、その上に構築されたアプリケーションおよびサービスに固有のサービスをより効率的にかつ安全に提供することができる。例えば、信頼性、安全性、プラットフォーム非依存性、スケールアウト(scale-out)、エッジネットワーキング(edge networking)、および位置非依存性などのサービスを容易に提供することができる。同様に、システムが、物理的トポロジ変更に適合し故障から自動的に「治癒」することができる。仮想ネットワークは、ネットワークの物理的トポロジ上にコードをマッピングしそのマッピングを透過的に適合させることを担当する。さらに、開発者はそれらのサービスの分離から利益を得ることができる。
【００１５】
仮想ネットワークと仮想マシンを組み合わせることによって、アプリケーションを1度書きどのマシン上でも実行できる、分散された区分可能な仮想ネットワークを作成することができる。すなわち、仮想ネットワーク内、かつ仮想マシンを稼動するコンピュータ上で使用するために書かれたネットワークアプリケーションは、同じ仮想マシンを動作させ仮想ネットワークに接続されるどのマシン上でも実行できるので、再作成する必要がない。
【００１６】
仮想ネットワークは適応再構成機能もまた提供する。マシンAがネットワークを介してマシンBにメッセージを送り、BがマシンAに回答することを考える。しかし、マシンAがマシンBに第2メッセージを送ることができる前に、マシンBが(例えば他のIPアドレスに)移動する。一実施形態によれば、仮想ネットワークは、自分自身を解決し変更された位置に適合することができるので、その結果そのメッセージは依然Bの新しい位置に届けられる。アドレス変更は透過的に行われるので、そのネットワーク上で稼動するアプリケーションは、Bの位置の変更が行われたことを知らない(または知る必要がない)。抽象化がマシンレベルからネットワークレベルに移動されるので、それぞれのマシンを移動することができる位置のセットに制限がかけられることはない。デバイスが移動された後に、そのデバイスが、新しい位置にある自分自身をネットワークに対して識別すると、仮想ネットワークは、そのマシンに対するルーティングが中断されることなく動作継続できるように自分自身を更新することができる。この能力は、単一管理ドメイン内で現在可能であることを複数管理ドメインに拡張し、位置移動性が組織を越えて拡張できるようにする。
【００１７】
本発明の第1実施形態は、メッセージをルーティングしディスパッチするメッセージディスパッチャを含む装置を提供する。それぞれのメッセージは、メッセージ内容の任意の部分に基づいてルーティングされる。ネットワークアプリケーションプログラムがメッセージディスパッチャと通信して、メッセージがルーティングされるメッセージ内容の任意の部分を定義するインタフェースもまたある。
【００１８】
本発明の他の実施形態では、メッセージディスパッチャモジュール、メッセージディスパッチャをトランスポートプロトコルにインタフェースするためのトランスポートアダプタ、アプリケーションプログラムがメッセージディスパッチャと通信するインタフェース、第1ネットワークメッセージの第1属性に基づいて前記第1ネットワークメッセージをルーティングし、第2ネットワークメッセージの、第1属性とは異なる第2属性に基づいて第2ネットワークメッセージをルーティングすることをメッセージディスパッチャに命令する格納されたルール、を含むデータ処理装置がある。第1および第2属性は、それぞれのネットワークメッセージ内に含まれる1組のヘッダおよびデータから選択される。
【００１９】
他の実施形態は、ネットワークメッセージをルーティングする方法を提供する。メッセージディスパッチャは、第1ネットワークメッセージを第1ネットワークメッセージの第1属性に基づいてルーティングする。メッセージディスパッチャは、第2ネットワークメッセージを、第2ネットワークメッセージの、第1属性とは異なる第2属性に基づいてルーティングする。第1および第2属性は、それぞれのネットワークメッセージの1組のヘッダおよびデータから選択されたどのフィールドでもよい。
【００２０】
他の実施形態では、ルータによって実行されると1組のステップを実行するコンピュータ実行可能命令を格納するネットワークルータがある。ネットワークルータは、ネットワークアプリケーションから受け取ったルーティング情報を格納する。ルーティング情報は、メッセージフィールド、フィールド条件、およびメッセージ命令を含む。ネットワークルータは、ネットワークメッセージと格納されたルーティング情報を比較することによってネットワークメッセージを受け取り処理する。受け取ったメッセージのメッセージフィールドがフィールド条件を満たしたとき、ネットワークルータはメッセージ命令を実行する。
【００２１】
本発明の他の実施形態は、仮想コンピュータネットワークを提供する。コンピュータネットワークは、トランスポート層プロトコルとネットワークプロトコルの間でメッセージを変換する少なくとも1つのトランスポートアダプタ、メッセージ内容の任意の部分に基づいてメッセージをルーティングしディスパッチするメッセージディスパッチャ、でそれぞれ構成される複数のコンピュータを含む。それぞれのコンピュータ内のメッセージディスパッチャは、仮想ネットワークプロトコルのメッセージを、トランスポートアダプタを使用しトランスポート層プロトコルを介してルーティングする。
【００２２】
本発明の他の実施形態では、OSIプロトコルスタックの層6と7の間に挿入された少なくとも1つの仮想化コンポーネントを含む仮想ネットワークがある。
【００２３】
【発明の実施の形態】
仮想ネットワーク内のメッセージ解決は、仮想ネットワークディスパッチャ(VND)と呼ぶユニバーサルイネーブリングコンポーネント(universal enabling component)と組み合わせて仮想位置を使用することにより達成することができ、そのコンポーネントは、仮想ネットワーク内に加わる全てのリソース内に含まれる。リソースは、任意のメッセージ端点として定義することができる。図1を参照すると、仮想ネットワーク113上の全てのデバイス101-102には、(IPアドレス、MACアドレス、URL、その他の位置識別子など)その実際のアドレスをマッピングすることができる仮想アドレスが与えられる。VND103は、ルータがインストールされたデバイスとは無関係に、ハードウェアまたはソフトウェアのいずれかを使用して同じ方法でメッセージに応答するそれぞれのデバイス内に統合されたルータモジュールを含むことができる。すなわちルータモジュールは、デバイスに依存しない。VND103は、以下にさらに述べるメッセージハンドラ109を含む。
【００２４】
メッセージハンドラ109は、マシンからマシンに異なるか、またはマシン全体で一貫してよい。それぞれのメッセージハンドラは、具体的なタイプのマシンのために明示的に構成するか、あるいは任意の与えられたマシン上で具体的に動作するかまたは動作しないように構成することができる。いくつかのメッセージハンドラ、例えばメッセージヘッダハンドラ、暗号化ハンドラ、を広く配備する一方、他のメッセージハンドラを単一マシン上にのみ配備することができる。
【００２５】
それぞれのVNDは、ルーティングおよびディスパッチング機能を実行することを担当する。ルーティングは、メッセージが意図されたデバイスにそれらのメッセージを転送する処理である。ディスパッチングは、メッセージを受け取るときに、そのメッセージを受け取ったことに応答して、適切なハンドラ(例えば、ソフトウェアモジュール、機能、アプリケーションプログラム、ルーチンなど)または他の実行可能ソフトウェアを実行する処理である。VNDが実行するハンドラは、そのVNDがメッセージをどのように処理しルーティングすべきかを判断するルーティングハンドラでよく、またはハンドラは、デバイス上で実行されるアプリケーションプログラムにメッセージを送ってよい。
【００２６】
一実施形態においてVNDは、それぞれの特定のアプリケーションが使用するオペレーティングシステム、オブジェクトモデル、または言語とは無関係に、分散され非集中化されたアプリケーションが情報を交換することを可能にするオープンで拡張可能なメッセージングプロトコルでXMLベースのメッセージをルーティングしディスパッチすることができる。仮想ネットワークによって使用されるトランスポートをサポートするどんなプロトコルでも使用することができる。VNDは、ネットワークトランスポートプロトコル107、例えばTCP、IP、UDP、HTTP、SMTP、SOAP-RPなどとともに使用することができる。任意のトランスポートプロトコルを介して一位置でメッセージが受け取られるとき、メッセージ内容がトランスポートアダプタ105によって抽出されVND103に入力される。それぞれのトランスポートアダプタは、事前定義されたトランスポートプロトコルに従ってフォーマットされたメッセージを入力として受け取り、仮想ネットワークプロトコルに従うためにそのメッセージヘッダを変換する(または取り除く)。図1に示すように、それぞれのVND103は、複数のトランスポートプロトコルT1-Tnと共に使用するために複数のトランスポートアダプタTA1-TAnに接続することができる。これは、仮想ネットワークを単一トランスポートプロトコルに縛ることなく複数のトランスポートを越えてそれぞれのVNDを使用することを可能にする。
【００２７】
複数のトランスポートプロトコルおよびプロトコルアダプタを使用することによって、それぞれのデバイス上にVND103を置くことは、任意のアプリケーションプログラムが仮想ネットワークプロトコルを使用することによってトランスポート層プロトコルとは独立に他のアプリケーションプログラムと透過的に通信することができるプラットフォームを提供する。当技術分野では、複数のプロトコルを介して通信するように構成された具体的アプリケーションプログラムが知られている。しかし、そうするそれぞれのアプリケーションプログラムは、具体的に構成されなければならない。本明細書に述べる仮想ネットワークを使用して、どのような特別な構成もなしで、複数のプロトコルを介して通信がトランスポートされていることを気付くことさえなく、複数のプロトコルを介してアプリケーションが通信することができる。それぞれのメッセージを送るそれぞれの具体的デバイス内のVND103は、メッセージを送るプロトコルに関する決定を行う。それぞれのメッセージに対して、VNDは、1つまたは複数の事前定義されたプロトコルポリシに基づいてどのプロトコルを使用するかを判断することができる。あるいは、使用されるプロトコルは、アプリケーションまたはウェブサービスの必要または要求あるいはその両方に基づいて、特定のメッセージのためにVNDを動かすアプリケーションまたはウェブサービスに依存してよい。
【００２８】
新しいトランスポートプロトコルが仮想ネットワークによって開発されるか、または必要とされるとき、それぞれのVNDと共に使用するための新しいトランスポートアダプタを作成しインストールすることができる。この方法で、仮想ネットワークは、仮想ネットワーク内のそれぞれのアプリケーションにそれぞれのトランスポートプロトコルを構築するサポートを必要とすることなく、新しいトランスポートプロトコルを利用することができる。代わりに、新しいトランスポートプロトコルに対するサポートは、新しいトランスポートアダプタと共に新しいトランスポートプロトコルをいつどのように使用するかを命令するロジックを含むそれぞれのVNDに提供される。
【００２９】
VNDは、単一マシン上のローカルおよびリモートディスパッチを統一する。指定されたまたは専用のマシンがルータとして振る舞う従来型ネットワークとは異なり、仮想ネットワークでは通常、全てのデバイスがルータとして振る舞う。例えば、一デバイスは、メッセージを受け取り、そのメッセージが実際にはネットワーク内のどこか他に届けられるべきであると判断するに過ぎない。これが行われるとき、マシンは、(オプションで)メッセージの送信者にエラーメッセージを返す代わりに、正しい受信者、またはその現在のルーティングテーブルおよびルールに基づいてそのマシンが正しいと考える受信者にメッセージを転送する。
【００３０】
図10は、本発明の一実施形態による、メッセージルーティング例を示す。VND1001は、トランスポートアダプタ1005aを介して、FROMフィールドに1.2.3.4が入った着信メッセージ1003を受け取る。VND1001は、複数のトランスポートプロトコルと共に使用する複数のトランスポートアダプタ1005a、1005b、および1005cを含むことができる。VND1001は、事前定義された基準に基づいてメッセージをルーティングまたはディスパッチあるいはその両方を行うようにVND1003にそれぞれが命令するハンドラ1007-1013を使用して、受け取ったメッセージ1003を処理する。VND1001は、ハンドラ1007に基づいて、メッセージのTOフィールドを7.7.4.4に修正し、トランスポートアダプタ1005cを介してルーティングされたメッセージ1015を出力する。ルーティングされたメッセージ1015は、1.2.3.4を示す着信メッセージ1003のFROMフィールドに基づいて、宛先アドレス7.7.4.4が入れられたTOフィールドを含む。
【００３１】
それぞれのデバイスがルータとして振る舞うので、自己治癒システムを実施することができる。1つのマシンがダウンすると、他のマシンが自動的に補正し、メッセージを送るべき他のパスを見つけ、仮想ネットワークをフォールトトレラントにする。一実施形態では、マシンを冗長性グループ内に置くことができる。冗長性グループ内のそれぞれのマシンは、そのグループ内の他の任意のマシンが故障しそのグループを去ったことを検出することができる。次いで、残りのマシンは、ダウンしていることが知られているマシンの使用を回避するために、メッセージを転送する1つまたは複数のメッセージハンドラ内の情報を更新することができる。したがってマシンは、自分のルーティングおよびロジックテーブル内にコード化された命令に従って、ネットワーク障害およびエラーを補正することができ、それを以下にさらに述べる。他の実施形態では、1つまたは複数のマシンサブシステムが、ネットワークを監視して、最適なパスおよび故障したパスを判断することができる。
【００３２】
図2を参照すると、ハンドラ109は、メッセージをどのように処理するか、すなわち着信メッセージをどのように処理するか、メッセージにどのように応答するか、およびメッセージをどのように転送するか、をVND 03に命令するロジックを含む。例えば、第1ハンドラ109aは、ウィルスチェックを実行することができ、第2ハンドラ109bは、セキュリティ機能を実行することができ、第3ハンドラ109cは、信頼性機能を実行することができる等。図2内で109nによって示されるように、無制限の数のハンドラ109を使用することができる。それぞれのマシン上のネットワークアプリケーションを修正する必要なく、与えられた任意のときに、新しいハンドラ109を追加することによって、仮想ネットワークに新しい機能および能力を追加することができる。処理されたメッセージは、論理受信者ポート111を介して出力される。論理端点は、メッセージがそこから送られるデバイス上の任意の物理ポートにマッピングすることができる。
【００３３】
VNDハンドラ109は、仮想ネットワークにおいて、アプリケーションネットワークがそれぞれのアプリケーションに1組の論理端点、すなわちデバイスを提示するように作成することができる。アプリケーションは、非統一セマンティックルールを使用するメッセージを介して端点と通信することができる。例えば、第1アプリケーションは、第1メッセージフォーマット(例えば、ヘッダおよびデータ)に従って、ネットワークを介して第2アプリケーションにメッセージ送ることができる。1つまたは複数のハンドラは、メッセージシンタクスを修正することができ、その結果そのメッセージは、第2アプリケーションによって受け取られる前に修正され、異なるメッセージシンタクスで現れる。端点は、物理ネットワーク上にマッピングすることができ、そのネットワークは、それぞれの端点において様々な実施例を有することができ(すなわち、仕様が公に使用可能になると、様々なベンダが仮想ネットワークを動作させるソフトウェアおよびハードウェアを提供することができる)、端点間で非統一のトランスポートプロトコルを使用して通信することができる。
【００３４】
上述のネットワークプラットフォームを使用すると、仮想ネットワークは自己編成的に構成することができる。すなわち、仮想ネットワークは、ネットワーク上の指定されたイベントから回復し、そのイベントに適合し、そのイベントに応答して自分自身を再編成するように構成することができる。イベントは、ネットワークに自己適合を引き起こす任意の事前定義された条件でよく、条件の非発生を含む。例えば、ネットワークは、ネットワークのノードが故障したことを検出すると再編成するように構成することができる。このイベントが発生すると、1つまたは複数のハンドラが、パケットを新しい位置にルーティングするようにVNDに命令することができる。他の実施例では、ネットワークパス上の負荷が高いとき、VNDは、よりトラフィックの少ないネットワークパスを介してメッセージをルーティングすることができる。あるいは、ユーザは、グラフィカルユーザインタフェース、または他の構成インタフェースを介して仮想ネットワークを再編成することができる。
【００３５】
アプリケーションプログラミングインタフェース(API)115を提供することができ、そのAPIを介して、アプリケーションプログラムがVND103とインタフェースすることができる。メッセージ内容に基づくか、またはそのメッセージを受け取ったトランスポートプロトコルに基づくか、あるいはその両方に基づいてそれぞれのメッセージに応答するようにVNDを構成するAPI115を使用してインタフェースするコンピュータの実行エンジン(例えばオペレーティングシステムまたは仮想マシン)のために、アプリケーションプログラムを書くことができる。VNDは、プロトコルと基礎になる実行エンジンの対話を仲介する。
【００３６】
図3は、本発明の一実施形態において使用される構成可能なメッセージフォーマットを示す。それぞれのメッセージ301は、ヘッダ部分303およびデータ部分305を含む。ヘッダは、データ部分内に含まれる情報に関する情報を含む。すなわち、ヘッダは、メッセージ301のデータ部分305に属するある種のメタデータである。ヘッダ部分もデータ部分も固定長である必要はない。ヘッダは、ルーティングヘッダ307、信頼性ヘッダ309、セキュリティヘッダ311、およびアプリケーションヘッダ313を含むことができる。ルーティングヘッダ307は、例えば、送信者のアドレス、受信者のアドレス、およびルーティング処理に向けられた他の任意の情報を含むことができる。アドレスフィールドは、そのアドレスが参照するエンティティまたはデバイスの仮想アドレスを入れることができる。仮想アドレスは、物理または他の論理アドレスをマッピングすることができる論理アドレスである。信頼性ヘッダ309は、パケットが自分の意図した宛先に達することを確実にする任意のヘッダを含むことができる。セキュリティヘッダ311は、メッセージ内容が、意図しない受信者にさらされないことを確実にする任意のヘッダを含むことができる。特定のアプリケーションの必要に基づいて、整合性ヘッダをセキュリティまたは信頼性ヘッダと共に含めることができる。アプリケーションヘッダ313は、先に説明しなかった任意のヘッダを含むことができ、ネットワークアプリケーションによって定義される。
【００３７】
一実施形態においてメッセージプロトコルは、事前に存在するメッセージ機能の処理を中断することなく、アプリケーションプログラムが必要なときに新しい機能態様を追加することができるという点において、構成可能プロトコルである。一実施形態においてヘッダは、新しい機能態様を提供するために使用される。新しい機能属性は、1つまたは複数のメッセージヘッダ内に格納することができる。すなわち新しいヘッダは、新しいヘッダ(または機能属性)を含むために1つのメッセージプロトコルが他のメッセージプロトコルをカプセル化する従来型メッセージプロトコル一式とは異なり、前のメッセージの処理を邪魔することなく既存メッセージに追加することができる。したがって、このメッセージプロトコルは、新しい機能を提供するために必要なときに、アプリケーションによって追加ヘッダフィールドを追加または削除することができるという点で拡張可能である。これは、全てのネットワークアプリケーションがそれぞれの新しいメッセージヘッダを理解するようにプログラムする必要なく、ネットワークアプリケーションが、新しいヘッダフィールドを定義しそれらのフィールドをメッセージフォーマットに組込むことを可能にする。それぞれのアプリケーションプログラムは、特定アプリケーションプログラムが理解するように構成されたヘッダのみを使用する。そのアプリケーションプログラムは、自分が理解しないまたは適切に解釈できないヘッダを無視することができる。
【００３８】
構成可能なプロトコルは、修正されたXMLベースのプロトコルか、またはそれぞれのTCPメッセージのデータ部分に追加ヘッダが挿入される修正されたTCPプロトコルでよい。アプリケーションが新しいヘッダをメッセージに追加するとき、そのアプリケーションは、新しいヘッダに基づいてルーティングまたはディスパッチあるいはその両方を行う1つまたは複数のハンドラを作成するようにそれぞれのVNDに命令するメッセージを1つまたは複数のVNDに送ることができる。
【００３９】
それぞれのVND103は、それぞれのメッセージ内の任意のヘッダまたはデータフィールドあるいはその両方、またはそれぞれのメッセージ内のヘッダまたはデータフィールドあるいはその両方の任意の組合せに基づいて、ルーティング決定を行うことができる。追加のまたはより少ないタイプのヘッダを使用することができる。それぞれのVND103内のそれぞれのハンドラは、メッセージ内容に基づくルーティングのための命令を提供する。
【００４０】
例えば、アプリケーションプログラムは、それぞれのメッセージ内に「アクション」ヘッダを定義し含んで、ユーザが受信者に要求するアクションを示すことができる。ネットワークユーザが予約のアクションを指定し、メッセージデータ305を「野球のスコア」に設定すれば、そのメッセージは、送信者のユーザが野球のスコアの電子メールリストを予約したいと考えていることを第1サーバに示すことができる。さらに、アクションフィールドには、仮想機能名を入れて、そのフィールドを受け取るそれぞれのマシンで具体的機能にマッピングすることができる。ネットワークユーザが、予約のアクションを指定してメッセージデータ305を「MSDN」に設定すれば、そのメッセージは、送信者のユーザが「MSDN Magazine」という名前の物理的雑誌を予約したいと考えていることを第2サーバに示すことができる。したがって、2つのアプリケーションはともに、それぞれ異なる方法で予約というアクションを使用することができ、それらのそれぞれの予約の機能によって定義される。
【００４１】
他の実施例では、図11を参照しながら、アプリケーションサービスプロバイダ(ASP)が顧客に3つのレベルのサービスを提供すると考える。ASPは、顧客が予約したサービスレベルに基づいて、3つの様々なサーバまたはアプリケーションあるいはその両方の1つにメッセージをルーティングすることができる。ASPは、サービスレベルなどと呼ぶ新しいアプリケーションヘッダを定義かつ使用してそれぞれの顧客に対するサービスレベルを示すことができる。クライアントアプリケーションは、サービスレベルフィールドに金、銀または銅の1つを入れ、具体的顧客が支払ったかまたはそうでなければ予約したか、あるいはその両方のサービスのレベルを示すことができる。マスタサーバ1105は、顧客1101からのすべての着信メッセージをネットワーク1103を介して受け取ることができる。次いでマスタサーバディスパッチャ、例えばVND103は、サービスレベルに基づいて着信顧客メッセージをルーティングすることができる。金のサービスを注文した顧客は、高速応答サーバ1107、すなわち1組の完全なサービスをサポートするサーバ、または他のプレミアレベルのサーバにルーティングすることができる。銀のサービスを注文した顧客は、中速応答サーバ1109、すなわち基本サービスに加えて選択されたサービスをサポートするサーバ、または他の中間サービスレベルサーバにルーティングすることができる。銅サービスを注文した顧客は、低速応答サーバ1111、すなわち基本サービスのみをサポートするサーバ、または他の低サービスレベルサーバにルーティングすることができる。
【００４２】
他の実施例では、アプリケーションは送信者ユーザの地理的位置に関する地帯という名前のヘッダフィールドを含むことができる。次いで、送信者ユーザに最も近くに位置するサーバにメッセージが送られるように、送信者の物理位置に基づいて、ルーティング決定を行うことができる。例えば2つのサーバを保守するシステムでは、送信者ユーザがオレゴン州ポートランドに居ることを地理的位置ヘッダフィールドが示すとき、デバイスはワシントン州シアトル内の第1サーバにメッセージをルーティングすることができ、送信者ユーザがミシガン州デトロイト内に居ることを地理的位置ヘッダフィールドが示すときは、イリノイ州シカゴ内の第2サーバにメッセージをルーティングすることができる。これは、等価なサーバが近くにあるとき、遠いサーバにメッセージを送ることを回避する。
【００４３】
他の実施例では、1つまたは複数のマシンに対してサービス攻撃の拒否が発せられるとき、それぞれのメッセージの「信任状」フィールドに基づいてすべてのメッセージを拒絶するハンドラを作成することができる。「信任状」フィールドは、メッセージの「from」フィールドと同じでも、そうでなくてもよい。例えば「信任状」フィールドは、送信者ユーザの名前、および送信者が自分で言っている者であることを照明する認証を含むことができるのに対し、「from」フィールドは、送信者のIPアドレスまたは論理名を単に含むに過ぎない。メッセージの「信任状」フィールドが送信者マシンに対する適切な信任状を含むときに、ハンドラが、メッセージを受け付けるように構成することができる。メッセージが拒絶されると、そのメッセージは完全に無視され、正当なメッセージに応答するためのリソースを解放することができる。
【００４４】
他の実施例では、図4を参照すると、仮想ネットワークを自己治癒的に構成することができる。ファイアウォール403の背後に位置するマシン401は、ネットワーク接続404上で着信メッセージを受け取ることができる。マシン401は、仮想ネットワーク(すなわち、本明細書に議論した適応ディスパッチャおよびトランスポートアダプタで構成された物理ネットワーク)を介して他のマシン407、409、411に接続することができる。それぞれのマシン401、407、409、および411は、VND405を含む。それぞれのマシン401、407、409、および411は、1つまたは複数の仮想位置を格納することができる。すなわち、マシン1は、「alpha」として知られているサーバを格納し実行することができる。マシン2は、「bravo」として知られているサーバを収容し格納することができる。マシン3は、「charlie」、「delta」および「echo」として知られているサーバを収容し格納することができる。マシン4は、「foxtrot」および「golf」として知られているサーバを収容し格納することができる。仮想ネットワーク内のそれぞれのVNDは、それぞれの仮想位置をその各物理マシンにマッピングするハンドラで構成される。例えば、デバイス401が、仮想位置bravoに宛てられたメッセージを受け取るとき、デバイス401のVND内の仮想位置マッピングハンドラは、そのメッセージをマシン2にルーティングするようにVNDに命令する。しかし、デバイス401は、ファイアウォールでの着信ソースであるので、マシン1内のVND405は、ウィルスに対してすべての着信メッセージを最初にチェックし他のセキュリティ対策を実行する追加ハンドラで構成することができる。
【００４５】
仮想ネットワークを自己治癒的にするには、そのネットワーク状況を判断するために他のマシンまたはサーバに定期的にポーリングするようにハンドラを作成することができる。すなわち、サーバ「golf」が「echo」のためのバックアップサーバである場合、マシン4は、マシン3、具体的にはサーバ「echo」が機能していることを確認するために定期的間隔でマシン3にポーリングするように構成することができる。マシン4が指定された時間、例えば10秒以内にマシン3(または「echo」)から肯定応答を受け取らないとき、マシン4がそれぞれのマシンのVNDにルーティングメッセージを送り始めるフェイルオーバ(failover)シーケンスをマシン4が起動することができ、マシン3上の「echo」に対するメッセージを受け取ったとき、そのメッセージは代わりに、マシン4上の「golf」に送るべきであるということをそれぞれのVNDに示す。
【００４６】
同様に、図4内に述べるアーキテクチャを使用して、サーバが1つのマシンから他に、例えば1つのIPアドレスから第2IPアドレスに移動するとき、ネットワーク上で動作するそれぞれのアプリケーションプログラムを再構成する必要なく、仮想マッピングをそれぞれのVND内で更新することができる。アプリケーションプログラムがサーバにメッセージを送るとき、それぞれのVNDは、そのサーバの新しい位置にメッセージを自動的に再ルーティングする。仮想マッピングは、手作業で、例えば新しいサーバがシステムに追加されることの結果として更新することができ、またはそのマッピングは、自動的に、例えば上述の自動治癒または適合イベントの結果として更新することができる。図12は、サンプル仮想マッピングテーブルを示す。図13は、ウェブサイトwww.foo.comを収容する第1マシンが故障した後の同じテーブル、および冗長性グループ内の他のマシンにメッセージを再ルーティングする上述の故障に適合したシステムを示す。
【００４７】
図5を参照すると、仮想マッピングは新しいサーバおよびネットワークアプリケーションの容易なセットアップおよびテストもまた容易にする。例えば、マシン2上のサーバbravoは、本番の電子メールサーバでよい(すなわちそのサーバは、仮想ネットワーク内で現在使用される電子メールサーバである)。仮想ネットワークの所有者は、新しいまたは異なる機能を有するアップグレードされた電子メールサーバをテストしたいと考えることができる。一般に、その新しいサーバをテストするためであれば、ユーザは、自分の電子メールクライアントをその新しいサーバに宛てなければならない。これは単一ユーザに対しては不便ではないが、新しいサーバがライブになるときに、大きな組織内の全てのユーザのサーバ名を変更することは大きな不便となる可能性がある。本発明的システムを使用すると、同様にbravoという名前でbravoと参照されるテストサーバをマシン3上にインストールすることができる。それぞれのVNDは、bravoに対するメッセージをマシン2にルーティングするようにそのVNDに命令するハンドラで構成することができる。しかし、送信者が所定のユーザ、例えば新しいサーバ(「bravo」)をテストしているネットワーク管理者、であるとき、bravoに対するメッセージをマシン3にルーティングするように同じまたは異なるハンドラが構成される。したがって、テストユーザのマシンの再構成は必要がない。さらに、新しいサーバ「bravo」が本番に置かれる準備ができているとき、どのユーザの電子メールサービスを中断することもなく、すべてのbravoメッセージをマシン3に宛てることによって、ネットワークマッピングを変更することができる。仮想マッピングが変更されたので、それぞれのユーザは、新しい電子メールサーバを透過的に使用し始めるであろう。
【００４８】
図7を参照すると、仮想ネットワーク内の通信およびサービスが安全、適合可能、信頼可能、自己治癒的、かつプラットフォーム非依存であることを確実化する1組の仮想ネットワークサービスを提供することができる。仮想ネットワーク同期サービス703は、ネットワーク内の分散データの同期がとられ続けることを確実にする。仮想ネットワークイベンティングサービス705は、イベントの発生または非発生に基づいて、新しいルーティングまたはディスパッチあるいはその両方のルールを作成する。仮想ネットワークメッセージングサービス707は、仮想名前および位置に従ってメッセージをルーティングする。仮想ネットワーク名前サービス709は、仮想名前の任意の部分文字列に基づく名前解決サービスを提供する。仮想ネットワークグループサービス711は、名前マッピングテーブルを管理する。仮想ネットワークアドレシングサービス713は、固定長アドレス名、例えばIPv6アドレスに対するネーミングおよびルーティングサービスを実行する。しかし、仮想ネットワークアドレシングサービスは、固定サイズアドレスの任意のフラットアドレス空間で使用することができる。仮想ネットワークルーティングサービス715は、構成可能メッセージプロトコルを使用して、動的ヘッダと共に動的ルールに基づいてルーティングかつディスパッチする。仮想ネットワークセキュリティサービス717は、ネットワークのすべてのレベルにわたって提供され、メッセージ内容が安全かつ真正であることを確実にすることができる。仮想ネットワーク管理719は、名前管理、ルーティング/ディスパッチハンドラ、イベンティングなど、すべてのレベルにわたって実行することができる。仮想ネットワーク監視サービス721は、当技術分野で知られているように、ネットワーク管理者が、ネットワーク使用状況、帯域幅、ボトルネック点などを監視することを可能にする。
【００４９】
図9に示すように、本発明の一実施形態は、7レベルの開放型システム間相互接続(OSI)の修正バージョンに基づくことができる。OSIモデルで使用することができる1つのプロトコルスタックは、TCP/IPプロトコルスタックである。本発明は、最上部アプリケーション層と最上部アプリケーション層の直下の層の間に層を挿入することによって、OSIネットワークモデルまたは他の任意のネットワークモデル内に追加レベルの抽象化を挿入することができる。仮想ネットワーク(VN)層と呼ばれる新しい層は、VN層によって定義される統一的方法でアプリケーションが相互動作できるように、すべてのアプリケーションにわたって一貫しているべきである。VN層が統合されたネットワークは、仮想ネットワークと呼ばれる。一実施形態においてVN層は、仮想ネットワークディスパッチャおよび任意の必要なトランスポートアダプタを含み、メッセージハンドラおよび仮想アドレスマッピングテーブルに基づいてメッセージをルーティングかつディスパッチする。
【００５０】
上述のアーキテクチャを使用して、ネットワークは、異なるメッセージ内容に基づいて、個々のメッセージ毎にメッセージをルーティングしディスパッチすることができる。本発明は、APIを使用してプログラマが必要なように適合させ構成することができるネットワークプロトコルを提供する。プログラマおよびAPIを使用するプログラムは、着信メッセージをどのようにルーティングしディスパッチするかをVNDに命令することができる。すなわち、プログラマは、メタメッセージをVNDに送り、ここでそれぞれのメタメッセージは、APIに従って構築され、1つまたは複数のルーティングまたはディスパッチングあるいはその両方の命令を提供する。
【００５１】
図8は、本発明の一実施形態による、一般的ルーティング手順の流れ図を示す。ステップ801において、ユーザは、「foo」として知られているサービスにメッセージを送ることを決定する。ステップ803において、マシンはサービス「foo」に対するメッセージを作成する。ステップ805において、サービス名「foo」が仮想アドレスマッピングテーブルに基づいて仮想アドレスにマッピングされる。ステップ807において、メッセージは必要に応じて安全にされる。一実施形態では、ウェブサービスセキュリティ言語(WS-Security)またはウェブサービスライセンス言語(WS-License)あるいはその両方によって定義される拡張子などのSOAP拡張子を使用してセキュリティが実行される。他の実施形態において、適切な部分を選択するためにメッセージ上で変換が実行される。選択された部分に対して要約が計算され、送信者によって暗号化/署名される。メッセージの部分は、秘密であってよい。この場合、それらの部分は、共用鍵、または受信者のために暗号化された新しい鍵を使用して暗号化される。ステップ809において、適用可能なときには、仮想アドレスがグループアドレス(GADDR)にマッピングされる。ステップ811において、適応ディスパッチャ(すなわち、VND)は、最良のターゲットを判断し、ステップ813において、GADDRを仮想アドレスにマッピングする。ステップ815において、仮想アドレスが、物理アドレスにマッピングされ、ステップ817において、メッセージがその物理アドレスに送られる。受信者マシンは、ステップ819でメッセージを受け取り、ステップ821においてセキュリティを検証する。
【００５２】
本発明的方法は、フロッピー(登録商標)ディスク、CD-ROM、取外し可能記憶装置、ハードディスク、システムメモリ、その他のデータ記憶媒体などのコンピュータ可読媒体上に格納されたコンピュータ可読命令として実施することができる。あるいは、本発明的方法は、ハードウェアおよびソフトウェアの組合せ、またはハードウェアのみで実施することができる。図6は、上述の実施形態の1つまたは複数に従って使用することができるコンピュータ可読媒体601のブロック図を示す。コンピュータ可読媒体601は、コンピュータ実行可能コンポーネント、またはソフトウェアモジュール603-613を格納する。より多数または少数のソフトウェアモジュールを別法として使用することができる。それぞれのコンポーネントは、実行可能プログラム、データリンクライブラリ、構成ファイル、データベース、グラフィカルイメージ、2進データファイル、テキストデータファイル、オブジェクトファイル、ソースコードファイルなどでよい。1つまたは複数のコンピュータプロセッサが1つまたは複数のソフトウェアモジュールを実行するとき、ソフトウェアモジュールは、対話して、本発明の教示に従って1つまたは複数のコンピュータシステムに実行させる。
【００５３】
本発明を実行する現在好ましい方法を含む具体的実施例に関して本発明を述べたが特許請求の範囲において説明する本発明の精神および範囲内に当たる、上述のシステムおよび手法の多数の変形形態および置換があることを当業者は理解するであろう。
【図面の簡単な説明】
【図１】本発明の一実施形態による、仮想ネットワーク内の2つのノードのブロック図である。
【図２】本発明の一実施形態による、仮想ネットワークディスパッチャのブロック図である。
【図３】本発明の一実施形態による、構成可能メッセージプロトコルを示す図である。
【図４】本発明の一実施形態による、仮想ネットワークのブロック図である。
【図５】本発明の他の実施形態による、仮想ネットワークのブロック図である。
【図６】本発明の一実施形態による、コンピュータソフトウェアを格納するコンピュータ可読媒体のブロック図である。
【図７】本発明の一実施形態による、仮想ネットワークによって提供される1組のサービスを示す図である。
【図８】本発明の一実施形態による、メッセージ送達を実行する流れ図である。
【図９】本発明の一実施形態による、修正されたOSIの7層ネットワークプロトコルスタックを示す図である。
【図１０】本発明の一実施形態による、仮想ネットワークディスパッチャを介するデータフローを示す図である。
【図１１】本発明の一実施形態による、ネットワークアーキテクチャを示す図である。
【図１２】サンプル仮想マッピングテーブルを示す図である。
【図１３】システムがマシン故障に適合した後の、図12のサンプル仮想マッピングテーブルを示す図である。
【符号の説明】
401  マシン1
403  ファイアウォール
404  ネットワーク接続
405  VND
407  マシン4
409  マシン2
411  マシン3
【図１】
0004503225.tif 000002
【図２】
0004503225.tif 000003
【図３】
0004503225.tif 000004
【図４】
0004503225.tif 000005
【図５】
0004503225.tif 000006
【図６】
0004503225.tif 000007
【図７】
0004503225.tif 000008
【図８】
0004503225.tif 000009
【図９】
0004503225.tif 000010
【図１０】
0004503225.tif 000011
【図１１】
0004503225.tif 000012
【図１２】
0004503225.tif 000013
【図１３】
0004503225.tif 000014