(57)【特許請求の範囲】
【請求項１】
通信エンドポイントにメッセージをルーティングする方法であって、
（１）第１の名前ルータにおいて、複数の別個のコンポーネントであって、該コンポーネントの１つは、ドメインを示し、他のコンポーネントの１つは、前記ドメインを有する名前サーバと別の名前ルータ又は前記通信エンドポイントを示すために用いられる情報である、名前コンポーネントを含む名前によって識別される前記メッセージを受け取るステップと、
（２）前記第１の名前ルータにおいて、前記名前の第１の部分を第１のアドレスに解決するステップであって、異なる状況においては、同じ名前が異なるアドレスに解決されることを可能にする解決ポリシーに基づいて該ステップが実行されるステップと、
（３）前記第１の名前ルータからステップ（２）で解決された前記第１のアドレスに、前記メッセージを送信するステップと、
（４）前記メッセージを、ステップ（２）で解決された前記第１のアドレスに相当する第２の名前ルータにおいて受け取るステップと、
（５）前記第２の名前ルータにおいて、前記名前の第２の部分を第２のアドレスに解決するステップと、
（６）前記第２のアドレスに相当するコンピュータに前記メッセージを送信するステップと
を含むことを特徴とする方法。
【請求項２】
（７）第１のアドレスを前記第１の名前ルータから前記メッセージの発信者に送信するステップと、
（８）前記第２のアドレスを前記第２の名前ルータから前記メッセージの発信者に送信するステップと
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
ステップ（３）の前に、前記名前のある部分に含まれる情報に基づき前記メッセージを第１のプロトコルから第２のプロトコルに変換するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項４】
ステップ（２）は、前記メッセージが第１の発信者から発信された場合には第１のアドレスに名前を解決し、前記メッセージが第２の発信者から発信された場合には第２のアドレスに名前を解決するステップを含むことを特徴とする請求項１に記載の方法。
【請求項５】
ステップ（２）は、前記メッセージの発信者のドメインに応じて、所与の名前を異なって解決するポリシーに基づいて前記名前を解決するステップを含むことを特徴とする請求項１に記載の方法。
【請求項６】
ステップ（２）は、前記名前を除く、前記メッセージのヘッダ部分に応じて、所与の名前を異なって解決するポリシーに基づいて前記名前を解決するステップを含むことを特徴とする請求項１に記載の方法。
【請求項７】
ステップ（２）は、前記名前を除く、前記メッセージのコンテンツ部分に応じて、所与の名前を異なって解決するポリシーに基づいて前記名前を解決するステップを含むことを特徴とする請求項１に記載の方法。
【請求項８】
コンピュータ実行可能命令を用いてプログラムされたコンピュータを有する名前ルータであって、前記コンピュータ実行可能命令は、
（１）メッセージを、複数の別個のコンポーネントであって、コンポーネントの１つは、ドメインを示し、他のコンポーネントの１つは、前記ドメインを有する名前サーバと別の名前ルータ又は通信エンドポイントを示すために用いられる情報である、コンポーネントを含む仮想名前によって識別される通信エンドポイントにルーティングする要求を受け取るステップと、
（２）複数の仮想名前コンポーネントを複数のアドレスにマップする仮想名前テーブルを使って、前記仮想名前の一部を一つのアドレスに解決するステップと、
（３）前記メッセージを前記解決された一つのアドレスに転送するステップであって、該アドレスが別の名前ルータに相当するステップと
を実行し、
前記コンピュータ実行可能命令は、所与の仮想名前がそれに応じて異なって解決されるマッピングポリシーを適用することによって、ステップ（２）を実行することを特徴とする名前ルータ。
【請求項９】
前記コンピュータ実行可能命令は、前記メッセージが第１の発信者から発信された場合には第１のアドレスに前記仮想名前を解決し、前記メッセージが第２の発信者から発信された場合には第２のアドレスに名前を解決するポリシーを適用することによって、ステップ（２）を実行することを特徴とする請求項８に記載の名前ルータ。
【請求項１０】
前記コンピュータ実行可能命令は、前記メッセージの発信者のドメインに応じて所与の名前が異なって解決されるポリシーを適用することによって、ステップ（２）を実行することを特徴とする請求項８に記載の名前ルータ。
【請求項１１】
前記コンピュータ実行可能命令は、前記名前を除く、前記メッセージのヘッダ部分に応じて所与の名前が異なって解決されるポリシーを適用することによって、ステップ（２）を実行することを特徴とする請求項８に記載の名前ルータ。
【請求項１２】
前記コンピュータ実行可能命令は、前記名前を除く、前記メッセージのコンテンツ部分に応じて所与の名前が異なって解決されるポリシーを適用することによって、ステップ（２）を実行することを特徴とする請求項８に記載の名前ルータ。
【請求項１３】
前記コンピュータ実行可能命令は、前記メッセージのプロトコルを変換するステップをさらに実行することを特徴とする請求項８に記載の名前ルータ。
【請求項１４】
前記コンピュータ実行可能命令は、外部からの要求に応答して、前記仮想名前の一部を組み込んだ一意の名前を生成するステップをさらに実行することを特徴とする請求項８に記載の名前ルータ。
【請求項１５】
前記コンピュータ実行可能命令は、他の名前ルータへの変更通知を生成するステップをさらに実行することを特徴とする請求項８に記載の名前ルータ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般に、コンピュータネットワークに関する。より詳細には、本発明は、名前解決プロセスを使って、１つ以上の仮想通信エンドポイントに、メッセージをルーティングすることができるようにする。
【０００２】
【従来の技術】
本出願は、参照により本明細書に組み込まれている、２００１年１０月１６日に出願した米国仮出願番号６０／３２９，７９６（整理番号ＭＳ１８８９０３．１）および２００１年１０月１９日に出願した米国仮出願番号６０／３４６，３７０（整理番号ＭＳ１８８９０３．２）の優先権を主張するものである。
【０００３】
何年も前から、インターネットは、周知のインターネットプロトコル（ＩＰ）を使ってメッセージルーティングを行う、リンクされたコンピュータの広大なネットワークを提供している。「ルータ」として知られる専用装置が、各データパケットをどこに送るべきかを決定し、それによって、その特定の経路がメッセージの発信者には知られることはないかもしれないが、所与のデータパケットまたは「データグラム」は、所期の宛先に到着する。各コンピュータまたはルータには、１つ以上のＩＰアドレスが割り当てられる。ＩＰアドレスは、現在のところ、12.152.34.61などのいわゆる「ドット」表記で表される３２ビットの数字である。各パケットは、一般に、ソースＩＰアドレス、宛先ＩＰアドレス、およびその他のフィールドをヘッダに含んでおり、それらが全体として、パケットが、ネットワークの間で、どこにどのようにルーティングされるかを決定する。ネットワーク中のルータは、それらが接続されている他のルータに関する知識を保持しており、それによって、パケットは、最終的に、宛先ＩＰアドレスが表すエンドポイントにルーティングされる。
【０００４】
ウェブページおよび他のリソースを、１つ以上の割当ＩＰアドレスを有するコンピュータ上に記憶することができる。しかし、ＩＰアドレスは、人が記憶しているのは難しいため、ウェブページまたは他のリソースを一意に識別するためには、ＵＲＬ（ユニフォームリソースロケータ）として知られるテキストベースの階層名が使用されることが多い（例：www.foo.com）。コンピュータのユーザがこのようなＵＲＬをウェブブラウザに入力すると、ブラウザは、そのＵＲＬをドメイン名サーバ（ＤＮＳ）に送信し、ＤＮＳは、そのＵＲＬを、そのウェブページがあるコンピュータを表すＩＰアドレスに変換する。ウェブブラウザは、次いで、そのコンピュータに検索コマンドを送信する。このプロセスは、ＤＮＳ名解決として知られる。
【０００５】
図１を参照して、クライアントコンピュータ１０１上で動作しているウェブブラウザ１０４によって、ユーザが、例えばhttp://foo.microsoft.com/foo/bar/bing.htmなどの任意のＵＲＬを入力できると仮定する。第１のコンポーネント（「http」）は、そのドキュメントを保持する、またはサービスを提供するマシンと通信するために、どのインターネットプロトコルを使用すべきかを指定するスキーム識別子である。第２のコンポーネント「//foo.microsoft.com」は、「ホスト名」と呼ばれ、インターネットに接続された特定のコンピュータまたは１組のコンピュータを識別するために使用される。第３のコンポーネント「foo/bar/bing.htm」は、マシン上の所望のドキュメントまたはサービスを見つけるためのマシンローカルの識別子である。
【０００６】
図１に示すように、上記ＵＲＬのための従来のインターネット解決プロセスは、以下の通りである。
【０００７】
まず、ウェブブラウザ１０４は、ＤＮＳサーバ１０２で表されるインターネットのドメイン名サービスに、ＤＮＳ要求１０７を発行する。ＤＮＳサーバ１０２は、各ＵＲＬを相当するＩＰアドレスにマップするテーブル１０５を含む。要求１０７に応答して、ＤＮＳサーバ１０２は、「foo.microsoft.com」を解決してＩＰアドレスにする。例えば、ステップ１０８の1.2.3.4である。次いで、このＩＰアドレスをクライアントコンピュータ１０１に返す。ＵＲＬのこの部分の解決の間に、いくつかの異なるサーバにコンタクトする場合もあるが、「foo.microsoft.com」から1.2.3.4への完全な解決のみがキャッシュに入れられる。「foo2.microsoft.com」など、関連する名前を解決するには、解決プロセスを最初から開始しなければならない。
【０００８】
次に、ウェブブラウザ１０４は、ＨＴＴＰ（ハイパーテキストトランスポートプロトコル）を使って、ウェブサーバ１０３（例えば、ＩＰアドレス1.2.3.4に結合されたマシン）にコンタクトし、図１において要求１０９で示されたように、リソースhttp://foo.microsoft.com/foo/bar/bing.htmを要求する。所与のマシンをいくつかの異なるホスト名で指すことができるので、完全なＵＲＬを渡す必要がある。例えば、http://microsoft.comとhttp://foo.microsoft.comはともに1.2.3.4を解決する。次いで、ステップ１１０で、マシン１０３は、リソース１０６で応答する。リソース１０６は、ウェブページとしてブラウザ１０４上に表示される。
【０００９】
【発明が解決しようとする課題】
様々なサービスを提供する様々なマシンは、異なるホスト名を持っている必要があるため、この解決メカニズムには様々な管理上の問題がある。例えば、ワールドワイドウェブサービスをホストするのにwww.foo.comを使用し、メールサービスをホストするのにmail.foo.comを使用すると仮定する。管理上の負担には、これらの名前すべてを作成し、維持しなければならない必要性、および従来のシステムには、ドメインコンポーネントを共用するマシン全体にわたって解決ポリシーを適用する能力がないことが含まれる。さらに、このＤＮＳ解決スキームは、ホストコンピュータを移動すると、ＤＮＳサーバ上のファイルを変更して、そのコンピュータの新しい物理的位置を反映させなければならないという点において、柔軟性に欠ける。
【００１０】
はるかに強力な制御および柔軟性をもって、サービスおよびリソースのネーミングおよびアドレス指定を行うことができ、かつ解決プロセスの効率を向上させるメカニズムを提供するシステムおよび方法が必要とされている。
【００１１】
【課題を解決するための手段】
本発明は、名前解決プロセスプロセス（a name resolution process）を使って、仮想ネットワークのエンドポイントにメッセージをルーティングすることができるようにする。名前解決プロキシとともに実装することができるメッセージサービスは、仮想ネットワーク名を使ってメッセージを名前ルータにルーティングする。名前ルータは、仮想ネットワーク名の一部を解決（resolve）して、その仮想ネットワーク名の解決した部分に相当する宛先にメッセージを転送する。その宛先が別の名前ルータであるならば、それは、仮想ネットワーク名の次の部分を解決し、宛先のエンドポイントに到達するまでこのプロセスが続く。本発明の実施形態は、次の機能のうちの１つ以上のを含む。
【００１２】
（１）一連の名前ルータを介して、所与の仮想ネットワーク名（ＶＮＮ）にメッセージを送る能力。
（２）ＶＮＮの解決において、中間結果のキャッシングをサポートする再帰的ルックアップアルゴリズム。
（３）このような解決の中間および最終結果のキャッシング。
（４）複数のエンドポイント、または１組の潜在的エンドポイントの１つに、所与のメッセージをルーティングする能力（すなわち、単一ＶＮＮで１組のエンドポイントを識別し、所与のメッセージをそれらのエンドポイントの１つ、いくつか、またはすべてに送るべきかどうかを記述する能力）。
（５）所与のＶＮＮの解決にポリシーを指定し、適用する能力。
（６）所与のＶＮＮの可視性にポリシーを指定し、適用する能力。
（７）名前空間管理アクションに関する通知を生成し、配布する能力。
（８）一時ＶＮＮを生成し、割り当てる能力。
（９）キーに基づいてＶＮＮを生成する能力。
（１０）メッセージのデフォルトルーティングのためのメカニズム提供能力。
【００１３】
その他の利点および特徴は、以下の説明、図、特許請求の範囲を参照することにより明らかになるであろう。
【００１４】
【発明の実施の形態】
本発明の一実施形態は、ＵＲＬのいずれかのコンポーネントを物理的マシンアドレスにマップできるようにすることによって、従来のＵＲＬネーミングスキームを拡張する。これは、例えば、ワールドワイドウェブサービスをhttp://www.foo.com/webとして、メールサービスをhttp://www.foo.com/mailとして公開でき、異なるマシンに対するこれらのＵＲＬマップのそれぞれを持つことができることを意味する。というのは、「web」および「mail」コンポーネントが、従来のＤＮＳ名前解決プラクティスのようにそれら両方が必ずしも同じ物理マシンを指すのではなく、この場合、それらを独立に解決できる（resolved）からである。
【００１５】
さらに、この解決（resolution）は、状況に応じて変わる。すなわち、解決プロセス（resolution process）は、アドレスを解決しようとしているクライアントの識別を考慮することができる。または、そのクライアントのネットワークのロケーションを考慮して、クライアントに最も近いサービスに解決させるか、またはさらなる情報に基づき、他のポリシーを適用することができる。
【００１６】
本発明の別の態様では、「名前ルータ」と呼ぶ構造を介して、クライアントが特定のＶＮＮにメッセージを送ることができるようにすることによって、従来のインターネットネーミングをさらに向上させる。これによって、クライアントは、ＶＮＮの解決およびメッセージの処理をオフロードすることができる。「仮想ネットワーク名」という用語すなわちＶＮＮは、ネットワーク中の通信エンドポイントを識別する名前を指すために使用する。ここで、この名前は、物理マシンのアドレスと静的に関連していなくてもよい（すなわち、同じＶＮＮが使用されている場合でも、物理マシンのアドレスは変わる場合もあるし、異なる場合もある）。
【００１７】
このシステムのある実施形態は、以下に詳述する、１台以上の名前解決／ルーティングサーバを含む。仮想名前ルータは、名前解決ファンクション（すなわち、名前または名前の一部のアドレスへの変換）、ルーティングファンクション（例えば、メッセージをアドレスに転送する能力）、および下記に説明するその他のファンクションを含むことができる。これらのファンクションを異なるコンピュータの間で分割して、あるマシンに名前サーバファンクションを常駐させ、別のマシンにルーティングファンクションを常駐させることができることを理解されたい。（例えば、名前解決ファンクション（name solution function）をあるマシンに常駐させ、ルーティングファンクションをクライアントマシンに常駐させることができる）。その他の実装ももちろん可能であり、設計の観点から特定のファンクションのロケーションおよび構造を決定することができる。「仮想名前サーバ」という用語は、少なくとも１つの名前解決ファンクションを含むものとして理解されたい。「仮想名前ルータ」という用語は、少なくとも１つのメッセージルーティングファンクションを含むものとして理解されたい。「仮想名前解決／ルータ」は、両方のファンクションを含むものとして理解されたい。本明細書の他の部分において、あるエレメントに与えられる特定のファンクションは、そのエレメントが使用されている状況から明らかになろう。
【００１８】
このシステムの使用は、メッセージの送達および既存のドメイン名サービス（ＤＮＳ）を要求するクライアントなどのコンポーネントを伴う。ただし、本発明の原理は、ＤＮＳを要求せずに適用することができる。「名前サーバ」という総称は、従来のドメイン名サービス（ＤＮＳ）を含むが、それに限定されない解決ファンクションを実行するどのようなサーバも指すものとして理解されたい。
【００１９】
本発明の態様は、４つのカテゴリに区分することができる。そのそれぞれについて以下に別々に説明する。
１．メッセージルーティングおよびルーティングの加速
２．メッセージルーティングおよび加速へのポリシーの適用
３．名前空間管理アクションに関する通知
４．自動名前生成および削除
【００２０】
メッセージルーティングおよびルーティングの加速
本発明の第１の機能は、一連の名前ルータを介して、ＵＲＬなどのＶＮＮによって識別される所与の通信エンドポイントにメッセージを送る能力を含む。この機能の一部として、通信エンドポイントと通信するためにどのネットワークプロトコルが使われていようと、その通信エンドポイントにＶＮＮを割り当てることができる。
【００２１】
第２の機能は、ＵＲＬのコンポーネントを、ドメイン名を超えて特定の名前ルータに解決する能力を含む。
【００２２】
第３の機能は、キャッシュに入れるべき中間結果を返し、したがって名前解決およびルーティングプロセスが加速される能力を含む。
【００２３】
第４の機能は、所与のメッセージを複数のエンドポイントまたは１組の潜在的エンドポイントにルーティングする能力を提供する（すなわち、単一ＶＮＮで１組のエンドポイントを識別し、所与のメッセージがそれらのエンドポイントの１つ、いくつか、またはすべてに送るべきかどうかを記述する能力）。
【００２４】
図２は、第１の実施形態に従って、本発明の様々な原理を使用しているシステムを示す。名前解決およびルーティングによって、クライアントは、一連の名前ルータを介して、１つ以上の通信エンドポイントにメッセージを送ることができる。図２に示すように、クライアント２０１は、１つ以上のルータ２０２を介して、通信エンドポイント２０３に送達するためのメッセージを送る。任意の数の名前ルータを使って、そのメッセージを最終宛先にルーティングすることができるが、この説明では、１つの名前ルータについてのみ触れる。各名前ルータは、ＤＮＳサーバ２１０などの従来のＤＮＳサーバから区別することができる。このような従来のサーバは、図１に示すように、拡張不可能なスキームに従って、単にＵＲＬの固定部分を解決するだけである。
【００２５】
コンピュータ上に常駐するソフトウェアのファンクションを含むことができる名前ルータ２０２は、エンドポイントＣに直接アクセスするために使用する特定の物理アドレスに、通信エンドポイントＣの仮想名前をマップする（例えば、ＩＰアドレスに任意の名前をマップする）エントリ２０５を含む仮想名前テーブル２０４を保持する。クライアント２０１は、Ｃという名前を有するエンドポイント２０３を宛先とするメッセージを名前ルータ２０２に送る。名前ルータ２０２は、マッピングエントリ２０５を使って、そのメッセージをエンドポイントＣの物理アドレスに転送する。名前ルータ２０２は、別個の物理コンピュータとして表示してあるが、クライアント２０１と同じコンピュータ上に常駐することもできることを理解されたい。
【００２６】
一変形形態では、クライアント２０１は、名前ルータ２０２に加速情報を要求することもできる。クライアント２０１がそのようにし、かつその情報を取得する適切な許可を得ている場合には、名前ルータ２０２は、クライアント２０１に、エンドポイントＣの仮想名前がエンドポイントＣの特定の物理アドレスをマップすることを示すメッセージ２０９を返す。したがって、クライアント２０１は、２０６に示すように、この情報を受け取ってキャッシュに入れた後、Ｃの物理アドレスを使って直接エンドポイントＣにコンタクトすることができ、したがって、メッセージを送達するプロセスが加速される。従来のように、キャッシュに入れたエントリは、ある時間が過ぎると自動的に消去され、古いエントリは除去される。
【００２７】
ある実施形態では、拡張したＵＲＬシンタックスを使って通信エンドポイントを指定することができる。この場合、複数の名前サーバ／ルータのそれぞれが全ＵＲＬの一部をマップする責任を負う。ＤＮＳサーバが常に所与のＵＲＬの固定された既知の部分を単一の物理アドレスにマップする従来のＤＮＳ技術とは異なり、ＵＲＬを１組の別個の名前コンポーネントとみなし、その各コンポーネントが、システム中の別個の名前ルータによって解決される。例えば、http://aaa.com/bbb/ccc/ddd.htmという形のＵＲＬは、いくつかの異なる名前ルータによって解決される。ａａａコンポーネントは、従来のＤＮＳサーバによって解決され、これによりｂｂｂコンポーネントについて名前ルータを解決する。メッセージは、ｂｂｂ用の名前ルータに送られ、次いで、次のコンポーネントｃｃｃが解決される。以下同様に、エンドポイントが決定されるまで続く。あるいは、任意の名前（例えば、「Bob」「Bob at Company X」など）で通信エンドポイントを識別することもでき、デフォルト名前ルータを使用して、このような任意の名前を解決することができる。
【００２８】
図３は、本発明の一実施形態に従って上記の原理を実行するためのシステムを示す。第１のサブシステム３０１は、１台以上のクライアントマシン３０９、および１台以上の仮想名前解決プロキシマシン３０８を含む。１つまたはすべての名前解決プロキシは、１台以上のクライアントマシン上に物理的に常駐させることができることを理解されたい。仮想名前解決システム３０２は、従来のドメイン名サービス３０７を含み、これは、一実施形態によれば、各名前の第１のレベルを解決する働きをする。１台以上の仮想名前ルータ３０３から３０６は、仮想名前の１つ以上の部分を解決する働きをし、したがって、このような目的で相互接続されているものとして示してある。接続は、ローカルエリアネットワークやインターネットなど、従来のネットワーク接続を含むことができる。所与の名前を第１の組の名前ルータを使って解決し、第２の名前を異なる組の名前ルータを使って、など、以下同様に解決することができることを理解されたい。
【００２９】
クライアント３０９が仮想名前のエンドポイント名（例えば、上記の拡張ＵＲＬ、または「Bob」「Corporate Database」などの任意の名前）にメッセージを送る必要があると仮定する。クライアント３０９は、メッセージを仮想名前解決プロキシマシン３０８を介して仮想名前エンドポイントに送る。一実施形態では、プロキシ３０８は、メッセージを従来のドメイン名サービス３０７に送って、名前解決の第１のレベルに相当する物理マシンアドレスを得る。修正ＵＲＬフォーマットではない任意のエンドポイント名が使用されている場合など、別の実施形態では、このステップは省くことができ、名前解決は、例えばデフォルト名解決サービス３０９を使って直接、進行することができる。デフォルト名解決サービス３０９は、第１のレベルの名前マッピングを含む物理マシン（例えば、サブシステム３０２中に示す仮想名前ルータの１つ）にマップする。
【００３０】
第１レベルの解決を送るべき先の仮想名前ルータを決定すると、仮想名前解決プロキシ３０８は、指示した仮想名前ルータに、名前の解決を要求するメッセージを伝送する。名前ルータは、その要求を受け取ると、内部マッピングテーブルを使って名前の一部または全部を解決し、解決した名前または名前の一部を返す。このプロセスは、名前全体が解決されて、エンドポイントが決定されるまで繰り返される。
【００３１】
図４は、メッセージが、上記の原理に従って、どのように仮想エンドポイントに送ることができるかをより詳細に示す。クライアントが、http://foo.com/a/b/cという名前の、エレメント４５０に表示されている通信エンドポイントにメッセージを送る必要があるとする。以下は、本発明の一実施形態に従ってこの名前を解決するために実行することができる、ステップを説明している。この解決を完全に例示するために、このＵＲＬの各コンポーネントを異なる名前ルータを使ってルーティングすると仮定するが、実際は、必ずしもそうである必要はない。
【００３２】
最初に、ステップ４０１に示すように、クライアントは、解決しなければならない仮想名前、この場合はhttp://foo.com/a/b/cを含むメッセージを名前解決プロキシ４２０に送る。プロキシ４２０は、まず、第１のコンポーネントfoo.comのＩＰアドレスを突き止めるために、従来のドメイン名サーバ４４０に要求４０２を送る。このアドレスはステップ４０３で返される。従来のＤＮＳスキームの場合のように、クライアントは、このＩＰアドレス（例えば、1.2.3.5）をキャッシュに入れ、したがって、http://foo.comで開始するＵＲＬをより迅速に解決することができる。しかし、ＤＮＳサーバが返すＩＰアドレスは、実際は、最終宛先ではなく、foo.comで開始する名前を解決する責任を有する仮想名前サーバ（エレメント４６０）のＩＰアドレスである。
【００３３】
次に、ステップ４０４で、プロキシ４２０は、http://foo.com/a/b/cにアドレス指定したメッセージを、1.2.3.5（エレメント４６０）の名前ルータに送り、加速情報を要求する。
【００３４】
第３に、仮想名前の各コンポーネントを異なる名前ルータによって解決およびルーティングすることができるという想定を思い出すと、アドレス1.2.3.5（エレメント４６０）の名前ルータは、そのルーティングテーブル中に/aコンポーネントをルックアップして、そのメッセージを1.2.3.6（エレメント４６１）の名前ルータにルーティングしなければならないと判断する。名前ルータ４６０は、メッセージを1.2.3.6の名前ルータに転送し、foo.com/aを1.2.3.6に解決するべきであるというクライアント加速情報をエレメント４６０（ステップ４０７）に送り返す。エレメント４６０は、この情報をステップ４０５のクライアントに返す。クライアントは、この中間解決を将来の利用のためにキャッシュに入れる。
【００３５】
1.2.3.6（エレメント４６１）の名前ルータは、/bコンポーネントをルックアップして、メッセージをＩＰアドレス1.2.3.7の名前ルータ４６２にルーティングしなければならないと判断する。名前ルータ４６１は、メッセージを1.2.3.7の名前ルータに転送し、foo.com/a/bを1.2.3.7に解決するべきであるという加速情報を返す。さらに、前と同じように、部分的名前解決情報が逆の経路でクライアントに送り返され、経路中の各名前ルータはこの部分的解決結果をキャッシュに入れることができる。
【００３６】
アドレス1.2.3.7の名前ルータ４６２は、/cコンポーネントをルックアップして、エンドポイント４５０（例えば、1.3.5.7）の物理アドレスを得る。名前ルータ４６２は、通信エンドポイント４５０にメッセージを転送し、foo.com.a/b/cを1.3.5.7に解決するべきであるというクライアント加速情報を返す。したがって、クライアント、および１つ以上の中間ノードの両方が、将来の利用のために部分的解決結果をキャッシュに入れることができる。この最終ルーティング、それどころかどのような中間ルーティングも、解決テーブルの内容、およびいずれかの適用ポリシー（ポリシーに関する詳細は、後述の説明を参照されたい）に応じて、メッセージが２つ以上のエンドポイントに送られるという結果をもたらすことができることに再度、注目されたい。
【００３７】
上記の仮想ネットワーク名の例では、ＨＴＴＰネットワークプロトコルの使用を表す「http:」スキームを使用しているが、どの中間通信エンドポイントも、異なるプロトコルを使用してもメッセージを転送することができる。例えば、/bコンポーネントの物理アドレスは、メッセージの最終的送達にＳＯＡＰネットワークプロトコルを使用することを表すsoap://1.3.5.7でもよい。途中でプロトコルを切り替え、任意のネットワークプロトコルを介してアクセス可能な通信エンドポイントのどれにもアクセスすることができるこの能力は、当技術分野における大きな進歩である。この関連で、各名前ルータは、１つ以上のプロトコルコンバータを含むことができ、したがって、あるプロトコル（例えば、ＨＴＴＰ）を使って受け取ったメッセージを、発信元クライアントによるアクションを全く必要とせずに、ルーティングプロセス中に別のプロトコルに変換することができる。
【００３８】
ルーティング情報および決定プロセスは、ハードウェアまたはソフトウェアに実装することができるので、メッセージのＶＮＮへのルーティングをワイヤスピードで行うことができる。
図５は、１つ以上のクライアント５０１および１つ以上の名前ルータ５０３，５０４，５０５の間で、ファンクションおよびデータをどのように分割することができるかをより詳細に示す。クライアントコンピュータ５０１は、アプリケーションプログラム５０７、または仮想エンドポイントにメッセージを送る必要がある他のプロセスを含む。アプリケーション５０７は、名前解決およびメッセージサービス５０８を使って（例えば、アプリケーションプログラミングインタフェースまたはＡＰＩを使って）、仮想エンドポイントにメッセージを送る。上述のように、仮想名前は、「Bob」などの任意に構成した名前、またはhttp://bob.com/a/b/c/などのＵＲＬを拡張した名前を含むことができる。図５に示す実施形態では、名前解決およびメッセージサービス５０８は、図４のプロキシ４２０のファンクションを含む。名前解決キャッシュ５０６は、メッセージがルーティングされた複数の仮想名前それぞれの部分的に解決されたプレフィックスを含む。
【００３９】
一実施形態では、名前ルータ５０３などの各名前ルータは、仮想名前テーブル５０９（リレーショナルデータベースなどのデータベースに記憶することができる）、解決された名前プレフィックスを記憶するキャッシュ５１０、マッピングポリシーファンクション５１１（後述する）、１つ以上のプロトコルコンバータ５１２、変更通知ファンクション５１３、および名前生成ファンクション５１４を含む。仮想名前テーブル５０９およびキャッシュ５１０は、上述のように動作する。マッピングポリシー５１１は、後に詳述するように、任意選択で各名前解決プロセスにポリシーを適用する。プロトコルコンバータ５１２は、必要に応じて、メッセージを転送するときにプロトコルを変換する。変更通知ファンクション５１３は、後に詳述するように、名前ルータ間の仮想名前テーブルマッピングへの変更の通知を送信する。このファンクションは、ＡＰＩ、ユーザインタフェース、および／または遠隔からのマッピングへの変更を可能にするメッセージインタフェースを含むことができる。後に詳述するように、マッピングに変更を施すことにより、処理ファンクションを移動し、他の操作を実行することができる。
【００４０】
一般に、各名前ルータは、仮想エンドポイントに向けられたメッセージを受け取り、その名前の一部または全部を解決し、その部分的に解決された名前に相当する次の名前ルータにメッセージを転送し、（任意選択で）発信元クライアントに加速情報を返す。任意の長さの複雑なＵＲＬを拡張した名前を、従来はＤＮＳに実装されている強制的な単一レベルの名前解決ではなく、複数の名前ルータによって断片的に解決することができる。
【００４１】
メッセージルーティングおよび加速へのポリシーの適用
第２のグループの機能は、ルーティングプロセスのどのステップにおいてもポリシーを適用できる能力を含む。ポリシーは、ＶＮＮに送信するクライアントに関するある知識、またはメッセージ自体の内容に関するある知識を使用する、どのようなルーティングの挙動も指定することができる。ポリシーの条件には、以下に基づく解決が含まれるが、以下のみに限定されるわけではない。
【００４２】
１．クライアントの識別（例えば、名前、または特定のＩＰアドレス）
２．クライアントのＤＮＳドメイン（例えば、「.com」「.org」または「foo.com」）
３．クライアントの帯域幅
４．クライアントのトラストドメイン（例えば、データセンタ中の別のマシンに結合されている、データセンタ中のマシンから発信されるメッセージ）
５．クライアントのアクセスレベル（例えば、メッセージ中にコード化することができ、そのクライアントが支払っている顧客であるかどうかに依存させることができ、それによって高速サーバにルーティングすることができる。）
６．所期の宛先または要求するアクションなどのメッセージヘッダ
７．署名またはメッセージペイロードなどのメッセージコンテンツ
メッセージは、どのような条件の組み合わせでも、ルーティングすることができる。
【００４３】
メッセージの送付元のドメインに応じて、異なる通信エンドポイントにルーティングすることができる。例えば、blip.com内のコンピュータから、http://foo.com/a/b/cにメッセージを送るクライアントは、上記のような解決を得る可能性があるが（この場合、エンドポイントは物理アドレス1.3.5.7で識別される）、baz.ukというＤＮＳドメインから同じアドレスを解決するクライアントは、次のようにルーティングされる可能性がある。
【００４４】
foo.com→l.2.3.5
/a→4.3.2.1
/b→4.3.2.3
/c→7.5.3.1
ここで、アドレス、4.3.2.1、4.3.2.3、および7.5.3.1は、ある意味で、アドレス1.2.3.6、1.2.3.7、および1.3.5.7よりもbaz.ukというＤＮＳドメインに近い。この機能は、例えば、地理的に異なる場所に配置されているミラーサーバと、特定のエンドポイントにサービスを要求するクライアントは、そのクライアントの発信アドレス（例えば、ＩＰアドレスまたはドメイン）に応じて、異なる物理マシンにルーティングされる。
【００４５】
これらのポリシーには、所与のコンポーネントを解決することをまったく拒否することを含めることも可能であり、これによって、管理者（例えば）は、所与の組織内からのみ到達することが可能なＶＮＮを提供することができる。上記の基準のいずれに基づいても、または他の基準に基づいても、加速データを選択的に返すことができる。このようにしてポリシーを適用すると、ドメイン名と保護リソースの間に不可知の数の名前ルータを置くことができるので、所与のリソースが様々な形のハッキングを受ける可能性を著しく低減することができる。上記のポリシー適用例は、ルーティングの唯一やむを得ず公開する部分が、ドメイン名を、そのドメイン名に関連する仮想名前サーバに解決することだけであるため、ハッカーは、リソースがどこにあるのかを推測することさえできないことを示す。
【００４６】
図６は、図３の仮想名前解決プロキシ３０８などのプロキシによって実行することができるステップを含む方法を示す。ステップ６０１で、プロキシは、メッセージおよび仮想名前アドレスを受け取る。ステップ６０２で、そのアドレスが拡張したＵＲＬアドレスであるかどうかの判定がなされる。そうである場合は、ステップ６０３が実行され、第１のレベルの名前ルータのＩＰアドレスを得るために従来のＤＮＳクエリが実行される。そうでない場合は、ステップ６０４で、デフォルト名前ルータが使用される（例えば、ＩＰアドレス、またはデフォルト名ルータを既知のＩＰアドレスにマップするデフォルトテーブル）。
【００４７】
ステップ６０５で、ステップ６０４またはステップ６０３のいずれかで得られた名前ルータのアドレスに、メッセージが送られる。ステップ６０６で、下流側の名前ルータによって提供されたいずれかの名前解決の結果が、キャッシュに入れられる。図６に明確には示していないが、このキャッシュを調べて、図５のキャッシュ５０６で示すように、メッセージ（例えば、いわゆる「加速データ」）を名前ルータに送るのではなく、仮想ネットワーク名の全部または一部を解決するようにすることができる。
【００４８】
図７は、図５の名前ルータ５０３、５０４、５０５などの名前ルータによって実行することができるステップを含む方法を示す。ステップ７０１で、メッセージは、送信されるべき先のネットワーク名とともに名前ルータで受け取られる。ステップ７０２で、図４に関連して上記に説明したように、ローカルの仮想名前テーブルを調べて、その名前の一部（および、任意選択でプロトコルも）をルックアップする。
【００４９】
ステップ７０３で、いずれかのポリシーが適用され、必要であれば、上記に概説した原理を使って、ルーティングの決定に修正がなされる。これには、例えば、クライアントの識別に基づいて、異なるロケーションにメッセージをルーティングすることを含めることができる。ステップ７０４で、必要であれば、プロトコルの変換がなされる。最終的に、ステップ７０５で、部分的に解決されたアドレスに相当する名前ルータにメッセージが送られ、適用可能であれば、加速データがクライアントに返される。
【００５０】
名前空間管理アクションに関する通知
一実施形態では、このシステムには、ＶＮＮへの変更に関する通知を生成および配布する能力を含めることができる。名前ルータ上の各管理ファンクション（新しい名前コンポーネントの追加、古い名前コンポーネントの削除、既存の名前コンポーネントの変更）は、他の名前ルータに配布することができる通知を生成することができる。
【００５１】
例えば、あるオンラインマガジンが、発行後、６ヶ月経つとその内容を自由に利用できるようにするが、６ヶ月以内の内容については購読を要求すると仮定する。このオンラインマガジンは、本発明の原理を利用して、www.onlinemagazine.com/subscriptionには現在の内容すべてを、www.onlinemagazine.com/freeには無料の内容すべてを保持することができる。所与の月の内容（例えばwww.onlinemagazine.com/subscription/may2OOl）が無料になると、このマガジンの名前はwww.onlinemagazine.com/subscription/may200lからwww.onlinemagazine.com/free/may200lに変わる。この場合、www.onlinemagazine.com/freeへの変更に対して申し込みを行っているクライアントには、２００１年５月の内容が利用できるようになったことを知らせる。
【００５２】
自動名前生成および削除
本発明のこの態様の様々な機能には以下が含まれる。
【００５３】
１．名前ルータの、一時ＶＮＮを生成し、それらを物理アドレスにマップする能力
２．名前ルータの、あるキーに基づきＶＮＮを生成する能力
３．名前ルータの、ＶＮＮにデフォルト経路を提供する能力
名前ルータは、要求があると、自動的に一意のＶＮＮコンポーネントを生成する。このような一意のコンポーネントには、乱数発生器、時刻パラメータ、ハッシュ値などを利用することができる。
【００５４】
例えば、管理者が、ＶＮＮを介して到達することが可能な新しい通信エンドポイントを名前空間www.foo.com/aに公開しているとする。この管理者は、www.foo.com/aというＶＮＮを供給する名前ルータに、一意かつ未使用の名前を要求することができる。管理者がサーバに要求を出すと、サーバは、www.foo.com/a/uniquenamel2345を返してくる。管理者は、次いで、その新しい名前をマップする先の物理アドレスを名前ルータに知らせる。
【００５５】
名前ルータは、キーに基づいて一意のＶＮＮコンポーネントを生成することもできる。例えば、管理者が、ユーザに割り当てられた一意のＩＤに基づいてＶＮＮコンポーネントを提供して、名前ルータが、ユーザのＩＤに基づいてセキュリティポリシーを所与の名前に提供できるようにしたいとする。したがって、管理者は、ユーザのＩＤに基づいて一意の名前を要求し、その新しい名前をマップする先の物理アドレスを名前ルータに知らせる。メッセージがその新しい名前に送られると、名前ルータは、送信者のＩＤを使って、その送信者が新しい名前へのアクセス権を持っているかどうかを判定する。
【００５６】
名前ルータは、ＶＮＮにデフォルト経路を提供することもできる。例えば、管理者が、www.foo.com/a/specialnameを特別な処理のための物理アドレス2.3.4.5にルーティングし、他のすべての/a以下のコンポーネントについては、通常の処理のための物理アドレス2.4.6.8にルーティングしたいとする。管理者は、/a/*のデフォルト経路を2.4.6.8に設定し、/a/specialnameの経路を2.3.4.5に設定すればよい。したがって、/a以下にどのような名前を作ろうと、それらは2.4.6.8にルーティングされる。
【００５７】
本発明を、本発明を実施するための現在のところ好ましい方式を含む、特定の例に関して説明してきたが、当業者は、頭記の特許請求の範囲に記載される本発明の趣旨および範囲に含まれる、前述のシステムおよび技術の変更形態および代替形態が多数あることを理解されよう。本明細書に記載の方法ステップのいずれも、また、図中に示すファンクションのいずれも、コンピュータソフトウェアで実装することができ、また、汎用または専用コンピュータ中で実行できるようにコンピュータ可読媒体上に記憶することができる。すべてのファンクションおよび方法ステップは、プロセッサ、メモリ、ネットワーク接続、および適切な入出力装置を含む１台以上のコンピュータ上に実装することができる。本明細書で使用している様々な区切り文字（例えば「/」および「:」）は、説明のためだけのものであり、請求項中でこのような区切り文字に触れていても、それは、例示した特定のシンタックスを制限することを意図したものではない。
【図面の簡単な説明】
【図１】従来のＤＮＳ名前解決スキームを示す図である。
【図２】本発明の様々な態様によるシステムを示す図である。
【図３】本発明の一変形形態によるクライアントサブシステムおよび仮想名前解決サブシステムを含むシステムを示す図である。
【図４】従来のドメイン名サーバ（ＤＮＳ）に加え、複数の仮想名前ルータを通過させることによって、ＵＲＬなどのネットワーク名をどのように解決することができるかを示す図である。
【図５】１つ以上のクライアント５０１および１つ以上の名前ルータ５０３，５０４，５０５の間で、ファンクションおよびデータをどのように分割することができるかをより詳細に示す図である。
【図６】プロキシまたはメッセージサービスによって実行することにより、メッセージを仮想エンドポイントにルーティングすることができるステップを示す図である。
【図７】１台以上の名前ルータによって実行することにより、仮想ネットワーク名を解決し、その仮想ネットワーク名に相当する通信エンドポイントにメッセージをルーティングすることができるステップを示す図である。
【符号の説明】
１０１、５０１  クライアントコンピュータ
１０２、２１０  ＤＮＳサーバ
１０３  ウェブサーバ、マシン
１０４  ウェブブラウザ
１０５  テーブル
１０６  ウェブページ（リソース）
１０７、１０９、４０２  要求
１０８、１１０、４０１、４０３、４０４、４０７、６０１、６０２、６０３、６０４、６０５、６０６、７０１、７０２、７０３、７０４、７０５  ステップ
２０１  クライアント
２０２、４６２、５０３、５０４、５０５  名前ルータ
２０３  通信エンドポイント
２０４、５０９  仮想名前テーブル
２０５  マッピングエントリ
２０９  メッセージ
３０１  サブシステム
３０２  仮想名前解決システム
３０３〜３０６  仮想名前ルータ
３０７  ドメイン名サービス
３０８  仮想名前解決プロキシ、仮想名前解決プロキシマシン
３０９  クライアントマシン
４２０  プロキシ、名前解決プロキシ
４４０  従来のドメイン名サーバ
４５０  エレメント、通信エンドポイント
４６０  仮想名前サーバ、エレメント
４６１  エレメント、名前ルータ
５０６  名前解決キャッシュ、キャッシュ
５０７  アプリケーションプログラム
５０８  名前解決およびメッセージサービス
５１０  キャッシュ
５１１  マッピングポリシーファンクション、マッピングポリシー
５１２  プロトコルコンバータ
５１３  変更通知ファンクション
５１４  名前生成ファンクション
【図１】
0004159337.tif 000002
【図２】
0004159337.tif 000003
【図３】
0004159337.tif 000004
【図４】
0004159337.tif 000005
【図５】
0004159337.tif 000006
【図６】
0004159337.tif 000007
【図７】
0004159337.tif 000008