(57)【特許請求の範囲】
【請求項１】
トンネルエンドポイントから出力されるパケットの追加ヘッダに含まれる仮想ネットワーク識別子に対応する情報を、オリジナルヘッダの所定の領域に書き込むパケット書換ルールを記憶するパケット書換ルール記憶部と、
前記パケット書換ルールに従い、送信パケットの前記オリジナルヘッダに前記仮想ネットワーク識別子に対応する情報を書き込んだパケットに書き換えるパケット書換部とを備え、
前記トンネルエンドポイントと、前記オリジナルヘッダの内容を参照してパケットに適用する処理を決定するスイッチと、の間に配置されるパケット書換装置。
【請求項２】
前記パケット書換部は、前記パケット書換ルールを参照して、前記書き換えが行われた受信パケットの復元処理を実行する請求項１のパケット書換装置。
【請求項３】
前記パケット書換ルールとして、前記スイッチを制御する制御装置から配布されたパケット書換ルールを用いる請求項１又は２のパケット書換装置。
【請求項４】
前記パケット書換ルールとして、オリジナルヘッダの所定の領域の内容を、前記制御装置が前記スイッチに設定した制御情報のマッチ条件に用いられた内容に書き換えるパケット書換ルールを用いる請求項３のパケット書換装置。
【請求項５】
前記パケット書換ルールとして、オリジナルヘッダの所定の領域の内容を、前記仮想ネットワークを一意に識別する識別子に書き換えるパケット書換ルールを用いる請求項１から４いずれか一のパケット書換装置。
【請求項６】
前記トンネルエンドポイントを介して通信する仮想マシンが動作する物理サーバに内蔵されている請求項１から５いずれか一のパケット書換装置。
【請求項７】
トンネルエンドポイントから出力されるパケットの追加ヘッダに含まれる仮想ネットワーク識別子に対応する情報を、オリジナルヘッダの所定の領域に書き込むパケット書換ルールを作成するパケット書換ルール作成部と、
スイッチと前記トンネルエンドポイントとの間に配置されたパケット書換装置に前記作成したパケット書換ルールを配付する制御部とを備える制御装置。
【請求項８】
前記パケット書換ルールを用いて、配下のスイッチに設定する制御情報のマッチ条件を作成する請求項７の制御装置。
【請求項９】
オリジナルヘッダの内容を参照してパケットに適用する処理を決定するスイッチと、
前記スイッチに、オリジナルヘッダの内容と照合するマッチ条件と該マッチ条件に適合するパケットに適用する処理とを定めた制御情報を設定することにより、前記スイッチを制御する制御装置と、
トンネルエンドポイントから出力されるパケットの追加ヘッダに含まれる仮想ネットワーク識別子に対応する情報を、オリジナルヘッダの所定の領域に書き込むパケット書換ルールを記憶するパケット書換ルール記憶部と、
前記パケット書換ルールに従い、送信パケットの前記オリジナルヘッダに前記仮想ネットワーク識別子に対応する情報を書き込んだパケットに書き換えるパケット書換部とを備え、前記トンネルエンドポイントと、前記オリジナルヘッダの内容を参照してパケットに適用する処理を決定するスイッチと、の間に配置されるパケット書換装置と、を含み、
前記スイッチ及び前記トンネルエンドポイントを介して、トンネルエンドポイント間のパケットの経路制御を行う通信システム。
【請求項１０】
前記制御装置は、
前記パケット書換ルール記憶部に記憶させるパケット書換ルールを作成するパケット書換ルール作成部と、
前記スイッチと前記トンネルエンドポイントとの間に配置されたパケット書換装置に前記作成したパケット書換ルールを配付する制御部とを備える請求項９の通信システム。
【請求項１１】
トンネルエンドポイントから出力されるパケットの追加ヘッダに含まれる仮想ネットワーク識別子に対応する情報を、オリジナルヘッダの所定の領域に書き込むパケット書換ルールに従い、送信パケットの前記オリジナルヘッダに前記仮想ネットワーク識別子に対応する情報を書き込んだパケットに書き換えるステップと、
前記書き換えたパケットを所定の物理ポートを介してスイッチに送信するステップと、を含むパケット送信方法。
【請求項１２】
トンネルエンドポイントから出力されるパケットの追加ヘッダに含まれる仮想ネットワーク識別子に対応する情報を、オリジナルヘッダの所定の領域に書き込むパケット書換ルールに従い、送信パケットの前記オリジナルヘッダに前記仮想ネットワーク識別子に対応する情報を書き込んだパケットに書き換える処理と、
前記書き換えたパケットを所定の物理ポートを介してスイッチに送信する処理と、
を前記トンネルエンドポイントから出力されたパケットが入力されるコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願についての記載］
本発明は、日本国特許出願：特願２０１３−０４５２６４号（２０１３年３月７日出願）に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、パケット書換装置、制御装置、通信システム、パケット送信方法及びプログラムに関し、特に、トンネルエンドポイント間に配置されるパケット書換装置、制御装置、通信システム、パケット送信方法及びプログラムに関する。
【背景技術】
【０００２】
近年、クラウドコンピューティングへの適用を考慮したトンネリングプロトコルとして、ＶＸＬＡＮ（Ｖｉｒｔｕａｌ  Ｅｘｔｅｎｓｉｂｌｅ  Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＮＶＧＲＥ（Ｎｅｔｗｏｒｋ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ  ｕｓｉｎｇ  Ｇｅｎｅｒａｌ  Ｒｏｕｔｅｒ  Ｅｎｃａｐｓｕｌａｔｉｏｎ）、ＳＴＴ（Ｓｔａｔｅｌｅｓｓ  Ｔｒａｎｓｐｏｒｔ  Ｔｕｎｎｅｌｉｎｇ）といった技術が提案されている。非特許文献１は、ＶＸＬＡＮのドラフトである。【０００３】
ＶＸＬＡＮは、仮想トンネルの終端ポイントとなるトンネルエンドポイントにて、レイヤ２フレームをカプセル化するものであるが、その際に、２４ビットの長さを持つＶＸＬＡＮ  Ｎｅｔｗｏｒｋ  Ｉｄｅｎｔｉｆｉｅｒ（ＶＮＩ）をカプセルヘッダ（追加ヘッダ、アウターヘッダともいう。）に付加する（非特許文献１のＰａｇｅ９「５．ＶＸＬＡＮ  Ｆｒａｍｅ  Ｆｏｒｍａｔ」以下参照）。このＶＮＩは、ＩＥＥＥ８０２．１Ｑで規定されているＶＬＡＮ  ＩＤの倍の長さであり、上記クラウドコンピューティング環境における「テナント（物理ネットワークの共有ユーザ）」の数を飛躍的に増大できる点で注目されている（最大約１６７７万（２＾２４）となる）。また、非特許文献２は、ＶＸＬＡＮと同様のトンネリングを行うＮＶＧＲＥのドラフトである。ＮＶＧＲＥにおいても、２４ビットの長さを持つＴｅｎａｎｔ  Ｎｅｔｗｏｒｋ  Ｉｄｅｎｔｉｆｉｅｒ（ＴＮＩ）により、論理分割可能なセグメントの数の増大が図られている。【０００４】
一方で、オープンフロー（ＯｐｅｎＦｌｏｗ）という技術が提案されている（非特許文献３、４参照）。オープンフローは、通信をエンドツーエンドのフローとして捉え、フロー単位で経路制御、障害回復、負荷分散、最適化を行うものである。非特許文献４に仕様化されているオープンフロースイッチは、オープンフローコントローラとの通信用のセキュアチャネルを備え、オープンフローコントローラから適宜追加または書き換え指示されるフローテーブルに従って動作する。フローテーブルには、フロー毎に、パケットヘッダと照合するマッチ条件（Ｍａｔｃｈ  Ｆｉｅｌｄｓ）と、フロー統計情報（Ｃｏｕｎｔｅｒｓ）と、処理内容を定義したインストラクション（Ｉｎｓｔｒｕｃｔｉｏｎｓ）と、の組が定義される（非特許文献４の「５．２  Ｆｌｏｗ  Ｔａｂｌｅ」の項参照）。【０００５】
例えば、オープンフロースイッチは、パケットを受信すると、フローテーブルから、受信パケットのヘッダ情報に適合するマッチ条件（非特許文献４の「５．３  Ｍａｔｃｈｉｎｇ」参照）を持つエントリを検索する。検索の結果、受信パケットに適合するエントリが見つかった場合、オープンフロースイッチは、フロー統計情報（カウンタ）を更新するとともに、受信パケットに対して、当該エントリのインストラクションフィールドに記述された処理内容（指定ポートからのパケット送信、フラッディング、廃棄等）を実施する。一方、検索の結果、受信パケットに適合するエントリが見つからなかった場合、オープンフロースイッチは、セキュアチャネルを介して、オープンフローコントローラに対してエントリ設定の要求、即ち、受信パケットを処理するための制御情報の送信要求（Ｐａｃｋｅｔ−Ｉｎメッセージ）を送信する。オープンフロースイッチは、処理内容が定められたフローエントリを受け取ってフローテーブルを更新する。このように、オープンフロースイッチは、フローテーブルに格納されたエントリを制御情報として用いてパケット転送を行う。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Ｍ．Ｍａｈａｌｉｎｇａｍほか７名、“ＶＸＬＡＮ：  Ａ  Ｆｒａｍｅｗｏｒｋ  ｆｏｒ  Ｏｖｅｒｌａｙｉｎｇ  Ｖｉｒｔｕａｌｉｚｅｄ  Ｌａｙｅｒ  ２  Ｎｅｔｗｏｒｋｓ  ｏｖｅｒ  Ｌａｙｅｒ  ３  Ｎｅｔｗｏｒｋ”、［ｏｎｌｉｎｅ］、［平成２５（２０１３）年２月１８日検索］、インターネット〈URL:http://tools.ietf.org/pdf/draft-mahalingam-dutt-dcops-vxlan-02.pdf〉
【非特許文献２】Ｍ．Ｓｒｉｄｈａｒａｎほか８名、“ＮＶＧＲＥ：  Ｎｅｔｗｏｒｋ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ  ｕｓｉｎｇ  Ｇｅｎｅｒａｌ  Ｒｏｕｔｅｒ  Ｅｎｃａｐｓｕｌａｔｉｏｎ”、［ｏｎｌｉｎｅ］、［平成２５（２０１３）年２月１８日検索］、インターネット〈URL:http://tools.ietf.org/pdf/draft-sridharan-virtualization-nvgre-01.pdf〉
【非特許文献３】Ｎｉｃｋ  ＭｃＫｅｏｗｎほか７名、“ＯｐｅｎＦｌｏｗ：  Ｅｎａｂｌｉｎｇ  Ｉｎｎｏｖａｔｉｏｎ  ｉｎ  Ｃａｍｐｕｓ  Ｎｅｔｗｏｒｋｓ”、［ｏｎｌｉｎｅ］、［平成２５（２０１３）年２月１８日検索］、インターネット〈URL:http://www.openflow.org/documents/openflow-wp-latest.pdf〉
【非特許文献４】“ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ”  Ｖｅｒｓｉｏｎ  １．３．１  （Ｗｉｒｅ  Ｐｒｏｔｏｃｏｌ  ０ｘ０４）、［ｏｎｌｉｎｅ］、［平成２５（２０１３）年２月１８日検索］、インターネット〈URL:https://www.opennetworking.org/images/stories/downloads/specification/openflow-spec-v1.3.1.pdf〉
【発明の概要】
【発明が解決しようとする課題】
【０００７】
以下の分析は、本発明によって与えられたものである。上記ＶＸＬＡＮやＮＶＧＲＥといったトンネリング技術を使って仮想ネットワークを構築する際、仮想トンネルエンドポイント間を接続する装置として、非特許文献３、４のオープンフロースイッチを利用することが考えられる。【０００８】
しかしながら、上記ＶＸＬＡＮやＮＶＧＲＥのトンネルエンドポイント間にて付加されるカプセルヘッダ（追加ヘッダ）をマッチ条件として指定できるオープンフロースイッチはあまり商用化されていない。このため、一般的なオープンフロースイッチでは、カプセルヘッダ（追加ヘッダ）に含まれるＶＮＩやＴＮＩといった識別子を基づき異なる処理を適用するといったことができないという問題点がある。もちろん、これら識別子をマッチ条件として指定できるスイッチも存在するが高価である。【０００９】
本発明は、上記ＶＸＬＡＮやＮＶＧＲＥといったトンネリングプロトコルのトンネルエンドポイント間のパケットの制御の容易化に貢献できるパケット書換装置、制御装置、通信システム、パケット送信方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
第１の視点によれば、トンネルエンドポイントから出力されるパケットの追加ヘッダに含まれる仮想ネットワーク識別子に対応する情報を、オリジナルヘッダの所定の領域に書き込むパケット書換ルールを記憶するパケット書換ルール記憶部と、前記パケット書換ルールに従い、送信パケットの前記オリジナルヘッダに前記仮想ネットワーク識別子に対応する情報を書き込んだパケットに書き換えるパケット書換部とを備え、前記トンネルエンドポイントと、前記オリジナルヘッダの内容を参照してパケットに適用する処理を決定するスイッチと、の間に配置されるパケット書換装置が提供される。【００１１】
第２の視点によれば、トンネルエンドポイントから出力されるパケットの追加ヘッダに含まれる仮想ネットワーク識別子に対応する情報を、オリジナルヘッダの所定の領域に書き込むパケット書換ルールを作成するパケット書換ルール作成部と、スイッチと前記トンネルエンドポイントとの間に配置されたパケット書換装置に前記作成したパケット書換ルールを配付する制御部とを備える制御装置が提供される。【００１２】
第３の視点によれば、オリジナルヘッダの内容を参照してパケットに適用する処理を決定するスイッチと、前記スイッチに、オリジナルヘッダの内容と照合するマッチ条件と該マッチ条件に適合するパケットに適用する処理とを定めた制御情報を設定することにより、前記スイッチを制御する制御装置と、トンネルエンドポイントから出力されるパケットの追加ヘッダに含まれる仮想ネットワーク識別子に対応する情報を、オリジナルヘッダの所定の領域に書き込むパケット書換ルールを記憶するパケット書換ルール記憶部と、前記パケット書換ルールに従い、送信パケットの前記オリジナルヘッダに前記仮想ネットワーク識別子に対応する情報を書き込んだパケットに書き換えるパケット書換部とを備え、前記トンネルエンドポイントと、前記オリジナルヘッダの内容を参照してパケットに適用する処理を決定するスイッチと、の間に配置されるパケット書換装置と、を含み、前記スイッチ及び前記トンネルエンドポイントを介して、トンネルエンドポイント間のパケットの経路制御を行う通信システムが提供される。【００１３】
第４の視点によれば、トンネルエンドポイントから出力されるパケットの追加ヘッダに含まれる仮想ネットワーク識別子に対応する情報を、オリジナルヘッダの所定の領域に書き込むパケット書換ルールに従い、送信パケットの前記オリジナルヘッダに前記仮想ネットワーク識別子に対応する情報を書き込んだパケットに書き換えるステップと、前記書き換えたパケットを所定の物理ポートを介してスイッチに送信するステップと、を含むパケット送信方法が提供される。本方法は、トンネルエンドポイントと前記スイッチとの間に配置されるパケット書換装置という、特定の機械に結びつけられている。【００１４】
第５の視点によれば、トンネルエンドポイントから出力されるパケットの追加ヘッダに含まれる仮想ネットワーク識別子に対応する情報を、オリジナルヘッダの所定の領域に書き込むパケット書換ルールに従い、送信パケットの前記オリジナルヘッダに前記仮想ネットワーク識別子に対応する情報を書き込んだパケットに書き換える処理と、前記書き換えたパケットを所定の物理ポートを介してスイッチに送信する処理と、を前記トンネルエンドポイントから出力されたパケットが入力されるコンピュータに実行させるプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な（非トランジエントな）記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【００１５】
本発明によれば、トンネリングプロトコルのトンネルエンドポイント間のパケットの制御の容易化に貢献することが可能となる。
【図面の簡単な説明】
【００１６】
【図１】一実施形態のパケット書換装置の構成を示す図である。
【図２】第１の実施形態の通信システムの構成を示す図である。
【図３】第１の実施形態の物理サーバの構成を示す機能ブロック図である。
【図４】第１の実施形態の仮想スイッチが保持するテナント情報の一例である。
【図５】第１の実施形態の動作を説明するためのＶＭ管理情報の例である。
【図６】第１の実施形態のパケット書換ルール記憶部に保持されているパケット書換ルールの例である。
【図７】第１の実施形態のパケット書換ルールによる書換後の宛先ＭＡＣアドレスフィールドの内容を示す図である。
【図８】第１の実施形態のコントローラの構成を示す機能ブロック図である。
【図９】第１の実施形態の動作を説明するための物理サーバ情報の例である。
【図１０】第１の実施形態の物理サーバの動作（パケット送信時）を表したフローチャートである。
【図１１】第１の実施形態のコントローラによって設定される制御情報（フローエントリ）の例である。
【図１２】第１の実施形態の物理サーバの動作（パケット受信時）を表したフローチャートである。
【図１３】第１の実施形態のコントローラによって設定される制御情報（フローエントリ）の別の例である。
【図１４】変形実施形態を説明するためのテーブルである。
【図１５】第２の実施形態のコントローラの構成を示す機能ブロック図である。
【発明を実施するための形態】
【００１７】
はじめに本願開示の一実施形態の概要について図面を参照して説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本願開示を図示の態様に限定することを意図するものではない。
【００１８】
本願開示の一実施形態において、図１に示すように、トンネルエンドポイントとスイッチとの間に配置されるパケット書換装置１０００Ａにて実現できる。このパケット書換装置１０００Ａは、トンネルエンドポイントから出力されるパケットの追加ヘッダに含まれる仮想ネットワーク識別子に対応する情報を、オリジナルヘッダの所定の領域に書き込むパケット書換ルールを記憶するパケット書換ルール記憶部１００５と、パケット書換部１００４とを備える。そして、前記パケット書換部１００４は、前記パケット書換ルールに従い、前記トンネルエンドポイントの出力パケットを、前記オリジナルヘッダに前記仮想ネットワーク識別子に対応する情報を書き込んだパケットに書き換える処理を実行する。
【００１９】
以上のように、トンネルエンドポイントとスイッチとの間に、上記したパケット書換装置１０００Ａを配置することで、カプセルヘッダ（追加ヘッダ）に含まれるＶＮＩやＴＮＩといった仮想ネットワーク識別子（テナントＩＤ）そのものあるいはこれらに対応する情報が、オリジナルヘッダに書き込まれることになる。そして、パケット書換装置１０００Ａ間に配置されたスイッチが、書換後のヘッダに含まれる仮想ネットワーク識別子（テナントＩＤ）等に基づいた転送処理等を行なうことが可能となる（図９、図１１参照）。なお、必要に応じて、受信側のトンネルエンドポイントにおいても、同一のパケット書換ルールを配付したパケット書換装置１０００Ａを配置し、受信パケットを書き換え前の状態に復元する処理を行わせることが望ましい。また、これにより双方向のフロー制御を実現することが可能となる。
【００２０】
［第１の実施形態］
続いて、パケット書換装置をデータセンタ等の物理サーバ内に内蔵させた第１の実施形態について図面を参照して詳細に説明する。図２は、第１の実施形態の通信システムの構成を示す図である。図２を参照すると、それぞれの拠点に配置された２台の物理サーバ１０００と、拠点間を接続するスイッチ１０と、これらスイッチ１０を制御するコントローラ１００とを接続した構成が示されている。なお、図２に示した構成は、例えば、データセンタ間を接続する構成として採用することができる。
【００２１】
コントローラ１００は、図中破線で表した制御チャネルを介して、スイッチ１０と物理サーバ１０００に接続されている。
【００２２】
スイッチ１０は、コントローラ１００により設定された制御情報（フローエントリ）に従い、パケットの書き換え、転送などを行うオープンフロースイッチによって構成される。
【００２３】
物理サーバ１０００は、図３の詳細図で示されるように、ＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）１００１と、仮想スイッチ１００２と、トンネルエンドポイント１００３と、パケット書換部１００４と、パケット書換ルール記憶部１００５と、コントローラ通信部１００６とを備えている。なお、図３のパケット書換部１００４と、パケット書換ルール記憶部１００５とが図２のパケット書換モジュール１００４Ａに相当する。また図２においてコントローラ通信部１００６は省略されている。
【００２４】
ＶＭ１００１は、図示省略するハイパーバイザ等により管理され、物理サーバ上の仮想化プラットフォーム上で動作する仮想マシンである。ＶＭ１００１は、いずれかの仮想ネットワーク（以下、「テナント」ともいう。）に属しており、仮想スイッチ１００２、トンネルエンドポイント１００３、パケット書換部１００４を介して、他の物理サーバ上で動作する同一仮想ネットワークに属するＶＭ１００１と通信を行うことが可能となっている。
【００２５】
仮想スイッチ１００２は、テナント毎にＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌ）アドレステーブルを保持し、ＶＭ１００１又はトンネルエンドポイント１００３から受信したパケットを適切な宛先に転送する。より具体的には、仮想スイッチ１００２は、パケットを受信すると、当該パケットが属するテナント毎のＭＡＣアドレステーブルを参照し、同一テナントの該当ポートにパケットを転送する。
【００２６】
そのため、仮想スイッチ１００２は、自身に接続する各ＶＭ１００１がそれぞれどのテナントに属するのかといった情報を保持している。図４は、仮想スイッチ１００２が保持するテナント情報の一例である。仮想スイッチ１００２は、図４に示すテナント情報を参照し、受信したパケットの送信元のＶＭが属するテナントのＩＤを特定する。なお、図４に示すテナント情報は、例えば、コントローラ通信部１００６を介して、コントローラが保持するテナント情報と同期管理される。
【００２７】
仮想スイッチ１００２は、受信したパケットの宛先となっているＶＭが同一仮想スイッチ（自装置）に接続されている場合、そのＶＭへとパケットを転送する。一方、受信したパケットの宛先が、他の物理サーバ上で動作するＶＭであった場合、仮想スイッチ１００２は、その物理サーバへとパケットを届けるために、トンネルエンドポイント１００３へとパケットを転送する。その際、仮想スイッチ１００２は、ＶＭが属するテナントＩＤをトンネルエンドポイント１００３へと通知する。
【００２８】
なお、上記のような仮想スイッチに代えて、コントローラから設定される制御情報（フローエントリ）に従って動作するスイッチ１０相当のオープンフロースイッチを仮想化した仮想スイッチを用いることもできる。
【００２９】
トンネルエンドポイント（ＴＥＰ）１００３は、ＶＸＬＡＮやＮＶＧＲＥといったトンネリングプロトコルに従いパケットをカプセル化する。また、トンネルエンドポイント１００３は、ＶＭ管理情報を保持する。
【００３０】
図５は、トンネルエンドポイント１００３が保持するＶＭ管理情報の例である。図５の例では、ＶＭが、どのテナントに属し、どの物理サーバ上に存在するかといった情報が記憶されている。
【００３１】
トンネルエンドポイント１００３は、仮想スイッチ１００２からパケットを受信すると、そのパケットの送信元のＶＭが属するテナントＩＤとパケットの宛先ＭＡＣアドレスをキーに、図５のＶＭ管理情報から該当するエントリを検索する。そして、前記エントリを基に、パケットをカプセル化し、パケット書換部１００４へ前記カプセル化後のパケットを転送する。また、トンネルエンドポイントは、前記ＶＭ管理情報から検索した物理サーバのＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレスと、物理サーバのＭＡＣアドレスを前記カプセル化したパケットの外側のヘッダ（追加ヘッダ、アウターヘッダ）に格納する。
【００３２】
また逆に、トンネルエンドポイント１００３は、パケット書換部１００４からパケットを受信すると、カプセル化されたパケットを元のパケットに戻して（デカプセル化）から、仮想スイッチ１００２に転送する。またその際に、トンネルエンドポイント１００３は、仮想スイッチ１００２に対し、カプセル化用のヘッダ（追加ヘッダ、アウターヘッダ）に埋め込まれたテナントＩＤを通知する。
【００３３】
パケット書換ルール記憶部１００５には、カプセル化されたパケットをどのように書き換えるかを示すルールが保存される。図６は、パケット書換ルール記憶部１００５に保持されているパケット書換ルールの例である。図６の例では、カプセル化用のヘッダ（追加ヘッダ、アウターヘッダ）が付加される前のヘッダ（オリジナルヘッダ）の宛先ＭＡＣアドレスフィールドに、宛先物理サーバの識別子（上位３オクテットを使用、具体値はコントローラが指定）とテナントＩＤ（下位３オクテットを使用、ｘｘ：ｘｘ：ｘｘの部分にテナントＩＤを埋め込む）とを書き込むパケット書換ルールの例が示されている。なお、このパケット書換ルールは、コントローラ１００によりパケット書換ルール記憶部１００５に設定され、コントローラ１００のパケット書換ルール記憶部１０４に保持されているパケット書換ルールと同期されている。
【００３４】
図７は、図６のパケット書換ルールにより書換後の宛先ＭＡＣアドレスフィールドの内容を示す図である。図７に示すように、図６のパケット書換ルールによれば、元々のＭＡＣアドレスの上位２４ビットのＯＵＩ（Ｏｒｇａｎｉｚａｔｉｏｎａｌｌｙ  Ｕｎｉｑｕｅ  Ｉｄｅｎｔｉｆｉｅｒ）部を宛先物理サーバの識別子に書き換え、下位２４ビットのＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃｏｎｔｒｏｌｌｅｒ）識別部をテナント識別子に書換える処理が行われる。なお、図７のＩ／Ｇビットは、個別アドレス／グループアドレス識別ビットを示す、Ｇ／Ｌビットは、グローバルアドレス／ローカルアドレス識別ビットを示している。
【００３５】
パケット書換部１００４は、トンネルエンドポイント１００３からパケットを受信すると、パケット書換ルール記憶部１００５のパケット書換ルールに従い、前記パケットの宛先ＭＡＣアドレスを書き換える。具体的には、パケット書換部１００４は、オリジナルヘッダの宛先ＭＡＣアドレスの上位２４ビットをパケット書換ルールにて指定された物理サーバの識別子に置き換える。また、パケット書換部１００４は、受信パケットのカプセル化用のヘッダ（追加ヘッダ、アウターヘッダ）からテナントＩＤを取り出して、オリジナルヘッダのＭＡＣアドレスの下位２４ビットに埋め込む処理を実行する。
【００３６】
前記パケット書換処理が完了すると、パケット書換部１００４は、前記書換したパケットを物理ポートに転送する。
【００３７】
パケット書換部１００４は、逆にスイッチ１０側からパケットを受信すると、パケット書換ルール記憶部１００５の内容に従い、前記パケットを元のパケットに復元する動作を行う。具体的には、パケット書換部１００４は、オリジナルヘッダの宛先ＭＡＣアドレスの上位２４ビット及び下位２４ビットを図６に示す書換前の内容に復元する動作を行う。
【００３８】
コントローラ通信部１００６は、コントローラ１００から配布される情報（テナント情報、ＶＭ管理情報、パケット書換ルール等）を仮想スイッチ１００２、トンネルエンドポイント１００３及びパケット書換ルール記憶部１００５にそれぞれ転送する動作を行う。
【００３９】
続いて、スイッチ１０の制御のほか、上記物理サーバ１０００内の各部への設定を行うコントローラ１００について説明する。コントローラ１００は、物理サーバ１０００に対してパケット書換ルールを設定するとともに、パケット転送経路上のスイッチ１０に対して、前記書換が施されたパケットの転送用の制御情報（フローエントリ）を設定する。
【００４０】
図８は、本実施形態のコントローラ１００の構成を表した機能ブロック図である。図８を参照すると、スイッチ制御部１０１と、物理サーバ記憶部１０２と、パケット書換ルール作成部１０３と、パケット書換ルール記憶部１０４と、物理サーバ制御部1０５とを備えた構成が示されている。
【００４１】
スイッチ制御部１０１は、スイッチ１０から受信した情報を基に、ネットワークトポロジを把握し、物理サーバ記憶部１０２に記憶されている物理サーバ情報を用いて特定されるネットワーク中の各物理サーバ間の経路を計算する。また、スイッチ制御部１０１は、前記物理サーバ情報及びパケット書換ルール記憶部１０４のパケット書換ルールを用いて、前記経路上のスイッチ１０に経路に沿ったパケット転送等を指示する制御情報（フローエントリ）を作成する。さらに、スイッチ制御部１０１は、前記作成した制御情報（フローエントリ）を各スイッチに設定する。本実施形態では、スイッチ制御部１０１は、トンネルエンドポイントを持つ全物理サーバ間の経路を作成し、全トンネルエンドポイント同士が通信可能な状態となるように、制御情報（フローエントリ）を設定する。
【００４２】
物理サーバ記憶部１０２は、各物理サーバのアドレスや接続先のスイッチ情報を含む物理サーバ情報を記憶する。図９は物理サーバ情報の例である。物理サーバのＩＰアドレスやＭＡＣアドレスは、制御情報（フローエントリ）のマッチ条件中の宛先アドレスを指定する際に使用される。また、接続先スイッチＩＤやその接続先ポート番号は、経路計算を行う際に、計算する経路の起点、終点となるスイッチを特定する際に参照される。
【００４３】
パケット書換ルール作成部１０３は、物理サーバ１０００がネットワークに追加された際に、その物理サーバに対応するパケット書換ルールを作成する。本実施形態では、パケット書換ルール作成部１０３は、各物理サーバに対してシステムで一意となる識別子（ＩＤ）を割り当て、その識別子と追加された物理サーバＭＡＣアドレスを基に、図６に示すパケット書換ルールを作成する。作成されたパケット書換ルールは、パケット書換ルール記憶部１０４に保存され、適当なタイミングで、物理サーバ制御部１０５が、物理サーバ１０００に送信する。
【００４４】
なお、前記パケット書換ルールの配布タイミングとしては、次のようなものが考えられる。例えば、パケット書換ルールを作成する度に、全物理サーバにパケット書換ルールを配布するのでもよいし、そのパケット書換ルールを必要とする物理サーバにだけ配布する方式を採用しても良い。例えば、ある２つの物理サーバに着目した時、その２つの物理サーバ上で同一のテナントに属する仮想マシンが動作していなかった場合、その２つの物理サーバは通信する必要がない。よって、その２つの物理サーバには、他方の物理サーバとの通信を実現するためのパケット書換ルールを配布する必要はない。
【００４５】
また、パケット書換ルールの配布タイミングとして、コントローラ１００が事前に配布するのではなく、各物理サーバが書換ルールを必要なときにコントローラ１００に問い合わせる方式もある。例えば、物理サーバ１０００のパケット書換部１００４がパケットを受け取り、パケット書換ルール記憶部１００５に保持されているパケット書換ルールを検索した結果、該当するパケット書換ルールが無かった場合に、パケット書換部１００４がコントローラ１００にパケット書換ルールを要求する方式も採用可能である。
【００４６】
前述のとおり、各物理サーバ１０００のパケット書換部１００４は、パケットの宛先ＭＡＣアドレスフィールドに、物理サーバの識別子とテナントＩＤとを埋め込む。そして、コントローラ１００が各スイッチ１０に、この物理サーバ識別子とテナントＩＤをマッチ条件に含むフローエントリを設定することで、パケットの転送を実現することができる。
【００４７】
物理サーバ制御部１０５は、物理サーバ１０００に対し、パケット書換ルールを送信し、パケット書換ルール記憶部１００５の記憶内容を更新する。また、物理サーバ制御部１０５は、各物理サーバ１０００に対し、前述のテナント情報（図４参照）とＶＭ管理情報（図５参照）とを配布する。
【００４８】
なお、図２、図３、図８及び図１４に示した物理サーバやコントローラ（オープンフローコントローラとサーバコントローラに分割した構成も含む）の各部（処理手段）は、これらの装置を構成するコンピュータに、そのハードウェアを用いて、上記した各処理を実行させるコンピュータプログラムにより実現することもできる。
【００４９】
続いて、本実施形態の動作について図面を参照して詳細に説明する。図１０は、第１の実施形態の物理サーバのパケット送信時の動作を表したフローチャートである。図１０を参照すると、まず、仮想スイッチ１００２が、ＶＭから送信されたパケットを受信する（ステップＳ１１０）。
【００５０】
次に、前記受信したパケットの転送先が、同一仮想スイッチに接続するＶＭ宛のパケットであった場合（ステップＳ１２０のＹｅｓ）、仮想スイッチ１００２は、前記同一仮想スイッチに接続するＶＭへとパケットを転送する（ステップＳ１３０）。
【００５１】
一方、前記受信したパケットの転送先が、同一仮想スイッチに接続するＶＭ宛のパケットでない場合（ステップＳ１２０のＮｏ）、仮想スイッチ１００２は、トンネルエンドポイント１００３に対し、テナントＩＤとともに受信パケットを送る。トンネルエンドポイント１００３は、前記パケットに対して前記テナントＩＤを含んだカプセルヘッダ（追加ヘッダ）を付加するカプセル化を実施する（ステップＳ１４０）。
【００５２】
次に、パケット書換部１００４が、パケット書換ルール記憶部１００５から、前記カプセル化したパケットの宛先ＭＡＣアドレス、即ち、宛先物理サーバのＭＡＣアドレスをキーに、当該パケットに適用するパケット書換ルールを検索する（ステップＳ１５０）。
【００５３】
例えば、宛先の物理サーバのＭＡＣアドレスが００：００：ＢＢ：ＢＢ：ＢＢ：ＢＢである場合、パケット書換部１００４は、図６のパケット書換ルールのうち、ＭＡＣアドレスが００：００：ＢＢ：ＢＢ：ＢＢ：ＢＢであるルールを用いて当該パケットのオリジナルヘッダの宛先ＭＡＣアドレスを“０２：００：０２：ｘｘ：ｘｘ：ｘｘ”に書き換える（ステップＳ１６０）。但し、“ｘｘ：ｘｘ：ｘｘ”には、カプセルヘッダ（追加ヘッダ）に含まれるテナント識別子が設定される。
【００５４】
そして、パケット書換部１００４は、前記書換したパケットを物理ポートを介してスイッチ１０に送信する（ステップＳ１７０）。
【００５５】
一方、コントローラ１００は、物理サーバ１０００間の経路上のスイッチ１０に、前記したパケット書換ルールと物理サーバの識別子をマッチ条件とした制御情報（フローエントリ）に設定している。従って、パケット書換部１００４から送信されたパケットは、図１１に示すように、経路上のスイッチにより対向する物理サーバ１０００に転送される（図１１のスイッチ近傍に付した数字＃ｎは、ポート番号を示す）。
【００５６】
図１２は、第１の実施形態の物理サーバのパケット受信時の動作を表したフローチャートである。図１２を参照すると、まず、前記パケット書換が施されたパケットをスイッチ１０から受信すると（ステップＳ２１０）、パケット書換部１００４は、パケット書換ルール記憶部１００５から、前記書換済みのＭＡＣアドレスフィールドの内容をキーに、当該書換済みパケットに適用するパケット書換ルールを検索する（ステップＳ２２０）。
【００５７】
例えば、宛先の物理サーバのＭＡＣアドレスフィールドが０２：００：０２：ｘｘ：ｘｘ：ｘｘと書き換えられている場合、パケット書換部１００４は、図６のパケット書換ルールのうち、書き換え後ＭＡＣアドレスが００：００：ＢＢ：ＢＢ：ＢＢ：ＢＢであるルールを用いて当該パケットのオリジナルヘッダの宛先ＭＡＣアドレスを“００：００：ＢＢ：ＢＢ：ＢＢ：ＢＢ”に復元する（ステップＳ２３０）。
【００５８】
トンネルエンドポイント１００３は、前記パケットに対してデカプセル化を実施し、仮想スイッチ１００２に送る（ステップＳ２４０）。
【００５９】
仮想スイッチ１００２は、トンネルエンドポイント１００３から送られたテナントＩＤを基にＭＡＣアドレステーブルを選択し、デカプセル化されたパケットのヘッダ、即ち、オリジナルヘッダにマッチするエントリに基づいて、該当するＶＭにパケットを転送する（ステップＳ２５０）。
【００６０】
以上のように、カプセルヘッダを付加したまま、一方の物理サーバのＶＭから送信されたパケットを、対向する物理サーバに転送することが可能となる。また、図１１に示すように、復路（反対方向）のパケットを転送する制御情報（フローエントリ）を設定しておくことで、前記パケットを受信したＶＭからの応答も上記と同様の手順で、転送可能である。
【００６１】
また、本実施形態によれば、特定のテナントのパケットに対してだけ特別な制御をすることもできる。図１３は、テナントＩＤ＝１０（００:００:０ａ）であるＶＭからのパケットだけ、図１３の下段に設けた経路で転送するように、制御情報（フローエントリ）を設定した例である。例えば、図１３の左端のスイッチ１０がテナントＩＤ＝１０のＶＭからのパケット（ＭＡＣアドレスは“０２：００：０２：００：００：０ａ”に書換済み）を受信すると、スイッチ１０は、マッチする制御情報（フローエントリ）の中から最優先のもの（図１３の吹出し内の最上段のエントリ）を適用してポート＃４からパケットを転送する。一方、その他のテナントからのパケットは、図１３の吹出し内の最上段のエントリにはマッチしないため、図１３の上側の経路（図１１と同様の経路）で転送されることになる。
【００６２】
以上のように、本実施形態によれば、カプセルヘッダを解釈できる高価なスイッチを用いなくとも、トンネリング技術を用いた拠点間のフロー制御を実現できる。
【００６３】
また、本実施形態によれば、オープンフロースイッチを使ってＭＰＬＳ（Ｍｕｌｔｉ−Ｐｒｏｔｏｃｏｌ  Ｌａｂｅｌ  Ｓｗｉｔｃｈｉｎｇ）相当のラベルスイッチングも実現できる。前記第１の実施形態では、物理サーバ１０００のパケット書換部１００４がパケットの宛先ＭＡＣアドレスフィールドに、トンネルエンドポイント１００３の識別子を埋め込んでいる。この識別子をＭＰＬＳにおけるラベルのように扱い、スイッチ１０にパケットを転送させることが可能である。ＭＰＬＳネットワークでは、ＭＰＬＳルータが自律的にラベルを計算し、隣接ルータに配布する処理が必要となる。一方、本実施形態では、コントローラがトンネルエンドポイントの識別子をパケットに埋め込む書換を指示するとともに、その識別子をマッチ条件とする制御情報（フローエントリ）を作成し、ネットワーク中の各スイッチ１０に設定する。本実施形態によれば、スイッチ１０は、ラベルの作成や経路計算をする必要がなく、ＭＰＬＳのルータに比べて処理が減るため有利である。
【００６４】
以上、本発明の実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、各図面に示したネットワーク構成や要素の構成は、本発明の理解を助けるための一例であり、これらの図面に示した構成に限定されるものではない。
【００６５】
例えば、図１４で示すように、コントローラ１００のオープンフロー制御機能と物理サーバ制御機能と分割し、それぞれ別装置に配置した構成（第２の実施形態）も採用可能である。この場合、図１４のオープンフローコントローラ１００Ｂは、サーバコントローラ１００Ａに対してオープンフローネットワークを制御するためのインターフェースを提供する。オープンフローコントローラ１００Ｂ側には、第１の実施形態のコントローラ１００の機能のうち、スイッチ１０に制御情報（フローエントリ）を登録するための機能や、ネットワークのトポロジ情報を取得するための機能が配置される。
【００６６】
また、上記した第１の実施形態では、送信元の物理サーバ１０００は、それぞれＶＭが属するテナントＩＤを宛先ＭＡＣアドレスに埋め込むので、送信先の物理サーバが受信すべきＭＡＣアドレスは複数になる。複数の宛先ＭＡＣアドレスを受信するために、物理サーバは、そのＮＩＣをプロミスキャスモードで動作させる必要がある。一般的に、ＮＩＣをプロミスキャスモードで動作させた場合、ソフトウェアでパケットの宛先を調べ、自分宛以外のパケットを破棄する処理をしなければならず、ＣＰＵ（Central Processing Unit）に大きな負荷がかかってしまう。しかしながら、本実施形態の環境では、パケットはリピーターハブではなく、オープンフロースイッチ相当のスイッチにより制御情報（フローエントリ）にマッチしたものだけが転送されてくるので、物理サーバに自分宛て以外のパケットが転送されることはない。
【００６７】
また、本実施形態では、物理サーバ間がオープンフロースイッチ相当のスイッチで接続されているものとして説明したが、その他のスイッチの適用を制限するものではない。図１５は、各環境におけるＮＩＣの動作モードを表している。一般的な仮想サーバ環境において、各物理サーバが処理すべきＭＡＣアドレスの数は、その物理サーバ上に動作しているＶＭの数を超えない。このとき、ＮＩＣはプロミスキャスモードで動作させる必要がある。各物理サーバのソフトウェアによるパケット受信処理の負荷が高くならないように、この環境ではネットワークをスイッチングハブで構成し、各物理サーバに自分の宛先以外のパケットが転送されないようにする必要がある。また、仮想サーバ環境に、ＶＸＬＡＮやＮＶＧＲＥを利用して仮想ネットワークを構築する際は、ＮＩＣをノーマルモードで動作させてよい。物理サーバ上にいくつ仮想サーバ（ＶＭ）が動作していようとも、物理サーバが受信すべきパケットのＭＡＣアドレスはトンネルエンドポイントのＭＡＣアドレスただ１つである。この環境においては、リピーターハブを用いてネットワークを構築しても良い。
【００６８】
また、上記した実施形態では、オリジナルヘッダの宛先ＭＡＣアドレスフィールドを用いてパケットを書き換える例を挙げて説明したが、上記説明したように、書換したパケットは、出口側のスイッチで復元することができるため、宛先ＩＰアドレス等その他のフィールドを書換対象としても差し支えない。
【００６９】
また、書き換える内容も仮想ネットワークＩＤ（テナントＩＤ）そのものでなくともよい。仮想ネットワークＩＤ（テナントＩＤ）に対応するフロー識別子等を割り当てて、このフロー識別子をオリジナルヘッダに書き込むとともに、制御情報（フローエントリ）のマッチ条件として用いても同様の効果を奏することができる。
【００７０】
最後に、本発明の好ましい形態を要約する。
［第１の形態］
（上記第１の視点によるパケット書換装置参照）
［第２の形態］
第１の形態のパケット書換装置において、
前記パケット書換部は、前記パケット書換ルールを参照して、前記書き換えが行われた受信パケットの復元処理を実行するパケット書換装置。
［第３の形態］
第１又は第２の形態のパケット書換装置において、
前記パケット書換ルールとして、前記スイッチを制御する制御装置から配布されたパケット書換ルールを用いるパケット書換装置。
［第４の形態］
第１から第３いずれか一の形態のパケット書換装置において、
前記パケット書換ルールとして、オリジナルヘッダの所定の領域の内容を、前記制御装置が前記スイッチに設定した制御情報のマッチ条件に用いられた内容に書き換えるパケット書換ルールを用いるパケット書換装置。
［第５の形態］
第１から第４いずれか一の形態のパケット書換装置において、
前記パケット書換ルールとして、オリジナルヘッダの所定の領域の内容を、前記仮想ネットワークを一意に識別する識別子を書き込むパケット書換ルールを用いるパケット書換装置。
［第６の形態］
第１から第５いずれか一の形態のパケット書換装置において、
前記トンネルエンドポイントを介して通信する仮想マシンが動作する物理サーバに内蔵されているパケット書換装置。
［第７の形態］
（上記第２の視点による制御装置（コントローラ）参照）
［第８の形態］
第７の形態の制御装置（コントローラ）において、
前記パケット書換ルールを用いて、配下のスイッチに設定する制御情報のマッチ条件を作成する制御装置。
［第９の形態］
（上記第３の視点による通信システム参照）
［第１０の形態］
第９の形態の通信システムにおいて、
前記制御装置は、
前記パケット書換ルール記憶部に記憶させるパケット書換ルールを作成するパケット書換ルール作成部と、
前記作成したパケット書換ルールを、前記スイッチと前記トンネルエンドポイントとの間に配置されたパケット書換装置に配付する制御部とを備える。
［第１１の形態］
（上記第４の視点によるパケット送信方法参照）
［第１２の形態］
（上記第５の視点によるプログラム参照）
なお、上記第１０、第１１の形態は、第１の形態と同様に、第２〜第６の形態に展開することが可能である。
【００７１】
なお、上記の非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【符号の説明】
【００７２】
１０  スイッチ
１００  コントローラ
１００Ａ  サーバコントローラ
１００Ｂ  オープンフローコントローラ
１０１  スイッチ制御部
１０２  物理サーバ記憶部
１０２Ａ  制御部
１０２Ｂ  通信部
１０３  パケット書換ルール作成部
１０４  パケット書換ルール記憶部
１０５  物理サーバ制御部
１０００  物理サーバ
１０００Ａ  パケット書換装置
１００１  ＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）
１００２  仮想スイッチ
１００３  トンネルエンドポイント
１００４  パケット書換部
１００４Ａ  パケット書換モジュール
１００５  パケット書換ルール記憶部
１００６  コントローラ通信部
【図１】
0005991424.tif 000002
【図２】
0005991424.tif 000003
【図３】
0005991424.tif 000004
【図４】
0005991424.tif 000005
【図５】
0005991424.tif 000006
【図６】
0005991424.tif 000007
【図７】
0005991424.tif 000008
【図８】
0005991424.tif 000009
【図９】
0005991424.tif 000010
【図１０】
0005991424.tif 000011
【図１１】
0005991424.tif 000012
【図１２】
0005991424.tif 000013
【図１３】
0005991424.tif 000014
【図１４】
0005991424.tif 000015
【図１５】
0005991424.tif 000016