(57)【特許請求の範囲】
【請求項１】
クライアント端末およびサーバ装置それぞれの通信接続先を示すエントリ情報とタイマ情報とを記憶する管理テーブルと、前記クライアント端末および前記サーバ装置のそれぞれからの通信情報を、前記管理テーブルにしたがって、それぞれの通信接続先に対して振分処理を行うスイッチング手段と、前記タイマ情報に基づいてエントリ情報を削除するタイマ管理手段とからなるスイッチ装置を制御する通信制御装置において、
複数のサーバ装置のうち、転送が可のサーバ装置若しくは転送が否のサーバ装置の少なくともいずれか一方を示す転送可否情報を記憶する記憶手段と、
複数のクライアント端末のうち一のクライアント端末から通信接続要求を受けると、前記記憶手段に記憶されている転送可否情報にしたがって、前記一のクライアント端末からの通信情報を、複数のサーバ装置のうち、転送可能な一のサーバ装置に対して振り分け処理を行うよう、前記管理テーブルにエントリ情報およびタイマ情報を登録する制御手段と、  を備える通信制御装置。
【請求項２】
前記記憶手段は、転送可否情報として、サーバ装置に対する転送が不可である閉塞状態であることを示す閉塞情報を記憶することを特徴とする請求項１に記載の通信制御装置。
【請求項３】
前記記憶手段に記憶される転送可否情報は、当該通信制御装置のオペレータ又は各サーバ装置からの指示に基づいて生成されることを特徴とする請求項１または２に記載の通信制御装置。
【請求項４】
クライアント端末およびサーバ装置それぞれの通信接続先を示すエントリ情報をタイマ情報と対応付けて記憶する管理テーブルと、
前記クライアント端末および前記サーバ装置のそれぞれからの通信情報を、前記管理テーブルにしたがって、それぞれの通信接続先に対して振分処理を行うスイッチング手段と、
前記管理テーブルにおけるタイマ情報に基づいてエントリ情報を削除するタイマ管理手段と、を備え、
前記スイッチング手段は、タイマが満了するまでは、エントリ情報に従った転送先に転送を行い、
エントリ情報にない通信情報を一のクライアント端末から通信接続要求として受けると、請求項１〜３のいずれか一項に記載の通信制御装置の前記記憶手段に記憶されている転送可否情報にしたがって、前記一のクライアント端末からの通信情報を、複数のサーバ装置のうち、転送可能な一のサーバ装置に対して振り分け処理を行うよう、管理テーブルにエントリ情報を登録する
ことを特徴とするスイッチ装置。
【請求項５】
仮想化サーバが配備されている各サーバ装置の負荷を監視する監視手段と、
前記各サーバ装置の全部または一部における負荷が閾値以上となった場合には、他のサーバにおいて、仮想化サーバを新たに配備する仮想化サーバ配備手段と、
前記仮想化サーバ配備手段により新たに仮想化サーバが配備されたサーバ装置を転送可能なサーバ装置として、請求項１から３のいずれか一項に記載の通信制御装置に通知する通知手段と、
を備える仮想化サーバ管理装置。
【請求項６】
クライアント端末とサーバ装置の接続切替を行うスイッチ装置と、当該スイッチ装置とを制御する通信制御装置とからなる通信制御システムにおいて、
前記スイッチ装置は、
クライアント端末およびサーバ装置それぞれの通信接続先を示すエントリ情報とタイマ情報とを記憶する管理テーブルと、
前記クライアント端末および前記サーバ装置のそれぞれからの通信情報を、前記管理テーブルにしたがって、それぞれの通信接続先に対して振分処理を行うスイッチング手段と、
前記タイマ情報に基づいてエントリ情報を削除するタイマ管理手段と、を備え、
前記通信制御装置は、
複数のサーバ装置のうち、転送が可のサーバ装置若しくは転送が否のサーバ装置の少なくともいずれか一方を示す転送可否情報を記憶する記憶手段と、
複数のクライアント端末のうち一のクライアント端末から通信接続要求を受けると、前記記憶手段に記憶されている転送可否情報にしたがって、前記一のクライアント端末からの通信情報を、複数のサーバ装置のうち、転送可能な一のサーバ装置に対して振り分け処理を行うよう、前記管理テーブルにエントリ情報およびタイマ情報を登録する制御手段と、を備えることを特徴とする通信制御システム。
【請求項７】
クライアント端末およびサーバ装置それぞれの通信接続先を示すエントリ情報とタイマ情報とを記憶する管理テーブルと、前記クライアント端末および前記サーバ装置のそれぞれからの通信情報を、前記管理テーブルにしたがって、それぞれの通信接続先に対して振分処理を行うスイッチング手段と、前記タイマ情報に基づいてエントリ情報を削除するタイマ管理手段とからなるスイッチ装置を制御する通信制御装置の通信制御方法において、
複数のサーバ装置のうち、転送が可のサーバ装置若しくは転送が否のサーバ装置の少なくともいずれか一方を示す転送可否情報を記憶手段に記憶する記憶ステップと、
複数のクライアント端末のうち一のクライアント端末から通信接続要求を受けると、前記記憶手段に記憶されている転送可否情報にしたがって、前記一のクライアント端末からの通信情報を、複数のサーバ装置のうち、転送可能な一のサーバ装置に対して振り分け処理を行うよう、前記管理テーブルにエントリ情報およびタイマ情報を登録する制御ステップと、
を備える通信制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアント端末からの通信情報をサーバ装置に適切に振り分ける通信制御装置、通信制御システム、仮想化サーバ管理装置、スイッチ装置および通信制御方法に関する。
【背景技術】
【０００２】
ネットワークを管理する技術としてオープンフロー技術が知られている。このオープンフロー技術は、ネットワーク制御を行うオープンフロー（Open Flow）コントローラと、データの転送処理を行うオープンフロー（Open Flow）スイッチ部とから構成されている。このオープンフローコントローラは、各オープンフロースイッチ部と制御用チャネルで通信することでネットワークを集中管理し、オープンフロースイッチ部はオープンフローコントローラによって書き込まれたフローテーブル（Flow Table）に従い、フロー単位の転送処理を行う。ネットワーク管理者が、オープンフローコントローラの制御シナリオを独自に作りこむことにより、フローごとに柔軟な転送制御が可能となる。例えば、オープンフロー技術を利用したものとして、特許文献１に記載のものが挙げられ、この特許文献には、オープンフローコントローラがオープンフロースイッチのフローエントリーにしたがって、中継動作を行うことの記載がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１６６３８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一般に、サーバのメンテナンスなどの際に、接続中のクライアントに影響がでないよう、新規接続は受け付けず別のサーバに振り分け、接続中のセッションは継続するという、閉塞処理を行う必要がある。そのため、既に特定サーバ上で行っている処理を、ユーザサービスに影響を与えずに速やかに低減する処理を行う際に、接続中のセッションについては特定のサーバに繋ぎ続け、新規接続を別のサーバに振り分ける処理を、サーバ側とクライアント側のアプリケーションが連動して処理することによって行っている。このとき、本処理の動作は、各クライアント端末および各サーバにおけるアプリケーションに依存し、各クライアント端末および各サーバにアプリケーションを作りこむ必要があり、コストがかかる問題がある。
【０００５】
そこで、本発明においては、クライアント端末およびサーバ装置のアプリケーションに依存することなく、クライアント端末とサーバ装置との適切な振分処理を行うことができる通信制御装置、通信制御システム、仮想化サーバ管理装置、スイッチ装置および通信制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述の課題を解決するために、本発明の通信制御装置は、クライアント端末およびサーバ装置それぞれの通信接続先を示すエントリ情報とタイマ情報とを記憶する管理テーブルと、前記クライアント端末および前記サーバ装置のそれぞれからの通信情報を、前記管理テーブルにしたがって、それぞれの通信接続先に対して振分処理を行うスイッチング手段と、前記タイマ情報に基づいてエントリ情報を削除するタイマ管理手段とからなるスイッチ装置を制御する通信制御装置において、複数のサーバ装置のうち、転送が可のサーバ装置若しくは転送が否のサーバ装置の少なくともいずれか一方を示す転送可否情報を記憶する記憶手段と、複数のクライアント端末のうち一のクライアント端末から通信接続要求を受けると、前記記憶手段に記憶されている転送可否情報にしたがって、前記一のクライアント端末からの通信情報を、複数のサーバ装置のうち、転送可能な一のサーバ装置に対して振り分け処理を行うよう、前記管理テーブルにエントリ情報およびタイマ情報を登録する制御手段と、を備えている。
【０００７】
また、本発明の通信制御方法は、クライアント端末およびサーバ装置それぞれの通信接続先を示すエントリ情報とタイマ情報とを記憶する管理テーブルと、前記クライアント端末および前記サーバ装置のそれぞれからの通信情報を、前記管理テーブルにしたがって、それぞれの通信接続先に対して振分処理を行うスイッチング手段と、前記タイマ情報に基づいてエントリ情報を削除するタイマ管理手段とからなるスイッチ装置を制御する通信制御装置の通信制御方法において、複数のサーバ装置のうち、転送が可のサーバ装置若しくは転送が否のサーバ装置の少なくともいずれか一方を示す転送可否情報を記憶手段に記憶する記憶ステップと、複数のクライアント端末のうち一のクライアント端末から通信接続要求を受けると、前記記憶手段に記憶されている転送可否情報にしたがって、前記一のクライアント端末からの通信情報を、複数のサーバ装置のうち、転送可能な一のサーバ装置に対して振り分け処理を行うよう、前記管理テーブルにエントリ情報およびタイマ情報を登録する制御ステップと、を備えている。
【０００８】
この発明によれば、複数のサーバ装置のうち、転送が可のサーバ装置若しくは転送が否のサーバ装置の少なくともいずれか一方を示す転送可否情報を記憶しておき、複数のクライアント端末のうち一のクライアント端末から通信接続要求を受けると、記憶されている転送可否情報にしたがって、一のクライアント端末からの通信情報を、複数のサーバ装置のうち、転送可能な一のサーバ装置に対して振り分け処理を行うよう、管理テーブルにエントリ情報を登録する。
【０００９】
これにより、スイッチング装置は、クライアント端末およびサーバ装置のそれぞれからの通信情報を、管理テーブルにしたがって、それぞれの通信接続先に対して、各サーバ装置の負荷を均等にして振分処理を行うことができる。よって、スイッチング装置は、アプリケーションに依存することなく、適切な振分処理を行うことができるようになる。
さらにば、タイマ情報に基づいてエントリ情報を削除することで、閉塞等によって、通信が切断したサーバ装置に対するエントリ情報がいつまでも残ることがなく、適切な通信制御を行うことができる。
【００１０】
また、本発明の通信制御装置において、前記記憶手段は、転送可否情報として、サーバ装置に対する転送が不可である閉塞状態であることを示す閉塞情報を記憶する。
【００１１】
この発明によれば、閉塞情報を記憶させることで、閉塞したサーバ装置には振分処理を行わないように制御することができる。
【００１４】
また、本発明の通信制御装置において、前記記憶手段に記憶される転送可否情報は、当該通信制御装置のオペレータ又は各サーバ装置からの指示に基づいて生成される。
【００１５】
この発明によれば、転送可否情報は、通信制御装置のオペレータ又は各サーバ装置からの指示に基づいて生成される。よって、閉塞情報等の情報を簡易に登録することができる。
【００１６】
また、本発明のスイッチ装置は、クライアント端末およびサーバ装置それぞれの通信接続先を示すエントリ情報をタイマ情報と対応付けて記憶する管理テーブルと、前記クライアント端末および前記サーバ装置のそれぞれからの通信情報を、前記管理テーブルにしたがって、それぞれの通信接続先に対して振分処理を行うスイッチング手段と、前記記憶テーブルにおけるタイマ情報に基づいてエントリ情報を削除するタイマ管理手段と、を備え、前記スイッチング手段は、タイマが満了するまでは、エントリ情報に従った転送先に転送を行い、エントリ情報にない通信情報を一のクライアント端末から通信接続要求として受けると、上記通信制御装置の前記記憶手段に記憶されている転送可否情報にしたがって、前記一のクライアント端末からの通信情報を、複数のサーバ装置のうち、転送可能な一のサーバ装置に対して振り分け処理を行うよう、管理テーブルにエントリ情報を登録することを特徴とする。
【００１７】
この発明によれば、タイマが満了するまでは、エントリ情報に従った転送先に転送を行い、エントリ情報にない通信情報を一のクライアント端末から通信接続要求として受けると、上記通信制御装置の記憶手段に記憶されている転送可否情報にしたがって、一のクライアント端末からの通信情報を、複数のサーバ装置のうち、転送可能な一のサーバ装置に対して振り分け処理を行うよう、管理テーブルにエントリ情報を登録することができる。よって、タイマが満了するまでは、この管理テーブルに従った振り分け処理を行うことができる。
【００１８】
また、本発明の通信制御システムにおいて、クライアント端末とサーバ装置の接続切替を行うスイッチ装置と、当該スイッチ装置とを制御する通信制御装置とからなる通信制御システムにおいて、前記スイッチ装置は、クライアント端末およびサーバ装置それぞれの通信接続先を示すエントリ情報とタイマ情報とを記憶する管理テーブルと、前記クライアント端末および前記サーバ装置のそれぞれからの通信情報を、前記管理テーブルにしたがって、それぞれの通信接続先に対して振分処理を行うスイッチング手段と、前記タイマ情報に基づいてエントリ情報を削除するタイマ管理手段と、を備え、前記通信制御装置は、複数のサーバ装置のうち、転送が可のサーバ装置若しくは転送が否のサーバ装置の少なくともいずれか一方を示す転送可否情報を記憶する記憶手段と、複数のクライアント端末のうち一のクライアント端末から通信接続要求を受けると、前記記憶手段に記憶されている転送可否情報にしたがって、前記一のクライアント端末からの通信情報を、複数のサーバ装置のうち、転送可能な一のサーバ装置に対して振り分け処理を行うよう、前記管理テーブルにエントリ情報およびタイマ情報を登録する制御手段と、を備えている。
【００１９】
また、本発明の仮想化サーバ管理装置は、仮想化サーバが配備されている各サーバ装置の負荷を監視する監視手段と、前記各サーバ装置の全部または一部における負荷が閾値以上となった場合には、他のサーバにおいて、仮想化サーバを新たに配備する仮想化サーバ配備手段と、前記仮想化サーバ配備手段により新たに仮想化サーバが配備されたサーバ装置を転送可能なサーバ装置として、上記通信制御装置に通知する通知手段と、を備えている。
【００２０】
この発明によれば、仮想化サーバが配備されている各サーバ装置の負荷を監視し、各サーバ装置の全部または一部における負荷が閾値以上となった場合には、他のサーバ装置において、仮想化サーバを新たに配備し、新たに仮想化サーバが配備されたサーバ装置を転送可能なサーバ装置として通知することができる。よって、サーバ装置における負荷分散を、アプリケーション等に依存することなく、適切に行うことができる。
【発明の効果】
【００２１】
本発明によれば、クライアント端末およびサーバ装置のそれぞれからの通信情報を、管理テーブルにしたがって、それぞれの通信接続先に対して、各サーバ装置の負荷を均等にして振分処理を行うことができる。よって、アプリケーションに依存することなく、適切な振分処理を行うことができるようになる。加えて、クライアント端末とサーバの接続中のセッションには影響を与えない。
【図面の簡単な説明】
【００２２】
【図１】本実施形態の通信制御システムのシステム構成を示すシステム構成図である。
【図２】オープンフローコントローラ１００のハードウェア構成図である。
【図３】ＡＲＰ用フローテーブルの具体例を示す説明図である。
【図４】ＴＣＰ用フローテーブルの具体例を示す説明図である。
【図５】通信制御システムにおけるクライアント端末３００とサーバ装置４００との通信接続の一例を示す模式図である。
【図６】フローテーブル管理部２０３に記憶されているフローテーブルを簡略化した説明図である。
【図７】通信制御システムの通常状態における通信手順を示したシーケンス図である。
【図８】閉塞処理後におけるクライアント端末３００とサーバ装置４００との通信接続の一例を示す模式図である。
【図９】閉塞処理後に、新たに通信接続が起こったときのフローテーブルを示す説明図である。
【図１０】サーバ装置４０１が閉塞状態であるときに、新たにクライアント端末３０３が接続要求をしたときの処理を示すシーケンス図である。
【図１１】通信制御システムにおけるクライアント端末３０１とサーバ装置４０１との通信接続が切断するときの処理を示す模式図である。
【図１２】フローエントリーが削除されるフローテーブルを示す説明図を示す。
【図１３】通信接続が切断された後に、そのフローエントリーが削除される処理を示すシーケンス図である。
【図１４】通信接続が解消した後、新たにクライアント端末３０１からの接続要求がなされたときの処理を示す模式図である。
【図１５】フローエントリーの書き換えがされたフローテーブルを示す説明図である。
【図１６】アイドルタイムアウト経過前に、通信切断されたクライアント端末３０１から新たに接続要求が来た場合の処理を示すシーケンス図である。
【図１７】第二実施形態の通信制御システムのシステム構成を示すシステム構成図である。
【図１８】本実施形態の通信制御システムにおける通常状態におけるクライアント端末３００とサーバ４１０との接続状態を示した模式図である。
【図１９】クライアント端末３０１および３０２から接続要求をして各物理サーバ４１１および４１２とセッションを確立するときの処理を示すシーケンス図である。
【図２０】クライアント端末３０３および３０４から接続要求をして各物理サーバ４１１および４１２とセッションを確立するときの処理を示すシーケンス図である。
【図２１】スケールアウト後に、新たな仮想化サーバ４１０ａに接続要求を振り分けるときの接続状態を示す模式図である。
【図２２】スケールアウトしたときに、新たな接続要求がきたときの処理を示すシーケンス図である。
【図２３】スケールアウトした後に、物理サーバ装置の負荷が軽減したときの接続状態を模式的に示す模式図である。
【図２４】スケールアウト後に、負荷軽減により新たに物理サーバ装置が接続可能状態になったときの処理を示すシーケンス図である。
【発明を実施するための形態】
【００２３】
添付図面を参照しながら本発明の実施形態を説明する。可能な場合には、同一の部分には同一の符号を付して、重複する説明を省略する。
【００２４】
［第一実施形態］
図１は、本実施形態の通信制御システムのシステム構成を示すシステム構成図である。図１に示すとおり、この通信制御システムは、オープンフローコントローラ１００、オープンフロースイッチ（ＳＷ）部２００、クライアント端末群３００、およびサーバ装置群４００とから構成されている。
【００２５】
このオープンフローコントローラ１００は、オープンフロースイッチ部２００を制御する通信制御装置であって、クライアント端末群３００からの接続要求に対して、サーバ装置群４００に接続するように、オープンフロースイッチ部２００を制御するものである。以下、各装置について説明する。
【００２６】
オープンフローコントローラ１００は、オープンフロースイッチ部２００の転送制御を行うものであって、スイッチ制御部１０１、ＮＷ（ネットワーク）管理部１０２（制御手段）、管理者インターフェース（Ｉ／Ｆ）部１０３、閉塞サーバ情報管理部１０４（記憶手段）、およびトランスポート層タイムアウト情報管理部１０５を含んで構成されている。このオープンフローコントローラ１００は、図２に示されるハードウェアにより構成されている。
【００２７】
図２は、オープンフローコントローラ１００のハードウェア構成図である。図１に示されるオープンフローコントローラ１００は、物理的には、図２に示すように、ＣＰＵ１１、主記憶装置であるＲＡＭ１２及びＲＯＭ１３、入力デバイスであるキーボード及びマウス等の入力装置１４、ディスプレイ等の出力装置１５、ネットワークカード等のデータ送受信デバイスである通信モジュール１６、ハードディスク等の補助記憶装置１７などを含むコンピュータシステムとして構成されている。図１において説明した各機能は、図２に示すＣＰＵ１１、ＲＡＭ１２等のハードウェア上に所定のコンピュータソフトウェアを読み込ませることにより、ＣＰＵ１１の制御のもとで入力装置１４、出力装置１５、通信モジュール１６を動作させるとともに、ＲＡＭ１２や補助記憶装置１７におけるデータの読み出し及び書き込みを行うことで実現される。以下、図に示す機能ブロックに基づいて、各機能ブロックを説明する。
【００２８】
スイッチ制御部１０１は、オープンフロースイッチ部２００を制御する部分であり、ネットワーク管理部１０２による管理下において、オープンフロースイッチ部２００においてどのパス（ノード）を通してフロー情報を転送するか制御する部分である。また、このスイッチ制御部１０１は、オープンフロースイッチ部２００におけるフローテーブルにマッチングしなかったパケットデータを受け取り、ネットワーク管理部１０２に受け渡すことができる。
【００２９】
ネットワーク管理部１０２は、ネットワークの管理者や、ネットワーク状態に応じてオープンフロースイッチ部２００に対してどのようなフローテーブルを作成するか判断して制御する部分である。すなわち、ネットワーク管理部１０２は、閉塞サーバ情報管理部１０４において記憶されているサーバ閉塞情報や、トランスポート層タイムアウト情報管理部１０５に記憶されているタイムアウト情報にしたがって、フローテーブルを作成する部分である。この作成したフローテーブルは、スイッチ制御部１０１を介して、オープンフロースイッチ部２００に記憶される。そのほか、ネットワーク管理部１０２には、スイッチ制御部１０１を介して、オープンフロースイッチ部２００に対する各種制御を行う。
【００３０】
管理者インターフェース（Ｉ／Ｆ）部１０３は、ネットワークの管理者が閉塞処理などのネットワーク制御シナリオ（すなわち閉塞対象となるサーバ装置を特定するための情報）の追加や削除を行うためのインターフェース部分である。この追加や削除のための処理は、スイッチ制御部１０１を介して行われる。
【００３１】
閉塞サーバ情報管理部１０４は、管理者から受け取ったサーバ閉塞情報を記憶する部分である。ネットワーク管理部１０２は、この閉塞サーバ情報管理部１０４に記憶されているサーバ閉塞情報にしたがって、フローテーブルを作成することになる。
【００３２】
トランスポート層タイムアウト情報管理部１０５は、各種トランスポート層のサービスが用いるタイムアウト値を記憶する部分である。例えば、ＴＣＰ（Transmission Control Protocol）では、タイムアウト値として、Keepaliveのデフォルト値である２時間という値を記憶する。
【００３３】
つぎにオープンフロースイッチ部２００について、説明する。オープンフロースイッチ部２００は、複数のノードからなるスイッチ群であり、各ノードは、データ転送部２０１（スイッチング手段）、コントローラ部２０２、およびフローテーブル（Flow Table）管理部２０３（タイマ手段、管理テーブル）から構成されている。なお、本実施形態では一つのオープンフロースイッチからなるものとして説明する。以下、各構成について説明する。
【００３４】
データ転送部２０１は、クライアント端末３００とサーバ装置４００との間のフローデータの転送処理を行う部分である。このデータ転送部２０１は、フローテーブル管理部２０３に記憶されているフローテーブルにしたがって、クライアント端末３００とサーバ装置４００との振分処理を行う。
【００３５】
コントローラ部２０２は、オープンフローコントローラ１００からの指示を受け付け、フローテーブル管理部２０３に記憶されているフローテーブルにしたがって、データ転送部２０１の転送処理を制御する部分である。
【００３６】
フローテーブル管理部２０３は、管理テーブルであるフローテーブルを記憶し、コントローラ部２０２を介して、オープンフローコントローラ１００の要求に合わせて、フローテーブルの変更処理を行う部分である。
【００３７】
図３および図４に、フローテーブルの具体例について説明する。フローテーブルは複数のエントリーを持ち、各エントリー（フローエントリー）はマッチフィールド（Match Field）とアウトプットアクション(OUTPUT ACTION)とアイドルタイムアウトを持つ。マッチフィールドは、プロトコルタイプ、入力ポート、送信元ＭＡＣアドレス、送信元ＩＰアドレス、送信元ＴＣＰ／ＩＰポート、宛先ＭＡＣアドレス、宛先ＩＰアドレス、宛先ＴＣＰ／ＩＰポートから構成される。オープンフロースイッチ部２００に入力されたパケットはこのマッチフィールドとのマッチングを行い、パケットとマッチしたフローエントリーに対応したアウトプットアクション（OUTPUT ACTION）を行う。アイドルタイムアウトはマッチするパケットが入力されなかった場合に対応するフローエントリーを削除するタイムアウト時間を示す。
【００３８】
本実施の形態では、図３と図４に示されるように、ＡＲＰ用のフローテーブルと、ＴＣＰ用のフローテーブルがフローテーブル管理部２０３に記憶される。
【００３９】
図３は、本実施の形態におけるＡＲＰ用のフローテーブルの一部を例として示している。ＡＲＰ用のフローテーブルであるため、マッチフィールドのプロトコルタイプとして“ＡＲＰ”が設定されている。例として、１番目のフローエントリーは、クライアント３０１からサーバ４０１へのＡＲＰ送信・応答のためのエントリーを示している。このため、入力ポートとして“クライアント端末３０１の接続ポート”、送信元ＭＡＣアドレスは“ＡＮＹ”、送信元ＩＰアドレスとして“クライアント端末３０１のＩＰアドレスＳ”、送信元ＴＣＰ／ＩＰポートとして“ＡＮＹ”、宛先ＭＡＣアドレスとして“ＡＮＹ”、宛先ＩＰアドレスとして“サーバ４０１のＩＰアドレスＡ”、宛先ＴＣＰ／ＩＰポートとして“ＡＮＹ”、アウトプットアクションとして出力ポートが“サーバ４０１の接続ポート”、アイドルタイムアウトは“なし”、が対応付けられている。なお、上述“ＡＮＹ”は、ワイルドカードを示しており、ＭＡＣアドレスやＴＣＰ／ＩＰポート番号等を規定していないことを示している。本実施形態ではＡＲＰ用フローテーブルを設定しているが、各クライアントと各サーバにおいて、あらかじめＡＲＰテーブルにＭＡＣアドレスとＩＰアドレスの対応を静的に設定しておくことで、ＡＲＰパケットをネットワークに送出しないようにすることも可能である。このとき、ＡＲＰ用フローテーブルは不要となる。
【００４０】
図４は、ＴＣＰ用のフローテーブルの一部を例として示している。ＴＣＰ用のフローテーブルであるため、プロトコルタイプにはＴＣＰが指定されている。本実施形態では、クライアント３００からサーバ４００への接続を、クライアントに意識させず、オープンフローコントローラ１００が振り分けるために、サーバ４００はサーバ全体での仮想的な代表ＩＰアドレスとしてＸを、代表ＭＡＣアドレスとしてｘを設定し、クライアント３００は代表ＩＰアドレスと代表ＭＡＣアドレスに対して接続要求を行うようにしている。このとき、オープンフロースイッチ２００を介して、クライアント側からサーバへのパケットの宛先アドレスは代表ＩＰアドレス・ＭＡＣアドレスからサーバ個別のＩＰアドレス・ＭＡＣアドレスに変換され、逆方向のサーバからクライアント側へのパケットも同様に、送信元アドレスがサーバ個別のＩＰアドレス・ＭＡＣアドレスから代表ＩＰアドレス・ＭＡＣアドレスに変換される。例として、図４の１番目のフローエントリーは、クライアント３０１がＴＣＰにてサーバの代表ＩＰアドレスＸ・代表ＭＡＣアドレスｘに対してパケットを送信する場合に、そのパケットがサーバ３０１に向けて宛先アドレスが書き換えられ、サーバ３０１に送信するためのエントリーを示している。このとき、宛先ＩＰアドレスの書き換えの指定（ここでは、代表ＩＰアドレスＸをサーバ４０１のＩＰアドレスＡに変更する）、宛先ＭＡＣアドレスの書き換え指定（ここでは、代表ＭＡＣアドレスｘをサーバ４０１のＭＡＣアドレスａにする）は、アウトプットアクションにて設定する。また、アイドルタイムアウトには、ＴＣＰのタイムアウト時間を設定している。
【００４１】
つぎに、このようなオープンフロー技術を利用した通信制御システムについて、その状況ごとに応じた処理を説明する。
【００４２】
［初期状態および通常状態］
図５は、通信制御システムにおけるクライアント端末群３００とサーバ装置群４００との通信接続の一例を示す模式図である。この図５に示される一例では、クライアント端末３０１とサーバ装置４０１とが通信相手として設定され、クライアント端末３０２とサーバ装置４０２とが通信相手として設定されているものとして、通信している様子を模式的に示してものである。上述したとおり、オープンフローコントローラ１００がオープンフロースイッチ部２００を制御することにより、上述のとおり、定められた通信相手と通信接続することができる。
【００４３】
図６は、フローテーブル管理部２０３に記憶されているＴＣＰ用のフローテーブルの一例を簡略化した説明図である。フローテーブルは、実際は図４に示される情報であるが、説明の便宜上、以降、図６に示す簡略化したフローテーブルを用いる。図６に示されるとおり、フローテーブルには、送信元装置、出力先装置、およびアイドルタイムアウト情報が対応付けて記憶されている。図５に示される通信接続を行うにあたって、フローテーブルには、クライアント端末３０１とサーバ装置４０１とが相互に送信元装置、出力先装置として設定される必要がある。クライアント端末３０２およびサーバ装置４０２についても同様である。なお、それぞれクライアント端末３０１のＩＰアドレスをＳ、ＭＡＣアドレスをｓ、クライアント端末３０２のＩＰアドレスをＴ、ＭＡＣアドレスをｔ、クライアント端末３０３のＩＰアドレスをＵ、ＭＡＣアドレスをｕとする。
【００４４】
このように構成された、通信制御システムの処理について説明する。図７は、通信制御システムの通常状態における通信手順を示したシーケンス図である。
【００４５】
まだ通信が発生していない初期状態では、ＡＲＰ用およびＴＣＰ用のフローテーブルは存在していない（Ｓ１０１）。まず、オープンフローコントローラ１００は、ネットワーク管理部１０２により、各クライアント端末３００およびサーバ装置４００間のＡＲＰ（Address Resolution Protocol）用フローテーブルをオープンフロースイッチ部２００に対して設定する（Ｓ１０２）。そして、オープンフロースイッチ部２００では、フローテーブル管理部２０３に、ＡＲＰ用のフローテーブルが記憶される（Ｓ１０３）。このようにＡＲＰ用のフローテーブルを最初に設定しておくことにより、クライアント端末とサーバ装置間で通信を行うためのＭＡＣアドレスを解決することができるようになる。なお、このＡＲＰ用フローテーブルの生成処理は必ずしも必須なものではない。システム管理者によりＡＲＰ用フローテーブルを事前にオープンフロースイッチに設定しておいても良いし、上述したとおり、各クライアントと各サーバにおいて、あらかじめＡＲＰテーブルに通信相手先のＭＡＣアドレスとＩＰアドレスの対応を静的に設定しておくことで、ＡＲＰパケットが送出されなくなるため、ＡＲＰ用フローテーブルを不要とすることができる。
【００４６】
つぎに、クライアント端末３０１が、代表ＩＰアドレスＸに対してＴＣＰ接続をするために必要となる、代表ＩＰアドレスＸに対応するＭＡＣアドレスを取得するため、ＡＲＰ要求を行う（Ｓ１０４）。オープンフロースイッチ部２００では、代表ＩＰアドレスＸに対応するフローテーブルが作成されていないため、コントローラ部２０２により、オープンフローコントローラ１００に、代表ＩＰアドレスＸに対するＡＲＰ要求パケットが転送される（Ｓ１０５）。
【００４７】
オープンフローコントローラ１００では、ネットワーク管理部１０２が、代表ＩＰアドレスＸに対する代表ＭＡＣアドレスｘを、クライアント端末３０１に対してＡＲＰ応答する（Ｓ１０６）。
【００４８】
そして、クライアント端末３０１が、ＡＲＰ応答を受けとり代表ＩＰアドレスＸに対するＭＡＣアドレスｘを得ると、代表ＩＰアドレスＸに対してＴＣＰ接続要求を行う（Ｓ１０７）。オープンフロースイッチ部２００では、ＴＣＰによる接続要求を受けると、このクライアント端末３０１に対応するフローエントリーがＴＣＰ用フローテーブルにあるか否かが、コントローラ部２０２により、判断される。ここでは、クライアント端末３０１のＩＰアドレスＳから代表ＩＰアドレスＸへ接続するフローエントリーがないため、コントローラ部２０２により、対応するフローエントリーが記憶されていないと判断され、オープンフローコントローラ１００に、代表ＩＰアドレスＸへのＴＣＰによる接続要求パケットが転送される（Ｓ１０８）。
【００４９】
オープンフローコントローラ１００では、ネットワーク管理部１０２により、一の接続先となるサーバ装置４００（４０１または４０２）が、各サーバ装置４００における負荷が均等となるようにランダムに決定される。本実施形態では、サーバ装置４０１が決定される（Ｓ１０９）。
【００５０】
オープンフローコントローラ１００では、ネットワーク管理部１０２により、Ｓ１０９で決定した接続先サーバ４０１とクライアント端末３０１がＴＣＰにて接続されるよう、オープンフロースイッチ部２００に対して、フローエントリーの登録指示が行われる（Ｓ１１０）。この登録指示には、クライアント端末３０１からサーバ装置４０１へのＴＣＰ通信と、サーバ装置４０１からクライアント端末３０１へのＴＣＰ通信を行うためのフローエントリーが含まれる（図６、詳しくは図４の１番目と２番目のフローエントリーが対応する）。そして、オープンフロースイッチ部２００のフローテーブル管理部２０３では、登録指示に基づいたフローエントリーが記憶される（Ｓ１１１）。
【００５１】
そうして、ネットワーク管理部１０２により、すでにＳ１０８でオープンフロースイッチ部２００から受信していたＴＣＰ接続要求のパケットがオープンフローコントローラ１００からオープンフロースイッチ部２００に送信され（Ｓ１１２）、オープンフロースイッチ部２００のデータ転送部２０１では、フローテーブルにしたがって、代表ＩＰアドレスＸおよび代表ＭＡＣアドレスｘは、それぞれサーバ装置４０１の宛先ＩＰアドレスＡとＭＡＣアドレスａに書き換えられ、転送処理が行われる（Ｓ１１３）。
【００５２】
次に、サーバ装置４０１がオープンフロースイッチ部２００より転送されたＴＣＰの接続要求パケットを受け取ると、クライアント端末３０１へのＴＣＰ応答のために、クライアント端末３０１のＩＰアドレスＳに対してＡＲＰ要求が行われる（Ｓ１１４）。クライアント端末３０１では、このＡＲＰ要求に対して、クライアント端末３０１のＩＰアドレスＳに対するＭＡＣアドレスｓがＡＲＰにより応答される（Ｓ１１５）。
【００５３】
サーバ装置４０１では、ＡＲＰ応答により通知されたクライアント端末３０１のＭＡＣアドレスｓとクライアント端末３０１のＩＰアドレスＳを用いてＴＣＰ応答がなされ（Ｓ１１６）、オープンフロースイッチ部２００では、データ転送部２０１により、フローテーブルに従い、送信元のサーバ装置４０１のＩＰアドレスＡとＭＡＣアドレスａとが代表ＩＰアドレスのＸと代表ＭＡＣアドレスのｘに書き換えられ、クライアント端末３０１に転送される（Ｓ１１７）。このようにして、クライアント端末３０１とサーバ装置４０１とは接続が確立される（Ｓ１１８）。以降、クライアント端末３０２とサーバ装置４０２との間も同様の処理により接続が確立される（Ｓ１１９）。
【００５４】
［サーバ装置が閉塞状態になったときの処理］
つぎに、サーバ装置４０１が閉塞状態になったときに、新たにクライアント端末３０３による接続要求を受け付けた場合の処理について説明する。
【００５５】
図８は、閉塞処理後におけるクライアント端末３００とサーバ装置４００との通信接続の一例を示す模式図である。図８に示されるとおり、クライアント端末３０１とサーバ装置４０１とが接続されており、クライアント端末３０２とサーバ装置４０２とが接続されている状態において、サーバ装置４０１が閉塞状態に遷移した後に、新たにクライアント端末３０３が接続要求を送信した場合、その接続はサーバ装置４０２に接続されることを示している。
【００５６】
図９に、閉塞処理後に、新たに通信接続が起こったときのフローテーブルを簡略化した具体例を示す。この具体例では、クライアント端末３０３とサーバ装置４０２とが通信できるように新たにフローエントリーが作成され、フローテーブルに記憶さていることを示す。この例では、サーバ装置４０１は閉塞状態であるため、ネットワーク管理部１０２において、サーバ装置４０１を選択することができないため、サーバ装置４０２が選択されている。
【００５７】
図１０は、サーバ装置４０１が閉塞状態であるときに、新たにクライアント端末３０３が接続要求をしたときの処理を示すシーケンス図である。なお、この実施形態においては、例えば図７に示したシーケンス図による通常状態が確立した後の処理を示しており、ＡＲＰ用フローテーブル、図６、詳しくは図４のＴＣＰ用フローテーブルは既に備えられているものとする。ここからさらに図１０のシーケンス処理を行うことで、図９に示すとおり、ＴＣＰ用フローテーブルにクライアント端末３０３からサーバ装置４０２へのＴＣＰ通信、およびサーバ装置４０２からクライアント端末３０３へのＴＣＰ通信のそれぞれのフローエントリーが追加され記憶される。
【００５８】
まず、前提として、例えば図７に示されるシーケンスによって通常状態が確立され、ＡＲＰ用フローテーブルと図６に示したＴＣＰ用フローテーブルがオープンフロースイッチ２００に備えられている（Ｓ２００）。そして、オープンフローコントローラ１００のオペレータにより、管理者インターフェース部１０３を介して、サーバ装置４０１が閉塞状態であることを示す閉塞処理要求がなされる。そして、オープンフローコントローラ１００の閉塞サーバ情報管理部１０４にサーバ閉塞情報が記憶される。このようにして、サーバ装置４０１は閉塞モードとして扱われる（Ｓ２０１）。
【００５９】
このとき、新たにクライアント端末３０３がサーバ群４００に接続しようとし、サーバ群４００の代表ＩＰアドレスＸに対してＴＣＰの接続要求しようとするとする。このとき、ＴＣＰ接続をするために必要となる、代表ＩＰアドレスＸに対応するＭＡＣアドレスを取得するため、クライアント端末３０３から代表ＩＰアドレスＸに対するＡＲＰ要求が行われる（Ｓ２０２）。オープンフロースイッチ部２００のＡＲＰ用フローテーブルには、代表ＩＰアドレスＸに対応するフローエントリーが記憶されていないため、コントローラ部２０２により、オープンフローコントローラ１００に、代表ＩＰアドレスＸに対するＡＲＰ要求パケットが転送される（Ｓ２０３）。オープンフローコントローラ１００では、ネットワーク管理部１０２により、代表ＩＰアドレスＸに対応する代表ＭＡＣアドレスｘが判断され、この代表ＭＡＣアドレスｘがスイッチ制御部１０１により、ＡＲＰで応答される（Ｓ２０４）。
【００６０】
クライアント端末３０３がＡＲＰ応答を受信し代表ＩＰアドレスＸに対応するＭＡＣアドレスｘを得ると、代表ＩＰアドレスＸに対してＴＣＰ接続要求を行う（Ｓ２０５）。オープンフロースイッチ部２００では、コントローラ部２０２により、クライアント端末３０３のＩＰアドレスＵから代表ＩＰアドレスＸへ接続するフローエントリーがないため、対応するフローエントリーがフローテーブルにないと判断され、代表ＩＰアドレスＸへのＴＣＰによる接続要求パケットが、オープンフローコントローラ１００に転送される（Ｓ２０６）。
【００６１】
オープンフローコントローラ１００では、ネットワーク管理部１０２により、閉塞サーバ情報管理部１０４に記憶されているサーバ閉塞情報に基づいて、サーバ装置４０１を除いたサーバ装置群４００のうちのいずれかが選択される（Ｓ２０７）。ここでは、サーバ装置４０２が選択されることになる。そして、オープンフローコントローラ１００では、ネットワーク管理部１０２により、クライアント端末３０３からサーバ装置４０２へのＴＣＰ通信、およびサーバ装置４０２からクライアント端末３０３へのＴＣＰ通信のフローエントリーの登録指示がオープンフロースイッチ部２００に送信され、フローエントリーがフローテーブルに記憶される（Ｓ２０８，Ｓ２０９）（図９の５番目と６番目のフローエントリーが対応する）。
【００６２】
そして、オープンフローコントローラ１００では、ネットワーク管理部１０２により、クライアント端末３０３の代表ＩＰアドレスＸに向けたＴＣＰ接続要求のパケットがオープンフロースイッチ部２００に転送され（Ｓ２１０）、オープンフロースイッチ部２００では、データ転送部２０１により、フローテーブルにしたがって、ＴＣＰ接続要求のパケットの宛先ＩＰアドレスＸとＭＡＣアドレスｘとを、サーバ装置４０２のＩＰアドレスＢとＭＡＣアドレスｂに書き換え、サーバ装置４０２への転送処理を行う（Ｓ２１１）。
【００６３】
次に、サーバ装置４０２がオープンフロースイッチ部２００より転送されたＴＣＰ接続要求パケットを受け取ると、クライアント端末３０３へのＴＣＰ応答のために、クライアント端末３０３のＩＰアドレスＵに対してＡＲＰ要求が行われる（Ｓ２１２）。クライアント端末３０３では、このＡＲＰ要求に対して、クライアント端末３０３のＩＰアドレスＵに対するＭＡＣアドレスｕをＡＲＰにより応答する（Ｓ２１３）。
【００６４】
サーバ装置４０２は、ＡＲＰ応答により得たクライアント端末３０３のＭＡＣアドレスｕとＩＰアドレスＵを用いてクライアント端末３０３に対してＴＣＰ応答し（Ｓ２１４）、オープンフロースイッチ部２００では、コントローラ部２０２により、フローテーブルに従い、送信元のサーバ装置４０２のＩＰアドレスＢとＭＡＣアドレスｂとが代表ＩＰアドレスＸとＭＡＣアドレスｘに書き換えられ、クライアント端末３０３へ転送される（Ｓ２１５）。このようにして、クライアント端末３０３とサーバ装置４０２とは接続が確立される（Ｓ２１６）。
【００６５】
このようにして、サーバ装置群４００のうちの一つまたは複数が閉塞状態となった場合、その閉塞対象となったサーバ装置４００を接続先サーバ装置とすることなく、適切なサーバ装置を選択することができる。
【００６６】
［フローテーブルからのフローエントリーの削除処理］
つぎに、サーバ装置４０１が閉塞処理された後に、クライアント端末３０１とサーバ装置４０１間を接続するオープンフロースイッチ部２００のＴＣＰ用フローテーブルのフローエントリーが、ＴＣＰのセッションの終了にともない削除され接続状態が切断されたときの処理について説明する。図１１は、通信制御システムにおいてクライアント端末３０１とサーバ装置４０１間を接続するＴＣＰ用フローテーブルのフローエントリーが削除され、接続状態が切断されたときの処理を示す模式図である。図１１に示されるとおり、ここでは、クライアント端末３０１とサーバ装置４０１が、クライアント端末３０２とサーバ装置４０２が、クライアント端末３０３とサーバ装置４０２が、それぞれ接続状態であったが、サーバ装置４０１が閉塞状態となった後に、クライアント端末３０１とサーバ装置４０１との接続状態がＴＣＰのセッションの終了にともない、対応するフローエントリーが削除されることにより、切断されたことを示している。
【００６７】
このとき、オープンフロースイッチ部２００においては、クライアント端末３０１とサーバ装置４０１との通信アイドル状態（パケットの送受信が行われていない状態）が、あらかじめ設定したアイドルタイムアウト時間に設定したトランスポート層のタイムアウト値以上の時間継続した場合、クライアント端末３０１とサーバ装置４０１とのＴＣＰセッションが終了したとみなし、フローテーブルから対応するフローエントリーの削除を行う。
【００６８】
一方で、クライアント端末３０１とサーバ装置４０１との通信アイドル状態が、アイドルタイムアウト時間に設定したトランスポート層のタイムアウト値以上の時間継続する前に通信が発生し、アイドル状態から復旧した場合には、フローエントリーの削除は行わずに、そのフローエントリーを用いてクライアント端末３０１とサーバ装置４０１とのＴＣＰセッションが継続される。
【００６９】
これにより、閉塞モードのサーバ装置４０１との通信時においても、アイドルタイムアウト時間を用いることで、ＴＣＰの通信が一時的に停止した場合でも、アイドルタイムアウト時間で示されているトランスポート層のタイムアウト時間の経過前に復旧すれば、対応するフローエントリーが削除されないため、ＴＣＰセッションを継続することが出来る。
【００７０】
図１２に、フローエントリーが削除されるフローテーブルを示す説明図を示す。図１２に示されるとおり、クライアント端末３０１とサーバ装置４０１との通信アイドル状態が、アイドルタイムアウト時間で示されているトランスポート層のタイムアウト値以上の時間、継続した場合、対応したフローエントリーが削除されることになる。ここでは、クライアント端末３０１がサーバ装置４０１とのＴＣＰセッションを終了した場合、トランスポート層のタイムアウト時間経過後に、フローテーブル管理部２０３により、フローテーブルからそのフローエントリー（図１２の１番目と２番目のフローエントリー）が削除される。
【００７１】
図１３は、その処理を示すシーケンス図である。図１３に示されるとおり、サーバ装置４０１の閉塞処理がオペレータにより行われ（Ｓ３０１）、オープンフローコントローラ１００では、管理者インターフェース部１０３からサーバ閉塞情報が入力され、閉塞サーバ情報管理部１０４に記憶される（Ｓ３０２）。そして、クライアント端末３０１、あるいはサーバ装置４０１においてＴＣＰセッション終了等の操作が行われ、クライアント端末３０１とサーバ装置４０１間の通信が停止すると（Ｓ３０３）、オープンフロースイッチ部２００では、フローテーブル管理部２０３により、通信アイドル状態の計時処理が行われる（Ｓ３０４）。そして、その計時時間が対応するフローエントリーに記述されているアイドルタイムアウト時間に達すると、そのフローエントリーが削除される（Ｓ３０５）。また、一方でアイドルタイムアウト時間に達する前にクライアント端末３０１とサーバ装置４０１の通信が再開した場合には、計時時間がリセットされフローエントリーは削除されず、そのフローエントリーを用いてクライアント端末３０１とサーバ装置４０１間の通信が継続される。
【００７２】
このようにして、サーバ装置群４００において閉塞処理が行われた場合に、フローエントリーのアイドルタイムアウト時間を用いてＴＣＰセッションの継続状態を把握することで、接続中のＴＣＰセッションを継続しつつ、ＴＣＰセッションを終了した接続に関してはフローエントリーが削除されるため、フローテーブルにフローエントリーがいつまでも残ることがなくなり、これにより適切なパケット転送処理を行うことができる。
【００７３】
［新たなセッションの要求があったときの処理］
つぎに、サーバ装置４０１が閉塞処理され、クライアント端末３０１とサーバ装置４０１とのＴＣＰのセッションが終了した後（但し、フローエントリーのアイドルタイムアウト時間の満了前に）、新たにクライアント端末３０１がＴＣＰセッションを開始するときの処理について説明する。図１４は、通信制御システムにおいて、クライアント端末３０１とサーバ装置４０１とのＴＣＰセッションが終了した後、新たにクライアント端末３０１がＴＣＰセッションを開始するときの処理を示す模式図である。図１４に示されるとおり、ここでは、クライアント端末３０１とサーバ装置４０１とのＴＣＰセッションが終了状態となっている。但し、該ＴＣＰセッションに係るフローエントリーは、アイドルタイムアウト時間経過前であるために残存している。また、クライアント端末３０２とサーバ装置４０２が、クライアント端末３０３とサーバ装置４０２が、それぞれ接続状態となっている。このとき、クライアント端末３０１がサーバ装置群４００に対して新たなＴＣＰセッションの開始要求をした場合、オープンフローコントローラ１００は、サーバ装置４０１に接続することなく、サーバ装置４０２に接続するようにフローテーブルにフローエントリーを登録する。
【００７４】
この実施形態では、オープンフロースイッチ部２００においては、クライアント端末３０１とサーバ装置４０１とのＴＣＰセッションが終了後、対応するフローテーブルが削除される前に、すなわちアイドルタイムアウト時間経過前に、クライアント端末３０１からサーバ装置群４００に対して、先の通信とは異なる新たなＴＣＰセッションの開始要求が行われたとする。このとき、フローテーブルのクライアント端末３０１とサーバ装置４０１とを接続するフローエントリーはまだ削除されていないが、アイドルタイムアウトにより、追って削除される。
【００７５】
図１５は、クライアント端末３０１が新たにＴＣＰのセッションを開始する際に、図９に示すフローテーブルに対してフローエントリーの追加が行われたフローテーブルを示す説明図である。図１５に示されるとおり、クライアント端末３０１とサーバ装置４０１とのＴＣＰのセッションが終了し、クライアント端末３０１が新たなＴＣＰセッションを開始することに伴い、クライアント端末３０１に対応したフローエントリーを追加することになる。
【００７６】
ここでは、アイドルタイムアウトにより、クライアント端末３０１に対応するフローエントリーが削除される前に、新たなＴＣＰセッション開始要求をクライアント端末３０１が行っているが、この新たなＴＣＰセッション開始要求は、送信元ＴＣＰ／ＩＰポート番号が既存のＴＣＰセッションと異なることにより、既存のフローエントリーで示されるＴＣＰセッションとは別の新規ＴＣＰセッションとして扱われる。すなわち、オープンフロースイッチ部２００では、コントローラ部２０２により新たなＴＣＰセッション開始要求を、既存のＴＣＰセッションに対応するフローエントリーで用いられた送信元ＴＣＰ／ＩＰポート番号（図４の送信元ＴＣＰ／ＩＰポートの欄）とのマッチングに基づいて新規ＴＣＰセッションを判断し、新規ＴＣＰセッションである場合にはパケットをオープンフローコントローラ１００に送り、オープンフローコントローラ１００の判断によりその出力先装置が決定され、フローエントリーが追加される。図１５では、７番目と８番目のフローエントリーがクライアント端末３０１の新規ＴＣＰセッションに対応するフローエントリーとして追加されている。
【００７７】
つぎに、その処理シーケンスについて説明する。図１６は、アイドルタイムアウト経過前に、通信切断されたクライアント端末３０１から新たに接続要求が来た場合の処理を示すシーケンス図である。
【００７８】
図１６に示されるとおり、サーバ装置４０１の閉塞処理がオペレータにより行われ（Ｓ４０１）、オープンフローコントローラ１００では、管理者インターフェース部１０３からサーバ閉塞情報が入力され、閉塞サーバ情報管理部１０４に記憶される（Ｓ４０２）。そして、クライアント端末３０１、あるいはサーバ装置４０１においてＴＣＰのセッション終了等の操作が行われ、クライアント端末３０１とサーバ装置４０１間の通信が停止すると（Ｓ４０３）、オープンフロースイッチ部２００では、フローテーブル管理部２０３によりフローテーブルに記述されているアイドルタイムアウト時間の計時処理が行われる（Ｓ４０４）。
【００７９】
本実施形態では、アイドルタイムアウト時間経過前に、クライアント端末３０１が代表ＩＰアドレスＸに対して、新たにＴＣＰのセッションを開始しようとするものとする。これは以下の手順で行われる。ここでは、クライアント端末３０１は、先に代表ＩＰアドレスＸとＴＣＰセッションを行っていたため、代表ＩＰアドレスに対するＭＡＣアドレスｘを知っているものとする。このため、代表ＩＰアドレスＸに対するＡＲＰ要求は行われず、ＴＣＰ接続要求から行う。
【００８０】
クライアント端末から代表ＩＰアドレスＸに対して接続要求がＴＣＰにて行われる（Ｓ４０５）。このとき、オープンフロースイッチ部２００では、ＴＣＰによる接続要求を受けると、新たなＴＣＰのセッションのためクライアント端末３０１が使用するＴＣＰ／ＩＰポート番号に対応するフローエントリーがフローテーブルにないと、コントローラ部２０２により判断され、オープンフローコントローラ１００に、代表ＩＰアドレスＸへのＴＣＰ接続要求パケットが転送される（Ｓ４０６）。
【００８１】
オープンフローコントローラ１００では、ネットワーク管理部１０２により、一の接続先となるサーバ装置４００（４０１または４０２）をランダムに決定する。ここでの実施形態では、サーバ装置４０１は閉塞状態であるため、サーバ装置４０２が接続先に決定される（Ｓ４０７）。
【００８２】
オープンフローコントローラ１００では、ネットワーク管理部１０２により、オープンフロースイッチ部２００に対して、フローエントリーの登録指示が行われる（Ｓ４０８）。この登録指示では、クライアント端末３０１からサーバ装置４０２へのＴＣＰ通信、およびサーバ装置４０２からクライアント端末３０１へのＴＣＰ通信のフローエントリーが登録される。そして、オープンフロースイッチ部２００のフローテーブル管理部２０３では、登録指示に基づいたフローエントリーが記憶される（Ｓ４０９）。
【００８３】
そうして、オープンフローコントローラ１００は、すでにＳ４０９でオープンフロースイッチ部２００から受信していた代表ＩＰアドレスＸへのＴＣＰ接続要求のパケットをオープンフロースイッチ部２００に転送し（Ｓ４１０）、オープンフロースイッチ部２００のデータ転送部２０１では、フローテーブルにしたがって、パケットの宛先アドレスを、代表ＩＰアドレスＸおよび代表ＭＡＣアドレスｘから、それぞれサーバ装置４０２のＩＰアドレスＢとＭＡＣアドレスｂに書き換え、サーバ装置４０２への転送処理を行う（Ｓ４１１）。
【００８４】
次に、サーバ装置４０２がオープンフロースイッチ部２００より転送されたＴＣＰ接続要求パケットを受け取ると、クライアント端末３０１へのＴＣＰ応答のために、クライアント端末３０１のＩＰアドレスＳに対してＡＲＰ要求を行う（Ｓ４１２）。クライアント端末３０１では、この接続要求に対して、クライアント端末３０１のＩＰアドレスＳに対するＭＡＣアドレスｓがＡＲＰにより応答される（Ｓ４１３）。
【００８５】
サーバ装置４０２では、ＡＲＰ応答により得たクライアント端末３０１のＭＡＣアドレスｓとＩＰアドレスＳを用いてクライアント端末３０１に対してＴＣＰ応答がなされ（Ｓ４１４）、オープンフロースイッチ部２００では、データ転送部２０１により、フローテーブルに従い、送信元ＩＰアドレスＢとＭＡＣアドレスｂとが代表ＩＰアドレスＸと代表ＭＡＣアドレスｘに書き換えられ、転送される（Ｓ４１５）。このようにして、クライアント端末３０１とサーバ装置４０２とは接続が確立される（Ｓ４１６）。
【００８６】
このようにして、サーバ装置４００のいずれかが、閉塞状態となった際に、クライアント端末３００との間のＴＣＰセッションが終了した後に、クライアント端末３００が新たにＴＣＰセッションを開始すると、フローテーブルにおいて前セッションのフローエントリーがアイドルタイムアウト時間経過前で残っていても、ＴＣＰポート番号の違いにより前のＴＣＰセッションと区別し、新たなフローエントリーを追加することで、他の閉塞状態でないサーバ装置４００に対するパケット転送処理を適切に実行することができる。
【００８７】
［作用効果］
この第一実施形態のオープンフローコントローラ１００によれば、複数のサーバ装置４００のうち、転送の可否を示すサーバ装置４００を示す転送可否情報として閉塞情報を閉塞サーバ情報管理部１０４が記憶している。そして、複数のクライアント端末３００のうち、例えばクライアント端末３０１から通信接続要求を受けると、記憶されている閉塞情報（転送可否情報に相当）にしたがって、クライアント端末３０１からの接続要求等の通信情報を、複数のサーバ装置４００のうち、転送可能な、例えば一のサーバ装置４０１に対して振り分け処理を行うよう、オープンフロースイッチ部２００のフローテーブル管理部２０３（フローテーブル）に、エントリ情報であるフローエントリーを登録する。
【００８８】
これにより、オープンフロースイッチング部２００は、クライアント端末３００およびサーバ装置４００のそれぞれからの通信情報を、フローテーブルにしたがって、それぞれの通信接続先に対して、各サーバ装置４００の負荷を均等にして振分処理を行うことができる。よって、オープンフロースイッチング部２００は、アプリケーションに依存することなく、適切な振分処理を行うことができるようになる。
【００８９】
このフローテーブルには、アイドルタイムアウトと呼ばれるタイマ情報が、フローエントリー（エントリ情報）ごとに対応付けて記憶されており、このタイマ情報に基づいてフローエントリーを削除することで、サーバ装置の閉塞等によって、通信が切断したサーバ装置に対するフローエントリーがいつまでも残ることがなく、適切な通信制御を行うことができる。加えて、フローエントリーがタイムアウトする前にクライアント端末３００とサーバ装置４００間の接続が復旧した場合には、タイムアウトがリセットされフローエントリーが消えず、これによりセッションが継続されるため、閉塞処理下であってもセッション継続中のクライアント端末の通信には影響を与えない。
【００９０】
なお、上述したとおり、転送可否情報である閉塞情報は、オープンフローコントローラ１００のオペレータ又は各サーバ装置４００からの指示に基づいて生成され、閉塞サーバ情報管理部１０４に記憶される。よって、閉塞情報等の情報を簡易に登録することができる。
【００９１】
また、本実施形態の通信制御システムは、クライアント端末３００とサーバ装置４００の接続切替を行うオープンフロースイッチ部２００と、当該オープンフロースイッチ部２００を制御するオープンフローコントローラ１００とからなる通信制御システムである。そして、オープンフロースイッチ部２００は、クライアント端末３００およびサーバ装置４００それぞれの通信接続先を示すフローエントリーを記憶するフローテーブルを記憶するフローテーブル管理部２０３管理部と、クライアント端末３００およびサーバ装置４００のそれぞれからの通信情報を、フローテーブルにしたがって、それぞれの通信接続先に対して振分処理を行うデータ転送部２０１とを備える。
【００９２】
よって、クライアント端末３００およびサーバ装置４００におけるアプリケーションに依存することなく、適切なフロー切替処理を行うことができる。
【００９３】
［第二実施形態］
つぎに、第二実施形態について説明する。この第二実施形態においては、仮想化サーバ技術を用いたスケールアウトにより、ユーザ処理に用いる仮想化サーバ数を自在に増減できるシステムを想定する。このとき、仮想化技術により、仮想化サーバ管理装置が指定した任意の物理サーバに、任意の仮想化サーバを割り当てることができる。これにより、特定の仮想化サーバが提供するサービスへの負荷の増加に伴い、仮想化サーバを割り当てる物理サーバ数を増やしスケールアウトすることで、リソース量を動的に変更することができる。しかし、サービスが状態遷移を伴うものである場合、ユーザからの既存の接続はサービスが中断しないよう継続しつつ、新たな接続要求は負荷分散のためにスケールアウト先へ振り分けることが必要になる。
【００９４】
負荷分散を行う従来方法としては、ロードバランサでトラヒックを振り分ける方法があるが、あらかじめ負荷分散のネットワークトポロジを設計しておく必要があるため、仮想化サーバの動的な割り当てに伴うネットワークトポロジの変更に対応することが出来ない。
【００９５】
そこで、本実施形態では、オープンフロースイッチを用いて、ネットワークトポロジの変更に対応しながら、同時にユーザの接続状態を把握し、接続中のユーザに影響のないようにトラヒックの振り分けを行う方法を提案する。
【００９６】
図１７は、本実施形態の通信制御システムのシステム構成を示すシステム構成図である。第二の実施形態では、通信制御システムは、オープンフローコントローラ１００、オープンフロースイッチ部２００、クライアント端末３００、物理サーバ４１０、および仮想化サーバ管理装置５００を備えている。そして、オープンフローコントローラ１００において、閉塞サーバ情報管理部１０４に代えて、転送先物理サーバ候補管理部１０４ａ（記憶手段）を備えている点で、また、この通信制御システムは、新たに仮想化サーバ管理装置５００を備えている点で、第一実施形態と異なっている。また、説明の便宜上、物理サーバ４１０は、物理サーバ４１１および４１２の２台のみ示しているが、この数に限定するものではない。クライアント端末３００についても同様に、３台のみ示しているが、この数に限定するものではない。以下、各構成について説明する。
【００９７】
オープンフローコントローラ１００は、スイッチ制御部１０１、ネットワーク管理部１０２、管理者インターフェース部１０３、転送先物理サーバ候補管理部１０４ａ、およびトランスポート層タイムアウト情報管理部１０５を含んで構成されている。スイッチ制御部１０１、ネットワーク管理部１０２、管理者インターフェース部１０３およびトランスポート層タイムアウト情報管理部１０５については、第一実施形態のオープンフローコントローラ１００と同じであるため、その説明は省略する。
【００９８】
転送先物理サーバ候補管理部１０４ａは、仮想化サーバ管理装置５００において決められた仮想化サーバ４１０ａを配備した、転送先となる物理サーバ４１０の候補情報を記憶する部分である。
【００９９】
そして、ネットワーク管理部１０２は、転送先物理サーバ候補管理部１０４ａに記憶されている仮想化サーバ装置の候補情報に基づいて、オープンフロースイッチ部２００のオープンフローテーブルに書き込む転送先となる物理サーバ４１０を決定する。
【０１００】
また、仮想化サーバ管理装置５００は、仮想化サーバ管理部５０１（仮想化サーバ配備手段）および負荷監視部５０２（監視手段）を含んで構成されている。
【０１０１】
仮想化サーバ管理部５０１は、負荷監視部５０２から現在サービス提供中のサーバにおいて規定値を超える負荷上昇の通知を受け取ると、他の負荷が規定値以下の物理サーバ４１０を検索して、その物理サーバ４１０に仮想化サーバ４１０ａを配備する処理を行う。この仮想化サーバ４１０ａは、それぞれ同機能のサービスを提供するサーバであり、それぞれの仮想化サーバには同一のＩＰアドレスＸが割り当てられる。このように、同機能のサービスを持つサーバを負荷に応じて追加配備し、リソースを追加する処理を一般にスケールアウトという。仮想化サーバ４１０ａが配備された物理サーバ４１０を、オープンフローコントローラ１００ａに通知する。
【０１０２】
負荷監視部５０２は、どの物理サーバ４１０に仮想化サーバ４１０ａを割り当てるかを決定するために、各物理サーバ４１０の負荷監視を行う部分である。例えば、負荷監視部５０２において、物理サーバ４１０の負荷が規定値（例えば、閾値Ａ）を超えたか否かを判断する。そして、負荷が規定値を超えた物理サーバ４１０があった場合、その旨を仮想化サーバ管理部５０１に通知する。また、この負荷監視部５０２は、物理サーバ４１０の負荷が閾値Ａを超えた後、規定値（例えば、閾値Ｂ（＜Ａ））を下回った場合に、その旨を仮想化サーバ管理部５０１に通知する。また、処理負荷が閾値Ｃ（＜Ａ）を下回るかどうかについても、監視を行う。
【０１０３】
［通常状態］
つぎに、このように構成された通信制御システムにおいて、仮想化サーバ管理装置５００を用いたオープンフロー処理について説明する。図１８は、本実施形態の通信制御システムにおけるクライアント端末３００とサーバ４１０との接続状態を示した模式図である。
【０１０４】
図１８に示されるとおり、クライアント端末３０１と物理サーバ４１１が接続状態であり、クライアント端末３０２と物理サーバ４１２が接続状態であることが、オープンフロースイッチ部２００におけるフローテーブル管理部に記憶されているフローテーブルにて記憶されている。
【０１０５】
また、仮想化サーバ管理装置５００は、各物理サーバ４１０を管理しており、その負荷状態に応じて仮想化サーバ４１１ａおよび４１２ａを、各物理サーバ４１１および４１２に配備している。
【０１０６】
また、オープンフローコントローラ１００は、仮想化サーバ管理装置５００において管理されている転送先の候補となる物理サーバ４１１および４１２の情報を記憶している。
【０１０７】
オープンフローコントローラ１００は、転送先物理サーバ候補管理部１０４ａに記憶されている候補情報にしたがって、各物理サーバの負荷が保守者の管理ポリシに従って、例えば均等になるように、オープンフロースイッチ部２００におけるフローテーブル管理部２０３のフローテーブルにフローエントリーを登録する。
【０１０８】
オープンフロースイッチ部２００では、このフローテーブルにしたがって、クライアント端末３００からのＴＣＰ接続要求を仮想化サーバ４１０ａのいずれか（仮想化サーバ４１１ａまたは仮想化サーバ４１２ａ）に振り分ける処理を行う。
【０１０９】
この詳細な処理について説明する。図１９は、本実施形態の通信処理を示すシーケンス図であり、クライアント端末３０１および３０２からＴＣＰ接続要求をして各物理サーバ４１１および４１２とＴＣＰセッションを確立するときの処理を示す。なお、この図においてはＡＲＰ処理については省略している。
【０１１０】
まず、クライアント端末３０１から仮想化サーバ４１０ａ（ＩＰアドレスＸ）に対してＴＣＰ接続要求が送信される（Ｓ５０１）。オープンフロースイッチ部２００では、そのフローテーブルに、クライアント端末３０１に対応するフローエントリーが記憶されていないため、ＩＰアドレスＸに対するＴＣＰ接続要求パケットがオープンフローコントローラ１００に転送される（Ｓ５０２）。
【０１１１】
オープンフローコントローラ１００では、ネットワーク管理部１０２により、転送先物理サーバ候補管理部１０４ａに記憶されている候補情報に基づいて、一の接続先となる仮想化サーバ４１０ａを配備する物理サーバ４１０がランダム（もしくは仮想化サーバ管理装置より通知された負荷状態の低いサーバ）に決定される。ここでの実施形態では、仮想化サーバ４１０ａを備える物理サーバ４１１が決定される（Ｓ５０３）。
【０１１２】
オープンフローコントローラ１００では、ネットワーク管理部１０２により、オープンフロースイッチ部２００に対して、フローエントリーの登録指示が行われる（Ｓ５０４）。この登録指示には、クライアント端末３０１と物理サーバ４１１との対応付けを示すフローエントリーが含まれる。そして、オープンフロースイッチ部２００のフローテーブル管理部２０３では、登録指示に基づいたフローエントリーが記憶される（Ｓ５０５）。
【０１１３】
そうして、ネットワーク管理部１０２により、すでにＳ５０２でオープンフロースイッチ部２００から受信していたＴＣＰ接続要求のパケットがオープンフローコントローラ１００からオープンフロースイッチ部２００に転送され（Ｓ５０６）、オープンフロースイッチ部２００のデータ転送部２０１では、フローテーブルにしたがって、パケットが物理サーバ４１１へ転送される（Ｓ５０７）。物理サーバ４１１では受信したパケットをサーバ内の仮想化サーバ４１１ａへ転送する（Ｓ５０７ａ）。
【０１１４】
仮想化サーバ４１１ａは物理サーバ４１１を介して、ＴＣＰ接続要求のあったクライアント端末３０１に対してＴＣＰ応答処理がなされ（Ｓ５０８）、オープンフロースイッチ部２００ではフローテーブルにしたがってクライアント端末３０１に、この応答が転送される（Ｓ５０９）。そして、クライアント端末３０１と物理サーバ４１１内の仮想化サーバ４１１ａとの間のＴＣＰセッションが確立される（Ｓ５１０）。
【０１１５】
また、クライアント端末３０２も同様の処理が行われる。すなわち、クライアント端末３０２から仮想化サーバ４１０ａを示すＩＰアドレスＸを用いてＴＣＰ接続要求が行われ（Ｓ５１１）、オープンフロースイッチ部２００では、オープンフローコントローラ１００に、そのＩＰアドレスＸに対するＴＣＰ接続要求パケットが転送される（Ｓ５１２）。
【０１１６】
そして、オープンフローコントローラ１００では、転送先となる物理サーバ４１２が決定され、その旨がオープンフロースイッチ部２００に転送され、フローエントリーの登録処理が行われる（Ｓ５１３〜Ｓ５１５）。そして、オープンフローコントローラ１００からＴＣＰ接続要求等のパケットが転送され、オープンフロースイッチ部２００では、フローテーブルにしたがって、物理サーバ４１２に転送される（Ｓ５１７）。物理サーバ４１２では、受信したパケットをサーバ内の仮想化サーバ４１２ａへ転送する（Ｓ５１７ａ）。仮想化サーバ４１２ａは物理サーバ４１２を介して、クライアント端末３０２に対してＴＣＰ応答処理を行い、オープンフロースイッチ部２００において、フローテーブルに従った転送処理をしてクライアント端末３０２に応答処理がなされ、ＴＣＰセッションが確立される（Ｓ５１８〜Ｓ５２０）。
【０１１７】
このようにして、仮想化サーバ４１０ａを有する、適切な物理サーバ４１０に対して振分処理を行うことができる。
【０１１８】
図２０は、本実施形態の通信処理を示すシーケンス図であり、クライアント端末３０３および３０４からＴＣＰ接続要求をして各物理サーバ４１１および４１２内の仮想化サーバ４１１aと４１２ａとＴＣＰセッションを確立するときの処理を示す。上述と同様に、この図においてもＡＲＰ処理については省略している。
【０１１９】
図２０においても、上述と同様の処理であって、クライアント端末３０３および３０４から仮想化サーバを示すＩＰアドレスＸを用いてＴＣＰ接続要求が行われ（Ｓ６１１、６２１）、オープンフロースイッチ部２００では、オープンフローコントローラ１００に、ＩＰアドレスＸに対するＴＣＰ接続要求パケットが転送される（Ｓ６１２、６２２）。
【０１２０】
そして、オープンフローコントローラ１００では、転送先となる物理サーバ４１１および４１２がそれぞれ決定され、その旨がオープンフロースイッチ部２００に転送され、フローエントリーの登録処理が行われる（Ｓ６１３〜Ｓ６１５、Ｓ６２３〜Ｓ６２５）。そして、オープンフローコントローラ１００からＴＣＰ接続要求等のパケットが転送され、オープンフロースイッチ部２００では、フローテーブルにしたがって、物理サーバ４１１および４１２に転送される（Ｓ６１７、Ｓ６２７）。物理サーバ４１１および４１２では、受信したパケットをそれぞれのサーバ内の仮想化サーバ４１１ａおよび仮想化サーバ４１２ａに転送する（Ｓ６１７ａ、Ｓ６２７ａ）。仮想化サーバ４１１ａおよび仮想化サーバ４１２ａは、物理サーバ４１１および４１２を介して、クライアント端末３０１および３０２に対してＴＣＰ応答処理を行い、オープンフロースイッチ部２００において、フローテーブルに従った振分処理をしてクライアント端末３０１および３０２に応答処理がなされ、端末・サーバ間のＴＣＰセッションが確立される（Ｓ６１８〜Ｓ６２０、Ｓ６２８〜Ｓ６３０）。
【０１２１】
［スケールアウトした後の振分処理］
つぎに、仮想化サーバ管理装置５００を用いて、スケールアウトをして、新たな仮想化サーバ４１０ａに振り分けるときの処理について説明する。図２１は、その接続状態を模式的に示す模式図である。図２１では、クライアント端末３０３および３０４が、仮想化サーバ４１０ａへの接続を行い、それぞれが物理サーバ４１１および４１２に割り振られたとする。そして、仮想化サーバ管理装置５００の負荷監視部５０２により監視される物理サーバ４１１および４１２の負荷が、事前に設定した閾値Ａを越える場合、当該仮想化サーバ管理装置５００の仮想化サーバ管理部５０１は、他の負荷が閾値Ｃ未満の物理サーバ４１０、例えば物理サーバ４１３に仮想化サーバ４１３ａを配備し、スケールアウトを行う。
【０１２２】
そして、新たに仮想化サーバに接続しようとするクライアント端末３０５は、オープンフローコントローラ１００により、物理サーバ４１３に接続されるように、そのオープンフロースイッチ部２００が制御される。
【０１２３】
図２２は、この詳細な処理を示すシーケンス図であり、仮想化サーバ管理装置５００により新たな物理サーバ４１３に、仮想化サーバ４１３ａを配備するときの処理を示す。
【０１２４】
まず、仮想化サーバ管理装置５００において、負荷監視部５０２により、物理サーバ４１１および４１２の負荷が閾値Ａ以上であることが検知される（Ｓ７０１）。そして、仮想化サーバ管理部５０１により、負荷が閾値Ｃ未満（閾値Ｃ＜閾値Ａ）である負荷の低い物理サーバが検索され、当該物理サーバに仮想化サーバを配備するよう、その配備処理が行われる。ここでは、物理サーバ４１３の負荷が閾値Ｃ未満であると判断され、当該物理サーバ４１３に仮想化サーバ４１３ａが配備される（Ｓ７０２）。
【０１２５】
そして、この配備処理とともに、仮想化サーバ管理装置５００の仮想化サーバ管理部５０１によりオープンフローコントローラ１００に対して、スケールアウトされた物理サーバ４１０および仮想化サーバ４１０ａが通知され、オープンフローコントローラ１００おける転送先物理サーバ候補管理部１０４ａに、転送先となる候補情報として、物理サーバ４１３が記憶される。一方、閾値Ａを超えた物理サーバ４１１および４１２は、負荷が閾値Ｂ未満となるまで候補情報から除外される（Ｓ７０３）。
【０１２６】
このようにオープンフローコントローラ１００の転送先物理サーバ候補管理部１０４ａには、転送先の候補情報として物理サーバ４１３が登録される。そして、このような状況において、オープンフロースイッチ部２００において、クライアント端末３０５から新たに仮想化サーバ４１０ａのＩＰアドレスＸに対してＴＣＰ接続要求が受信され（Ｓ７０４）、オープンフロースイッチ部２００では、クライアント端末３０５に対応するフローエントリーがフローテーブルに記憶されていないため、オープンフローコントローラ１００に、ＩＰアドレスＸへのＴＣＰ接続要求パケットが転送される（Ｓ７０５）。
【０１２７】
そして、オープンフローコントローラ１００では、転送先物理サーバ候補管理部１０４ａに記憶されている候補情報に基づいて、転送先となる物理サーバ４１３が決定され（Ｓ７０６）、オープンフローコントローラ１００から物理サーバ４１３に転送するフローエントリーの登録指示をオープンフロースイッチ部２００に対して行う（Ｓ７０７）。オープンフロースイッチ部２００では、そのフローテーブルに、新たなフローエントリーの登録処理が行われる（Ｓ７０８）。そして、オープンフローコントローラ１００から、Ｓ７０６ですでに受信していたＴＣＰ接続要求等のパケットが転送され（Ｓ７０９）、オープンフロースイッチ部２００では、フローテーブルにしたがって、物理サーバ４１３に転送される（Ｓ７１０）。物理サーバ４１３では、受信したパケットをサーバ内の仮想化サーバ４１３ａに転送する（Ｓ７１０ａ）。仮想化サーバ４１３ａは、物理サーバ４１３を介してクライアント端末３０５に対してＴＣＰ応答処理を行い（Ｓ７１１）、オープンフロースイッチ部２００において、フローテーブルに従った転送処理をしてクライアント端末３０５に応答処理がなされる（Ｓ７１２）。そして、端末・サーバ間のＴＣＰセッションが確立される（Ｓ７１３）。
【０１２８】
なお、オープンフローコントローラ１００は、スケールアウトが行われた後、負荷分散のために、トラヒックをスケールアウト先の物理サーバ４１３へ振り分けるようにオープンフロースイッチ部２００のフローテーブルを書き換えている。このとき、クライアント端末３０１が現在接続中の物理サーバ４１１上の仮想化サーバ４１１ａとＴＣＰセッションを継続している場合、このクライアント端末３０１のフローまで、別の物理サーバ４１０上の仮想化サーバ４１０ａへ振り分けてしまうと、クライアント端末３０１のＴＣＰセッションが途切れてしまう問題がある。この問題を解決するために、オープンフロースイッチ部２００において、フローテーブルを参照することで、トラヒックに対応したフローエントリーがあるか否かにより、ＴＣＰセッション状態を判定し、ＴＣＰセッション継続中のトラヒックについては、フローテーブルの書き換えを行うことなく、そのまま転送処理を行うようにする。これらのＴＣＰセッションの継続に係る処理は実施例１において示したとおりである。
【０１２９】
一方、オープンフロースイッチ部２００は、クライアント端末３０１等の送信元のＴＣＰのポート番号により、ＴＣＰセッション状態を判定する。例えば、オープンフロースイッチ部２００のデータ転送部２０１は、新たに接続を開始したクライアント端末３０５のトラヒックが新規セッションであるかどうかをクライアント端末３０５が使用するＴＣＰポート番号が既にフローエントリーにあるかどうかで判断する。図２２の例では、新規セッションであると判定し、オープンフローコントローラ１００の制御によってフローテーブルに新たなフローエントリーが登録され、物理サーバ４１３へ振り分けられている。
【０１３０】
引き続き、図２２を用いて、オープンフローコントローラ１００に、転送先となる候補情報として、物理サーバ４１３が登録されている状態において、クライアント端末３０１と物理サーバ４１１内の仮想化サーバ４１１ａとのＴＣＰセッションが終了し、その後新たにＴＣＰセッションを開始するときの処理について説明する。
【０１３１】
クライアント端末３０１と物理サーバ４１１内の仮想化サーバ４１１ａとのＴＣＰセッションが終了する（Ｓ７２１）。その後、クライアント端末３０１から仮想化サーバ４１０ａのＩＰアドレスＸに対して、新たにＴＣＰ接続要求が行われる（Ｓ７２２）。オープンフロースイッチ部２００では、そのフローテーブルに、クライアント端末３０１が新たなＴＣＰセッションで用いるＴＣＰポート番号に対応したフローエントリーが記憶されていないため、ＩＰアドレスＸに対するＴＣＰ接続要求パケットがオープンフローコントローラ１００に転送される（Ｓ７２３）。
【０１３２】
オープンフローコントローラ１００では、ネットワーク管理部１０２により、転送先物理サーバ候補管理部１０４ａに記憶されている候補情報に基づいて、一の接続先となる仮想化サーバを配備する一の物理サーバ４１０がランダムに決定される。ここでは、候補情報として物理サーバ４１３のみが登録されているため、物理サーバ４１３が接続先として決定される（Ｓ７２４）。
【０１３３】
オープンフローコントローラ１００では、ネットワーク管理部１０２により、オープンフロースイッチ部２００に対して、フローエントリーの登録指示が行われる（Ｓ７２５）。この登録指示には、クライアント端末３０１と物理サーバ４１３との対応付けを示すフローエントリーが含まれる。そして、オープンフロースイッチ部２００のフローテーブル管理部２０３では、登録指示に基づいたフローエントリーが記憶される（Ｓ７２６）。
【０１３４】
そうして、すでにＳ７２２でオープンフロースイッチ部２００から受信していたＴＣＰ接続要求のパケットがオープンフローコントローラ１００からオープンフロースイッチ部２００に送信され（Ｓ７２７）、オープンフロースイッチ部２００のデータ転送部２０１では、フローテーブルにしたがって、ＴＣＰ接続要求パケットの転送処理が行われる（Ｓ７２８）。物理サーバ４１３では、受信したパケットをサーバ内の仮想化サーバ４１３ａに転送する（Ｓ７２８ａ）。
【０１３５】
仮想化サーバ４１３ａは、物理サーバ４１３を介してＴＣＰ接続要求のあったクライアント端末３０１に対してＴＣＰ応答処理を行い（Ｓ７２９）、オープンフロースイッチ部２００ではフローテーブルにしたがってクライアント端末３０１に、この応答が転送される（Ｓ７３０）。そして、クライアント端末３０１と物理サーバ４１３内の仮想化サーバ４１３ａとの間のＴＣＰセッションが確立される（Ｓ７３１）。
【０１３６】
このようにして、接続状態となっている物理サーバ４１０において、負荷が閾値Ａ以上となった場合には、新たな物理サーバ４１０（上述の例では物理サーバ４１３）が選択され、仮想化サーバ４１３ａが配備されることにより、物理サーバ４１０における負荷を均等にすることができる。
【０１３７】
［スケールアウト処理と負荷低減したサーバに対する振分処理］
つぎに、物理サーバ４１０において、負荷が閾値Ａ以上になったものの、その後負荷が軽減され閾値Ｂ未満にあった場合には、リソースの効率的な利用の観点から再度その物理サーバ４１０を利用したい場合がある。図２３は、物理サーバ４１３の負荷が高くなったことに伴って新たに物理サーバ４１４に仮想化サーバ４１４ａを配備し、その後、物理サーバ４１１の負荷が軽減したときの接続状態を模式的に示す模式図である。
【０１３８】
図２３に示されているとおり、仮想化サーバ管理装置５００では、負荷が閾値Ａ以上のものとして、物理サーバ４１２および４１３を記憶している。また、当初負荷が閾値Ａ以上であったものの、その後、負荷が閾値Ｂ未満になったものとして物理サーバ４１１を記憶している。
【０１３９】
また、オープンフローコントローラ１００において、転送先物理サーバ候補として、物理サーバ４１１および４１４を記憶している。
【０１４０】
仮想化サーバ管理装置５００では、物理サーバ４１３の負荷が閾値Ａ以上となったことを検知すると、仮想化サーバ管理部５０１が負荷が閾値Ｃ未満である物理サーバ４１４に仮想化サーバを配備する。そして、仮想化サーバ管理部５０１は、新たな転送先物理サーバの候補として、物理サーバ４１４を、転送先物理サーバ候補管理部１０４ａに登録する。同時に転送先サーバ候補から負荷が閾値Ａを越えた物理サーバ４１３を削除する。
【０１４１】
また、物理サーバ４１１の負荷が閾値Ｂ以下になった場合には、仮想化サーバ管理部５０１は、転送先の候補として、物理サーバ４１１を追加するよう、オープンフローコントローラ１００の転送先物理サーバ候補管理部１０４ａを書き換える。これにより、クライアント端末３０３がＴＣＰセッションを終了した後、新たにＴＣＰセッション開始の要求があった場合、オープンフローコントローラ１００は、物理サーバ４１３に接続せず、新たな物理サーバ４１４（または４１１）に接続するように、オープンフローテーブルを変更することができる。
【０１４２】
このように動作する通信制御システムの詳細な処理について説明する。図２４は、通信制御システムにおいて、物理サーバ４１３の負荷が増大したことに伴って物理サーバ４１４へスケールアウトしたときの振分処理を示すシーケンス図である。
【０１４３】
まず、仮想化サーバ管理装置５００において、負荷監視部５０２により、物理サーバ４１３の負荷が閾値Ａ以上であることが検知される（Ｓ８０１）。そして、仮想化サーバ管理部５０１により、負荷が閾値Ｃ未満である負荷の低い物理サーバが検索され、当該物理サーバ４１０に仮想化サーバ４１０ａを配備するよう、その配備処理が行われる。ここでは、物理サーバ４１４が、負荷が閾値Ｃ未満であると判断され、当該物理サーバ４１４に仮想化サーバ４１４ａが配備される（Ｓ８０２）。これらの処理に伴い、仮想化サーバ管理装置５００は、オープンフローコントローラ１００における転送先物理サーバ候補管理部１０４ａに記憶されている候補情報から、物理サーバ４１３を削除し、物理サーバ４１４を追加する（Ｓ８０３）。
【０１４４】
また、一方で、仮想化サーバ管理装置５００において、負荷監視部５０２により、物理サーバ４１１の負荷が閾値Ｂ未満に下がったことが検知される。（Ｓ８０４）
【０１４５】
そして、この検知処理に伴い、仮想化サーバ管理装置５００は、オープンフローコントローラ１００における転送先物理サーバ候補管理部１０４ａに記憶されている候補情報に、物理サーバ４１１を追加する。（Ｓ８０５）。以上のＳ８０３，Ｓ８０５の処理により、オープンフローコントローラ１００では、転送先の候補情報として物理サーバ４１１および４１４が登録される。
【０１４６】
ここで、クライアント端末３０３と物理サーバ４１１とのＴＣＰセッションが終了されるとする（Ｓ８０６）。つぎに、改めて、クライアント端末３０３から、新たなＴＣＰセッション開始のために、オープンフロースイッチ部２００に対して、新たに仮想化サーバ４１０ａのＩＰアドレスＸに対してＴＣＰ接続要求が送信される（Ｓ８０７）。オープンフロースイッチ部２００では、クライアント端末３０３の新たなＴＣＰセッションに対応するフローエントリーがフローテーブルに記憶されていないため、オープンフローコントローラ１００に、ＩＰアドレスＸに対するＴＣＰ接続要求パケットが転送される（Ｓ８０８）。
【０１４７】
そして、オープンフローコントローラ１００では、転送先物理サーバの候補情報にしたがって、転送先となる物理サーバ４１４が決定され（Ｓ８０９）、その旨がオープンフロースイッチ部２００に転送され（Ｓ８１０）、フローエントリーの登録処理が行われる（Ｓ８１１）。
【０１４８】
そして、オープンフローコントローラ１００から、Ｓ８０７で受けた接続要求等のパケットが転送され（Ｓ８１２）、オープンフロースイッチ部２００では、フローテーブルにしたがって、物理サーバ４１４にパケットを転送する（Ｓ８１３）。物理サーバ４１４では、受信したパケットをサーバ内の仮想化サーバ４１４ａに転送する（Ｓ８１３ａ）。仮想化サーバ４１４ａは、物理サーバ４１４を介して、クライアント端末３０３に対してＴＣＰ応答処理を行い（Ｓ８１４）、オープンフロースイッチ部２００において、フローテーブルに従った転送処理をしてクライアント端末３０３に応答処理がなされる（Ｓ８１５）。そして、クライアント端末３０３と物理サーバ４１４内の仮想化サーバ４１４ａ間のＴＣＰセッションが確立される（Ｓ８１６）。
【０１４９】
［作用効果］
この第二実施形態のオープンフローコントローラ１００においても、第一実施形態と同様の作用効果を奏するものであって、複数の物理サーバ４１０のうち、転送可能な物理サーバのリストを転送先物理サーバ候補情報（転送可否情報）として転送先物理サーバ候補管理部１０４ａが記憶している。そして、複数のクライアント端末３００のうち、例えばクライアント端末３０１から通信接続要求を受けると、記憶されている転送先物理サーバ候補情報（転送可否情報に相当）にしたがって、クライアント端末３０１からの接続要求等の通信情報を、複数の物理サーバ４１０のうち、転送可能な、例えば一の物理サーバ４１１に対して振り分け処理を行うよう、オープンフロースイッチ部２００のフローテーブル管理部２０３（フローテーブル）に、エントリ情報であるフローエントリーを登録する。
【０１５０】
これにより、オープンフロースイッチング部２００は、クライアント端末３００および物理サーバ４１０のそれぞれからの通信情報を、フローテーブルにしたがって、それぞれの通信接続先に対して、各物理サーバ４１０の負荷を均等にして振分処理を行うことができる。よって、オープンフロースイッチング部２００は、アプリケーションに依存することなく、適切な振分処理を行うことができるようになる。
【０１５１】
このフローテーブルには、アイドルタイムアウトと呼ばれるタイマ情報が、フローエントリー（エントリ情報）ごとに対応付けて記憶されており、このタイマ情報に基づいてフローエントリーを削除することで、サーバ装置の閉塞等によって、通信が切断したサーバ装置に対するフローエントリーがいつまでも残ることがなく、適切な通信制御を行うことができる。加えて、フローエントリーがタイムアウトする前にクライアント端末３００とサーバ装置４１０間の接続が復旧した場合には、タイムアウトがリセットされフローエントリーが消えず、これによりセッションが継続されるため、閉塞処理下であってもセッション継続中のクライアント端末の通信には影響を与えない。
【０１５２】
なお、上述したとおり、転送可否情報である転送先物理サーバ候補情報は、仮想化サーバ管理装置５００からの指示に基づいて生成され、転送先物理サーバ公報情報管理部１０４ａに記憶される。よって、仮想化サーバ管理装置５００に基づいた適切な情報の管理を行うことができる。
【０１５３】
また、第二実施形態の仮想化サーバ管理装置５００によれば、仮想化サーバ４１０ａが配備されている各物理サーバ４１０の負荷を監視し、各物理サーバ４１０の全部または一部における負荷が閾値以上となった場合には、他の物理サーバ４１０において、仮想化サーバ４１０ａを新たに配備し、新たに仮想化サーバ４１０ａが配備された物理サーバを転送可能な物理サーバ４１０として、オープンフローコントローラ１００に通知することができる。
【０１５４】
オープンフローコントローラ１００では、仮想化サーバ管理装置５００から得た情報を転送先物理サーバ候補情報管理部１０４ａが記憶しておき、この情報に基づいてオープンフロースイッチ部２００のフローテーブルのフローエントリーを登録する。オープンフロースイッチ部２００は、このフローテーブルに従った振分処理を行うことができる。
【０１５５】
よって、物理サーバ４１０における負荷分散を、アプリケーション等に依存することなく、適切に行うことができる。
【符号の説明】
【０１５６】
１００…オープンフローコントローラ、１０１…スイッチ制御部、１０２…ネットワーク管理部、１０３…管理者インターフェース部、１０４…閉塞サーバ情報管理部、１０４ａ…転送先物理サーバ候補管理部、１０５…トランスポート層タイムアウト情報管理部、２００…オープンフロースイッチ部、２０１…データ転送部、２０２…コントローラ部、２０３…フローテーブル管理部、３００、３０１、３０２、３０３、３０４、３０５…クライアント端末、４００、４０１、４０２…サーバ装置、４１０、４１１、４１２、４１３、４１４…物理サーバ、４１０ａ、４１１ａ、４１２ａ、４１３ａ…仮想化サーバ、５００…仮想化サーバ管理装置、５０１…仮想化サーバ管理部、５０２…負荷監視部。
【図１】
0005808700.tif 000002
【図２】
0005808700.tif 000003
【図３】
0005808700.tif 000004
【図４】
0005808700.tif 000005
【図５】
0005808700.tif 000006
【図６】
0005808700.tif 000007
【図７】
0005808700.tif 000008
【図８】
0005808700.tif 000009
【図９】
0005808700.tif 000010
【図１０】
0005808700.tif 000011
【図１１】
0005808700.tif 000012
【図１２】
0005808700.tif 000013
【図１３】
0005808700.tif 000014
【図１４】
0005808700.tif 000015
【図１５】
0005808700.tif 000016
【図１６】
0005808700.tif 000017
【図１７】
0005808700.tif 000018
【図１８】
0005808700.tif 000019
【図１９】
0005808700.tif 000020
【図２０】
0005808700.tif 000021
【図２１】
0005808700.tif 000022
【図２２】
0005808700.tif 000023
【図２３】
0005808700.tif 000024
【図２４】
0005808700.tif 000025