(57)【要約】【解決手段】  イーサネットパケットの転送が開示される。このイーサネットパケットの転送は、着信パケットを受信し、少なくとも一部には、着信パケットに含まれる宛先インターネットプロトコル（ＩＰ）アドレスの少なくとも一部に基づいてハッシュ演算を実施することに基づいて、値を決定し、対応するインデックス値が見つかるか否かを決定するために、インデックス値と当該インデックス値のそれぞれに対応するデータセットとを記憶している事前に確立されたルックアップテーブルに照らして上記値を比較し、少なくとも一部には、上記対応するインデックス値が上記事前に確立されたルックアップテーブルの中で見つかるか否かに基づいて、上記着信パケットに関係付けられる宛先メディアアクセスコントロール（ＭＡＣ）アドレスを決定し、当該決定された宛先ＭＡＣアドレスに関係付けられた仮想マシンに、上記着信パケットを転送すること、を含む。【選択図】図２
2016509822.tif 000002
【特許請求の範囲】
【請求項１】
イーサネットパケットを転送するためのシステムであって、
１つ以上のプロセッサであって、
着信パケットを受信し、
少なくとも一部には、前記着信パケットに含まれる宛先インターネットプロトコル（ＩＰ）アドレスの少なくとも一部に基づいてハッシュ演算を実施することに基づいて、値を決定し、
対応するインデックス値が見つかるか否かを決定するために、事前に確立されたルックアップテーブルに照らして前記値を比較し、前記事前に確立されたルックアップテーブルは、インデックス値と、前記インデックス値のそれぞれに対応するデータセットとを記憶しており、
少なくとも一部には、前記対応するインデックス値が前記事前に確立されたルックアップテーブルのなかで見つかるか否かに基づいて、前記着信パケットに関係付けられる宛先メディアアクセスコントロール（ＭＡＣ）アドレスを決定し、
前記決定された宛先ＭＡＣアドレスに関係付けられた仮想マシンに、前記着信パケットを転送するように構成されている１つ以上のプロセッサと、
前記１つ以上のプロセッサに接続され、前記１つ以上のプロセッサに命令を提供するように構成されている１つ以上のメモリと、
を備える、
システム。
【請求項２】
請求項１に記載のシステムであって、
前記少なくとも一部には、前記着信パケットに含まれる宛先ＩＰアドレスの少なくとも一部に基づいてハッシュ演算を実施することに基づいて決定された、前記値は、前記ハッシュ演算によって出力されるハッシュ値である、システム。
【請求項３】
請求項１に記載のシステムであって、
前記少なくとも一部には、前記着信パケットに含まれる宛先ＩＰアドレスの少なくとも一部に基づいてハッシュ演算を実施することに基づいて決定された、前記値は、前記ハッシュ演算によって出力されるハッシュ値の関数である、システム。
【請求項４】
請求項１に記載のシステムであって、
前記対応するインデックス値が前記事前に確立されたルックアップテーブルの中で見つからない場合は、前記着信パケットに関係付けられる前記宛先ＭＡＣアドレスは、前記着信パケットに含まれる宛先ＭＡＣアドレスに関係付けられた値を含むように決定される、システム。
【請求項５】
請求項１に記載のシステムであって、
前記対応するインデックス値は、前記事前に確立されたルックアップテーブルにおける１つ以上のデータセットに対応している、システム。
【請求項６】
請求項５に記載のシステムであって、
前記１つ以上のデータセットの各データセットは、対応するＩＰアドレスと、ローカルＭＡＣアドレスと、グローバルＭＡＣアドレスとを含む、システム。
【請求項７】
請求項５に記載のシステムであって、
前記対応するインデックス値が前記事前に確立されたルックアップテーブルの中で見つかると、前記１つ以上のプロセッサは、更に、
前記前記対応するインデックス値に対応する前記１つ以上のデータセットから、前記着信パケットに含まれる前記宛先ＩＰアドレスに一致するＩＰアドレスを含む一致するデータセットを決定し、
前記着信パケットに含まれる宛先ＭＡＣアドレスが、前記一致するデータセットに関係付けられたグローバルＭＡＣアドレスに一致するか否かを決定するように構成されている、システム。
【請求項８】
請求項７に記載のシステムであって、
前記着信パケットに含まれる前記宛先ＭＡＣアドレスが、前記一致するデータセットに関係付けられた前記グローバルＭＡＣアドレスに一致しない場合には、前記着信パケットに関係付けられる前記宛先ＭＡＣアドレスは、前記着信パケットに含まれる前記宛先ＭＡＣアドレスに関係付けられた値を含むように決定される、システム。
【請求項９】
請求項７に記載のシステムであって、
前記着信パケットに含まれる前記宛先ＭＡＣアドレスが、前記一致するデータセットに関係付けられた前記グローバルＭＡＣアドレスに一致する場合には、前記着信パケットに関係付けられる前記宛先ＭＡＣアドレスは、前記一致するデータセットに関係付けられたローカルＭＡＣアドレスに関係付けられた値を含むように決定される、システム。
【請求項１０】
請求項１に記載のシステムであって、
前記１つ以上のプロセッサは、更に、
発信パケットを受信し、
少なくとも一部には、前記発信パケットに含まれる発信元ＩＰアドレスの少なくとも一部に対して別のハッシュ演算を実施することに基づいて、別の値を決定し、
別の対応するインデックス値が見つけられるか否かを決定するために、前記事前に確立されたルックアップテーブルに照らして前記別の値を比較し、
少なくとも一部には、前記別の対応するインデックス値に対応するデータセットに基づいて、前記発信パケットに関係付けられる発信元ＭＡＣアドレスを決定するように構成されている、システム。
【請求項１１】
イーサネットパケットを転送するための方法であって、
着信パケットを受信し、
１つ以上のプロセッサによって、少なくとも一部には、前記着信パケットに含まれる宛先インターネットプロトコル（ＩＰ）アドレスの少なくとも一部に基づいてハッシュ演算を実施することに基づいて、値を決定し、
対応するインデックス値が見つかるか否かを決定するために、事前に確立されたルックアップテーブルに照らして前記値を比較し、前記事前に確立されたルックアップテーブルは、インデックス値と、前記インデックス値のそれぞれに対応するデータセットとを記憶しており、
少なくとも一部には、前記対応するインデックス値が前記事前に確立されたルックアップテーブルの中で見つかるか否かに基づいて、前記着信パケットに関係付けられる宛先メディアアクセスコントロール（ＭＡＣ）アドレスを決定し、
前記決定された宛先ＭＡＣアドレスに関係付けられた仮想マシンに、前記着信パケットを転送すること、
を備える方法。
【請求項１２】
請求項１１に記載の方法であって、
前記対応するインデックス値が前記事前に確立されたルックアップテーブルの中で見つからない場合には、前記着信パケットに関係付けられる前記宛先ＭＡＣアドレスは、前記着信パケットに含まれる宛先ＭＡＣアドレスに関係付けられた値を含むように決定される、方法。
【請求項１３】
請求項１１に記載の方法であって、
前記対応するインデックス値は、前記事前に確立されたルックアップテーブルにおける１つ以上のデータセットに対応している、方法。
【請求項１４】
請求項１３に記載の方法であって、
前記１つ以上のデータセットの各データセットは、対応するＩＰアドレスと、ローカルＭＡＣアドレスと、グローバルＭＡＣアドレスとを含む、方法。
【請求項１５】
請求項１３に記載の方法であって、
前記対応するインデックス値が前記事前に確立されたルックアップテーブルの中で見つかると、更に、
前記前記対応するインデックス値に対応する前記１つ以上のデータセットから、前記着信パケットに含まれる前記宛先ＩＰアドレスに一致するＩＰアドレスを含む一致するデータセットを決定し、
前記着信パケットに含まれる宛先ＭＡＣアドレスが、前記一致するデータセットに関係付けられたグローバルＭＡＣアドレスに一致するか否かを決定すること、
を備える方法。
【請求項１６】
請求項１５に記載の方法であって、
前記着信パケットに含まれる前記宛先ＭＡＣアドレスが、前記一致するデータセットに関係付けられた前記グローバルＭＡＣアドレスに一致しない場合には、前記着信パケットに関係付けられる前記宛先ＭＡＣアドレスは、前記着信パケットに含まれる前記宛先ＭＡＣアドレスに関係付けられた値を含むように決定される、方法。
【請求項１７】
請求項１５に記載の方法であって、
前記着信パケットに含まれる前記宛先ＭＡＣアドレスが、前記一致するデータセットに関係付けられた前記グローバルＭＡＣアドレスに一致する場合には、前記着信パケットに関係付けられる前記宛先ＭＡＣアドレスは、前記一致するデータセットに関係付けられたローカルＭＡＣアドレスに関係付けられた値を含むように決定される、方法。
【請求項１８】
請求項１１に記載の方法であって、更に、
発信パケットを受信し、
少なくとも一部には、前記発信パケットに含まれる発信元ＩＰアドレスの少なくとも一部に対して別のハッシュ演算を実施することに基づいて、別の値を決定し、
別の対応するインデックス値が見つけられるか否かを決定するために、前記事前に確立されたルックアップテーブルに照らして前記別の値を比較し、
少なくとも一部には、前記別の対応するインデックス値に対応するデータセットに基づいて、前記発信パケットに関係付けられる発信元ＭＡＣアドレスを決定すること、
を備える方法。
【請求項１９】
非一時的なコンピュータ読み取り可能ストレージ媒体に実装された、イーサネットパケットを転送するためのコンピュータプログラム製品であって、
着信パケットを受信するためのコンピュータ命令と、
少なくとも一部には、前記着信パケットに含まれる宛先インターネットプロトコル（ＩＰ）アドレスの少なくとも一部に基づいてハッシュ演算を実施することに基づいて、値を決定するためのコンピュータ命令と、
対応するインデックス値が見つかるか否かを決定するために、事前に確立されたルックアップテーブルに照らして前記値を比較するためのコンピュータ命令と、前記事前に確立されたルックアップテーブルは、インデックス値と、前記インデックス値のそれぞれに対応するデータセットとを記憶しており、
少なくとも一部には、前記対応するインデックス値が前記事前に確立されたルックアップテーブルの中で見つかるか否かに基づいて、前記着信パケットに関係付けられる宛先メディアアクセスコントロール（ＭＡＣ）アドレスを決定するためのコンピュータ命令と、
前記決定された宛先ＭＡＣアドレスに関係付けられた仮想マシンに、前記着信パケットを転送するためのコンピュータ命令と、
を備えるコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願の相互参照］
本出願は、あらゆる目的のために、参照によって本明細書に組み込まれる、発明の名称を「ＭＥＴＨＯＤ  ＡＮＤ  ＤＥＶＩＣＥ  ＦＯＲ  ＦＯＲＷＡＲＤＩＮＧ  ＥＴＨＥＲＮＥＴ  ＭＥＳＳＡＧＥＳ（イーサネットメッセージを転送するための方法及び装置）」とする、２０１３年３月６日に出願された中国特許出願第２０１３１００７１２６１．８号に基づく優先権を主張する。
【０００２】
本出願は、コンピュータ通信の分野に関する。本出願は、特に、イーサネットパケットを転送するための技術に関する。
【背景技術】
【０００３】
イーサネット技術では、コアスイッチの各ポートが、複数のホストコンピュータ（物理マシン）にカスケード接続する。更に、コアスイッチは、通常は、全二重モードで動作する。すなわち、コアスイッチは、多数のポートペアに同時に接続することによって、各ペアがあたかも通信メディアを独占しているかのように物理マシンと双方向に通信して競合なくデータを伝送することを可能にする。
【０００４】
各物理マシンには、１つ以上の仮想マシンが実装可能である。各仮想マシンは、事前に割り当てられたインターネットプロトコル（ＩＰ）アドレスと、事前に割り当てられたマシンアクセスコントロール（ＭＡＣ）アドレスとを有する。コアスイッチは、コアスイッチの各ポートと、仮想マシンに関係付けられた各ＭＡＣアドレスとの間の対応関係を指定するデータを含む、ＭＡＣアドレステーブルを記憶していてよい。コアスイッチは、記憶されたＭＡＣアドレステーブルに基づいて、各仮想マシン間において通信の引き渡しを行う。
【０００５】
コアスイッチにおいて送信者（第１の物理マシン）からパケットが受信されると、コアスイッチは、ＭＡＣアドレステーブルを使用して、パケットに含まれる宛先ＭＡＣアドレスに対応するポートを決定し、当該ポートに接続された受信者（第２の物理マシン）にパケットを送信する。着信パケットであるパケットを第２の物理マシンがコアスイッチから受信すると、第２の物理マシンは、着信パケットに含まれる宛先ＭＡＣアドレスに基づいて、その対応するＭＡＣアドレスに関係付けられた仮想マシンに着信パケットを転送する。
【０００６】
同様に、発信パケットであるパケットを物理マシンが仮想マシンから受信すると、この物理マシンは、この発信パケットをコアスイッチに転送する、次いで、コアスイッチは、やはり、記憶されたＭＡＣアドレステーブルにしたがって、対応する宛先物理マシンにこのパケットを転送する。
【０００７】
しかしながら、コアスイッチのＭＡＣアドレステーブルの容量には、限りがある。クラウドコンピューティング環境において仮想マシンの数が増すにつれて、コアマシンのＭＡＣアドレステーブルが持つ限られた容量では、更に多くの仮想マシンに対してこれ以上は対応できなくなる恐れがある。
【０００８】
コアスイッチに関係付けられたハードウェアを交換することなく仮想マシンの使用を増やすためには、イーサネットパケットのＭＡＣネットワークアドレス変換（ＮＡＴ）ベースの転送を使用することができる。この技術は、（異なるローカルＭＡＣアドレス及びＩＰアドレスを有する）異なる複数の仮想マシンに、１つの共通のＭＡＣアドレスを割り当てる。複数の異なる仮想マシンに割り当てられるこの共通ＭＡＣアドレスは、「グローバルＭＡＣアドレス」と呼ばれる。更に、各グローバルＭＡＣアドレスと、それに対応する仮想マシンＩＰアドレス及びローカルＭＡＣアドレスとの間の対応関係を記憶する１つのルックアップテーブルが、各物理マシンにおいて維持される。
【０００９】
ある仮想マシンから、その仮想マシンが動作している物理マシンにおいてパケット（例えば発信パケット）が受信されると、その物理マシンは、パケット内の発信元ＩＰアドレスを、そのＩＰアドレスに対応するグローバルＭＡＣアドレスをルックアップテーブルのなかで検索するための基準として使用し、見つかったグローバルＭＡＣアドレスを、パケット内の発信元ＭＡＣアドレスの代わりにする。物理マシンは、次いで、パケットをコアスイッチに転送する。同様に、物理マシンにおいてコアスイッチからパケット（例えば着信パケット）が受信されると、その物理マシンは、パケット内の宛先ＩＰアドレスを、このＩＰアドレスに対応するローカルＭＡＣアドレスをルックアップテーブルで検索するための基準として使用する。例えば、物理マシンは、一致するＩＰアドレスが見つかるまで、パケット内の宛先ＩＰアドレスを、ルックアップテーブルにおいて各仮想マシンに関係付けられたＩＰアドレスと比較することができる。次いで、物理マシンは、一致するＩＰアドレスに対応するローカルＭＡＣアドレス及びグローバルＭＡＣアドレスを決定しなければならない。次に、物理マシンは、一致するＩＰアドレスに対応するローカルＭＡＣアドレスを、パケット内の宛先ＭＡＣアドレスの代わりにし、そのパケットを、このローカルＭＡＣアドレスに関係付けられた仮想マシンに転送する。コアスイッチによって記憶されたＭＡＣアドレステーブルは、グローバルＭＡＣアドレスを記録するだけでよく、尚且つ、グローバルＭＡＣアドレスは、複数の仮想マシンのローカルＭＡＣアドレスに対応することができるので、この技術によって、コアスイッチによって維持されるＭＡＣアドレステーブルに記憶する必要があるデータの量が削減され、したがって、より多くの仮想マシンがサポート可能になる。
【００１０】
しかしながら、ＭＡＣネットワークアドレス変換技術の使用は、コアスイッチによって記憶されるＭＡＣアドレステーブルのサイズを縮小することはできるが、ＭＡＣネットワークアドレス変換技術は、比較的低速であり、イーサネットパケットの転送には非効率的である。
【図面の簡単な説明】
【００１１】
本発明の様々な実施形態が、以下の詳細な説明及び添付の図面において開示される。
【００１２】
【図１】イーサネットパケットを転送するためのシステムの一実施形態を示した図である。
【００１３】
【図２】着信パケットを仮想マシンに転送するためのプロセスの一実施形態を示したフローチャートである。
【００１４】
【図３】着信パケットを仮想マシンに転送するプロセスの一実施形態を示したフローチャートである。
【００１５】
【図４】着信パケット及び発信パケットに対してＭＡＣネットワークアドレス変換技術を実施する一例を示したフローチャートである。
【００１６】
【図５】ＩＰパケットフォーマット及びＡＲＰメッセージフォーマットの例を示した図である。
【００１７】
【図６】イーサネットパケットを転送するためのシステムの一実施形態を示した図である。
【発明を実施するための形態】
【００１８】
本発明は、プロセス、装置、システム、合成物、コンピュータ読み取り可能なストレージ媒体に実装されたコンピュータプログラム製品、並びに／又は結合先のメモリに記憶された命令及び／若しくは結合先のメモリによって提供される命令を実行するように構成されたプロセッサなどのプロセッサを含む、数々の形態で実現することができる。本明細書では、これらの実現形態、又は本発明がとりえるその他のあらゆる形態を、技術と称することができる。総じて、開示されるプロセスの各ステップの順番は、本発明の範囲内で変更可能である。別途明記されない限り、タスクを実施するように構成されるものとして説明されるプロセッサ又はメモリなどのコンポーネントは、所定時にタスクを実施するように一時的に構成された汎用コンポーネントとして、又はタスクを実施するように製造された特殊コンポーネントとして実装可能である。本明細書で使用される「プロセッサ」という用語は、コンピュータプログラム命令などのデータを処理するように構成された１つ以上のデバイス、回路、並びに／又は処理コアを言う。
【００１９】
本発明の原理を例示した添付の図面とともに、以下で、本発明の１つ以上の実施形態の詳細な説明が提供される。本発明は、このような実施形態との関わりのもとで説明されるが、いずれの実施形態にも限定されない。本発明の範囲は、特許請求の範囲によってのみ限定され、本発明は、数々の代替形態、変更形態、及び均等物を包含している。以下の説明では、本発明の完全な理解を与えるために、数々の具体的詳細が明記されている。これらの詳細は、例示を目的として提供されるものであり、本発明は、これらの詳細の一部又は全部を伴わずとも、特許請求の範囲にしたがって実施可能である。明瞭を期するために、本発明に関係した技術分野で知られる技術要素は、本発明が不必要に不明瞭にされないように、詳細な説明を省略されている。
【００２０】
本明細書では、イーサネットパケットの転送の実施形態が説明される。本明細書で使用される「着信パケット」という用語は、物理マシンにおいてコアスイッチから受信され、その物理マシンで動作している適切な仮想マシンにその物理マシンによって転送される、１つ以上のイーサネットパケットを言う。本明細書で使用される「発信パケット」という用語は、物理マシンで動作しているエンティティ（例えば仮想マシン）からその物理マシンによって受信され、その物理マシンによってコアスイッチに転送される、１つ以上のイーサネットパケットを言う。物理マシンにおいて受信された着信パケットは、その物理マシンによって、その物理マシンに記憶された事前に確立されたルックアップテーブルを使用して、その物理マシンで動作している適切な仮想マシンに転送される。各種の実施形態において、事前に確立されたルックアップテーブルは、各種のインデックス値（例えば数値）と、各インデックス値に対応する１つ以上のデータセットとを含む。各データセットは、物理マシンで動作している特定の仮想マシンに関係付けられたデータを含む。例えば、データセットは、仮想マシンに対応する、ＩＰアドレスと、ローカルＭＡＣアドレスと、グローバルＭＡＣアドレスとを含むことができる。幾つかの実施形態では、ローカルＭＡＣアドレスが、仮想マシンに特有である（すなわち、物理マシンで動作している各仮想マシンは、それぞれ別個のローカルＭＡＣアドレスを有する）のに対し、グローバルＭＡＣアドレスは、１つ以上の仮想マシンに共通である。
【００２１】
着信パケットについて、少なくとも一部には、イーサネット宛先ＩＰアドレスに対してハッシュ演算を実施することに基づいて、値が決定される。その値について、事前に確立されたルックアップテーブルからインデックス値が決定される。対応するインデックス値は、１つ以上のデータセットからなるデータセットグループに対応しており、各データセットは、１つの仮想マシンに関係付けられるので、対応するインデックス値は、複数の仮想マシンからなる関連する仮想マシングループに対応することができる。１つ以上のデータセットからなるこのデータセットグループから、着信パケットに含まれるイーサネット宛先ＩＰアドレスに一致するＩＰアドレスを含む一致するデータセット（及びそれに関係付けられた仮想マシン）が決定される。着信パケットに含まれるイーサネット宛先ＭＡＣアドレスが、一致するデータセットに含まれるグローバルＭＡＣアドレスと比較される。着信パケットの宛先ＭＡＣアドレスが、一致するデータセットのグローバルＭＡＣアドレスに一致する場合は、着信パケットの当初のイーサネット宛先ＭＡＣアドレスの値は、一致するデータセットのローカルＭＡＣアドレスの値に置き換えられる。物理マシンは、次いで、着信パケットを、その着信パケットのヘッダに含まれるローカルＭＡＣアドレスに関係付けられた仮想マシンに転送する。したがって、ある着信パケットについて、事前に確立されたルックアップテーブルを使用して、対応するインデックス値に基づいて、関連する１つ以上の仮想マシンからなる仮想マシングループを迅速に識別することができ、次いで、着信パケットに含まれる宛先ＩＰアドレスを、データセットグループの各データセットに関係付けられたＩＰアドレスと突き合わせることに基づいて、仮想マシングループのなかで、着信パケットの転送先となる仮想マシンを識別することができる。事前に確立されたルックアップテーブルの使用は、着信パケットに含まれる宛先ＩＰアドレスを、物理マシンで動作している各仮想マシンに関係付けられたＩＰアドレスと比較する従来の技術と比べて、着信パケットの転送先となる適切な仮想マシンを、より効率的に決定する技術である。
【００２２】
図１は、イーサネットパケットを転送するためのシステムの一実施形態を示した図である。この例では、システム１００は、物理マシン１０２と、コアスイッチ１０４と、物理マシン１０６とを含む。この例では、物理マシン１０２では仮想マシンＡ、Ｂ、及びＣが動作しており、物理マシン１０６では仮想マシンＤ、Ｅ、及びＦが動作している。物理マシン１０２には、事前に確立されたルックアップテーブルであるルックアップテーブル１０８が記憶され、物理マシン１０６には、別の事前に確立されたルックアップテーブルであるルックアップテーブル１１０が記憶される。ルックアップテーブル１０８は、インデックス値と、各インデックス値に対応する１つ以上のデータセットとを記憶する。ルックアップテーブル１０８に記憶された各データセットは、物理マシン１０２で動作している仮想マシンに関係付けられ、少なくとも、その仮想マシンに関係付けられたＩＰアドレスと、ローカルＭＡＣアドレスと、グローバルＭＡＣアドレスとを含む。ルックアップテーブル１１０は、インデックス値と、各インデックス値に対応する１つ以上のデータセットとを記憶する。ルックアップテーブル１１０に記憶された各データセットは、物理マシン１０６で動作している仮想マシンに関係付けられ、少なくとも、その仮想マシンに関係付けられたＩＰアドレスと、ローカルＭＡＣアドレスと、グローバルＭＡＣアドレスとを含む。ルックアップテーブル１０８又はルックアップテーブル１１０のいずれにおいても、１つ以上のデータセット（及びそれに対応する１つ以上の仮想マシン）が、１つのインデックス値に対応していてよい。
【００２３】
物理マシン１０２で動作している仮想マシン又は別のエンティティが、物理マシン１０６で動作している仮想マシンに、コアスイッチ１０４を通じてイーサネットパケットを送信することができる。例えば、物理マシン１０２は、その発信パケットについて、少なくとも一部にはルックアップテーブル１０８に基づいて、適切なイーサネット発信元ＭＡＣアドレスを決定することができる。例えば、物理マシン１０２で動作している仮想マシンからの発信パケットは、コアスイッチ１０４に転送され、コアスイッチ１０４は、記憶されたＭＡＣアドレステーブルを使用して、パケットに含まれる宛先ＭＡＣアドレスに対応するポートを決定し、このポートに接続された受信物理マシンである物理マシン１０６にパケットを送信する。以下で詳しく説明されるように、物理マシン１０６は、このパケットをコアスイッチ１０４から着信パケットとして受信すると、ルックアップテーブル１１０を使用し、着信パケットに含まれる宛先ＭＡＣアドレスに基づいて、物理マシン１０６で動作している適切な仮想マシンに着信パケットを転送する。同様に、物理マシン１０６で動作している仮想マシン又は別のエンティティが、物理マシン１０２で動作している仮想マシンに、コアスイッチ１０４を通じてイーサネットパケットを送信することができる。例えば、物理マシン１０６は、その発信パケットについて、少なくとも一部にはルックアップテーブル１１０に基づいて、適切なイーサネット発信元ＭＡＣアドレスを決定することができる。例えば、物理マシン１０６で動作している仮想マシンからの発信パケットは、コアスイッチ１０４に転送され、コアスイッチ１０４は、記憶されたＭＡＣアドレステーブルを使用して、パケットに含まれる宛先ＭＡＣアドレスに対応するポートを決定し、このポートに接続された受信物理マシンである物理マシン１０２にパケットを送信する。以下で詳しく説明されるように、物理マシン１０２は、このパケットをコアスイッチ１０４から着信パケットとして受信すると、ルックアップテーブル１０８を使用し、着信パケットに含まれる宛先ＭＡＣアドレスに基づいて、物理マシン１０２で動作している適切な仮想マシンに着信パケットを転送する。
【００２４】
図２は、着信パケットを仮想マシンに転送するためのプロセスの一実施形態を示したフローチャートである。幾つかの実施形態では、プロセス２００は、図１のシステム１００において実行される。具体的には、プロセス２００は、図１のシステム１００の物理マシン１０２又は物理マシン１０６のいずれかで実行することができる。
【００２５】
プロセス２００は、受信された着信パケットを、物理マシンがそこで動作している適切な仮想マシンに転送するプロセスの一例を説明している。
【００２６】
２０２では、着信パケットが受信される。各種の実施形態では、着信パケットは、イーサネットパケットである。着信パケットは、別の物理マシンによってコアスイッチに送信されて、コアスイッチによって受信物理マシンに送信されてよい。
【００２７】
ステップ２０４では、少なくとも一部には、着信パケットに含まれる宛先インターネットプロトコル（ＩＰ）アドレスの少なくとも一部に対してハッシュ演算を実施することに基づいて、値が決定される。
【００２８】
幾つかの実施形態では、着信パケットは、インターネットプロトコル（ＩＰ）（例えばＩＰｖ４（インターネットプロトコルヴァージョン４）若しくはＩＰｖ６（インターネットプロトコルヴァージョン６））にしたがって伝送されるＩＰパケット、及び／又はアドレス解決プロトコル（ＡＲＰ）にしたがって伝送されるＡＲＰメッセージを含むことができる。図５は、ＩＰパケット及びＡＰＲメッセージのフォーマット例を示している。各種の実施形態において、ハッシュ演算は、着信パケットのイーサネット宛先ＩＰアドレスに対して実施される。
【００２９】
プロセス２００に戻り、ハッシュ演算は、任意長のデータを固定長の値に対応付ける。ハッシュ演算によって出力されるこれらの固定長の値は、ハッシュ値と呼ばれる。ステップ２０４では、ハッシュ値を決定するために、着信パケットに含まれるイーサネット宛先ＩＰアドレスの少なくとも一部が抽出されて、その抽出データに対してハッシュ演算が実施される。各種の実施形態において、着信パケットに含まれる宛先ＩＰアドレスは、装着パケットの転送先となる仮想マシンのＩＰアドレスに対応している。
【００３０】
幾つかの実施形態では、ハッシュ演算は、宛先ＩＰアドレス全体に対して実施される。幾つかの実施形態では、使用されるハッシュ演算は、宛先ＩＰアドレスがその末尾の所定数のビットに基づいて決定されたハッシュ値に対応付けられるように、設計することができる。例えば、着信パケットに含まれる宛先ＩＰアドレスが、「１９２．１６８．０．１」であるとする。この例では、ハッシュ演算は、ハッシュ値として使用するために、ＩＰアドレスの末尾１６ビットを選択することを含む。この場合、選択された末尾１６ビットに関係付けられる値は、二値形式で「０００００００００００００００１」であり、したがって、そこからは、ハッシュ値「１」を決定することができる。上述されたハッシュ演算は、一例に過ぎず、実際は、任意のハッシュ演算が使用されてよい。
【００３１】
ステップ２０６では、対応するインデックス値が見つかるか否かを決定するために、上記値は、事前に確立されたルックアップテーブルに照らして比較される。ここで、事前に確立されたルックアップテーブルは、インデックス値と、それぞれのインデックス値に対応するデータセットとを記憶している。幾つかの実施形態では、宛先ＩＰアドレスの少なくとも一部に対してハッシュ演算を実施することから決定されたハッシュ値は、受信物理マシンによって記憶されている事前に確立されたルックアップテーブルのインデックス値とそのまま比較される。幾つかの実施形態では、宛先ＩＰアドレスの少なくとも一部に対してハッシュ演算を実施することから決定されたハッシュ値は、受信物理マシンに記憶されている事前に確立されたルックアップテーブルのインデックス値と比較される前に、更なる処理を経る（例えば二乗される）。
【００３２】
事前に確立されたルックアップテーブルは、１つ以上のインデックス値と、各インデックス値に対応する１つ以上のデータセットとを含む。インデックス値は、着信パケットから抽出された宛先ＩＰアドレスにハッシュ演算を適用することから得られる値に対応していてよい。各データセットは、特定の仮想マシンに関係付けられた、ＩＰアドレス、ローカルＭＡＣアドレス、及び対応するグローバルＭＡＣアドレスなどのデータを含んでいてよい。
【００３３】
以下は、（例えばプロセス２００の実行に先立って）ルックアップテーブルを事前に確立する一例である。
【００３４】
テーブル１は、３つの仮想マシンＡ、Ｂ、及びＣのそれぞれに対応するデータセットを含むテーブルである。テーブル１では、各仮想マシンに関係付けられたデータセットは、仮想マシンに割り当てられたＩＰアドレスと、仮想マシンに割り当てられたローカルＭＡＣアドレスと、仮想マシンに割り当てられたグローバルＭＡＣアドレスとを含む。
【表１】
2016509822.tif 000003
【００３５】
ルックアップテーブルを確立するこの例では、ＩＰアドレスの末尾１６ビットに基づいてハッシュ値を決定する上述のハッシュ演算を実施することで得られる仮想マシンＡ、Ｂ，及びＣについてのそれぞれの値は、それぞれ「１」、「２」、及び「６０」である。仮想マシンＡ、Ｂ、及びＣのそれぞれに対応するルックアップテーブルにおけるインデックス値は、これらのハッシュ値から決定することができる。３つの仮想マシンのＩＰアドレス、ローカルＭＡＣアドレス、及びグローバルＭＡＣアドレスは、データセットとしてそれぞれのインデックス値に対応している。例えば、仮想マシンＡのＩＰアドレスから決定されるハッシュ値は、「１」であり、これは、ルックアップテーブルにおいて、仮想マシンＡのデータセット（例えば、ＩＰアドレス「１９２．１６８．０．１」、ローカルＭＡＣアドレス「００：１６：３Ｅ：１３：２Ｂ：０１」、及びグローバルＭＡＣアドレス「００：１６：３Ｅ：１３：ＡＡ：００」）に対応するインデックス値としてそのまま使用することができる。次のテーブル２は、テーブル１の仮想マシン識別子を対応するインデックス値に置き換えて得られるルックアップテーブルの一例を示している。
【表２】
2016509822.tif 000004
【００３６】
テーブル２の例は、対応するハッシュ値と同じであるインデックス値を示しているが、他の実施形態では、インデックス値は、対応するハッシュ値と同じであるとは限らず、ハッシュ値から導出／計算された値であってもよい。例えば、インデックス値は、対応するハッシュ値の二乗であってよい。また、仮想マシン及び／又はインデックス値に対応するデータセット（ＩＰアドレス、ローカルＭＡＣアドレス、グローバルＭＡＣアドレス）をグループ分けするための技術は、上述されたハッシュ法の例に限定されない。更に、テーブル２は、各インデックス値に対応するデータセットを１つのみ示しているが、他の何らかの実施形態では、（それぞれ異なる仮想マシンに対応する）複数のデータセットからなるデータセットグループが、ルックアップテーブルにおいて１つのインデックス値に対応していてよい。
【００３７】
幾つかの実施形態では、ルックアップテーブルにおいてインデックス値に対応するデータセットが、仮想マシンのＩＰアドレス、ローカルＭＡＣアドレス、及び対応するグローバルＭＡＣアドレスを割り当てる／取り消す／照会するための割当／取消／照会インターフェースを更に含んでいてよい。
【００３８】
例えば、上記の３つの仮想マシンＡ、Ｂ、及びＣのための割当／取消／照会インターフェースがそれぞれｖｌａｎ．１、ｖｌａｎ．１、及びｖｌａｎ．１である場合、ルックアップテーブルは、次のテーブル３に示されるようにアッデートされてよい。
【表３】
2016509822.tif 000005
【００３９】
幾つかの実施形態では、ルックアップテーブルは、ハッシュテーブルを含む。例えば、ハッシュテーブルは、サイズが６４ＫＢの配列であってよい。配列における各要素は、異なるインデックス値に関係付けられたリンクリストとして実装することができる。リンクリストにおける各要素は、特定の仮想マシンに関係付けられた（ＩＰアドレス，ローカルＭＡＣアドレス，グローバルＭＡＣアドレス）タプルであってよい。言い換えると、各タプルがデータセットを構成している。ルックアップテーブルを構築する過程において、仮想マシンに関係付けられたデータセット（タプル）がハッシュテーブルに入れられるときの、最初のステップは、ハッシュ値、すなわち０から６４ｋ−１の整数値を得るために、仮想マシンＩＰアドレスに対してハッシュ演算を実施する（例えば、末尾の特定数のビットを選択する）ことである。この値は、すると、配列要素のための添え字（すなわち、インデックス値）として機能する。インデックス値に対応するリンクリストが決定され、そのリンクレストの先頭に、このタプルが挿入される。このようにして、各仮想マシンに関係付けられたデータセット（タプル）を、このハッシュテーブルにおける適切なインデックス値に関係付けられたリンクリストに挿入することができる。
【００４０】
当業者ならば、本出願が、上述された具体的な実施形態に限定されず、関連する仮想マシンのＩＰアドレスと、ローカルＭＡＣアドレスと、グローバルＭＡＣアドレスとを含むデータセットをインデックス値で検索可能なルックアップテーブルが、任意の適切な技術を使用して実装可能であることがわかる。
【００４１】
上述のように、幾つかの実施形態では、ルックアップテーブルにおけるインデックス値は、様々な仮想マシンのＩＰアドレスに対応するハッシュ値に基づいて決定される。幾つかの実施形態では、ハッシュ技術を使用した結果、異なる仮想マシンのＩＰアドレスについて決定されたハッシュ値が、同じになることがある。したがって、上述された事前に確立されたルックアップテーブルでは、２つ以上のデータセットに対応するインデックス値がある。１つのインデックス値に対応する１つ以上のデータセットの各データセットは、それぞれ異なる仮想マシンのためのＩＰアドレスと、ローカルＭＡＣアドレスと、対応するグローバルＭＡＣアドレスとを含んでいてよい。言い換えると、選択されるハッシュ演算次第では、複数の仮想マシンに対応する複数のデータセットが同じグループに入れられ、事前に確立されたルックアップテーブルにおいて同じインデックス値に関係付けられることがある。複数かもしれない仮想マシンに関係付けられた（１つ以上の）データセットを１つのインデックス値にグループ分けすることによって、着信パケットに関連する仮想マシングループを、着信パケットの宛先ＩＰアドレスのハッシュ値から導出された値をその仮想マシングループに対応するインデックス値と突き合わせることによって、素早く特定することが可能である。以下で更に詳しく説明されるように、１つ以上の仮想マシンからなるこの関連する仮想マシングループがひとたび特定されれば、その特定されたグループのなかで、着信パケットの宛先ＩＰアドレスに一致するＩＰアドレスを有する特定の仮想マシンを素早く決定することが可能である。次いで、特定された仮想マシンのローカルＭＡＣアドレスが、その後に続くＭＡＣネットワークアドレス変換処理に使用される。
【００４２】
受信された着信パケットの宛先ＩＰアドレスに対応するハッシュ値（又はハッシュ値から導出された値）を、事前に確立されたルックアップテーブルにおけるインデックス値と比較することによって、受信された着信パケットの宛先ＩＰアドレスに対応するハッシュ値（又はハッシュ値から導出された値）に対応するインデックス値が、事前に確立されたルックアップテーブルのなかに有るかどうかを決定することが可能である。
【００４３】
ステップ２０８では、着信パケットに関係付けられる宛先メディアアクセスコントロールＭＡＣアドレスが、少なくとも一部には、対応するインデックス値が事前に確立されたルックアップテーブルのなかで見つかるかどうかに基づいて決定される。
【００４４】
具体的には、各種の実施形態において、対応するインデックス値が事前に確立されたルックアップテーブルの中で見つけられる場合、受信された着信パケットに対してＭＡＣネットワークアドレス変換処理が実施されると決定される。図４とともに更に詳しく後述されるように、着信パケットに対するＭＡＣネットワークアドレス変換は、事前に確立されたルックアップテーブルにおいて対応するインデックス値に対応している複数かもしれないデータセットのなかから一致するデータセットを決定することを含む。特定の仮想マシンに関係付けられた一致するデータセットは、着信パケットに含まれるイーサネット宛先ＩＰアドレスに一致するＩＰアドレスに関係付けられている。次いで、受信された着信パケットに含まれるイーサネット宛先ＭＡＣアドレスが、一致するデータセットに関係付けられたグローバルＭＡＣアドレスに一致するかどうかが決定される。受信された着信パケットのなかの宛先ＭＡＣアドレスが、一致するデータセットに関係付けられたグローバルＭＡＣアドレスに一致する場合は、一致するデータセットに関係付けられたローカルＭＡＣアドレスの値が、着信パケットの宛先ＭＡＣアドレスの当初の値に置き換わり、着信パケットに関係付けられるものとして決定される宛先ＭＡＣアドレスになる。受信された着信パケットのなかの宛先ＭＡＣアドレスが、一致するデータセットに関係付けられたグローバルＭＡＣアドレスに一致しない場合は、着信パケットに含まれる当初の宛先ＭＡＣアドレスが、着信パケットに関係付けられるものとして決定される宛先アドレスである。
【００４５】
ステップ２１０では、着信パケットは、決定された宛先ＭＡＣアドレスに関係付けられた仮想マシンに転送される。
【００４６】
（着信パケットの宛先ＩＰアドレスから決定されたハッシュ値に対応するインデックス値が、事前に確立されたルックアップテーブルのなかに有るゆえに、）着信パケットに対してＭＡＣアドレスネットワークアドレス変換が実施された場合は、着信パケットは、変換後の着信パケットに含まれるローカルＭＡＣアドレスに関係付けられた仮想マシンに転送される。
【００４７】
（着信パケットの宛先ＩＰアドレスから決定されたハッシュ値に対応するインデックス値が、事前に確立されたルックアップテーブルのなかに無いゆえに、）着信パケットに対してＭＡＣアドレスネットワークアドレス変換が実施されなかった場合は、着信パケットは、変換されていない着信パケットに含まれていた当初の宛先ＭＡＣアドレスに関係付けられた仮想マシンに転送される。
【００４８】
一例として、イーサネット宛先ＩＰアドレス「１９２．１６８．０．２」及びイーサネット宛先ＭＡＣアドレス「００：１６：３Ｅ：１３：ＡＡ：００」を伴う着信パケットが受信されると想定する。イーサネット宛先ＩＰアドレス「１９２．１６８．０．２」に対して少なくともハッシュ演算を実施することから決定される値は、「２」である。決定された値「２」は、事前に確立されたルックアップテーブルの一例である上記のテーブル３と比較される。決定された値「２」は、インデックス値「２」に一致するので、インデックス値「２」が、対応するインデックス値である。別の一例において、着信パケットについて決定された値が、事前に確立されたルックアップテーブルの中のどのインデックス値にも一致しない場合、着信パケットは、どの仮想マシンにも転送されないだろう。テーブル３の例において、インデックス値「２」は、１つのデータセット（ＩＰアドレス「１９２．１６８．０．２」、ローカルＭＡＣアドレス「００：１６：３Ｅ：１３：２Ｂ：０３」、グローバルＭＡＣアドレス「００：１６：３Ｅ：１３：ＡＡ：００」、及び割当／取消／照会インターフェース「ｖｌａｎ．１」）にのみ対応しているが、その他の例では、１つのインデックス値が、複数のデータセットに対応していてもよい。着信パケットの宛先ＩＰアドレス「１９２．１６８．０．２」は、インデックス値「２」に対応する唯一のデータセットの宛先ＩＰアドレス「１９２．１６８．０．２」と比較される。宛先ＩＰアドレスは、インデックス値「２」に対応する唯一のデータセットの宛先ＩＰアドレスに一致するので、このデータセットは、一致するデータセットと呼ばれる。次に、着信パケットの宛先ＭＡＣアドレス「００：１６：３Ｅ：１３：ＡＡ：００」が、一致するデータセットのグローバルＭＡＣアドレス「００：１６：３Ｅ：１３：ＡＡ：００」と比較される。着信パケットの宛先ＭＡＣアドレスは、一致するデータセットのグローバルＭＡＣアドレスに一致するので、着信パケットに対してＭＡＣネットワークアドレス変換が実施される。ＭＡＣネットワークアドレス変換を実施するにあたり、着信パケットの宛先ＭＡＣアドレスの値は、一致するデータセットに関係付けられたローカルＭＡＣアドレスの値「００：１６：３Ｅ：１３：２Ｂ：０３」に置き換えられる。したがって、着信パケットは、物理マシンが着信パケットの転送先となる仮想マシン（仮想マシンＢ）に関係付けられた宛先ＭＡＣアドレス「００：１６：３Ｅ：１３：２Ｂ：０３」を含むようになる。別の一例において、着信パケットの宛先ＭＡＣアドレスが、一致するデータセットのグローバルＭＡＣアドレスに一致しない場合、着信パケットに対してＭＡＣアドレス変換は実施されず、着信パケットは、着信パケットに含まれていた当初の宛先ＭＡＣアドレスに基づいて、仮想マシンにそのまま転送される。
【００４９】
プロセス２００について説明された技術を使用すれば、ＭＡＣアドレスを迅速に検索してＭＡＣネットワークアドレス変換の速度を上げることが可能である。そうすれば、ルックアップテーブルの全体サイズを縮小してイーサネットパケット転送効率を更に高めることが可能になる。
【００５０】
図３は、着信パケットを仮想マシンに転送するプロセスの一例を示したフローチャートである。幾つかの実施形態では、プロセス３００は、図１のシステム１００において実行される。具体的には、プロセス３００は、図１のシステム１００の物理マシン１０２又は物理マシン１０６のいずれかで実行することができる。幾つかの実施形態では、図２のプロセス２００のステップ２０８及び２１０は、プロセス３００を使用して実現される。
【００５１】
プロセス３００は、着信パケットに関係付けられる値が既に決定されていると想定する。例えば、着信パケットに関係付けられる値は、少なくとも一部には、（例えば、図２のプロセス２００のステップ２０４において実施されるように）着信パケットに含まれる宛先ＩＰアドレスに対してハッシュ演算を実施することによって決定される。着信パケットに関係付けられる値は、ハッシュ演算によって出力されたハッシュ値であってよい、又はそのハッシュ値の関数である値であってよい。例えば、着信パケットに関係付けられる値は、ハッシュ値の二乗又はその他の種類の関数であってよい。
【００５２】
ステップ３０２では、対応するインデックス値が見つけられるかどうかを決定するために、着信パケットに関係付けられる値が、事前に確立されたルックアップテーブルに照らして比較される。事前に確立されたルックアップテーブルは、様々なインデックス値と、各インデックス値に対応する１つ以上のデータセットとの間の対応関係を記憶している。各データセットは、事前に確立されたルックアップテーブルを記憶された物理マシンで動作している特定の仮想マシンに関係付けられたデータを含む。特定の仮想マシンに関係付けられたデータは、少なくとも、例えばＩＰアドレスと、ローカルＭＡＣアドレスと、グローバルＭＡＣアドレスとを含む。対応するインデックス値が事前に確立されたルックアップテーブルのなかで見つけられる場合は、制御はステップ３０４に引き渡され、着信パケットに対してＭＡＣネットワークアドレス変換が実施されることになる。そうでなく、対応するインデックス値が事前に確立されたルックアップテーブルのなかで見つけられない場合は、制御はステップ３０６に引き渡され、着信パケットに対してＭＡＣネットワークアドレス変換は実施されないことになる。
【００５３】
ステップ３０４では、着信パケットに対してＭＡＣネットワークアドレス変換が実施される。
【００５４】
図４とともに更に詳しく後述されるように、ＭＡＣネットワークアドレス変換は、事前に確立されたルックアップテーブルの中の対応するインデックス値に対応する複数かもしれないデータセットのなかから、着信パケットに含まれるイーサネット宛先ＩＰアドレスに一致するＩＰアドレスに関係付けられた一致するデータセットを決定することを含む。次いで、受信された着信パケットのなかのイーサネット宛先ＭＡＣアドレスが、一致するデータセットに関係付けられたグローバルＭＡＣアドレスに一致するかどうかが決定される。受信された着信パケットのなかの宛先ＭＡＣアドレスが、一致するデータセットに関係付けられたグローバルＭＡＣアドレスに一致する場合は、受信された着信パケットのなかの宛先ＭＡＣアドレスの値は、一致するデータセットに関係付けられたローカルＭＡＣアドレスの値に置き換えられる。受信された着信パケットのなかの宛先ＭＡＣアドレスが、一致するデータセットに関係付けられたグローバルＭＡＣアドレスに一致しない場合は、着信パケットに含まれる宛先ＭＡＣアドレスの値は、変更されない。
【００５５】
ステップ３０６では、着信パケットは、少なくとも一部には、着信パケットに含まれる宛先ＭＡＣアドレスに基づいて、仮想マシンに転送される。物理マシンは、着信パケットに含まれる宛先ＭＡＣアドレスに関係付けられた仮想マシンに、着信パケットを転送する。着信パケットに対してＭＡＣネットワークアドレス変換が実施された場合は、物理マシンは、変換後の宛先ＭＡＣアドレス（すなわち、着信パケットのヘッダの中の宛先ＭＡＣアドレスのグローバルＭＡＣアドレスを置換するために使用されたローカルＭＡＣアドレス）に関係付けられた仮想マシンに、着信パケットを転送する。着信パケットに対してＭＡＣネットワークアドレス変換が実施されなかった場合は、物理マシンは、変換されていない着信パケットに含まれていた当初の宛先ＭＡＣアドレスに関係付けられた仮想マシンに転送される。
【００５６】
プロセス３００は、物理マシンがコアスイッチから着信パケットを受信して該着信パケットを仮想マシンに転送する一例を説明しているが、物理マシンは、仮想マシンからの発信パケットをコアスイッチに転送することもでき、当該コアスイッチは、すると、その発信パケットを該発信パケットに含まれる宛先ＭＡＣアドレスに基づいて適切な宛先ポートに転送する。
【００５７】
図４は、着信パケット及び発信パケットに対してＭＡＣネットワークアドレス変換技術を実施する一例を示したフローチャートである。幾つかの実施形態では、プロセス４００は、図１のシステム１００において実行される。具体的には、プロセス４００は、図１のシステム１００の物理マシン１０２又は物理マシン１０６のいずれかで実行することができる。
【００５８】
プロセス４００は、物理マシンがコアスイッチから受信された着信パケット又はコアスイッチに送信する発信パケットのいずれかに対してＭＡＣネットワークアドレス変換を実施するプロセスの一例を示している。具体的には、プロセス４００は、着信パケット又は発信パケットに対してＭＡＣネットワークアドレス変換がいつ及びどのように適用されえるかの例を示している。
【００５９】
４０１では、受信されたパケットが着信パケットであるか又は発信パケットであるかが決定される。受信されたパケットが着信パケットであると決定された場合は、制御は４０２に引き渡される。そうでなく、受信されたパケットが発信パケットであると決定された場合は、制御は４０６に引き渡される。受信されたイーサネットパケットが着信パケットであるか又は発信パケットであるかが決定される。幾つかの実施形態では、イーサネットパケットは、ＩＰｖ４パケットなどのＩＰパケット、又はＡＲＰメッセージを含んでいてよい。図５は、ＩＰｖ４パケットのフォーマットの一例及びＡＲＰメッセージのフォーマットの一例である。
【００６０】
図４に戻り、受信されたパケットが着信パケットであるか又は発信パケットであるかは、幾つかの実施形態では、パケットに含まれる発信元ＩＰアドレスが、物理マシンに対してローカルな（例えばその物理マシンで動作している）仮想マシンに関係付けられたＩＰアドレスであるかどうかを決定することによって決定されてよい。パケットに含まれる発信元ＩＰアドレスが、物理マシンに関係付けられたローカルＩＰアドレスであると決定された場合は、受信されたパケットは、発信パケットであると決定される。そうでなく、パケットに含まれる発信元ＩＰアドレスが、物理マシンに関係付けられたローカルＩＰアドレスではないと決定された場合は、受信されたパケットは、着信パケットであると決定される。受信されたパケットが着信パケットであるか又は発信パケットであるかは、任意の適切な技術によって決定されてよく、上述された技術に限定されない。
【００６１】
パケットが着信パケットである場合、ステップ４０２において、少なくとも一部には、着信パケットに含まれる宛先ＩＰアドレスに基づいて、事前に確立されたルックアップテーブルにおける第１の対応するインデックス値が決定される。
【００６２】
少なくとも一部には、着信パケットに含まれる宛先ＩＰアドレスの少なくとも一部に対してハッシュ演算を実施すること（例えば、図２のプロセス２００のステップ２０４）に基づいて、値が決定される。例えば、図５を参照すると、着信パケットがＩＰパケットであるか又はＡＲＰメッセージであるかにかかわらず、イーサネット宛先ＩＰアドレスに対してハッシュ演算が実施される。幾つかの実施形態では、ハッシュ演算によって出力されるハッシュ値は、事前に確立されたルックアップテーブルに含まれるインデックス値と比較される前に、更に処理されてよい、又はこれ以上処理されなくてよい。ステップ４０２では、着信パケットの宛先ＩＰアドレスに対してハッシュ演算を実施して決定された値に対応する第１のインデックス値が、事前に確立されたルックアップテーブルのなかで見つけられると想定される。見つけられた第１の対応するインデックス値は、事前に確立されたルックアップテーブルにおいて１つ以上のデータセットに関係付けられている。このような各データセットは、物理マシンで動作している仮想マシンに関係付けられ、少なくとも、対応する仮想マシンに関係付けられたＩＰアドレスと、ローカルＭＡＣアドレスと、グローバルＭＡＣアドレスとを含む。
【００６３】
ステップ４０３では、着信パケットに含まれる宛先ＩＰアドレスに一致するＩＰアドレスを含む、第１の対応するインデックス値に対応する第１の一致するデータセットが決定される。
【００６４】
第１の対応するインデックス値に対応する１つ以上のデータセットのうち、着信パケットの宛先ＩＰアドレス（例えばイーサネット宛先ＩＰアドレス）に一致するＩＰアドレスを含むデータセットは、第１の一致するデータセットと呼ばれることがある。第１の一致するデータセットを見つけるためには、例えば、着信パケットに含まれる宛先ＩＰアドレスを、第１の一致するデータセット（着信パケットに含まれる宛先ＩＰアドレスに一致するＩＰアドレスに関係付けられたデータセット）が見つかるまで、第１の対応するインデックス値に対応する１つ以上のデータセットの各データセットのＩＰアドレスと比較することができる。
【００６５】
ステップ４０４では、着信パケットに含まれる宛先ＭＡＣアドレスが、第１の一致するデータセットに関係付けられたグローバルＭＡＣアドレスに一致するかどうかが決定される。着信パケットの宛先ＩＰアドレスが、第１の一致するデータセットのグローバルＭＡＣアドレスに一致する場合は、制御は４１０に引き渡される。そうでなく、着信パケットの宛先ＩＰアドレスが、第１の一致するデータセットのグローバルＭＡＣアドレスに一致しない場合は、制御は４０８に引き渡される。
【００６６】
例えば、図５を参照すると、着信パケットがＩＰパケットであるか又はＡＲＰメッセージであるかにかかわらず、ＩＰパケット又はＡＲＰメッセージのイーサネット宛先ＭＡＣアドレスが、第１の一致するデータセットのグローバルＭＡＣアドレスと比較される。したがって、着信パケットに含まれるイーサネット宛先ＭＡＣアドレスは、第１の一致するデータセットに含まれるグローバルＭＡＣアドレスと、両者が一致するかどうかを決定するために比較される。
【００６７】
ステップ４１０では、着信パケットの宛先ＭＡＣアドレスの値を、第１の一致するデータセットに関係付けられたローカルＭＡＣアドレスの値に置き換えることによって、着信パケットに対してＭＡＣネットワークアドレス変換が実施される。
【００６８】
幾つかの実施形態では、ＭＡＣネットワークアドレス変換は、着信パケットの宛先ＭＡＣアドレスの値を、第１の一致するデータセットに含まれるローカルＭＡＣアドレスの値に置き換えることによって実施される。その結果、着信パケットは、そのローカルＭＡＣアドレスに関係付けられた仮想マシンに、物理マシンによって転送される。要するに、物理マシンが、第１の一致するデータセットに対応する仮想マシンに着信パケットを転送することができるように、着信パケットの宛先ＭＡＣアドレスの値は、仮想マシンに関係付けられたグローバルＭＡＣアドレスの値から、第１の一致するデータセットに対応する仮想マシンに関係付けられたローカルＭＡＣアドレスの値に変更される。
【００６９】
例えば、図５を参照すると、着信パケットがＩＰパケットである場合、ＩＰパケットヘッダのなかのイーサネット宛先ＭＡＣアドレスの値が、第１の一致するデータセットに関係付けられたローカルＭＡＣアドレスの値に置き換えられる。着信パケットがＡＲＰメッセージである場合、ＡＲＰメッセージヘッダの中のイーサネット宛先ＭＡＣアドレスの値及びＡＲＰメッセージのペイロードの中の宛先ＭＡＣアドレスの値の両方が、第１の一致するデータセットに関係付けられたローカルＭＡＣアドレスの値に置き換えられる。
【００７０】
物理マシンは、最終的に、変換プロセスによって決定されたローカルＭＡＣアドレスの値を含む変換後の宛先ＭＡＣアドレスに関係付けられた仮想マシンに、着信パケットを転送する。
【００７１】
ステップ４０８では、一致するデータセットが見つからず、着信パケットに対してＭＡＣネットワークアドレス変換は実施されない。物理マシンは、最終的に、着信パケットに含まれる変換されていない当初の宛先ＭＡＣアドレスに関係付けられた仮想マシンに、着信パケットを転送する。
【００７２】
ステップ４０６では、少なくとも一部には、発信パケットに含まれる発信元ＩＰアドレスに基づいて、事前に確立されたルックアップテーブルにおける第２の対応するインデックス値が決定される。
【００７３】
少なくとも一部には、発信パケットに含まれる発信元ＩＰアドレスの少なくとも一部に対してハッシュ演算を実施することに基づいて、値が決定される。例えば、図５を参照すると、発信パケットがＩＰパケットであるばあい、ハッシュ演算は、ＩＰパケットのイーサネット発信元ＩＰアドレスに対して実施され、発信パケットがＡＲＰメッセージである場合、ハッシュ演算は、イーサネット発信元ＩＰアドレスに対して実施される。幾つかの実施形態では、ハッシュ演算によって出力されるハッシュ値は、事前に確立されたルックアップテーブルに含まれるインデックス値と比較される前に、更に処理されてよい、又はこれ以上処理されなくてよい。ステップ４０６では、発信パケットの発信元ＩＰアドレスに対してハッシュ演算を実施して決定された値に対応する第２のインデックス値が、事前に確立されたルックアップテーブルのなかで見つけられると想定される。見つけられた第２の対応するインデックス値は、事前に確立されたルックアップテーブルにおいて１つ以上のデータセットに関係付けられている。このような各データセットは、物理マシンで動作している仮想マシンに関係付けられ、少なくとも、対応する仮想マシンに関係付けられたＩＰアドレスと、ローカルＭＡＣアドレスと、グローバルＭＡＣアドレスとを含む。
【００７４】
ステップ４０７では、発信パケットに含まれる発信元ＩＰアドレスに一致するローカルＩＰアドレスを含む、第２の対応するインデックス値に対応する第２の一致するデータセットが決定される。第２の一致するデータセットを見つけるためには、例えば、着信パケットに含まれる発信元ＩＰアドレスを、第２の一致するデータセット（着信パケットに含まれる発信元ＩＰアドレスに一致するＩＰアドレスに関係付けられたデータセット）が見つかるまで、第２の対応するインデックス値に対応する１つ以上のデータセットの各データセットのＩＰアドレスと比較することができる。
【００７５】
第２の対応するインデックス値に対応する１つ以上のデータセットのうち、発信パケットの発信元ＩＰアドレス（例えばイーサネット発信元ＩＰアドレス）に一致するＩＰアドレスを含むデータセットは、第２の一致するデータセットと呼ばれることがある。
【００７６】
ステップ４０９では、発信パケットの発信元ＭＡＣアドレスの値を、第２の一致するデータセットに関係付けられたグローバルＭＡＣアドレスの値に置き換えることによって、発信パケットに対してＭＡＣネットワークアドレス変換が実施される。
【００７７】
幾つかの実施形態では、ＭＡＣネットワークアドレス変換は、発信パケットの発信元ＭＡＣアドレスの値を、第２の一致するデータセットに含まれるグローバルＭＡＣアドレスの値に置き換えることによって実施される。その結果、発信パケットは、物理マシンによってコアスイッチに転送され、当該コアスイッチは、（例えば、グローバルＭＡＣアドレスとポートとの間の対応関係を記憶した記憶データに基づいて、）適切な宛先ポートに発信パケットを転送する。要するに、物理マシンが、発信パケットをコアスイッチに転送し、当該コアスイッチが、適切な宛先ポートに発信パケットを転送することができるように、発信パケットの発信元ＭＡＣアドレスは、仮想マシンに関係付けられたローカルＭＡＣアドレスの値から、第２の一致するデータセットに対応する仮想マシンに関係付けられたグローバルＭＡＣアドレスに変更される。
【００７８】
例えば、図５を参照すると、発信パケットがＩＰパケットである場合、ＩＰパケットヘッダのなかのイーサネット発信元ＭＡＣアドレスの値が、第２の一致するデータセットのなかのグローバルＭＡＣアドレスの値に置き換えられる。発信パケットがＡＲＰメッセージである場合、ＡＲＰメッセージヘッダのなかのイーサネット発信元ＭＡＣアドレスの値及びＡＲＰメッセージのペイロードの中の送信者ＭＡＣアドレスの値の両方が、第２の一致するデータセットの中のグローバルＭＡＣアドレスの値に置き換えられる。
【００７９】
図５は、ＩＰパケットのフォーマット及びＡＲＰメッセージのフォーマットの例を示している。
【００８０】
着信パケット又は発信パケットは、イーサネットパケットであってよい。各種の実施形態では、イーサネットパケットは、ＩＰパケット又はＡＲＰメッセージを含んでいてよい。図５に示されるように、ＩＰパケットのフォーマットの一例は、イーサネット宛先ＭＡＣアドレス５０２と、イーサネット発信元ＭＡＣアドレス５０４と、イーサネット宛先ＩＰアドレス５０６と、イーサネット発信元ＩＰアドレス５０８と、ＩＰパケットペイロード５１０とを含む。上記の図１〜４で説明されたように、着信パケットがＩＰパケットである場合は、イーサネット宛先ＩＰアドレス５０６の少なくとも一部から、事前に確立されたルックアップテーブルにおける対応するインデックス値が決定されてよく、イーサネット宛先ＭＡＣアドレス５０２の値が、対応するインデックス値に対応するデータセットに関係付けられたローカルＭＡＣアドレスの値に置き換えられるかもしれない。発信パケットがＩＰパケットである場合は、イーサネット発信元ＩＰアドレス５０８の少なくとも一部から、事前に確立されたルックアップテーブルにおける対応するインデックス値が決定されてよく、イーサネット発信元ＭＡＣアドレス５０４の値が、対応するインデックス値に対応するデータセットに関係付けられたグローバルＭＡＣアドレスの値に置き換えられるかもしれない。
【００８１】
図５に示されるように、ＡＲＰメッセージのフォーマットの一例は、イーサネット宛先ＭＡＣアドレス５１２と、イーサネット発信元ＭＡＣアドレス５１４と、イーサネット宛先ＩＰアドレス５１６と、イーサネット発信元ＩＰアドレス５１８と、フレームタイプ５２０と、ハードウェアタイプ５２２と、プロトコルタイプ５２４と、送信者ＭＡＣアドレス５２６と、送信者ＩＰアドレス５２８と、宛先ＭＡＣアドレス５３０と、宛先ＩＰアドレス５３２とを含む。上記の図１〜４で説明されたように、着信パケットがＡＲＰメッセージである場合は、イーサネット宛先ＩＰアドレス５１６の少なくとも一部から、事前に確立されたルックアップテーブルにおける対応するインデックス値が決定されてよく、（ＡＲＰメッセージヘッダのなかの）イーサネット宛先ＭＡＣアドレス５１２の値及び（ＡＲＰメッセージのペイロードのなかの）宛先ＭＡＣアドレス５３０の値の両方が、対応するインデックス値に対応するデータセットに関係付けられたローカルＭＡＣアドレスの値に置き換えられるかもしれない。発信パケットがＡＲＰメッセージである場合は、イーサネット発信元ＩＰアドレス５１８の少なくとも一部から、事前に確立されたルックアップテーブルにおける対応するインデックス値が決定されてよく、イーサネット発信元ＭＡＣアドレス５１４の値が、対応するインデックス値に対応するデータセットに関係付けられたグローバルＭＡＣアドレスの値に置き換えられるかもしれない。
【００８２】
図６は、イーサネットパケットを転送するためのシステムの一実施形態を示した図である。この例では、システム６００は、計算モジュール６１０と、評価モジュール６２０と、転送モジュール６３０とを含む。
【００８３】
モジュールは、１つ以上のプロセッサ上で実行されるソフトウェアコンポーネントとして、又はプログラマブルロジックデバイス及び／又は特殊用途向け集積回路などのハードウェアとして実装可能である。これらの要素は、本発明の実施形態で説明される方法を（パソコン、サーバ、ネットワーク機器などの）計算装置に実行させるための幾つかの命令を含み尚且つ（光ディスク、フラッシュストレージデバイス、モバイルハードディスクなどの）不揮発性のストレージ媒体に記憶させることができるソフトウェア製品の形で具現化可能である。モジュールは、１つのデバイスに実装されてよい、又は複数のデバイスに分散されてよい。
【００８４】
計算モジュール６１０は、ハッシュ値を得るために、受信されたイーサネットパケットに含まれるＩＰアドレスの少なくとも一部に対してハッシュ演算を実施するように構成される。評価モジュール６２０は、事前に確立されたルックアップテーブルを使用して、少なくとも一部にはハッシュ値に基づいて、受信されたイーサネットパケットに対してＭＡＣネットワークアドレス変換処理が実施される必要があるかどうかを決定するように構成される。事前に確立されたルックアップテーブルは、１つ以上のインデックス値と、各インデックス値に対応する１つ以上のデータセットとを含む。幾つかの実施形態では、インデックス値は、１つ以上の仮想マシンに関係付けられたＩＰアドレスに対してハッシュ演算を実施することから得られる値に対応していてよい。例えば、データセットは、仮想マシンに関係付けられた、ＩＰアドレス、ローカルＭＡＣアドレス、及びグローバルＭＡＣアドレスなどのデータを含んでいてよい。転送モジュール６３０は、少なくとも一部には上記決定に基づいて、受信されたイーサネットパケットを転送するように構成される。
【００８５】
幾つかの実施形態では、ハッシュ値（又はハッシュ値から導出された値）が、事前に確立されたルックアップテーブルにおけるインデックス値の１つに一致する場合、評価モジュール６２０は、受信されたイーサネットパケットに対してＭＡＣネットワークアドレス変換処理を実施することを決定してよい。ハッシュ値（又はハッシュ値から導出された値）が、事前に確立されたルックアップテーブルにおけるいずれのインデックス値とも同じでない場合、評価モジュール６２０は、受信されたイーサネットパケットに対してＭＡＣネットワークアドレス変換処理を実施しないことを決定してよい。
【００８６】
幾つかの実施形態では、受信されたイーサネットパケットに対してＭＡＣネットワークアドレス変換処理が実施されることが決定された場合に、転送モジュール６３０は、受信されたイーサネットパケットがＭＡＣネットワークアドレス変換処理を経た後に、イーサネットパケットに含まれるイーサネット宛先ＭＡＣアドレスに基づいて、ＭＡＣネットワークアドレス変換処理されたイーサネットパケットを転送してよい。幾つかの実施形態では、受信されたイーサネットパケットに対してＭＡＣネットワークアドレス変換処理が実施されないことが決定された場合に、転送モジュール６３０は、イーサネットパケットに含まれるイーサネット宛先ＭＡＣアドレスに基づいて、変換されていない受信されたイーサネットパケットをそのまま転送することができる。
【００８７】
当業者ならば、本出願の実施形態が、方法、システム、又はコンピュータプログラム製品として提供可能であることがわかるはずである。したがって、本出願は、完全にハードウェアで構成される実施形態、完全にソフトウェアで構成される実施形態、又はハードウェアとソフトウェアとを組み合わせた実施形態の形態をとりえる。また、本出願は、コンピュータ操作可能なプログラムコードを含む１つ以上のコンピュータ操作可能なストレージ媒体（磁気ディスクストレージデバイス、ＣＤ−ＲＯＭ、及び光ストレージデバイスを含むがこれらに限定はされない）に実装されたコンピュータプログラム製品の形態をとることができる。
【００８８】
上述されたのは、本出願の実施形態に過ぎず、本出願を限定するために使用されるものではない。当業者にとって、本出願は、様々な変更形態及びヴァリエーションを有するだろう。本出願の趣旨及び原理に見合うようになされたあらゆる変更、均等な置き換え、又は改善が、本出願の特許請求の範囲内に含まれるものとする。
【００８９】
以上の実施形態は、理解を明瞭にすることを目的として幾らか詳細に説明されてきたが、本発明は、与えられた詳細に限定されない。本発明を実現するには、多くの代替的手法がある。開示された実施形態は、例示的なものであり、非限定的である。
【図１】
2016509822.tif 000006
【図２】
2016509822.tif 000007
【図３】
2016509822.tif 000008
【図４】
2016509822.tif 000009
【図５】
2016509822.tif 000010
【図６】
2016509822.tif 000011
【手続補正書】
【提出日】平成27年8月11日(2015.8.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
イーサネットパケットを転送するためのシステムであって、
１つ以上のプロセッサであって、
着信パケットを受信し、
少なくとも一部には、前記着信パケットに含まれる宛先インターネットプロトコル（ＩＰ）アドレスの少なくとも一部に基づいてハッシュ演算を実施することに基づいて、値を決定し、
対応するインデックス値が見つかるか否かを決定するために、事前に確立されたルックアップテーブルに照らして前記値を比較し、前記事前に確立されたルックアップテーブルは、インデックス値と、前記インデックス値のそれぞれに対応するデータセットとを記憶しており、
少なくとも一部には、前記対応するインデックス値が前記事前に確立されたルックアップテーブルのなかで見つかるか否かに基づいて、前記着信パケットに関係付けられる宛先メディアアクセスコントロール（ＭＡＣ）アドレスを決定し、
前記決定された宛先ＭＡＣアドレスに関係付けられた仮想マシンに、前記着信パケットを転送するように構成されている１つ以上のプロセッサと、
前記１つ以上のプロセッサに接続され、前記１つ以上のプロセッサに命令を提供するように構成されている１つ以上のメモリと、
を備える、
システム。
【請求項２】
請求項１に記載のシステムであって、
前記少なくとも一部には、前記着信パケットに含まれる宛先ＩＰアドレスの少なくとも一部に基づいてハッシュ演算を実施することに基づいて決定された、前記値は、前記ハッシュ演算によって出力されるハッシュ値である、システム。
【請求項３】
請求項１に記載のシステムであって、
前記少なくとも一部には、前記着信パケットに含まれる宛先ＩＰアドレスの少なくとも一部に基づいてハッシュ演算を実施することに基づいて決定された、前記値は、前記ハッシュ演算によって出力されるハッシュ値の関数である、システム。
【請求項４】
請求項１に記載のシステムであって、
前記対応するインデックス値が前記事前に確立されたルックアップテーブルの中で見つからない場合は、前記着信パケットに関係付けられる前記宛先ＭＡＣアドレスは、前記着信パケットに含まれる宛先ＭＡＣアドレスに関係付けられた値を含むように決定される、システム。
【請求項５】
請求項１に記載のシステムであって、
前記対応するインデックス値は、前記事前に確立されたルックアップテーブルにおける１つ以上のデータセットに対応している、システム。
【請求項６】
請求項５に記載のシステムであって、
前記１つ以上のデータセットの各データセットは、対応するＩＰアドレスと、ローカルＭＡＣアドレスと、グローバルＭＡＣアドレスとを含む、システム。
【請求項７】
請求項５に記載のシステムであって、
前記対応するインデックス値が前記事前に確立されたルックアップテーブルの中で見つかると、前記１つ以上のプロセッサは、更に、
前記前記対応するインデックス値に対応する前記１つ以上のデータセットから、前記着信パケットに含まれる前記宛先ＩＰアドレスに一致するＩＰアドレスを含む一致するデータセットを決定し、
前記着信パケットに含まれる宛先ＭＡＣアドレスが、前記一致するデータセットに関係付けられたグローバルＭＡＣアドレスに一致するか否かを決定するように構成されている、システム。
【請求項８】
請求項７に記載のシステムであって、
前記着信パケットに含まれる前記宛先ＭＡＣアドレスが、前記一致するデータセットに関係付けられた前記グローバルＭＡＣアドレスに一致しない場合には、前記着信パケットに関係付けられる前記宛先ＭＡＣアドレスは、前記着信パケットに含まれる前記宛先ＭＡＣアドレスに関係付けられた値を含むように決定される、システム。
【請求項９】
請求項７に記載のシステムであって、
前記着信パケットに含まれる前記宛先ＭＡＣアドレスが、前記一致するデータセットに関係付けられた前記グローバルＭＡＣアドレスに一致する場合には、前記着信パケットに関係付けられる前記宛先ＭＡＣアドレスは、前記一致するデータセットに関係付けられたローカルＭＡＣアドレスに関係付けられた値を含むように決定される、システム。
【請求項１０】
請求項１に記載のシステムであって、
前記１つ以上のプロセッサは、更に、
発信パケットを受信し、
少なくとも一部には、前記発信パケットに含まれる発信元ＩＰアドレスの少なくとも一部に対して別のハッシュ演算を実施することに基づいて、別の値を決定し、
別の対応するインデックス値が見つけられるか否かを決定するために、前記事前に確立されたルックアップテーブルに照らして前記別の値を比較し、
少なくとも一部には、前記別の対応するインデックス値に対応するデータセットに基づいて、前記発信パケットに関係付けられる発信元ＭＡＣアドレスを決定するように構成されている、システム。
【請求項１１】
イーサネットパケットを転送するための方法であって、
着信パケットを受信し、
１つ以上のプロセッサによって、少なくとも一部には、前記着信パケットに含まれる宛先インターネットプロトコル（ＩＰ）アドレスの少なくとも一部に基づいてハッシュ演算を実施することに基づいて、値を決定し、
対応するインデックス値が見つかるか否かを決定するために、事前に確立されたルックアップテーブルに照らして前記値を比較し、前記事前に確立されたルックアップテーブルは、インデックス値と、前記インデックス値のそれぞれに対応するデータセットとを記憶しており、
少なくとも一部には、前記対応するインデックス値が前記事前に確立されたルックアップテーブルの中で見つかるか否かに基づいて、前記着信パケットに関係付けられる宛先メディアアクセスコントロール（ＭＡＣ）アドレスを決定し、
前記決定された宛先ＭＡＣアドレスに関係付けられた仮想マシンに、前記着信パケットを転送すること、
を備える方法。
【請求項１２】
請求項１１に記載の方法であって、
前記対応するインデックス値が前記事前に確立されたルックアップテーブルの中で見つからない場合には、前記着信パケットに関係付けられる前記宛先ＭＡＣアドレスは、前記着信パケットに含まれる宛先ＭＡＣアドレスに関係付けられた値を含むように決定される、方法。
【請求項１３】
請求項１１に記載の方法であって、
前記対応するインデックス値は、前記事前に確立されたルックアップテーブルにおける１つ以上のデータセットに対応している、方法。
【請求項１４】
請求項１３に記載の方法であって、
前記１つ以上のデータセットの各データセットは、対応するＩＰアドレスと、ローカルＭＡＣアドレスと、グローバルＭＡＣアドレスとを含む、方法。
【請求項１５】
請求項１３に記載の方法であって、
前記対応するインデックス値が前記事前に確立されたルックアップテーブルの中で見つかると、更に、
前記前記対応するインデックス値に対応する前記１つ以上のデータセットから、前記着信パケットに含まれる前記宛先ＩＰアドレスに一致するＩＰアドレスを含む一致するデータセットを決定し、
前記着信パケットに含まれる宛先ＭＡＣアドレスが、前記一致するデータセットに関係付けられたグローバルＭＡＣアドレスに一致するか否かを決定すること、
を備える方法。
【請求項１６】
請求項１５に記載の方法であって、
前記着信パケットに含まれる前記宛先ＭＡＣアドレスが、前記一致するデータセットに関係付けられた前記グローバルＭＡＣアドレスに一致しない場合には、前記着信パケットに関係付けられる前記宛先ＭＡＣアドレスは、前記着信パケットに含まれる前記宛先ＭＡＣアドレスに関係付けられた値を含むように決定される、方法。
【請求項１７】
請求項１５に記載の方法であって、
前記着信パケットに含まれる前記宛先ＭＡＣアドレスが、前記一致するデータセットに関係付けられた前記グローバルＭＡＣアドレスに一致する場合には、前記着信パケットに関係付けられる前記宛先ＭＡＣアドレスは、前記一致するデータセットに関係付けられたローカルＭＡＣアドレスに関係付けられた値を含むように決定される、方法。
【請求項１８】
請求項１１に記載の方法であって、更に、
発信パケットを受信し、
少なくとも一部には、前記発信パケットに含まれる発信元ＩＰアドレスの少なくとも一部に対して別のハッシュ演算を実施することに基づいて、別の値を決定し、
別の対応するインデックス値が見つけられるか否かを決定するために、前記事前に確立されたルックアップテーブルに照らして前記別の値を比較し、
少なくとも一部には、前記別の対応するインデックス値に対応するデータセットに基づいて、前記発信パケットに関係付けられる発信元ＭＡＣアドレスを決定すること、
を備える方法。
【請求項１９】
イーサネットパケットを転送するためのコンピュータプログラムであって、
着信パケットを受信するための機能と、
少なくとも一部には、前記着信パケットに含まれる宛先インターネットプロトコル（ＩＰ）アドレスの少なくとも一部に基づいてハッシュ演算を実施することに基づいて、値を決定するための機能と、
対応するインデックス値が見つかるか否かを決定するために、事前に確立されたルックアップテーブルに照らして前記値を比較するための機能と、前記事前に確立されたルックアップテーブルは、インデックス値と、前記インデックス値のそれぞれに対応するデータセットとを記憶しており、
少なくとも一部には、前記対応するインデックス値が前記事前に確立されたルックアップテーブルの中で見つかるか否かに基づいて、前記着信パケットに関係付けられる宛先メディアアクセスコントロール（ＭＡＣ）アドレスを決定するための機能と、
前記決定された宛先ＭＡＣアドレスに関係付けられた仮想マシンに、前記着信パケットを転送するための機能と、
をコンピュータによって実現させるコンピュータプログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００８９
【補正方法】変更
【補正の内容】
【００８９】
以上の実施形態は、理解を明瞭にすることを目的として幾らか詳細に説明されてきたが、本発明は、与えられた詳細に限定されない。本発明を実現するには、多くの代替的手法がある。開示された実施形態は、例示的なものであり、非限定的である。
適用例１：イーサネットパケットを転送するためのシステムであって、
１つ以上のプロセッサであって、
着信パケットを受信し、
少なくとも一部には、前記着信パケットに含まれる宛先インターネットプロトコル（ＩＰ）アドレスの少なくとも一部に基づいてハッシュ演算を実施することに基づいて、値を決定し、
対応するインデックス値が見つかるか否かを決定するために、事前に確立されたルックアップテーブルに照らして前記値を比較し、前記事前に確立されたルックアップテーブルは、インデックス値と、前記インデックス値のそれぞれに対応するデータセットとを記憶しており、
少なくとも一部には、前記対応するインデックス値が前記事前に確立されたルックアップテーブルのなかで見つかるか否かに基づいて、前記着信パケットに関係付けられる宛先メディアアクセスコントロール（ＭＡＣ）アドレスを決定し、
前記決定された宛先ＭＡＣアドレスに関係付けられた仮想マシンに、前記着信パケットを転送するように構成されている１つ以上のプロセッサと、
前記１つ以上のプロセッサに接続され、前記１つ以上のプロセッサに命令を提供するように構成されている１つ以上のメモリと、
を備える、
システム。
適用例２：適用例１に記載のシステムであって、
前記少なくとも一部には、前記着信パケットに含まれる宛先ＩＰアドレスの少なくとも一部に基づいてハッシュ演算を実施することに基づいて決定された、前記値は、前記ハッシュ演算によって出力されるハッシュ値である、システム。
適用例３：適用例１に記載のシステムであって、
前記少なくとも一部には、前記着信パケットに含まれる宛先ＩＰアドレスの少なくとも一部に基づいてハッシュ演算を実施することに基づいて決定された、前記値は、前記ハッシュ演算によって出力されるハッシュ値の関数である、システム。
適用例４：適用例１に記載のシステムであって、
前記対応するインデックス値が前記事前に確立されたルックアップテーブルの中で見つからない場合は、前記着信パケットに関係付けられる前記宛先ＭＡＣアドレスは、前記着信パケットに含まれる宛先ＭＡＣアドレスに関係付けられた値を含むように決定される、システム。
適用例５：適用例１に記載のシステムであって、
前記対応するインデックス値は、前記事前に確立されたルックアップテーブルにおける１つ以上のデータセットに対応している、システム。
適用例６：適用例５に記載のシステムであって、
前記１つ以上のデータセットの各データセットは、対応するＩＰアドレスと、ローカルＭＡＣアドレスと、グローバルＭＡＣアドレスとを含む、システム。
適用例７：適用例５に記載のシステムであって、
前記対応するインデックス値が前記事前に確立されたルックアップテーブルの中で見つかると、前記１つ以上のプロセッサは、更に、
前記前記対応するインデックス値に対応する前記１つ以上のデータセットから、前記着信パケットに含まれる前記宛先ＩＰアドレスに一致するＩＰアドレスを含む一致するデータセットを決定し、
前記着信パケットに含まれる宛先ＭＡＣアドレスが、前記一致するデータセットに関係付けられたグローバルＭＡＣアドレスに一致するか否かを決定するように構成されている、システム。
適用例８：適用例７に記載のシステムであって、
前記着信パケットに含まれる前記宛先ＭＡＣアドレスが、前記一致するデータセットに関係付けられた前記グローバルＭＡＣアドレスに一致しない場合には、前記着信パケットに関係付けられる前記宛先ＭＡＣアドレスは、前記着信パケットに含まれる前記宛先ＭＡＣアドレスに関係付けられた値を含むように決定される、システム。
適用例９：適用例７に記載のシステムであって、
前記着信パケットに含まれる前記宛先ＭＡＣアドレスが、前記一致するデータセットに関係付けられた前記グローバルＭＡＣアドレスに一致する場合には、前記着信パケットに関係付けられる前記宛先ＭＡＣアドレスは、前記一致するデータセットに関係付けられたローカルＭＡＣアドレスに関係付けられた値を含むように決定される、システム。
適用例１０：適用例１に記載のシステムであって、
前記１つ以上のプロセッサは、更に、
発信パケットを受信し、
少なくとも一部には、前記発信パケットに含まれる発信元ＩＰアドレスの少なくとも一部に対して別のハッシュ演算を実施することに基づいて、別の値を決定し、
別の対応するインデックス値が見つけられるか否かを決定するために、前記事前に確立されたルックアップテーブルに照らして前記別の値を比較し、
少なくとも一部には、前記別の対応するインデックス値に対応するデータセットに基づいて、前記発信パケットに関係付けられる発信元ＭＡＣアドレスを決定するように構成されている、システム。
適用例１１：イーサネットパケットを転送するための方法であって、
着信パケットを受信し、
１つ以上のプロセッサによって、少なくとも一部には、前記着信パケットに含まれる宛先インターネットプロトコル（ＩＰ）アドレスの少なくとも一部に基づいてハッシュ演算を実施することに基づいて、値を決定し、
対応するインデックス値が見つかるか否かを決定するために、事前に確立されたルックアップテーブルに照らして前記値を比較し、前記事前に確立されたルックアップテーブルは、インデックス値と、前記インデックス値のそれぞれに対応するデータセットとを記憶しており、
少なくとも一部には、前記対応するインデックス値が前記事前に確立されたルックアップテーブルの中で見つかるか否かに基づいて、前記着信パケットに関係付けられる宛先メディアアクセスコントロール（ＭＡＣ）アドレスを決定し、
前記決定された宛先ＭＡＣアドレスに関係付けられた仮想マシンに、前記着信パケットを転送すること、
を備える方法。
適用例１２：適用例１１に記載の方法であって、
前記対応するインデックス値が前記事前に確立されたルックアップテーブルの中で見つからない場合には、前記着信パケットに関係付けられる前記宛先ＭＡＣアドレスは、前記着信パケットに含まれる宛先ＭＡＣアドレスに関係付けられた値を含むように決定される、方法。
適用例１３：適用例１１に記載の方法であって、
前記対応するインデックス値は、前記事前に確立されたルックアップテーブルにおける１つ以上のデータセットに対応している、方法。
適用例１４：適用例１３に記載の方法であって、
前記１つ以上のデータセットの各データセットは、対応するＩＰアドレスと、ローカルＭＡＣアドレスと、グローバルＭＡＣアドレスとを含む、方法。
適用例１５：適用例１３に記載の方法であって、
前記対応するインデックス値が前記事前に確立されたルックアップテーブルの中で見つかると、更に、
前記前記対応するインデックス値に対応する前記１つ以上のデータセットから、前記着信パケットに含まれる前記宛先ＩＰアドレスに一致するＩＰアドレスを含む一致するデータセットを決定し、
前記着信パケットに含まれる宛先ＭＡＣアドレスが、前記一致するデータセットに関係付けられたグローバルＭＡＣアドレスに一致するか否かを決定すること、
を備える方法。
適用例１６：適用例１５に記載の方法であって、
前記着信パケットに含まれる前記宛先ＭＡＣアドレスが、前記一致するデータセットに関係付けられた前記グローバルＭＡＣアドレスに一致しない場合には、前記着信パケットに関係付けられる前記宛先ＭＡＣアドレスは、前記着信パケットに含まれる前記宛先ＭＡＣアドレスに関係付けられた値を含むように決定される、方法。
適用例１７：適用例１５に記載の方法であって、
前記着信パケットに含まれる前記宛先ＭＡＣアドレスが、前記一致するデータセットに関係付けられた前記グローバルＭＡＣアドレスに一致する場合には、前記着信パケットに関係付けられる前記宛先ＭＡＣアドレスは、前記一致するデータセットに関係付けられたローカルＭＡＣアドレスに関係付けられた値を含むように決定される、方法。
適用例１８：適用例１１に記載の方法であって、更に、
発信パケットを受信し、
少なくとも一部には、前記発信パケットに含まれる発信元ＩＰアドレスの少なくとも一部に対して別のハッシュ演算を実施することに基づいて、別の値を決定し、
別の対応するインデックス値が見つけられるか否かを決定するために、前記事前に確立されたルックアップテーブルに照らして前記別の値を比較し、
少なくとも一部には、前記別の対応するインデックス値に対応するデータセットに基づいて、前記発信パケットに関係付けられる発信元ＭＡＣアドレスを決定すること、
を備える方法。
適用例１９：非一時的なコンピュータ読み取り可能ストレージ媒体に実装された、イーサネットパケットを転送するためのコンピュータプログラム製品であって、
着信パケットを受信するためのコンピュータ命令と、
少なくとも一部には、前記着信パケットに含まれる宛先インターネットプロトコル（ＩＰ）アドレスの少なくとも一部に基づいてハッシュ演算を実施することに基づいて、値を決定するためのコンピュータ命令と、
対応するインデックス値が見つかるか否かを決定するために、事前に確立されたルックアップテーブルに照らして前記値を比較するためのコンピュータ命令と、前記事前に確立されたルックアップテーブルは、インデックス値と、前記インデックス値のそれぞれに対応するデータセットとを記憶しており、
少なくとも一部には、前記対応するインデックス値が前記事前に確立されたルックアップテーブルの中で見つかるか否かに基づいて、前記着信パケットに関係付けられる宛先メディアアクセスコントロール（ＭＡＣ）アドレスを決定するためのコンピュータ命令と、
前記決定された宛先ＭＡＣアドレスに関係付けられた仮想マシンに、前記着信パケットを転送するためのコンピュータ命令と、
を備えるコンピュータプログラム製品。
【国際調査報告】
2016509822.tif 000012
2016509822.tif 000013