(57)【特許請求の範囲】
【請求項１】
第１の装置と第２の装置との間にトンネルが形成され前記トンネルの区間内に複数の経路が設定されたネットワークを介して送信されるパケットを処理する通信制御プログラムであって、
前記第１の装置に対して設定された第１の送信元アドレスと前記第２の装置に対して設定された第１の宛先アドレスとを含み、前記第１の送信元アドレスと前記第１の宛先アドレスの少なくとも一方が複数設定されたアドレス情報を記憶する記憶部を備えるコンピュータに、
第２の送信元アドレスと第２の宛先アドレスとを含む第１のパケットを取得し、前記アドレス情報の中から、前記第２の送信元アドレスと前記第２の宛先アドレスとに応じた前記第１の送信元アドレスと前記第１の宛先アドレスとを選択し、
前記第１のパケットのトンネルヘッダに、選択した前記第１の送信元アドレスと前記第１の宛先アドレスとを付加して、カプセル化した第２のパケットを生成する、
処理を実行させる通信制御プログラム。
【請求項２】
前記記憶部は、前記第１の送信元アドレスと前記第１の宛先アドレスと前記トンネルの区間内の経路を識別するための識別情報とを対応付けた経路情報を更に記憶し、
前記コンピュータに、前記経路情報に基づいて、前記複数の経路のうち選択した前記第１の送信元アドレスと前記第１の宛先アドレスとに応じた経路で送信されるよう、前記第２のパケットの送信を制御する、処理を更に実行させる、
請求項１記載の通信制御プログラム。
【請求項３】
前記コンピュータに、
前記複数の経路のうち輻輳が検出された経路についての輻輳情報を取得し、
前記輻輳情報に基づいて、前記アドレス情報が示す前記第１の送信元アドレスと前記第１の宛先アドレスの組み合わせのうち、選択可能な組み合わせを制限する、
処理を更に実行させる請求項１または２記載の通信制御プログラム。
【請求項４】
第１の装置と第２の装置との間にトンネルが形成され前記トンネルの区間内に複数の経路が設定されたネットワークを介して送信されるパケットを処理する情報処理装置であって、
前記第１の装置に対して設定された第１の送信元アドレスと前記第２の装置に対して設定された第１の宛先アドレスとを含み、前記第１の送信元アドレスと前記第１の宛先アドレスの少なくとも一方が複数設定されたアドレス情報を記憶する記憶部と、
第２の送信元アドレスと第２の宛先アドレスとを含む第１のパケットを取得し、前記アドレス情報の中から、前記第２の送信元アドレスと前記第２の宛先アドレスとに応じた前記第１の送信元アドレスと前記第１の宛先アドレスとを選択する制御部と、
前記第１のパケットのトンネルヘッダに、選択した前記第１の送信元アドレスと前記第１の宛先アドレスとを付加した、カプセル化された第２のパケットを送信する送信部と、
を有する情報処理装置。
【請求項５】
第１の装置と第２の装置との間にトンネルが形成され前記トンネルの区間内に複数の経路が設定されたネットワークを介して送信されるパケットを処理するパケット通信方法であって、
前記第１の装置に対して設定された第１の送信元アドレスと前記第２の装置に対して設定された第１の宛先アドレスとを含み、前記第１の送信元アドレスと前記第１の宛先アドレスの少なくとも一方が複数設定されたアドレス情報を記憶する記憶部を備えるコンピュータが、
第２の送信元アドレスと第２の宛先アドレスとを含む第１のパケットを取得し、前記アドレス情報の中から、前記第２の送信元アドレスと前記第２の宛先アドレスとに応じた前記第１の送信元アドレスと前記第１の宛先アドレスとを選択し、
前記第１のパケットのトンネルヘッダに、選択した前記第１の送信元アドレスと前記第１の宛先アドレスとを付加して、カプセル化した第２のパケットを送信する、
パケット通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は通信制御プログラム、情報処理装置およびパケット通信方法に関する。
【背景技術】
【０００２】
現在、物理的なネットワーク上に複数の論理的なネットワークを形成するネットワークの仮想化技術が利用されている。ネットワークの仮想化を行うことで、通信装置間の物理的な配線を変更しなくても、ユーザ毎にパケットの到達範囲を変更することができる。例えば、複数のユーザが利用するデータセンタのレイヤ２ネットワークにおいて、パケットがユーザ毎に論理的に分離されるように仮想化技術を用いることが考えられる。
【０００３】
ネットワークの仮想化を実現する方式の１つとして、通信装置の間にトンネルを形成するトンネル方式がある。トンネル区間内では、トンネルヘッダが付加されてカプセル化されたパケットが伝送される。トンネルを通過するパケットは、トンネルの一方の端点（ヘッドポイント）でカプセル化され、他方の端点でカプセル化が解除される。トンネル区間内でのパケット伝送のため、例えば、カプセル化されたパケットには、トンネルの両端の通信装置のアドレスが送信元アドレスおよび宛先アドレスとして付加されている。
【０００４】
ところで、ネットワークには、経路が冗長化されて、パケットの送信元と宛先との間に複数の物理的な経路が存在するものもある。経路が冗長化されている場合の経路制御技術としては、ＳＴＰ（Spanning Tree Protocol）やマルチパス技術がある。ＳＴＰでは、ネットワーク内に存在するループが検出され、論理的にループが解消されるように通信装置間のリンクの一部を使用禁止にする。一方、マルチパス技術では、複数の経路を利用してパケットを分散して伝送する。例えば、パケットに付加された送信元アドレスや宛先アドレスなどに基づいて、当該パケットを伝送する経路を選択することが考えられる。マルチパス技術を用いることで、通信装置間のリンクの使用効率を向上させることができる。
【０００５】
なお、マルチパス技術に関し、１つの宛先アドレスに対して複数の経路を登録したマルチパスルーティングテーブルを備え、マルチパスルーティングテーブルに従って、受信したパケットを出力するインタフェースを選択するパケット中継装置が提案されている。また、パケットの送信元アドレスをアプリケーションの種別に応じた仮想ＩＰ（Internet Protocol）アドレスに変換し、複数の経路が設定されたＩＰネットワークに出力することで、復路も往路と同じ経路になるよう制御可能なパケット中継装置が提案されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−１６５９５２号公報
【特許文献２】特開２００１−１６０８２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
パケットを伝送するネットワーク（例えば、レイヤ２ネットワーク）に、トンネル方式によるネットワークの仮想化とマルチパス技術の両方を適用することを考える。しかし、その場合に、トンネルの両端の通信装置の物理アドレスを用いてパケットがカプセル化されてしまうと、トンネル区間内では経路制御について、カプセル化前の元の送信元アドレスや宛先アドレスの違い（フローの違い）が認識されなくなってしまう。よって、トンネル区間内に複数の経路を設定しても、カプセル化されたパケットを複数の経路に分散して伝送することが難しく、伝送効率が低下するという問題がある。
【０００８】
１つの側面では、本発明は、複数の経路を用いてパケットを送信できるようにする通信制御プログラム、情報処理装置およびパケット通信方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
トンネルが形成されトンネルの区間内に複数の経路が設定されたネットワークを介して送信されるパケットを処理する通信制御プログラムが提供される。通信制御プログラムを実行するコンピュータが、トンネルの１つの端点に設定された第１の送信元アドレスと他の端点に設定された第１の宛先アドレスとを含み、第１の送信元アドレスと第１の宛先アドレスの少なくとも一方が複数設定されたアドレス情報を記憶する記憶部を備える。当該コンピュータが、第２の送信元アドレスと第２の宛先アドレスとを含む第１のパケットを取得し、アドレス情報の中から、第２の送信元アドレスと第２の宛先アドレスとに応じた第１の送信元アドレスと第１の宛先アドレスとを選択する。当該コンピュータが、第１のパケットのトンネルヘッダに、選択した第１の送信元アドレスと第１の宛先アドレスとを付加して、カプセル化した第２のパケットを生成する。
【００１０】
また、トンネルが形成されトンネルの区間内に複数の経路が設定されたネットワークを介して送信されるパケットを処理する情報処理装置が提供される。情報処理装置は、記憶部と制御部と送信部とを有する。記憶部は、トンネルの１つの端点に設定された第１の送信元アドレスと他の端点に設定された第１の宛先アドレスとを含み、第１の送信元アドレスと第１の宛先アドレスの少なくとも一方が複数設定されたアドレス情報を記憶する。制御部は、第２の送信元アドレスと第２の宛先アドレスとを含む第１のパケットを取得し、アドレス情報の中から、第２の送信元アドレスと第２の宛先アドレスとに応じた第１の送信元アドレスと第１の宛先アドレスとを選択する。送信部は、第１のパケットのトンネルヘッダに、選択した第１の送信元アドレスと第１の宛先アドレスとを付加した、カプセル化された第２のパケットを送信する。
【００１１】
また、トンネルが形成され前記トンネルの区間内に複数の経路が設定されたネットワークを介して送信されるパケットを処理するパケット通信方法が提供される。
【発明の効果】
【００１２】
上記通信制御プログラム、情報処理装置およびパケット通信方法によれば、複数の経路を用いてパケットを送信できるようになる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施の形態の情報処理装置を示す図である。
【図２】第２の実施の形態の通信システムを示す図である。
【図３】サーバ装置のハードウェア例を示すブロック図である。
【図４】仮想マシンの配置例を示すブロック図である。
【図５】仮想マシンの他の配置例を示すブロック図である。
【図６】パケットのフォーマット例を示す図である。
【図７】サーバ装置の仮想スイッチを示すブロック図である。
【図８】仮想アドレステーブルの例を示す図である。
【図９】フロー管理テーブルの例を示す図である。
【図１０】経路テーブルの例を示す図である。
【図１１】パケット送信処理を示すフローチャートである。
【図１２】パケット受信処理を示すフローチャートである。
【図１３】パケット通信の手順例を示す第１の図である。
【図１４】パケット通信の手順例を示す第２の図である。
【図１５】パケット通信の手順例を示す第３の図である。
【図１６】パケット通信の手順例を示す第４の図である。
【図１７】パケット通信の手順例を示す第５の図である。
【発明を実施するための形態】
【００１４】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の情報処理装置を示す図である。第１の実施の形態の情報処理装置１０は、トンネル１４が形成されトンネル１４の区間内に複数の経路（例えば、経路＃１，＃２）が設定されたネットワークを介して送信されるパケットを処理する。情報処理装置１０は、記憶部１１、制御部１２および送信部１３を有する。
【００１５】
記憶部１１は、アドレス情報１１ａを記憶する。アドレス情報１１ａは、トンネル１４の１つの端点に設定されたアドレス（第１の送信元アドレス）と、他の端点に設定されたアドレス（第１の宛先アドレス）を含む。トンネル１４の少なくとも一方の端点に、複数のアドレス（好ましくは、複数の第１の宛先アドレス）が設定される。例えば、１つの端点にアドレスｈが設定され、他の端点にアドレスｅ，ｆが設定される。なお、アドレス情報１１ａが示すアドレスの中には、トンネル１４の端点の通信装置の物理アドレスが含まれてもよい。例えば、アドレスｅ，ｆの何れか一方が、物理アドレスであってもよい。また、アドレス情報１１ａが示すアドレスは、全て仮想アドレスであってもよい。
【００１６】
制御部１２は、送信元アドレス（第２の送信元アドレス）と宛先アドレス（第２の宛先アドレス）を含むパケットを取得する。制御部１２は、取得したパケットの送信元アドレスと宛先アドレスに応じて、記憶部１１に記憶されたアドレス情報１１ａの中から、カプセル化に用いる送信元アドレスと宛先アドレスを選択する。例えば、制御部１２は、元のパケットの送信元アドレスと宛先アドレスの組が同じであれば、カプセル化に用いる送信元アドレスと宛先アドレスの組が同じになるよう制御する。未知のアドレス組をもつパケットが到着したときは、使用頻度が平均化されるように（例えば、ラウンドロビン方式により）、カプセル化に用いるアドレス組を選択する。
【００１７】
送信部１３は、トンネル１４の区間内で伝送されるカプセル化されたパケットをネットワークに出力する。カプセル化されたパケットは、取得された元のパケットに、トンネルヘッダや制御部１２で選択された送信元アドレスおよび宛先アドレスが付加されたものである。トンネル１４の区間内でのパケットの伝送経路は、トンネルヘッダに対して付加された（制御部１２で選択された）送信元アドレスと宛先アドレスに基づいて選択される。例えば、アドレス組（ａ，ｃ）をもつパケットが、アドレス組（ｈ，ｅ）を用いてカプセル化されて、経路＃１で伝送される。また、アドレス組（ａ，ｄ）をもつパケットが、アドレス組（ｈ，ｆ）を用いてカプセル化され、経路＃２で伝送される。
【００１８】
カプセル化したパケットの伝送経路は、情報処理装置１０が選択してもよいし、ネットワークの通信装置（例えば、スイッチ）が選択してもよい。前者の場合、記憶部１１は、カプセル化に用いる送信元アドレスおよび宛先アドレスと、トンネル１４の区間内の経路を識別するための識別情報とを対応付けた経路情報１１ｂを記憶する。制御部１２は、記憶部１１に記憶された経路情報１１ｂを参照して、カプセル化後の送信元アドレスと宛先アドレスの組に応じた経路で伝送されるよう、パケットの送信を制御する。例えば、制御部１２は、経路情報１１ｂの示す識別情報がトンネルヘッダに付加されるよう制御する。なお、トンネル１４の区間内の通信装置は、トンネルヘッダに付加された宛先アドレスや識別情報などに応じた経路でパケットを転送するよう設定されている。
【００１９】
また、制御部１２は、トンネル１４の区間内の輻輳状況を考慮して、カプセル化に用いる送信元アドレスと宛先アドレスを選択するようにしてもよい。例えば、制御部１２は、ネットワークの通信装置から、輻輳が検出された経路についての輻輳情報を取得する。輻輳情報には、例えば、輻輳している経路で伝送しようとしたパケットの送信元アドレスと宛先アドレス（カプセル化後の送信元アドレスと宛先アドレス）が含まれる。制御部１２は、取得した輻輳情報に基づいて、アドレス情報１１ａが示すアドレス組のうちカプセル化のために選択可能なアドレス組を制限する。例えば、輻輳情報が示す送信元アドレスと宛先アドレスの組を、選択可能なアドレス組から除外する。
【００２０】
なお、トンネル方式でネットワークの仮想化を行うことで、ＶＬＡＮ（Virtual Local Area Network）方式より高いスケーラビリティを得ることができる。トンネル１４を形成する方法として、レイヤ２トンネリングやレイヤ３トンネリングなどを用いることができる。トンネリング技術には、ＧＲＥ（Generic Routing Encapsulation）やＩＰｏｖｅｒＩＰなどが含まれる。情報処理装置１０は、トンネル１４の一方の端点に位置する通信装置として機能してもよい。また、情報処理装置１０は、記憶部１１を備えるコンピュータに、所定の通信制御プログラムを実行させることで実現してもよい。上記のパケットは、フレームなど他の名称で呼ばれる送信単位も含み、上記の送信元アドレスや宛先アドレスは、ＭＡＣ（Medium Access Control）アドレスであってもよい。
【００２１】
第１の実施の形態の情報処理装置１０によれば、第２の送信元アドレスと第２の宛先アドレスとを含む第１のパケットが取得され、アドレス情報１１ａの中から、第２の送信元アドレスと第２の宛先アドレスとに応じた第１の送信元アドレスと第１の宛先アドレスとが選択される。第１のパケットのトンネルヘッダに、選択された第１の送信元アドレスと第１の宛先アドレスとが付加されて、カプセル化された第２のパケットが送信される。
【００２２】
これにより、カプセル化に使用可能な送信元アドレスと宛先アドレスの組を複数用意することができる。このため、トンネル１４の区間内でも、カプセル化後の送信元アドレスや宛先アドレスに基づいて、複数のフローを区別して認識することができる。よって、トンネル１４の区間に設定した複数の経路に分散して、カプセル化されたパケットを送信することができ、カプセル化されたパケットを効率的に伝送することが可能となる。また、パケットの分散により、ネットワークでの輻輳の発生を抑制することができる。
【００２３】
［第２の実施の形態］
図２は、第２の実施の形態の通信システムを示す図である。第２の実施の形態では、複数のサーバ装置で実行される仮想マシン（ＶＭ：Virtual Machine）がレイヤ２ネットワークを介して通信を行う通信システムを考える。第２の実施の形態の通信システムは、例えば、複数のユーザが利用するデータセンタに設けることができる。通信システムは、スイッチ２１〜２６を含むネットワーク２０とサーバ装置１００，１００ａとを有する。
【００２４】
スイッチ２１〜２６は、パケットを転送する通信装置である。スイッチ２１はサーバ装置１００に接続され、スイッチ２２はサーバ装置１００ａに接続されている。サーバ装置１００とサーバ装置１００ａの間の経路には、スイッチ２１，２４、２２を経由する経路と、スイッチ２１，２５，２２を経由する経路とが含まれる。ネットワーク２０上には、トンネル方式の仮想化により、ユーザ毎に論理的なネットワークを形成することができる。スイッチ２１〜２６は、トンネルヘッダが付加されたカプセル化されたパケットを転送できる。また、ネットワーク２０上には、マルチパスを形成することができる。
【００２５】
サーバ装置１００，１００ａは、論理的なコンピュータである仮想マシンを複数実行可能な情報処理装置である。仮想マシンは、当該仮想マシンに割り当てられたハードウェア資源の範囲内で情報処理を行う。サーバ装置１００，１００ａでは、仮想スイッチと呼ばれるソフトウェアが実行されている。仮想スイッチは、仮想マシンが出力したパケットをネットワーク２０に送信し、ネットワーク２０から受信したパケットを宛先アドレスに応じて仮想マシンに振り分ける。サーバ装置１００上の仮想マシンとサーバ装置１００ａ上の仮想マシンとが通信する場合、例えば、サーバ装置１００，１００ａの間にトンネルを形成する。仮想スイッチは、トンネルの端点の通信装置としてトンネル通信を制御する。
【００２６】
図３は、サーバ装置のハードウェア例を示すブロック図である。サーバ装置１００は、ＣＰＵ（Central Processing Unit）１０１、ＲＡＭ（Random Access Memory）１０２、ＨＤＤ（Hard Disk Drive）１０３、画像信号処理部１０４、入力信号処理部１０５、ディスクドライブ１０６および通信部１０７を有する。上記ユニットは、サーバ装置１００内でバスに接続されている。なお、サーバ装置１００ａも、サーバ装置１００と同様のハードウェアによって実現することができる。
【００２７】
ＣＰＵ１０１は、サーバ装置１００における情報処理を制御する演算装置である。ＣＰＵ１０１は、ＨＤＤ１０３に記憶されたプログラムやデータの少なくとも一部を読み出して、ＲＡＭ１０２に展開してプログラムを実行する。なお、サーバ装置１００は、複数のＣＰＵを備えていてもよい。
【００２８】
ＲＡＭ１０２は、ＣＰＵ１０１が扱うプログラムやデータを一時的に記憶する揮発性メモリである。なお、サーバ装置１００は、複数のＲＡＭを備えていてもよく、ＲＡＭ以外の種類のメモリを備えていてもよい。
【００２９】
ＨＤＤ１０３は、ＯＳ（Operating System）プログラムやアプリケーションプログラムなどのプログラム、および、ＣＰＵ１０１の処理に用いられるデータを記憶する不揮発性の記憶装置である。ＨＤＤ１０３は、内蔵の磁気ディスクに対し読み書きを行う。なお、サーバ装置１００は、複数のＨＤＤを備えていてもよく、ＨＤＤ以外の種類の不揮発性の記憶装置（例えば、ＳＳＤ（Solid State Drive））を備えていてもよい。
【００３０】
画像信号処理部１０４は、ＣＰＵ１０１の命令に従って、サーバ装置１００に接続されたディスプレイ３１に画像を表示する。ディスプレイ３１として、例えば、ＣＲＴ（Cathode Ray Tube）ディスプレイや液晶ディスプレイを用いることができる。
【００３１】
入力信号処理部１０５は、サーバ装置１００に接続された入力デバイス３２から入力信号を取得し、ＣＰＵ１０１に出力する。入力デバイス３２として、例えば、マウスなどのポインティングデバイスや、キーボードを用いることができる。
【００３２】
ディスクドライブ１０６は、記録媒体３３に記録されたプログラムやデータを読み取る駆動装置である。記録媒体３３として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）などの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）を用いることができる。ディスクドライブ１０６は、例えば、ＣＰＵ１０１の命令に従って、記録媒体３３から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に出力する。
【００３３】
通信部１０７は、ネットワーク２０に接続して通信を行う通信インタフェースである。ネットワーク２０への接続方法は、有線でも無線でもよい。すなわち、通信部１０７は、有線通信インタフェースでも無線通信インタフェースでもよい。
【００３４】
図４は、仮想マシンの配置例を示すブロック図である。サーバ装置１００には、サーバ装置１００がプログラムを実行することで、例えば、仮想マシン１１１（ＶＭ＃１）、仮想マシン１１２（ＶＭ＃２）およびハイパーバイザ１２１が実現される。
【００３５】
仮想マシン１１１，１１２は、ハイパーバイザ１２１から割り当てられたハードウェア資源（ＣＰＵの処理能力やＲＡＭの記憶領域など）を用いて、ユーザから要求された情報処理を行う。仮想マシン毎にＯＳが実行される。仮想マシン１１１，１１２は、それぞれＭＡＣアドレスが付与されており、他の仮想マシンと通信することができる。ハイパーバイザ１２１は、仮想マシン１１１，１１２にサーバ装置１００のハードウェア資源を割り振り、仮想マシン１１１，１１２の実行を管理する。
【００３６】
ハイパーバイザ１２１は、仮想スイッチを有する。仮想スイッチは、サーバ装置１００とネットワーク２０の間の通信帯域を管理し、仮想マシン１１１，１１２と通信部１０７の間でパケットを処理する。前述の通り、仮想スイッチは、仮想マシン１１１，１１２から出力されたパケットを、通信部１０７を介してネットワーク２０に送信する。また、通信部１０７を介してネットワーク２０から受信したパケットを、宛先ＭＡＣアドレスに応じて仮想マシン１１１，１１２に振り分ける。また、仮想スイッチは、トンネルの端点の通信装置として機能し、トンネルを介して伝送するパケットを処理する。
【００３７】
図５は、仮想マシンの他の配置例を示すブロック図である。サーバ装置１００ａには、サーバ装置１００ａがプログラムを実行することで、例えば、仮想マシン１１３（ＶＭ＃３）、仮想マシン１１４（ＶＭ＃４）、仮想マシン１１５（ＶＭ＃０）およびハイパーバイザ１２２が実現される。また、サーバ装置１００ａは、通信部１０７ａを有する。
【００３８】
仮想マシン１１３，１１４は、前述の仮想マシン１１１，１１２と同様に、ユーザから要求された情報処理を行う。仮想マシン１１５は、ハイパーバイザ１２２経由で仮想マシン１１３，１１４から命令を受け付け、各種デバイスへのアクセスを行うデバイス制御用の仮想マシンである。ハイパーバイザ１２２は、仮想マシン１１３〜１１５にサーバ装置１００ａのハードウェア資源を割り振る。ハイパーバイザ１２２は、仮想マシン１１３，１１４と通信部１０７ａの間でパケットを転送する仮想スイッチを有する。
【００３９】
図６は、パケットのフォーマット例を示す図である。仮想マシン１１１〜１１４が出力するパケットには、宛先の仮想マシンのＭＡＣアドレス、送信元の仮想マシンのＭＡＣアドレス、および、ペイロードが含まれる（図６（Ａ））。仮想スイッチでは、仮想マシンから出力されたパケットに、トンネルヘッダと、カプセル化用の宛先ＭＡＣアドレスおよび送信元ＭＡＣアドレスが付加される（図６（Ｂ））。カプセル化用の宛先ＭＡＣアドレスと送信元ＭＡＣアドレスの組は、トンネル毎に複数通り用意されている。
【００４０】
ネットワーク２０のトンネル区間には、マルチパスが形成される。例えば、スイッチ２１，２４，２２を経由する経路と、スイッチ２１，２５，２２を経由する経路が設定される。トンネル区間の経路は、カプセル化後の宛先ＭＡＣアドレスと送信元ＭＡＣアドレスに基づいて選択される。各スイッチでのマルチパス制御の方法としては、例えば、ＳＰＡＩＮ（Smart Path Assignment In Networks）を用いることができる。ＳＰＡＩＮでは、選択された経路を各スイッチが認識できるように、ＶＬＡＮ  ＩＤを使用する。ＳＰＡＩＮについては、例えば、Jayaram Mudigonda, Praveen Yalagandula, Mohammad Al-Fares and Jeffrey C. Mogul, SPAIN: Design and Algorithms for Constructing Large Data-Center Ethernets from Commodity Switches, October 8, 2009に記載がある。
【００４１】
仮想スイッチは、ネットワーク２０に設定されている複数の経路の中から、カプセル化したパケットを伝送する経路を選択し、選択した経路に対応するＶＬＡＮ  ＩＤを更に付加する。例えば、トンネルヘッダとカプセル化用の宛先ＭＡＣアドレスおよび送信元ＭＡＣアドレスとの間に、ＶＬＡＮ  ＩＤが挿入される（図６（Ｃ））。トンネル区間の各スイッチは、例えば、ＶＬＡＮ  ＩＤと経路の対応情報を有し、ＶＬＡＮ  ＩＤとカプセル化後の宛先ＭＡＣアドレスに基づいてパケットの転送先を制御する。
【００４２】
ただし、ＶＬＡＮ  ＩＤを用いる方法は、マルチパス制御の一例であり、選択された経路でパケットを伝送できれば他の方法を用いてもよい。また、経路選択は、サーバ装置１００，１００ａで行わずに、ネットワーク２０で行ってもよい。その場合、スイッチ２１，２２は、カプセル化後の宛先ＭＡＣアドレスと送信元ＭＡＣアドレスに基づいて、カプセル化されたパケットを伝送する経路を選択する。そして、例えば、選択した経路に対応するＶＬＡＮ  ＩＤを当該パケットに挿入して、他のスイッチに転送する。
【００４３】
図７は、サーバ装置の仮想スイッチを示すブロック図である。仮想スイッチ１３０は、サーバ装置１００のハイパーバイザ１２１に含まれる。サーバ装置１００ａのハイパーバイザ１２２に含まれる仮想スイッチも、仮想スイッチ１３０と同様の構成によって実現できる。仮想スイッチ１３０は、ＶＭパケット処理部１３１、トンネル処理部１３２、輻輳制御部１３３、仮想アドレス制御部１３４、伝送パケット処理部１３５および経路制御部１３６を有する。
【００４４】
ＶＭパケット処理部１３１は、仮想マシン１１１，１１２から出力されたパケットを取得し、トンネル処理部１３２に出力する。また、ＶＭパケット処理部１３１は、仮想マシン１１１，１１２に付与されたＭＡＣアドレスを示す情報を保持している。トンネル処理部１３２からカプセル化が解除されたパケットを取得すると、パケットの宛先ＭＡＣアドレスが示す仮想マシンに当該パケットを出力する。
【００４５】
トンネル処理部１３２は、トンネルを介して伝送されるパケットのカプセル化およびカプセル化の解除を行う。トンネル処理部１３２は、ＶＭパケット処理部１３１からパケットを取得し、パケットのカプセル化に用いる宛先ＭＡＣアドレスと送信元ＭＡＣアドレスを仮想アドレス制御部１３４に問い合わせる。そして、仮想アドレス制御部１３４で選択されたＭＡＣアドレスを用いてカプセル化し、伝送パケット処理部１３５に出力する。また、トンネル処理部１３２は、伝送パケット処理部１３５からカプセル化されたパケットを取得し、トンネルヘッダを除去してＶＭパケット処理部１３１に出力する。カプセル化の解除の際には、元のＭＡＣアドレスとカプセル化後のＭＡＣアドレスの対応関係を仮想アドレス制御部１３４に通知する。
【００４６】
輻輳制御部１３３は、伝送パケット処理部１３５から輻輳制御パケットを取得する。輻輳制御パケットは、輻輳を検出したスイッチが送信する制御パケットである。輻輳制御パケットには、輻輳により破棄されたパケットの宛先ＭＡＣアドレスや送信元ＭＡＣアドレス（カプセル化後のＭＡＣアドレス）が含まれている。輻輳制御部１３３は、輻輳制御パケットに含まれるＭＡＣアドレスを抽出して仮想アドレス制御部１３４に通知する。
【００４７】
仮想アドレス制御部１３４は、仮想アドレステーブル１４１とフロー管理テーブル１４２を用いて、トンネルヘッダに付加する宛先ＭＡＣアドレス（仮想宛先アドレス）と送信元ＭＡＣアドレス（仮想送信元アドレス）を管理する。仮想アドレス制御部１３４は、パケットの送信時、元のパケットのＭＡＣアドレスに応じて、カプセル化に用いるＭＡＣアドレスを選択する。仮想アドレス制御部１３４は、パケットの受信時、受信したパケットの元のＭＡＣアドレスとカプセル化に用いられているＭＡＣアドレスの対応を確認し、両者の対応付けを更新することがある。また、輻輳制御パケットが受信されると、輻輳している経路が選択されないように、カプセル化に用いるＭＡＣアドレスを制限する。
【００４８】
伝送パケット処理部１３５は、トンネル処理部１３２からカプセル化されたパケットを取得し、経路制御部１３６に当該パケットを伝送する経路を問い合わせる。そして、経路制御部１３６で選択されたＶＬＡＮ  ＩＤをトンネルヘッダに付加して、通信部１０７に出力する。また、伝送パケット処理部１３５は、通信部１０７からカプセル化されたパケットを取得し、トンネルヘッダからＶＬＡＮ  ＩＤを除去して、トンネル処理部１３２に出力する。また、輻輳制御パケットを取得すると、輻輳制御部１３３に出力する。
【００４９】
経路制御部１３６は、経路テーブル１４３を用いて、パケットの送信経路を制御する。経路制御部１３６は、パケットの送信時、伝送パケット処理部１３５が取得したパケット（カプセル化されたパケット）の宛先ＭＡＣアドレスと送信元ＭＡＣアドレスに対応する経路を選択し、経路を示すＶＬＡＮ  ＩＤを選択する。
【００５０】
仮想アドレステーブル１４１、フロー管理テーブル１４２および経路テーブル１４３は、ＲＡＭ１０２やＨＤＤ１０３などの記憶装置に記憶される。仮想アドレステーブル１４１は、カプセル化に使用可能な宛先ＭＡＣアドレスと送信元ＭＡＣアドレスの組を示す。フロー管理テーブル１４２は、カプセル化前のＭＡＣアドレスとカプセル化後のＭＡＣアドレスとの対応関係を示す。経路テーブル１４３は、カプセル化後のＭＡＣアドレスと経路を識別するためのＶＬＡＮ  ＩＤとの対応関係を示す。
【００５１】
なお、経路選択をサーバ装置１００で行わずにネットワーク２０で行う場合、仮想スイッチ１３０は、経路制御部１３６および経路テーブル１４３を有しなくてもよい。その場合、例えば、スイッチ２１が、経路制御部１３６に相当する機能と経路テーブル１４３に相当するデータを有していればよい。
【００５２】
また、仮想アドレステーブル１４１、フロー管理テーブル１４２および経路テーブル１４３を記憶する記憶装置は、第１の実施の形態の記憶部１１の一例である。トンネル処理部１３２、輻輳制御部１３３、仮想アドレス制御部１３４および経路制御部１３６は、第１の実施の形態の制御部１２の一例である。伝送パケット処理部１３５および通信部１０７は、第１の実施の形態の送信部１３の一例である。
【００５３】
図８は、仮想アドレステーブルの例を示す図である。仮想アドレステーブル１４１は、仮想スイッチ１３０がアクセス可能な記憶領域に格納される。仮想アドレステーブル１４１は、経路ＩＤ、送信元アドレス、宛先アドレスおよび輻輳フラグを示す項目を含む。
【００５４】
経路ＩＤは、仮想宛先アドレスと仮想送信元アドレスの組を識別するための識別情報である。アドレス組がネットワーク２０の経路と１対１に対応している場合、経路ＩＤは経路を示す。送信元アドレスは、トンネルの送信側の端点であるサーバ装置１００に設定された仮想アドレス（仮想送信元アドレス）である。宛先アドレスは、トンネルの受信側の端点であるサーバ装置１００ａに設定された仮想アドレス（仮想宛先アドレス）である。経路ＩＤ、送信元アドレスおよび宛先アドレスは、例えば、管理者が予め設定しておく。輻輳フラグは、アドレス組に対応する経路で輻輳が発生しているか否かを示す。輻輳フラグは、仮想アドレス制御部１３４によって更新される。
【００５５】
例えば、サーバ装置１００に仮想アドレスとしてアドレスｇ，ｈが設定される。アドレスｇ，ｈの何れか１つがサーバ装置１００の物理ＭＡＣアドレスであってもよいし、全て物理ＭＡＣアドレスと異なってもよい。また、サーバ装置１００ａに仮想アドレスとしてアドレスｅ，ｆが設定される。アドレスｅ，ｆの何れか１つがサーバ装置１００ａの物理ＭＡＣアドレスであってもよいし、全て物理ＭＡＣアドレスと異なってもよい。そして、仮想宛先アドレスと仮想送信元アドレスの組として、例えば、（ｅ，ｇ）と（ｆ，ｈ）が定義される。仮想宛先アドレスと仮想送信元アドレスの少なくとも一方が異なれば、異なるアドレス組と認識される。なお、サーバ装置１００ａが有する仮想アドレステーブルには、送信元と宛先が仮想アドレステーブル１４１とは逆に登録される。
【００５６】
図９は、フロー管理テーブルの例を示す図である。フロー管理テーブル１４２は、仮想スイッチ１３０がアクセス可能な記憶領域に格納される。フロー管理テーブル１４２は、フローＩＤ、送信元アドレス、宛先アドレスおよび経路ＩＤを示す項目を含む。
【００５７】
フローＩＤは、宛先ＭＡＣアドレスと送信元ＭＡＣアドレスの組を識別するための識別情報であり、パケットのフローに対応する。送信元アドレスは、パケットの送信元の仮想マシンに付与されたＭＡＣアドレスである。宛先アドレスは、パケットの宛先の仮想マシンに付与されたＭＡＣアドレスである。サーバ装置１００ａが有するフロー管理テーブルには、送信元と宛先がフロー管理テーブル１４２とは逆に登録される。経路ＩＤは、仮想アドレステーブル１４１の中から選択された仮想アドレスの組を示す。フロー管理テーブル１４２は、仮想アドレス制御部１３４によって更新される。
【００５８】
仮想マシンのＭＡＣアドレスの組１つに対して、仮想アドレスの組１つが対応付けられる。仮想アドレスの組は、トンネル区間の経路の選択に用いられることから、パケットが複数の経路に分散するようにするため、できる限り均等に使用されることが好ましい。例えば、仮想アドレス制御部１３４は、新たな仮想マシンのＭＡＣアドレスの組が検出される毎に、ラウンドロビン方式で経路ＩＤを選択する。仮想アドレスの組が２つ定義されている場合、２つの経路ＩＤを交互に選択することが考えられる。なお、図９では、ＶＭ＃１のＭＡＣアドレスをａ、ＶＭ＃２のＭＡＣアドレスをｂ、ＶＭ＃３のＭＡＣアドレスをｃ、ＶＭ＃４のＭＡＣアドレスをｄと表記している。
【００５９】
図１０は、経路テーブルの例を示す図である。経路テーブル１４３は、仮想スイッチ１３０がアクセス可能な記憶領域に格納される。経路テーブル１４３は、ＶＬＡＮ  ＩＤ、送信元アドレスおよび宛先アドレスの項目を含む。
【００６０】
ＶＬＡＮ  ＩＤは、カプセル化されたパケットのトンネルヘッダに付加するＶＬＡＮ  ＩＤである。ＶＬＡＮ  ＩＤは、スイッチ２１〜２６が、サーバ装置１００で選択された経路を認識してパケットの転送先を制御するために用いられる。送信元アドレスは、トンネルヘッダに付加される仮想送信元アドレスである。宛先アドレスは、トンネルヘッダに付加される仮想宛先アドレスである。サーバ装置１００ａが有する経路テーブルには、送信元と宛先が経路テーブル１４３とは逆に登録される。経路テーブル１４３のＶＬＡＮ  ＩＤと仮想アドレスの対応関係は、例えば、管理者が予め定義しておく。
【００６１】
スイッチ２１〜２６には、ＶＬＡＮ  ＩＤとＭＡＣアドレスから転送先を判断するための転送情報が登録される。転送情報により、例えば、ＶＬＡＮ＃１と宛先アドレスｅが付されたパケットは、スイッチ２１，２４，２２の順に転送され、ＶＬＡＮ＃１と宛先アドレスｇが付されたパケットは、その逆順に転送される（経路Ｘ）。また、ＶＬＡＮ＃２と宛先アドレスｆが付されたパケットは、スイッチ２１，２５，２２の順に転送され、ＶＬＡＮ＃２と宛先アドレスｈが付されたパケットは、その逆順に転送される（経路Ｙ）。
【００６２】
なお、図８〜１０のテーブル例では、ネットワーク２０に設定した経路と仮想アドレスの組とが１対１に対応付けられている。経路と仮想アドレスの組とを１対１に対応付けることで、少数の仮想アドレスを効率的に使用してマルチパスを実現できる。ただし、仮想アドレスの組から経路を一意に特定できればよく、１つの経路に対して複数の仮想アドレスの組を対応付けてもよい。
【００６３】
図１１は、パケット送信処理を示すフローチャートである。サーバ装置１００の仮想マシン１１１（ＶＭ＃１）がサーバ装置１００ａの仮想マシン１１３（ＶＭ＃３）宛てにパケットを送信する場合を想定して、図１１に示す処理をステップ番号に沿って説明する。
【００６４】
（ステップＳ１１）ＶＭパケット処理部１３１は、宛先ＭＡＣアドレス＝ｃ，送信元ＭＡＣアドレス＝ａのパケットをＶＭ＃３から取得する。
（ステップＳ１２）トンネル処理部１３２は、ＶＭ＃３が出力したパケットにトンネルヘッダを付加する。トンネルヘッダの内容は、用いるトンネリングプロトコルに従う。
【００６５】
（ステップＳ１３）仮想アドレス制御部１３４は、ＶＭ＃３が出力したパケットのＭＡＣアドレスを確認し、フロー管理テーブル１４２に、宛先ＭＡＣアドレス＝ｃ，送信元ＭＡＣアドレス＝ａのフローが登録されているか判断する。登録されていない場合、処理をステップＳ１４に進める。登録されている場合、処理をステップＳ１５に進める。
【００６６】
（ステップＳ１４）仮想アドレス制御部１３４は、仮想アドレステーブル１４１から、ラウンドロビン方式などの方法によって経路ＩＤを１つ選択する。そして、フロー管理テーブル１４２に、宛先ＭＡＣアドレス＝ｃ，送信元ＭＡＣアドレス＝ａと選択した経路ＩＤを登録する。これにより、パケットのフローに対して仮想アドレスが割り当てられる。ただし、仮想アドレス制御部１３４は、仮想アドレステーブル１４１において輻輳フラグ＝ＹＥＳが対応付けられている経路ＩＤは、選択しないようにする。
【００６７】
（ステップＳ１５）仮想アドレス制御部１３４は、宛先ＭＡＣアドレス＝ｃ，送信元ＭＡＣアドレス＝ａに割り当てられた仮想アドレスの組（仮想宛先アドレス＝ｅ，仮想送信元アドレス＝ｇ）を、仮想アドレステーブル１４１から選択する。トンネル処理部１３２は、選択された仮想アドレスの組をトンネルヘッダに付加する。
【００６８】
（ステップＳ１６）経路制御部１３６は、トンネル処理部１３２がカプセル化したパケットのＭＡＣアドレスを確認し、仮想宛先アドレス＝ｅ，仮想送信元アドレス＝ｇに対応するＶＬＡＮ  ＩＤ（ＶＬＡＮ＃１）を経路テーブル１４３から選択する。これにより、カプセル化されたパケットを伝送する経路が選択される。
【００６９】
（ステップＳ１７）伝送パケット処理部１３５は、経路制御部１３６が選択したＶＬＡＮ  ＩＤをトンネルヘッダに付加する。
（ステップＳ１８）伝送パケット処理部１３５は、カプセル化されたパケットを通信部１０７に出力する。通信部１０７は、伝送パケット処理部１３５が出力したパケットを、スイッチ２１に送信する。これにより、カプセル化されたパケットが、スイッチ２１，２４，２２を経由してサーバ装置１００ａに伝送される。
【００７０】
図１２は、パケット受信処理を示すフローチャートである。以下、サーバ装置１００のＶＭ＃１がサーバ装置１００ａのＶＭ＃３からパケットを受信する場合を想定して、図１２に示す処理をステップ番号に沿って説明する。
【００７１】
（ステップＳ２１）伝送パケット処理部１３５は、カプセル化されたパケットを通信部１０７から取得する。ＶＭ＃３からＶＭ＃１へのパケットの場合、通信部１０７から取得するパケットには、仮想宛先アドレス＝ｇ，仮想送信元アドレス＝ｅ，ＶＬＡＮ＃１，宛先ＭＡＣアドレス＝ａ，送信元ＭＡＣアドレス＝ｃがパケットに付加されている。
【００７２】
（ステップＳ２２）伝送パケット処理部１３５は、通信部１０７から取得したパケットが輻輳制御パケットであるか否か判断する。輻輳制御パケットであるか否かは、例えば、ヘッダ情報に基づいて判断される。輻輳制御パケットでない場合、処理をステップＳ２３に進める。輻輳制御パケットの場合、処理をステップＳ２７に進める。
【００７３】
（ステップＳ２３）伝送パケット処理部１３５は、ＶＬＡＮ  ＩＤ（ＶＬＡＮ＃１）をパケットから除去する。トンネル処理部１３２は、仮想宛先アドレス＝ｇ，仮想送信元アドレス＝ｅおよびトンネルヘッダをパケットから除去する。
【００７４】
（ステップＳ２４）仮想アドレス制御部１３４は、仮想宛先アドレス＝ｅ，仮想送信元アドレス＝ｇ（受信パケットの送信元と宛先を逆にしたもの）に対応する輻輳フラグを、仮想アドレステーブル１４１を参照し確認する。また、宛先ＭＡＣアドレス＝ｃ，送信元ＭＡＣアドレス＝ａ（受信パケットの送信元と宛先を逆にしたもの）に割り当てられている仮想アドレスの組がパケットに付加されていた仮想アドレスの組と一致するか、フロー管理テーブル１４２を参照し確認する。そして、仮想アドレス制御部１３４は、輻輳フラグがＮＯであり且つ仮想アドレスの組が変化したか判断する。条件を満たす場合、処理をステップＳ２５に進める。条件を満たさない場合、処理をステップＳ２６に進める。
【００７５】
（ステップＳ２５）仮想アドレス制御部１３４は、フロー管理テーブル１４２の経路ＩＤを更新して、宛先ＭＡＣアドレス＝ｃ，送信元ＭＡＣアドレス＝ａに割り当てる仮想アドレスの組を、受信パケットに付加されていた仮想宛先アドレスと仮想送信元アドレスを逆にしたものに変更する。なお、宛先ＭＡＣアドレス＝ｃ，送信元ＭＡＣアドレス＝ａに対して仮想アドレスが未だ割り当てられていない場合、経路ＩＤを新規に登録する。
【００７６】
（ステップＳ２６）ＶＭパケット処理部１３１は、宛先ＭＡＣアドレス＝ａをもつＶＭ＃１に、カプセル化が解除されたパケットを出力する。そして、処理が終了する。
（ステップＳ２７）輻輳制御部１３３は、輻輳により破棄されたパケットのＭＡＣアドレス（トンネルヘッダに付加された仮想アドレス）の組を、輻輳制御パケットから抽出する。仮想アドレス制御部１３４は、仮想アドレステーブル１４１において、抽出された仮想アドレスの組に対応する輻輳フラグをＹＥＳに変更する。また、フロー管理テーブル１４２から、輻輳フラグ＝ＹＥＳになった経路ＩＤが対応付けられているＭＡＣアドレスの組を検索し、当該ＭＡＣアドレスの組に割り当てた経路ＩＤを他の経路ＩＤに変更する。
【００７７】
次に、サーバ装置１００とサーバ装置１００ａの間にトンネルが形成された後、ＶＭ＃１〜＃４がパケットをカプセル化して送信する流れの例を説明する。最初は、サーバ装置１００が有するフロー管理テーブル１４２とサーバ装置１００ａが有するフロー管理テーブル１４２ａとが空であるものとする。
【００７８】
図１３は、パケット通信の手順例を示す第１の図である。まず、ＶＭ＃１がＶＭ＃３にパケットを送信する場合を考える。フロー管理テーブル１４２には、宛先ＭＡＣアドレス＝ｃ，送信元ＭＡＣアドレス＝ａが登録されていない。そこで、サーバ装置１００は、当該ＭＡＣアドレスの組に対して、仮想宛先アドレス＝ｅ，仮想送信元アドレス＝ｇを割り当て、フロー管理テーブル１４２を更新する。そして、割り当てた仮想アドレスの組を用いてパケットをカプセル化し、当該仮想アドレスの組に対応する経路Ｘを示すＶＬＡＮ＃１をパケットに付加する。これにより、サーバ装置１００が出力したパケットは、スイッチ２１，２４，２２を経由して（経路Ｘで）サーバ装置１００ａに到着する。
【００７９】
図１４は、パケット通信の手順例を示す第２の図である。図１３に示したパケットをサーバ装置１００ａが受信した場合を考える。フロー管理テーブル１４２ａには、宛先ＭＡＣアドレス＝ａ，送信元ＭＡＣアドレス＝ｃ（受信パケットの送信元と宛先を逆にしたもの）が登録されていない。そこで、サーバ装置１００ａは、当該ＭＡＣアドレスの組に対して、仮想宛先アドレス＝ｇ，仮想送信元アドレス＝ｅ（受信パケットの送信元と宛先を逆にしたもの）を割り当て、フロー管理テーブル１４２ａを更新する。
【００８０】
次に、ＶＭ＃３がＶＭ＃１にパケットを送信する場合を考える。フロー管理テーブル１４２ａには、宛先ＭＡＣアドレス＝ａ，送信元ＭＡＣアドレス＝ｃが登録されている。そこで、サーバ装置１００ａは、当該ＭＡＣアドレスの組に割り当てられた仮想宛先アドレス＝ｇ，仮想送信元アドレス＝ｅを選択する。そして、選択した仮想アドレスの組を用いてパケットをカプセル化し、当該仮想アドレスの組に対応する経路Ｘを示すＶＬＡＮ＃１をパケットに付加する。これにより、サーバ装置１００ａが出力したパケットは、スイッチ２２，２４，２１を経由して（経路Ｘで）サーバ装置１００に到着する。
【００８１】
次に、上記パケットをＶＭ＃１がＶＭ＃３から受信する場合を考える。フロー管理テーブル１４２には、宛先ＭＡＣアドレス＝ｃ，送信元ＭＡＣアドレス＝ａ（受信パケットの送信元と宛先を逆にしたもの）が登録されている。また、当該ＭＡＣアドレスの組に割り当てられている仮想アドレスの組が、受信パケットの送信元と宛先を逆にしたものに一致する。そこで、サーバ装置１００は、フロー管理テーブル１４２を更新しない。
【００８２】
図１５は、パケット通信の手順例を示す第３の図である。次に、ＶＭ＃４がＶＭ＃１にパケットを送信する場合を考える。フロー管理テーブル１４２ａには、宛先ＭＡＣアドレス＝ａ，送信元ＭＡＣアドレス＝ｄが登録されていない。そこで、サーバ装置１００ａは、当該ＭＡＣアドレスの組に対して、仮想宛先アドレス＝ｈ，仮想送信元アドレス＝ｆを割り当て、フロー管理テーブル１４２ａを更新する。そして、割り当てた仮想アドレスの組を用いてカプセル化し、当該仮想アドレスの組に対応する経路Ｙを示すＶＬＡＮ＃２をパケットに付加する。これにより、サーバ装置１００ａが出力したパケットは、スイッチ２２，２５，２１を経由して（経路Ｙで）サーバ装置１００に到着する。なお、フロー管理テーブル１４２ａの１番目のエントリで経路Ｘが選択されているため、ラウンドロビン方式により、２番目のエントリでは経路Ｙが選択されている。
【００８３】
次に、上記パケットをＶＭ＃１がＶＭ＃４から受信する場合を考える。フロー管理テーブル１４２には、宛先ＭＡＣアドレス＝ｄ，送信元ＭＡＣアドレス＝ａ（受信パケットの送信元と宛先を逆にしたもの）が登録されていない。そこで、サーバ装置１００は、当該ＭＡＣアドレスの組に対して、仮想宛先アドレス＝ｆ，仮想送信元アドレス＝ｈ（受信パケットの送信元と宛先を逆にしたもの）を割り当て、フロー管理テーブル１４２を更新する。これにより、フロー管理テーブル１４２，１４２ａに登録された情報が対称となる。
【００８４】
図１６は、パケット通信の手順例を示す第４の図である。次に、スイッチ２１からスイッチ２４へパケットを転送するリンクの輻輳が発生し、ＶＭ＃１からＶＭ＃３へのパケットがスイッチ２１で破棄された場合を考える。スイッチ２１は、輻輳を検出すると、破棄されたパケットの送信元であるサーバ装置１００に、仮想宛先アドレス＝ｅ，仮想送信元アドレス＝ｇを含む輻輳制御パケットを送信する。輻輳を検出し通知する方法としては、例えば、IEEE (Institute of Electrical and Electronics Engineers) Standard 802.1Qau - 2010, 23 April, 2010に記載された方法を用いることができる。
【００８５】
サーバ装置１００は、輻輳制御パケットを受信すると、輻輳が発生している経路Ｘに対応する仮想宛先アドレス＝ｅ，仮想送信元アドレス＝ｇを、輻輳フラグ＝ＹＥＳを設定することで使用禁止にする。そして、フロー管理テーブル１４２に登録されている経路ＩＤを変更し、経路Ｘに代えて経路Ｙが選択されるようにする。これにより、ＶＭ＃１がＶＭ＃３に送信するパケットや、ＶＭ＃１がＶＭ＃４に送信するパケットは、スイッチ２１，２５，２２を介して（経路Ｙで）伝送される。
【００８６】
次に、ＶＭ＃１がＶＭ＃３からパケットを受信する場合を考える。フロー管理テーブル１４２には、宛先ＭＡＣアドレス＝ｃ，送信元ＭＡＣアドレス＝ａ（受信パケットの送信元と宛先を逆にしたもの）が登録されている。ここで、当該ＭＡＣアドレスの組に割り当てられている仮想アドレスの組は、受信パケットの送信元と宛先を逆にしたものとは一致しない。しかし、仮想宛先アドレス＝ｅ，仮想送信元アドレス＝ｇ（受信パケットの送信元と宛先を逆にしたもの）には、輻輳フラグ＝ＹＥＳが設定されている。そこで、サーバ装置１００は、輻輳が発生したことに伴う経路変更が不一致の原因であると判断し、フロー管理テーブル１４２を更新しない。
【００８７】
図１７は、パケット通信の手順例を示す第５の図である。次に、ＶＭ＃２がＶＭ＃３にパケットを送信する場合を考える。フロー管理テーブル１４２には、宛先ＭＡＣアドレス＝ｃ，送信元ＭＡＣアドレス＝ｂが登録されていない。そこで、サーバ装置１００は、当該ＭＡＣアドレスの組に対して、仮想宛先アドレス＝ｆ，仮想送信元アドレス＝ｈを割り当て、フロー管理テーブル１４２を更新する。そして、割り当てた仮想アドレスの組を用いてパケットをカプセル化し、当該仮想アドレスの組に対応する経路Ｙを示すＶＬＡＮ＃２をパケットに付加する。これにより、サーバ装置１００が出力したパケットは、スイッチ２１，２５，２２を経由して（経路Ｙで）サーバ装置１００ａに到着する。
【００８８】
なお、フロー管理テーブル１４２の２番目のエントリで経路Ｙが選択されている一方、経路Ｘの選択は禁止されている。そこで、ラウンドロビン方式の場合でも、経路Ｘがスキップされ、２番目のエントリに続いて３番目のエントリでも経路Ｙが選択される。
【００８９】
第２の実施の形態の通信システムによれば、トンネルの両端にそれぞれ複数の仮想アドレスが設定され、カプセル化に使用可能な仮想宛先アドレスと仮想送信元アドレスの組が複数通り用意される。このため、仮想宛先アドレスや仮想送信元アドレスに基づいて、トンネル区間に設定した複数の経路にフローを分散させることが可能となる。よって、複数の経路を利用して、カプセル化されたパケットを効率的に伝送することができる。また、ネットワーク２０で輻輳が発生したときは、輻輳状況に応じて選択される経路を変更することができ、経路選択が柔軟に行われる。
【００９０】
なお、前述の通り、第２の実施の形態の通信方法は、コンピュータとしての機能を有するサーバ装置１００，１００ａに、通信制御プログラムを実行させることで実現できる。通信制御プログラムは、コンピュータ読み取り可能な記録媒体（例えば、記録媒体３３）に記録しておくことができる。記録媒体として、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、ＨＤＤおよびＦＤが含まれる。光ディスクには、ＣＤ、ＣＤ−Ｒ（Recordable）／ＲＷ（Rewritable）、ＤＶＤおよびＤＶＤ−Ｒ／ＲＷが含まれる。
【００９１】
プログラムを流通させる場合、例えば、当該プログラムを記録した可搬記録媒体が提供される。また、プログラムを他のコンピュータの記憶装置に格納しておき、ネットワーク２０経由で当該プログラムを配布することもできる。サーバ装置１００，１００ａは、例えば、可搬記録媒体に記録されたプログラムまたは他のコンピュータから受信したプログラムを、ＨＤＤ１０３などの記憶装置に格納し、記憶装置からプログラムを読み込んで実行する。ただし、可搬型記録媒体から読み込んだプログラムを直接実行してもよく、他のコンピュータから受信したプログラムを直接実行してもよい。
【符号の説明】
【００９２】
１０  情報処理装置
１１  記憶部
１１ａ  アドレス情報
１１ｂ  経路情報
１２  制御部
１３  送信部
１４  トンネル
【図１】
0005625978.tif 000002
【図２】
0005625978.tif 000003
【図３】
0005625978.tif 000004
【図４】
0005625978.tif 000005
【図５】
0005625978.tif 000006
【図６】
0005625978.tif 000007
【図７】
0005625978.tif 000008
【図８】
0005625978.tif 000009
【図９】
0005625978.tif 000010
【図１０】
0005625978.tif 000011
【図１１】
0005625978.tif 000012
【図１２】
0005625978.tif 000013
【図１３】
0005625978.tif 000014
【図１４】
0005625978.tif 000015
【図１５】
0005625978.tif 000016
【図１６】
0005625978.tif 000017
【図１７】
0005625978.tif 000018