(57)【要約】【課題】ＮＦＶの技術において、ＶＭの切り替えを高速化する。【解決手段】サーバ１は、パケットの転送先であるＶＭ３の異常を検出し、ＶＭ３の切り替えが行われると、転送先のＭＡＣアドレスと切り替え前のＶＭのポート番号との第１対応関係を、該ＭＡＣアドレスと切り替え後のＶＭのポート番号との第１対応関係に書き換え、書き換え後の第１対応関係と、切り替え後の転送先のＶＭのポート番号と転送先のＭＡＣアドレスと転送先のＩＰアドレスとの第２対応関係とに基づいて一致するポート番号から、切り替え後のＶＭの転送先のＭＡＣアドレスと転送先のＩＰアドレスとを決定し、外部のネットワークから受信したパケットのヘッダに含まれる転送先のＭＡＣアドレスと転送先のＩＰアドレスとを、決定したＭＡＣアドレスとＩＰアドレスとに書き換え、書き換えられたパケットを前記切り替え後のＶＭ３に転送する。【選択図】図１
2017229030.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
パケットの転送先であるＶＭの異常を検出し、ＶＭの切り替えが行われると、転送先のＭＡＣアドレスと切り替え前のＶＭのポート番号との第１対応関係を、該ＭＡＣアドレスと切り替え後のＶＭのポート番号との第１対応関係に書き換え、
書き換え後の第１対応関係と、切り替え後の転送先のＶＭのポート番号と転送先のＭＡＣアドレスと転送先のＩＰアドレスとの第２対応関係とに基づいて一致するポート番号から、前記切り替え後のＶＭの転送先のＭＡＣアドレスと転送先のＩＰアドレスとを決定し、
外部のネットワークから受信したパケットのヘッダに含まれる転送先のＭＡＣアドレスと転送先のＩＰアドレスとを、決定したＭＡＣアドレスとＩＰアドレスとに書き換え、
書き換えられたパケットを前記切り替え後のＶＭに転送する
処理を実行させることを特徴とするＶＭ切り替えプログラム。
【請求項２】
前記ＶＭの切り替えが行われると、切り替え後のＶＭのポート番号と切り替え後の転送元のＭＡＣアドレスと切り替え後の転送元のＩＰアドレスとの第３対応関係を、切り替え後のＶＭのポート番号と切り替え前の転送元のＭＡＣアドレスと切り替え前の転送元のＩＰアドレスとの第３対応関係に書き換え、
書き換えた第３対応関係に基づいて、前記切り替え後のＶＭから転送されたパケットのヘッダに含まれる転送元のＭＡＣアドレスと転送元のＩＰアドレスを、書き換えたＭＡＣアドレスとＩＰアドレスとに書き換え、
書き換えられたパケットを外部のネットワークに転送する
処理を実行させることを特徴とする請求項１に記載のＶＭ切り替えプログラム。
【請求項３】
前記異常を検出する処理は、前記パケットを前記ＶＭへ転送する際の前記パケットの順序と、前記ＶＭから返信されるパケットの順序とに基づいて、前記ＶＭの異常を検出する
ことを特徴とする請求項１に記載のＶＭ切り替えプログラム。
【請求項４】
前記異常を検出する処理は、入力されたパケットをキューに挿入し、前記キューから取り出されないパケットの数に基づいて、前記ＶＭの異常を検出する
ことを特徴とする請求項１に記載のＶＭ切り替えプログラム。
【請求項５】
前記異常を検出する処理は、前記ＶＭによって廃棄されたパケットの数に基づいて、前記ＶＭの異常を検出する
ことを特徴とする請求項１に記載のＶＭ切り替えプログラム。
【請求項６】
前記異常を検出する処理は、前記ＶＭに転送したパケットの数と、前記ＶＭから返信されたパケットの数と、前記ＶＭによって廃棄されたパケットの数とに基づいて、前記ＶＭの異常を検出する
ことを特徴とする請求項１に記載のＶＭ切り替えプログラム。
【請求項７】
前記異常を検出する処理は、前記ＶＭの状態を示す統計情報に基づいて、前記ＶＭの異常を検出する
ことを特徴とする請求項１に記載のＶＭ切り替えプログラム。
【請求項８】
前記異常を検出する処理は、前記パケットを前記ＶＭへ転送する際の時刻と、前記パケットに対する応答が到達する際の時刻との時刻差に基づいて、前記ＶＭの異常を検出する
ことを特徴とする請求項１に記載のＶＭ切り替えプログラム。
【請求項９】
パケットの転送先であるＶＭの異常を検出し、ＶＭの切り替えが行われると、転送先のＭＡＣアドレスと切り替え前のＶＭのポート番号との第１対応関係を、該ＭＡＣアドレスと切り替え後のＶＭのポート番号との第１対応関係に書き換える第１の書き換え部と、
書き換え後の第１対応関係と、切り替え後の転送先のＶＭのポート番号と転送先のＭＡＣアドレスと転送先のＩＰアドレスとの第２対応関係とに基づいて一致するポート番号から、前記切り替え後のＶＭの転送先のＭＡＣアドレスと転送先のＩＰアドレスとを決定する決定部と、
外部のネットワークから受信したパケットのヘッダに含まれる転送先のＭＡＣアドレスと転送先のＩＰアドレスとを、決定したＭＡＣアドレスとＩＰアドレスとに書き換える第２の書き換え部と、
書き換えられたパケットを前記切り替え後のＶＭに転送する転送部と、
を有することを特徴とする情報処理装置。
【請求項１０】
コンピュータが、
パケットの転送先であるＶＭの異常を検出し、ＶＭの切り替えが行われると、転送先のＭＡＣアドレスと切り替え前のＶＭのポート番号との第１対応関係を、該ＭＡＣアドレスと切り替え後のＶＭのポート番号との第１対応関係に書き換え、
書き換え後の第１対応関係と、切り替え後の転送先のＶＭのポート番号と転送先のＭＡＣアドレスと転送先のＩＰアドレスとの第２対応関係とに基づいて一致するポート番号から、前記切り替え後のＶＭの転送先のＭＡＣアドレスと転送先のＩＰアドレスとを決定し、
外部のネットワークから受信したパケットのヘッダに含まれる転送先のＭＡＣアドレスと転送先のＩＰアドレスとを、決定したＭＡＣアドレスとＩＰアドレスとに書き換え、
書き換えられたパケットを前記切り替え後のＶＭに転送する
各処理を実行することを特徴とするＶＭ切り替え方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＶＭ切り替えプログラム等に関する。
【背景技術】
【０００２】
近年、増加する通信量をより高速に処理するために、サーバがサーバ上に複数のＶＭを生成し、それぞれのＶＭと接続するＶＮＦ（Virtual  Network  Function）でパケット処理を行うＮＦＶ（Network  Functions  Virtualization）の技術がある。かかるＮＦＶの技術では、ＶＭまたはＶＮＦでのパケットの輻輳や故障により、正常にパケット処理が行えなくなる。そこで、サーバは、パケット処理の異常時には、他のＶＭに切り替える処理を行う。
【０００３】
例えば、サーバの外部にあるネットワークコントローラが、仮想スイッチに対してＶＭの切り替え指示を行う技術が知られている（例えば、特許文献１参照）。かかる技術では、サーバの内部にあるアプリケーション不良検知モジュールが仮想アプライアンスの不良を検知し、不良を検知したことに応じて、不良通知をアプライアンス不良コントロール通知モジュールに送る。アプライアンス不良コントロール通知モジュールは、アプライアンス不良コントローラ通知メッセージをネットワークコントローラに送る。そして、ネットワークコントローラが、アプライアンス不良コントローラ通知メッセージを受信したことに応じて、実行される構成変更を決定し、仮想スイッチに対してＶＭの切り替え指示を行う。なお、アプライアンスは、ＶＮＦに対応する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１５−６２２８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の技術では、ＶＭの切り替えに時間がかかるという問題がある。例えば、ネットワークコントローラが仮想スイッチに対してＶＭの切り替え指示を行う技術では、ネットワークコントローラがサーバの外部にあるため、ＶＭの切り替えに時間がかかる。
【０００６】
１つの側面では、ＮＦＶの技術において、ＶＭの切り替えを高速化することを目的とする。
【課題を解決するための手段】
【０００７】
１つの案では、ＶＭ切り替えプログラムは、コンピュータに、パケットの転送先であるＶＭの異常を検出し、ＶＭの切り替えが行われると、転送先のＭＡＣアドレスと切り替え前のＶＭのポート番号との第１対応関係を、該ＭＡＣアドレスと切り替え後のＶＭのポート番号との第１対応関係に書き換え、書き換え後の第１対応関係と、切り替え後の転送先のＶＭのポート番号と転送先のＭＡＣアドレスと転送先のＩＰアドレスとの第２対応関係とに基づいて一致するポート番号から、前記切り替え後のＶＭの転送先のＭＡＣアドレスと転送先のＩＰアドレスとを決定し、外部のネットワークから受信したパケットのヘッダに含まれる転送先のＭＡＣアドレスと転送先のＩＰアドレスとを、決定したＭＡＣアドレスとＩＰアドレスとに書き換え、書き換えられたパケットを前記切り替え後のＶＭに転送する、処理を実行させる。
【発明の効果】
【０００８】
１つの態様によれば、ＮＦＶの技術において、ＶＭの切り替えを高速化することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施例１に係るサーバの機能構成を示すブロック図である。
【図２】図２は、実施例１に係る転送テーブルのデータ構造の一例を示す図である。
【図３】図３は、実施例１に係るＭＡＣ／ＩＰ編集テーブルのデータ構造の一例を示す図である。
【図４】図４は、実施例１に係るＶＭ切り替え前の処理の一例を示す図である。
【図５Ａ】図５Ａは、実施例１に係るＶＭ切り替え処理の一例を示す図である。
【図５Ｂ】図５Ｂは、実施例１に係るＶＭ切り替え処理の別の例を示す図である。
【図５Ｃ】図５Ｃは、実施例１に係るＶＭ切り替え処理の別の例を示す図である。
【図６】図６は、実施例１に係るＶＭ切り替え処理のフローチャートの一例を示す図である。
【図７】図７は、ＷＡＮからＶＭへ転送する場合のＶＭ切り替え処理のフローチャートの一例を示す図である。
【図８】図８は、転送テーブルの更新処理のフローチャートの一例を示す図である。
【図９】図９は、ＶＭからＷＡＮへ転送する場合のＶＭ切り替え処理のフローチャートの一例を示す図である。
【図１０】図１０は、実施例２に係るサーバの機能構成を示すブロック図である。
【図１１Ａ】図１１Ａは、実施例２に係る異常検出処理の一例を示す図（１）である。
【図１１Ｂ】図１１Ｂは、実施例２に係る異常検出処理の一例を示す図（２）である。
【図１２】図１２は、実施例２に係る異常検出処理のフローチャートの一例を示す図である。
【図１３】図１３は、実施例２に係るＶＭ側のフローチャートの一例を示す図である。
【図１４】図１４は、実施例３に係るサーバの機能構成を示すブロック図である。
【図１５】図１５は、実施例３に係る異常検出処理の一例を示す図である。
【図１６】図１６は、実施例３に係る異常検出処理のフローチャートの一例を示す図である。
【図１７】図１７は、実施例４に係るサーバの機能構成を示すブロック図である。
【図１８】図１８は、実施例４に係る異常検出処理の一例を示す図である。
【図１９】図１９は、実施例４に係る異常検出処理のフローチャートの一例を示す図である。
【図２０】図２０は、実施例４に係るＶＭ側のフローチャートの一例を示す図である。
【図２１】図２１は、実施例５に係るサーバの機能構成を示すブロック図である。
【図２２】図２２は、実施例５に係る異常検出処理の一例を示す図である。
【図２３】図２３は、実施例５に係る異常検出処理のフローチャートの一例を示す図である。
【図２４】図２４は、実施例５に係るＶＭ側のフローチャートの一例を示す図である。
【図２５】図２５は、実施例６に係るサーバの機能構成を示すブロック図である。
【図２６】図２６は、実施例６に係る異常検出処理の一例を示す図である。
【図２７】図２７は、実施例６に係る異常検出処理のフローチャートの一例を示す図である。
【図２８】図２８は、実施例６に係るＶＭ側のフローチャートの一例を示す図である。
【図２９】図２９は、実施例７に係るサーバの機能構成を示すブロック図である。
【図３０】図３０は、実施例７に係る異常検出処理の一例を示す図である。
【図３１】図３１は、実施例７に係る異常検出処理のフローチャートの一例を示す図である。
【図３２】図３２は、実施例７に係るＶＭ側のフローチャートの一例を示す図である。
【図３３】図３３は、ＶＭ切り替えプログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１０】
以下に、本願の開示するＶＭ切り替えプログラム、情報処理装置およびＶＭ切り替え方法の実施例を図面に基づいて詳細に説明する。なお、実施例によりこの発明が限定されるものではない。
【実施例１】
【００１１】
［実施例１に係るサーバの構成］
図１は、実施例１に係るサーバの機能構成を示す図である。図１に示すように、サーバ１は、ネットワーク機能を仮想化するＮＦＶ（Network  Functions  Virtualization）の技術を適用し、仮想スイッチ２と、複数のＶＭ３と、を有する。各ＶＭ３は、ネットワークを介してＶＮＦ（Virtual  Network  Function）４と接続する。ＶＮＦ４は、ＶＭ３上で動作するソフトウェアであり、一例として、音声のパケット通信機能が挙げられる。ＶＭの切り替え時に、音声のパケット通信機能そのものの（アプリケーションソフトウェアとしての）引き継ぎは不要である。なお、図１では、ＶＭ３の数をＮ個（Ｎ＞２）としたが、これに限定されず、２個であっても良いし、１０個であっても良い。すなわち、ＶＭ３の数は、運用しているＶＭ３と異なる予備のＶＭ３があれば個数に限定はない。実施例では、複数のＶＭ３を区別するため、Ａ、Ｂ、・・・Ｎや１、２、・・・をＶＭ右横の括弧内に記載して説明することがある。
【００１２】
サーバ１は、通信量をより高速に処理するために、サーバ１上に複数のＶＭ３を生成し、それぞれのＶＭ３とネットワークで接続されたＶＮＦ４でパケット処理を行う。なお、サーバ１は、情報処理装置の一例である。
【００１３】
仮想スイッチ２は、パケットの転送先であるＶＭ３の異常を検出し、異常が検出されたＶＭ３を新たなＶＭ３に切り替える。さらに、仮想スイッチ２は、制御部２０と、監視部３０と、記憶部４０とを有する。
【００１４】
制御部２０および監視部３０は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。そして、制御部２０および監視部３０は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路の電子回路に対応する。または、制御部２０および監視部３０は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）等の電子回路に対応する。
【００１５】
記憶部４０は、例えばフラッシュメモリ（Flash  Memory）やＦＲＡＭ（登録商標）（Ferroelectric  Random  Access  Memory）等の不揮発性の半導体メモリ素子等の記憶装置に対応する。記憶部４０は、転送テーブル４１およびＭＡＣ／ＩＰ編集テーブル４２を有する。転送テーブル４１は、パケットを転送する際の宛先のＭＡＣアドレスおよびポート番号を記憶する。ＭＡＣ／ＩＰ編集テーブル４２は、パケットの宛先および送信元のＭＡＣアドレスおよびＩＰアドレスを編集するために用いられるテーブルである。なお、転送テーブル４１およびＭＡＣ／ＩＰ編集テーブル４２の詳細は、後述する。
【００１６】
制御部２０は、ＶＭ切り替え部２１を有する。
【００１７】
ＶＭ切り替え部２１は、ＶＭ３の異常が検出されると、異常が検出されたＶＭ３を新たなＶＭ３に切り替える。すなわち、ＶＭ切り換え部２１は、いずれかのＶＭ３の異常が検出されると、異常が検出されたＶＭ（Ａ）を新たなＶＭ（Ｂ）に切り替える。例えば、ＶＭ切り替え部２１は、後述する異常検出部３１によってＶＭ３の異常が検出されると、ＶＭ３の切り替えが行われ、転送テーブル４１およびＭＡＣ／ＩＰ編集テーブル４２に基づいて、切り替え後の新たなＶＭ３のＭＡＣアドレスとＩＰアドレスとを決定する。ＶＭ切り替え部２１は、外部のネットワークから受信したパケットのヘッダに含まれるＭＡＣアドレスとＩＰアドレスとを、決定したＭＡＣアドレスとＩＰアドレスとに書き換える。ＶＭ切り替え部２１は、アドレスが書き換えられたパケットを切り替え後の新たなＶＭ３に転送する。
【００１８】
ここで、転送テーブル４１およびＭＡＣ／ＩＰ編集テーブル４２のデータ構造の一例を、図２および図３を参照して説明する。
【００１９】
［転送テーブルのデータ構造の一例］
図２は、実施例１に係る転送テーブルのデータ構造の一例を示す図である。図２に示すように、転送テーブル４１は、宛先ＭＡＣアドレス４１ａおよび出力ポート４１ｂを対応付けて記憶する。宛先ＭＡＣアドレス４１ａは、パケットの転送先であるＶＭ３のＭＡＣアドレスであり、ＭＡＣ  ＤＡに対応する。出力ポート４１ｂは、パケットの転送先であるＶＭ３の出力ポートに対応する。出力ポート４１ｂは、ＶＭ３が切り替えられる際に、切り替え後のＶＭ３宛ての出力ポートに書き換えられる。例えば、ＶＭ切り替え部２１は、ＶＭ３の異常が検出されると、受信するパケットのヘッダに含まれる宛先ＭＡＣアドレスに対応する転送テーブル４１の出力ポートを、切り替え後の新たなＶＭ３宛ての出力ポートに書き換える。なお、転送テーブル４１は、第１対応関係の一例である。
【００２０】
［ＭＡＣ／ＩＰ編集テーブルのデータ構造の一例］
図３は、実施例１に係るＭＡＣ／ＩＰ編集テーブルのデータ構造の一例を示す図である。図３に示すように、ＭＡＣ／ＩＰ編集テーブル４２は、出力ポート４２ａ、宛先ＭＡＣアドレス４２ｂ、宛先ＩＰアドレス４２ｃ、入力ポート４２ｄ、送信元ＭＡＣアドレス４２ｅおよび送信元ＩＰアドレス４２ｆを対応付けて記憶する。出力ポート４２ａは、パケットの転送先であるＶＭ３の出力ポートに対応する。宛先ＭＡＣアドレス４２ｂは、パケットの転送先であるＶＭ３のＭＡＣアドレスであり、ＭＡＣ  ＤＡに対応する。宛先ＩＰアドレス４２ｃは、パケットの転送先であるＶＭ３のＩＰアドレスであり、ＤＩＰに対応する。入力ポート４２ｄは、パケットの送信元であるＶＭ３の入力ポートに対応する。送信元ＭＡＣアドレス４２ｅは、パケットの送信元であるＶＭ３のＭＡＣアドレスであり、ＭＡＣ  ＳＡに対応する。送信元ＩＰアドレス４２ｆは、パケットの送信元であるＶＭ３のＩＰアドレスであり、ＳＩＰに対応する。出力ポート４２ａ、宛先ＭＡＣアドレス４２ｂ、宛先ＩＰアドレス４２ｃ、入力ポート４２ｄ、送信元ＭＡＣアドレス４２ｅおよび送信元ＩＰアドレス４２ｆは、切り替えられるＶＭ３用も含めて、あらかじめ記憶されていても良い。なお、出力ポート４２ａ、宛先ＭＡＣアドレス４２ｂおよび宛先ＩＰアドレス４２ｃは、第２対応関係の一例である。入力ポート４２ｄ、送信元ＭＡＣアドレス４２ｅおよび送信元ＩＰアドレス４２ｆは、第３対応関係の一例である。第２対応関係と第３対応関係とは、同じテーブルにあっても良いし、異なるテーブルにあっても良い。
【００２１】
一例として、パケットが外部のネットワークのＷＡＮ（Wide  Area  Network）からＶＭ３に転送される場合には、ＶＭ切り替え部２１は、ＭＡＣ／ＩＰ編集テーブル４２に基づいて、切り替え後のＶＭ３宛ての出力ポートに対応する宛先ＭＡＣアドレスおよび宛先ＩＰアドレスを決定する。その後、ＶＭ切り替え部２１は、受信するパケットのヘッダに含まれる宛先ＭＡＣアドレスと宛先ＩＰアドレスとを、決定した宛先ＭＡＣアドレスと宛先ＩＰアドレスとに書き換えて、アドレスが書き換えられたパケットを切り替え後のＶＭ３に転送する。
【００２２】
また、別の一例として、パケットが切り替え後のＶＭ３から外部のネットワークのＷＡＮに転送される場合には、ＶＭ切り替え部２１は、ＭＡＣ／ＩＰ編集テーブル４２に基づいて、切り替え後のＶＭ３の入力ポート４２ｄに対応する送信元ＭＡＣアドレス４２ｅおよび送信元ＩＰアドレス４２ｆを取得する。そして、ＶＭ切り替え部２１は、取得した送信元ＭＡＣアドレス４２ｅおよび送信元ＩＰアドレス４２ｆを、切り替え前のＶＭ３のＭＡＣアドレスおよびＩＰアドレスに書き換える。その後、ＶＭ切り替え部２１は、受信するパケットのヘッダに含まれる送信元ＭＡＣアドレスと送信元ＩＰアドレスとを、書き換えられたＭＡＣアドレスとＩＰアドレスとに書き換えて、アドレスが書き換えられたパケットをＷＡＮに転送する。
【００２３】
図１に戻って、監視部３０は、異常検出部３１を有する。
【００２４】
異常検出部３１は、パケットの転送先であるＶＭ３の異常を検出する。かかるＶＭ３の異常とは、正常にパケット処理が行えなくなる状態のことをいう。例えば、ＶＭ３の異常には、ＶＭ３またはＶＮＦ４の故障や、ＶＭ３およびＶＮＦ４間のネットワークの輻輳が含まれる。
【００２５】
［ＶＭ切り替え前の処理の一例］
図４は、実施例１に係るＶＭ切り替え前の処理の一例を示す図である。すなわち、運用系のＶＭ３が正常である場合のパケットの転送処理について説明する。
【００２６】
図４上段は、外部のネットワークのＷＡＮからＶＭ３へのパケットの転送処理である。仮想スイッチ２の監視部３０は、ＷＡＮから受信されたパケットの転送先であるＶＭ３が正常であると判定する。すると、制御部２０は、転送テーブル４１に基づいて、受信されたパケットの宛先ＭＡＣアドレスに対応する出力ポートを取得する。制御部２０は、取得した出力ポートのＶＭ３に、受信されたパケットを転送する。ここでは、受信されたパケットの宛先ＭＡＣアドレス（ＭＡＣ  ＤＡ）は、「ＡＡ」である。制御部２０は、「ＡＡ」に対応する出力ポートを「ＶＭ（１）」として取得し、「ＶＭ（１）」の出力ポートのＶＭ３に、受信されたパケットを転送する。すなわち、制御部２０は、受信されたパケットについて、宛先ＭＡＣアドレス（ＭＡＣ  ＤＡ）として「ＡＡ」、宛先ＩＰアドレス（ＤＩＰ）として「ａａ」を書き込み、受信されたパケットを転送する。
【００２７】
図４下段は、ＶＭ３からＷＡＮへのパケットの転送処理である。仮想スイッチ２は、ＶＭ３からＷＡＮへパケットを転送する場合も同様に、転送テーブル４１に基づいて、ルーティングする。すなわち、制御部２０は、転送テーブル４１に基づいて、受信されたパケットの宛先ＭＡＣアドレスに対応する出力ポートを取得する。制御部２０は、取得した出力ポートのＷＡＮに、受信されたパケットを転送する。ここでは、受信されたパケットの宛先ＭＡＣアドレス（ＭＡＣ  ＤＡ）は、「＊＊」である。制御部２０は、「＊＊」に対応する出力ポートを「ＷＡＮ」として取得し、「ＷＡＮ」の出力ポートのＷＡＮに、受信されたパケットを転送する。すなわち、制御部２０は、受信されたパケットについて、送信元ＭＡＣアドレス（ＭＡＣ  ＳＡ）として「ＡＡ」、送信元ＩＰアドレス（ＳＩＰ）として「ａａ」を書き込み、当該パケットを転送する。
【００２８】
［ＶＭ切り替え時の処理の一例］
図５Ａ〜図５Ｃは、実施例１に係るＶＭ切り替え処理の一例を示す図である。すなわち、運用系のＶＭ３が異常である場合のパケットの転送処理について説明する。
【００２９】
図５Ａでは、外部のネットワークのＷＡＮからＶＭ３へパケットが転送される場合に、当該パケットの宛先のＶＭ３が異常である場合のＶＭ切り替え処理を説明する。仮想スイッチ２の異常検出部３１は、ＷＡＮから受信されたパケットの転送先であるＶＭ３が異常であると判定する。すると、ＶＭ切り替え部２１は、ＶＭ３の切り替えが行われると、受信されたパケットの宛先ＭＡＣアドレス（ＭＡＣ  ＤＡ）に対応する、転送テーブル４１の出力ポートを新たなＶＭ宛ての出力ポートに書き換える。ここでは、「ＶＭ（１）」が異常である場合に、ＶＭ切り替え部２１は、「ＡＡ」のＭＡＣ  ＤＡに対応する、転送テーブル４１の出力ポートを「ＶＭ（１）」から「ＶＭ（２）」に書き換える。すなわち、切り替え後のＶＭ３の出力ポートが「ＶＭ（２）」であるとする。
【００３０】
そして、ＶＭ切り替え部２１は、ＭＡＣ／ＩＰ編集テーブル４２に基づいて、切り替え後のＶＭ３宛ての出力ポートに対応する宛先ＭＡＣアドレス（ＭＡＣ  ＤＡ）および宛先ＩＰアドレス（ＤＩＰ）を決定する。ここでは、ＭＡＣ／ＩＰ編集テーブル４２から、切り替え後のＶＭ３宛ての出力ポート「ＶＭ（２）」に対応するＭＡＣ  ＤＡとして「ＢＢ」、ＤＩＰとして「ｂｂ」が決定される。
【００３１】
そして、ＶＭ切り替え部２１は、受信するパケットのヘッダに含まれる宛先ＭＡＣアドレス（ＭＡＣ  ＤＡ）と宛先ＩＰアドレス（ＤＩＰ）とを、決定した宛先ＭＡＣアドレス（ＭＡＣ  ＤＡ）と宛先ＩＰアドレス（ＤＩＰ）とに書き換える。そして、ＶＭ切り替え部２１は、アドレスが書き換えられたパケットを切り替え後のＶＭ３に転送する。ここでは、転送するパケットのＭＡＣ  ＤＡは、「ＡＡ」から「ＢＢ」に書き換えられる。転送するパケットのＤＩＰは、「ａａ」から「ｂｂ」に書き換えられる。これにより、仮想スイッチ２は、パケットの転送先のＶＭ３に異常がある場合に、仮想スイッチ２の内部で異常を検出し、異常があるＶＭ３を新たなＶＭ３に切り替えるので、ＶＭ３の切り替えを高速化することができる。
【００３２】
図５Ｂでは、切り替え後のＶＭ３からＷＡＮへパケットが転送される場合のＶＭ切り替え処理を説明する。ＶＭ切り替え部２１は、ＶＭ３の切り替えが行われると、ＭＡＣ／ＩＰ編集テーブル４２に基づいて、切り替え後のＶＭ３の入力ポート４２ｄに対応する送信元ＭＡＣアドレス（ＭＡＣ  ＳＡ）および送信元ＩＰアドレス（ＳＩＰ）を取得する。そして、ＶＭ切り替え部２１は、取得した送信元ＭＡＣアドレス（ＭＡＣ  ＳＡ）および送信元ＩＰアドレス（ＳＩＰ）を、切り替え前のＶＭ３のＭＡＣアドレスおよびＩＰアドレスに書き換える。ここでは、切り替え後のＶＭ３の入力ポートが「ＶＭ（２）」であるとする。すると、ＭＡＣ／ＩＰ編集テーブル４２について、切り替え後のＶＭ３の入力ポート「ＶＭ（２）」に対応するＭＡＣ  ＳＡは、「ＢＢ」から切り替え前のＶＭ３のＭＡＣアドレスを示す「ＡＡ」に書き換えられる。切り替え後のＶＭ３の入力ポート「ＶＭ（２）」に対応するＳＩＰは、「ｂｂ」から切り替え前のＶＭ３のＩＰアドレスを示す「ａａ」に書き換えられる。
【００３３】
そして、ＶＭ切り替え部２１は、切り替えられたＶＭ３から受信したパケットのヘッダに含まれる送信元ＭＡＣアドレス（ＭＡＣ  ＳＡ）と送信元ＩＰアドレス（ＳＩＰ）とを、書き換えられたＭＡＣアドレスとＩＰアドレスとに書き換える。そして、ＶＭ切り替え部２１は、アドレスが書き換えられたパケットをＷＡＮに転送する。ここでは、転送するパケットのＭＡＣ  ＳＡは、「ＡＡ」に書き換えられる。転送するパケットのＳＩＰは、「ａａ」に書き換えられる。これにより、仮想スイッチ２は、外部のネットワークから転送されたパケットの転送先のＶＭ３に異常があっても、戻りパケットの送信元を切り替え前の当該ＶＭ３とすることで、外部のネットワークおよびＶＭ３の間の通信に混乱をきたさないようにできる。つまり、外部のネットワークは、あたかもパケットに設定した（切り替え前の）転送先を示すＶＭ３と通信しているようにすることができる。
【００３４】
なお、図５Ａおよび図５Ｂでは、ＶＭ切り替え部２１は、単体のサーバ１内に作成されたＶＭ３を対象に、運用系のＶＭ３を予備のＶＭ３に切り替える場合を説明した。しかしながら、ＶＭ切り替え部２１は、これに限定されず、別のサーバ１内に作成されたＶＭ３を対象に、運用系のＶＭ３を予備のＶＭ３に切り替えても良い。
【００３５】
図５Ｃでは、外部のネットワークのＷＡＮからＶＭ３へパケットが転送される場合に、当該パケットの宛先のＶＭ３が異常である場合のＶＭ切り替え処理を説明する。仮想スイッチ２の異常検出部３１は、ＷＡＮから受信されたパケットの転送先であるＶＭ３が異常であると判定する。すると、ＶＭ切り替え部２１は、受信されたパケットの宛先ＭＡＣアドレス（ＭＡＣ  ＤＡ）に対応する、転送テーブル４１の出力ポートを新たなＶＭ３宛ての出力ポートに書き換える。ここでは、「ＶＭ（Ｂ）」が異常である場合に、ＶＭ切り替え部２１は、「ＢＢ」のＭＡＣ  ＤＡに対応する、転送テーブル４１の出力ポートを「ＶＭ（Ｂ）」から「ＶＭ（Ｃ）」に書き換える。すなわち、切り替え後のＶＭ３の出力ポートが別のサーバ１´内の「ＶＭ（Ｃ）」に書き換えられる。
【００３６】
そして、ＶＭ切り替え部２１は、ＭＡＣ／ＩＰ編集テーブル４２に基づいて、切り替え後のＶＭ３宛ての出力ポートに対応する宛先ＭＡＣアドレス（ＭＡＣ  ＤＡ）および宛先ＩＰアドレス（ＤＩＰ）を決定する。ここでは、ＭＡＣ／ＩＰ編集テーブル４２から、切り替え後のＶＭ３宛ての出力ポート「ＶＭ（Ｃ）」に対応するＭＡＣ  ＤＡとして「ＣＣ」、ＤＩＰとして「ｃｃ」が決定される。
【００３７】
そして、ＶＭ切り替え部２１は、受信するパケットのヘッダに含まれる宛先ＭＡＣアドレス（ＭＡＣ  ＤＡ）と宛先ＩＰアドレス（ＤＩＰ）とを、決定した宛先ＭＡＣアドレス（ＭＡＣ  ＤＡ）と宛先ＩＰアドレス（ＤＩＰ）とに書き換える。そして、ＶＭ切り替え部２１は、アドレスが書き換えられたパケットを切り替え後のＶＭ３に転送する。ここでは、転送するパケットのＭＡＣ  ＤＡは、「ＢＢ」から「ＣＣ」に書き換えられる。転送するパケットのＤＩＰは、「ｂｂ」から「ｃｃ」に書き換えられる。これにより、仮想スイッチ２は、パケットの転送先のＶＭ３に異常がある場合に、仮想スイッチ２の内部で異常を検出し、異常があるＶＭ３を新たなＶＭ３に切り替えるので、切り替え先が別のサーバ１´であっても、ＶＭ３の切り替えを高速化することができる。
【００３８】
［ＶＭ切り替え処理のフローチャート］
次に、実施例１に係るＶＭ切り替え処理のフローチャートを、図６を参照して説明する。図６は、実施例１に係るＶＭ切り替え処理のフローチャートの一例を示す図である。
【００３９】
図６に示すように、異常検出部３１は、ＶＭ３の異常を検出したか否かを判定する（ステップＳ１１）。ＶＭ３の異常を検出していないと判定した場合には（ステップＳ１１；Ｎｏ）、異常検出部３１は、ＶＭ切り替え処理を終了する。
【００４０】
一方、ＶＭ３の異常を検出したと判定した場合には（ステップＳ１１；Ｙｅｓ）、ＶＭ切り替え部２１は、パケットをＷＡＮからＶＭ３へ転送するか否かを判定する（ステップＳ１２）。パケットをＷＡＮからＶＭ３へ転送すると判定した場合には（ステップＳ１２；Ｙｅｓ）、ＶＭ切り替え部２１は、ＷＡＮからＶＭ３へ転送する処理を実行する（ステップＳ１３）。なお、ＷＡＮからＶＭ３へ転送する処理のフローチャートは、後述する。そして、処理が完了すると、ＶＭ切り替え部２１は、ＶＭ切り替え処理を終了する。
【００４１】
一方、パケットをＷＡＮからＶＭ３へ転送しないと判定した場合には（ステップＳ１２；Ｎｏ）、ＶＭ切り替え部２１は、ＶＭ３からＷＡＮへ転送する処理を実行する（ステップＳ１４）。なお、ＶＭ３からＷＡＮへ転送する処理のフローチャートは、後述する。そして、処理が完了すると、ＶＭ切り替え部２１は、ＶＭ切り替え処理を終了する。
【００４２】
［ＷＡＮからＶＭへ転送する場合のＶＭ切り替え処理のフローチャート］
次に、実施例１に係るＷＡＮからＶＭ３へ転送する場合のＶＭ切り替え処理のフローチャートを、図７を参照して説明する。図７は、ＷＡＮからＶＭへ転送する場合のＶＭ切り替え処理のフローチャートの一例を示す図である。
【００４３】
図７に示すように、ＶＭ切り替え部２１は、受信されたパケットを用いて、転送テーブル４１の更新処理を実行する（ステップＳ３１）。なお、転送テーブル４１の更新処理のフローチャートは、後述する。
【００４４】
ＶＭ切り替え部２１は、受信されたパケットの宛先ＭＡＣアドレス（ＭＡＣ  ＤＡ）を用いて、転送テーブル４１から出力ポートを取得する（ステップＳ３２）。そして、ＶＭ切り替え部２１は、取得した出力ポートを用いて、ＭＡＣ／ＩＰ編集テーブル４２から編集情報を取得する（ステップＳ３３）。ここでいう編集情報とは、出力ポートに対応する宛先ＭＡＣアドレス（ＭＡＣ  ＤＡ）および宛先ＩＰアドレス（ＤＩＰ）のことをいう。
【００４５】
そして、ＶＭ切り替え部２１は、編集情報を用いて、受信されたパケットの宛先ＭＡＣアドレス（ＭＡＣ  ＤＡ）と宛先ＩＰアドレス（ＤＩＰ）を書き換える（ステップＳ３４）。すなわち、ＶＭ切り替え部２１は、受信されたパケットのＭＡＣ  ＤＡおよびＤＩＰを、切り替え後の新しいＶＭ３のＭＡＣアドレスおよびＩＰアドレスに書き換える。
【００４６】
そして、ＶＭ切り替え部２１は、新たなＶＭ３へアドレスが書き換えられたパケットを転送する（ステップＳ３５）。そして、ＶＭ切り替え部２１は、ＷＡＮからＶＭ３へ転送する場合のＶＭ切り替え処理を終了する。
【００４７】
［転送テーブルの更新処理のフローチャート］
次に、実施例１に係る転送テーブル４１の更新処理のフローチャートを、図８を参照して説明する。図８は、転送テーブルの更新処理のフローチャートの一例を示す図である。
【００４８】
図８に示すように、ＶＭ切り替え部２１は、転送テーブル４１の出力ポートを書き換える（ステップＳ２１）。例えば、ＶＭ切り替え部２１は、受信されたパケットの宛先ＭＡＣアドレス（ＭＡＣ  ＤＡ）に対応する、転送テーブル４１の出力ポートを新たなＶＭ３の出力ポートに書き換える。
【００４９】
［ＶＭからＷＡＮへ転送する場合のＶＭ切り替え処理のフローチャート］
次に、実施例１に係るＶＭ３からＷＡＮへ転送する場合のＶＭ切り替え処理のフローチャートを、図９を参照して説明する。図９は、ＶＭからＷＡＮへ転送する場合のＶＭ切り替え処理のフローチャートの一例を示す図である。
【００５０】
図９に示すように、ＶＭ切り替え部２１は、受信されたパケットの入力ポートを用いて、ＭＡＣ／ＩＰ編集テーブル４２から編集情報を取得する（ステップＳ４１）。ここでいう編集情報とは、入力ポートに対応する送信元ＭＡＣアドレス（ＭＡＣ  ＳＡ）および送信元ＩＰアドレス（ＳＩＰ）のことをいう。
【００５１】
そして、ＶＭ切り替え部２１は、編集情報を、切り替え前のＶＭ３からの送信元ＭＡＣアドレス（ＭＡＣ  ＳＡ）および送信元ＩＰアドレス（ＳＩＰ）に書き換える（ステップＳ４２）。例えば、ＶＭ切り替え部２１は、受信されたパケットの入力ポートに対応する、ＭＡＣ／ＩＰ編集テーブル４２の編集情報を、切り替え前のＶＭ３からのＭＡＣ  ＳＡおよびＳＩＰに書き換える。加えて、ＶＭ切り替え部２１は、受信されたパケットのＭＡＣ  ＳＡおよびＳＩＰを、切り替え前のＶＭ３からのＭＡＣ  ＳＡおよびＳＩＰに書き換える。すなわち、ＶＭ切り替え部２１は、ＷＡＮが切り替え前の旧運用系のＶＭ３からパケットを受信したようにする。
【００５２】
そして、ＶＭ切り替え部２１は、受信されたパケットの宛先ＭＡＣアドレス（ＭＡＣ  ＤＡ）を用いて、転送テーブル４１から出力ポートを取得する（ステップＳ４３）。そして、ＶＭ切り替え部２１は、取得した出力ポートを用いて、アドレスが書き換えられたパケットをＷＡＮへ転送する（ステップＳ４４）。そして、ＶＭ切り替え部２１は、ＶＭ３からＷＡＮへ転送する場合のＶＭ切り替え処理を終了する。
【００５３】
［実施例１の効果］
上記実施例１によれば、仮想スイッチ２は、パケットの転送先であるＶＭ３の異常を検出する。そして、仮想スイッチ２は、ＶＭ３の切り替えが行われると、転送先のＭＡＣアドレスと切り替え前のＶＭ３のポート番号との転送テーブル４１を、該ＭＡＣアドレスと切り替え後のＶＭ３のポート番号との転送テーブル４１に書き換える。仮想スイッチ２は、書き換え後の転送テーブル４１と、切り替え後の転送先のＶＭ３のポート番号と転送先のＭＡＣアドレスと転送先のＩＰアドレスとのＭＡＣ／ＩＰ編集テーブル４２とに基づいて以下の処理を行う。すなわち、仮想スイッチ２は、一致するポート番号から、切り替え後のＶＭ３の転送先のＭＡＣアドレスと転送先のＩＰアドレスとを決定する。仮想スイッチ２は、外部のネットワークから受信したパケットのヘッダに含まれる転送先のＭＡＣアドレスと転送先のＩＰアドレスとを、決定したＭＡＣアドレスとＩＰアドレスとに書き換える。そして、仮想スイッチ２は、書き換えられたパケットを切り替え後のＶＭ３に転送する。かかる構成によれば、仮想スイッチ２は、パケットの転送先であるＶＭ３に異常がある場合に、仮想スイッチ２の内部で異常を検出し、異常があるＶＭ３を新たなＶＭ３に切り替えるので、ＶＭ３の切り替えを高速化することができる。特に、リアルタイム性が望まれる音声のパケット通信では、切り替えに伴う時間を例えば５０ミリ秒以下とすることが要求されるが、仮想スイッチ２が切り替えに伴う時間を高速化することで、音声の品質を向上させることができる。また、仮想スイッチ２は、転送テーブル４１を切り替え後のＶＭ３のポート番号に書き換えることで、次回同じ転送先を宛先とするパケットを受信した場合であっても、当該パケットをスムーズに切り替え後のＶＭ３に転送することができる。
【００５４】
また、上記実施例１によれば、仮想スイッチ２は、ＶＭ３の切り替えが行われると、以下の処理を行う。すなわち、仮想スイッチ２は、切り替え後のＶＭ３のポート番号と切り替え後の転送元のＭＡＣアドレスと切り替え後の転送元のＩＰアドレスとの第３対応関係を、切り替え後のＶＭのポート番号と切り替え前の転送元のＭＡＣアドレスと切り替え前の転送元のＩＰアドレスとの第３対応関係に書き換える。仮想スイッチ２は、書き換えた第３対応関係に基づいて、切り替え後のＶＭ３から転送されたパケットのヘッダに含まれる転送元のＭＡＣアドレスと転送元のＩＰアドレスを、書き換えたＭＡＣアドレスとＩＰアドレスとに書き換える。そして、仮想スイッチ２は、書き換えられたパケットを外部のネットワークに転送する。かかる構成によれば、仮想スイッチ２は、外部のネットワークから転送されたパケットの転送先のＶＭ３に異常があっても、戻りパケットの送信元を切り替え前のＶＭ３とすることで、外部のネットワークおよびＶＭ３の間の通信に混乱をきたさないようにできる。
【実施例２】
【００５５】
ところで、実施例１に係るサーバ１では、仮想スイッチ２が、パケットの転送先であるＶＭ３の異常を検出し、異常が検出されたＶＭ３を新たなＶＭ３に切り替える。しかしながら、サーバ１では、これに限定されず、仮想スイッチ２が、パケットの転送先であるＶＭ３の異常を、ＶＭ３に転送する複数のパケットのシーケンスのチェックに基づいて検出しても良い。
【００５６】
そこで、実施例２では、仮想スイッチ２が、パケットの転送先であるＶＭ３の異常を、ＶＭ３に転送するパケットの順序のチェックに基づいて検出する場合を説明する。
【００５７】
［実施例２に係るサーバの構成］
図１０は、実施例２に係るサーバの機能構成を示すブロック図である。なお、実施例１の図１に示すサーバ１と同一の構成については同一符号を付すことで、その重複する構成および動作の説明については省略する。実施例１と実施例２とが異なるところは、異常検出部３１を第１異常検出部３１Ａに変更した点である。
【００５８】
第１異常検出部３１Ａは、パケットをＶＭ３へ転送する際のパケットの順序と、ＶＭ３から返信されるパケットの順序とに基づいて、ＶＭ３の異常を検出する。例えば、第１異常検出部３１Ａは、パケットをＶＭ３へ転送する際のパケットの順序と、ＶＭ３から返信されるパケットの順序を比較し、順序が異なる場合に、ＶＭ３で異常が発生していると判定する。但し、順序が異なる場合であっても、ＶＭ３で意図的または偶発的にパケットが廃棄される場合がある。意図的に廃棄されるパケットの一例として、応答を要しないパケットが挙げられる。偶発的に廃棄されるパケットの一例として、ＶＭ３の故障や輻輳によるパケットロスが挙げられる。かかる場合には、第１異常検出部３１Ａは、ＶＭ３から次に返信されたパケットに１個前のパケットの廃棄情報が含まれているか否かを判定し、含まれていない場合に、ＶＭ３で異常が発生していると判定する。すなわち、第１異常検出部３１Ａは、ＶＭ３にて輻輳または故障が発生していると判定する。
【００５９】
［異常検出処理の一例］
ここで、図１１Ａおよび図１１Ｂを参照して、実施例２に係る異常検出処理の一例について説明する。図１１Ａでは、異常検出処理の正常動作について説明する。図１１Ｂでは、異常検出処理の異常検出について説明する。
【００６０】
図１１Ａ上段に示すように、第１異常検出部３１Ａは、ＶＭ３へ送信されるパケットの順序と、ＶＭ３から返信されるパケットの順序とを比較し、順序が異ならない場合には、ＶＭ３で異常が発生していないと判定する。ここでは、パケットにシーケンス番号が付与されるとする。ＶＭ３へ送信されるパケットのシーケンス番号の順序は、１，２，３，４，５である。ＶＭ３から返信されるパケットのシーケンス番号の順序は、１，２，３，４，５である。したがって、第１異常検出部３１Ａは、シーケンス番号の順序が異ならないので、ＶＭ３で異常が発生していないと判定する。
【００６１】
図１１Ａ下段に示すように、第１異常検出部３１Ａは、順序が異なる場合に、ＶＭ３から次に返信されたパケットに１個前のパケットの廃棄情報が含まれているか否かを判定し、含まれている場合には、ＶＭ３で異常が発生していないと判定する。ここでは、ＶＭ３へ送信されるパケットのシーケンス番号の順序は、１，２，３，４，５である。ＶＭ３から返信されるパケットのシーケンス番号の順序は、１，３，４，５である。すなわち、シーケンス番号が２であるパケットが抜けている。ところが、第１異常検出部３１Ａは、次のシーケンス番号３のパケットにシーケンス番号２のパケットの廃棄情報が含まれているので、ＶＭ３で異常が発生していないと判定する。
【００６２】
図１１Ｂに示すように、第１異常検出部３１Ａは、順序が異なる場合に、ＶＭ３から次に返信されたパケットに１個前のパケットの廃棄情報が含まれているか否かを判定し、含まれていない場合には、ＶＭ３で異常が発生していると判定する。ここでは、ＶＭ３へ送信されるパケットのシーケンス番号の順序は、１，２，３，４，５である。ＶＭ３から返信されるパケットのシーケンス番号の順序は、１，３，４，５である。すなわち、シーケンス番号が２であるパケットが抜けている。ところが、第１異常検出部３１Ａは、次のシーケンス番号３のパケットにシーケンス番号２のパケットの廃棄情報が含まれていないので、ＶＭ３で異常が発生していると判定する。
【００６３】
そこで、制御部２０のＶＭ切り替え部２１は、異常が発生していると判定されたＶＭ３を予備のＶＭ３に切り替える。
【００６４】
［異常検出処理のフローチャート］
次に、実施例２に係る異常検出処理のフローチャートを、図１２を参照して説明する。図１２は、実施例２に係る異常検出処理のフローチャートの一例を示す図である。なお、第１異常検出部３１Ａは、ＶＭ３へ送信されたパケットのシーケンス番号（送信シーケンス番号という）をスイッチカウンタに保持することとする。複数のパケットが連続して送信される場合には、スイッチカウンタには、送信シーケンス番号がシーケンシャルに保持される。
【００６５】
図１２に示すように、第１異常検出部３１Ａは、スイッチカウンタから送信シーケンス番号を取得する（ステップＳ５１）。第１異常検出部３１Ａは、受信されたパケットから受信シーケンス番号を取得する（ステップＳ５２）。
【００６６】
第１異常検出部３１Ａは、送信シーケンス番号と受信シーケンス番号が一致するか否かを判定する（ステップＳ５３）。送信シーケンス番号と受信シーケンス番号が一致すると判定した場合には（ステップＳ５３；Ｙｅｓ）、第１異常検出部３１Ａは、次にＶＭ３から受信されたパケットから受信シーケンス番号を取得する（ステップＳ５４）。第１異常検出部３１Ａが、ＶＭ３で異常が発生していないと判定した場合である。そして、第１異常検出部３１Ａは、スイッチカウンタから次の送信シーケンス番号を取得し（ステップＳ５５）、次の比較処理を実行すべく、ステップＳ５３に移行する。
【００６７】
一方、送信シーケンス番号と受信シーケンス番号が一致しないと判定した場合には（ステップＳ５３；Ｎｏ）、第１異常検出部３１Ａは、次に受信されたパケットから受信シーケンス番号を取得する（ステップＳ５６）。そして、第１異常検出部３１Ａは、取得した受信シーケンス番号のパケットに１個前の受信シーケンス番号のパケットの廃棄情報が含まれているか否かを判定する（ステップＳ５７）。
【００６８】
廃棄情報が含まれていると判定した場合には（ステップＳ５７；Ｙｅｓ）、第１異常検出部３１Ａは、ステップＳ５５に移行する。第１異常検出部３１Ａが、ＶＭ３で異常が発生していないと判定した場合である。
【００６９】
一方、廃棄情報が含まれていないと判定した場合には（ステップＳ５７；Ｎｏ）、第１異常検出部３１Ａは、ＶＭ切り替え部２１に、ＶＭ３の切り替え処理を実行させる（ステップＳ５８）。そして、第１異常検出部３１Ａは、異常検出処理を終了する。
【００７０】
［ＶＭ側のフローチャート］
ここで、実施例２に係るＶＭ３側のフローチャートの一例を、図１３を参照して説明する。図１３は、実施例２に係るＶＭ側のフローチャートの一例を示す図である。なお、運用系のＶＭ３が仮想スイッチ２から送信されたユーザパケットを受信するとする。
【００７１】
図１３に示すように、ＶＭ３は、ユーザパケットから送信シーケンス番号を取得する（ステップＳ６１）。ＶＭ３は、ユーザパケットを廃棄するか否かを判定する（ステップＳ６２）。ユーザパケットを廃棄しないと判定した場合には（ステップＳ６２；Ｎｏ）、ＶＭ３は、ステップＳ６４に移行する。
【００７２】
一方、ユーザパケットを廃棄すると判定した場合には（ステップＳ６２；Ｙｅｓ）、ＶＭ３は、次のシーケンス番号のユーザパケットに廃棄情報を設定する（ステップＳ６３）。そして、ＶＭ３は、ステップＳ６４に移行する。
【００７３】
ステップＳ６４において、ＶＭ３は、ユーザパケットをＶＮＦ４へ送信する（ステップＳ６４）。
【００７４】
［実施例２の効果］
上記実施例２によれば、仮想スイッチ２は、パケットをＶＭ３へ転送する際のパケットの順序と、ＶＭ３から返信されるパケットの順序とに基づいて、ＶＭ３の異常を検出する。そして、仮想スイッチ２は、異常が検出されたＶＭ３を新たなＶＭ３に切り替える。かかる構成によれば、仮想スイッチ２は、パケットの送信および受信の順序を用いて、ＶＭ３の異常を検出し、異常が検出されたＶＭ３を新たなＶＭ３に切り替えることで、通信の品質を向上させることができる。
【実施例３】
【００７５】
ところで、実施例１に係るサーバ１では、仮想スイッチ２が、パケットの転送先であるＶＭ３の異常を検出し、異常が検出されたＶＭ３を新たなＶＭ３に切り替える。実施例２に係るサーバ１では、仮想スイッチ２が、パケットの転送先であるＶＭ３の異常を、ＶＭ３に転送する複数のパケットのシーケンスのチェックにより検出する。しかしながら、サーバ１では、これに限定されず、仮想スイッチ２が、入力されたパケットをキューに挿入し、キューから取り出されないパケットの数により、ＶＭ３の異常を検出しても良い。
【００７６】
そこで、実施例３では、仮想スイッチ２が、入力されたパケットをキューに挿入し、キューから取り出されないパケットの数により、ＶＭ３の異常を検出する場合を説明する。
【００７７】
［実施例３に係るサーバの構成］
図１４は、実施例３に係るサーバの機能構成を示すブロック図である。なお、実施例２の図１０に示すサーバ１と同一の構成については同一符号を付すことで、その重複する構成および動作の説明については省略する。実施例２と実施例３とが異なるところは、第２異常検出部３１Ｂを追加した点である。
【００７８】
第２異常検出部３１Ｂは、入力されたパケットをキューに挿入し、キューから取り出されないパケットの数に基づいて、ＶＭ３の異常を検出する。例えば、第２異常検出部３１Ｂは、入力されたパケットを順次キューに挿入する。第２異常検出部３１Ｂは、キューから取り出されないパケットの数が第１閾値以上である場合に、ＶＭ３で異常が発生していると判定する。すなわち、第２異常検出部３１Ｂは、ＶＭ３にて輻輳または故障が発生していると判定する。なお、第１閾値は、あらかじめ実験等で調べられ、その情報は記憶部４０に記憶される。
【００７９】
［異常検出処理の一例］
ここで、図１５を参照して、実施例３に係る異常検出処理の一例について説明する。図１５上段では、異常検出処理の正常動作について説明する。図１５下段では、異常検出処理の異常検出について説明する。
【００８０】
図１５上段に示すように、第２異常検出部３１Ｂは、入力されたパケットをキューに挿入し、キューから取り出されないパケットの数が第１閾値未満である場合に、ＶＭ３で異常が発生していないと判定する。ここでは、第１閾値が４であるとする。キューに挿入されたパケットは、Ａ，Ｂ，Ｃである。したがって、第２異常検出部３１Ｂは、キューから取り出されないパケットの数が３であり、当該数が第１閾値の４より小さいので、ＶＭ３で異常が発生していないと判定する。
【００８１】
図１５下段に示すように、第２異常検出部３１Ｂは、入力されたパケットをキューに挿入し、キューから取り出されないパケットの数が第１閾値以上である場合に、ＶＭ３で異常が発生していると判定する。ここでは、第１閾値が４であるとする。キューに挿入されたパケットは、Ａ，Ｂ，Ｃ，Ｄである。したがって、第２異常検出部３１Ｂは、キューから取り出されないパケットの数が４であり、当該数が第１閾値の４以上であるので、ＶＭ３で異常が発生していると判定する。
【００８２】
そこで、制御部２０のＶＭ切り替え部２１は、異常が発生していると判定されたＶＭ３を予備のＶＭ３に切り替える。
【００８３】
［異常検出処理のフローチャート］
次に、実施例３に係る異常検出処理のフローチャートを、図１６を参照して説明する。図１６は、実施例３に係る異常検出処理のフローチャートの一例を示す図である。なお、第２異常検出部３１Ｂは、入力されたパケットを順次キューに挿入することとする。
【００８４】
図１６に示すように、第２異常検出部３１Ｂは、キューからキュー長を取得する（ステップＳ７１）。例えば、第２異常検出部３１Ｂは、キューから取り出されないパケットの数をキュー長として取得する。
【００８５】
そして、第２異常検出部３１Ｂは、キュー長が第１閾値以上であるか否かを判定する（ステップＳ７２）。キュー長が第１閾値未満であると判定した場合には（ステップＳ７２；Ｎｏ）、第２異常検出部３１Ｂは、ＶＭ３へパケットを送信する（ステップＳ７３）。そして、第２異常検出部３１Ｂは、異常検出処理を終了する。
【００８６】
一方、キュー長が第１閾値以上であると判定した場合には（ステップＳ７２；Ｙｅｓ）、第２異常検出部３１Ｂは、ＶＭ切り替え部２１に、ＶＭ３の切り替え処理を実行させる（ステップＳ７４）。そして、第２異常検出部３１Ｂは、異常検出処理を終了する。
【００８７】
［実施例３の効果］
上記実施例３によれば、仮想スイッチ２は、入力されたパケットをキューに挿入し、キューから取り出されないパケットの数に基づいて、ＶＭ３の異常を検出する。そして、仮想スイッチ２は、異常が検出されたＶＭ３を新たなＶＭ３に切り替える。かかる構成によれば、仮想スイッチ２は、キューから取り出されないパケットの数を用いて、ＶＭ３の異常を検出し、異常が検出されたＶＭ３を新たなＶＭ３に切り替えることで、通信の品質を向上させることができる。
【実施例４】
【００８８】
ところで、実施例１に係るサーバ１では、仮想スイッチ２が、パケットの転送先であるＶＭ３の異常を検出し、異常が検出されたＶＭ３を新たなＶＭ３に切り替える。実施例２に係るサーバ１では、仮想スイッチ２が、パケットの転送先であるＶＭ３の異常を、ＶＭ３に転送する複数のパケットのシーケンスのチェックにより検出する。実施例３に係るサーバ１では、仮想スイッチ２が、入力されたパケットをキューに挿入し、キューから取り出されないパケットの数により、ＶＭ３の異常を検出する。しかしながら、サーバ１では、これに限定されず、仮想スイッチ２が、ＶＭ３によって廃棄されたパケットの数により、ＶＭ３の異常を検出しても良い。
【００８９】
そこで、実施例４では、仮想スイッチ２が、ＶＭ３によって廃棄されたパケットの数により、ＶＭ３の異常を検出する場合を説明する。
【００９０】
［実施例４に係るサーバの構成］
図１７は、実施例４に係るサーバの機能構成を示すブロック図である。なお、実施例３の図１４に示すサーバ１と同一の構成については同一符号を付すことで、その重複する構成および動作の説明については省略する。実施例３と実施例４とが異なるところは、第３異常検出部３１Ｃを追加した点である。
【００９１】
第３異常検出部３１Ｃは、ＶＭ３によって廃棄されたパケットの廃棄数に基づいて、ＶＭ３の異常を検出する。例えば、第３異常検出部３１Ｃは、ＶＭ３によって廃棄されたパケットの廃棄数が第２閾値以上である場合に、ＶＭ３で異常が発生していると判定する。すなわち、第３異常検出部３１Ｃは、ＶＭ３にて輻輳または故障が発生していると判定する。なお、廃棄されたパケットの廃棄数は、例えば、第３異常検出部３１Ｃから転送される監視パケットの応答の監視パケットに設定される。なお、第２閾値は、あらかじめ実験等で調べられ、その情報は記憶部４０に記憶される。
【００９２】
［異常検出処理の一例］
ここで、図１８を参照して、実施例４に係る異常検出処理の一例について説明する。図１８上段では、異常検出処理の正常動作について説明する。図１８下段では、異常検出処理の異常検出について説明する。
【００９３】
図１８上段に示すように、第３異常検出部３１Ｃは、ＶＭ３によって廃棄されたパケットの廃棄数が第２閾値未満である場合に、ＶＭ３で異常が発生していないと判定する。ここでは、第２閾値が０より大きい所定値であるとする。ＶＭ３によって廃棄されたパケットの廃棄数が０である場合には、第３異常検出部３１Ｃは、ＶＭ３によって廃棄されたパケットの廃棄数が第２閾値未満であるので、ＶＭ３で異常が発生していないと判定する。
【００９４】
図１８下段に示すように、第３異常検出部３１Ｃは、ＶＭ３によって廃棄されたパケットの廃棄数が第２閾値以上である場合に、ＶＭ３で異常が発生していると判定する。ここでは、ＶＭ３によって廃棄されたパケットの廃棄数が廃棄情報として監視パケットに設定されているとする。第３異常検出部３１Ｃは、廃棄数が第２閾値以上である場合には、ＶＭ３で異常が発生していると判定する。
【００９５】
そこで、制御部２０のＶＭ切り替え部２１は、異常が発生していると判定されたＶＭ３を予備のＶＭ３に切り替える。
【００９６】
［異常検出処理のフローチャート］
次に、実施例４に係る異常検出処理のフローチャートを、図１９を参照して説明する。図１９は、実施例４に係る異常検出処理のフローチャートの一例を示す図である。なお、第３異常検出部３１Ｃは、定期的にまたは不定期的に、監視パケットをＶＭ３に送信し、ＶＭ３から応答の監視パケットを受信する。
【００９７】
図１９に示すように、第３異常検出部３１Ｃは、応答の監視パケットから廃棄数を取得する（ステップＳ８１）。第３異常検出部３１Ｃは、廃棄数が第２閾値以上であるか否かを判定する（ステップＳ８２）。
【００９８】
廃棄数が第２閾値未満であると判定した場合には（ステップＳ８２；Ｎｏ）、第３異常検出部３１Ｃは、ＶＭ３へパケットを送信する（ステップＳ８３）。そして、第３異常検出部３１Ｃは、異常検出処理を終了する。
【００９９】
一方、廃棄数が第２閾値以上であると判定した場合には（ステップＳ８２；Ｙｅｓ）、第３異常検出部３１Ｃは、ＶＭ切り替え部２１に、ＶＭ３の切り替え処理を実行させる（ステップＳ８４）。そして、第３異常検出部３１Ｃは、異常検出処理を終了する。
【０１００】
［ＶＭ側のフローチャート］
ここで、実施例４に係るＶＭ３側のフローチャートの一例を、図２０を参照して説明する。図２０は、実施例４に係るＶＭ側のフローチャートの一例を示す図である。
【０１０１】
図２０に示すように、ＶＭ３は、受信したパケットが監視パケットであるか否かを判定する（ステップＳ９１）。受信したパケットが監視パケットでないと判定した場合には（ステップＳ９１；Ｎｏ）、ＶＭ３は、受信したパケットをＶＮＦ４へ送信する（ステップＳ９２）。
【０１０２】
一方、受信したパケットが監視パケットであると判定した場合には（ステップＳ９１；Ｙｅｓ）、ＶＭ３は、例えば統計情報から廃棄数を取得し（ステップＳ９３）、応答の監視パケットに廃棄数を設定する（ステップＳ９４）。そして、ＶＭ３は、応答の監視パケットを仮想スイッチ２に送信する（ステップＳ９５）。
【０１０３】
［実施例４の効果］
上記実施例４によれば、仮想スイッチ２は、ＶＭ３によって廃棄されたパケットの数に基づいて、ＶＭ３の異常を検出する。そして、仮想スイッチ２は、異常が検出されたＶＭ３を新たなＶＭ３に切り替える。かかる構成によれば、仮想スイッチ２は、ＶＭ３によって廃棄されたパケットの数を用いて、ＶＭ３の異常を検出し、異常が検出されたＶＭ３を新たなＶＭ３に切り替えることで、通信の品質を向上させることができる。
【実施例５】
【０１０４】
ところで、実施例１に係るサーバ１では、仮想スイッチ２が、パケットの転送先であるＶＭ３の異常を検出し、異常が検出されたＶＭ３を新たなＶＭ３に切り替える。実施例２に係るサーバ１では、仮想スイッチ２が、パケットの転送先であるＶＭ３の異常を、ＶＭ３に転送する複数のパケットのシーケンスのチェックにより検出する。実施例３に係るサーバ１では、仮想スイッチ２が、入力されたパケットをキューに挿入し、キューから取り出されないパケットの数により、ＶＭ３の異常を検出する。実施例４に係るサーバ１では、仮想スイッチ２が、ＶＭ３によって廃棄されたパケットの数により、ＶＭ３の異常を検出する。しかしながら、サーバ１では、これに限定されず、仮想スイッチ２が、ＶＭ３に転送したパケットの数と、ＶＭ３から返信されたパケットの数と、ＶＭ３によって意図的に廃棄されたパケットの数とに基づいて、ＶＭ３の異常を検出しても良い。
【０１０５】
そこで、実施例５では、仮想スイッチ２が、ＶＭ３に転送したパケットの数と、ＶＭ３から返信されたパケットの数と、ＶＭ３によって意図的に廃棄されたパケットの数とに基づいて、ＶＭ３の異常を検出する場合を説明する。
【０１０６】
［実施例５に係るサーバの構成］
図２１は、実施例５に係るサーバの機能構成を示すブロック図である。なお、実施例４の図１７に示すサーバ１と同一の構成については同一符号を付すことで、その重複する構成および動作の説明については省略する。実施例４と実施例５とが異なるところは、第４異常検出部３１Ｄを追加した点である。
【０１０７】
第４異常検出部３１Ｄは、ＶＭ３に転送したパケットの数と、ＶＭ３から返信されたパケットの数と、ＶＭ３によって意図的に廃棄されたパケットの数とに基づいて、ＶＭ３の異常を検出する。例えば、第４異常検出部３１Ｄは、ＶＭ３に転送したパケットの数をスイッチカウンタから取得する。第４異常検出部３１Ｄは、ＶＭ３から返信されたパケットの数とＶＭ３によって意図的に廃棄されたパケットの廃棄数とを加算して得られた応答パケット数を取得する。そして、第４異常検出部３１Ｄは、転送パケット数から応答パケット数を引いて得られた数が第３閾値より大きい場合には、ＶＭ３で異常が発生していると判定する。すなわち、第４異常検出部３１Ｄは、応答パケット数が転送パケット数より小さくなればなる程、ＶＭ３にて輻輳または故障が発生していると判定する。なお、意図的に廃棄されたパケットの廃棄数は、例えば、第４異常検出部３１Ｄから転送される監視パケットの応答の監視パケットに設定される。なお、第３閾値は、あらかじめ実験等で調べられ、その情報は記憶部４０に記憶される。
【０１０８】
［異常検出処理の一例］
ここで、図２２を参照して、実施例５に係る異常検出処理の一例について説明する。図２２上段では、異常検出処理の正常動作について説明する。図２２下段では、異常検出処理の異常検出について説明する。
【０１０９】
図２２上段に示すように、第４異常検出部３１Ｄは、ＶＭ３に転送したパケットの数（Ａ）から応答パケット数（Ｂ＋Ｃ）を引いて得られた数が第３閾値以下である場合には、ＶＭ３で異常が発生していないと判定する。応答パケット数は、ＶＭ３から返信されたパケットの数（Ｂ）とＶＭ３によって意図的に廃棄されたパケットの廃棄数（Ｃ）とを加算して得られた数である。ここでは、第３閾値が０より大きい所定値であるとする。ＶＭ３に転送したパケットの数（Ａ）が、応答パケット数（Ｂ＋Ｃ）と一致するとする。すると、第４異常検出部３１Ｄは、ＶＭ３に転送したパケットの数（Ａ）から応答パケット数（Ｂ＋Ｃ）を引いて得られた数が０であり、当該数は第３閾値以下であるので、ＶＭ３で異常が発生していないと判定する。
【０１１０】
図２２下段に示すように、第４異常検出部３１Ｄは、ＶＭ３に転送したパケットの数（Ａ）から応答パケット数（Ｂ＋Ｃ）を引いて得られた数が第３閾値より大きい場合には、ＶＭ３で異常が発生していると判定する。ここでは、ＶＭ３に転送したパケットの数（Ａ）が、応答パケット数（Ｂ＋Ｃ）と一致しないとする。すると、第４異常検出部３１Ｄは、ＶＭ３に転送したパケットの数（Ａ）から応答パケット数（Ｂ＋Ｃ）を引いて得られた数が第３閾値より大きい場合には、ＶＭ３で異常が発生していると判定する。
【０１１１】
そこで、制御部２０のＶＭ切り替え部２１は、異常が発生していると判定されたＶＭ３を予備のＶＭ３に切り替える。
【０１１２】
［異常検出処理のフローチャート］
次に、実施例５に係る異常検出処理のフローチャートを、図２３を参照して説明する。図２３は、実施例５に係る異常検出処理のフローチャートの一例を示す図である。なお、第４異常検出部３１Ｄは、定期的にまたは不定期的に、監視パケットをＶＭ３に送信し、ＶＭ３から応答の監視パケットを受信する。
【０１１３】
図２３に示すように、第４異常検出部３１Ｄは、ＶＭ３に転送したパケットの数を示す送信数（Ａ）をスイッチカウンタから取得する（ステップＳ１０１）。第４異常検出部３１Ｄは、ＶＭ３から返信されたパケットの数を示す受信数（Ｂ）をスイッチカウンタから取得する（ステップＳ１０２）。
【０１１４】
第４異常検出部３１Ｄは、応答の監視パケットから、意図的に廃棄されたパケットの廃棄数（Ｃ）を取得する（ステップＳ１０３）。
【０１１５】
そして、第４異常検出部３１Ｄは、Ａ−（Ｂ＋Ｃ）が第３閾値より大きいか否かを判定する（ステップＳ１０４）。すなわち、第４異常検出部３１Ｄは、送信数（Ａ）から応答パケット数（Ｂ＋Ｃ）を引いて得られた数が第３閾値より大きいか否かを判定する。Ａ−（Ｂ＋Ｃ）が第３閾値以下であると判定した場合には（ステップＳ１０４；Ｎｏ）、第４異常検出部３１Ｄは、異常検出処理を終了する。
【０１１６】
一方、Ａ−（Ｂ＋Ｃ）が第３閾値より大きいと判定した場合には（ステップＳ１０４；Ｙｅｓ）、第４異常検出部３１Ｄは、ＶＭ切り替え部２１に、ＶＭ３の切り替え処理を実行させる（ステップＳ１０５）。そして、第４異常検出部３１Ｄは、異常検出処理を終了する。
【０１１７】
［ＶＭ側のフローチャート］
ここで、実施例５に係るＶＭ３側のフローチャートの一例を、図２４を参照して説明する。図２４は、実施例５に係るＶＭ側のフローチャートの一例を示す図である。
【０１１８】
図２４に示すように、ＶＭ３は、受信したパケットが監視パケットであるか否かを判定する（ステップＳ１１１）。受信したパケットが監視パケットでないと判定した場合には（ステップＳ１１１；Ｎｏ）、ＶＭ３は、受信したパケットをＶＮＦ４へ送信する（ステップＳ１１２）。
【０１１９】
一方、受信したパケットが監視パケットであると判定した場合には（ステップＳ１１１；Ｙｅｓ）、ＶＭ３は、例えば統計情報から意図的に廃棄されたパケットの廃棄数を取得する（ステップＳ１１３）。そして、ＶＭ３は、応答の監視パケットに廃棄数を設定する（ステップＳ１１４）。そして、ＶＭ３は、応答の監視パケットを仮想スイッチ２に送信する（ステップＳ１１５）。
【０１２０】
［実施例５の効果］
上記実施例５によれば、仮想スイッチ２は、ＶＭ３に転送したパケットの数と、ＶＭ３から返信されたパケットの数と、ＶＭ３によって廃棄されたパケットの数とに基づいて、ＶＭ３の異常を検出する。そして、仮想スイッチ２は、異常が検出されたＶＭ３を新たなＶＭ３に切り替える。かかる構成によれば、仮想スイッチ２は、ＶＭ３に転送したパケットの数と、ＶＭ３から返信されたパケットの数と、ＶＭ３によって廃棄されたパケットの数とを用いて、ＶＭ３の異常を検出し、異常が検出されたＶＭ３を新たなＶＭ３に切り替えることで、通信の品質を向上させることができる。
【実施例６】
【０１２１】
ところで、実施例１に係るサーバ１では、仮想スイッチ２が、パケットの転送先であるＶＭ３の異常を検出し、異常が検出されたＶＭ３を新たなＶＭ３に切り替える。実施例２に係るサーバ１では、仮想スイッチ２が、パケットの転送先であるＶＭ３の異常を、ＶＭ３に転送する複数のパケットのシーケンスのチェックにより検出する。実施例３に係るサーバ１では、仮想スイッチ２が、入力されたパケットをキューに挿入し、キューから取り出されないパケットの数により、ＶＭ３の異常を検出する。実施例４に係るサーバ１では、仮想スイッチ２が、ＶＭ３によって廃棄されたパケットの数により、ＶＭ３の異常を検出する。実施例５に係るサーバ１では、仮想スイッチ２が、ＶＭ３に転送したパケットの数と、ＶＭ３から返信されたパケットの数と、ＶＭ３によって意図的に廃棄されたパケットの数とに基づいて、ＶＭ３の異常を検出する。しかしながら、サーバ１では、これに限定されず、仮想スイッチ２が、ＶＭ３の状態を示すＶＭ統計情報に基づいて、ＶＭ３の異常を検出しても良い。ここでいうＶＭ統計情報とは、一例として、ＣＰＵ使用率や温度が挙げられるが、これに限定されない。
【０１２２】
そこで、実施例６では、仮想スイッチ２が、ＶＭ３の状態を示すＶＭ統計情報に基づいて、ＶＭ３の異常を検出する場合を説明する。
【０１２３】
［実施例６に係るサーバの構成］
図２５は、実施例６に係るサーバの機能構成を示すブロック図である。なお、実施例５の図２１に示すサーバ１と同一の構成については同一符号を付すことで、その重複する構成および動作の説明については省略する。実施例５と実施例６とが異なるところは、第５異常検出部３１Ｅを追加した点である。
【０１２４】
第５異常検出部３１Ｅは、ＶＭ３の状態を示すＶＭ統計情報に基づいて、ＶＭ３の異常を検出する。例えば、第５異常検出部３１Ｅは、ＶＭ統計情報が第４閾値より大きい場合には、ＶＭ３で異常が発生していると判定する。なお、第４閾値は、ＶＭ統計情報の内容によって異なり、あらかじめ実験等で調べられ、その情報は記憶部４０に記憶される。
【０１２５】
［異常検出処理の一例］
ここで、図２６を参照して、実施例６に係る異常検出処理の一例について説明する。図２６上段では、異常検出処理の正常動作について説明する。図２６下段では、異常検出処理の異常検出について説明する。なお、ＶＭ統計情報が例えばＣＰＵ使用率であるとし、第４閾値が例えば９０％であるとする。
【０１２６】
図２６上段に示すように、第５異常検出部３１Ｅは、ＶＭ３から送信されたＶＭ統計情報が第４閾値以下である場合には、ＶＭ３で異常が発生していないと判定する。ここでは、ＶＭ３から送信されたＶＭ統計情報が５０％であるとする。すると、第５異常検出部３１Ｅは、ＶＭ３から送信されたＶＭ統計情報が第４閾値（９０％）以下であるので、ＶＭ３で異常が発生していないと判定する。
【０１２７】
図２６下段に示すように、第５異常検出部３１Ｅは、ＶＭ３から送信されたＶＭ統計情報が第４閾値より大きい場合には、ＶＭ３で異常が発生していると判定する。ここでは、ＶＭ３から送信されたＶＭ統計情報が９５％であるとする。すると、第５異常検出部３１Ｅは、ＶＭ３から送信されたＶＭ統計情報が第４閾値（９０％）より大きいので、ＶＭ３で異常が発生していると判定する。
【０１２８】
そこで、制御部２０のＶＭ切り替え部２１は、異常が発生していると判定されたＶＭ３を予備のＶＭ３に切り替える。
【０１２９】
［異常検出処理のフローチャート］
次に、実施例６に係る異常検出処理のフローチャートを、図２７を参照して説明する。図２７は、実施例６に係る異常検出処理のフローチャートの一例を示す図である。なお、第５異常検出部３１Ｅは、定期的にまたは不定期的に、監視パケットをＶＭ３に送信し、ＶＭ３から応答の監視パケットを受信する。
【０１３０】
図２７に示すように、第５異常検出部３１Ｅは、応答の監視パケットから、パラメータ（ＶＭ統計情報）を取得する（ステップＳ１２１）。
【０１３１】
そして、第５異常検出部３１Ｅは、パラメータが第４閾値より大きいか否かを判定する（ステップＳ１２２）。パラメータが第４閾値以下であると判定した場合には（ステップＳ１２２；Ｎｏ）、第５異常検出部３１Ｅは、異常検出処理を終了する。
【０１３２】
一方、パラメータが第４閾値より大きいと判定した場合には（ステップＳ１２２；Ｙｅｓ）、第５異常検出部３１Ｅは、ＶＭ切り替え部２１に、ＶＭ３の切り替え処理を実行させる（ステップＳ１２３）。そして、第５異常検出部３１Ｅは、異常検出処理を終了する。
【０１３３】
［ＶＭ側のフローチャート］
ここで、実施例６に係るＶＭ３側のフローチャートの一例を、図２８を参照して説明する。図２８は、実施例６に係るＶＭ側のフローチャートの一例を示す図である。
【０１３４】
図２８に示すように、ＶＭ３は、受信したパケットが監視パケットであるか否かを判定する（ステップＳ１３１）。受信したパケットが監視パケットでないと判定した場合には（ステップＳ１３１；Ｎｏ）、ＶＭ３は、受信したパケットをＶＮＦ４へ送信する（ステップＳ１３２）。
【０１３５】
一方、受信したパケットが監視パケットであると判定した場合には（ステップＳ１３１；Ｙｅｓ）、ＶＭ３は、例えば統計情報からパラメータ（ＶＭ統計情報）を取得する（ステップＳ１３３）。そして、ＶＭ３は、応答の監視パケットにパラメータを設定する（ステップＳ１３４）。そして、ＶＭ３は、応答の監視パケットを仮想スイッチ２に送信する（ステップＳ１３５）。
【０１３６】
［実施例６の効果］
上記実施例６によれば、仮想スイッチ２は、ＶＭ３の状態を示すＶＭ統計情報に基づいて、ＶＭ３の異常を検出する。そして、仮想スイッチ２は、異常が検出されたＶＭ３を新たなＶＭ３に切り替える。かかる構成によれば、仮想スイッチ２は、ＶＭ３の状態を示すＶＭ統計情報を用いて、ＶＭ３の異常を検出し、異常が検出されたＶＭ３を新たなＶＭ３に切り替えることで、通信の品質を向上させることができる。
【実施例７】
【０１３７】
ところで、実施例１に係るサーバ１では、仮想スイッチ２が、パケットの転送先であるＶＭ３の異常を検出し、異常が検出されたＶＭ３を新たなＶＭ３に切り替える。実施例２に係るサーバ１では、仮想スイッチ２が、パケットの転送先であるＶＭ３の異常を、ＶＭ３に転送する複数のパケットのシーケンスのチェックにより検出する。実施例３に係るサーバ１では、仮想スイッチ２が、入力されたパケットをキューに挿入し、キューから取り出されないパケットの数により、ＶＭ３の異常を検出する。実施例４に係るサーバ１では、仮想スイッチ２が、ＶＭ３によって廃棄されたパケットの数により、ＶＭ３の異常を検出する。実施例５に係るサーバ１では、仮想スイッチ２が、ＶＭ３に転送したパケットの数と、ＶＭ３から返信されたパケットの数と、ＶＭ３によって意図的に廃棄されたパケットの数とに基づいて、ＶＭ３の異常を検出する。実施例６に係るサーバ１では、仮想スイッチ２が、ＶＭ３の状態を示すＶＭ統計情報に基づいて、ＶＭ３の異常を検出する。しかしながら、サーバ１では、これに限定されず、仮想スイッチ２が、パケットをＶＭ３へ転送する際の時刻と、パケットに対する応答が到達する際の時刻との時刻差に基づいて、ＶＭ３の異常を検出しても良い。
【０１３８】
そこで、実施例７では、仮想スイッチ２が、パケットをＶＭ３へ転送する際の時刻と、パケットに対する応答が到達する際の時刻との時刻差に基づいて、ＶＭ３の異常を検出する場合を説明する。
【０１３９】
［実施例７に係るサーバの構成］
図２９は、実施例７に係るサーバの機能構成を示すブロック図である。なお、実施例６の図２５に示すサーバ１と同一の構成については同一符号を付すことで、その重複する構成および動作の説明については省略する。実施例６と実施例７とが異なるところは、第６異常検出部３１Ｆを追加した点である。
【０１４０】
第６異常検出部３１Ｆは、パケットをＶＭ３へ転送する際の時刻と、パケットに対する応答が到達する際の時刻との時刻差に基づいて、ＶＭ３の異常を検出する。例えば、第６異常検出部３１Ｆは、パケットをＶＭ３へ転送し、転送する際の時刻を保持する。第６異常検出部３１Ｆは、ＶＭ３へ転送したパケットに対する応答のパケットが到達する際の時刻を保持する。第６異常検出部３１Ｆは、パケットをＶＭ３へ転送する際の時刻とＶＭ３から応答が到達する際の時刻との時間差が第５閾値より大きい場合には、ＶＭ３で異常が発生していると判定する。なお、第５閾値は、あらかじめ実験等で調べられ、その情報は記憶部４０に記憶される。
【０１４１】
［異常検出処理の一例］
ここで、図３０を参照して、実施例７に係る異常検出処理の一例について説明する。図３０上段では、異常検出処理の正常動作について説明する。図３０下段では、異常検出処理の異常検出について説明する。
【０１４２】
図３０上段に示すように、第６異常検出部３１Ｆは、パケットをＶＭ３へ転送する際の時刻とＶＭ３から応答が到達する際の時刻との時間差が第５閾値以下である場合には、ＶＭ３で異常が発生していないと判定する。ここでは、パケットをＶＭ３へ転送する際の時刻が時刻ｔであり、ＶＭ３から到達する際の時刻がｔ＋Δｔであるとする。すると、第６異常検出部３１Ｆは、時間差Δｔが第５閾値以下であれば、ＶＭ３で異常が発生していないと判定する。
【０１４３】
図３０下段に示すように、第６異常検出部３１Ｆは、パケットをＶＭ３へ転送する際の時刻とＶＭ３から応答が到達する際の時刻との時間差が第５閾値より大きい場合には、ＶＭ３で異常が発生していると判定する。ここでは、パケットをＶＭ３へ転送する際の時刻が時刻ｔであり、ＶＭ３から応答が到達する際の時刻がｔ＋Δｔであるとする。すると、第６異常検出部３１Ｆは、時間差Δｔが第５閾値より大きければ、ＶＭ３で異常が発生していると判定する。
【０１４４】
そこで、制御部２０のＶＭ切り替え部２１は、異常が発生していると判定されたＶＭ３を予備のＶＭ３に切り替える。
【０１４５】
［異常検出処理のフローチャート］
次に、実施例７に係る異常検出処理のフローチャートを、図３１を参照して説明する。図３１は、実施例７に係る異常検出処理のフローチャートの一例を示す図である。
【０１４６】
図３１に示すように、第６異常検出部３１Ｆは、送信時のタイムスタンプ（ｔ）を監視パケットに設定し、ＶＭ３へ送信する（ステップＳ１４１）。
【０１４７】
第６異常検出部３１Ｆは、ＶＭ３へ送信した監視パケットの応答である監視パケットを受信したか否かを判定する（ステップＳ１４２）。監視パケットを受信していないと判定した場合には（ステップＳ１４２；Ｎｏ）、第６異常検出部３１Ｆは、監視パケットを受信するまで、判定処理を繰り返す。
【０１４８】
一方、監視パケットを受信したと判定した場合には（ステップＳ１４２；Ｙｅｓ）、第６異常検出部３１Ｆは、受信した監視パケットから送信時のタイムスタンプ（ｔ）を取得する（ステップＳ１４３）。第６異常検出部３１Ｆは、監視パケットを受信した現在の時刻（ｔ＋Δｔ）を取得する（ステップＳ１４４）。
【０１４９】
第６異常検出部３１Ｆは、Δｔの期間が第５閾値より大きいか否かを判定する（ステップＳ１４５）。Δｔの期間が第５閾値以下であると判定した場合には（ステップＳ１４５；Ｎｏ）、第６異常検出部３１Ｆは、異常検出処理を終了する。
【０１５０】
一方、Δｔの期間が第５閾値より大きいと判定した場合には（ステップＳ１４５；Ｙｅｓ）、第６異常検出部３１Ｆは、ＶＭ切り替え部２１に、ＶＭ３の切り替え処理を実行させる（ステップＳ１４６）。そして、第６異常検出部３１Ｆは、異常検出処理を終了する。
【０１５１】
［ＶＭ側のフローチャート］
ここで、実施例７に係るＶＭ３側のフローチャートの一例を、図３２を参照して説明する。図３２は、実施例７に係るＶＭ側のフローチャートの一例を示す図である。
【０１５２】
図３２に示すように、ＶＭ３は、受信したパケットが監視パケットであるか否かを判定する（ステップＳ１５１）。受信したパケットが監視パケットでないと判定した場合には（ステップＳ１５１；Ｎｏ）、ＶＭ３は、受信したパケットをＶＮＦ４へ送信する（ステップＳ１５２）。
【０１５３】
一方、受信したパケットが監視パケットであると判定した場合には（ステップＳ１５１；Ｙｅｓ）、ＶＭ３は、応答の監視パケットを仮想スイッチ２に送信する（ステップＳ１５３）。
【０１５４】
［実施例７の効果］
上記実施例７によれば、仮想スイッチ２は、パケットをＶＭ３へ転送する際の時刻と、パケットに対する応答が到達する際の時刻との時刻差に基づいて、ＶＭ３の異常を検出する。そして、仮想スイッチ２は、異常が検出されたＶＭ３を新たなＶＭ３に切り替える。かかる構成によれば、仮想スイッチ２は、パケットをＶＭ３へ転送する際の時刻と、パケットに対する応答が到達する際の時刻との時刻差を用いて、ＶＭ３の異常を検出し、異常が検出されたＶＭ３を新たなＶＭ３に切り替えることで、通信の品質を向上させることができる。
【０１５５】
［その他］
なお、実施例２〜実施例７では、監視部３０が、それぞれの単独の手法でＶＭ３の異常を検出する異常検出処理を実行すると説明した。すなわち、実施例２では、監視部３０が、パケットのシーケンスのチェックによりＶＭ３の異常を検出する（第１異常検出手法）。実施例３では、監視部３０が、パケットのキュー長のチェックによりＶＭ３の異常を検出する（第２異常検出手法）。実施例４では、監視部３０が、ＶＭ３内のパケット廃棄情報のチェックによりＶＭ３の異常を検出する（第３異常検出手法）。実施例５では、監視部３０が、ＶＭ３に対する送信／受信のパケット数の差分によりＶＭ３の異常を検出する（第４異常検出手法）。実施例６では、監視部３０が、ＶＭ統計情報のチェックによりＶＭ３の異常を検出する（第５異常検出手法）。実施例７では、監視部３０が、ＶＭ３に対するパケットの送信／受信のタイムスタンプを利用してＶＭ３の異常を検出する（第６異常検出手法）。しかしながら、監視部３０は、これに限定されず、それぞれの手法を組み合わせてＶＭ３の異常を検出しても良い。例えば、監視部３０は、第１異常検出手法と第６異常検出手法とを組み合わせてＶＭ３の異常を検出しても良い。これにより、監視部３０は、ＶＭ３の異常検出精度を向上させることができる。
【０１５６】
また、図示した装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、装置の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、ＶＭ切り替え部２１をパケットがＷＡＮからＶＭ３に転送される場合の第１ＶＭ切り替え部と、パケットがＶＭ３からＷＡＮに転送される場合の第２ＶＭ切り替え部とに分散しても良い。また、記憶部４０をサーバ１の外部装置としてネットワーク経由で接続するようにしても良い。
【０１５７】
また、上記実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーション等のコンピュータで実行することによって実現することができる。そこで、以下では、図１に示したサーバ１と同様の機能を実現するＶＭ切り替えプログラムを実行するコンピュータの一例を説明する。図３３は、ＶＭ切り替えプログラムを実行するコンピュータの一例を示す図である。
【０１５８】
図３３に示すように、コンピュータ２００は、各種演算処理を実行するＣＰＵ２０３と、ユーザからのデータの入力を受け付ける入力装置２１５と、表示装置２０９を制御する表示制御部２０７とを有する。また、コンピュータ２００は、記憶媒体からプログラム等を読取るドライブ装置２１３と、ネットワークを介して他のコンピュータとの間でデータの授受を行う通信制御部２１７とを有する。また、コンピュータ２００は、各種情報を一時記憶するメモリ２０１と、ＨＤＤ２０５を有する。そして、メモリ２０１、ＣＰＵ２０３、ＨＤＤ２０５、表示制御部２０７、ドライブ装置２１３、入力装置２１５、通信制御部２１７は、バス２１９で接続されている。
【０１５９】
ドライブ装置２１３は、例えばリムーバブルディスク２１１用の装置である。ＨＤＤ２０５は、ＶＭ切り替えプログラム２０５ａおよびＶＭ切り替え関連情報２０５ｂを記憶する。
【０１６０】
ＣＰＵ２０３は、ＶＭ切り替えプログラム２０５ａを読み出して、メモリ２０１に展開し、プロセスとして実行する。かかるプロセスは、サーバ１の各機能部に対応する。ＶＭ切り替え関連情報２０５ｂは、転送テーブル４１、ＭＡＣ／ＩＰ編集テーブル４２に対応する。そして、例えばリムーバブルディスク２１１が、ＶＭ切り替えプログラム２０５ａ等の各情報を記憶する。
【０１６１】
なお、ＶＭ切り替えプログラム２０５ａについては、必ずしも最初からＨＤＤ２０５に記憶させておかなくても良い。例えば、コンピュータ２００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカード等の「可搬用の物理媒体」に当該プログラムを記憶させておく。そして、コンピュータ２００がこれらからＶＭ切り替えプログラム２０５ａを読み出して実行するようにしても良い。
【符号の説明】
【０１６２】
１  サーバ
２  仮想スイッチ
３  ＶＭ
４  ＶＮＦ
２０  制御部
２１  ＶＭ切り替え部
３０  監視部
３１  異常検出部
３１Ａ  第１異常検出部
３１Ｂ  第２異常検出部
３１Ｃ  第３異常検出部
３１Ｄ  第４異常検出部
３１Ｅ  第５異常検出部
３１Ｆ  第６異常検出部
４０  記憶部
４１  転送テーブル
４２  ＭＡＣ／ＩＰ編集テーブル
【図１】
2017229030.tif 000003
【図２】
2017229030.tif 000004
【図３】
2017229030.tif 000005
【図４】
2017229030.tif 000006
【図５Ａ】
2017229030.tif 000007
【図５Ｂ】
2017229030.tif 000008
【図５Ｃ】
2017229030.tif 000009
【図６】
2017229030.tif 000010
【図７】
2017229030.tif 000011
【図８】
2017229030.tif 000012
【図９】
2017229030.tif 000013
【図１０】
2017229030.tif 000014
【図１１Ａ】
2017229030.tif 000015
【図１１Ｂ】
2017229030.tif 000016
【図１２】
2017229030.tif 000017
【図１３】
2017229030.tif 000018
【図１４】
2017229030.tif 000019
【図１５】
2017229030.tif 000020
【図１６】
2017229030.tif 000021
【図１７】
2017229030.tif 000022
【図１８】
2017229030.tif 000023
【図１９】
2017229030.tif 000024
【図２０】
2017229030.tif 000025
【図２１】
2017229030.tif 000026
【図２２】
2017229030.tif 000027
【図２３】
2017229030.tif 000028
【図２４】
2017229030.tif 000029
【図２５】
2017229030.tif 000030
【図２６】
2017229030.tif 000031
【図２７】
2017229030.tif 000032
【図２８】
2017229030.tif 000033
【図２９】
2017229030.tif 000034
【図３０】
2017229030.tif 000035
【図３１】
2017229030.tif 000036
【図３２】
2017229030.tif 000037
【図３３】
2017229030.tif 000038