(57)【特許請求の範囲】
【請求項１】
クライアント端末から送信された往路データを複数の仮想マシンのうちのいずれかの仮想マシンに転送するロードバランサが接続される仮想ネットワークを形成する通信機器に対して、前記往路データの送信先ＩＰアドレスがロードバランサのＩＰアドレスであって、かつ、送信先ＭＡＣアドレスがロードバランサのＭＡＣアドレスでない場合には、前記送信先ＩＰアドレスを前記仮想マシンのＩＰアドレスに書き換える往路ルールを設定する往路設定部と、
前記クライアント端末から送信された往路データの送信先がロードバランサである場合には、前記通信機器に対して、復路データの送信元ＩＰアドレスをロードバランサのＩＰアドレスに書き換える復路ルールを設定する復路設定部と、
を備えることを特徴とする通信制御装置。
【請求項２】
前記往路設定部は、前記通信機器に対して、送信先ＩＰアドレスがロードバランサのＩＰアドレスであるデータを受信した場合には、前記ロードバランサに前記データを転送するとともに、該データを自通信制御装置に対して転送する転送ルールをさらに設定し、
前記通信機器から前記ロードバランサが送信先であるデータを受信する受信部をさらに備え、
前記復路設定部は、前記受信部によって前記データが受信された場合には、前記通信機器に対して、復路データの送信元ＩＰアドレスをロードバランサのＩＰアドレスに書き換える復路ルールを設定することを特徴とする請求項１に記載の通信制御装置。
【請求項３】
前記受信部は、さらに、前記仮想ネットワークにロードバランサが新たに接続されると、該ロードバランサのＩＰアドレスを受信し、該ＩＰアドレスを記憶部に格納し、
前記往路設定部は、前記記憶部に記憶されたＩＰアドレスを用いて、前記転送ルールを設定することを特徴とする請求項２に記載の通信制御装置。
【請求項４】
通信制御装置で実行される通信制御方法であって、
クライアント端末から送信された往路データを複数の仮想マシンのうちのいずれかの仮想マシンに転送するロードバランサが接続される仮想ネットワークを形成する通信機器に対して、前記往路データの送信先ＩＰアドレスがロードバランサのＩＰアドレスであって、かつ、送信先ＭＡＣアドレスがロードバランサのＭＡＣアドレスでない場合には、前記送信先ＩＰアドレスを前記仮想マシンのＩＰアドレスに書き換える往路ルールを設定する往路設定工程と、
前記クライアント端末から送信された往路データの送信先がロードバランサである場合には、前記通信機器に対して、復路データの送信元ＩＰアドレスをロードバランサのＩＰアドレスに書き換える復路ルールを設定する復路設定工程と、
を含んだことを特徴とする通信制御方法。
【請求項５】
クライアント端末から送信された往路データを複数の仮想マシンのうちのいずれかの仮想マシンに転送するロードバランサが接続される仮想ネットワークを形成する通信機器に対して、前記往路データの送信先ＩＰアドレスがロードバランサのＩＰアドレスであって、かつ、送信先ＭＡＣアドレスがロードバランサのＭＡＣアドレスでない場合には、前記送信先ＩＰアドレスを前記仮想マシンのＩＰアドレスに書き換える往路ルールを設定する往路設定ステップと、
前記クライアント端末から送信された往路データの送信先がロードバランサである場合には、前記通信機器に対して、復路データの送信元ＩＰアドレスをロードバランサのＩＰアドレスに書き換える復路ルールを設定する復路設定ステップと、
をコンピュータに実行させるための通信制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信制御装置、通信制御方法及び通信制御プログラムに関する。
【背景技術】
【０００２】
従来、商用クラウド環境を提供する事業者が仮想ロードバランサ（例えば、ＬＢａａＳ  :Load  Balancer  as  a  Service）サービスを提供する際、顧客（ユーザ）が各自で構築するクラウド環境上のシステムに仮想ロードバランサを導入する技術が知られている。仮想ロードバランサは、例えば、ユーザがＷｅｂサービスの提供等を目的として商用クラウド環境上に複数の仮想マシンを構築している場合において、当該仮想マシンに対する負荷が均一となるような負荷分散を行う。ユーザは、仮想ロードバランサに対して負荷分散対象となる仮想マシンのグループや負荷分散アルゴリズムを設定可能である。
【０００３】
ここで、あるネットワーク構成に対して仮想ロードバランサを導入する場合の方式として、Two-Arm方式とOne-Arm方式が存在する。Two-Arm方式は、負荷分散対象となる通信が着信するネットワークと負荷分散先となるリアルサーバが存在するネットワークのセグメントが分離されており、それぞれのネットワークに対してロードバランサがインタフェースを持つ。一方、One-Arm方式ではロードバランサは１つのインタフェースしか持たず、負荷分散対象となる通信が着信するネットワークとリアルサーバが存在するネットワークは同一である。
【０００４】
仮想ロードバランサは、仮想環境上のシステムにおいてロードバランサの機能をソフトウェアで実現するものである。仮想ロードバランサを用いることで、ユーザはクラウドサービスなどでロードバランサを含む任意の仮想的なシステムをオンデマンドで構築することができる。
【０００５】
一般的に、すでに構築済みの仮想環境上のシステムに対してTwo-Arm方式で仮想ロードバランサを追加する場合には、新しい仮想ネットワークの作成や、仮想ロードバランサで仮想ルータを置き換える等のネットワーク構成変更を行う。そのため、ユーザにとって一時的にネットワークが切り離されて通信が遮断されてしまう等のリスクが発生する。これはユーザがスモールスタートから徐々に仮想環境の規模を拡大していく際に仮想ロードバランサを導入する、といったユースケースで障害となる。
【０００６】
One-Arm方式であれば既存のネットワークに新たに仮想ロードバランサを接続するだけで負荷分散が実現可能であるが、通信が適切に行えない場合がある。つまり、既にあるネットワーク構成に仮想ロードバランサを追加する場合には、仮想マシン（リアルサーバ）のデフォルトＧＷは通常同じネットワークに属する仮想ルータに設定されている。そのため、仮想ロードバランサから仮想マシンに振り分けられた通信は、復路において仮想ロードバランサではなくデフォルトＧＷの仮想ルータを経由して接続要求元のクライアントに到達しようとする。
【０００７】
ところが、クライアントは受信パケットの送信元ＩＰアドレスが仮想ロードバランサのものではないことから、自分の通信ではないと判断して当該パケットを破棄してしまうため、通信が適切に行えない。一方で、仮想ロードバランサをデフォルトＧＷとした場合は外部向けの全ての通信が仮想ロードバランサを介してしまうため、無駄なトラフィックが大量に発生してしまう。
【０００８】
そこで、仮想ロードバランサで通信をＳＮＡＴ（Source  Network  Address  Translation）することでOne-Arm方式においてもロードバランスが実現可能である。パケットの送信元ＩＰアドレスがＳＮＡＴによって仮想ロードバランサのＩＰアドレスに書き換えられるため、負荷分散先の仮想マシンは通信に対する応答を仮想ロードバランサに向けて送信するようになる。仮想ロードバランサは再度ＳＮＡＴし、送信元ＩＰアドレスを自身のＩＰアドレスに書き換えてクライアントに送信することで通信が確立される。
【０００９】
また、ロードバランサの主な転送方式に、ＮＡＴ方式とＤＳＲ方式が存在する。ＮＡＴ方式は通信をＮＡＴし、通信の往路ではパケットの宛先ＩＰアドレスをロードバランサのＩＰアドレスから負荷分散先の仮想マシンのＩＰアドレスに変換し、復路では送信元ＩＰアドレスを仮想マシンのアドレスからロードバランサのアドレスに変換してクライアントに送り返す。なお、このようにＮＡＴ方式では、通信の往路と復路ともにロードバランサを経由することが前提となる。
【００１０】
一方、ＤＳＲ方式は、クライアントからロードバランサを経由して各仮想マシンに負荷分散された通信の復路が、仮想マシンからロードバランサを介さずに直接クライアントに戻る方式である。ロードバランサはＮＡＴするのではなく、宛先ＭＡＣアドレスのみを振り分け先の仮想マシンのアドレスに変換して転送する。復路のＮＡＴを行わないため、ＮＡＴ方式と比較して大幅にロードバランサの負荷が少なくなる。
【００１１】
仮想ロードバランサは、ハードウェアのアプライアンス製品として提供されている市中のロードバランサと比較すると一般的に処理性能が低いため、負荷が少なく高い処理性能が期待できるＤＳＲ（Direct  Server  Return）方式で導入するユースケースが考えられる。
【先行技術文献】
【非特許文献】
【００１２】
【非特許文献１】NETWORKGEEKSTUFF、“Basic  Load-Balancer  Scenarios  Explained”、［online］、［平成２５年１１月２９日検索］、インターネット＜http://networkgeekstuff.com/networking/basic-load-balancer-scenarios-explained/＞
【非特許文献２】Security  Akademeia、“ロードバランサの配置の種類”、［online］、［平成２５年１１月２９日検索］、インターネット＜http://akademeia.info/index.php?%A5%ED%A1%BC%A5%C9%A5%D0%A5%E9%A5%F3%A5%B5#oc261ef8＞
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかしながら、従来技術では、One-Arm方式およびＤＳＲ方式を利用するための負担が大きく、また、サービス提供の支障となる場合があるという課題があった。つまり、上記のOne-Arm方式において仮想ロードバランサでＳＮＡＴする技術では、仮想ロードバランサでＳＮＡＴすることで、ユーザの仮想マシンにサービス利用者であるクライアントのＩＰアドレスが通知されなくなってしまう。このため、クライアントのＩＰアドレスを何らかの形で利用するようなサービス（例えば、掲示板の書き込み規制など）を提供することができなくなる場合があり、サービス提供の支障となる場合があった。
【００１４】
なお、仮想ロードバランサにて通信ログを取得するという方法も考えられるが、事業者側の負担が増大してしまう。つまり、ログをユーザの保管ポリシーに合わせて保管し、ユーザが自由にアクセスして閲覧可能な状態に保つためには、事業者が大きな設備投資と管理責任を負担する必要が生じてしまい、事業者側の負担が増大してしまう。
【００１５】
また、仮想ロードバランサをＤＳＲ方式で導入するためには、ユーザが作成する仮想マシンに対する個別の設定を行う。具体的には、仮想マシンのループバックデバイスに仮想ロードバランサのＩＰアドレスを設定し、かつ当該ＩＰアドレス宛のＡＲＰに仮想マシンが応答しないように設定する。しかし、このようにユーザの仮想マシンに対して個別設定を行う場合、ユーザは各自の責任において適切な設定を行う必要があり、事業者はユーザがＤＳＲ方式で仮想ロードバランサを導入できるよう支援するために多大な手間がかかる。
【００１６】
そこで、この発明は、One-Arm方式およびＤＳＲ方式を利用するため負担を軽減し、適切にサービスを提供することを目的とする。
【課題を解決するための手段】
【００１７】
上述した課題を解決し、目的を達成するため、開示の通信制御装置は、クライアント端末から送信された往路データを複数の仮想マシンのうちのいずれかの仮想マシンに転送するロードバランサが接続される仮想ネットワークを形成する通信機器に対して、前記往路データの送信先ＩＰアドレスがロードバランサのＩＰアドレスであって、かつ、送信先ＭＡＣアドレスがロードバランサのＭＡＣアドレスでない場合には、前記送信先ＩＰアドレスを前記仮想マシンのＩＰアドレスに書き換える往路ルールを設定する往路設定部と、前記クライアント端末から送信された往路データの送信先がロードバランサである場合には、前記通信機器に対して、復路データの送信元ＩＰアドレスをロードバランサのＩＰアドレスに書き換える復路ルールを設定する復路設定部と、を備えることを特徴とする。
【００１８】
また、開示の通信制御方法は、通信制御装置で実行される通信制御方法であって、クライアント端末から送信された往路データを複数の仮想マシンのうちのいずれかの仮想マシンに転送するロードバランサが接続される仮想ネットワークを形成する通信機器に対して、前記往路データの送信先ＩＰアドレスがロードバランサのＩＰアドレスであって、かつ、送信先ＭＡＣアドレスがロードバランサのＭＡＣアドレスでない場合には、前記送信先ＩＰアドレスを前記仮想マシンのＩＰアドレスに書き換える往路ルールを設定する往路設定工程と、前記クライアント端末から送信された往路データの送信先がロードバランサである場合には、前記通信機器に対して、復路データの送信元ＩＰアドレスをロードバランサのＩＰアドレスに書き換える復路ルールを設定する復路設定工程と、を含んだことを特徴とする。
【００１９】
また、開示の通信制御プログラムは、クライアント端末から送信された往路データを複数の仮想マシンのうちのいずれかの仮想マシンに転送するロードバランサが接続される仮想ネットワークを形成する通信機器に対して、前記往路データの送信先ＩＰアドレスがロードバランサのＩＰアドレスであって、かつ、送信先ＭＡＣアドレスがロードバランサのＭＡＣアドレスでない場合には、前記送信先ＩＰアドレスを前記仮想マシンのＩＰアドレスに書き換える往路ルールを設定する往路設定ステップと、前記クライアント端末から送信された往路データの送信先がロードバランサである場合には、前記通信機器に対して、復路データの送信元ＩＰアドレスをロードバランサのＩＰアドレスに書き換える復路ルールを設定する復路設定ステップと、をコンピュータに実行させることを特徴とする。
【発明の効果】
【００２０】
本願に開示する通信制御装置、通信制御方法及び通信制御プログラムは、One-Arm方式およびＤＳＲ方式を利用するための負担を軽減し、適切にサービスを提供することが可能である。
【図面の簡単な説明】
【００２１】
【図１】図１は、第一の実施形態に係る通信システムの構成の一例を示す図である。
【図２】図２は、第一の実施形態に係る仮想ＮＷコントローラの構成を示すブロック図である。
【図３】図３は、第一の実施形態に係る仮想ＬＢ情報記憶部に記憶される情報の一例を示す図である。
【図４】図４は、第一の実施形態に係る通信システムにおいて仮想ＬＢを追加する処理について説明する図である。
【図５】図５は、第一の実施形態に係る通信システムにおいて仮想ＮＷコントローラへ仮想ＬＢの情報を登録する処理について説明する図である。
【図６】図６は、第一の実施形態に係る通信システムにおいて仮想ＮＷへルールを追加する処理について説明する図である。
【図７】図７は、第一の実施形態に係る通信システムにおいて仮想ＮＷへ往路ＮＡＴ用ルールを追加する処理について説明する図である。
【図８】図８は、第一の実施形態に係る通信システムにおいてクライアントから仮想ルータに送信されるパケットに関する通信処理について説明する図である。
【図９】図９は、第一の実施形態に係る通信システムにおいて仮想ルータを経由して仮想ＮＷに到達したパケットの通信処理について説明する図である。
【図１０】図１０は、第一の実施形態に係る通信システムにおいて仮想ＮＷへ復路ＮＡＴ用ルールを追加する処理について説明する図である。
【図１１】図１１は、第一の実施形態に係る通信システムにおいて仮想ＮＷへ既知クライアントＩＰ用ルールを追加する処理について説明する図である。
【図１２】図１２は、第一の実施形態に係る通信システムにおいて仮想ＬＢから仮想ＮＷへ送信されるパケットに関する通信処理について説明する図である。
【図１３】図１３は、第一の実施形態に係る通信システムにおいて仮想ＮＷから仮想マシンへ送信されるパケットに関する通信処理について説明する図である。
【図１４】図１４は、第一の実施形態に係る通信システムにおいて仮想マシンから仮想ＮＷへ送信されるパケットに関する通信処理について説明する図である。
【図１５】図１５は、第一の実施形態に係る通信システムにおいて仮想ＮＷから仮想ルータへ送信されるパケットに関する通信処理について説明する図である。
【図１６】図１６は、第一の実施形態に係る通信システムにおいて仮想ルータからクライアントへ送信されるパケットに関する通信処理につて説明する図である。
【図１７】図１７は、第一の実施形態に係る仮想ＮＷコントローラにおける往路設定処理の流れを説明するためのフローチャートである。
【図１８】図１８は、第一の実施形態に係る仮想ＮＷコントローラにおける復路設定処理の流れを説明するためのフローチャートである。
【図１９】図１９は、第一の実施形態に係る通信システムの概要を説明する図である。
【図２０】図２０は、通信制御プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００２２】
以下に図面を参照して、この発明に係る通信制御装置、通信制御方法及び通信制御プログラムの実施形態を詳細に説明する。なお、この実施形態によりこの発明が限定されるものではない。
【００２３】
［第一の実施形態］
以下の実施形態では、第一の実施形態に係る通信システムの構成、仮想ＮＷコントローラの構成、通信システムによる通信処理の流れ及び仮想ＮＷコントローラによる通信制御処理の流れを順に説明し、最後に第一の実施形態による効果を説明する。
【００２４】
［システムの構成］
まず、第一の実施形態に係る通信システム１００の構成の一例を説明する。図１は、第一の実施形態に係る通信システムの構成の一例を示す図である。図１に示すように、通信システム１００は、仮想ＮＷ（NetWork：ネットワーク）コントローラ１０と、仮想ルータ２０と、複数の仮想マシン３０Ａ〜３０Ｃと、クライアント４０と、仮想ＬＢ（Load  Balancer）７０とを有する。なお、ここでは、仮想マシン３０Ｂ、３０Ｃおよび仮想ＬＢ７０は、後から追加されたものとして、図１では点線で示している。
【００２５】
また、第一の実施形態に係る通信システム１００において、仮想ルータ２０とクライアント４０とは、外部ＮＷ５０を介して接続され、仮想ＮＷコントローラ１０と、仮想ルータ２０と、複数の仮想マシン３０Ａ〜３０Ｃと、仮想ＬＢ７０とは、仮想ＮＷ６０を介して接続されている。なお、複数の仮想マシン３０Ａ〜３０Ｃについて、特に区別することなく説明する場合には、「仮想マシン３０」と記載する。また、図１に例示した各装置の設置数は、あくまで一例であり、これに限定されるものではない。
【００２６】
仮想ＮＷコントローラ１０は、通信機器や仮想マシンを管理する通信制御装置である。この仮想ＮＷコントローラ１０は、物理装置で実現されてもよく、仮想マシンで実現されてもよい。なお、仮想ＮＷコントローラ１０についての具体的な構成や処理については、後に詳述する。
【００２７】
仮想ルータ２０は、ユーザが任意に作成している仮想ルータである。仮想ルータ２０は、外部ＮＷ５０からの着信をＮＡＴし、クライアント４０と仮想ＬＢ７０や仮想マシン３０Ａ〜３０Ｃとの通信を確立する。また、仮想ルータ２０は、配下の仮想ＮＷ６０や仮想マシン３０Ａ〜３０Ｃのデフォルトゲートウェイである。また、ここでユーザとは、クライアント４０に対してサービスを提供するため、サーバとなる仮想マシン３０Ａ〜３０Ｃをはじめとした通信システム１００を構築しているユーザである。なお、ユーザは、通信システム１００を構築するためにクラウドサービスを利用しているものとする。また、この仮想ルータ２０は、物理装置で実現されてもよく、仮想マシンで実現されてもよい。
【００２８】
仮想マシン３０Ａ〜３０Ｃは、ユーザによって任意に作成された仮想マシンであって、外部ＮＷ５０に接続されたクライアント４０に対するＷｅｂサービス等を提供するサーバとして機能する。なお、仮想ＬＢ７０が追加された場合には、これらの仮想マシン３０Ａ〜３０Ｃが負荷分散先のサーバ（リアルサーバ）となる。
【００２９】
また、クライアント４０は、ユーザが提供するサービスの利用者が所有する端末である。図１では、クライアント４０について、１台のみを図示しているが、不特定多数存在するものとする。また、外部ＮＷ５０は、クライアント４０が存在するネットワークであって、例えば、インターネットなどの仮想環境外部のネットワークである。
【００３０】
仮想ＮＷ６０は、ソフトウェアによって仮想的に構築されているネットワークであり、ユーザによって任意に作成されたネットワークである。なお、仮想ＮＷ６０については、例えばOpen  Flowが用いられて実現されているものとし、動的にＮＷ構成を制御することで、仮想マシンや仮想ルータにとって、仮想ＮＷ６０が１台のスイッチのように振る舞うものとする。
【００３１】
仮想ＬＢ７０は、仮想マシン３０Ａ〜３０Ｃがリアルサーバとして設定されており、ソフトウェアによって様々な負荷分散アルゴリズムに基づいた負荷分散を行う。また、仮想ＬＢ７０は、One-Arm方式なので、インタフェース（ＩＰアドレス）が一つである。仮想ＬＢ７０は、このＩＰアドレスおよび指定した待受ポートに着信した通信をリアルサーバに負荷分散する。また、第一の実施形態に係る通信システム１００では、ＤＳＲ方式を採用しており、リアルサーバからクライアントへの戻りの通信（復路）である場合には、仮想ＬＢ７０を経由せずに、仮想ルータ２０を経由して直接要求元のクライアント４０にデータが送信される。
【００３２】
また、第一の実施形態に係る通信システム１００では、ユーザが当初、仮想マシン３０Ａのみでサービスを提供していたが、サービス利用者の増加によって仮想マシン３０Ａの負荷が高まり、処理速度の低下などでサービスに支障が出たものとする。そこで、新たに同じサービスを提供する仮想マシン３０Ｂ、３０Ｃおよび仮想ＬＢ７０を導入し、３台の仮想マシン３０Ａ〜３０Ｃにクライアント４０からのリクエストを負荷分散することで解決しようとしている状況であるものとして、以下説明する。
【００３３】
［仮想ＮＷコントローラの構成］
次に、図２を用いて、図１に示した仮想ＮＷコントローラ１０の構成を説明する。図２は、第一の実施形態に係る仮想ＮＷコントローラの構成を示すブロック図である。図２に示すように、仮想ＮＷコントローラ１０は、通信処理部１１、制御部１２および記憶部１３を有する。
【００３４】
通信処理部１１は、接続される仮想ＮＷ６０との間でやり取りする各種情報に関する通信を制御する。例えば、通信処理部１１は、仮想ＮＷ６０から仮想ＬＢ７０宛てのパケットを受信する。
【００３５】
記憶部１３は、図２に示すように、仮想ＬＢ情報記憶部１３ａを有する。記憶部１３は、例えば、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、又は、ハードディスク、光ディスク等の記憶装置などである。
【００３６】
仮想ＬＢ情報記憶部１３ａは、仮想ＬＢ７０のＩＰアドレスおよび待受ポートを記憶する。ここで、図３の例を用いて、仮想ＬＢ情報記憶部１３ａに記憶される情報の一例を説明する。図３は、第一の実施形態に係る仮想ＬＢ情報記憶部に記憶される情報の一例を示す図である。
【００３７】
図３に示すように、仮想ＬＢ情報記憶部１３ａは、仮想ＬＢ７０を識別するための名称である「仮想ＬＢ名」と、仮想ＬＢ７０自身のＩＰアドレスである「ＩＰアドレス」と、仮想ＬＢ７０の待受ポートである「待受ポート」とを対応付けて記憶する。具体的な例を挙げて説明すると、例えば、仮想ＬＢ情報記憶部１３ａは、仮想ＬＢ名「仮想ＬＢ１」、ＩＰアドレス「10.0.0.101」と、待受ポート「８０」とが対応付けて記憶されている。
【００３８】
図２に戻って、制御部１２は、受信部１２ａ、往路設定部１２ｂおよび復路設定部１２ｃを有する。ここで、制御部１２は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路やＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路である。
【００３９】
受信部１２ａは、仮想ＮＷ６０に仮想ＬＢ７０が新たに接続されると、該仮想ＬＢ７０のＩＰアドレスおよび待受ポート番号を受信し、該ＩＰアドレスおよび待受ポート番号を仮想ＬＢ情報記憶部１３ａに格納する。また、受信部１２ａは、仮想ＮＷ６０を形成する通信機器から仮想ＬＢ７０が送信先であるデータを受信する。
【００４０】
ここで、図４を用いて、通信システム１００において仮想ＬＢを追加する際の処理例について説明する。図４は、第一の実施形態に係る通信システムにおいて仮想ＬＢを追加する処理について説明する図である。
【００４１】
図４に示すように、通信システム１００において、ユーザが作成した仮想ＬＢ７０が新たに追加され、仮想ＮＷ６０に接続される。ここで通信システム１００は、One-Arm方式であるため、既存のシステム構成を崩す（例えば、仮想ルータ２０と仮想ＮＷ６０の接続を切断して仮想ＬＢ７０に付け替えを行う等）ことなく追加が可能である。
【００４２】
また、図４に示すように、仮想マシン３０Ａには、ＩＰアドレス「10.0.0.1」が設定され、仮想マシン３０Ｂには、ＩＰアドレス「10.0.0.2」が設定され、仮想マシン３０Ｃには、ＩＰアドレス「10.0.0.3」が設定され、仮想ＬＢ７０には、ＩＰアドレス「10.0.0.101」が設定され、仮想ルータ２０には、ＩＰアドレス「10.0.0.254」が設定されているものとする。
【００４３】
また、仮想ルータ２０には、仮想マシン３０Ａに対応する外部ＮＷ５０側ＩＰアドレス「x.x.x.x」と、仮想ＬＢ７０のＩＰアドレス「10.0.0.101」に関してＮＡＴルールが設定されている。具体的には、仮想ルータ２０には、ＮＡＴルールとして、ＩＰアドレス「x.x.x.x」宛てに着信した通信は宛先を「10.0.0.101」宛てにＤＮＡＴを行い、仮想ＬＢ７０から外部への通信は送信元ＩＰアドレスを「x.x.x.x」にＳＮＡＴを行うルールが設定されている。
【００４４】
なお、通信システム１００では、全ての仮想マシン３０Ａ〜３０Ｃのデフォルトゲートウェイは、仮想ルータ（10.0.0.254）に設定されているものとする。また、仮想ＮＷ６０は、１つのスイッチとして振る舞うが、パケットの宛先が当該仮想ＮＷ６０内に存在しない場合、または、宛先がどこに存在するか不明の場合は、仮想ルータ２０にパケットを転送するように設定されているものとする。
【００４５】
続いて、図５を用いて、仮想ＬＢ７０が追加された後において、仮想ＮＷコントローラ１０へ仮想ＬＢ７０の情報を登録する処理について説明する。図５は、第一の実施形態に係る通信システムにおいて仮想ＮＷコントローラへ仮想ＬＢの情報を登録する処理について説明する図である。通信システム１００では、ユーザの操作により仮想ＬＢ７０を追加する設定が行われると、上位装置（図示省略）から自動的に仮想ＮＷコントローラ１０に通知される。
【００４６】
図５に例示するように、仮想ＮＷコントローラ１０は、仮想ＬＢ７０の宛先ＩＰ「10.0.0.101」と宛先ポート「８０」とを受信する。仮想ＮＷコントローラ１０は、仮想ＬＢ７０の宛先ＩＰ「10.0.0.101」と宛先ポート「８０」とを、前述した仮想ＬＢ情報記憶部１３ａにおける「ＩＰアドレス」と「待受ポート」として登録することで、宛先ＩＰ「10.0.0.101」、宛先ポート「８０」の通信は仮想ＬＢ７０に対する通信であることを判別できるようになる。
【００４７】
図２に戻って、往路設定部１２ｂは、クライアント４０から送信された往路データを複数の仮想マシン３０Ａ〜３０Ｃのうちのいずれかの仮想マシン３０に転送する仮想ＬＢ７０が接続される仮想ＮＷ６０を形成する通信機器に対して、往路データの送信先ＩＰアドレスが仮想ＬＢ７０のＩＰアドレスであって、かつ、送信先ＭＡＣアドレスが仮想ＬＢ７０のＭＡＣアドレスでない場合には、送信先ＩＰアドレスを仮想マシン３０のＩＰアドレスに書き換える往路ルールを設定する。
【００４８】
また、往路設定部１２ｂは、仮想ＮＷ６０の通信機器に対して、送信先ＩＰアドレスが仮想ＬＢ７０のＩＰアドレスであるパケットを受信した場合には、仮想ＬＢ７０にパケットを転送するとともに、該パケットを自仮想ＮＷコントローラ１０に対して転送する転送ルールをさらに設定する。具体的には、往路設定部１２ｂは、仮想ＬＢ情報記憶部１３ａに記憶されたＩＰアドレスおよび待受ポートを用いて、転送ルールを設定する。
【００４９】
ここで、図６を用いて、仮想ＮＷ６０に新たなルール（転送ルール）を追加する場合の例について説明する。図６は、第一の実施形態に係る通信システムにおいて仮想ＮＷへルールを追加する処理について説明する図である。図６に示すように、仮想ＮＷコントローラ１０は、図５の説明において登録された仮想ＬＢ７０の情報を元に、仮想ＮＷ６０を制御して、転送ルール（Open  Flowではフローテーブルという）を追加する。
【００５０】
具体的には、仮想ＮＷコントローラ１０は、転送ルールとして、「未知の送信元ＩＰアドレスから仮想ＬＢ７０宛てのパケットを受信した場合には、パケットを仮想ＬＢ７０に転送しつつ、仮想ＮＷコントローラ１０にも同じパケットを送信すること」というルールを仮想ＮＷ６０に追加する。
【００５１】
例えば、図６の例では、転送ルールとして、「宛先ＩＰ：10.0.0.101  宛先ポート：80の仮想ＬＢに対する通信は、仮想ＬＢにルーティングするだけでなく、コントローラにもパケットを転送すること」というルールを仮想ＮＷ６０に追加する。
【００５２】
次に、図７を用いて、仮想ＮＷ６０へ往路ＮＡＴ用ルール（往路ルール）を追加する処理について説明する。図７は、第一の実施形態に係る通信システムにおいて仮想ＮＷへ往路ＮＡＴ用ルールを追加する処理について説明する図である。図７に示すように、仮想ＮＷコントローラ１０は、登録された仮想ＬＢ７０の情報を元に、仮想ＮＷ６０を制御して、往路ルール（Open  Flowではフローテーブル）を追加する。
【００５３】
仮想ＮＷコントローラ１０は、往路ルールとして、「宛先ＩＰが仮想ＬＢ７０のＩＰであるが、宛先ＭＡＣアドレスが仮想ＬＢでないパケットは、仮想ＬＢ７０からＤＳＲ方式でリアルサーバに転送されているパケットと見なし、宛先ＩＰアドレスを宛先ＭＡＣに対応するものであって、仮想ＬＢのＩＰアドレスからいずれかの仮想マシン３０のＩＰアドレスに書き換える」というルールを仮想ＮＷ６０に追加する。
【００５４】
例えば、図７の例では、往路ルールとして、「宛先ＩＰ：10.0.0.101  宛先ＭＡＣ：仮想マシン３０Ａの通信は、宛先ＩＰを10.0.0.1に書き換えて仮想マシン３０Ａに転送する」というルールを仮想ＮＷ６０に追加する。また、「宛先ＩＰ：10.0.0.101  宛先ＭＡＣ：仮想マシン３０Ｂの通信は、宛先ＩＰを10.0.0.2に書き換えて仮想マシン３０Ｂに転送する。」というルールを仮想ＮＷ６０に追加する。また、「宛先ＩＰ：10.0.0.101  宛先ＭＡＣ：仮想マシン３０Ｃの通信は、宛先ＩＰを10.0.0.3に書き換えて仮想マシン３０Ｃに転送する」というルールを仮想ＮＷ６０に追加する。
【００５５】
上記のように転送ルールおよび往路ルールが追加された場合の通信処理の流れについて図８および図９を用いて説明する。図８は、第一の実施形態に係る通信システムにおいてクライアントから仮想ルータに送信されるパケットに関する通信処理について説明する図である。図９は、第一の実施形態に係る通信システムにおいて仮想ルータを経由して仮想ＮＷに到達したパケットの通信処理について説明する図である。
【００５６】
図８に示すように、クライアント４０からの要求パケットが外部ＮＷ５０を介して仮想ルータ２０の外部ＩＰアドレス「x.x.x.x」に着信する（図８の（１）参照）。ここで、着信したパケットのヘッダには、図８に例示するように、宛先ＩＰとして「x.x.x.x」と、宛先ポートとして「８０」と、宛先ＭＡＣとして仮想ルータのＭＡＣアドレスと、送信元ＩＰアドレスとして「a.a.a.a」と、送信元ポートとして「５０００」と、送信元ＭＡＣとしてクライアントのＭＡＣアドレスとが含まれる。
【００５７】
そして、仮想ルータ２０は、着信したパケットをＤＮＡＴ（Destination  Network  Address  Translation）し、宛先ＩＰアドレスを仮想ＬＢのＩＰアドレスに変更する。例えば、仮想ルータ２０は、パケットヘッダにおける宛先ＩＰを「10.0.0.101」に変更し、宛先ＭＡＣを「仮想ＬＢ」のＭＡＣアドレスに変更し、送信元ＭＡＣを「仮想ルータ」のＭＡＣアドレスに変更する。
【００５８】
続いて、図９に示すように、クライアント４０からの通信は仮想ルータ２０を経由し、仮想ＮＷ６０に到達する。そして、仮想ＮＷ６０は、上記した転送ルールに基づき、パケットを仮想ＬＢ７０に転送するとともに、仮想ＮＷコントローラ１０に転送する。そして、仮想ＮＷコントローラ１０が受け取ったパケットのヘッダ情報の宛先ＩＰおよび宛先ポートが、仮想ＬＢ情報記憶部１３ａに記憶されているＩＰアドレスおよび待受ポートと一致する場合には、後述する図１０を用いて詳述するが、復路ルールを仮想ＮＷ６０に対して追加する。
【００５９】
復路設定部１２ｃは、クライアント４０から送信された往路データの送信先が仮想ＬＢ７０である場合には、仮想ＮＷ６０の通信機器に対して、復路データの送信元ＩＰアドレスを仮想ＬＢ７０のＩＰアドレスに書き換える復路ルールを設定する。具体的には、復路設定部１２ｃは、受信部１２ａによって往路データの送信先が仮想ＬＢ７０である往路データが受信された場合には、仮想ＮＷ６０の通信機器に対して、復路データの送信元ＩＰアドレスを仮想ＬＢ７０のＩＰアドレスに書き換える復路ルールを設定する。
【００６０】
ここで、図１０を用いて、通信システムにおいて仮想ＮＷへ復路ＮＡＴ用ルール（復路ルール）を追加する処理について説明する。図１０は、第一の実施形態に係る通信システムにおいて仮想ＮＷへ復路ＮＡＴ用ルールを追加する処理について説明する図である。なお、図１０では、往路のパケットを仮想ＮＷ６０が受信した場合に、復路ＮＡＴ用ルール（復路ルール）を設定する処理について説明する。図１０に示すように、仮想ＮＷコントローラ１０は、パケットを受信すると、例えば、受信したパケットのヘッダ情報の宛先ＩＰおよび宛先ポートが、仮想ＬＢ情報記憶部１３ａに記憶されているＩＰアドレスおよび待受ポートと一致するか判別する。そして、仮想ＮＷコントローラ１０は、一致する場合には、つまり、仮想ＬＢ宛のパケットであった場合には、復路ルールを仮想ＮＷ６０に追加する。
【００６１】
仮想ＮＷコントローラ１０は、復路ルールとして、「クライアント宛の戻りの通信は、送信元ＩＰアドレスを仮想ＬＢ７０のＩＰに書き換えること」という復路ルールを仮想ＮＷ６０に追加する。つまり、書き換えなければ仮想ルータ２０で送信元ＩＰアドレスがいずれかの仮想マシンのＩＰのままx.x.x.xにＮＡＴされず、別のＮＡＴルールによってクライアント４０が要求を送信したＩＰとは異なるＩＰにＮＡＴされてしまい、クライアント４０側に到達した時点で破棄されてしまう。このため、クライアント宛の戻りの通信は、送信元ＩＰアドレスを仮想ＬＢ７０のＩＰに書き換える復路ルールを仮想ＮＷ６０に追加することで、クライアント側で破棄されることを防止し、適切に通信を行えるようにすることが可能である。
【００６２】
例えば、図１０の例では、仮想ＮＷコントローラ１０は、復路ルールとして、「宛先ＩＰ：a.a.a.a  宛先ポート：５０００  送信元ポート：８０の通信は、仮想ＬＢで負荷分散された通信の復路パケットであると見なし、送信元ＩＰアドレスを10.0.0.101に書き換えること」という復路ルールを仮想ＮＷ６０に追加する。
【００６３】
次に、図１１を用いて、仮想ＮＷコントローラ１０が受け取ったパケットのヘッダ情報から、仮想ＮＷコントローラ１０に対する不要なパケット転送を抑止するために、仮想ＮＷへ既知クライアントＩＰ用ルールを追加する処理について説明する。図１１は、第一の実施形態に係る通信システムにおいて仮想ＮＷへ既知クライアントＩＰ用ルールを追加する処理について説明する図である。
【００６４】
図１１に示すように、仮想ＮＷコントローラ１０は、復路ルールの追加が完了した後、仮想ＮＷ６０に対して、「戻りパケット用ルール追加が完了した、既知クライアント（送信元ＩＰアドレス）からの通信に関しては、仮想ＬＢ宛の通信であってもコントローラへ転送しないこと」という既知クライアントＩＰ用ルールを追加する。つまり、図６に例示したように、仮想ＬＢ７０宛てのパケットを転送する転送ルールを追加する処理を行ったが、仮想ＬＢ７０宛てのパケットを受信すれば必要な設定が仮想ＮＷ６０にされているので、２回目以降のパケット転送は不要である。このため、仮想ＮＷコントローラ１０は、復路ルール追加が完了した後、既知クライアントからの通信に関しては、仮想ＬＢ宛の通信であってもコントローラへ転送しないという既知クライアントＩＰ用ルールを仮想ＮＷ６０に追加する。
【００６５】
次に、前述した往路ルールおよび復路ルールが仮想ＮＷ６０に追加された後の通信システム１００において、クライアント４０から仮想マシン３０Ａへ送信されるパケットの通信処理について、図１２および図１３を用いて説明する。図１２は、第一の実施形態に係る通信システムにおいて仮想ＬＢから仮想ＮＷへ送信されるパケットに関する通信処理について説明する図である。図１３は、第一の実施形態に係る通信システムにおいて仮想ＮＷから仮想マシンへ送信されるパケットに関する通信処理について説明する図である。
【００６６】
図１２に示すように、仮想ＬＢ７０は、外部ＮＷ５０および仮想ルータ２０を経由して受信したクライアント４０のパケットを８０番ポートから受信する。そして、仮想ＬＢ７０は、８０番ポートに着信したパケットを、負荷分散アルゴリズムに基づいて、リアルサーバ（仮想マシン３０Ａ）に転送する。ここでは、負荷分散先として、仮想マシン３０Ａに振り分けるよう選択したこととする。
【００６７】
また、ＤＳＲ方式なので、パケットの宛先ＩＰは、仮想ＬＢ７０のＩＰアドレスのままＮＡＴされずにリアルサーバに転送される。つまり、仮想ＬＢ７０では、ＮＡＴを行わないことで、通信負荷を低く抑えることができる。ただし、宛先ＭＡＣがリアルサーバのＭＡＣアドレスに変更される。例えば、図１２の例では、仮想ルータ２０から仮想ＬＢ７０に送信されたパケットのヘッダに含まれる宛先ＭＡＣが「仮想ＬＢ」から「仮想マシン３０Ａ」に変更され、送信元ＭＡＣについても「仮想ルータ」から「仮想ＬＢ」に変更される。
【００６８】
次に、図１３に示すように、仮想ＬＢ７０から転送されたパケットが仮想ＮＷ６０を介して仮想マシン３０Ａに到達する。ここで、仮想ＮＷ６０をパケットが経由する際、仮想ＮＷ６０は、前述の図７の説明において設定された往路ルールに基づき、パケットの宛先ＩＰを宛先ＭＡＣに対応する仮想マシン３０ＡのＩＰにＤＮＡＴしたうえで当該仮想マシン３０Ａに転送する。つまり、仮想マシン３０ＡにＤＳＲ方式向けの設定をしていないため、宛先ＩＰが仮想マシン３０Ａのものと異なっているとパケットが破棄されてしまうためである。このため、第一の実施形態に係る通信システム１００では、例えば、ＤＳＲ方式向けの設定として、仮想マシン３０のループバックデバイスに仮想ＬＢ７０のＩＰアドレスを設定し、かつ当該ＩＰアドレス宛のＡＲＰに仮想マシン３０が応答しないようにする等の設定を仮想マシン３０に対して個別に行わなくてもよい。
【００６９】
例えば、図１３の例では、往路ルールとして「宛先ＩＰ：10.0.0.101  宛先ＭＡＣ：仮想マシン３０Ａの通信は、仮想ＬＢ７０で負荷分散された往路パケットであると見なし、宛先ＩＰを宛先ＭＡＣに対応するリアルサーバ（仮想マシン３０Ａ）のアドレス10.0.0.1に書き換えて仮想マシン３０Ａに転送」するというルールに従って、パケットのヘッダに含まれる宛先ＩＰを「10.0.0.101」を「10.0.0.1」に変更する。
【００７０】
次に、前述した往路ルールおよび復路ルールが仮想ＮＷ６０に追加された後の通信システム１００において、仮想マシン３０Ａからクライアント４０へ送信されるパケットの通信処理について、図１４〜図１６を用いて説明する。図１４は、第一の実施形態に係る通信システムにおいて仮想マシンから仮想ＮＷへ送信されるパケットに関する通信処理について説明する図である。図１５は、第一の実施形態に係る通信システムにおいて仮想ＮＷから仮想ルータへ送信されるパケットに関する通信処理について説明する図である。図１６は、第一の実施形態に係る通信システムにおいて仮想ルータからクライアントへ送信されるパケットに関する通信処理について説明する図である。
【００７１】
図１４に示すように、リアルサーバである仮想マシン３０Ａは、仮想ＬＢ７０からのパケットを受信し、それに対する応答として、図１４の（５）に例示するヘッダを持つパケットを送信する。なお、これは送信元のＩＰとポートに向けて応答を返そうとする、一般的な動作であり、デフォルトゲートウェイは仮想ルータなので、宛先ＭＡＣは仮想ルータのものとなっている。
【００７２】
次に、図１５に示すように、仮想マシン３０Ａからのパケットが仮想ＮＷ６０を経由し、仮想ルータ２０に到達する際の処理について説明する。ここで、仮想ＮＷ６０を経由する際、仮想ＮＷ６０は、前述の図１０の説明において設定された復路ルールに基づき、送信元ＩＰアドレスを仮想マシン３０ＡのＩＰから仮想ＬＢ７０のＩＰに書き換えて転送する。これは、送信元ＩＰアドレスが仮想ＬＢ７０のＩＰでなければ仮想ルータ２０で正しくＮＡＴされず、クライアント４０側に到達した時点でパケットが破棄されてしまうため、送信元ＩＰアドレスを仮想マシン３０ＡのＩＰから仮想ＬＢ７０のＩＰに書き換えてパケットが破棄されないようにしている。
【００７３】
例えば、図１５の例では、送信元ＩＰアドレスを仮想マシン３０Ａに対応する「10.0.0.1」から仮想ＬＢ７０に対応する「10.0.0.101」に変更する。これにより、仮想ルータ２０では、「10.0.0.101」から「x.x.x.x」に正しくＮＡＴされ、クライアント４０側に到達した時点でパケットが破棄されることがなく、適切に通信を行うことが可能である。
【００７４】
つまり、例えば、送信元ＩＰアドレスが仮想マシン３０Ａのアドレスのままでは、図１０に例示するように仮想マシン３０Ａに対応する外部ＮＷ側ＩＰである「y.y.y.y」にＮＡＴされ、クライアント４０が送信元ＩＰアドレス「x.x.x.x」と違うＩＰから受信することとなり、破棄されるからである。これに対して、第一の実施形態に係る通信システム１００では、送信元ＩＰアドレスを仮想マシン３０Ａに対応する「10.0.0.1」から仮想ＬＢ７０に対応する「10.0.0.101」に変更することで、送信元ＩＰアドレスを「10.0.0.101」から「x.x.x.x」に正しくＮＡＴしているので、パケットが破棄されることはなく、適切に通信を行うことができる。
【００７５】
次に、図１６に示すように、仮想ルータ２０は、仮想マシン３０Ａからクライアント４０に宛てた復路のパケットを受信すると、図１５を用いて前述したように、パケットの送信元ＩＰアドレスが仮想ＬＢ７０のＩＰに書き換えられているため、仮想ルータ２０は自身のＮＡＴテーブルに従って送信元ＩＰアドレスを仮想マシン３０Ａに対応する外部ＮＷ側ＩＰであるx.x.x.xにＳＮＡＴしてクライアント４０に転送する。図１６に例示するように、仮想ルータ２０は、送信元ＩＰアドレスが「10.0.0.101」から「x.x.x.x」に、ＳＮＡＴしてクライアント４０に転送する。
【００７６】
このように、第一の実施形態に係る通信システム１００では、仮想ＮＷ６０による動的な経路制御を併用することで、One-Arm方式を採用した仮想ＬＢ７０を導入可能とする。また、通信システム１００による方式では、ユーザが任意に作成してリアルサーバとして利用する仮想マシン３０に対して、仮想ＬＢ７０をOne-Arm方式で利用するための個別設定が不要であり、さらにクライアントのＩＰアドレスをリアルサーバに通知可能とする。このように第一の実施形態に係る通信システム１００では、One-Arm方式を利用するための設定にかかる負担を軽減することが可能である。
【００７７】
また、通信システム１００では、仮想ＮＷ６０による動的な経路制御を併用し、ＤＳＲ方式を採用した仮想ＬＢ７０を導入可能とする。通信システム１００の方式では、ユーザが任意に作成してリアルサーバとして利用する仮想マシン３０に対して、ＤＳＲ方式を利用するための個別設定が不要であり、ＤＳＲ方式を利用するための設定にかかる負担を軽減することが可能である。
【００７８】
仮想ＮＷコントローラ１０は、仮想ＮＷ６０に対して「宛先ＩＰが仮想ロードバランサのＩＰだが、宛先ＭＡＣが仮想ロードバランサでないパケットは、仮想ロードバランサからＤＳＲ方式で仮想マシン宛に転送されているパケットと見なし、宛先ＩＰアドレスを宛先ＭＡＣに対応する仮想マシンのＩＰアドレスに書き換える」という往路ルール（Open  Flowにおけるフローテーブルに相当）を追加する。これにより、仮想マシンに特別な設定をせずとも、仮想マシンが仮想ロードバランサから転送（負荷分散）されてきたパケットを自分宛のものとして正常に処理することが可能となる。
【００７９】
また、仮想ＮＷコントローラ１０は、仮想ＬＢ７０宛のパケットを検知したとき、仮想ＮＷ６０に対して復路ルールを追加し、負荷分散先の仮想マシンからクライアントへ戻るパケット（通信の復路）が正しく仮想ルータでＮＡＴされ、クライアント４０が正常に受け取れるようにする。具体的には、「宛先ＩＰ、宛先ポートが仮想ＬＢ宛パケット（往路における仮想ＬＢ宛パケット）の送信元ＩＰアドレス、送信元ポートに一致しており、送信元ポートが仮想ＬＢの待ち受けポートに一致している通信は、仮想ＬＢ７０で負荷分散された通信の復路パケットであると見なし、送信元ＩＰアドレスを仮想ロードバランサのＩＰアドレスに書き換える」という復路ルールを仮想ネットワークに追加する。なお、この復路ルールが無い場合、仮想ルータ２０で復路パケットの送信元ＩＰアドレスをクライアント４０からの往路パケットの宛先ＩＰアドレス（つまり、仮想ルータのＮＡＴルールで仮想ロードバランサの内部ＩＰと対応付けられているＩＰアドレス）に変換することができず、別のＮＡＴルールによってクライアントが要求を送信したＩＰとは異なるＩＰにＮＡＴされてしまい、復路パケットがクライアント４０側に到達した時点で破棄されてしまうという問題が起こる。
【００８０】
［仮想ＮＷコントローラ１０による処理］
次に、図１７および図１８を用いて、第一の実施形態に係る仮想ＮＷコントローラ１０による処理を説明する。図１７は、第一の実施形態に係る仮想ＮＷコントローラにおける往路設定処理の流れを説明するためのフローチャートである。図１８は、第一の実施形態に係る仮想ＮＷコントローラにおける復路設定処理の流れを説明するためのフローチャートである。
【００８１】
まず、図１７を用いて、仮想ＮＷコントローラ１０における往路設定処理の流れを説明する。図１７に示すように、仮想ＮＷコントローラ１０は、仮想ＬＢ７０の情報を受信したか否かを判定する（ステップ１０１）。例えば、仮想ＮＷコントローラ１０は、仮想ＬＢ７０の情報として、仮想ＮＷ６０に新たに接続された仮想ＬＢ７０のＩＰアドレスおよび待受ポート番号を受信したか否かを判定する。この結果、仮想ＮＷコントローラ１０は、仮想ＬＢ７０の情報を受信すると（ステップ１０１肯定）、「未知の送信元ＩＰアドレスから仮想ＬＢ７０宛のパケットを受信した場合、パケットを仮想ＬＢ７０に転送しつつ、自コントローラにも同じパケットを送信する」というルール（転送ルール）を仮想ＮＷ６０に追加する（ステップ１０２）。
【００８２】
そして、仮想ＮＷコントローラ１０は、宛先ＩＰが仮想ＬＢ７０のＩＰであるが、宛先ＭＡＣが仮想ＬＢ７０でないパケットは、仮想ＬＢ７０からＤＳＲ方式でリアルサーバ（仮想マシン３０）に転送されているパケットと見なし、宛先ＩＰアドレスを宛先ＭＡＣに対応するもの（仮想ＬＢ７０のＩＰアドレスからいずれかの仮想マシンのＩＰアドレス）に書き換えるというルール（往路ルール）を仮想ＮＷ６０に追加する（ステップ１０３）。
【００８３】
次に、図１８を用いて、仮想ＮＷコントローラ１０における復路設定処理の流れを説明する。図１８に示すように、仮想ＮＷコントローラ１０は、仮想ＮＷ６０から往路のパケットを受信すると（ステップ２０１肯定）、受信した往路のパケットが仮想ＬＢ７０宛てのパケットであるか否かを判定する（ステップ２０２）。具体的には、仮想ＮＷコントローラ１０は、受信した往路のパケットのヘッダに含まれる宛先ＩＰおよび宛先ポートが仮想ＬＢ情報記憶部１３ａに記憶されたＩＰアドレスおよび待受ポートと一致するか否かを判定する。
【００８４】
この結果、仮想ＮＷコントローラ１０は、受信した往路のパケットが仮想ＬＢ７０宛てのパケットであると判定した場合には（ステップ２０２肯定）、「クライアント宛ての戻り通信は、送信元ＩＰアドレスを仮想ＬＢ７０のＩＰに書き換える」というルール（復路ルール）を仮想ＮＷ６０に追加する（ステップ２０３）。また、仮想ＮＷコントローラ１０は、受信したパケットが仮想ＬＢ７０宛てのパケットでないと判定した場合には（ステップ２０２否定）、そのまま処理を終了する。
【００８５】
[第一の実施形態の効果]
上述してきたように、第一の実施形態に係る通信システム１００の仮想ＮＷコントローラ１０は、クライアント４０から送信された往路データを複数の仮想マシン３０Ａ〜３０Ｃのうちのいずれかの仮想マシン３０に転送する仮想ＬＢ７０が接続される仮想ＮＷ６０を形成する通信機器に対して、往路データの送信先ＩＰアドレスが仮想ＬＢ７０のＩＰアドレスであって、かつ、送信先ＭＡＣアドレスが仮想ＬＢ７０のＭＡＣアドレスでない場合には、送信先ＩＰアドレスを仮想マシン３０のＩＰアドレスに書き換える往路ルールを設定する。そして、仮想ＮＷコントローラ１０は、クライアント４０から送信された往路データの送信先が仮想ＬＢ７０である場合には、通信機器に対して、復路データの送信元ＩＰアドレスを仮想ＬＢ７０のＩＰアドレスに書き換える復路ルールを設定する。このため、One-Arm方式およびＤＳＲ方式を利用するため負担を軽減し、適切にサービスを提供することが可能である。
【００８６】
つまり、上述したように、第一の実施形態に係る通信システム１００では、仮想ＮＷ６０による動的な経路制御を併用することで、One-Arm方式を採用した仮想ＬＢ７０を導入可能とする。例えば、図１９に例示するように、ユーザが、サービスを提供中の仮想マシンの負荷が大きくなってきたので、仮想ロードバランサを導入して負荷分散したい場合に、ユーザが任意に作成してリアルサーバとして利用する仮想マシン３０に対して、仮想ＬＢ７０をOne-Arm方式で利用するための個別設定が不要である。このため、第一の実施形態に係る通信システム１００では、One-Arm方式を利用するための設定にかかる負担を軽減することが可能である。
【００８７】
また、通信システム１００では、仮想ＮＷ６０による動的な経路制御を併用し、ＤＳＲ方式を採用した仮想ＬＢ７０を導入可能とする。通信システム１００の方式では、ユーザが任意に作成してリアルサーバとして利用する仮想マシン３０に対して、ＤＳＲ方式を利用するための個別設定が不要であり、ＤＳＲ方式を利用するための設定にかかる負担を軽減することが可能である。このように、既存の仮想環境の構成を変更せずに、処理性能の高いＤＳＲ方式で仮想ロードバランサを追加可能となる。
【００８８】
つまり、仮想ＬＢ７０でＳＮＡＴをしない場合、あるいはユーザが作成した負荷分散先の仮想マシン３０に個別の設定をしない場合であっても、仮想ロードバランサをOne-Arm方式で導入することが可能となるため、既存のネットワーク構成への影響を抑えつつ簡単に導入することが可能である。また、ユーザの仮想マシン３０に個別の設定をすることなくＤＳＲ方式のロードバランスを実現することができるため、仮想ＬＢ７０の負荷を低く抑え、高速な負荷分散が可能となる。従って、ユーザは既存の仮想環境上システムに対して簡単に仮想ＬＢ７０を導入することが可能というOne-Arm方式のメリットを享受でき、事業者はDSR方式によるユーザエクスペリエンスの向上とデータセンタ内の計算資源やネットワーク資源の消費抑制というメリットが得られる。
【００８９】
このように、ユーザが仮想環境上に構築したシステムに、One-Arm方式かつＤＳＲ方式を採用した仮想ＬＢ７０を導入する際にＳＮＡＴや仮想マシンに対する特別な設定が必要であったが、仮想ＮＷ６０による動的な経路制御を利用することでＳＮＡＴと仮想マシンへの設定をすることなく導入が可能となった。これによって、既存の仮想環境上システムに対する影響を最小限に抑えつつ、低い負荷で高速な負荷分散が可能な仮想ロードバランサが実現されるため、ユーザエクスペリエンス向上や、クラウド事業者の計算資源、ネットワーク資源の効率的な利用が可能となる。
【００９０】
［システム構成等］
図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、往路設定部１２ｂと復路設定部１２ｃとを統合してもよい。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００９１】
また、本実施形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００９２】
［プログラム］
また、上記実施形態において説明した仮想ＮＷコントローラ１０が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。例えば、第一の実施形態に係る仮想ＮＷコントローラ１０が実行する処理をコンピュータが実行可能な言語で記述した通信制御プログラムを作成することもできる。この場合、コンピュータが通信制御プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかる通信制御プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録され通信制御プログラムをコンピュータに読み込ませて実行することにより上記第一の実施形態と同様の処理を実現してもよい。以下に、図２に示した仮想ＮＷコントローラ１０と同様の機能を実現する通信制御プログラムを実行するコンピュータの一例を説明する。
【００９３】
図２０は、通信制御プログラムを実行するコンピュータ１０００を示す図である。図２０に例示するように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有し、これらの各部はバス１０８０によって接続される。
【００９４】
メモリ１０１０は、図２０に例示するように、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、図２０に例示するように、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、図２０に例示するように、ディスクドライブ１１００に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１１００に挿入される。シリアルポートインタフェース１０５０は、図２０に例示するように、例えばマウス１１１０、キーボード１１２０に接続される。ビデオアダプタ１０６０は、図２０に例示するように、例えばディスプレイ１１３０に接続される。
【００９５】
ここで、図２０に例示するように、ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、上記の通信制御プログラムは、コンピュータ１０００によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ１０９０に記憶される。
【００９６】
また、上記実施形態で説明した各種データは、プログラムデータとして、例えばメモリ１０１０やハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、メモリ１０１０やハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出し、各種処理手順を実行する。
【００９７】
なお、通信制御プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、通信制御プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【００９８】
１０  仮想ＮＷコントローラ
１１  通信処理部
１２  制御部
１２ａ  受信部
１２ｂ  往路設定部
１２ｃ  復路設定部
１３  記憶部
１３ａ  仮想ＬＢ情報記憶部
２０  仮想ルータ
３０Ａ〜３０Ｃ  仮想マシン
４０  クライアント
５０  外部ＮＷ
６０  仮想ＮＷ
７０  仮想ＬＢ
１００  通信システム
【図１】
0006053032.tif 000002
【図２】
0006053032.tif 000003
【図３】
0006053032.tif 000004
【図４】
0006053032.tif 000005
【図５】
0006053032.tif 000006
【図６】
0006053032.tif 000007
【図７】
0006053032.tif 000008
【図８】
0006053032.tif 000009
【図９】
0006053032.tif 000010
【図１０】
0006053032.tif 000011
【図１１】
0006053032.tif 000012
【図１２】
0006053032.tif 000013
【図１３】
0006053032.tif 000014
【図１４】
0006053032.tif 000015
【図１５】
0006053032.tif 000016
【図１６】
0006053032.tif 000017
【図１７】
0006053032.tif 000018
【図１８】
0006053032.tif 000019
【図１９】
0006053032.tif 000020
【図２０】
0006053032.tif 000021