(57)【要約】【課題】異なるインターネット通信スタック・インスタンスの間でデータ・パケットを経路指定するための方法及び装置を提供する。【解決手段】コンピュータ・システムは、一の共通ハードウェア・ネットワーク・アダプタを共有することもあり、共有しないこともある、複数のインターネット通信スタック・インスタンスを含む。パケットは、インターネット・プロトコル（ＩＰ）アドレッシングを使用して、コンピュータ・システム内の異なるインターネット通信スタック・インスタンスの間で内部的に経路指定される。１つのスタックに到着し且つ他のスタックに関連する一の宛先ＩＰアドレスを有する一のパケットは、ＩＰ転送を使用して、前記他のスタックに転送される。好ましくは、パケットのスタック間経路指定は、グローバルに定義されたインターネットＩＰアドレス又はローカルのイントラネット（カプセル化）ＩＰアドレスの何れかを使用し、インバウンド又はアウトバウンド・パケットに適用することができる。実施形態は、完全な範囲のＴＣＰ／ＩＰ機能を有する一のプロダクション・スタックと、制限された範囲のＴＣＰ／ＩＰ機能を有する一のサービス・スタックを備える。スタック間インタフェースは、サービス・スタックにバインドされたアプリケーションのために到着するパケット及び当該アプリケーションによって送信されるパケットについて、拡張機能動作を獲得するために使用することができる。【選択図】  図３
2009533915.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ・システムにして、
少なくとも１つのプロセッサと、
メモリと、
前記少なくとも１つのプロセッサ上で実行可能な複数の命令として具体化され且つ複数のプロセス・インスタンスの並行実行をサポートするオペレーティング・システムと、
前記少なくとも１つのプロセッサ上で実行可能な複数のアプリケーションと、
インターネットを経由する通信のためにデータ・パケットを送信する少なくとも１つのネットワーク・アダプタと、
第１及び第２のインターネット通信スタック・インスタンスとを備え、
前記各インターネット通信スタック・インスタンスが、前記複数のアプリケーションの少なくとも１つとそれぞれ関連し、
前記第１及び第２のインターネット通信スタック・インスタンスが、前記第１及び第２のインターネット通信スタックの間で少なくとも１つの方向にデータ・パケットを通信するための一のスタック間インタフェースをサポートし、
前記スタック間インタフェースを経由して通信される各データ・パケットが、当該データ・パケットに関連する一のインターネット・プロトコル（ＩＰ）アドレスに従って、前記スタック間インタフェースを経由して一の宛先インターネット通信スタックへ選択的に経路指定され、
前記ＩＰアドレスが、前記宛先インターネット通信スタックに関連する一のＩＰアドレスと一致する、コンピュータ・システム。
【請求項２】
前記第２のインターネット通信スタック・インスタンスが、前記第１のインターネット通信スタック・インスタンスによってサポートされない少なくとも１つのインターネット・プロトコル機能をサポートする、請求項１に記載のコンピュータ・システム。
【請求項３】
前記第２のインターネット通信スタック・インスタンスが、ユーザ・アプリケーションの汎用サポートのためのプロダクション・スタックであり、前記第１のインターネット通信スタック・インスタンスが、前記コンピュータ・システムの管理機能をサポートするためのサービス・スタックである、請求項２に記載のコンピュータ・システム。
【請求項４】
前記スタック間インタフェースが、前記第１及び第２のインターネット通信スタックの間のパケットの双方向通信をサポートする、請求項１ないし請求項３の何れか１項に記載のコンピュータ・システム。
【請求項５】
前記スタック間インタフェースを経由するデータ・パケット通信が、前記第１のインターネット通信スタック・インスタンス内の少なくとも１つのＩＰアドレスのＩＰ転送の宛先として、一の仮想ネットワーク・アダプタ装置ドライバを指定することにより実装され、前記仮想ネットワーク・アダプタ装置ドライバが、前記第２のインターネット通信スタック・インスタンスに対する一のインタフェースである、請求項１ないし請求項４の何れか１項に記載のコンピュータ・システム。
【請求項６】
前記第１及び第２のインターネット通信スタック・インスタンスが、一の共通ネットワーク・アダプタを共有し、前記共通ネットワーク・アダプタが、前記第１のインターネット通信スタック・インスタンスにバインドされる、請求項１ないし請求項５の何れか１項に記載のコンピュータ・システム。
【請求項７】
インターネット通信データ・パケットを経路指定するための方法にして、
コンピュータ・システム内の第１のインターネット通信スタック・インスタンスにおいて、複数のデータ・パケットを表すデータを受信するステップを含み、
前記各データ・パケットが、一のインターネット・プロトコル（ＩＰ）アドレスにそれぞれ関連し、
前記各データ・パケットの一の経路指定宛先を、そのＩＰアドレスからそれぞれ決定するステップを含み、
前記複数のデータ・パケットのうち少なくとも幾つかのデータ・パケットについては、それぞれの前記経路指定宛先が、前記コンピュータ・システム内の第２のインターネット通信スタック・インスタンスに対応し、
前記決定するステップが、前記第１のインターネット通信スタック・インスタンス内で実行され、
前記第２のインターネット通信スタック・インスタンスに対応する一のデータ・パケットの経路指定宛先を決定することに応答して、当該対応するデータ・パケットを前記第２のインターネット通信スタック・インスタンスに転送するステップを含む、方法。
【請求項８】
前記受信するステップで受信された前記複数のデータ・パケットのうち少なくとも幾つかのデータ・パケットが、前記コンピュータ・システムによってインターネットからインバウンド通信として受信されたデータ・パケットである、請求項７に記載の方法。
【請求項９】
前記受信するステップで受信された前記複数のデータ・パケットのうち少なくとも幾つかのデータ・パケットが、前記コンピュータ・システム上で内部的に実行中の少なくとも１つのアプリケーションから、インターネットを介して送信すべきアウトバウンド通信として受信されたデータ・パケットである、請求項７又は請求項８に記載の方法。
【請求項１０】
前記第１及び第２のインターネット通信スタック・インスタンスの何れか一方において、前記複数のデータ・パケットのうち少なくとも幾つかのデータ・パケットについてカプセル化機能を実行するステップをさらに含み、
前記カプセル化機能が、（ａ）第１のＩＰアドレスを有する第１のデータ・パケットを第２のＩＰアドレスを有する第２のデータ・パケット内にカプセル化すること、及び（ｂ）第１のＩＰアドレスを有し且つ以前にカプセル化された第１のデータ・パケットを第２のＩＰアドレスを有する第２のデータ・パケットの内部から抽出することの１つである、請求項７ないし請求項９の何れか１項に記載の方法。
【請求項１１】
前記カプセル化機能を実行するステップが、前記対応するデータ・パケットを前記第２のインターネット通信スタック・インスタンスに転送するステップの後に、前記第２のインターネット通信スタック・インスタンスによって実行され、
前記方法が、
前記カプセル化機能を実行した後に、前記各データ・パケットの経路指定宛先を、当該データ・パケットのＩＰアドレスからそれぞれ決定するステップをさらに含み、
前記複数のデータ・パケットのうち少なくとも幾つかのデータ・パケットについては、それぞれの前記経路指定宛先が、前記コンピュータ・システム内の前記第１のインターネット通信スタック・インスタンスに対応し、
前記決定するステップが、前記第２のインターネット通信スタック・インスタンス内で実行され、
前記第１のインターネット通信スタック・インスタンスに対応する一のデータ・パケットの経路指定宛先を決定することに応答して、当該対応するデータ・パケットを前記第２のインターネット通信スタック・インスタンスに転送するステップをさらに含む、請求項１０に記載の方法。
【請求項１２】
前記第１及び第２のインターネット通信スタック・インスタンスが、一の共通ネットワーク・アダプタを共有し、前記共通ネットワーク・アダプタが、前記前記第１及び第２のインターネット通信スタック・インスタンスのうち何れか一方にだけバインドされる、請求項７ないし請求項１１の何れか１項に記載の方法。
【請求項１３】
信号担持媒体に記録された複数のコンピュータ実行可能命令を備え、
前記命令が、コンピュータ・システムによって実行されるとき、前記コンピュータ・システムに、インターネット通信データ・パケットを経路指定する方法の各ステップを実行させるコンピュータ・プログラム製品にして、
前記方法が、
（ａ）前記コンピュータ・システム内に複数のインターネット通信スタック・インスタンスを維持するステップと、
（ｂ）前記複数のインターネット通信スタック・インスタンスのうち少なくとも幾つかのインターネット通信スタック・インスタンスの間で少なくとも１つの方向に複数のデータ・パケットを通信するための一のスタック間インタフェースを提供するステップとを含み、
前記各データ・パケットが、一のインターネット・プロトコル（ＩＰ）アドレスにそれぞれ関連し、
（ｃ）第１のインターネット通信スタック・インスタンスにおいて、前記各データ・パケットの経路指定宛先を、当該データ・パケットのＩＰアドレスからそれぞれ決定するステップを含み、
前記複数のデータ・パケットのうち少なくとも幾つかのデータ・パケットについては、それぞれの前記経路指定宛先が、前記スタック間インタフェースに対応し、
（ｄ）前記決定するステップ（ｃ）の対象となる前記各データ・パケットごとに、当該データ・パケットの経路指定宛先が前記スタック間インタフェースに対応する場合は、当該データ・パケットを前記第１のインターネット通信スタック・インスタンスから前記スタック間インタフェースを介して前記コンピュータ・システム内の第２のインターネット通信スタック・インスタンスへ経路指定するステップを含む、コンピュータ・プログラム製品。
【請求項１４】
前記スタック間インタフェースが、前記第１及び第２のインターネット通信スタックの間のパケットの双方向通信をサポートする、請求項１３に記載のコンピュータ・プログラム製品。
【請求項１５】
前記スタック間インタフェースを介して前記第２のインターネット通信スタック・インスタンスへ経路指定される前記複数のデータ・パケットのうち少なくとも幾つかのデータ・パケットが、前記コンピュータ・システムによってインターネットからインバウンド通信として受信されたデータ・パケットである、請求項１３又は請求項１４に記載のコンピュータ・プログラム製品。
【請求項１６】
前記スタック間インタフェースを介して前記第２のインターネット通信スタック・インスタンスへ経路指定される前記データ・パケットのうち少なくとも幾つかのデータ・パケットが、前記コンピュータ・システム上で内部的に実行中の少なくとも１つのアプリケーションから、インターネットを介して送信すべきアウトバウンド通信として受信されたデータ・パケットである、請求項１３に記載のコンピュータ・プログラム製品。
【請求項１７】
前記命令が、前記コンピュータ・システムに、
（ｅ）前記第１及び第２のインターネット通信スタック・インスタンスの何れか一方において、前記複数のデータ・パケットのうち少なくとも幾つかのデータ・パケットについてカプセル化機能を実行するステップをさらに実行させ、
前記カプセル化機能が、（ａ）第１のＩＰアドレスを有する第１のデータ・パケットを第２のＩＰアドレスを有する第２のデータ・パケット内にカプセル化すること、及び（ｂ）第１のＩＰアドレスを有し且つ以前にカプセル化された第１のデータ・パケットを第２のＩＰアドレスを有する第２のデータ・パケットの内部から抽出することの１つである、請求項１３ないし請求項１６の何れか１項に記載のコンピュータ・プログラム製品。
【請求項１８】
前記ステップ（ｅ）が、前記ステップ（ｄ）の後に、前記第２のインターネット通信スタック・インスタンスによって実行され、
前記命令が、前記コンピュータ・システムに、
（ｆ）前記ステップ（ｅ）を実行した後に、前記ステップ（ｅ）の対象となる前記各データ・パケットごとに、当該データ・パケットの経路指定宛先をそれぞれ決定するステップを実行させ、
前記複数のデータ・パケットのうち少なくとも幾つかのデータ・パケットについては、それぞれの経路指定宛先が、前記スタック間インタフェースに対応し、
前記命令が、前記コンピュータ・システムに、
（ｇ）前記決定するステップ（ｆ）の対象となる前記各データ・パケットごとに、当該データ・パケットの経路指定宛先が前記スタック間インタフェースに対応する場合は、当該データ・パケットを前記第２のインターネット通信スタック・インスタンスから前記スタック間インタフェースを介して前記第１のインターネット通信スタック・インスタンスへ経路指定するステップをさらに実行させる、請求項１７に記載のコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタル・データ処理に係り、さらに詳細に説明すれば、コンピュータ・システム内のＴＣＰ／ＩＰスタックのようなインターネット通信スタックの使用に係る。
【背景技術】
【０００２】
２０世紀の後半部分では、情報革命として知られている現象が始まった。この情報革命は、任意の１つのイベント又はマシンよりも広い範囲の歴史的発展であるが、デジタル電子コンピュータ以外のどんな単一デバイスも、この情報革命を表すに至っていない。コンピュータ・システムの開発は、確かに革命であった。毎年、コンピュータ・システムは、より速く成長し、より多くのデータを格納し、ユーザにより多くのアプリケーションを提供した。同時に、コンピューティング資源のコストが一貫して減少し、その結果、数年前には極めて高価についた情報を収集し、格納し、処理するという操作を、今や、コンピュータを介して経済的に実施できるようになった。情報処理のコストの減少は、生産性を雪だるま式に向上させるように作用する。なぜなら、製品の設計、製造プロセス、資源スケジューリング、管理業務等をより効率的に行うことができるようになるからである。
【０００３】
情報処理のコストの減少及びデジタル装置の一般的な使用可能性は、かかる装置内に格納される情報の量の爆発をもたらした。これほど多くの情報がデジタル形式で格納されると、当然のことながら、コンピュータ・システムから情報に対する広範囲のアクセスを獲得することが望ましい。情報の量は、任意の１つの装置のストレージ能力を小さくする。情報アクセスを改良するために、複数のコンピューティング装置が互いに通信し且つ情報を交換することを可能にするための種々の技術が開発された。恐らく、かかる分散コンピューティングの最も顕著な例は、ワールド・ワイド・ウェブ（単に「ウェブ」とも称する）、すなわちインターネットを使用して世界の至る所で利用可能にされる資源の集合である。学童から高齢者までの人々が、ウェブを使用することを学んでおり、それぞれの家又は勤務場所の設備から殆ど無限の各種情報を見つけている。企業、政府、団体及び普通の個人でさえ、知る価値があるものは何でもウェブ上のどこかで利用可能であるという現今の期待を反映して、情報をウェブ上で利用可能にしている。
【０００４】
インターネットは、ウェブのサポートを提供するだけでなく、複数のデジタル・システム間の電子メール及び他の形式の通信及び分散処理のサポートを提供するための、複数のリンクによって接続されたデジタル装置（ノード）の異機種ネットワークであり、当該ネットワークの任意の２つのノード間には、複数のパスが存在するのが普通である。その結果、インターネットには、或る程度の冗長性が存在する。データは、パケットの形式で送信され、各パケットは、その宛先に到着するまで、複数の連続するノードを経由して経路指定される。インターネットに結合された任意の２つのノード間の通信をサポートするために、グローバルな命名規則を使用して、各ノードに一意的な名前が割り当てられる。この命名規則は、ドメイン・ネーム・システム又はＤＮＳとして知られている。インターネットに接続され且つ宛先ノードのグローバルＤＮＳ名だけを有する発信ノードは、一のデータ・パケットを当該宛先ノードに送信することができる。種々のＤＮＳサーバ及び他の装置は、当該グローバルＤＮＳ名を一のインターネット・プロトコル（ＩＰ）アドレスに変換することにより、インターネット上の種々のルータ及び他の装置が、当該データ・パケットの最終的な宛先ノードに至るまでのパスを正確に決定することを可能にする。
【０００５】
パケットを経路指定する基本レベルにおいて、インターネットは、任意のデータを１つのノードから他のノードに転送することができ、従ってこれを一の通信媒体として見なすことができる。しかし、インターネットの有用性は、発信及び宛先ノードにおいてデータ交換を処理する、アプリケーションに依存する。ウェブ・ブラウザ及び他のウェブ・アプリケーションの出現は、高度なコンピュータ・プログラミング・スキルを持っていない人々に対し、基本的な情報転送技術を個別に且つ対話的に使用可能にすることにより、インターネットの用途を非常に拡大した。
【０００６】
インターネットに接続されたコンピュータ・システム内では、１セットの低レベル・プロセスが、インターネット接続からインバウンド・データ・パケットを受信し、これらのパケット内のデータを組み立て、当該データを１つ以上の上位レベルのアプリケーションに提供し、同様に上位レベルのアプリケーションからアウトバウンド・メッセージ、ファイル又は類似の構造を受信し、かかる各構造を具体化した１つ以上のアウトバウンド・データ・パケットを構築し、当該データ・パケットをアドレスし、当該データ・パケットをインターネット接続を経由して送信する。本明細書では、これらのプロセスを、インターネット通信スタック又はＴＣＰ／ＩＰスタックと称する。ＴＣＰ／ＩＰは、伝送制御プロトコル／インターネット・プロトコルを表す周知の頭字語である。
【０００７】
インターネット通信スタック又はＴＣＰ／ＩＰスタック（又は「スタック・インスタンス」）は、前述の低レベルのインターネット通信機能を実行するためのコンピュータ・プログラミング・コードのプロセス・インスタンス化である。種々の理由のうち任意の理由で、単一のコンピュータ・システムにおいて複数のインターネット通信スタックを採用することが望ましい場合がある。これらの複数のインターネット通信スタックは、必ずしも必要というわけではないが、同じ基礎的なＴＣＰ／ＩＰ、その同じ部分又は他のコンピュータ・プログラミング・コードを使用する。しかし、各インターネット通信スタックは、それ自体の独立の状態データを有し、そしてそれ自体のＩＰアドレス（又は１セットのＩＰアドレス）を有するであろう。
【０００８】
かかる複数のインターネット通信スタックを使用する１つの例に相当するコンピュータ・システムは、ユーザの代わりに有用なアプリケーションを実行するための１つ以上のスタック（本明細書では、これを「プロダクション・スタック」と称する）と、当該コンピュータ・システム自体を遠隔的に管理し、保守し且つ制御するタスク用の１つ以上の別個のスタック（本明細書では、これを「サービス・スタック」と称する）とを有する。種々の理由で、ユーザ・アプリケーションをシステム管理機能から分離することが望ましいことがある。例えば、プロダクション・スタックが過負荷になるか又は動作不能になったとしても、システム保守及び制御動作は、サービス・スタックを通して実行することができる。すなわち、並行保守等は、プロダクション・スタック内で進行中の動作を妨げることなく、サービス・スタックを通して実行することができる。
【０００９】
各インターネット通信スタックは、必ず、管理用プロトコルに従って、ネットワーク通信に必要な特定のコア機能を実行するが、必要に応じて、種々の拡張又はオプション機能のうち任意の機能をも実行することができる。プロダクション・スタック及び別個のサービス・スタックのように、コンピュータ・システムが複数のインターネット通信スタックを含む場合、これらの複数のスタックの間で少なくともある程度のコア機能が重複する。しかし、拡張又はオプション機能は、必ずしも重複しない。というのは、かかる重複は、追加の資源を必要とするため、これらの機能が、全てのスタックで利用可能であるとは限らないからである。もし、通信を処理するための拡張機能をサポートしない一のスタック内で、当該拡張機能にアクセスする必要があれば、データをローカル・エリア・ネットワーク（ＬＡＮ）接続を介して他のスタックへ経路指定することにより、当該他のスタック内の機能を呼び出すことが可能である。あいにく、この解決方法は、理想的なものではない。この解決方法は、前記ＬＡＮ上のネットワーク資源を消費するばかりか、各スタックは、かかる動作を実行するためにそれ自体の専用のネットワーク・アダプタを必要とするからである。
【００１０】
さらに、異なるインターネット通信スタックに関連するポートを定義し且つ指定されたポートをデータの宛先として使用することにより、当該異なるスタックの間でデータを内部的に経路することが可能である。ポート転送（port forwarding）は、単一のアダプタを両方のスタックによって共有することを可能にする。しかし、幾つかのデータ・パケットは、ポート指定を含まない（又はこれらのポートがアクセス可能でない）から、ポート転送は、必ずしも利用可能であるとは限らない。例えば、特定のパケット内のデータが仮想プライベート・ネットワーク内で使用するために暗号化されている場合、当該ポートも暗号化されるから、当該ポートを、通常のポート転送を使用するスタック間経路指定（inter-stack routing）のために使用することができない。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
前述の従来技術の特定の欠点を解決するように、コンピュータ・システム内のインターネット通信スタックの間でデータを通信するための改良された技術を提供することが望ましいであろう。特に、ＬＡＮ上に追加のトラヒックを課さず、単一のハードウェアＬＡＮアダプタの共有をサポートし、そしてインターネット通信プロトコルをサポートする既存のソフトウェアに容易に統合される、スタック間通信機構を提供することが望ましいであろう。
【課題を解決するための手段】
【００１２】
一のコンピュータ・システム内に含まれる複数のインターネット通信スタック・インスタンスは、一の共通ハードウェア・ネットワーク・アダプタを共有するか、又は別個のそれぞれのハードウェア・ネットワーク・アダプタに関連することができる。前記複数のスタック・インスタンスのためにシステム内部の一のソフトウェア通信パスが定義され、それにより、インターネット・プロトコル（ＩＰ）アドレッシングを使用して、当該コンピュータ・システム内の異なるインターネット通信スタック・インスタンスの間でパケットが経路指定される。１つのスタックに到着し且つ他のスタックに関連する宛先ＩＰアドレスを有する一のパケットは、ＩＰ転送（IP forwarding）を使用して他のスタックに転送される。
【００１３】
推奨実施形態では、パケットのスタック間経路指定は、グローバルに定義されたインターネットＩＰアドレス又はローカルのイントラネット（カプセル化）ＩＰアドレスの何れかを使用し、インバウンド又はアウトバウンド・パケットに適用することができる。例えば、一のインバウンド・パケットについては、これが第１のスタックに到着し、グローバルＩＰアドレスを使用して第２のスタックに転送され、そしてローカルのイントラネットＩＰアドレスを使用して第１のスタックに再転送されることが可能である。さらに、一のアウトバウンド・パケットについては、これが第１のスタックに到着し、ローカルのイントラネットＩＰアドレスを使用して第２のスタックに転送され、そしてグローバルＩＰアドレスを使用して第１のスタックに再転送されることが可能である。他の複数の使用法も可能である。
【００１４】
推奨実施形態の例示的な環境では、第１のスタックは、汎用コンピュータ・システム内で種々のユーザ・アプリケーションをサポートするための完全な範囲のＴＣＰ／ＩＰ機能を有するプロダクション・スタックであり、第２のスタックは、制限された範囲のＴＣＰ／ＩＰ機能を有するサービス・スタックである。サービス・スタックは、主として、遠隔コンソールからのシステム制御、並行保守動作等をサポートするために存在する。前記スタック間インタフェースは、サービス・スタックにバインドされたアプリケーションのために到着するパケット及び当該アプリケーションによって送信されるパケットについて拡張機能動作を獲得するために使用することができる。
【００１５】
推奨実施形態の１つの変形では、前記スタック間インタフェースは、複数のスタックにより一の共通ハードウェア・ネットワーク・アダプタを共有することをサポートするためにも使用することができる。前記スタック間インタフェースは、共有を選択的にイネーブル又はディセーブルするためのスイッチとして動作することができる。他の変形では、前記スタック間インタフェースは、定期保守がプロダクション・スタック上で実行されている間に、データをバックアップ・スタック・インスタンスに一時的に再経路指定するために使用することができる。
【００１６】
このように、本発明は、ＩＰアドレッシングを使用する簡単な内部的スタック間インタフェースを提供することにより、ネットワークの機構を使用することなく、しかもスタック間通信を処理すべき特別のソフトウェアの開発コスト又は全てのスタック・インスタンス内に所望レベルの機能を提供することなく、スタック間通信を実行することを可能にする
【発明を実施するための最良の形態】
【００１７】
＜インターネットの概要＞
本発明の実施形態の動作を説明する前に、インターネットの概要を簡単に説明する。
【００１８】
「インターネット」という用語は、「インターネットワーク」の短縮版であって、一般に、コンピュータ・ネットワーキングの分野では周知のＴＣＰ／ＩＰ及び関連する１組のプロトコルを利用する、コンピュータ・ネットワークの集合を意味する。ＴＣＰ／ＩＰは、「伝送制御プロトコル／インターネット・プロトコル」の頭字語であって、コンピュータ間の通信を促進するソフトウェア・プロトコルを指す。
【００１９】
図１は、インターネットの高水準の概念図である。インターネットは、予め確立されたトポロジを有しておらず、新しいノード及びリンクを追加することにより無限に拡張可能である。一のノードは、当該ノードを他のノードに接続する任意の数のリンクを有し、これらのリンクは、種々のデータ容量及び他の特性を有する、種々の通信技術のうち任意のものを使用することができる。従って、インターネットのトポロジは、非常に複雑な相互接続ネットワークになるため、任意の２つのノード間に多数の可能なパスが存在するのが普通である。
【００２０】
「バックボーン」とも呼ばれるネットワークの中心部は、データ・パケットを受信し且つこれらのデータ・パケットをネットワーク内の他のノードに転送する、複数の高速ルータ１０１を含む。一般に、各ルータは、他のルータに対する複数の接続を有し、これらの接続は高いデータ容量を有する。例えば、高速ルータ１０１間では、光ファイバ・リンクが使用されることが多い。高速ルータ１０１に接続された図１のアクセス・ノード１０２は、高速ルータ１０１のインターネット「バックボーン」に対するアクセス・ポイントとして機能する。また、アクセス・ノード１０２は、高速ルータ１０１と他のネットワーク・ノードとの間でデータ・パケットを経路指定するように機能するためのルータでもあるが、より低速の接続を利用することが多い。例えば、アクセス・ノード１０２は、電話回線又は他の接続を通してインターネットへのアクセスを有料で提供する公衆インターネット・サービス・プロバイダであるか、又は大企業の内部システム用のアクセス・ノードである。通常、各アクセス・ノード１０２は、冗長性を提供するために複数の高速ルータ１０１に接続するが、これは必要条件ではない。一般に、各アクセス・ノード１０２は、複数のホスト・コンピュータ・システム（以下「ホスト・システム」と表記）１０３へのアクセスを提供する。図１には、そのうち２つのホスト・システム１０３Ａ及び１０３Ｂだけが図示されている。ホスト・システム１０３は、インターネットに接続し、発信元としてデータ・パケットを生成するか、又は最終的な宛先としてインターネットを介して送信されるデータ・パケットを受信するコンピュータ・システムである。ホスト・システム１０３は、大型のメインフレーム・システムからＰＣ又は携帯型のハンドヘルド装置にまで及ぶ、任意のタイプのコンピュータ・システムとすることができる。また、単一のホスト・システム１０３は、複数システムのクラスタを表すことができる。しばしば、ホスト・システム１０３は、インターネットにアクセスするために使用すべき１つのアクセス・ノード１０２だけを有するが（その場合には、アクセス・ノード１０２は非冗長である）、冗長性のために複数のアクセス・ノード１０２を有することもできる。ホスト・システム１０３とアクセス・ノード１０２の間の接続は、（電話回線又は無線周波数リンクのような）比較的低速であることが多いが、これを高速リンクとすることもできる。大型のインターネット・サーバのように、主としてインターネットを介して情報を提供するように機能する幾つかのコンピュータ・システムの場合、ホスト・システム１０３は、高速ルータ１０１に直接的に接続され、従って、それ自体のアクセス・ノードとして機能することができる。
【００２１】
図１がインターネットの概念図であること、インターネット上のノード及び接続の実際の数は、図１に示すものよりも遙かに多いこと、そして接続のトポロジが変わり得ることを理解されたい。さらに、簡潔のために図１には示されていないが、接続のタイプ及びアクセスの形式のさらなる階層が存在し得ることを理解されたい。すなわち、複数のタイプ又はクラスのアクセス・ノード１０２が存在する場合、これを通して一のホスト・システム１０３がバックボーンの高速ルータ１０１に到達するように接続され、そして異なるホスト・システム１０３が異なるレベルのアクセス・ノード１０２に接続される、ということである。厳密に言えば、インターネットは、それに結合された全ての装置を含むから、ＰＣのような小型のコンピュータ・システムがインターネットにログオンされる場合、当該コンピュータ・システムは、一のインターネット・ノードになり、一時的であるにせよ一のインターネット・プロトコル（ＩＰ）アドレスを有するという意味で、インターネットの一部となる。しばしば、インターネット・バックボーンのルータ及び接続並びにアクセス・ノード１０２は、インターネットと呼ばれる。すなわち、インターネットは、コンピュータ・システムの分散処理ネットワークとは対照的に、一の通信媒体と見なされる。一般に、本明細書では、「インターネット」という用語を、後者の通信媒体を意味するものとして使用する。但し、文脈によっては、前者の意味で使用することもある。
【００２２】
任意のネットワーク内で１つのノードから他のノードにデータを通信するためには、送信ノードは、受信ノードの宛先を指定しなければならない。ローカル・エリア・ネットワークのような非常に小さなネットワークについては、当該ネットワーク内の全てのノードにデータをブロードキャストして、所望の受信側を簡単なアドレッシング方式で識別することが可能である。インターネットのサイズはかかるアプローチを非現実的にする。送信側が宛先を指定することが依然として必要であるが、宛先が見つかるまでネットワーク内の全てのノードにデータを送信することは現実的ではない。このことが意味するのは、データ・パケットがその宛先に到着するように、送信側と、送信側及び受信側の間の中間経路に存在する全てのノードとが、当該データ・パケットの経路指定先を決定できなければならない、ということである。中間経路内の全てのノードは、次の中間リンク上のパケットの経路指定先を決定できなければならないが、最終的な宛先を知る必要はない。一般に、複数の可能な経路があるから、ルータは、種々の要因に基づいて、使用すべき特定の経路を決定することができる。
【００２３】
ルータ・ハードウェアのレベルでは、インターネット宛先ノードは、インターネット・プロトコル（ＩＰ）アドレスと呼ばれる、複数ビットの数値アドレスに従って指定される。当初のインターネット・アドレッシング方式は、３２ビットのＩＰアドレスを、各々が８ビットの４つの部分又は「オクテット」に分割して使用していた。これらのオクテットは、ピリオドで互いに分離されて書かれることが多い。例えば、一のＩＰアドレスを、「９０.４.６３.１８」のように書くことができる。これらのオクテットは、アドレッシングの階層的形式であり、任意の単一のルータは、全てのインターネット・アドレスの最終的な宛先を知る必要はない。遠隔アドレスを担持するデータ・パケットは、宛先により接近しているルータへ経路指定され、従って、当該データ・パケットがその最終的な宛先に到着するまで、当該アドレスをさらに洗練することができる。当初のアドレッシング方式は、３２ビットのＩＰアドレスを使用していたが、最近では、インターネットのアドレス空間が制約されるようになったので、ＩＰｖ６と呼ばれる新しい規格がインターネットＩＰアドレスのために採用された。ＩＰｖ６は、１２８ビットのＩＰアドレスをサポートする。ＩＰｖ６は、現在段階的に導入されているが、多数のインターネット装置は、依然としてＩＰｖ４と呼ばれる古い３２ビットのＩＰアドレッシング・プロトコルを使用している。
【００２４】
ＩＰアドレスは、送信ノードがデータ・パケットを受信ノードへ経路指定することを可能にするが、インターネットを使用するより高レベルのプロセス間通信について数値的なＩＰアドレスを使用することには、欠点が存在するであろう。１つには、数値的なアドレスは、人々が記憶するのが困難である。さらに、幾つかのＩＰアドレスは、複数のノード間で共有されることがあり、或いはネットワーク構成の変更に起因して変わることがある。これらの及び他の理由で、ドメイン・ネーム・システム（ＤＮＳ）と呼ばれる、インターネット・ノード用のより高レベルの命名規則が存在する。インターネット・ノードは、ＤＮＳにおいて任意の英字を有する名前を与えられ、これがＩＰアドレスに変換される。従って、ノードのＤＮＳ名は記憶するのがより容易であるばかりか、単に或るハードウェアが変更されたという理由だけでこれを変更する必要はない。例えば、或る個人は、クライアントが記憶しやすい親しみがあるＤＮＳ名を有するｗｅｂサーバを確立することができ、そして当該ｗｅｂサーバの実際のＩＰアドレスがハードウェア・アップグレード等に起因して変わったとしても、同じＤＮＳ名を維持することができる。ＤＮＳサーバの分散システムは、ＤＮＳ名及びそれらの対応するＩＰアドレスを記録し、ＤＮＳ名をＩＰアドレスに変換するための機構を提供する。
【００２５】
ルータは、与えられたデータ・パケットについて、当該パケットのＩＰアドレスに基づき、複数の通信リンクのうち１つ（接近した宛先）を選択するように機能するから、複数のＩＰアドレスを各リンクに関連付けることができる。アーキテクチャ上は、単一のホスト・ノードが複数のＩＰアドレスを有することを禁止するものは、何も存在しない。というのは、当該ホスト・ノードに接続されるルータは、全てのＩＰアドレスを単一の宛先ノードに単に関連付けるに過ぎないからである。一般に、クライアントとして動作し且つ対話型ウェブ・ブラウザのようなアプリケーションを実行中の個々のワークステーション又はパーソナル・コンピュータは、単一のＩＰアドレスだけを有するであろう。しかし、幾つかのより大型のコンピュータ・システムは、各々が内部プロセスのそれぞれ異なるセットに関連する、複数のＩＰアドレスを有することがある。
【００２６】
インターネットに結合されたホスト・ノードのコンピュータ・システムでは、１セットの階層的プロセスは、一のアプリケーションからアウトバウンド・データを受信し、これをインターネット上の送信のために適切なＩＰアドレス指定を有する、データ・パケットとして適切にフォーマット化する。同様に、当該１セットの階層的プロセスは、インターネットからデータ・パケットを受信し、データを抽出及び組み立て、これをアプリケーションに供給する。本明細書では、この１セットの階層的プロセスを、「インターネット通信スタック」とも称する。当分野では、これを「ＴＣＰ／ＩＰスタック」と称することもある。もっとも、当該スタックによって処理されるインターネット通信は、ＴＣＰ／ＩＰプロトコルに制限される必要はなく、ＵＤＰ／ＩＰ、ＩＣＭＰ／ＩＰ等の他のプロトコルを含むことができる。単一のホスト・システム１０３は、インターネット通信スタックの複数のインスタンスを含むことができ、その各々をそれ自体の目的に使用することができる。単一のホスト・システム１０３内で複数のインターネット通信スタック・インスタンスが活動的である場合、各スタックは、それ自体の別個のＩＰアドレス（又は１セットのＩＰアドレス）を有するのが普通である。
【００２７】
＜詳細な説明＞
図２は、インターネットを介して他のシステムと通信する、推奨実施形態に従った、ホスト・システム２００の主要なハードウェア・コンポーネントの高水準ブロック図である。ＣＰＵ ２０１は、少なくとも１つの汎用プログラマブル・プロセッサであり、主メモリ２０２からの命令を実行してデータを処理する。好ましくは、主メモリ２０２は、種々のメモリ技術のうち任意の技術を使用するランダム・アクセス・メモリであり、その内部には、ＣＰＵ ２０１によって処理すべきデータがストレージ等からロードされる。
【００２８】
１つ以上のシステム・バス２０５は、ＣＰＵ ２０１、主メモリ２０２及び種々のＩ／Ｏインタフェース・ユニット２１１〜２１４の間でデータを転送するためのデータ通信パスを提供する。Ｉ／Ｏインタフェース・ユニット２１１〜２１４は、Ｉ／Ｏプロセッサ（ＩＯＰ）又はＩ／Ｏアダプタ（ＩＯＡ）とも呼ばれ、種々のストレージ及びＩ／Ｏ装置との通信をサポートする。例えば、端末インタフェース・ユニット２１１は、１つ以上のユーザ端末２２１〜２２４の接続をサポートする。ストレージ・インタフェースユニット２１２は、１つ以上の直接アクセス記憶装置（ＤＡＳＤ）２２５〜２２７の接続をサポートする。一般に、ＤＡＳＤ ２２５〜２２７は、回転磁気ディスク・ドライブのようなストレージ装置であるが、これをホストに対し単一の大きなストレージ装置に見えるように構成されたディスク・ドライブのアレイを含む、他の装置とすることもできる。Ｉ／Ｏ装置インタフェース・ユニット２１３は、プリンタ２２８及びファックス２２９のような他の任意のタイプのＩ／Ｏ装置の接続をサポートする。
【００２９】
ネットワーク・インタフェース（又は「ネットワーク・アダプタ」）２１４は、１つ以上の他のデジタル装置との通信のために、１つ以上の外部ネットワーク２３０への接続をサポートする。外部ネットワーク２３０は、インターネットを含む。ネットワーク・インタフェース２１４は、必ずしもインターネットに直接的に結合されないが、ゲートウェイを通してインターネットと通信するローカル・エリア・ネットワーク（図示せず）に接続することができる。推奨実施形態のホスト・システム２００は、少なくとも１つのネットワーク・アダプタ２１４を含み、オプションとして、複数のネットワーク・アダプタ２１４を含むことができる。ホスト・システム２００が複数のネットワーク・アダプタ２１４を含む場合、１つ又は２つ以上のネットワーク・アダプタ２１４を直接的又は間接的にインターネットに結合することができる。すなわち、これらのネットワーク・アダプタ２１４は、同じ若しくは異なるローカル・エリア・ネットワーク、同じ若しくは異なるルータ又はゲートウェイに接続することができる。
【００３０】
ここで、図２は、ホスト・システム２００の主要なコンポーネントを高い水準で示すように意図されたものであること、個々のコンポーネントは図２に表されたものよりも一層複雑であり得ること、図２に示されたものとは異なるコンポーネント又は追加のコンポーネントが存在し得ること、かかるコンポーネントの数、タイプ及び構成が変わり得ること、そして大型のコンピュータ・システムは、通常、図２に表されたものよりも多いコンポーネントを有することを理解されたい。かかる追加の複雑さ又は追加の変形の幾つかの特定の例が本明細書に開示されるが、これらはほんの一例であるに過ぎず、必ずしもかかる変形のみに限られないことを理解されたい。
【００３１】
説明の便宜上、単一のＣＰＵ ２０１だけが図２に示されているが、当分野では公知のように、ホスト・システム２００は、複数のＣＰＵ ２０１を含むことができる。主メモリ２０２は、単一のモノリシック・エンティティとして図２に示されているが、当分野では公知のように、主メモリ２０２は、実際には分散又は階層構成とすることができる。例えば、メモリは、キャッシュの複数レベルに存在することがあり、また１つのキャッシュが命令を保持するのに対し、他のキャッシュがプロセッサによって使用すべき非命令データを保持するように、これらのキャッシュを機能によって分割することができる。さらに、種々の非均一メモリ・アクセス（ＮＵＭＡ）コンピュータ・アーキテクチャのうち任意のもので公知のように、メモリを分散構成とし、それぞれの分散構成体を異なるＣＰＵに関連付けることができる。システム・バス２０５は、単一のエンティティとして図２に示されているが、通常、種々のシステム・コンポーネント間の実際の通信は、バス、インタフェース等の複雑な階層を通して行われる。すなわち、ＣＰＵ ２０１と主メモリ２０２の間の通信にはより高速のパスが使用され、Ｉ／Ｏインタフェース・ユニット２１１〜２１４との通信にはより低速のパスが使用される。システム・バス２０５は、階層状の２地点間リンク、星型又はウェブ構成、複数の階層バス、並列及び冗長パスのような、種々の形式のうち任意の形式で配列することができる。例えば、ＮＵＭＡアーキテクチャでは公知のように、通信パスは、ノーダル式に配列される。バスは、例えば業界基準のＰＣＩバス、又は他の任意の適切なバス技術を使用することができる。システム・バス２０５を種々のＩ／Ｏ装置に至る種々の通信パスから分離するための複数のＩ／Ｏインタフェース・ユニット２１１〜２１４が示されているが、これに代えて、Ｉ／Ｏ装置のうちの幾つか又は全てを１つ以上のシステム・バス２０５に直接的に接続することが可能であろう。
【００３２】
図２のホスト・システム２００は、複数ユーザの「メインフレーム」コンピュータ・システムについて典型的であるように、複数の接続済み端末２２１〜２２４を有する。かかる接続済み端末の実際の数は変わることがあるから、本発明は特定サイズのシステムに制限されない。代替的に、ホスト・システム２００は、「パーソナル・コンピュータ」のような単一ユーザのシステムとすることができる。また、ホスト・システム２００にアクセスするユーザのワークステーション又は端末を、外部ネットワーク２３０を介してホスト・システム２００と通信するように、接続することができる。代替的に、ホスト・システム２００は、接続済み端末を全く含まないか、又は単一のユーザ・ディスプレイ及びキーボード入力を有する単一のオペレータ・コンソールだけを含むようにすることができる。さらに、説明の便宜上、本明細書では、本発明の特定の機能が単一のコンピュータ・システム内で具体化されるものとして説明するが、これに代えて、互いに通信する複数のコンピュータ・システムの分散ネットワークを使用して、これらの機能を実装することもできる。その場合、本明細書で説明する異なる機能又はステップは、異なるコンピュータ・システム上で実行されることになろう。
【００３３】
以上では、高い水準で示した種々のシステム・コンポーネントを説明したが、典型的なコンピュータ・システムは、本発明を理解するのに不可欠ではない他の多くのコンポーネント（図示せず）を含む。推奨実施形態では、ホスト・システム２００は、ＩＢＭ i/Series（商標）アーキテクチャに基づくコンピュータ・システムである。しかし、本発明は、他のコンピュータ・システム上でも実装することができる。
【００３４】
図３は、主メモリ２０２のコンポーネントとして表される、推奨実施形態に従った、ホスト・システム２００の主要なソフトウェア・コンポーネントの概念図である。オペレーティング・システム３０１は、実行可能コード及び状態データであって、当分野では周知のように、装置インタフェース、メモリ・ページの管理、複数タスクの管理及びディスパッチングのような、種々の低水準ソフトウェア機能を提供する。特に、オペレーティング・システム３０１は、ホスト・システム２００の各ネットワーク・アダプタ２１４用のネットワーク・アダプタ装置ドライバ（以下「ネットワーク・アダプタ・ドライバ」と表記）を含む。図３は、第１のネットワーク・アダプタ・ドライバ３０２及びオプションとしての第２のネットワーク・アダプタ・ドライバ３０３を表し、当該第２のネットワーク・アダプタ・ドライバ３０３は、この機能がオプションであることを指示するために破線内に現れている。ホスト・システム２００が単一のネットワーク・アダプタ２１４だけを含む場合、これに対応する単一のネットワーク・アダプタ・ドライバ３０２だけが存在するであろう。これに対し、ホスト・システム２００が第２のネットワーク・アダプタ（図２には図示せず）を含む場合、これに対応する追加のネットワーク・アダプタ・ドライバ３０３が存在するであろう。
【００３５】
推奨実施形態に従ったホスト・システム２００は、複数のインターネット通信スタック・インスタンスを含む。図３に示す特定の実施形態では、ホスト・システム２００は、２つのインターネット通信スタック・インスタンスを含み、その一方はサービス・スタック３０４であり、他方はプロダクション・スタック３０５である。しかし、ホスト・システム２００は、３つ以上のインターネット通信スタック・インスタンスを含むことができる。これらのスタックは、ＩＰ経路指定を含む、インターネットを介する通信に必要なＴＣＰ／ＩＰ又は他のインターネット・プロトコル機能のコア・セットを実装する。しかし、プロダクション・スタック３０５は、これらのコア・プロトコルに加えて、実質的に完全なＴＣＰ／ＩＰ又は他のインターネット・プロトコルの拡張機能をサポートする。これに対し、サービス・スタック３０４は、これらの拡張機能のうちより少数の機能をサポートするか又はどの機能もサポートしない。これらの拡張機能は、特定のアプリケーション又は環境によってのみ必要とされる機能である。かかる拡張機能の例は、ＩＰＳｅｃ、ＩＰフィルタリング、ネットワーク・アドレス変換（ＮＡＴ）及び侵入検出を含む。プロダクション・スタック３０５は、他の拡張機能又は追加の拡張機能をサポートすることもできる。
【００３６】
一般に、プロダクション・スタック３０５は、ホスト・システム２００上で実行される生産的作業用の種々のユーザ・アプリケーションをサポートするために使用される。ＴＣＰ／ＩＰ又は他のインターネット・プロトコルの広範囲の拡張機能をサポートすることが望ましい。その理由は、幾つかのユーザ・アプリケーションが特定の拡張機能を必要とすることがあり、しかもホスト・システム２００上で実行中のユーザ・アプリケーションの特性や、当該ユーザ・アプリケーションが必要とする機能を事前に予測するのは困難である、ということにある。サービス・スタック３０４は、主として保守及び管理目的のために存在する。例えば、サービス・スタック３０４は、ホスト・システム２００の動作を制御し、ホスト・システム２００上で並行保守動作を実行し、同様の管理機能を実行することを目的として、遠隔コンソールとのネットワーク通信をサポートするために使用することができる。
【００３７】
さらに、ホスト・システム２００は、１つ以上のユーザ・アプリケーション３１１〜３１３を含む（当該ユーザ・アプリケーションの実際の数は、変わることがあり、通常は、図示の３より遙かに多い）。ユーザ・アプリケーション３１１〜３１３は、ユーザの代わりに生産的作業を実行するためにインターネットを介して遠隔プロセスと通信し、好ましくは、ＴＣＰ／ＩＰ又は他の適用可能なインターネット・プロトコルに従ってインターネット通信を処理するために、プロダクション・スタック３０５と関連付けられる。また、ホスト・システム２００は、１つ以上のサービス・アプリケーション３１４〜３１５を含む（当該サービス・アプリケーションの実際の数は、変わることがあり、通常は、図示の２より遙かに多い）。サービス・アプリケーション３１４〜３１５は、管理機能を実行するために遠隔プロセスと通信し、好ましくは、ＴＣＰ／ＩＰ又は他の適用可能なインターネット・プロトコルに従ってインターネット通信を処理するために、サービス・スタック３０４と関連付けられる。図３の例では、サービス・アプリケーション３１４が、オペレーティング・システム３０１の一部として示されているのに対し、サービス・アプリケーション３１５は、オペレーティング・システム３０１とは別個のものとして示されている。その理由は、サービス・アプリケーションがオペレーティング・システム３０１の一部であることもあり、そうでないこともあることを例示するためである。一般に、ユーザ・アプリケーション３１１〜３１３のようなプロダクション・スタック３０５に関連するアプリケーションは、オペレーティング・システム３０１の一部ではない。但し、プロダクション・スタック３０５は、オペレーティング・システム３０１の機能に対し同様にサービスを提供することができる。
【００３８】
各ネットワーク・アダプタ・ドライバ３０２、３０３は、一のインターネット通信スタックにそれぞれバインドされる。各インターネット通信スタック３０４、３０５は、当該スタックにバインドされた、０、１、又は２以上のネットワーク・アダプタ・ドライバを有することができる。一のネットワーク・アダプタ内で受信された全ての着信パケットは、先ず、その対応するネットワーク・アダプタ・ドライバがバインドされた、インターネット通信スタックへ経路指定される。各スタック内の各ＩＰ経路セレクタ３０６、３０７は、ＩＰ経路指定プロトコルを使用して、各アウトバウンド・パケットごとに宛先ネットワーク・アダプタ・ドライバを決定する。
【００３９】
本発明の推奨実施形態に従って、ＩＰ経路セレクタ３０６、３０７を通して他のスタックへのシステム内スタック間通信パスが確立される。各ＩＰ経路セレクタ３０６、３０７は、特定のパケットを仮想ネットワーク・アダプタ装置ドライバ（以下「仮想アダプタ・ドライバ」と表記）３０８へ経路指定するように構成される。仮想アダプタ・ドライバ３０８は、それが実際にはどの物理ネットワーク・アダプタをも駆動しないという意味で、通常の装置ドライバではない。むしろ、仮想アダプタ・ドライバ３０８は、単にＩＰルータがパケットを経路指定することができるＩＰ経路指定プロトコルの下の宛先として機能し、従って内部的なスタック間通信パスを確立する。仮想アダプタ・ドライバ３０８へ経路指定される一のパケットは、実際には、他方のスタックへ経路指定される。すなわち、サービス・スタック３０４内のＩＰ経路セレクタ３０６が、ＩＰ経路指定を使用して、仮想アダプタ・ドライバ３０８を一のパケットの宛先として選択すれば、当該パケットは、プロダクション・スタック３０５へ経路指定され、処理のためにプロダクション・スタック３０５に入力される。この態様は、一のパケットが実際のネットワーク・アダプタから到来し且つその対応するネットワーク・アダプタ・ドライバ３０３がプロダクション・スタック３０５にバインドされているような状況と同じであろう。
【００４０】
典型的なコンピュータ・システムは、本発明を理解するのに不可欠ではない他の多くのソフトウェア・コンポーネント（図示せず）を含む。特に、典型的なオペレーティング・システムは、ネットワークを経由するデータ伝送とは無関係の多数の機能及び状態データを含むであろう。
【００４１】
図３において、種々のソフトウェア・エンティティは、別個のエンティティとして又は他のエンティティ内に含まれるものとして示されている。しかし、この表現は、説明の便宜上のものであるに過ぎず、特定のモジュール又はデータ・エンティティを別個のエンティティとしたり、共通モジュール又は複数モジュールのパッケージの一部とすることができる。さらに、図３の概念図には、特定の数及びタイプのソフトウェア・エンティティが示されているが、かかるエンティティの実際の数は、変わることがあり、特に複雑なホスト・システムの環境では、かかるエンティティの数及び複雑さは、図３のそれよりも遙かに大きいものとなろう。
【００４２】
図３のソフトウェア・コンポーネントは、概念的に主メモリ２０２内に常駐するように示されているが、一般に、コンピュータ・システムのメモリは、全てのプログラム及びデータを同時に保持するには小さすぎるから、通常は、回転磁気ディスク・ドライブ装置のような１つ以上の大容量ストレージから成る、ＤＡＳＤ ２２５〜２２７内に情報を格納し、必要に応じて、オペレーティング・システムによって情報をメモリにページ・インするようになっている。さらに、図３の概念図は、特定のメモリ編成を暗示するものではなく、そのため、ホスト・システム２００は、単一アドレス空間の仮想メモリを使用したり、重複する複数の仮想アドレス空間の仮想メモリを使用することができる。
【００４３】
図４は、推奨実施形態に従った、インターネット通信スタック・インスタンス３０４、３０５における（インターネットからの）インバウンド・データ・パケットの処理プロセスを示す、高水準のフローチャートである。図４を参照して説明する。スタック・インスタンスは、一のネットワーク・アダプタ・ドライバからインバウンド・データ・パケットを受信する（ステップ４０１）。ステップ４０１で受信されるデータ・パケットの送信元は、物理ネットワーク・アダプタ用のネットワーク・アダプタ・ドライバ３０２、３０３であるか、又は仮想アダプタ・ドライバ３０８である。仮想アダプタ・ドライバ３０８は、実際には、ネットワーク・アダプタとしての受信側スタック・インスタンスと通信する他のスタック・インスタンスへのインタフェースである。当該パケットを受信する際、ＩＰ経路セレクタ３０６、３０７は、当該パケット内の宛先ＩＰアドレスを調べることにより、適切な経路指定を決定する（ステップ４０２）。もし、当該宛先アドレスが他のエンティティに関連すると決定されるならば（ステップ４０３からの「Ｎ」枝路）、当該パケットは、（ＩＰ転送を使用して）当該宛先エンティティに転送される（ステップ４０４）。一のパケットは、ホスト・システム２００の外部にある位置を最終的な宛先とすることができ、その場合には、当該パケットは、その最終的な宛先への外部送信のために、当該外部位置に関連するネットワーク・アダプタに転送することができる。しかし、推奨実施形態では、ホスト・システム２００内の異なるインターネット通信スタック・インスタンスへの少なくとも幾つかのパケットを、ＩＰ転送により、宛先スタックに関連する仮想アダプタ・ドライバ３０８に転送することが可能である。
【００４４】
もし、ステップ４０３で、当該宛先アドレスが現在のスタック・インスタンスに関連すると決定されるならば（ステップ４０３からの「Ｙ」枝路）、当該パケットは、種々のスタック・レベルによって処理するために、このスタックを上方に転送される。オプションとしての処理は、元のデータ・パケット内に埋め込まれていた元のＩＰアドレスとは異なる、カプセル化されたＩＰアドレスを抽出することを含むことがある（ステップ４０５）。カプセル化されたＩＰアドレスは、ＩＰアドレスのカプセル化のために適用可能な任意のプロトコルによって抽出することができる。例えば、ＩＰＳｅｃのトンネリング・プロトコルに従って、カプセル化されたＩＰアドレスを、暗号化解除されたデータ・パケットから抽出することができる。ＩＰＳｅｃのトンネリングは、カプセル化の１つの可能な例であるに過ぎない。カプセル化されたＩＰアドレスが抽出される場合、当該パケットは、適切な宛先エンティティへのＩＰ転送のために（ステップ４０４）、ＩＰ経路セレクタに戻される（ステップ４０３）。この宛先エンティティは、ホスト・システム２００内の異なるインターネット通信スタック・インスタンスとすることができる。
【００４５】
カプセル化されたＩＰアドレスが存在しない場合（又はカプセル化されたアドレスが以前に抽出され且つその結果に従ってパケットが転送された場合）、当該スタックの上位レベル（例えば、ＩＰ及びＴＣＰレベル）は、適用可能な通常のプロトコルに従って、当該パケットを処理する（ステップ４０６）。次に、当該パケット内のデータが、ホスト・システム２００内の適切なアプリケーションに提供される（ステップ４０７）。
【００４６】
図５は、推奨実施形態に従った、インターネット通信スタック・インスタンス３０４、３０５における（インターネットを介して外部宛先に向けられる）アウトバウンド・データ・パケットの処理プロセスを示す、高水準のフローチャートである。図５を参照して説明する。アウトバウンド・データ・パケットは、当該スタック・インスタンスにバインドされたアプリケーションからのデータの結果であるか（ステップ５０１及び５０２を通るパスとして示される）、又は他のエンティティ、特に他のスタックから転送されるデータ・パケットとすることができる（ステップ５０３を通るパスとして示される）。前者の場合、当該スタック・インスタンスは、当該スタックにバインドされた一のアプリケーション（例えば、プロダクション・スタック３０５の場合は、ユーザ・アプリケーション３１１〜３１３、サービス・スタック３０４の場合は、サービス・アプリケーション３１４、３１５）から、アウトバウンドのインターネット通信を意図されるデータを受け取る（ステップ５０１）。当該スタックの上位レベル（例えば、ＩＰ及びＴＣＰレベル）は、適用可能なプロトコルに従って当該データを処理することにより、１つ以上のデータ・パケットを生成する（ステップ５０２）。代替的に、当該上位のスタック・レベルによって既に処理済みのデータ・パケットは、他のエンティティ、特に同じシステム内の他のスタックから経路指定された後に、到着することができる（ステップ５０３）。
【００４７】
当該スタックは、オプションとして、ＩＰＳｅｃトンネリングのような適切な任意のカプセル化プロトコルに従って、当該データ・パケット及び宛先アドレスをより大きなデータ・パケット内にカプセル化し、当該より大きなデータ・パケット用の新しいＩＰアドレスを提供することができる（ステップ５０４）。カプセル化ステップ５０４が実行されるか否かに拘わらず、当該パケットは、ＩＰ経路セレクタ３０６、３０７により、そのＩＰアドレスが指示する宛先に転送される（ステップ５０５）。このＩＰ転送経路指定宛先は、ネットワーク・アダプタ・ドライバである。この宛先は、物理ネットワーク・アダプタに結合されたネットワーク・アダプタ・ドライバ３０２、３０３であるか（外部宛先の場合）、又はホスト・システム２００内の他のスタック・インスタンスへのインタフェースである仮想アダプタ・ドライバ３０８とすることができる。
【００４８】
前述の推奨実施形態に従ったスタック間通信は、種々のアプリケーションにおいて使用することができる。例えば、スタック間通信は、複数のスタック・インスタンスによる単一のハードウェア・ネットワーク・アダプタの共有を容易にサポートする。一般に、ハードウェア・ネットワーク・アダプタは、第１のスタック・インスタンスによって所有されるか又はアクティブ化され、その結果、第１のスタック・インスタンスに関連するＩＰ経路セレクタを通して全ての通信が経路指定されることを必要とする。しかし、ＩＰ経路セレクタは、着信パケットを第２のスタック・インスタンスへ経路指定するか、又は第２のスタック・インスタンスから発信パケットを受信することができ、従って第２のスタック・インスタンス及び外部エンティティの間の通信を、（第２のスタック・インスタンスによって所有されていない）ネットワーク・アダプタを通してサポートする。また、スタック間インタフェースは、特定の時間又はイベントで選択的にイネーブルされる、スイッチとして動作することができる。例えば、当該インタフェースは、ネットワーク・アダプタの専用的使用を必要とする主幹業務のアプリケーションをサポートするために、通常はイネーブルされ且つ特定の時間にディセーブルされることがある。代替的に、当該インタフェースは、主スタック・インスタンス上で定期保守を実行するために、通常はディセーブルされ且つ主スタック・インスタンスからのデータをバックアップ・スタック・インスタンスへ経路指定するように選択された時間にイネーブルされることがある。
【００４９】
推奨実施形態に従ったスタック間インタフェースを使用するための特定の例示的な環境では、プロダクション・スタック３０５は、汎用コンピュータ・システム内の種々のユーザ・アプリケーションをサポートするために完全な範囲のＴＣＰ／ＩＰ機能を有する。これに対し、サービス・スタック３０４は、制限された範囲のＴＣＰ／ＩＰ機能を有し、主として、遠隔コンソールからのシステム制御、並行保守動作等をサポートするために存在する。スタック間インタフェースは、サービス・スタックにバインドされたアプリケーションを含む通信について、通常はサービス・スタック３０４上で通常利用可能でない、１つ以上の拡張機能動作を獲得するために使用される。
【００５０】
かかる拡張機能の１例は、ＩＰＳｅｃトンネリング・プロトコルを使用する、データ・パケットのカプセル化である。ＩＰＳｅｃトンネリングは、完全なデータ・パケットをカプセル化及び暗号化し、これを新しいＩＰヘッダ及びＩＰアドレスを有するより大きなパケット内にラップすることを可能にする。例えば、ＩＰＳｅｃトンネリングは、仮想プライベート・ネットワーク（ＶＰＮ）をサポートするために使用することができる。２重のプロダクション及びサービス・スタック・インスタンスを有するシステム内では、時々、サービス・スタックがプロダクション・スタックのＩＰＳｅｃ能力を使用することを必要とすることがある。例えば、或る保守動作は、時々、安全でないネットワーク上に接続された装置から実行する必要がある。
【００５１】
図６及び図７は、サービス・アプリケーションに向けられるカプセル化されたデータ・パケットが推奨実施形態に従ったＩＰＳｅｃ処理のためにプロダクション・スタックへ経路指定されるという例示的な環境に従った、ホスト・システム２００内の種々のコンポーネントにおけるインバウンド・データ・パケットの処理及びアウトバウンド・データ・パケットの処理をそれぞれ示すフローチャートである。この例では、インターネットＩＰアドレス「６６.１９１.６９.９」及び「６６.１９１.６９.１０」は、サービス・スタック３０４にバインドされたネットワーク・アダプタ３０２へ経路指定される。インターネットＩＰアドレス宛先「６６.１９１.６９.９」は、サービス・スタック３０４上で定義され、インターネットＩＰアドレス「６６.１９１.６９.１０」は、プロダクション・スタック３０５上で定義されている。これらのスタック又はこの例には関係がない追加のネットワーク・アダプタのために定義されている追加のインターネットＩＰアドレスが存在することがある。イントラネット仮想プライベート・ネットワーク（ＶＰＮ）アドレス宛先「１０.５.１２.３５」は、サービス・スタック３０４上で定義され、遠隔イントラネット・アドレス宛先「１０.５.２６.１４」用のＶＰＮフィルタ規則は、プロダクション・スタック３０５上で定義されている。
【００５２】
図６を参照して説明する。ＩＰアドレス「６６.１９１.６９.１０」及びカプセル化されたパケット（ＶＰＮパケット）を有する一のインバウンド・パケットは、ネットワーク・アダプタ３０２に到着し、ネットワーク・アダプタ３０２がバインドされたサービス・スタック３０４へ経路指定される（ステップ６０１）。ＩＰアドレス「６６.１９１.６９.１０」は、サービス・スタック３０４上で定義されていない。しかし、このＩＰアドレスは、仮想アダプタ３０８への経路、すなわちプロダクション・スタック３０５への経路として定義されている。従って、ＩＰ経路セレクタ３０６は、当該パケットを、ＩＰ転送を使用して、プロダクション・スタック３０５へ経路指定する（ステップ６０２）。
【００５３】
プロダクション・スタック３０５は、当該パケットを受信する。ＩＰアドレス「６６.１９１.６９.１０」は、プロダクション・スタック３０５上で定義されているから、プロダクション・スタック３０５のＩＰＳｅｃトンネリング機能は、当該パケットを暗号化解除することにより、埋め込まれたＶＰＮパケットを抽出する（ステップ６０３）。この埋め込まれたＶＰＮパケットは、それ自体のＩＰアドレス「１０.５.１２.３５」を有する。この場合、このＩＰアドレスは、仮想プライベート・ネットワーク上で使用するためのイントラネット・アドレスである。このイントラネットＩＰアドレス「１０.５.１２.３５」は、プロダクション・スタック３０５上で定義されていない。しかし、このイントラネットＩＰアドレスは、仮想アダプタ３０８への経路、すなわちサービス・スタック３０４への経路として定義されている。従って、ＩＰ経路セレクタ３０７は、この新しい暗号化解除済みのパケットを、サービス・スタック３０４へ経路指定する（ステップ６０４）。
【００５４】
サービス・スタック３０４は、ＩＰアドレス「１０.５.１２.３５」を有する、暗号化解除済みのパケットを受信する。このアドレスは、サービス・スタック３０４上で定義されるから、当該パケットは、サービス・スタック３０４の上位レベル、すなわちＴＣＰ及びＩＰのレベルで処理される（ステップ６０５）。次に、結果データは、サービス・アプリケーションに渡される（ステップ６０６）。当該サービス・アプリケーションは、サービス・スタック３０４から当該データを受信し、当該データを適切に使用する（ステップ６０７）。
【００５５】
図７を参照して説明する。最初に、サービス・アプリケーションからのアウトバウンド・データが、遠隔装置内の宛先のイントラネットＩＰアドレスに対応するソケット宛先アドレス「１０.５.２６.１４」を持って、サービス・スタック３０５に渡される（ステップ７０１）。このデータは、サービス・スタック３０５のＴＣＰ及びＩＰ層で処理され、その結果、ＩＰアドレス宛先「１０.５.２６.１４」を有する１つ以上のデータ・パケットが生成される（ステップ７０２）。
【００５６】
ＩＰアドレス「１０.５.２６.１４」は、ＩＰ経路セレクタ３０６に対し、仮想アダプタ３０８に対応する一のアドレスとして定義されているから、ＩＰ経路セレクタ３０６は、当該パケットを仮想アダプタ３０８、すなわちスタック間インタフェースを介してプロダクション・スタック３０５へ経路指定する（ステップ７０３）。プロダクション・スタック３０５内では、ＩＰアドレス「１０.５.２６.１４」用のＶＰＮフィルタ規則が定義されており、プロダクション・スタック３０５のＩＰＳｅｃ機能に対し、当該パケットを暗号化し且つこれを遠隔装置に対応するグローバルへ経路指定可能な（インターネット）ＩＰアドレス「１２９.４２.１６１.１７」を有する、より大きなパケット内にカプセル化するように命令する（ステップ７０４）。このアドレス「１２９.４２.１６１.１７」は、ＩＰ経路セレクタ３０７に対し、仮想アダプタ３０８に対応する一のアドレスとして定義されているから、ＩＰ経路セレクタ３０７は、当該パケットをスタック間インタフェースを介してサービス・スタック３０４へ経路指定する（ステップ７０５）。
【００５７】
サービス・スタック３０４内のＩＰ経路セレクタ３０６は、当該パケットを受け取り、そのＩＰアドレスをネットワーク・アダプタ・ドライバ３０２へ経路指定可能な外部アドレスとして認識する。従って、ＩＰ経路セレクタ３０６は、当該パケットをアダプタ・ドライバ３０２へ経路指定する（ステップ７０６）。次に、当該ネットワーク・アダプタは、当該パケットを受け取り、これをネットワークを介して送信する（ステップ７０７）。
【００５８】
本明細書では、特定の例はＩＰｖ４の実施形態に関して使用されるが、本発明は、ＩＰｖ４アドレッシングと同様にＩＰｖ６アドレスにも同様に適用することができる。
【００５９】
本明細書において推奨実施形態として説明した技術の利点は、既に利用可能なＩＰ転送及び経路指定機能を使用して、異なるインターネット通信スタック・インスタンス間で、パケット・データを経路指定することができるということにある。このアプローチは、最小量のＩＰ経路セレクタの構成を必要とするに過ぎず、大規模な特別プログラミング又は機能的能力を必要としない。さらに、ＩＰ転送は、インターネット通信においてユビキタスであるから、本発明の推奨実施形態に従ったスタック間インタフェースの使用は、広い適用可能性を有するであろうし、これが正常に機能しないという例外は、あったとしてもごく少ないであろう。最後に、異なるスタック・インスタンスが、共通コード又は共通の開発元を有するコードを使用しなければならないという必要条件は存在しない。独立的に開発されたスタック・コードを使用すると、全てのスタック・インスタンスが同じコーディング・エラー症状を有することを回避することができ、従ってフォールト・トレランスが改良されるという点で有利である。
【００６０】
一般に、本発明の実施形態を実装するために実行されるルーチンは、オペレーティング・システムの一部として実装されるか又は特定のアプリケーション、プログラム、オブジェクト、モジュール若しくは命令のシーケンスとして実装されるかに拘わらず、本明細書では、これを「プログラム」又は「コンピュータ・プログラム」と称する。一般に、プログラムを構成する諸命令が、本発明と整合するコンピュータ・システム内の装置又はシステムにおける１つ以上のプロセッサによって読み取られ且つ実行される場合、これらの命令は、当該装置又はシステムに対し、本発明の種々の側面を具体化した諸ステップを実行するか又は諸要素を生成するのに必要な諸ステップを実行させるように作用する。さらに、本発明は、完全に機能するコンピュータ・システムの文脈で説明されたが、本発明の種々の実施形態は、種々の形式のプログラム製品として配布することができ、また本発明は、かかる配布を実際に行うために使用される信号担持媒体の特定のタイプに拘わらず、同等に適用することができる。信号担持媒体の例は、揮発性及び不揮発性メモリ装置、フレキシブル・ディスク、ハード・ディスク・ドライブ、ＣＤ−ＲＯＭ、ＤＶＤ、磁気テープ等を含む。さらに、本発明は、データが１つの形式の信号担持媒体で交換されるのか又は無線ネットワークを含む伝送ネットワークの他の形式で交換されるのかに拘わらず、任意の形式の信号担持媒体に適用することができる。信号担持媒体の例は、図２において、主メモリ２０２、及びＤＡＳＤ ２２５〜２２７として示されている。
【００６１】
本発明の特定の実施形態は、特定の代替手段と共に開示されたが、当業者にとっては、請求項の範囲内で形式及び詳細に係る追加の変更をなし得ることは明らかであろう。
【図面の簡単な説明】
【００６２】
【図１】インターネットの高水準の概念図である。
【図２】推奨実施形態に従った、ホスト・システムの主要なハードウェア・コンポーネントの高水準ブロック図である。
【図３】推奨実施形態に従った、ホスト・システムの主要なソフトウェア・コンポーネントの概念図である。
【図４】推奨実施形態に従った、インターネット通信スタック・インスタンスにおけるインバウンド・データ・パケットの処理プロセスを示す、高水準のフローチャートである。
【図５】推奨実施形態に従った、インターネット通信スタック・インスタンスにおけるアウトバウンド・データ・パケットの処理プロセスを示す、高水準のフローチャートである。
【図６】サービス・アプリケーションに向けられるカプセル化されたデータ・パケットが推奨実施形態に従ったＩＰＳｅｃ処理のためにプロダクション・スタックへ経路指定されるという例示的な環境に従った、インバウンド・データ・パケットの処理プロセスを示すフローチャートである。
【図７】図６の例示的な環境に従った、アウトバウンド・データ・パケットの処理プロセスを示すフローチャートである。
【図１】
2009533915.tif 000003
【図２】
2009533915.tif 000004
【図３】
2009533915.tif 000005
【図４】
2009533915.tif 000006
【図５】
2009533915.tif 000007
【図６】
2009533915.tif 000008
【図７】
2009533915.tif 000009
【手続補正書】
【提出日】平成21年4月21日(2009.4.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータ・システムにして、
少なくとも１つのプロセッサと、
メモリと、
前記少なくとも１つのプロセッサ上で実行可能な複数の命令として具体化され且つ複数のプロセス・インスタンスの並列実行をサポートするオペレーティング・システムと、
前記少なくとも１つのプロセッサ上で実行可能な複数のアプリケーションと、
インターネットを経由する通信のためにデータ・パケットを送信する少なくとも１つのネットワーク・アダプタと、
第１及び第２のインターネット通信スタック・インスタンスとを備え、
前記各インターネット通信スタック・インスタンスが、前記複数のアプリケーションの少なくとも１つとそれぞれ関連し、
前記第１及び第２のインターネット通信スタック・インスタンスが、前記第１及び第２のインターネット通信スタックの間で少なくとも１つの方向にデータ・パケットを通信するための一のスタック間インタフェースをサポートし、
前記スタック間インタフェースを経由して通信される各データ・パケットが、当該データ・パケットに関連する一のインターネット・プロトコル（ＩＰ）アドレスに従って、前記スタック間インタフェースを経由して一の宛先インターネット通信スタックへ選択的に経路指定され、
前記ＩＰアドレスが、前記宛先インターネット通信スタックに関連する一のＩＰアドレスと一致する、コンピュータ・システム。
【請求項２】
前記第２のインターネット通信スタック・インスタンスが、前記第１のインターネット通信スタック・インスタンスによってサポートされない少なくとも１つのインターネット・プロトコル機能をサポートする、請求項１に記載のコンピュータ・システム。
【請求項３】
前記第２のインターネット通信スタック・インスタンスが、ユーザ・アプリケーションの汎用サポートのためのプロダクション・スタックであり、前記第１のインターネット通信スタック・インスタンスが、前記コンピュータ・システムの管理機能をサポートするためのサービス・スタックである、請求項２に記載のコンピュータ・システム。
【請求項４】
前記スタック間インタフェースが、前記第１及び第２のインターネット通信スタックの間のパケットの双方向通信をサポートする、請求項１ないし請求項３の何れか１項に記載のコンピュータ・システム。
【請求項５】
前記スタック間インタフェースを経由するデータ・パケット通信が、前記第１のインターネット通信スタック・インスタンス内の少なくとも１つのＩＰアドレスのＩＰ転送の宛先として、一の仮想ネットワーク・アダプタ装置ドライバを指定することにより実装され、前記仮想ネットワーク・アダプタ装置ドライバが、前記第２のインターネット通信スタック・インスタンスに対する一のインタフェースである、請求項１ないし請求項４の何れか１項に記載のコンピュータ・システム。
【請求項６】
前記第１及び第２のインターネット通信スタック・インスタンスが、一の共通ネットワーク・アダプタを共有し、前記共通ネットワーク・アダプタが、前記第１のインターネット通信スタック・インスタンスにバインドされる、請求項１ないし請求項５の何れか１項に記載のコンピュータ・システム。
【請求項７】
インターネット通信データ・パケットを経路指定するための方法にして、
コンピュータ・システム内の第１のインターネット通信スタック・インスタンスにおいて、複数のデータ・パケットを表すデータを受信するステップを含み、
前記各データ・パケットが、一のインターネット・プロトコル（ＩＰ）アドレスにそれぞれ関連し、
前記各データ・パケットの一の経路指定宛先を、そのＩＰアドレスからそれぞれ決定するステップを含み、
前記複数のデータ・パケットのうち少なくとも幾つかのデータ・パケットについては、それぞれの前記経路指定宛先が、前記コンピュータ・システム内の第２のインターネット通信スタック・インスタンスに対応し、
前記決定するステップが、前記第１のインターネット通信スタック・インスタンス内で実行され、
前記第２のインターネット通信スタック・インスタンスに対応する一のデータ・パケットの経路指定宛先を決定することに応答して、当該対応するデータ・パケットを前記第２のインターネット通信スタック・インスタンスに転送するステップを含む、方法。
【請求項８】
前記受信するステップで受信された前記複数のデータ・パケットのうち少なくとも幾つかのデータ・パケットが、前記コンピュータ・システムによってインターネットからインバウンド通信として受信されたデータ・パケットである、請求項７に記載の方法。
【請求項９】
前記受信するステップで受信された前記複数のデータ・パケットのうち少なくとも幾つかのデータ・パケットが、前記コンピュータ・システム上で内部的に実行中の少なくとも１つのアプリケーションから、インターネットを介して送信すべきアウトバウンド通信として受信されたデータ・パケットである、請求項７又は請求項８に記載の方法。
【請求項１０】
前記第１及び第２のインターネット通信スタック・インスタンスの何れか一方において、前記複数のデータ・パケットのうち少なくとも幾つかのデータ・パケットについてカプセル化機能を実行するステップをさらに含み、
前記カプセル化機能が、（ａ）第１のＩＰアドレスを有する第１のデータ・パケットを第２のＩＰアドレスを有する第２のデータ・パケット内にカプセル化すること、及び（ｂ）第１のＩＰアドレスを有し且つ以前にカプセル化された第１のデータ・パケットを第２のＩＰアドレスを有する第２のデータ・パケットの内部から抽出することの１つである、請求項７ないし請求項９の何れか１項に記載の方法。
【請求項１１】
前記カプセル化機能を実行するステップが、前記対応するデータ・パケットを前記第２のインターネット通信スタック・インスタンスに転送するステップの後に、前記第２のインターネット通信スタック・インスタンスによって実行され、
前記方法が、
前記カプセル化機能を実行した後に、前記各データ・パケットの経路指定宛先を、当該データ・パケットのＩＰアドレスからそれぞれ決定するステップをさらに含み、
前記複数のデータ・パケットのうち少なくとも幾つかのデータ・パケットについては、それぞれの前記経路指定宛先が、前記コンピュータ・システム内の前記第１のインターネット通信スタック・インスタンスに対応し、
前記決定するステップが、前記第２のインターネット通信スタック・インスタンス内で実行され、
前記第１のインターネット通信スタック・インスタンスに対応する一のデータ・パケットの経路指定宛先を決定することに応答して、当該対応するデータ・パケットを前記第２のインターネット通信スタック・インスタンスに転送するステップをさらに含む、請求項１０に記載の方法。
【請求項１２】
前記第１及び第２のインターネット通信スタック・インスタンスが、一の共通ネットワーク・アダプタを共有し、前記共通ネットワーク・アダプタが、前記前記第１及び第２のインターネット通信スタック・インスタンスのうち何れか一方にだけバインドされる、請求項７ないし請求項１１の何れか１項に記載の方法。
【請求項１３】
コンピュータ・システムに、インターネット通信データ・パケットを経路指定させるためのコンピュータ・プログラムであって、
（ａ）前記コンピュータ・システム内に複数のインターネット通信スタック・インスタンスを維持するステップと、
（ｂ）前記複数のインターネット通信スタック・インスタンスのうち少なくとも幾つかのインターネット通信スタック・インスタンスの間で少なくとも１つの方向に複数のデータ・パケットを通信するための一のスタック間インタフェースを提供するステップとを含み、
前記各データ・パケットが、一のインターネット・プロトコル（ＩＰ）アドレスにそれぞれ関連し、
（ｃ）第１のインターネット通信スタック・インスタンスにおいて、前記各データ・パケットの経路指定宛先を、当該データ・パケットのＩＰアドレスからそれぞれ決定するステップを含み、
前記複数のデータ・パケットのうち少なくとも幾つかのデータ・パケットについては、それぞれの前記経路指定宛先が、前記スタック間インタフェースに対応し、
（ｄ）前記決定するステップ（ｃ）の対象となる前記各データ・パケットごとに、当該データ・パケットの経路指定宛先が前記スタック間インタフェースに対応する場合は、当該データ・パケットを前記第１のインターネット通信スタック・インスタンスから前記スタック間インタフェースを介して前記コンピュータ・システム内の第２のインターネット通信スタック・インスタンスへ経路指定するステップ
をコンピュータに実行させる、コンピュータ・プログラム。
【請求項１４】
前記スタック間インタフェースが、前記第１及び第２のインターネット通信スタックの間のパケットの双方向通信をサポートする、請求項１３に記載のコンピュータ・プログラム。
【請求項１５】
前記スタック間インタフェースを介して前記第２のインターネット通信スタック・インスタンスへ経路指定される前記複数のデータ・パケットのうち少なくとも幾つかのデータ・パケットが、前記コンピュータ・システムによってインターネットからインバウンド通信として受信されたデータ・パケットである、請求項１３又は請求項１４に記載のコンピュータ・プログラム。
【請求項１６】
前記スタック間インタフェースを介して前記第２のインターネット通信スタック・インスタンスへ経路指定される前記データ・パケットのうち少なくとも幾つかのデータ・パケットが、前記コンピュータ・システム上で内部的に実行中の少なくとも１つのアプリケーションから、インターネットを介して送信すべきアウトバウンド通信として受信されたデータ・パケットである、請求項１３に記載のコンピュータ・プログラム。
【請求項１７】
前記コンピュータ・システムに、
（ｅ）前記第１及び第２のインターネット通信スタック・インスタンスの何れか一方において、前記複数のデータ・パケットのうち少なくとも幾つかのデータ・パケットについてカプセル化機能を実行するステップをさらに実行させ、
前記カプセル化機能が、（ａ）第１のＩＰアドレスを有する第１のデータ・パケットを第２のＩＰアドレスを有する第２のデータ・パケット内にカプセル化すること、及び（ｂ）第１のＩＰアドレスを有し且つ以前にカプセル化された第１のデータ・パケットを第２のＩＰアドレスを有する第２のデータ・パケットの内部から抽出することの１つである、請求項１３ないし請求項１６の何れか１項に記載のコンピュータ・プログラム。
【請求項１８】
前記ステップ（ｅ）が、前記ステップ（ｄ）の後に、前記第２のインターネット通信スタック・インスタンスによって実行され、
前記コンピュータ・システムに、
（ｆ）前記ステップ（ｅ）を実行した後に、前記ステップ（ｅ）の対象となる前記各データ・パケットごとに、当該データ・パケットの経路指定宛先をそれぞれ決定するステップを実行させ、
前記複数のデータ・パケットのうち少なくとも幾つかのデータ・パケットについては、それぞれの経路指定宛先が、前記スタック間インタフェースに対応し、
前記コンピュータ・システムに、
（ｇ）前記決定するステップ（ｆ）の対象となる前記各データ・パケットごとに、当該データ・パケットの経路指定宛先が前記スタック間インタフェースに対応する場合は、当該データ・パケットを前記第２のインターネット通信スタック・インスタンスから前記スタック間インタフェースを介して前記第１のインターネット通信スタック・インスタンスへ経路指定するステップをさらに実行させる、請求項１７に記載のコンピュータ・プログラム。
【国際調査報告】
2009533915.tif 000010
2009533915.tif 000011