説明

ネットワークシステム、コントローラ、ネットワーク制御方法

【課題】あるアプライアンスの処理を動的に他のアプライアンスに委譲することができる技術を提供すること。
【解決手段】スイッチは、フローテーブルを備え、フローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定する。コントローラは、アプライアンスに関連する処理負荷を示す負荷情報を取得し、また、処理負荷を閾値と比較する。第1アプライアンスに関連する処理負荷が閾値以上になった場合、コントローラは委譲処理を行う。その委譲処理において、コントローラは、第1アプライアンスが処理しているフローのうち少なくとも1つを選択フローとして選択し、第1アプライアンスと異なる第2アプライアンスを選択し、選択フローに属するパケットを第2アプライアンスに転送することを指定するエントリをフローテーブルに設定するように、スイッチに対して指示する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、アプライアンスを備えるネットワークシステムを制御する技術に関する。特に、本発明は、あるアプライアンスの処理を他のアプライアンスに委譲する技術に関する。
【背景技術】
【0002】
アプライアンス(ネットワークアプライアンス)は、ネットワークトラヒックに対して特定の処理を実行するネットワーク装置である。アプライアンスとしては、負荷分散の機能を提供するロードバランサや、セキュリティを向上させるファイヤーウォール等が挙げられる。近年の仮想化技術の発展に伴い、ゲストOSを対象とした仮想的なセキュリティアプライアンスにも注目が集まっている。例えば、WAF(Web Application Firewall)機能を有する仮想アプライアンスは、1台の物理サーバ上で複数のゲストOSのトラヒックのアプリケーションレイヤまで監視する。
【0003】
ここで、トラヒック量やゲストOSの稼働状況によっては、アプライアンスが稼働する物理サーバのリソースが不足する場合がある。その場合、アプライアンスの性能が低下し、処理がおいつかなくなる。そのような事態を回避するために、あるアプライアンスの処理を、一時的に、他のアプライアンスに委譲することが考えられる。
【0004】
非特許文献1は、トンネリング・プロトコルに関する技術を開示している。当該技術によれば、GRE対応ルータがIPパケットにヘッダを付加する。その付加ヘッダに基いて、IPネットワークを透過して遠隔地の外部装置と接続することができる。
【0005】
非特許文献2に開示された技術によれば、ネットワーク上のトラヒックをサンプリングして監視する。それにより、ルータの負荷を抑えつつ監視することができる。更に、アプライアンスなどの外部装置へ監視したフローを流すことで、高度な分析を行うことが可能である。
【0006】
非特許文献3に開示された技術によれば、自由にパスを設定し、トラヒックをアプライアンスなどの外部装置へ流すことができる。
【0007】
また、負荷分散やロードバランサに関連する技術として、以下のものが知られている。
【0008】
特許文献1は、動的構成制御装置を開示している。その動的構成制御装置は、ウェブサーバとアプリケーションサーバが接続されるウェブシステムにおいて、各サーバの負荷状況に基いてサービス構成を動的に変更する。
【0009】
特許文献2は、複数のロードバランサを介するデータ通信を行うクラスタシステムを開示している。ノードサーバが正常に動作しなくなった場合にも、複数のロードバランサは、同一のセッションまたは関連する複数のセッションに属するメッセージを、同一のクラスタノードに分配する。これにより、効率よく複数のロードバランサからのメッセージを処理することができる。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開2003−281007号公報
【特許文献2】特開2007−156569号公報
【非特許文献】
【0011】
【非特許文献1】Generic Routing Encapsulation (GRE) http://www.ietf.org/rfc/rfc2784.txt
【非特許文献2】sFlow http://tools.ietf.org/rfc/rfc3176.txt
【非特許文献3】D. A. Joseph, A. Tavakoli, and I. Stoica. A Policy−aware Switching Layer for Data Centers. ACM SIGCOMM Computer Communications Review (CCR), 38(4):51−62, 2008. http://ccr.sigcomm.org/online/files/p51−josephA.pdf
【発明の概要】
【発明が解決しようとする課題】
【0012】
あるアプライアンスの処理を、一時的に、他のアプライアンスに委譲することを考える。非特許文献1、2の場合、アプライアンスは、当該文献に記載されている特別なフォーマットに対応している必要があり、さもなければ処理を行うことができない。非特許文献3では、あるタイミングで特定の処理を委譲するといった動的な制御は考慮されていない。
【0013】
本発明の1つの目的は、あるアプライアンスの処理を動的に他のアプライアンスに委譲することができる技術を提供することにある。
【課題を解決するための手段】
【0014】
本発明の1つの観点において、ネットワークシステムが提供される。そのネットワークシステムは、ネットワーク中に配置されたアプライアンス及びスイッチと、それらアプライアンス及びスイッチに接続されたコントローラと、を備える。スイッチは、フローテーブルを備え、フローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定する。スイッチは、パケットを受け取るとフローテーブルを参照し、受け取ったパケットにマッチするエントリで指定されるアクションを受け取ったパケットに対して行う。コントローラは、アプライアンスに関連する処理負荷を示す負荷情報を取得し、また、処理負荷を閾値と比較する。アプライアンスの1つである第1アプライアンスに関連する処理負荷が閾値以上になった場合、コントローラは委譲処理を行う。その委譲処理において、コントローラは、第1アプライアンスが処理しているフローのうち少なくとも1つを選択フローとして選択し、アプライアンスの1つであって第1アプライアンスと異なる第2アプライアンスを選択し、選択フローに属するパケットを第2アプライアンスに転送することを指定するエントリをフローテーブルに設定するように、スイッチに対して指示する。
【0015】
本発明の他の観点において、ネットワーク中に配置されたアプライアンス及びスイッチに接続されるコントローラが提供される。スイッチは、フローテーブルを備え、フローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定する。スイッチは、パケットを受け取るとフローテーブルを参照し、受け取ったパケットにマッチするエントリで指定されるアクションを受け取ったパケットに対して行う。コントローラは、アプライアンスに関連する処理負荷を示す負荷情報が格納される記憶装置と、処理装置と、を備える。処理装置は、処理負荷を閾値と比較する。アプライアンスの1つである第1アプライアンスに関連する処理負荷が閾値以上になった場合、処理装置は委譲処理を行う。その委譲処理において、処理装置は、第1アプライアンスが処理しているフローのうち少なくとも1つを選択フローとして選択し、アプライアンスの1つであって第1アプライアンスと異なる第2アプライアンスを選択し、選択フローに属するパケットを第2アプライアンスに転送することを指定するエントリをフローテーブルに設定するように、スイッチに対して指示する。
【0016】
本発明の更に他の観点において、アプライアンス及びスイッチが配置されたネットワークの制御方法が提供される。スイッチは、フローテーブルを備え、フローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定する。スイッチは、パケットを受け取るとフローテーブルを参照し、受け取ったパケットにマッチするエントリで指定されるアクションを受け取ったパケットに対して行う。本発明に係る制御方法は、(A)アプライアンスに関連する処理負荷を示す負荷情報を取得することと、(B)処理負荷を閾値と比較することと、(C)アプライアンスの1つである第1アプライアンスに関連する処理負荷が閾値以上になった場合、委譲処理を行うことと、を含む。その委譲処理は、(C1)第1アプライアンスが処理しているフローのうち少なくとも1つを選択フローとして選択することと、(C2)アプライアンスの1つであって第1アプライアンスと異なる第2アプライアンスを選択することと、(C3)スイッチにおいて、選択フローに属するパケットを第2アプライアンスに転送することを指定するエントリをフローテーブルに設定することと、を含む。
【0017】
本発明の更に他の観点において、アプライアンス及びスイッチが配置されたネットワークの制御処理をコンピュータに実行させる制御プログラムが提供される。スイッチは、フローテーブルを備え、フローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定する。スイッチは、パケットを受け取るとフローテーブルを参照し、受け取ったパケットにマッチするエントリで指定されるアクションを受け取ったパケットに対して行う。本発明に係る制御処理は、(A)アプライアンスに関連する処理負荷を示す負荷情報を取得することと、(B)処理負荷を閾値と比較することと、(C)アプライアンスの1つである第1アプライアンスに関連する処理負荷が閾値以上になった場合、委譲処理を行うことと、を含む。その委譲処理は、(C1)第1アプライアンスが処理しているフローのうち少なくとも1つを選択フローとして選択することと、(C2)アプライアンスの1つであって第1アプライアンスと異なる第2アプライアンスを選択することと、(C3)選択フローに属するパケットを第2アプライアンスに転送することを指定するエントリをフローテーブルに設定するように、スイッチに対して指示することと、を含む。
【発明の効果】
【0018】
本発明によれば、あるアプライアンスの処理を動的に他のアプライアンスに委譲することが可能となる。
【図面の簡単な説明】
【0019】
【図1】図1は、本発明の実施の形態に係るネットワークシステムの構成を概略的に示すブロック図である。
【図2】図2は、本実施の形態に係るスイッチの構成を概略的に示すブロック図である。
【図3】図3は、本実施の形態に係るスイッチが有するフローテーブルを示す概念図である。
【図4】図4は、本実施の形態に係るアプライアンスの構成を概略的に示すブロック図である。
【図5】図5は、本実施の形態に係る物理サーバの構成を概略的に示すブロック図である。
【図6】図6は、本実施の形態に係るコントローラの構成を示すブロック図である。
【図7】図7は、本実施の形態に係るコントローラが有する負荷テーブルを示す概念図である。
【図8】図8は、本実施の形態に係るネットワーク制御処理を説明するためのブロック図である。
【図9】図9は、本実施の形態に係るネットワーク制御処理を示すフローチャートである。
【図10】図10は、本実施の形態に係るネットワーク制御処理を説明するためのブロック図である。
【図11】図11は、本実施の形態に係るネットワーク制御処理を説明するためのブロック図である。
【図12】図12は、本実施の形態に係る様々な構成例を要約的に示す。
【図13】図13は、本実施の形態における1つの構成例を示すブロック図である。
【図14】図14は、本実施の形態における他の構成例を示すブロック図である。
【図15】図15は、本実施の形態における更に他の構成例を示すブロック図である。
【発明を実施するための形態】
【0020】
添付図面を参照して、本発明の実施の形態を説明する。
【0021】
1.構成
図1は、本実施の形態に係るネットワークシステム1の構成を概略的に示すブロック図である。本実施の形態に係るネットワークシステム1は、例えば、データセンター(Data Center)に適用される。
【0022】
図1に示されるように、ネットワークシステム1は、スイッチ10、アプライアンス20、コントローラ100、及び物理サーバ200を備えている。アプライアンス20は、物理アプライアンスであってもよいし、仮想化技術によって物理サーバ200上に構築される仮想アプライアンスであってもよい。スイッチ10、アプライアンス20及び物理サーバ200は、ネットワーク中に配置されている。アプライアンス20及び物理サーバ200は、複数のスイッチ10からなるスイッチネットワークを介して、外部ネットワークに接続されている。コントローラ100は、制御回線(図中、破線で表されている)を介して、各スイッチ10、各アプライアンス20、及び各物理サーバ200に接続されている。以下、各構成を更に詳しく説明する。
【0023】
1−1.スイッチ10
スイッチ10は、パケット転送等のスイッチ処理を行う。より詳細には、図2に示されるように、スイッチ10は、スイッチ処理部11、コントローラ通信部12、記憶部13、及び複数のポート15を備えている。外部からパケットが入力されるポート15は入力ポートであり、パケットが外部に出力されるポート15は出力ポートである。スイッチ処理部11は、入力ポートから出力ポートへのパケット転送等、主要なパケット処理を行う。コントローラ通信部12は、制御回線を介してコントローラ100に接続されており、コントローラ100との間で通信を行う際のインタフェースとなる。
【0024】
記憶部13には、図3に示されるようなフローテーブルFTBLが格納されている。フローテーブルFTBLの各エントリは、「マッチ条件(フロー識別情報)」と「アクション」を示している。「マッチ条件」は、パケットの入力ポート、送信元MACアドレス、宛先MACアドレス、VLAN ID、送信元IPアドレス、宛先IPアドレス、送信元ポート番号、宛先ポート番号などのパラメータの組み合わせで構成される。尚、フローもそれらパラメータの組み合わせで定義される。つまり、「マッチ条件」は、フローを規定するフロー識別情報でもある。「アクション」は、マッチ条件にマッチするパケットに対して行われる処理を指定する。「アクション」としては、指定ポートへのパケット出力、パケット廃棄等が挙げられる。
【0025】
スイッチ処理部11は、入力ポートを通してパケットを受信すると、記憶部13に格納されているフローテーブルFTBLを参照する。そして、スイッチ処理部11は、フローテーブルFTBLの中から、当該受信パケットにマッチするエントリを検索する。具体的には、スイッチ処理部11は、受信パケットのヘッダ情報を抽出し、受信パケットの入力ポート及びヘッダ情報を検索キーとして用いることにより、フローテーブルFTBLの検索を行う。その検索キーと一致するマッチ条件を示すエントリが、受信パケットにマッチするマッチエントリである。受信パケットがいずれかのエントリのマッチ条件にマッチした場合、すなわち、マッチエントリが見つかった場合、スイッチ処理部11は、そのマッチエントリで指定される「アクション」を受信パケットに対して行う。
【0026】
1−2.アプライアンス20
アプライアンス(ネットワークアプライアンス)20は、ネットワークトラヒックに対して特定の処理を実行するネットワーク装置である。アプライアンス20としては、ロードバランサ、ファイヤーウォール、WAF(Web Application Firewall)、IDS(Intrusion Detection System)、IPS(Intrusion Prevention System)、メールセキュリティ装置、暗号化アクセラレーション装置、コーデック変換処理装置、などが挙げられる。尚、本実施の形態において、アプライアンス20は、物理アプライアンスであってもよいし、仮想化技術によって物理サーバ200上に構築される仮想アプライアンスであってもよい。
【0027】
図4は、本実施の形態に係るアプライアンス20の構成を概略的に示している。アプライアンス20は、アプライアンス処理部21、コントローラ通信部22、記憶部23、及び負荷監視部25を備えている。アプライアンス処理部21は、アプライアンス20としての特定の処理を実行する。コントローラ通信部22は、制御回線を介してコントローラ100に接続されており、コントローラ100との間で通信を行う際のインタフェースとなる。
【0028】
記憶部23には、セッションテーブルSTBLが格納されている。セッションテーブルSTBLは、自アプライアンス20が扱っているフロー(セッション)に関するフロー識別情報や処理ポリシを示す。フロー識別情報は、送信元IPアドレス、送信元ポート番号、宛先IPアドレス、宛先ポート番号等である。アプライアンス処理部21は、このセッションテーブルSTBLを参照することによって、各フローに応じたアプライアンス処理を実行する。また、後述されるように、アプライアンス処理部21は、コントローラ100からの要求に応じて、セッションテーブルSTBLの内容を示すセッション情報SESをコントローラ100に送信する機能を有する。
【0029】
負荷監視部25は、自アプライアンス20の処理負荷を監視し、その処理負荷を示す負荷情報LDを作成・更新する。処理負荷としては、CPU使用率やトラヒック量が挙げられる。負荷監視部25は、その負荷情報LDを記憶部23に格納する。また、負荷監視部25は、最新の負荷情報LDを、コントローラ通信部22を介してコントローラ100に送信する。負荷情報LDの送信タイミングや送信間隔は任意に設定され得る。
【0030】
1−3.物理サーバ200
図5は、本実施の形態に係る物理サーバ200の構成を概略的に示している。物理サーバ200は、コントローラ通信部220、記憶部230、及び負荷監視部250を備えている。コントローラ通信部220は、制御回線を介してコントローラ100に接続されており、コントローラ100との間で通信を行う際のインタフェースとなる。
【0031】
負荷監視部250は、自物理サーバ200の処理負荷を監視し、その処理負荷を示す負荷情報LDを作成・更新する。処理負荷としては、CPU使用率やトラヒック量が挙げられる。負荷監視部250は、その負荷情報LDを記憶部230に格納する。また、負荷監視部250は、最新の負荷情報LDを、コントローラ通信部220を介してコントローラ100に送信する。負荷情報LDの送信タイミングや送信間隔は任意に設定され得る。
【0032】
1−4.コントローラ100
コントローラ100は、制御回線を介して、各スイッチ10のフローテーブルFTBLの内容を設定する機能を有する。具体的には、コントローラ100は、エントリの設定(追加、変更、削除等)を指示する「エントリ設定データENT」を作成し、そのエントリ設定データENTを対象スイッチ10に送る。エントリ設定データENTを受け取った対象スイッチ10のスイッチ処理部11は、そのエントリ設定データENTに従って、自身のフローテーブルFTBL内のエントリの設定(追加、変更、削除等)を行う。このように、コントローラ100は、フローテーブルFTBLの内容の設定を通してスイッチ10の動作を制御し、それにより、ネットワークトラフィックを適宜制御することができる。
【0033】
このような処理を実現するためのコントローラ100とスイッチ10との間のインタフェース方式としては、例えば、Openflow(http://www.openflowswitch.org/を参照)が挙げられる。この場合、「Openflow Controller」がコントローラ100となり、「Openflow Switch」が各スイッチ10となる。
【0034】
図6は、本実施の形態に係るコントローラ100の構成を示すブロック図である。コントローラ100は、処理装置101、記憶装置102、及び通信装置103を備えている。処理装置101は、CPU(Central Processing Unit)を含む。記憶装置102は、例えば、RAM(Random Access Memory)やHDD(Hard Disk Drive)を含む。通信装置103は、例えば、外部との通信を行うネットワークカードを含む。
【0035】
記憶装置102には、接続情報CON、負荷テーブルLTBL、セッション情報SES、エントリ設定データENT等が格納される。
【0036】
接続情報CONは、ネットワークの接続関係を示す。つまり、接続情報CONは、スイッチ10、アプライアンス20、物理サーバ200といった構成要素間の接続関係(トポロジ)を示す。より詳細には、接続情報CONは、各構成要素の各ポートがどの構成要素のどのポートに接続されているかを示す。各構成要素の識別情報としては、MACアドレスやIPアドレスなどが挙げられる。
【0037】
負荷テーブルLTBLは、各アプライアンス20に関連する処理負荷を示しており、各アプライアンス20及び各物理サーバ200から集められた上記負荷情報LDに基いて作成される。アプライアンス20が物理アプライアンスの場合、当該アプライアンス20に関連する処理負荷は、当該物理アプライアンスの処理負荷である。アプライアンス20が仮想アプライアンスの場合、当該アプライアンス20に関連する処理負荷は、当該仮想アプライアンスの処理負荷、及び/あるいは、当該仮想アプライアンスが稼働する物理サーバ200の処理負荷である。すなわち、アプライアンス20に関連する処理負荷は、当該アプライアンス20の処理負荷、及び、当該アプライアンス20が稼働する物理サーバの処理負荷のうち少なくとも一方を含む。
【0038】
図7は、負荷テーブルLTBLの一例を示している。図7に示されるように、負荷テーブルLTBLは、アプライアンス毎に、最新の処理負荷(例:CPU使用率[%])を示している。更に、負荷テーブルLTBLは、アプライアンス毎に、処理負荷に関する閾値を示している。この閾値は、後述される処理で使用される。尚、処理負荷に関する閾値は別途与えられてもよい。
【0039】
セッション情報SESは、アプライアンス20が有するセッションテーブルSTBLの内容を示す。このセッション情報SESは、アプライアンス20から取得することができる。詳細は後述される。
【0040】
エントリ設定データENTは、上述の通り、対象スイッチ10に対してエントリの設定(追加、変更、削除等)を指示する情報である。
【0041】
処理装置101は、本実施の形態に係る「ネットワーク制御処理」を行う。より詳細には、図6に示されるように、処理装置101は、情報収集部110、委譲処理部120、及びスイッチ制御部130を備えている。情報収集部110は、制御回線を介して、アプライアンス20及び物理サーバ200と接続され、通信を行う。スイッチ制御部130は、制御回線を介して、スイッチ10と接続され、通信を行う。これら機能ブロック110、120、130による処理は、後に詳述される。
【0042】
尚、これら機能ブロック110、120、130は、処理装置101が制御プログラムPROGを実行することにより実現される。制御プログラムPROGは、コンピュータ(処理装置101)によって実行されるコンピュータプログラムであり、記憶装置102に格納される。制御プログラムPROGは、コンピュータ読み取り可能な記録媒体に格納されていてもよい。
【0043】
2.処理フロー
以下、本実施の形態に係るネットワーク制御処理をより詳細に説明する。例として、図8で示される状態を考える。図8において、第1アプライアンス20−1及び第2アプライアンス20−2がスイッチ10に接続されている。フローFLOW1は、現在第1アプライアンス20−1によって処理されている既存フローである。スイッチ10のフローテーブルFTBLは、「フローFLOW1に属するパケットを第1アプライアンス20−1に転送すること」を指定するエントリを含んでいる。スイッチ10は、フローFLOW1に属するパケットを受け取ると、フローテーブルFTBL中のマッチエントリに従って、受信パケットを第1アプライアンス20−1に転送する。第1アプライアンス20−1は、フローFLOW1に属するパケットを受け取り、セッションテーブルSTBLに従って、当該受信パケットに対して所定のパケット処理(ロードバランサとしての処理、ファイヤーウォールとしての処理、等)を実施する。
【0044】
図9は、本実施の形態に係るネットワーク制御処理を示すフローチャートである。
【0045】
ステップS110:
各アプライアンス20の負荷監視部25は、自アプライアンス20の処理負荷を監視し、その処理負荷を示す負荷情報LDを作成・更新する。負荷監視部25は、最新の負荷情報LDをコントローラ100に送信する。また、各物理サーバ200の負荷監視部250は、自物理サーバ200の処理負荷を監視し、その処理負荷を示す負荷情報LDを作成・更新する。負荷監視部250は、最新の負荷情報LDをコントローラ100に送信する。
【0046】
コントローラ100の情報収集部110は、各アプライアンス20及び各物理サーバ200から上述の負荷情報LDを取得する(図10参照)。そして、情報収集部110は、取得した負荷情報LDに基いて、上述の負荷テーブルLTBLを作成・更新する。
【0047】
ステップS120:
続いて、コントローラ100の委譲処理部120は、記憶装置102に格納されている負荷テーブルLTBLを参照し、「委譲処理」の要否を判定する。具体的には、委譲処理部120は、各アプライアンス20に関連する処理負荷を所定の閾値と比較する。処理負荷が閾値以上となったアプライアンス20が存在する場合(ステップS130;Yes)、委譲処理部120は、当該アプライアンス20に関して「委譲処理」が必要と判定する。この場合、処理は次のステップS140に進む。一方、いずれのアプライアンス20の処理負荷も閾値未満であれば(ステップS130;No)、委譲処理部120は、「委譲処理」は不要と判定する。この場合、処理はステップS110に戻る。
【0048】
例えば、図7の例に示されるように、第1アプライアンス20−1(Appliance1)に関連する処理負荷が閾値に達したとする。この場合、委譲処理部120は、第1アプライアンス20−1に関して委譲処理(ステップS140)を実行する。
【0049】
ステップS140:
ステップS140において、コントローラ100は、第1アプライアンス20−1に関する「委譲処理」を行う。図11は、その委譲処理を示している。
【0050】
ステップS141:
コントローラ100は、委譲元の第1アプライアンス20−1からセッション情報SESを取得する。より詳細には、コントローラ100の情報収集部110は、第1アプライアンス20−1に対して、セッション情報SESの送付を要求する。その要求に応答して、第1アプライアンス20−1のアプライアンス処理部21は、自身のセッションテーブルSTBLの内容を示すセッション情報SESをコントローラ100に送信する。情報収集部110は、第1アプライアンス20−1からセッション情報SESを受け取り、それを記憶装置102に格納する。そのセッション情報SESは、第1アプライアンス20−1が扱っている各フローに関するフロー識別情報を含んでいる。
【0051】
ステップS142:
次に、コントローラ100の委譲処理部120は、第1アプライアンス20−1が処理しているフローのうち少なくとも1つを「選択フロー」として選択する。このとき、委譲処理部120は、第1アプライアンス20−1から取得した上記セッション情報SESに基いて、選択フローを選択することができる。この選択フローは、第1アプライアンス20−1から他のアプライアンスに委譲されるフローである。ここでは、フローFLOW1が選択フローとして選択されたとする。
【0052】
ステップS143:
また、コントローラ100の委譲処理部120は、委譲先となるアプライアンス20を選択する。この委譲先は、委譲元の第1アプライアンス20−1とは異なるものである。このとき、委譲処理部120は、負荷テーブルLTBLを参照して、処理負荷が閾値未満のアプライアンス20を委譲先として選択してもよい。ここでは、図11に示される第2アプライアンス20−2が委譲先として選択されたとする。
【0053】
ステップS144:
コントローラ100は、選択フローFLOW1を第1アプライアンス20−1ではなく第2アプライアンス20−2へ流すための処理を行う。そのために、コントローラ100の委譲処理部120は、“転送エントリ”の設定を指示するエントリ設定データENTを作成する。その転送エントリは、「選択フローFLOW1に属するパケットを第2アプライアンス20−2に転送すること」を指定する。選択フローFLOW1に関するフロー識別情報は、セッション情報SESから得られる。第2アプライアンス20−2につながるポート等は、接続情報CONから得られる。従って、委譲処理部120は、セッション情報SES及び接続情報CONを参照することによって、転送エントリの設定を指示するエントリ設定データENTを作成することができる。委譲処理部120は、作成したエントリ設定データENTを記憶装置102に格納する。
【0054】
ステップS145:
コントローラ100のスイッチ制御部130は、記憶装置102からエントリ設定データENTを読み出し、そのエントリ設定データENTをスイッチ10に送信する。すなわち、スイッチ制御部130は、スイッチ10に対して、上述の“転送エントリ”をフローテーブルFTBLに設定するよう指示する。
【0055】
スイッチ10のスイッチ処理部11は、コントローラ100からエントリ設定データENTを受け取る。スイッチ処理部11は、そのエントリ設定データENTに従って、上記“転送エントリ”をフローテーブルFTBLに設定する。その後、スイッチ処理部11は、フローFLOW1に属するパケットを受け取ると、当該転送エントリに従って、当該受信パケットを第2アプライアンス20−2に転送する。つまり、図11に示されるように、元々第1アプライアンス20−1によって処理されていたフローFLOW1は、委譲先の第2アプライアンス20−2に転送されることになる。その結果、第1アプライアンス20−1に関連する処理負荷が軽減される。
【0056】
変形例として、セッション情報SESの代わりに、スイッチ10に既に設定されているエントリに基いて、選択フローが選択され、フロー識別情報が取得されてもよい。例えば、コントローラ100の記憶装置102には、過去のエントリ設定データENTが記憶される。コントローラ100は、過去のエントリ設定データENTを参照することによって、選択フローを選択し、選択フローのフロー識別情報を把握することができる。あるいは、コントローラ100からの問い合わせに応答して、スイッチ10が自身のフローテーブルFTBLをコントローラ100に通知してもよい。コントローラ100は、そのフローテーブルFTBLを参照することによって、選択フローを選択し、選択フローのフロー識別情報を把握することができる。
【0057】
以上に説明されたように、本実施の形態によれば、第1アプライアンス20−1の処理を、“動的”に、他の第2アプライアンス20−2に委譲することが可能である。この時、各アプライアンス20は、非特許文献1、2に記載されているような特別なフォーマットに対応している必要はない。このような委譲処理の結果、第1アプライアンス20−1に関連する処理負荷が軽減される。
【0058】
3.様々な構成例
図12は、本実施の形態に係る様々な構成例を要約的に示している。委譲元の第1アプライアンス20−1として、仮想アプライアンス及び物理アプライアンスが考えられる。更に、仮想アプライアンスは、ゲストOSと同一の物理サーバ上に構築されたものと、ゲストOSとは異なる物理サーバ上に構築されたものとに分類される。また、委譲先の第2アプライアンス20−2として、仮想アプライアンス(ゲストOSとは異なる物理サーバ上に構築されたもの)及び物理アプライアンスが考えられる。第1アプライアンス20−1と第2アプライアンス20−2との組み合わせにより、様々な形態(形態1〜6)が考えられる。
【0059】
3−1.第1の構成例
図13は、形態1及び形態2に対応する構成例を示している。つまり、委譲元の第1アプライアンス20−1は、ゲストOSと同一の物理サーバ上に構築された仮想アプライアンスである。
【0060】
具体的には、仮想化技術によって、物理サーバ200A上に仮想アプライアンス20Aが構築されている。物理サーバ200Aは更に、仮想スイッチ210及び複数のゲストOS240を備えている。仮想アプライアンス20Aは、複数のゲストOS240間のトラヒックや、ゲストOS240以外のホストとの間のトラヒックを処理する。
【0061】
仮想アプライアンス20Aは、自身の処理負荷を示す負荷情報LDをコントローラ100に送信する。また、物理サーバ200Aの負荷監視部250は、物理サーバ200Aの処理負荷を示す負荷情報LDをコントローラ100に送信する。コントローラ100は、それら負荷情報LDに基いて、仮想アプライアンス20Aに関して「委譲処理」が必要であると判定する。つまり、仮想アプライアンス20Aが、委譲元の第1アプライアンス20−1となる。
【0062】
例えば、コントローラ100は、物理サーバ200B上の仮想アプライアンス20Bを、委譲先の第2アプライアンス20−2として選択する。この場合は、形態1に相当する。あるいは、コントローラ100は、物理アプライアンス20Cを、委譲先の第2アプライアンス20−2として選択してもよい。この場合は、形態2に相当する。コントローラ100は、スイッチ10及び仮想スイッチ210に対して、エントリ設定を指示する。
【0063】
近年の仮想化技術の発展に伴い、ゲストOSを対象とした仮想的なセキュリティアプライアンスにも注目が集まっている。例えば、WAF(Web Application Firewall)機能を有する仮想アプライアンスは、1台の物理サーバ上で複数のゲストOSのトラヒックのアプリケーションレイヤまで監視する。そのような仮想アプライアンスの処理負荷が高くなった場合、より高性能な物理サーバや余裕のある物理サーバに構築された他の仮想アプライアンスへ処理を委譲することができる。
【0064】
3−2.第2の構成例
図14は、形態3及び形態4に対応する構成例を示している。つまり、委譲元の第1アプライアンス20−1は、ゲストOSとは異なる物理サーバ上に構築された仮想アプライアンスである。
【0065】
具体的には、仮想化技術によって、物理サーバ200A上に仮想アプライアンス20Aが構築されている。仮想アプライアンス20Aは、自身の処理負荷を示す負荷情報LDをコントローラ100に送信する。また、物理サーバ200Aの負荷監視部250は、物理サーバ200Aの処理負荷を示す負荷情報LDをコントローラ100に送信する。コントローラ100は、それら負荷情報LDに基いて、仮想アプライアンス20Aに関して「委譲処理」が必要であると判定する。つまり、仮想アプライアンス20Aが、委譲元の第1アプライアンス20−1となる。
【0066】
例えば、コントローラ100は、物理サーバ200B上の仮想アプライアンス20Bを、委譲先の第2アプライアンス20−2として選択する。この場合は、形態3に相当する。あるいは、コントローラ100は、物理アプライアンス20Cを、委譲先の第2アプライアンス20−2として選択してもよい。この場合は、形態4に相当する。コントローラ100は、スイッチ10に対して、エントリ設定を指示する。
【0067】
3−3.第3の構成例
図15は、形態5及び形態6に対応する構成例を示している。つまり、委譲元の第1アプライアンス20−1は、物理アプライアンスである。
【0068】
具体的には、物理アプライアンス20Aの負荷監視部25は、物理アプライアンス20Aの処理負荷を示す負荷情報LDをコントローラ100に送信する。コントローラ100は、その負荷情報LDに基いて、物理アプライアンス20Aに関して「委譲処理」が必要であると判定する。つまり、物理アプライアンス20Aが、委譲元の第1アプライアンス20−1となる。
【0069】
例えば、コントローラ100は、物理サーバ200B上の仮想アプライアンス20Bを、委譲先の第2アプライアンス20−2として選択する。この場合は、形態5に相当する。例えば、上述の形態4が実施された後、元の仮想アプライアンスの処理負荷が下がった場合、物理アプライアンスに委譲された処理を、元の仮想アプライアンスに戻すことができる。
【0070】
あるいは、コントローラ100は、物理アプライアンス20Cを、委譲先の第2アプライアンス20−2として選択してもよい。この場合は、形態6に相当する。例えば、より高性能な物理アプライアンスが追加された場合、処理負荷が高くなった物理アプライアンスの処理を、追加された高性能な物理アプライアンスに委譲することができる。
【0071】
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
【0072】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【0073】
(付記1)
ネットワーク中に配置されたアプライアンス及びスイッチと、
前記アプライアンス及び前記スイッチに接続されたコントローラと
を備え、
前記スイッチは、フローテーブルを備え、
前記フローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定し、
前記スイッチは、パケットを受け取ると前記フローテーブルを参照し、前記受け取ったパケットにマッチするエントリで指定される前記アクションを前記受け取ったパケットに対して行い、
前記コントローラは、前記アプライアンスに関連する処理負荷を示す負荷情報を取得し、また、前記処理負荷を閾値と比較し、
前記アプライアンスの1つである第1アプライアンスに関連する前記処理負荷が前記閾値以上になった場合、前記コントローラは委譲処理を行い、
前記委譲処理において、前記コントローラは、
前記第1アプライアンスが処理しているフローのうち少なくとも1つを選択フローとして選択し、
前記アプライアンスの1つであって前記第1アプライアンスと異なる第2アプライアンスを選択し、
前記選択フローに属するパケットを前記第2アプライアンスに転送することを指定するエントリを前記フローテーブルに設定するように、前記スイッチに対して指示する
ネットワークシステム。
【0074】
(付記2)
付記1に記載のネットワークシステムであって、
前記アプライアンスに関連する処理負荷は、前記アプライアンスの処理負荷、及び、前記アプライアンスが稼働する物理サーバの処理負荷のうち少なくとも一方を含む
ネットワークシステム。
【0075】
(付記3)
付記1又は2に記載のネットワークシステムであって、
前記第2アプライアンスに関連する前記処理負荷は、閾値未満である
ネットワークシステム。
【0076】
(付記4)
付記1乃至3のいずれか一項に記載のネットワークシステムであって、
前記第1アプライアンスは、自身が処理するフローに関する情報を示すセッションテーブルを有し、
前記コントローラは、前記第1アプライアンスの前記セッションテーブルの内容を示すセッション情報を取得し、前記セッション情報に基いて前記選択フローを選択する
ネットワークシステム。
【0077】
(付記5)
付記1乃至3のいずれか一項に記載のネットワークシステムであって、
前記コントローラは、前記スイッチに既に設定されているエントリに基いて、前記選択フローを選択する
ネットワークシステム。
【0078】
(付記6)
ネットワーク中に配置されたアプライアンス及びスイッチに接続されるコントローラであって、
前記スイッチは、フローテーブルを備え、
前記フローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定し、
前記スイッチは、パケットを受け取ると前記フローテーブルを参照し、前記受け取ったパケットにマッチするエントリで指定される前記アクションを前記受け取ったパケットに対して行い、
前記コントローラは、
前記アプライアンスに関連する処理負荷を示す負荷情報が格納される記憶装置と、
処理装置と
を備え、
前記処理装置は、前記処理負荷を閾値と比較し、
前記アプライアンスの1つである第1アプライアンスに関連する前記処理負荷が前記閾値以上になった場合、前記処理装置は委譲処理を行い、
前記委譲処理において、前記処理装置は、
前記第1アプライアンスが処理しているフローのうち少なくとも1つを選択フローとして選択し、
前記アプライアンスの1つであって前記第1アプライアンスと異なる第2アプライアンスを選択し、
前記選択フローに属するパケットを前記第2アプライアンスに転送することを指定するエントリを前記フローテーブルに設定するように、前記スイッチに対して指示する
コントローラ。
【0079】
(付記7)
アプライアンス及びスイッチが配置されたネットワークの制御方法であって、
前記スイッチは、フローテーブルを備え、
前記フローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定し、
前記スイッチは、パケットを受け取ると前記フローテーブルを参照し、前記受け取ったパケットにマッチするエントリで指定される前記アクションを前記受け取ったパケットに対して行い、
前記制御方法は、
前記アプライアンスに関連する処理負荷を示す負荷情報を取得することと、
前記処理負荷を閾値と比較することと、
前記アプライアンスの1つである第1アプライアンスに関連する前記処理負荷が前記閾値以上になった場合、委譲処理を行うことと
を含み、
前記委譲処理は、
前記第1アプライアンスが処理しているフローのうち少なくとも1つを選択フローとして選択することと、
前記アプライアンスの1つであって前記第1アプライアンスと異なる第2アプライアンスを選択することと、
前記スイッチにおいて、前記選択フローに属するパケットを前記第2アプライアンスに転送することを指定するエントリを前記フローテーブルに設定することと
を含む
制御方法。
【0080】
(付記8)
アプライアンス及びスイッチが配置されたネットワークの制御処理をコンピュータに実行させる制御プログラムであって、
前記スイッチは、フローテーブルを備え、
前記フローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定し、
前記スイッチは、パケットを受け取ると前記フローテーブルを参照し、前記受け取ったパケットにマッチするエントリで指定される前記アクションを前記受け取ったパケットに対して行い、
前記制御処理は、
前記アプライアンスに関連する処理負荷を示す負荷情報を取得することと、
前記処理負荷を閾値と比較することと、
前記アプライアンスの1つである第1アプライアンスに関連する前記処理負荷が前記閾値以上になった場合、委譲処理を行うことと
を含み、
前記委譲処理は、
前記第1アプライアンスが処理しているフローのうち少なくとも1つを選択フローとして選択することと、
前記アプライアンスの1つであって前記第1アプライアンスと異なる第2アプライアンスを選択することと、
前記選択フローに属するパケットを前記第2アプライアンスに転送することを指定するエントリを前記フローテーブルに設定するように、前記スイッチに対して指示することと
を含む
制御プログラム。
【符号の説明】
【0081】
1 ネットワークシステム
10 スイッチ
11 スイッチ処理部
12 コントローラ通信部
13 記憶部
15 ポート
20 アプライアンス
21 アプライアンス処理部
22 コントローラ通信部
23 記憶部
25 負荷監視部
100 コントローラ
101 処理装置
102 記憶装置
103 通信装置
110 情報収集部
120 委譲処理部
130 スイッチ制御部
200 物理サーバ
220 コントローラ通信部
230 記憶部
250 負荷監視部
LD 負荷情報
CON 接続情報
SES セッション情報
ENT エントリ設定データ
FTBL フローテーブル
STBL セッションテーブル
LTBL 負荷テーブル
PROG 制御プログラム

【特許請求の範囲】
【請求項1】
ネットワーク中に配置されたアプライアンス及びスイッチと、
前記アプライアンス及び前記スイッチに接続されたコントローラと
を備え、
前記スイッチは、フローテーブルを備え、
前記フローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定し、
前記スイッチは、パケットを受け取ると前記フローテーブルを参照し、前記受け取ったパケットにマッチするエントリで指定される前記アクションを前記受け取ったパケットに対して行い、
前記コントローラは、前記アプライアンスに関連する処理負荷を示す負荷情報を取得し、また、前記処理負荷を閾値と比較し、
前記アプライアンスの1つである第1アプライアンスに関連する前記処理負荷が前記閾値以上になった場合、前記コントローラは委譲処理を行い、
前記委譲処理において、前記コントローラは、
前記第1アプライアンスが処理しているフローのうち少なくとも1つを選択フローとして選択し、
前記アプライアンスの1つであって前記第1アプライアンスと異なる第2アプライアンスを選択し、
前記選択フローに属するパケットを前記第2アプライアンスに転送することを指定するエントリを前記フローテーブルに設定するように、前記スイッチに対して指示する
ネットワークシステム。
【請求項2】
請求項1に記載のネットワークシステムであって、
前記アプライアンスに関連する処理負荷は、前記アプライアンスの処理負荷、及び、前記アプライアンスが稼働する物理サーバの処理負荷のうち少なくとも一方を含む
ネットワークシステム。
【請求項3】
請求項1又は2に記載のネットワークシステムであって、
前記第2アプライアンスに関連する前記処理負荷は、閾値未満である
ネットワークシステム。
【請求項4】
請求項1乃至3のいずれか一項に記載のネットワークシステムであって、
前記第1アプライアンスは、自身が処理するフローに関する情報を示すセッションテーブルを有し、
前記コントローラは、前記第1アプライアンスの前記セッションテーブルの内容を示すセッション情報を取得し、前記セッション情報に基いて前記選択フローを選択する
ネットワークシステム。
【請求項5】
請求項1乃至3のいずれか一項に記載のネットワークシステムであって、
前記コントローラは、前記スイッチに既に設定されているエントリに基いて、前記選択フローを選択する
ネットワークシステム。
【請求項6】
ネットワーク中に配置されたアプライアンス及びスイッチに接続されるコントローラであって、
前記スイッチは、フローテーブルを備え、
前記フローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定し、
前記スイッチは、パケットを受け取ると前記フローテーブルを参照し、前記受け取ったパケットにマッチするエントリで指定される前記アクションを前記受け取ったパケットに対して行い、
前記コントローラは、
前記アプライアンスに関連する処理負荷を示す負荷情報が格納される記憶装置と、
処理装置と
を備え、
前記処理装置は、前記処理負荷を閾値と比較し、
前記アプライアンスの1つである第1アプライアンスに関連する前記処理負荷が前記閾値以上になった場合、前記処理装置は委譲処理を行い、
前記委譲処理において、前記処理装置は、
前記第1アプライアンスが処理しているフローのうち少なくとも1つを選択フローとして選択し、
前記アプライアンスの1つであって前記第1アプライアンスと異なる第2アプライアンスを選択し、
前記選択フローに属するパケットを前記第2アプライアンスに転送することを指定するエントリを前記フローテーブルに設定するように、前記スイッチに対して指示する
コントローラ。
【請求項7】
アプライアンス及びスイッチが配置されたネットワークの制御方法であって、
前記スイッチは、フローテーブルを備え、
前記フローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定し、
前記スイッチは、パケットを受け取ると前記フローテーブルを参照し、前記受け取ったパケットにマッチするエントリで指定される前記アクションを前記受け取ったパケットに対して行い、
前記制御方法は、
前記アプライアンスに関連する処理負荷を示す負荷情報を取得することと、
前記処理負荷を閾値と比較することと、
前記アプライアンスの1つである第1アプライアンスに関連する前記処理負荷が前記閾値以上になった場合、委譲処理を行うことと
を含み、
前記委譲処理は、
前記第1アプライアンスが処理しているフローのうち少なくとも1つを選択フローとして選択することと、
前記アプライアンスの1つであって前記第1アプライアンスと異なる第2アプライアンスを選択することと、
前記スイッチにおいて、前記選択フローに属するパケットを前記第2アプライアンスに転送することを指定するエントリを前記フローテーブルに設定することと
を含む
制御方法。
【請求項8】
アプライアンス及びスイッチが配置されたネットワークの制御処理をコンピュータに実行させる制御プログラムであって、
前記スイッチは、フローテーブルを備え、
前記フローテーブルの各エントリは、マッチ条件にマッチするパケットに対して行われるアクションを指定し、
前記スイッチは、パケットを受け取ると前記フローテーブルを参照し、前記受け取ったパケットにマッチするエントリで指定される前記アクションを前記受け取ったパケットに対して行い、
前記制御処理は、
前記アプライアンスに関連する処理負荷を示す負荷情報を取得することと、
前記処理負荷を閾値と比較することと、
前記アプライアンスの1つである第1アプライアンスに関連する前記処理負荷が前記閾値以上になった場合、委譲処理を行うことと
を含み、
前記委譲処理は、
前記第1アプライアンスが処理しているフローのうち少なくとも1つを選択フローとして選択することと、
前記アプライアンスの1つであって前記第1アプライアンスと異なる第2アプライアンスを選択することと、
前記選択フローに属するパケットを前記第2アプライアンスに転送することを指定するエントリを前記フローテーブルに設定するように、前記スイッチに対して指示することと
を含む
制御プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2011−159247(P2011−159247A)
【公開日】平成23年8月18日(2011.8.18)
【国際特許分類】
【出願番号】特願2010−22727(P2010−22727)
【出願日】平成22年2月4日(2010.2.4)
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成21年度 総務省「セキュアクラウドネットワーキング技術の研究開発」委託研究、産業技術力強化法第19条の適用を受ける特許出願
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】