プロセッサ及びメモリを有するホストコンピュータシステムと、前記ホストコンピュータを外部ネットワークに接続する、単一のインターネットプロトコルIPアドレスを有する物理インターフェースと、各々が前記メモリ内の仮想マシン番号を有する複数の仮想マシンと、前記物理インターフェース上で受け取った、宛先ポート番号を有するデータパケットと、前記データパケットの前記宛先ポート番号に応じて、前記データパケットを前記複数の仮想マシンのうちの一意のものに経路指定するための仮想ネットワークマネージャと、を含む装置。複数のポート範囲及び各ポート範囲についての対応する仮想マシン番号を有するポート範囲テーブルをさらに含み、前記仮想ネットワークマネージャは、前記データパケットの前記宛先ポート番号を含むポート範囲に対応する前記ポート範囲テーブル内に格納された前記仮想マシン番号を選択することによって、前記複数の仮想マシンのうちの前記一意のものの前記仮想マシン番号を判断する、請求項1に記載の装置。前記外部ネットワークから前記ホストコンピュータを保護するファイアウォールをさらに含む、請求項1に記載の装置。前記複数の仮想マシンは、複数のホストコンピュータシステム上に配置される、請求項1に記載の装置。前記仮想ネットワークマネージャは、仮想ネットワーク上で前記データパケットを前記仮想マシンに転送する、請求項1に記載の装置。前記データパケットは、TCP伝送制御プロトコル及びユーザデータグラムプロトコルUDPから選択されるプロトコルに準拠する、請求項1に記載の装置。前記仮想マシンの一時ポートが、前記仮想マシンに割り当てられた前記ポート範囲テーブル内のポート番号を用いるように構成される、請求項1に記載の装置。ホストコンピュータシステム上でデータを仮想マシンに送る方法であって、単一のインターネットプロトコルIPアドレスを有するように複数の仮想マシンを構成するステップと、複数のポート範囲及び各ポート範囲についての対応する仮想マシン番号を有するポート範囲テーブルを有するように仮想ネットワークマネージャを構成するステップと、前記データパケットの宛先ポート番号に基づいて、前記複数の仮想マシンのうちの一意のものに物理インターフェースからの着信データパケットを経路指定するステップと、を含む方法。前記着信データパケットを経路指定するステップは、前記データパケットの前記宛先ポート番号を含む前記ポート範囲テーブル内のポート範囲に対応する仮想マシン番号を判断し、前記判断した仮想マシン番号を有する前記一意のものの仮想マシンに前記データパケットを経路指定するステップをさらに含む、請求項8に記載の方法。前記着信パケットがファイアウォールによって許可されない場合、前記着信パケットを破棄するステップと、前記パケットがTCP伝送制御プロトコル及びユーザデータグラムプロトコルUDPから選択されるプロトコルに準拠しない場合、前記着信パケットを返すステップと、前記仮想マシンに割り当てられた前記ポート範囲テーブル内のポート番号を用いるように前記仮想マシンの一時ポートを構成するステップと、をさらに含む、請求項8に記載の方法。前記仮想ネットワークマネージャは、仮想ネットワーク上で前記データパケットを前記仮想マシンに転送する、請求項8に記載の方法。前記複数の仮想マシンは、複数のホストコンピュータ上に配置される、請求項8に記載の方法。コンピュータシステム内にロードされ、実行されるとき、請求項8から請求項12までのいずれか1項に記載の方法の全てのステップを実行するためのコンピュータプログラムコードを含むコンピュータプログラム。しかしながら、上記の従来技術のいずれも、複数の仮想マシンにわたって単一のIPアドレスをどのように共有するかという問題を克服するものではない。本明細書における開示及び特許請求の範囲は、外部ネットワークアドレス空間上で同じIPアドレスが一括して割り当てられる複数の仮想マシン仮想コンピュータに向けられる。この仮想マシンは、1つ又は複数の物理ホストコンピュータシステム上に存在する。仮想ネットワークマネージャは、ホストコンピュータ上の物理インターフェースからのネットワークトラフィックを処理し、宛先ポート番号に基づいて、ネットワークデータを適切な仮想マシンに転送する。外部ネットワーク上のデータパケットはそれぞれ、宛先ポート番号及び送信元ポート番号を有する。仮想ネットワークマネージャは、各仮想マシンを着信データパケットの宛先ポート番号の範囲と関連付けるポート範囲テーブルを使用する。各々の仮想マシンにポート範囲テーブル内の一意の宛先ポート範囲が割り当てられ、データパッケトの宛先ポート番号に基づいて、外部ネットワーク上の着信データトラフィックが、受信側仮想マシンに経路指定される。第1の態様から見ると、本発明は、プロセッサ及びメモリを有するホストコンピュータシステムと、ホストコンピュータを外部ネットワークに接続する、単一のインターネットプロトコルを有する物理インターフェースと、各々がメモリ内の仮想マシン番号を有する複数の仮想マシンと、物理インターフェース上で受け取られる、宛先ポート番号を有するデータパケットと、データパケットの宛先ポート番号に応じて、複数の可能マシンのうちの一意のものにデータパケットを転送するための仮想マシンマネージャとを含む装置を提供する。好ましくは、本発明は、複数のポート範囲及び各ポート範囲についての対応する仮想マシン番号を有するポート範囲テーブルをさらに含み、仮想ネットワークマネージャは、データパケットの宛先ポート番号を含むポート範囲に対応するポート範囲テーブル内に格納された仮想マシン番号を選択することによって、複数の仮想マシンのうちの一意のものの仮想マシン番号を判断する装置を含む。好ましくは、本発明は、外部ネットワークからホストコンピュータを保護するファイアウォールをさらに含む装置を提供する。好ましくは、本発明は、複数の仮想マシンが複数のホストコンピュータシステム上に配置される装置を提供する。好ましくは、本発明は、仮想ネットワークマネージャが仮想ネットワーク上でデータパケットを仮想マシンに転送する装置を提供する。好ましくは、本発明は、データパケットが、TCP通信制御プロトコル及びユーザデータグラムプロトコルUDPから選択されるプロトコルに準拠する装置を提供する。好ましくは、本発明は、仮想マシンの一時ポートが、仮想マシンに割り当てられたポート範囲テーブル内のポート番号を用いるように構成される装置を提供する。第2の態様から見ると、本発明は、単一のインターネットプロトコルIPアドレスを有するように複数の仮想マシンを構成するステップと、複数のポート範囲及び各ポート範囲についての対応する仮想マシン番号を有するポート範囲テーブルを有するように仮想ネットワークマネージャを構成するステップと、データパケット内の宛先ポート番号に基づいて、物理インターフェースからの着信データパケットを複数の仮想マシンのうちの一意のものに経路指定するステップとを含む、ホストコンピュータシステム上でデータを仮想マシンに送る方法を提供する。好ましくは、本発明は、方法のステップが、コンピュータメモリ内に格納され、コンピュータプロセッサによって実行されるコンピュータソフトウェアプログラムの形で実装される方法を提供する。好ましくは、本発明は、着信データパケットを経路指定するステップが、データパケット内の宛先ポート番号を含むポート範囲テーブル内のポート範囲に対応する仮想マシン番号を判断し、判断した仮想マシン番号を有する一意のものの仮想マシンにデータパケットを経路指定するステップをさらに含む方法を提供する。好ましくは、本発明は、着信パケットがファイアウォールによって許可されない場合、着信パケットを破棄するステップと、パケットがTCP通信制御プロトコル及びユーザデータグラムプロトコルUDPから選択されたプロトコルに準拠しない場合、着信パケットを返すステップと、仮想マシンに割り当てられたポート範囲テーブル内のポート番号を用いるように仮想マシンの一時ポートを構成するステップとをさらに含む方法を提供する。好ましくは、本発明は、仮想ネットワークマネージャが、仮想ネットワーク上でデータパケットを仮想マシンに転送する方法を提供する。好ましくは、本発明は、複数の仮想マシンが複数のホストコンピュータ上に配置される方法を提供する。第3の態様から見ると、本発明は、単一のインターネットプロトコルIPアドレスを有するように、少なくとも1つの物理ホストコンピュータ上に配置される複数の仮想マシンを構成するステップと、複数のポート範囲及び各ポート範囲についての対応する仮想マシン番号を有するポート範囲テーブルを有するように仮想ネットワークマネージャを構成するステップと、データパケットの宛先ポート番号を含むポート範囲テーブル内のポート範囲に対応する仮想マシン番号を判断し、判断した仮想マシン番号を有する一意のものの仮想マシンにデータパケットを経路指定することによって、データパケットの宛先ポート番号に基づいて、複数の仮想マシンのうちの一意のものに物理インターフェースからの着信データパケットを経路指定するステップと、着信パケットがファイアウォールによって許可されない場合、着信パケットを破棄するステップと、パケットがTCP通信制御プロトコル及びユーザデータグラムプロトコルUDPから選択されるプロトコルに準拠しない場合、着信パケットを返すステップと、仮想マシンに割り当てられたポート範囲テーブル内のポート番号を用いるように仮想マシンの一時ポートを構成するステップとを含み、データパケットは仮想ネットワーク上で経路指定され、方法のステップは、コンピュータメモリ内に格納され、コンピュータプロセッサによって実行されるコンピュータソフトウェアプログラムの形で実行される、データをホストコンピュータ上の仮想マシンに送る方法を提供する。第4の態様から見ると、本発明は、有形のコンピュータ可読記憶媒体上に格納されたソフトウェアを含む製品を提供し、このソフトウェアは、データパケット内の宛先ポート番号に応じて、物理インターフェース上で受け取った宛先ポート番号を有するデータパケットを、複数の仮想マシンのうちの一意のものに転送する仮想ネットワークマネージャを含み、ここで、複数の仮想マシンは、ホストコンピュータを外部ネットワークに接続する、単一のインターネットプロトコルIPアドレスを有する物理インターフェースを共有する。好ましくは、本発明は、仮想ネットワークマネージャが、複数のポート範囲及び各ポート範囲についての対応する仮想マシン番号を有するポート範囲テーブルをさらに含む製品を提供し、ここで、仮想ネットワークマネージャは、データパケットの宛先ポート番号を含むポート範囲に対応するポート範囲テーブル内に格納された仮想マシン番号を選択することによって、複数の仮想マシンのうちの一意のものの仮想マシン番号を判断する。好ましくは、本発明は、ファイアウォールが外部ネットワークからホストコンピュータを保護する、製品を提供する。好ましくは、本発明は、複数の仮想マシンが複数のホストコンピュータ上に配置される、製品を提供する。好ましくは、本発明は、仮想ネットワークマネージャが、仮想ネットワーク上でデータパケットを仮想マシンに転送する、製品を提供する。好ましくは、本発明は、データパケットが、TCP通信制御プロトコル及びユーザデータグラムプロトコルUDPから選択されるプロトコルに準拠する、製品を提供する。好ましくは、本発明は、仮想マシンの一時ポートが、仮想マシンに割り当てられたポート範囲テーブル内のポート番号を用いるように構成される、製品を提供する。ここで本発明の好ましい実施形態を、添付図面を参照しながら、単なる例として説明する。本明細書で開示されるのは、複数の仮想マシンが外部ネットワークアドレス空間上で同じIPアドレスを共有するための装置及び方法である。仮想マシンは、1つ又は複数の物理ホストコンピュータシステム上に存在する。仮想ネットワークマネージャが、ホストコンピュータ上の物理インターフェースからのネットワークトラフィックを処理し、宛先ポート番号に基づいて、ネットワークデータを適切な仮想マシンに転送する。外部ネットワーク上のデータパケットはそれぞれ、宛先ポート番号及び送信元ポート番号を有する。仮想ネットワークマネージャは、各仮想マシンを着信データパケットについての宛先ポート番号の範囲と関連付けるポート範囲テーブルを用いる。仮想マシンの各々には、ポート範囲テーブル内の一意の宛先ポート範囲が割り当てられ、データパケット内の宛先ポート番号に基づいて、外部ネットワーク上の着信データトラフィックが、受信側仮想マシンに経路指定される。図1を参照すると、コンピュータシステム100は、本明細書で説明される仮想ネットワークマネージャを含むコンピュータシステムの1つの適切な実装形態である。コンピュータシステム100は、IBM登録商標のiオペレーティングシステム及びLinuxオペレーティングシステムLinuxは、米国、他の国々、又はその両方におけるLinusTorvaldsの登録商標であるを含む複数のオペレーティングシステムを実行することができる、InternationalBusinessMachinesCorporationIBM登録商標PowerSystemである。しかしながら、当業者であれば、本明細書での開示は、外部ネットワークに接続することが可能ないずれのコンピュータシステムにも等しく適用されることを認識するであろう。図1に示すように、コンピュータシステム100は、1つ又は複数のプロセッサ110、メインメモリ120、大容量ストレージインターフェース130、ディスプレイインターフェース140、ネットワークインターフェース150、及び複数のI/Oスロット180を含む。これらのシステムコンポーネントは、システムバス160を用いて相互接続される。大容量ストレージインターフェース130は、直接アクセスストレージデバイス155などの、コンピュータ可読媒体を有する大容量ストレージデバイス155をコンピュータシステム100に接続するのに用いられる。直接アクセスストレージデバイス155の1つの具体的なタイプは、CD-RW195との間でデータの格納及びデータの読み出しを行うことができる、読み出し及び書き込み可能CD-RWドライブである。大容量ストレージインターフェース130、ディスプレイインターフェース140、及びネットワークインターフェース150は、実際には、I/Oスロット180に結合されたアダプタ内に実装できることに留意されたい。I/Oアダプタは、I/Oスロット180の1つに差し込まれる外部カード内に実装することができる1つの適切なネットワークインターフェース150である。さらに、モデムなどの他のI/OデバイスをI/Oスロット180の1つに差し込むこともできる。メインメモリ120は、好ましくは、オペレーティングシステム121を含む。オペレーティングシステム121は、好ましくは、AIX又はLinuxなどのマルチタスク型オペレーティングシステムであるが、当業者であれば、本開示の趣旨及び範囲は、いずれか1つのオペレーティングシステムに限定されるものではないことを認識するであろう。いずれの適切なオペレーティングシステムを用いることもできる。オペレーティングシステム121は、コンピュータシステム100のリソースを管理するための低レベルコードを含む高度なプログラムである。これらのリソースの幾つかは、プロセッサ110、メインメモリ120、大容量ストレージインターフェース130、ディスプレイインターフェース140、ネットワークインターフェース150、システムバス160、及びI/Oスロット180である。各々の仮想マシンもオペレーティングシステムを有することができる。各々の仮想マシン又はパーティション内のオペレーティングシステムは、仮想マシン内のオペレーティングシステムと同じであってもよく、又は完全に異なるオペレーティングシステムであってもよい。従って、1つの仮想マシンはAIXオペレーティングシステムを実行することができる一方で、異なる仮想マシンは、場合によっては異なるリリースの又は異なる環境設定例えば、時間ゾーン又は言語を有するAIXの別のインスタンスを実行することができる。このように、仮想マシンは、同じ物理コンピュータシステム上に全く異なるコンピューティング環境をもたらすことができる。メモリは、ソフトウェアアプリケーション122をさらに含む。メモリは、仮想ネットワークマネージャ123を含む。仮想ネットワークマネージャは、インターセプタ遮断器124、ミキサ125、及びポート範囲テーブル126を含む。メモリは、1つ又は複数の仮想マシン又はコンピュータ127も含む。メモリ内のこれらのエンティティの各々を以下でさらに説明する。仮想マシン127は、メインメモリ120内に存在するように示されている。しかしながら、当業者であれば、仮想マシン又は論理パーティションは、メモリ以外のリソースを含む論理構成体であることを認識するであろう。仮想マシン127は、典型的には、プロセッサの能力、並びに、I/Oスロット180、及びI/Oスロット180内に存在し得るI/Oアダプタなどの他のシステムリソースの割り当てに加えて、メモリの一部分を指定する。従って、1つの仮想マシンは、大容量ストレージインターフェース130、ディスプレイインターフェース140、ネットワークインターフェース150、又はI/Oアダプタ若しくはI/Oスロット180に差し込まれる他のデバイスモデムなどのへのインターフェースの機能を提供することができる、1つ又は複数のI/Oプロセッサと共に、2つのプロセッサ及びメモリ120の一部分を含むように定めることができる。次いで、別の仮想マシンは、3つの他のプロセッサ、メモリ120の別の部分、及び1つ又は複数のI/Oプロセッサを含むように定めることができる。仮想マシンは、コンピュータシステム100内のメモリ120の外部のシステムリソースを含む、仮想マシン又は論理パーティションを記号によって表すように図1に示される。コンピュータシステム100は、コンピュータシステム100のプログラムが、メインメモリ120及びDASDデバイス155などの複数のより小容量のストレージエンティティにアクセスする代わりに、大容量の単一のストレージエンティティにアクセスするだけであるかのように振る舞うことを可能にする周知の仮想アドレス指定機構を用いる。従って、オペレーティングシステム121、アプリケーション122、仮想ネットワークマネージャ123及び仮想マシン127は、メインメモリ120内に存在するように示されるが、当業者であれば、これらのアイテムが、同時に必ずしも全て完全にメインメモリ120内に含まれるとは限らないことを認識するであろう。また、仮想メモリという用語は、本明細書では、一般的に、コンピュータシステム100の仮想メモリ全体を指すのに用いられ、かつ、コンピュータシステム100に結合された他のコンピュータシステムの仮想メモリを含むことができることにも留意すべきである。プロセッサ110は、1つ又は複数のマイクロプロセッサ及び/又は集積回路から構築することができる。プロセッサ110は、メインメモリ120内に格納されたプログラム命令を実行する。メインメモリ120は、プログラムと、プロセッサ110がアクセスできるデータとを格納する。コンピュータシステム100が起動すると、プロセッサ110は、初めに、オペレーティングシステム121を構成するプログラム命令を実行し、その後、アプリケーション122及び仮想ネットワークマネージャ123を構成するプログラム命令を実行する。コンピュータシステム100は、単一のプロッセサ及び単一のシステムバスだけを含むように示されるが、当業者であれば、複数のプロセッサ及び/又は複数のバスを有するコンピュータシステムを用いて仮想ネットワークマネージャを実行できることを理解するであろう。さらに、用いられるインターフェースはそれぞれ、プロセッサ110から数値計算処理をオフロードするのに用いられる、別個の完全にプログラムされたマイクロプロセッサを含むことが好ましい。しかしながら、当業者であれば、I/Oアダプタを用いて、これらの機能を同様に実行できることを理解するであろう。ディスプレイインターフェース140は、1つ又は複数のディスプレイ165をコンピュータシステム100に直接接続するのに用いられる。これらのディスプレイ165は、非インテリジェントすなわち、ダム端末又は完全にプログラム可能なワークステーションとすることができ、システム管理者及びユーザにコンピュータシステム100と通信する能力を提供するために用いられる。しかしながら、ディスプレイインターフェース140は、1つ又は複数のディスプレイ165との通信をサポートするために提供されるが、ユーザ及び他のプロセスとの全ての必要な対話は、例えばウェブクライアントベースのユーザなど、ネットワークインターフェース150を介して行うことができるので、コンピュータシステム100は必ずしもディスプレイ165を必要としない。ネットワークインターフェース150は、ネットワーク170を介して、コンピュータシステム100を他のコンピュータシステム又はワークステーション175に接続するために用いられる。ネットワークインターフェース150は、ネットワーク170が今日のアナログ及び/又はデジタル技術を含むか又は将来の何らかのネットワーキング機構を介するかに関係なく、電子デバイスを相互接続するいずれかの適切な方法を広く表す。さらに、多くの異なるネットワークプロトコルを用いてネットワークを実装することができる。これらのプロトコルは、コンピュータがネットワークにわたって通信するのを可能にする専用コンピュータプログラムである。TCPTransmissionControlProtocol、通信制御プロトコル及びユーザデータグラムプロトコルUserDatagramProtocol、UDPは、適切なネットワークプロトコルの例である。図2は、複数の仮想マシンが外部ネットワークアドレス空間上で同じIPアドレスを共有する、ホストコンピュータのブロック図を示す。図2のホストコンピュータ100は、図1を参照して上述したホストコンピュータ又は類似のコンピュータシステムである。ホストコンピュータ100は、物理ネットワーク214によってネットワーククラウド212に接続される。ネットワーククラウドは、互いに接続された、ホストコンピュータ100と通信するコンピュータの外部ネットワークを表す。ネットワーククラウド212内の他のコンピュータからのデータ通信は、ファイアウォール216を通じてホストコンピュータ100に流れる。データは、異なるデータプロトコルに従って、データパケットの形でネットワーク214によってホストコンピュータに送られる。データパケットは、仮想ネットワークマネージャ123によって、ホストコンピュータ100上に存在する複数の仮想マシン127A、127Bに経路指定される。仮想ネットワークマネージャ123は、物理インターフェース218上でデータパケットを受け取り、次いで、仮想インターフェース220を用いて、データパケットを適切な仮想マシンに送る。仮想ネットワークマネージャは、着信データを管理するインターセプタ124と、発信データを管理するミキサ125とを有する。ミキサ125は、仮想マシン127A、127Bから発信パケットを受け取り、それらを外部ネットワーク212に送る。インターセプタ124は、共有アドレスへの着信トラフィックを遮断し、ターゲットポートに応じて、それを、仮想インターフェースを介して宛先仮想マシンに送るか、又は、宛先ポートが割り当てられたポート範囲のいずれにも適合しない場合は、ホストネットワーキングスタックに戻す。インターセプタは、ポート範囲テーブル126を用いて、各データパケットをどこに送るかを決定する。インターセプタは、データパケット内の宛先ポート番号を調べ、そのデータパケットを、ポート範囲テーブル126によって決定されたような特定の宛先ポート番号を有するデータパケットを受信するように割り当てられた仮想マシンに送る。図3は、外部ネットワーク上でのデータ通信のために用いられるデータパケットの非常に単純化した図を表すブロック図である。データパケットは、当技術分野において周知のTCP又はUDPデータパケットとすることができる。データパケット300は、IPアドレス310及び宛先ポート番号312を含む。データパケットの他の要素314は、ここでは説明されないが当技術分野において周知のものである。図4は、仮想ネットワークマネージャ123図2内のインターセプタ124図2により用いられるポート範囲テーブル126の1つの適切な実装を表すテーブルを示す。ポート範囲テーブル126は、好ましくは、メモリ、データストレージデバイス、又はその両方に格納されたレコードのファイルである。ポート範囲テーブル126は、複数の宛先ポート範囲410と、各ポート範囲についての関連した仮想マシン412とを含む。ポート範囲410は、1つ又は複数の宛先ポート番号を定め、この宛先ポート番号は、データを対応する仮想マシン412に経路指定するために仮想ネットワークマネージャが使用する。示された例において、0-25のポート範囲414は仮想マシン1416と関連付けられ、26-80のポート範囲418は仮想マシン2420と関連付けられる。ポート範囲テーブル126は、他の仮想マシン424と関連付けられたその他の範囲422で示されるような、任意の数の他のポート範囲を含むことができる。ポート範囲テーブル126は、本明細書で説明するように、ポート範囲と仮想マシンとの間の論理条件を示すように、任意の適切なフォーマットで格納することができる。ホストコンピュータ上のポート範囲全体を閉じて仮想マシンのパケット全体をディスエーブルにことができ、従って、ホスト上で仮想マシンを管理する際のシステム管理が簡単になる。TCP及びUDPプロトコルにおいては、単一のIPアドレスは、限られた数の宛先ポートを有し、1つのIPアドレスを使用するとき、通常、ポート番号が、アプリケーション間で重複することはない。1つのIPアドレスは、仮想マシン上の1つだけのアプリケーションが、特定のポートへの通信のレシーバとなることを可能にし得る。例えば、本明細書で説明されるように、1つだけの仮想マシンが、1つだけのIPアドレスが存在する通信のために、TCPポート21を使用することができる。仮想マシン可視のアドレス空間が外部ネットワークアドレス空間に属するのを可能にすることによって、仮想マシンのアドレス空間が、ピアツーピアプロトコル及びボイスオーバーIPプロトコルを含む全てのプロトコルに対してトランスペアレントになる。ミキサ125及びインターセプタ124の両方とも、ホストファイアウォール216の後方に配置されるので、仮想マシンを外的脅威から保護する。ホストシステム及びクライアントシステムのためのファイアウォールは変わらないままとすることができる。共有IPアドレスはホストにはローカルと見られるので、ホストは、いずれのパケットルールも、それがローカルルールであり、それをローカルアプリケーションに対して指示するかのように扱う。1つだけのIPアドレスが用いられるので、二次的ファイアウォール又はルールセットは必要ない。上述の好ましい例において、全ての仮想マシンは、ネットワークインターフェース上で同じIPアドレスを使用するように構成される。各々の仮想マシンには、1又は複数の不連続の範囲から成ることができる一意のポート範囲が割り当てられる。着信TCP又はUDPパケットを受け入れる全てのアプリケーションは、それらが唯一の既知の着信/発信ポートであるので、割り当てられた範囲からのポートだけを使用するように構成される。仮想マシンのオペレーティングシステムは、割り当てられた範囲からの一時ポートephemeralportを使用するように構成することができる。一時ポートは、TCP及びUDPパケットを発信する際の一時的なポートとして使用される。仮想マシンは、ポート範囲テーブル内の、仮想マシンに割り当てられたのと同じポート範囲内で発信メッセージについての送信元ポートを割り当てるので、返信メッセージが適切な仮想マシンに返される。ホストは、仮想マシンに割り当てられた共有IPアドレスに送られたパケットを遮断し、パケット宛先ポート番号に基づいてこれを宛先マシンに転送するように構成される。全ての発信パケットは、典型的には、修正されずに外部ネットワークに伝送される。ホストも共有IPアドレスを用いる場合には、一意のポート範囲がホストに割り当てられる。この場合、ホストは、この範囲からの恒久的ポート及び一時ポートを割り当てる。ホストが受け取った、共有アドレスへのパケットは、インターセプタによって遮断され、仮想マシンに向けられる。ホストが共有IPを使用する場合、仮想マシンのポート範囲の1つに合致しない全てのパケットが、ホストネットワーキングスタックに返される。図5は、外部ネットワークアドレス空間上で同じIPアドレスを共有する複数の仮想マシンを有するコンピュータシステムのブロック図を示す。図5のコンピュータシステムは、図2に示されるシステムと類似しているが、システムをどのように複数の物理ホストコンピュータに拡大縮小できるかの一例を示している。図5において、ホストコンピュータ510Aは、図2に説明されるホストコンピュータ100と同様に仮想ネットワークマネージャ123を有する。図2のシステムとは対照的に、図5の仮想ネットワークマネージャ123は、1つ又は複数の他のホスト上に存在する仮想マシンと通信する。示される例において、仮想ネットワークマネージャ123は、データパケットをホストB510B上の仮想マシンA125A及び仮想マシンB125B、並びにホストC510C上の仮想マシンC125C及び仮想マシンD125Dに送る。この場合、仮想ネットワークマネージャは、異なる物理ホストコンピュータ上の仮想マシンへの通信を、ホストコンピュータ510A、510B、510Cの間の仮想ネットワークではなく、物理ネットワーク512上で処理する。他のホストコンピュータ上の仮想マシンへの接続には、任意の適切な物理ネットワーク接続を用いることができる。このアーキテクチャにより、IPアドレスを変更せずに、仮想マシンが異なる物理ホストに移動することが可能になる。図6は、ここで特許請求されるような、外部ネットワーク上の同じIPアドレスを複数の仮想マシンに割り当てる方法600を示す。方法600のステップは、好ましくは、仮想ネットワークマネージャ123図1によって実行されるが、方法の一部は、コンピュータシステムと関連した他のソフトウェアにより、又はシステム管理者により実行することもできる。初めに、単一のIPアドレスを用いるように複数の仮想マシンを構成するステップ610。次に、各仮想マシンについてのポート範囲を有するようにポート範囲テーブルを構成するステップ620。次いで、ポート範囲テーブル内の仮想マシンについての割り当てられたポート範囲の送信元ポート番号を用いるように、仮想マシンの各々の一時ポートを構成するステップ630。次に、データパケットの宛先ポート番号に基づいて、物理インターフェース上の着信データを複数の仮想マシンに経路指定するステップ640。その後、方法は終了する。図7は、ポート範囲テーブルに基づいて、物理インターフェース上のデータを複数の仮想マシンに経路指定する方法630を示す。方法630は、前の段落で説明した例における図6のステップ630を実行する一例である。方法600のステップは、好ましくは、仮想ネットワークマネージャ123図1によって実行されるが、方法の一部分は、コンピュータシステムと関連した他のソフトウェアによって実行することもできる。方法630は、物理インターフェース上の新しい着信データパケットの各々について実行されるステップ710。次に、ファイアウォールによってデータパケットが検査されるステップ720。データパケットがファイアウォールにより許可されない場合ステップ720=ノー、データパケットは破棄されステップ730、方法はステップ710に戻る。データパケットがファイアウォールにより許可された場合ステップ720=イエス、データパケットがTCPプロトコル又はUDPプロトコルに準拠するかどうかをチェックするステップ740。データパケットがTCPプロトコル又はUDPプロトコルに準拠しない場合ステップ740=ノー、パケットを返しステップ750、ステップ710に戻る。データパケットがTCPプロトコル又はUDPプロトコルに準拠する場合ステップ740=イエス、パケットの宛先ポート番号が、ポート範囲テーブルの仮想マシンについてのポート範囲内の宛先ポート番号と合致するかどうかを判断する。パケットの宛先ポート番号が、ポート範囲テーブルの宛先ポート番号と合致しない場合ステップ760=ノー、そのパケットを返しステップ750、ステップ710に戻る。パケットの宛先ポート番号が、ポート範囲テーブル内の宛先ポート番号と合致する場合ステップ760=イエス、データパケット内の宛先ポート番号に応じて、データパケットを仮想マシンのうちの一意のものに転送しステップ770、ステップ710に戻る。上述の実施形態において、パケットを転送するための一意の仮想マシンの仮想マシン番号は、データパケット内の宛先ポート番号を含むポート範囲に対応する、ポート範囲テーブル内に格納された仮想マシン番号を選択することによって決定される。図面内の流れ図及びブロック図は、本発明の種々の実施形態によるシステム、方法、及びコンピュータプログラム製品の可能な実装のアーキテクチャ、機能、及び動作を示す。この点で、流れ図又はブロック図の中の各ブロックは、特定の1つ又は複数の論理機能を実装するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装においては、ブロックに記載された機能が図に示された順序通りに行われない場合があることにも留意すべきである。例えば、逐次的に示された2つのブロックは、関与する機能に応じて、実際には、実質的に同時に実行されることもあり、ときにはブロックが逆順に実行されることもある。ブロック図及び/又は流れ図の各ブロック、及び、ブロック図及び/又は流れ図におけるブロックの組み合わせは、指定された機能又は動作を行う専用ハードウェアに基づくシステムによって、又は専用ハードウェアとコンピュータ命令との組み合わせによって、実装できることにも留意されたい。当業者には認識されるように、本発明の態様は、システム、方法又はコンピュータプログラム製品として具体化することができる。従って、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態ファームウェア、常駐ソフトウェア、マイクロコード等を含む、又はソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形を取ることができ、本明細書においては、これらを全て、一般的に、回路、モジュール又はシステムと呼ぶことがある。さらに、本発明の態様は、媒体内に具体化されたコンピュータ可読プログラムコードを有する、1つ又は複数のコンピュータ可読媒体内に具体化されたコンピュータプログラム製品の形を取ることができる。1つ又は複数のコンピュータ可読媒体のいずれの組み合わせも利用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子的、磁気的、光学的、電磁気的、赤外線若しくは半導体のシステム、装置若しくはデバイス、又は上記のもののいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例非網羅的なリストとして、以下のもの、即ち、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリRAM、読み出し専用メモリROM、消去可能なプログラム可能読み出し専用メモリEPROM又はフラッシュメモリ、光ファイバ、ポータブルコンパクトディスク型読み出し専用メモリCD-ROM、光記憶装置、磁気記憶装置、又は上記のもののいずれかの適切な組み合わせが挙げられる。本明細書の文脈においては、コンピュータ可読ストレージ媒体は、命令実行システム、装置若しくはデバイスによって又はそれらと関連して用いるためのプログラムを収容又は格納することが可能な、いずれかの有形媒体とすることができる。コンピュータ可読信号媒体は、コンピュータ可読プログラムコードが、例えばベースバンド内に、又は搬送波の一部としてその中に具体化された、伝搬データ信号を含むことができる。このような伝搬信号は、これらに限定されるものではないが、電磁気、光、又はこれらのいずれかの適切な組み合わせを含む、種々の異なる形態のいずれかを取ることができる。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではなく、かつ、命令実行システム、装置若しくはデバイスによって又はこれらと関連して用いるためのプログラムを通信し、伝搬し又は搬送することができる、任意のコンピュータ可読媒体とすることができる。コンピュータ可読媒体上に具体化されたプログラムコードは、これらに限定されるものではないが、無線、有線、光ファイバケーブル、RF等、又は上記のもののいずれかの適切な組み合わせを含む、任意の適切な媒体を用いて伝送することができる。本発明の態様のための動作を実行するためのコンピュータプログラムコードは、JavaJava並びに全てのJavaベースの商標及びロゴは、Oracle及び/又はその子会社の商標又は登録商標である、Smalltalk、C等のようなオブジェクト指向型プログラミング言語、及びCプログラミング言語又は同様のプログラミング言語のような従来の手続き型プログラミング言語を含む、1つ又は複数のプログラミング言語のいずれかの組み合わせで記述することができる。プログラムコードは、完全にユーザのコンピュータ上で実行されるか、一部がユーザのコンピュータ上で、独立型ソフトウェアパッケージとして実行されるか、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行されるか、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合がある。後者のシナリオにおいては、遠隔コンピュータは、ローカルエリアネットワークLAN若しくは広域ネットワークWANを含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続されるか、又は、例えば、インターネットサービスプロバイダを用いたインターネットを通じて外部コンピュータへの接続がなされる場合がある。本発明の態様は、本発明の実施形態による方法、装置システム及びコンピュータプログラム製品の流れ図及び/又はブロック図を参照して以下で説明される。流れ図及び/又はブロック図の各ブロック、及び、流れ図及び/又はブロック図におけるブロックの組み合わせは、コンピュータプログラム命令によって実装することができることが理解されるであろう。これらのコンピュータプログラム命令を汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを生成し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、流れ図及び/又はブロック図の1つ又は複数のブロック内で指定された機能/動作を実装するための手段を生成するようにすることができる。これらのコンピュータ命令を、コンピュータ、他のプログラム可能データ処理装置、又はその他のデバイスを特定の方法で機能するように命令することができるコンピュータ可読媒体に格納し、それにより、そのコンピュータ可読媒体に格納された命令が、流れ図及び/又はブロック図の1つ又は複数のブロック内で指定された機能/動作を実装する命令を含む製品を生成するようにすることもできる。コンピュータプログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又はその他のデバイスにロードして、コンピュータ、他のプログラム可能データ処理装置、又はその他のデバイス上で一連の動作ステップを行わせて、コンピュータ実装プロセスを生成し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、流れ図及び/又はブロック図の1つ又は複数のブロック内で指定された機能/動作を実行するためのプロセスを提供するようにすることもできる。当業者であれば、特許請求項の範囲内で多くの変形が可能であることを認識するであろう。本明細書での例は時間に関して説明されるが、これらの他のタイプの閾値が、特許請求の範囲内に含まれることが明らかに意図されている。従って、本開示が上記に特に示され、述べられるが、当業者であれば、特許請求の範囲から逸脱することなく、これら及び他の形態及び細部の変更を成し得ることを理解するであろう。