添付図面を参照しながら本発明の実施形態を説明する。可能な場合には、同一の部分には同一の符号を付して、重複する説明を省略する。
[第一実施形態]
図1は、本実施形態の通信制御システムのシステム構成を示すシステム構成図である。図1に示すとおり、この通信制御システムは、オープンフローコントローラ100、オープンフロースイッチ(SW)部200、クライアント端末群300、およびサーバ装置群400とから構成されている。
このオープンフローコントローラ100は、オープンフロースイッチ部200を制御する通信制御装置であって、クライアント端末群300からの接続要求に対して、サーバ装置群400に接続するように、オープンフロースイッチ部200を制御するものである。以下、各装置について説明する。
オープンフローコントローラ100は、オープンフロースイッチ部200の転送制御を行うものであって、スイッチ制御部101、NW(ネットワーク)管理部102(制御手段)、管理者インターフェース(I/F)部103、閉塞サーバ情報管理部104(記憶手段)、およびトランスポート層タイムアウト情報管理部105を含んで構成されている。このオープンフローコントローラ100は、図2に示されるハードウェアにより構成されている。
図2は、オープンフローコントローラ100のハードウェア構成図である。図1に示されるオープンフローコントローラ100は、物理的には、図2に示すように、CPU11、主記憶装置であるRAM12及びROM13、入力デバイスであるキーボード及びマウス等の入力装置14、ディスプレイ等の出力装置15、ネットワークカード等のデータ送受信デバイスである通信モジュール16、ハードディスク等の補助記憶装置17などを含むコンピュータシステムとして構成されている。図1において説明した各機能は、図2に示すCPU11、RAM12等のハードウェア上に所定のコンピュータソフトウェアを読み込ませることにより、CPU11の制御のもとで入力装置14、出力装置15、通信モジュール16を動作させるとともに、RAM12や補助記憶装置17におけるデータの読み出し及び書き込みを行うことで実現される。以下、図に示す機能ブロックに基づいて、各機能ブロックを説明する。
スイッチ制御部101は、オープンフロースイッチ部200を制御する部分であり、ネットワーク管理部102による管理下において、オープンフロースイッチ部200においてどのパス(ノード)を通してフロー情報を転送するか制御する部分である。また、このスイッチ制御部101は、オープンフロースイッチ部200におけるフローテーブルにマッチングしなかったパケットデータを受け取り、ネットワーク管理部102に受け渡すことができる。
ネットワーク管理部102は、ネットワークの管理者や、ネットワーク状態に応じてオープンフロースイッチ部200に対してどのようなフローテーブルを作成するか判断して制御する部分である。すなわち、ネットワーク管理部102は、閉塞サーバ情報管理部104において記憶されているサーバ閉塞情報や、トランスポート層タイムアウト情報管理部105に記憶されているタイムアウト情報にしたがって、フローテーブルを作成する部分である。この作成したフローテーブルは、スイッチ制御部101を介して、オープンフロースイッチ部200に記憶される。そのほか、ネットワーク管理部102には、スイッチ制御部101を介して、オープンフロースイッチ部200に対する各種制御を行う。
管理者インターフェース(I/F)部103は、ネットワークの管理者が閉塞処理などのネットワーク制御シナリオ(すなわち閉塞対象となるサーバ装置を特定するための情報)の追加や削除を行うためのインターフェース部分である。この追加や削除のための処理は、スイッチ制御部101を介して行われる。
閉塞サーバ情報管理部104は、管理者から受け取ったサーバ閉塞情報を記憶する部分である。ネットワーク管理部102は、この閉塞サーバ情報管理部104に記憶されているサーバ閉塞情報にしたがって、フローテーブルを作成することになる。
トランスポート層タイムアウト情報管理部105は、各種トランスポート層のサービスが用いるタイムアウト値を記憶する部分である。例えば、TCP(Transmission Control Protocol)では、タイムアウト値として、Keepaliveのデフォルト値である2時間という値を記憶する。
つぎにオープンフロースイッチ部200について、説明する。オープンフロースイッチ部200は、複数のノードからなるスイッチ群であり、各ノードは、データ転送部201(スイッチング手段)、コントローラ部202、およびフローテーブル(Flow Table)管理部203(タイマ手段、管理テーブル)から構成されている。なお、本実施形態では一つのオープンフロースイッチからなるものとして説明する。以下、各構成について説明する。
データ転送部201は、クライアント端末300とサーバ装置400との間のフローデータの転送処理を行う部分である。このデータ転送部201は、フローテーブル管理部203に記憶されているフローテーブルにしたがって、クライアント端末300とサーバ装置400との振分処理を行う。
コントローラ部202は、オープンフローコントローラ100からの指示を受け付け、フローテーブル管理部203に記憶されているフローテーブルにしたがって、データ転送部201の転送処理を制御する部分である。
フローテーブル管理部203は、管理テーブルであるフローテーブルを記憶し、コントローラ部202を介して、オープンフローコントローラ100の要求に合わせて、フローテーブルの変更処理を行う部分である。
図3および図4に、フローテーブルの具体例について説明する。フローテーブルは複数のエントリーを持ち、各エントリー(フローエントリー)はマッチフィールド(Match Field)とアウトプットアクション(OUTPUT ACTION)とアイドルタイムアウトを持つ。マッチフィールドは、プロトコルタイプ、入力ポート、送信元MACアドレス、送信元IPアドレス、送信元TCP/IPポート、宛先MACアドレス、宛先IPアドレス、宛先TCP/IPポートから構成される。オープンフロースイッチ部200に入力されたパケットはこのマッチフィールドとのマッチングを行い、パケットとマッチしたフローエントリーに対応したアウトプットアクション(OUTPUT ACTION)を行う。アイドルタイムアウトはマッチするパケットが入力されなかった場合に対応するフローエントリーを削除するタイムアウト時間を示す。
本実施の形態では、図3と図4に示されるように、ARP用のフローテーブルと、TCP用のフローテーブルがフローテーブル管理部203に記憶される。
図3は、本実施の形態におけるARP用のフローテーブルの一部を例として示している。ARP用のフローテーブルであるため、マッチフィールドのプロトコルタイプとして“ARP”が設定されている。例として、1番目のフローエントリーは、クライアント301からサーバ401へのARP送信・応答のためのエントリーを示している。このため、入力ポートとして“クライアント端末301の接続ポート”、送信元MACアドレスは“ANY”、送信元IPアドレスとして“クライアント端末301のIPアドレスS”、送信元TCP/IPポートとして“ANY”、宛先MACアドレスとして“ANY”、宛先IPアドレスとして“サーバ401のIPアドレスA”、宛先TCP/IPポートとして“ANY”、アウトプットアクションとして出力ポートが“サーバ401の接続ポート”、アイドルタイムアウトは“なし”、が対応付けられている。なお、上述“ANY”は、ワイルドカードを示しており、MACアドレスやTCP/IPポート番号等を規定していないことを示している。本実施形態ではARP用フローテーブルを設定しているが、各クライアントと各サーバにおいて、あらかじめARPテーブルにMACアドレスとIPアドレスの対応を静的に設定しておくことで、ARPパケットをネットワークに送出しないようにすることも可能である。このとき、ARP用フローテーブルは不要となる。
図4は、TCP用のフローテーブルの一部を例として示している。TCP用のフローテーブルであるため、プロトコルタイプにはTCPが指定されている。本実施形態では、クライアント300からサーバ400への接続を、クライアントに意識させず、オープンフローコントローラ100が振り分けるために、サーバ400はサーバ全体での仮想的な代表IPアドレスとしてXを、代表MACアドレスとしてxを設定し、クライアント300は代表IPアドレスと代表MACアドレスに対して接続要求を行うようにしている。このとき、オープンフロースイッチ200を介して、クライアント側からサーバへのパケットの宛先アドレスは代表IPアドレス・MACアドレスからサーバ個別のIPアドレス・MACアドレスに変換され、逆方向のサーバからクライアント側へのパケットも同様に、送信元アドレスがサーバ個別のIPアドレス・MACアドレスから代表IPアドレス・MACアドレスに変換される。例として、図4の1番目のフローエントリーは、クライアント301がTCPにてサーバの代表IPアドレスX・代表MACアドレスxに対してパケットを送信する場合に、そのパケットがサーバ301に向けて宛先アドレスが書き換えられ、サーバ301に送信するためのエントリーを示している。このとき、宛先IPアドレスの書き換えの指定(ここでは、代表IPアドレスXをサーバ401のIPアドレスAに変更する)、宛先MACアドレスの書き換え指定(ここでは、代表MACアドレスxをサーバ401のMACアドレスaにする)は、アウトプットアクションにて設定する。また、アイドルタイムアウトには、TCPのタイムアウト時間を設定している。
つぎに、このようなオープンフロー技術を利用した通信制御システムについて、その状況ごとに応じた処理を説明する。
[初期状態および通常状態]
図5は、通信制御システムにおけるクライアント端末群300とサーバ装置群400との通信接続の一例を示す模式図である。この図5に示される一例では、クライアント端末301とサーバ装置401とが通信相手として設定され、クライアント端末302とサーバ装置402とが通信相手として設定されているものとして、通信している様子を模式的に示してものである。上述したとおり、オープンフローコントローラ100がオープンフロースイッチ部200を制御することにより、上述のとおり、定められた通信相手と通信接続することができる。
図6は、フローテーブル管理部203に記憶されているTCP用のフローテーブルの一例を簡略化した説明図である。フローテーブルは、実際は図4に示される情報であるが、説明の便宜上、以降、図6に示す簡略化したフローテーブルを用いる。図6に示されるとおり、フローテーブルには、送信元装置、出力先装置、およびアイドルタイムアウト情報が対応付けて記憶されている。図5に示される通信接続を行うにあたって、フローテーブルには、クライアント端末301とサーバ装置401とが相互に送信元装置、出力先装置として設定される必要がある。クライアント端末302およびサーバ装置402についても同様である。なお、それぞれクライアント端末301のIPアドレスをS、MACアドレスをs、クライアント端末302のIPアドレスをT、MACアドレスをt、クライアント端末303のIPアドレスをU、MACアドレスをuとする。
このように構成された、通信制御システムの処理について説明する。図7は、通信制御システムの通常状態における通信手順を示したシーケンス図である。
まだ通信が発生していない初期状態では、ARP用およびTCP用のフローテーブルは存在していない(S101)。まず、オープンフローコントローラ100は、ネットワーク管理部102により、各クライアント端末300およびサーバ装置400間のARP(Address Resolution Protocol)用フローテーブルをオープンフロースイッチ部200に対して設定する(S102)。そして、オープンフロースイッチ部200では、フローテーブル管理部203に、ARP用のフローテーブルが記憶される(S103)。このようにARP用のフローテーブルを最初に設定しておくことにより、クライアント端末とサーバ装置間で通信を行うためのMACアドレスを解決することができるようになる。なお、このARP用フローテーブルの生成処理は必ずしも必須なものではない。システム管理者によりARP用フローテーブルを事前にオープンフロースイッチに設定しておいても良いし、上述したとおり、各クライアントと各サーバにおいて、あらかじめARPテーブルに通信相手先のMACアドレスとIPアドレスの対応を静的に設定しておくことで、ARPパケットが送出されなくなるため、ARP用フローテーブルを不要とすることができる。
つぎに、クライアント端末301が、代表IPアドレスXに対してTCP接続をするために必要となる、代表IPアドレスXに対応するMACアドレスを取得するため、ARP要求を行う(S104)。オープンフロースイッチ部200では、代表IPアドレスXに対応するフローテーブルが作成されていないため、コントローラ部202により、オープンフローコントローラ100に、代表IPアドレスXに対するARP要求パケットが転送される(S105)。
オープンフローコントローラ100では、ネットワーク管理部102が、代表IPアドレスXに対する代表MACアドレスxを、クライアント端末301に対してARP応答する(S106)。
そして、クライアント端末301が、ARP応答を受けとり代表IPアドレスXに対するMACアドレスxを得ると、代表IPアドレスXに対してTCP接続要求を行う(S107)。オープンフロースイッチ部200では、TCPによる接続要求を受けると、このクライアント端末301に対応するフローエントリーがTCP用フローテーブルにあるか否かが、コントローラ部202により、判断される。ここでは、クライアント端末301のIPアドレスSから代表IPアドレスXへ接続するフローエントリーがないため、コントローラ部202により、対応するフローエントリーが記憶されていないと判断され、オープンフローコントローラ100に、代表IPアドレスXへのTCPによる接続要求パケットが転送される(S108)。
オープンフローコントローラ100では、ネットワーク管理部102により、一の接続先となるサーバ装置400(401または402)が、各サーバ装置400における負荷が均等となるようにランダムに決定される。本実施形態では、サーバ装置401が決定される(S109)。
オープンフローコントローラ100では、ネットワーク管理部102により、S109で決定した接続先サーバ401とクライアント端末301がTCPにて接続されるよう、オープンフロースイッチ部200に対して、フローエントリーの登録指示が行われる(S110)。この登録指示には、クライアント端末301からサーバ装置401へのTCP通信と、サーバ装置401からクライアント端末301へのTCP通信を行うためのフローエントリーが含まれる(図6、詳しくは図4の1番目と2番目のフローエントリーが対応する)。そして、オープンフロースイッチ部200のフローテーブル管理部203では、登録指示に基づいたフローエントリーが記憶される(S111)。
そうして、ネットワーク管理部102により、すでにS108でオープンフロースイッチ部200から受信していたTCP接続要求のパケットがオープンフローコントローラ100からオープンフロースイッチ部200に送信され(S112)、オープンフロースイッチ部200のデータ転送部201では、フローテーブルにしたがって、代表IPアドレスXおよび代表MACアドレスxは、それぞれサーバ装置401の宛先IPアドレスAとMACアドレスaに書き換えられ、転送処理が行われる(S113)。
次に、サーバ装置401がオープンフロースイッチ部200より転送されたTCPの接続要求パケットを受け取ると、クライアント端末301へのTCP応答のために、クライアント端末301のIPアドレスSに対してARP要求が行われる(S114)。クライアント端末301では、このARP要求に対して、クライアント端末301のIPアドレスSに対するMACアドレスsがARPにより応答される(S115)。
サーバ装置401では、ARP応答により通知されたクライアント端末301のMACアドレスsとクライアント端末301のIPアドレスSを用いてTCP応答がなされ(S116)、オープンフロースイッチ部200では、データ転送部201により、フローテーブルに従い、送信元のサーバ装置401のIPアドレスAとMACアドレスaとが代表IPアドレスのXと代表MACアドレスのxに書き換えられ、クライアント端末301に転送される(S117)。このようにして、クライアント端末301とサーバ装置401とは接続が確立される(S118)。以降、クライアント端末302とサーバ装置402との間も同様の処理により接続が確立される(S119)。
[サーバ装置が閉塞状態になったときの処理]
つぎに、サーバ装置401が閉塞状態になったときに、新たにクライアント端末303による接続要求を受け付けた場合の処理について説明する。
図8は、閉塞処理後におけるクライアント端末300とサーバ装置400との通信接続の一例を示す模式図である。図8に示されるとおり、クライアント端末301とサーバ装置401とが接続されており、クライアント端末302とサーバ装置402とが接続されている状態において、サーバ装置401が閉塞状態に遷移した後に、新たにクライアント端末303が接続要求を送信した場合、その接続はサーバ装置402に接続されることを示している。
図9に、閉塞処理後に、新たに通信接続が起こったときのフローテーブルを簡略化した具体例を示す。この具体例では、クライアント端末303とサーバ装置402とが通信できるように新たにフローエントリーが作成され、フローテーブルに記憶さていることを示す。この例では、サーバ装置401は閉塞状態であるため、ネットワーク管理部102において、サーバ装置401を選択することができないため、サーバ装置402が選択されている。
図10は、サーバ装置401が閉塞状態であるときに、新たにクライアント端末303が接続要求をしたときの処理を示すシーケンス図である。なお、この実施形態においては、例えば図7に示したシーケンス図による通常状態が確立した後の処理を示しており、ARP用フローテーブル、図6、詳しくは図4のTCP用フローテーブルは既に備えられているものとする。ここからさらに図10のシーケンス処理を行うことで、図9に示すとおり、TCP用フローテーブルにクライアント端末303からサーバ装置402へのTCP通信、およびサーバ装置402からクライアント端末303へのTCP通信のそれぞれのフローエントリーが追加され記憶される。
まず、前提として、例えば図7に示されるシーケンスによって通常状態が確立され、ARP用フローテーブルと図6に示したTCP用フローテーブルがオープンフロースイッチ200に備えられている(S200)。そして、オープンフローコントローラ100のオペレータにより、管理者インターフェース部103を介して、サーバ装置401が閉塞状態であることを示す閉塞処理要求がなされる。そして、オープンフローコントローラ100の閉塞サーバ情報管理部104にサーバ閉塞情報が記憶される。このようにして、サーバ装置401は閉塞モードとして扱われる(S201)。
このとき、新たにクライアント端末303がサーバ群400に接続しようとし、サーバ群400の代表IPアドレスXに対してTCPの接続要求しようとするとする。このとき、TCP接続をするために必要となる、代表IPアドレスXに対応するMACアドレスを取得するため、クライアント端末303から代表IPアドレスXに対するARP要求が行われる(S202)。オープンフロースイッチ部200のARP用フローテーブルには、代表IPアドレスXに対応するフローエントリーが記憶されていないため、コントローラ部202により、オープンフローコントローラ100に、代表IPアドレスXに対するARP要求パケットが転送される(S203)。オープンフローコントローラ100では、ネットワーク管理部102により、代表IPアドレスXに対応する代表MACアドレスxが判断され、この代表MACアドレスxがスイッチ制御部101により、ARPで応答される(S204)。
クライアント端末303がARP応答を受信し代表IPアドレスXに対応するMACアドレスxを得ると、代表IPアドレスXに対してTCP接続要求を行う(S205)。オープンフロースイッチ部200では、コントローラ部202により、クライアント端末303のIPアドレスUから代表IPアドレスXへ接続するフローエントリーがないため、対応するフローエントリーがフローテーブルにないと判断され、代表IPアドレスXへのTCPによる接続要求パケットが、オープンフローコントローラ100に転送される(S206)。
オープンフローコントローラ100では、ネットワーク管理部102により、閉塞サーバ情報管理部104に記憶されているサーバ閉塞情報に基づいて、サーバ装置401を除いたサーバ装置群400のうちのいずれかが選択される(S207)。ここでは、サーバ装置402が選択されることになる。そして、オープンフローコントローラ100では、ネットワーク管理部102により、クライアント端末303からサーバ装置402へのTCP通信、およびサーバ装置402からクライアント端末303へのTCP通信のフローエントリーの登録指示がオープンフロースイッチ部200に送信され、フローエントリーがフローテーブルに記憶される(S208,S209)(図9の5番目と6番目のフローエントリーが対応する)。
そして、オープンフローコントローラ100では、ネットワーク管理部102により、クライアント端末303の代表IPアドレスXに向けたTCP接続要求のパケットがオープンフロースイッチ部200に転送され(S210)、オープンフロースイッチ部200では、データ転送部201により、フローテーブルにしたがって、TCP接続要求のパケットの宛先IPアドレスXとMACアドレスxとを、サーバ装置402のIPアドレスBとMACアドレスbに書き換え、サーバ装置402への転送処理を行う(S211)。
次に、サーバ装置402がオープンフロースイッチ部200より転送されたTCP接続要求パケットを受け取ると、クライアント端末303へのTCP応答のために、クライアント端末303のIPアドレスUに対してARP要求が行われる(S212)。クライアント端末303では、このARP要求に対して、クライアント端末303のIPアドレスUに対するMACアドレスuをARPにより応答する(S213)。
サーバ装置402は、ARP応答により得たクライアント端末303のMACアドレスuとIPアドレスUを用いてクライアント端末303に対してTCP応答し(S214)、オープンフロースイッチ部200では、コントローラ部202により、フローテーブルに従い、送信元のサーバ装置402のIPアドレスBとMACアドレスbとが代表IPアドレスXとMACアドレスxに書き換えられ、クライアント端末303へ転送される(S215)。このようにして、クライアント端末303とサーバ装置402とは接続が確立される(S216)。
このようにして、サーバ装置群400のうちの一つまたは複数が閉塞状態となった場合、その閉塞対象となったサーバ装置400を接続先サーバ装置とすることなく、適切なサーバ装置を選択することができる。
[フローテーブルからのフローエントリーの削除処理]
つぎに、サーバ装置401が閉塞処理された後に、クライアント端末301とサーバ装置401間を接続するオープンフロースイッチ部200のTCP用フローテーブルのフローエントリーが、TCPのセッションの終了にともない削除され接続状態が切断されたときの処理について説明する。図11は、通信制御システムにおいてクライアント端末301とサーバ装置401間を接続するTCP用フローテーブルのフローエントリーが削除され、接続状態が切断されたときの処理を示す模式図である。図11に示されるとおり、ここでは、クライアント端末301とサーバ装置401が、クライアント端末302とサーバ装置402が、クライアント端末303とサーバ装置402が、それぞれ接続状態であったが、サーバ装置401が閉塞状態となった後に、クライアント端末301とサーバ装置401との接続状態がTCPのセッションの終了にともない、対応するフローエントリーが削除されることにより、切断されたことを示している。
このとき、オープンフロースイッチ部200においては、クライアント端末301とサーバ装置401との通信アイドル状態(パケットの送受信が行われていない状態)が、あらかじめ設定したアイドルタイムアウト時間に設定したトランスポート層のタイムアウト値以上の時間継続した場合、クライアント端末301とサーバ装置401とのTCPセッションが終了したとみなし、フローテーブルから対応するフローエントリーの削除を行う。
一方で、クライアント端末301とサーバ装置401との通信アイドル状態が、アイドルタイムアウト時間に設定したトランスポート層のタイムアウト値以上の時間継続する前に通信が発生し、アイドル状態から復旧した場合には、フローエントリーの削除は行わずに、そのフローエントリーを用いてクライアント端末301とサーバ装置401とのTCPセッションが継続される。
これにより、閉塞モードのサーバ装置401との通信時においても、アイドルタイムアウト時間を用いることで、TCPの通信が一時的に停止した場合でも、アイドルタイムアウト時間で示されているトランスポート層のタイムアウト時間の経過前に復旧すれば、対応するフローエントリーが削除されないため、TCPセッションを継続することが出来る。
図12に、フローエントリーが削除されるフローテーブルを示す説明図を示す。図12に示されるとおり、クライアント端末301とサーバ装置401との通信アイドル状態が、アイドルタイムアウト時間で示されているトランスポート層のタイムアウト値以上の時間、継続した場合、対応したフローエントリーが削除されることになる。ここでは、クライアント端末301がサーバ装置401とのTCPセッションを終了した場合、トランスポート層のタイムアウト時間経過後に、フローテーブル管理部203により、フローテーブルからそのフローエントリー(図12の1番目と2番目のフローエントリー)が削除される。
図13は、その処理を示すシーケンス図である。図13に示されるとおり、サーバ装置401の閉塞処理がオペレータにより行われ(S301)、オープンフローコントローラ100では、管理者インターフェース部103からサーバ閉塞情報が入力され、閉塞サーバ情報管理部104に記憶される(S302)。そして、クライアント端末301、あるいはサーバ装置401においてTCPセッション終了等の操作が行われ、クライアント端末301とサーバ装置401間の通信が停止すると(S303)、オープンフロースイッチ部200では、フローテーブル管理部203により、通信アイドル状態の計時処理が行われる(S304)。そして、その計時時間が対応するフローエントリーに記述されているアイドルタイムアウト時間に達すると、そのフローエントリーが削除される(S305)。また、一方でアイドルタイムアウト時間に達する前にクライアント端末301とサーバ装置401の通信が再開した場合には、計時時間がリセットされフローエントリーは削除されず、そのフローエントリーを用いてクライアント端末301とサーバ装置401間の通信が継続される。
このようにして、サーバ装置群400において閉塞処理が行われた場合に、フローエントリーのアイドルタイムアウト時間を用いてTCPセッションの継続状態を把握することで、接続中のTCPセッションを継続しつつ、TCPセッションを終了した接続に関してはフローエントリーが削除されるため、フローテーブルにフローエントリーがいつまでも残ることがなくなり、これにより適切なパケット転送処理を行うことができる。
[新たなセッションの要求があったときの処理]
つぎに、サーバ装置401が閉塞処理され、クライアント端末301とサーバ装置401とのTCPのセッションが終了した後(但し、フローエントリーのアイドルタイムアウト時間の満了前に)、新たにクライアント端末301がTCPセッションを開始するときの処理について説明する。図14は、通信制御システムにおいて、クライアント端末301とサーバ装置401とのTCPセッションが終了した後、新たにクライアント端末301がTCPセッションを開始するときの処理を示す模式図である。図14に示されるとおり、ここでは、クライアント端末301とサーバ装置401とのTCPセッションが終了状態となっている。但し、該TCPセッションに係るフローエントリーは、アイドルタイムアウト時間経過前であるために残存している。また、クライアント端末302とサーバ装置402が、クライアント端末303とサーバ装置402が、それぞれ接続状態となっている。このとき、クライアント端末301がサーバ装置群400に対して新たなTCPセッションの開始要求をした場合、オープンフローコントローラ100は、サーバ装置401に接続することなく、サーバ装置402に接続するようにフローテーブルにフローエントリーを登録する。
この実施形態では、オープンフロースイッチ部200においては、クライアント端末301とサーバ装置401とのTCPセッションが終了後、対応するフローテーブルが削除される前に、すなわちアイドルタイムアウト時間経過前に、クライアント端末301からサーバ装置群400に対して、先の通信とは異なる新たなTCPセッションの開始要求が行われたとする。このとき、フローテーブルのクライアント端末301とサーバ装置401とを接続するフローエントリーはまだ削除されていないが、アイドルタイムアウトにより、追って削除される。
図15は、クライアント端末301が新たにTCPのセッションを開始する際に、図9に示すフローテーブルに対してフローエントリーの追加が行われたフローテーブルを示す説明図である。図15に示されるとおり、クライアント端末301とサーバ装置401とのTCPのセッションが終了し、クライアント端末301が新たなTCPセッションを開始することに伴い、クライアント端末301に対応したフローエントリーを追加することになる。
ここでは、アイドルタイムアウトにより、クライアント端末301に対応するフローエントリーが削除される前に、新たなTCPセッション開始要求をクライアント端末301が行っているが、この新たなTCPセッション開始要求は、送信元TCP/IPポート番号が既存のTCPセッションと異なることにより、既存のフローエントリーで示されるTCPセッションとは別の新規TCPセッションとして扱われる。すなわち、オープンフロースイッチ部200では、コントローラ部202により新たなTCPセッション開始要求を、既存のTCPセッションに対応するフローエントリーで用いられた送信元TCP/IPポート番号(図4の送信元TCP/IPポートの欄)とのマッチングに基づいて新規TCPセッションを判断し、新規TCPセッションである場合にはパケットをオープンフローコントローラ100に送り、オープンフローコントローラ100の判断によりその出力先装置が決定され、フローエントリーが追加される。図15では、7番目と8番目のフローエントリーがクライアント端末301の新規TCPセッションに対応するフローエントリーとして追加されている。
つぎに、その処理シーケンスについて説明する。図16は、アイドルタイムアウト経過前に、通信切断されたクライアント端末301から新たに接続要求が来た場合の処理を示すシーケンス図である。
図16に示されるとおり、サーバ装置401の閉塞処理がオペレータにより行われ(S401)、オープンフローコントローラ100では、管理者インターフェース部103からサーバ閉塞情報が入力され、閉塞サーバ情報管理部104に記憶される(S402)。そして、クライアント端末301、あるいはサーバ装置401においてTCPのセッション終了等の操作が行われ、クライアント端末301とサーバ装置401間の通信が停止すると(S403)、オープンフロースイッチ部200では、フローテーブル管理部203によりフローテーブルに記述されているアイドルタイムアウト時間の計時処理が行われる(S404)。
本実施形態では、アイドルタイムアウト時間経過前に、クライアント端末301が代表IPアドレスXに対して、新たにTCPのセッションを開始しようとするものとする。これは以下の手順で行われる。ここでは、クライアント端末301は、先に代表IPアドレスXとTCPセッションを行っていたため、代表IPアドレスに対するMACアドレスxを知っているものとする。このため、代表IPアドレスXに対するARP要求は行われず、TCP接続要求から行う。
クライアント端末から代表IPアドレスXに対して接続要求がTCPにて行われる(S405)。このとき、オープンフロースイッチ部200では、TCPによる接続要求を受けると、新たなTCPのセッションのためクライアント端末301が使用するTCP/IPポート番号に対応するフローエントリーがフローテーブルにないと、コントローラ部202により判断され、オープンフローコントローラ100に、代表IPアドレスXへのTCP接続要求パケットが転送される(S406)。
オープンフローコントローラ100では、ネットワーク管理部102により、一の接続先となるサーバ装置400(401または402)をランダムに決定する。ここでの実施形態では、サーバ装置401は閉塞状態であるため、サーバ装置402が接続先に決定される(S407)。
オープンフローコントローラ100では、ネットワーク管理部102により、オープンフロースイッチ部200に対して、フローエントリーの登録指示が行われる(S408)。この登録指示では、クライアント端末301からサーバ装置402へのTCP通信、およびサーバ装置402からクライアント端末301へのTCP通信のフローエントリーが登録される。そして、オープンフロースイッチ部200のフローテーブル管理部203では、登録指示に基づいたフローエントリーが記憶される(S409)。
そうして、オープンフローコントローラ100は、すでにS409でオープンフロースイッチ部200から受信していた代表IPアドレスXへのTCP接続要求のパケットをオープンフロースイッチ部200に転送し(S410)、オープンフロースイッチ部200のデータ転送部201では、フローテーブルにしたがって、パケットの宛先アドレスを、代表IPアドレスXおよび代表MACアドレスxから、それぞれサーバ装置402のIPアドレスBとMACアドレスbに書き換え、サーバ装置402への転送処理を行う(S411)。
次に、サーバ装置402がオープンフロースイッチ部200より転送されたTCP接続要求パケットを受け取ると、クライアント端末301へのTCP応答のために、クライアント端末301のIPアドレスSに対してARP要求を行う(S412)。クライアント端末301では、この接続要求に対して、クライアント端末301のIPアドレスSに対するMACアドレスsがARPにより応答される(S413)。
サーバ装置402では、ARP応答により得たクライアント端末301のMACアドレスsとIPアドレスSを用いてクライアント端末301に対してTCP応答がなされ(S414)、オープンフロースイッチ部200では、データ転送部201により、フローテーブルに従い、送信元IPアドレスBとMACアドレスbとが代表IPアドレスXと代表MACアドレスxに書き換えられ、転送される(S415)。このようにして、クライアント端末301とサーバ装置402とは接続が確立される(S416)。
このようにして、サーバ装置400のいずれかが、閉塞状態となった際に、クライアント端末300との間のTCPセッションが終了した後に、クライアント端末300が新たにTCPセッションを開始すると、フローテーブルにおいて前セッションのフローエントリーがアイドルタイムアウト時間経過前で残っていても、TCPポート番号の違いにより前のTCPセッションと区別し、新たなフローエントリーを追加することで、他の閉塞状態でないサーバ装置400に対するパケット転送処理を適切に実行することができる。
[作用効果]
この第一実施形態のオープンフローコントローラ100によれば、複数のサーバ装置400のうち、転送の可否を示すサーバ装置400を示す転送可否情報として閉塞情報を閉塞サーバ情報管理部104が記憶している。そして、複数のクライアント端末300のうち、例えばクライアント端末301から通信接続要求を受けると、記憶されている閉塞情報(転送可否情報に相当)にしたがって、クライアント端末301からの接続要求等の通信情報を、複数のサーバ装置400のうち、転送可能な、例えば一のサーバ装置401に対して振り分け処理を行うよう、オープンフロースイッチ部200のフローテーブル管理部203(フローテーブル)に、エントリ情報であるフローエントリーを登録する。
これにより、オープンフロースイッチング部200は、クライアント端末300およびサーバ装置400のそれぞれからの通信情報を、フローテーブルにしたがって、それぞれの通信接続先に対して、各サーバ装置400の負荷を均等にして振分処理を行うことができる。よって、オープンフロースイッチング部200は、アプリケーションに依存することなく、適切な振分処理を行うことができるようになる。
このフローテーブルには、アイドルタイムアウトと呼ばれるタイマ情報が、フローエントリー(エントリ情報)ごとに対応付けて記憶されており、このタイマ情報に基づいてフローエントリーを削除することで、サーバ装置の閉塞等によって、通信が切断したサーバ装置に対するフローエントリーがいつまでも残ることがなく、適切な通信制御を行うことができる。加えて、フローエントリーがタイムアウトする前にクライアント端末300とサーバ装置400間の接続が復旧した場合には、タイムアウトがリセットされフローエントリーが消えず、これによりセッションが継続されるため、閉塞処理下であってもセッション継続中のクライアント端末の通信には影響を与えない。
なお、上述したとおり、転送可否情報である閉塞情報は、オープンフローコントローラ100のオペレータ又は各サーバ装置400からの指示に基づいて生成され、閉塞サーバ情報管理部104に記憶される。よって、閉塞情報等の情報を簡易に登録することができる。
また、本実施形態の通信制御システムは、クライアント端末300とサーバ装置400の接続切替を行うオープンフロースイッチ部200と、当該オープンフロースイッチ部200を制御するオープンフローコントローラ100とからなる通信制御システムである。そして、オープンフロースイッチ部200は、クライアント端末300およびサーバ装置400それぞれの通信接続先を示すフローエントリーを記憶するフローテーブルを記憶するフローテーブル管理部203管理部と、クライアント端末300およびサーバ装置400のそれぞれからの通信情報を、フローテーブルにしたがって、それぞれの通信接続先に対して振分処理を行うデータ転送部201とを備える。
よって、クライアント端末300およびサーバ装置400におけるアプリケーションに依存することなく、適切なフロー切替処理を行うことができる。
[第二実施形態]
つぎに、第二実施形態について説明する。この第二実施形態においては、仮想化サーバ技術を用いたスケールアウトにより、ユーザ処理に用いる仮想化サーバ数を自在に増減できるシステムを想定する。このとき、仮想化技術により、仮想化サーバ管理装置が指定した任意の物理サーバに、任意の仮想化サーバを割り当てることができる。これにより、特定の仮想化サーバが提供するサービスへの負荷の増加に伴い、仮想化サーバを割り当てる物理サーバ数を増やしスケールアウトすることで、リソース量を動的に変更することができる。しかし、サービスが状態遷移を伴うものである場合、ユーザからの既存の接続はサービスが中断しないよう継続しつつ、新たな接続要求は負荷分散のためにスケールアウト先へ振り分けることが必要になる。
負荷分散を行う従来方法としては、ロードバランサでトラヒックを振り分ける方法があるが、あらかじめ負荷分散のネットワークトポロジを設計しておく必要があるため、仮想化サーバの動的な割り当てに伴うネットワークトポロジの変更に対応することが出来ない。
そこで、本実施形態では、オープンフロースイッチを用いて、ネットワークトポロジの変更に対応しながら、同時にユーザの接続状態を把握し、接続中のユーザに影響のないようにトラヒックの振り分けを行う方法を提案する。
図17は、本実施形態の通信制御システムのシステム構成を示すシステム構成図である。第二の実施形態では、通信制御システムは、オープンフローコントローラ100、オープンフロースイッチ部200、クライアント端末300、物理サーバ410、および仮想化サーバ管理装置500を備えている。そして、オープンフローコントローラ100において、閉塞サーバ情報管理部104に代えて、転送先物理サーバ候補管理部104a(記憶手段)を備えている点で、また、この通信制御システムは、新たに仮想化サーバ管理装置500を備えている点で、第一実施形態と異なっている。また、説明の便宜上、物理サーバ410は、物理サーバ411および412の2台のみ示しているが、この数に限定するものではない。クライアント端末300についても同様に、3台のみ示しているが、この数に限定するものではない。以下、各構成について説明する。
オープンフローコントローラ100は、スイッチ制御部101、ネットワーク管理部102、管理者インターフェース部103、転送先物理サーバ候補管理部104a、およびトランスポート層タイムアウト情報管理部105を含んで構成されている。スイッチ制御部101、ネットワーク管理部102、管理者インターフェース部103およびトランスポート層タイムアウト情報管理部105については、第一実施形態のオープンフローコントローラ100と同じであるため、その説明は省略する。
転送先物理サーバ候補管理部104aは、仮想化サーバ管理装置500において決められた仮想化サーバ410aを配備した、転送先となる物理サーバ410の候補情報を記憶する部分である。
そして、ネットワーク管理部102は、転送先物理サーバ候補管理部104aに記憶されている仮想化サーバ装置の候補情報に基づいて、オープンフロースイッチ部200のオープンフローテーブルに書き込む転送先となる物理サーバ410を決定する。
また、仮想化サーバ管理装置500は、仮想化サーバ管理部501(仮想化サーバ配備手段)および負荷監視部502(監視手段)を含んで構成されている。
仮想化サーバ管理部501は、負荷監視部502から現在サービス提供中のサーバにおいて規定値を超える負荷上昇の通知を受け取ると、他の負荷が規定値以下の物理サーバ410を検索して、その物理サーバ410に仮想化サーバ410aを配備する処理を行う。この仮想化サーバ410aは、それぞれ同機能のサービスを提供するサーバであり、それぞれの仮想化サーバには同一のIPアドレスXが割り当てられる。このように、同機能のサービスを持つサーバを負荷に応じて追加配備し、リソースを追加する処理を一般にスケールアウトという。仮想化サーバ410aが配備された物理サーバ410を、オープンフローコントローラ100aに通知する。
負荷監視部502は、どの物理サーバ410に仮想化サーバ410aを割り当てるかを決定するために、各物理サーバ410の負荷監視を行う部分である。例えば、負荷監視部502において、物理サーバ410の負荷が規定値(例えば、閾値A)を超えたか否かを判断する。そして、負荷が規定値を超えた物理サーバ410があった場合、その旨を仮想化サーバ管理部501に通知する。また、この負荷監視部502は、物理サーバ410の負荷が閾値Aを超えた後、規定値(例えば、閾値B(<A))を下回った場合に、その旨を仮想化サーバ管理部501に通知する。また、処理負荷が閾値C(<A)を下回るかどうかについても、監視を行う。
[通常状態]
つぎに、このように構成された通信制御システムにおいて、仮想化サーバ管理装置500を用いたオープンフロー処理について説明する。図18は、本実施形態の通信制御システムにおけるクライアント端末300とサーバ410との接続状態を示した模式図である。
図18に示されるとおり、クライアント端末301と物理サーバ411が接続状態であり、クライアント端末302と物理サーバ412が接続状態であることが、オープンフロースイッチ部200におけるフローテーブル管理部に記憶されているフローテーブルにて記憶されている。
また、仮想化サーバ管理装置500は、各物理サーバ410を管理しており、その負荷状態に応じて仮想化サーバ411aおよび412aを、各物理サーバ411および412に配備している。
また、オープンフローコントローラ100は、仮想化サーバ管理装置500において管理されている転送先の候補となる物理サーバ411および412の情報を記憶している。
オープンフローコントローラ100は、転送先物理サーバ候補管理部104aに記憶されている候補情報にしたがって、各物理サーバの負荷が保守者の管理ポリシに従って、例えば均等になるように、オープンフロースイッチ部200におけるフローテーブル管理部203のフローテーブルにフローエントリーを登録する。
オープンフロースイッチ部200では、このフローテーブルにしたがって、クライアント端末300からのTCP接続要求を仮想化サーバ410aのいずれか(仮想化サーバ411aまたは仮想化サーバ412a)に振り分ける処理を行う。
この詳細な処理について説明する。図19は、本実施形態の通信処理を示すシーケンス図であり、クライアント端末301および302からTCP接続要求をして各物理サーバ411および412とTCPセッションを確立するときの処理を示す。なお、この図においてはARP処理については省略している。
まず、クライアント端末301から仮想化サーバ410a(IPアドレスX)に対してTCP接続要求が送信される(S501)。オープンフロースイッチ部200では、そのフローテーブルに、クライアント端末301に対応するフローエントリーが記憶されていないため、IPアドレスXに対するTCP接続要求パケットがオープンフローコントローラ100に転送される(S502)。
オープンフローコントローラ100では、ネットワーク管理部102により、転送先物理サーバ候補管理部104aに記憶されている候補情報に基づいて、一の接続先となる仮想化サーバ410aを配備する物理サーバ410がランダム(もしくは仮想化サーバ管理装置より通知された負荷状態の低いサーバ)に決定される。ここでの実施形態では、仮想化サーバ410aを備える物理サーバ411が決定される(S503)。
オープンフローコントローラ100では、ネットワーク管理部102により、オープンフロースイッチ部200に対して、フローエントリーの登録指示が行われる(S504)。この登録指示には、クライアント端末301と物理サーバ411との対応付けを示すフローエントリーが含まれる。そして、オープンフロースイッチ部200のフローテーブル管理部203では、登録指示に基づいたフローエントリーが記憶される(S505)。
そうして、ネットワーク管理部102により、すでにS502でオープンフロースイッチ部200から受信していたTCP接続要求のパケットがオープンフローコントローラ100からオープンフロースイッチ部200に転送され(S506)、オープンフロースイッチ部200のデータ転送部201では、フローテーブルにしたがって、パケットが物理サーバ411へ転送される(S507)。物理サーバ411では受信したパケットをサーバ内の仮想化サーバ411aへ転送する(S507a)。
仮想化サーバ411aは物理サーバ411を介して、TCP接続要求のあったクライアント端末301に対してTCP応答処理がなされ(S508)、オープンフロースイッチ部200ではフローテーブルにしたがってクライアント端末301に、この応答が転送される(S509)。そして、クライアント端末301と物理サーバ411内の仮想化サーバ411aとの間のTCPセッションが確立される(S510)。
また、クライアント端末302も同様の処理が行われる。すなわち、クライアント端末302から仮想化サーバ410aを示すIPアドレスXを用いてTCP接続要求が行われ(S511)、オープンフロースイッチ部200では、オープンフローコントローラ100に、そのIPアドレスXに対するTCP接続要求パケットが転送される(S512)。
そして、オープンフローコントローラ100では、転送先となる物理サーバ412が決定され、その旨がオープンフロースイッチ部200に転送され、フローエントリーの登録処理が行われる(S513〜S515)。そして、オープンフローコントローラ100からTCP接続要求等のパケットが転送され、オープンフロースイッチ部200では、フローテーブルにしたがって、物理サーバ412に転送される(S517)。物理サーバ412では、受信したパケットをサーバ内の仮想化サーバ412aへ転送する(S517a)。仮想化サーバ412aは物理サーバ412を介して、クライアント端末302に対してTCP応答処理を行い、オープンフロースイッチ部200において、フローテーブルに従った転送処理をしてクライアント端末302に応答処理がなされ、TCPセッションが確立される(S518〜S520)。
このようにして、仮想化サーバ410aを有する、適切な物理サーバ410に対して振分処理を行うことができる。
図20は、本実施形態の通信処理を示すシーケンス図であり、クライアント端末303および304からTCP接続要求をして各物理サーバ411および412内の仮想化サーバ411aと412aとTCPセッションを確立するときの処理を示す。上述と同様に、この図においてもARP処理については省略している。
図20においても、上述と同様の処理であって、クライアント端末303および304から仮想化サーバを示すIPアドレスXを用いてTCP接続要求が行われ(S611、621)、オープンフロースイッチ部200では、オープンフローコントローラ100に、IPアドレスXに対するTCP接続要求パケットが転送される(S612、622)。
そして、オープンフローコントローラ100では、転送先となる物理サーバ411および412がそれぞれ決定され、その旨がオープンフロースイッチ部200に転送され、フローエントリーの登録処理が行われる(S613〜S615、S623〜S625)。そして、オープンフローコントローラ100からTCP接続要求等のパケットが転送され、オープンフロースイッチ部200では、フローテーブルにしたがって、物理サーバ411および412に転送される(S617、S627)。物理サーバ411および412では、受信したパケットをそれぞれのサーバ内の仮想化サーバ411aおよび仮想化サーバ412aに転送する(S617a、S627a)。仮想化サーバ411aおよび仮想化サーバ412aは、物理サーバ411および412を介して、クライアント端末301および302に対してTCP応答処理を行い、オープンフロースイッチ部200において、フローテーブルに従った振分処理をしてクライアント端末301および302に応答処理がなされ、端末・サーバ間のTCPセッションが確立される(S618〜S620、S628〜S630)。
[スケールアウトした後の振分処理]
つぎに、仮想化サーバ管理装置500を用いて、スケールアウトをして、新たな仮想化サーバ410aに振り分けるときの処理について説明する。図21は、その接続状態を模式的に示す模式図である。図21では、クライアント端末303および304が、仮想化サーバ410aへの接続を行い、それぞれが物理サーバ411および412に割り振られたとする。そして、仮想化サーバ管理装置500の負荷監視部502により監視される物理サーバ411および412の負荷が、事前に設定した閾値Aを越える場合、当該仮想化サーバ管理装置500の仮想化サーバ管理部501は、他の負荷が閾値C未満の物理サーバ410、例えば物理サーバ413に仮想化サーバ413aを配備し、スケールアウトを行う。
そして、新たに仮想化サーバに接続しようとするクライアント端末305は、オープンフローコントローラ100により、物理サーバ413に接続されるように、そのオープンフロースイッチ部200が制御される。
図22は、この詳細な処理を示すシーケンス図であり、仮想化サーバ管理装置500により新たな物理サーバ413に、仮想化サーバ413aを配備するときの処理を示す。
まず、仮想化サーバ管理装置500において、負荷監視部502により、物理サーバ411および412の負荷が閾値A以上であることが検知される(S701)。そして、仮想化サーバ管理部501により、負荷が閾値C未満(閾値C<閾値A)である負荷の低い物理サーバが検索され、当該物理サーバに仮想化サーバを配備するよう、その配備処理が行われる。ここでは、物理サーバ413の負荷が閾値C未満であると判断され、当該物理サーバ413に仮想化サーバ413aが配備される(S702)。
そして、この配備処理とともに、仮想化サーバ管理装置500の仮想化サーバ管理部501によりオープンフローコントローラ100に対して、スケールアウトされた物理サーバ410および仮想化サーバ410aが通知され、オープンフローコントローラ100おける転送先物理サーバ候補管理部104aに、転送先となる候補情報として、物理サーバ413が記憶される。一方、閾値Aを超えた物理サーバ411および412は、負荷が閾値B未満となるまで候補情報から除外される(S703)。
このようにオープンフローコントローラ100の転送先物理サーバ候補管理部104aには、転送先の候補情報として物理サーバ413が登録される。そして、このような状況において、オープンフロースイッチ部200において、クライアント端末305から新たに仮想化サーバ410aのIPアドレスXに対してTCP接続要求が受信され(S704)、オープンフロースイッチ部200では、クライアント端末305に対応するフローエントリーがフローテーブルに記憶されていないため、オープンフローコントローラ100に、IPアドレスXへのTCP接続要求パケットが転送される(S705)。
そして、オープンフローコントローラ100では、転送先物理サーバ候補管理部104aに記憶されている候補情報に基づいて、転送先となる物理サーバ413が決定され(S706)、オープンフローコントローラ100から物理サーバ413に転送するフローエントリーの登録指示をオープンフロースイッチ部200に対して行う(S707)。オープンフロースイッチ部200では、そのフローテーブルに、新たなフローエントリーの登録処理が行われる(S708)。そして、オープンフローコントローラ100から、S706ですでに受信していたTCP接続要求等のパケットが転送され(S709)、オープンフロースイッチ部200では、フローテーブルにしたがって、物理サーバ413に転送される(S710)。物理サーバ413では、受信したパケットをサーバ内の仮想化サーバ413aに転送する(S710a)。仮想化サーバ413aは、物理サーバ413を介してクライアント端末305に対してTCP応答処理を行い(S711)、オープンフロースイッチ部200において、フローテーブルに従った転送処理をしてクライアント端末305に応答処理がなされる(S712)。そして、端末・サーバ間のTCPセッションが確立される(S713)。
なお、オープンフローコントローラ100は、スケールアウトが行われた後、負荷分散のために、トラヒックをスケールアウト先の物理サーバ413へ振り分けるようにオープンフロースイッチ部200のフローテーブルを書き換えている。このとき、クライアント端末301が現在接続中の物理サーバ411上の仮想化サーバ411aとTCPセッションを継続している場合、このクライアント端末301のフローまで、別の物理サーバ410上の仮想化サーバ410aへ振り分けてしまうと、クライアント端末301のTCPセッションが途切れてしまう問題がある。この問題を解決するために、オープンフロースイッチ部200において、フローテーブルを参照することで、トラヒックに対応したフローエントリーがあるか否かにより、TCPセッション状態を判定し、TCPセッション継続中のトラヒックについては、フローテーブルの書き換えを行うことなく、そのまま転送処理を行うようにする。これらのTCPセッションの継続に係る処理は実施例1において示したとおりである。
一方、オープンフロースイッチ部200は、クライアント端末301等の送信元のTCPのポート番号により、TCPセッション状態を判定する。例えば、オープンフロースイッチ部200のデータ転送部201は、新たに接続を開始したクライアント端末305のトラヒックが新規セッションであるかどうかをクライアント端末305が使用するTCPポート番号が既にフローエントリーにあるかどうかで判断する。図22の例では、新規セッションであると判定し、オープンフローコントローラ100の制御によってフローテーブルに新たなフローエントリーが登録され、物理サーバ413へ振り分けられている。
引き続き、図22を用いて、オープンフローコントローラ100に、転送先となる候補情報として、物理サーバ413が登録されている状態において、クライアント端末301と物理サーバ411内の仮想化サーバ411aとのTCPセッションが終了し、その後新たにTCPセッションを開始するときの処理について説明する。
クライアント端末301と物理サーバ411内の仮想化サーバ411aとのTCPセッションが終了する(S721)。その後、クライアント端末301から仮想化サーバ410aのIPアドレスXに対して、新たにTCP接続要求が行われる(S722)。オープンフロースイッチ部200では、そのフローテーブルに、クライアント端末301が新たなTCPセッションで用いるTCPポート番号に対応したフローエントリーが記憶されていないため、IPアドレスXに対するTCP接続要求パケットがオープンフローコントローラ100に転送される(S723)。
オープンフローコントローラ100では、ネットワーク管理部102により、転送先物理サーバ候補管理部104aに記憶されている候補情報に基づいて、一の接続先となる仮想化サーバを配備する一の物理サーバ410がランダムに決定される。ここでは、候補情報として物理サーバ413のみが登録されているため、物理サーバ413が接続先として決定される(S724)。
オープンフローコントローラ100では、ネットワーク管理部102により、オープンフロースイッチ部200に対して、フローエントリーの登録指示が行われる(S725)。この登録指示には、クライアント端末301と物理サーバ413との対応付けを示すフローエントリーが含まれる。そして、オープンフロースイッチ部200のフローテーブル管理部203では、登録指示に基づいたフローエントリーが記憶される(S726)。
そうして、すでにS722でオープンフロースイッチ部200から受信していたTCP接続要求のパケットがオープンフローコントローラ100からオープンフロースイッチ部200に送信され(S727)、オープンフロースイッチ部200のデータ転送部201では、フローテーブルにしたがって、TCP接続要求パケットの転送処理が行われる(S728)。物理サーバ413では、受信したパケットをサーバ内の仮想化サーバ413aに転送する(S728a)。
仮想化サーバ413aは、物理サーバ413を介してTCP接続要求のあったクライアント端末301に対してTCP応答処理を行い(S729)、オープンフロースイッチ部200ではフローテーブルにしたがってクライアント端末301に、この応答が転送される(S730)。そして、クライアント端末301と物理サーバ413内の仮想化サーバ413aとの間のTCPセッションが確立される(S731)。
このようにして、接続状態となっている物理サーバ410において、負荷が閾値A以上となった場合には、新たな物理サーバ410(上述の例では物理サーバ413)が選択され、仮想化サーバ413aが配備されることにより、物理サーバ410における負荷を均等にすることができる。
[スケールアウト処理と負荷低減したサーバに対する振分処理]
つぎに、物理サーバ410において、負荷が閾値A以上になったものの、その後負荷が軽減され閾値B未満にあった場合には、リソースの効率的な利用の観点から再度その物理サーバ410を利用したい場合がある。図23は、物理サーバ413の負荷が高くなったことに伴って新たに物理サーバ414に仮想化サーバ414aを配備し、その後、物理サーバ411の負荷が軽減したときの接続状態を模式的に示す模式図である。
図23に示されているとおり、仮想化サーバ管理装置500では、負荷が閾値A以上のものとして、物理サーバ412および413を記憶している。また、当初負荷が閾値A以上であったものの、その後、負荷が閾値B未満になったものとして物理サーバ411を記憶している。
また、オープンフローコントローラ100において、転送先物理サーバ候補として、物理サーバ411および414を記憶している。
仮想化サーバ管理装置500では、物理サーバ413の負荷が閾値A以上となったことを検知すると、仮想化サーバ管理部501が負荷が閾値C未満である物理サーバ414に仮想化サーバを配備する。そして、仮想化サーバ管理部501は、新たな転送先物理サーバの候補として、物理サーバ414を、転送先物理サーバ候補管理部104aに登録する。同時に転送先サーバ候補から負荷が閾値Aを越えた物理サーバ413を削除する。
また、物理サーバ411の負荷が閾値B以下になった場合には、仮想化サーバ管理部501は、転送先の候補として、物理サーバ411を追加するよう、オープンフローコントローラ100の転送先物理サーバ候補管理部104aを書き換える。これにより、クライアント端末303がTCPセッションを終了した後、新たにTCPセッション開始の要求があった場合、オープンフローコントローラ100は、物理サーバ413に接続せず、新たな物理サーバ414(または411)に接続するように、オープンフローテーブルを変更することができる。
このように動作する通信制御システムの詳細な処理について説明する。図24は、通信制御システムにおいて、物理サーバ413の負荷が増大したことに伴って物理サーバ414へスケールアウトしたときの振分処理を示すシーケンス図である。
まず、仮想化サーバ管理装置500において、負荷監視部502により、物理サーバ413の負荷が閾値A以上であることが検知される(S801)。そして、仮想化サーバ管理部501により、負荷が閾値C未満である負荷の低い物理サーバが検索され、当該物理サーバ410に仮想化サーバ410aを配備するよう、その配備処理が行われる。ここでは、物理サーバ414が、負荷が閾値C未満であると判断され、当該物理サーバ414に仮想化サーバ414aが配備される(S802)。これらの処理に伴い、仮想化サーバ管理装置500は、オープンフローコントローラ100における転送先物理サーバ候補管理部104aに記憶されている候補情報から、物理サーバ413を削除し、物理サーバ414を追加する(S803)。
また、一方で、仮想化サーバ管理装置500において、負荷監視部502により、物理サーバ411の負荷が閾値B未満に下がったことが検知される。(S804)
そして、この検知処理に伴い、仮想化サーバ管理装置500は、オープンフローコントローラ100における転送先物理サーバ候補管理部104aに記憶されている候補情報に、物理サーバ411を追加する。(S805)。以上のS803,S805の処理により、オープンフローコントローラ100では、転送先の候補情報として物理サーバ411および414が登録される。
ここで、クライアント端末303と物理サーバ411とのTCPセッションが終了されるとする(S806)。つぎに、改めて、クライアント端末303から、新たなTCPセッション開始のために、オープンフロースイッチ部200に対して、新たに仮想化サーバ410aのIPアドレスXに対してTCP接続要求が送信される(S807)。オープンフロースイッチ部200では、クライアント端末303の新たなTCPセッションに対応するフローエントリーがフローテーブルに記憶されていないため、オープンフローコントローラ100に、IPアドレスXに対するTCP接続要求パケットが転送される(S808)。
そして、オープンフローコントローラ100では、転送先物理サーバの候補情報にしたがって、転送先となる物理サーバ414が決定され(S809)、その旨がオープンフロースイッチ部200に転送され(S810)、フローエントリーの登録処理が行われる(S811)。
そして、オープンフローコントローラ100から、S807で受けた接続要求等のパケットが転送され(S812)、オープンフロースイッチ部200では、フローテーブルにしたがって、物理サーバ414にパケットを転送する(S813)。物理サーバ414では、受信したパケットをサーバ内の仮想化サーバ414aに転送する(S813a)。仮想化サーバ414aは、物理サーバ414を介して、クライアント端末303に対してTCP応答処理を行い(S814)、オープンフロースイッチ部200において、フローテーブルに従った転送処理をしてクライアント端末303に応答処理がなされる(S815)。そして、クライアント端末303と物理サーバ414内の仮想化サーバ414a間のTCPセッションが確立される(S816)。
[作用効果]
この第二実施形態のオープンフローコントローラ100においても、第一実施形態と同様の作用効果を奏するものであって、複数の物理サーバ410のうち、転送可能な物理サーバのリストを転送先物理サーバ候補情報(転送可否情報)として転送先物理サーバ候補管理部104aが記憶している。そして、複数のクライアント端末300のうち、例えばクライアント端末301から通信接続要求を受けると、記憶されている転送先物理サーバ候補情報(転送可否情報に相当)にしたがって、クライアント端末301からの接続要求等の通信情報を、複数の物理サーバ410のうち、転送可能な、例えば一の物理サーバ411に対して振り分け処理を行うよう、オープンフロースイッチ部200のフローテーブル管理部203(フローテーブル)に、エントリ情報であるフローエントリーを登録する。
これにより、オープンフロースイッチング部200は、クライアント端末300および物理サーバ410のそれぞれからの通信情報を、フローテーブルにしたがって、それぞれの通信接続先に対して、各物理サーバ410の負荷を均等にして振分処理を行うことができる。よって、オープンフロースイッチング部200は、アプリケーションに依存することなく、適切な振分処理を行うことができるようになる。
このフローテーブルには、アイドルタイムアウトと呼ばれるタイマ情報が、フローエントリー(エントリ情報)ごとに対応付けて記憶されており、このタイマ情報に基づいてフローエントリーを削除することで、サーバ装置の閉塞等によって、通信が切断したサーバ装置に対するフローエントリーがいつまでも残ることがなく、適切な通信制御を行うことができる。加えて、フローエントリーがタイムアウトする前にクライアント端末300とサーバ装置410間の接続が復旧した場合には、タイムアウトがリセットされフローエントリーが消えず、これによりセッションが継続されるため、閉塞処理下であってもセッション継続中のクライアント端末の通信には影響を与えない。
なお、上述したとおり、転送可否情報である転送先物理サーバ候補情報は、仮想化サーバ管理装置500からの指示に基づいて生成され、転送先物理サーバ公報情報管理部104aに記憶される。よって、仮想化サーバ管理装置500に基づいた適切な情報の管理を行うことができる。
また、第二実施形態の仮想化サーバ管理装置500によれば、仮想化サーバ410aが配備されている各物理サーバ410の負荷を監視し、各物理サーバ410の全部または一部における負荷が閾値以上となった場合には、他の物理サーバ410において、仮想化サーバ410aを新たに配備し、新たに仮想化サーバ410aが配備された物理サーバを転送可能な物理サーバ410として、オープンフローコントローラ100に通知することができる。
オープンフローコントローラ100では、仮想化サーバ管理装置500から得た情報を転送先物理サーバ候補情報管理部104aが記憶しておき、この情報に基づいてオープンフロースイッチ部200のフローテーブルのフローエントリーを登録する。オープンフロースイッチ部200は、このフローテーブルに従った振分処理を行うことができる。
よって、物理サーバ410における負荷分散を、アプリケーション等に依存することなく、適切に行うことができる。