(57)【要約】  集中管理型ネットワークシステムにおいて、柔軟なネットワーク制御を行い、ネットワークの運用性、効率性の向上を図る。具体的には、通信経路を集中管理するネットワークシステムにおいて、ネットワーク機器の負荷状況、サーバ機器の負荷状況、アプリケーションの負荷状況も踏まえた上で最適経路を選択する。このとき、ネットワーク、サーバ等、システムを構成する全ての機器を集中管理する制御装置が、最適経路を計算し、通信経路をネットワーク機器に設定する。また、ネットワークの輻輳状況、サーバやアプリケーションの負荷状況を判断し、最適な経路を決定する。更に、現状だけでなく、過去の輻輳状況、負荷状況から未来に起こり得る事象を判断し、最適経路を決定する。
2012101890.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク機器と、
前記ネットワーク機器からパケットの問い合わせを受けた際、該パケットをフローとして一律に制御するためのルールと動作とが定義されたエントリを、前記ネットワーク機器のフローテーブルに設定する制御装置と、
同一グループのサーバ群を形成し、該サーバ群に割り当てられた仮想アドレスを共有するサーバ機器と、
を含み、
前記制御装置は、
前記ネットワーク機器及び前記サーバ機器の各々からパフォーマンスデータを収集し蓄積する手段と、
前記サーバ群を形成するサーバ機器の中から、前記サーバ機器のパフォーマンスデータを基に、最適なサーバ機器を選択する手段と、
前記ネットワーク機器のパフォーマンスデータを基に、前記最適なサーバ機器に到達するための最適経路を決定する手段と、
前記最適経路上のネットワーク機器に、前記最適経路上の次段のノードに前記仮想アドレス宛のパケットを転送する旨のエントリを登録する手段と
を具備する
ネットワークシステム。
【請求項２】
請求項１に記載のネットワークシステムであって、
前記制御装置は、
前記サーバ機器のパフォーマンスデータとして、前記サーバ機器の最新のＣＰＵ使用率及びＣＰＵ平均使用率のうち少なくとも一方を基に、最適なサーバ機器を選択する手段と、
前記ネットワーク機器のパフォーマンスデータとして、前記ネットワーク機器の最新のネットワーク使用率及びネットワーク平均使用率のうち少なくとも一方を基に、前記最適なサーバ機器に到達するための最適経路を決定する手段と
を更に具備する
ネットワークシステム。
【請求項３】
請求項１又は２に記載のネットワークシステムであって、
前記制御装置は、
前記仮想アドレス宛のパケットの種類及び前記サーバが提供するサービスの内容に応じて、前記ネットワーク機器及び前記サーバ機器の各々のパフォーマンスデータとして使用するデータを定義した最適条件を変更する手段と、
前記蓄積されたパフォーマンスデータの中から、前記最適条件に定義されたデータを選択し、前記最適条件に定義されたデータを基に、前記最適なサーバ機器及び前記最適経路を決定する手段と
を更に具備する
ネットワークシステム。
【請求項４】
管理対象となるネットワーク機器と通信する手段と、
同一グループのサーバ群を形成し該サーバ群に割り当てられた仮想アドレスを共有するサーバ機器と通信する手段と、
前記ネットワーク機器及び前記サーバ機器の各々からパフォーマンスデータを収集し蓄積する手段と、
前記サーバ群を形成するサーバ機器の中から、前記サーバ機器のパフォーマンスデータを基に、最適なサーバ機器を選択する手段と、
前記ネットワーク機器のパフォーマンスデータを基に、前記最適なサーバ機器に到達するための最適経路を決定する手段と、
前記最適経路上のネットワーク機器に、該パケットをフローとして一律に制御するためのルールと前記最適経路上の次段のノードに前記仮想アドレス宛のパケットを転送する旨の動作とが定義されたエントリを登録する手段と
を具備する
制御装置。
【請求項５】
請求項４に記載の制御装置であって、
前記サーバ機器のパフォーマンスデータとして、前記サーバ機器の最新のＣＰＵ使用率及びＣＰＵ平均使用率のうち少なくとも一方を基に、最適なサーバ機器を選択する手段と、
前記ネットワーク機器のパフォーマンスデータとして、前記ネットワーク機器の最新のネットワーク使用率及びネットワーク平均使用率のうち少なくとも一方を基に、前記最適なサーバ機器に到達するための最適経路を決定する手段と
を更に具備する
制御装置。
【請求項６】
請求項４又は５に記載の制御装置であって、
前記仮想アドレス宛のパケットの種類及び前記サーバが提供するサービスの内容に応じて、前記ネットワーク機器及び前記サーバ機器の各々のパフォーマンスデータとして使用するデータを定義した最適条件を変更する手段と、
前記蓄積されたパフォーマンスデータの中から、前記最適条件に定義されたデータを選択し、前記最適条件に定義されたデータを基に、前記最適なサーバ機器及び前記最適経路を決定する手段と
を更に具備する
制御装置。
【請求項７】
制御装置として使用される計算機により実施される最適経路制御方法であって、
管理対象となるネットワーク機器と通信することと、
同一グループのサーバ群を形成し該サーバ群に割り当てられた仮想アドレスを共有するサーバ機器と通信することと、
前記ネットワーク機器及び前記サーバ機器の各々からパフォーマンスデータを収集し蓄積することと、
前記サーバ群を形成するサーバ機器の中から、前記サーバ機器のパフォーマンスデータを基に、最適なサーバ機器を選択することと、
前記ネットワーク機器のパフォーマンスデータを基に、前記最適なサーバ機器に到達するための最適経路を決定することと、
前記最適経路上のネットワーク機器に、該パケットをフローとして一律に制御するためのルールと前記最適経路上の次段のノードに前記仮想アドレス宛のパケットを転送する旨の動作とが定義されたエントリを登録することと
を含む
最適経路制御方法。
【請求項８】
請求項７に記載の最適経路制御方法であって、
前記サーバ機器のパフォーマンスデータとして、前記サーバ機器の最新のＣＰＵ使用率及びＣＰＵ平均使用率のうち少なくとも一方を基に、最適なサーバ機器を選択することと、
前記ネットワーク機器のパフォーマンスデータとして、前記ネットワーク機器の最新のネットワーク使用率及びネットワーク平均使用率のうち少なくとも一方を基に、前記最適なサーバ機器に到達するための最適経路を決定することと
を更に含む
最適経路制御方法。
【請求項９】
請求項７又は８に記載の最適経路制御方法であって、
前記仮想アドレス宛のパケットの種類及び前記サーバが提供するサービスの内容に応じて、前記ネットワーク機器及び前記サーバ機器の各々のパフォーマンスデータとして使用するデータを定義した最適条件を変更することと、
前記蓄積されたパフォーマンスデータの中から、前記最適条件に定義されたデータを選択し、前記最適条件に定義されたデータを基に、前記最適なサーバ機器及び前記最適経路を決定することと
を更に含む
最適経路制御方法。
【請求項１０】
管理対象となるネットワーク機器と通信するステップと、
同一グループのサーバ群を形成し該サーバ群に割り当てられた仮想アドレスを共有するサーバ機器と通信するステップと、
前記ネットワーク機器及び前記サーバ機器の各々からパフォーマンスデータを収集し蓄積するステップと、
前記サーバ群を形成するサーバ機器の中から、前記サーバ機器のパフォーマンスデータを基に、最適なサーバ機器を選択するステップと、
前記ネットワーク機器のパフォーマンスデータを基に、前記最適なサーバ機器に到達するための最適経路を決定するステップと、
前記最適経路上のネットワーク機器に、該パケットをフローとして一律に制御するためのルールと前記最適経路上の次段のノードに前記仮想アドレス宛のパケットを転送する旨の動作とが定義されたエントリを登録するステップと
を、制御装置として使用される計算機に実行させるためのプログラムを格納した
記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークシステムに関し、特に集中管理型ネットワークにおける最適経路制御方法に関する。
【背景技術】
【０００２】
従来のネットワーク機器の経路制御においては、以下の（１）乃至（３）のような課題があった。【０００３】
（１）従来のネットワーク機器（ＮＷ機器）を用いたシステムでは、各ネットワーク機器が自律的に経路を決定する。そのためネットワーク全体として最適な経路を選択できない場合がある。従来のネットワーク機器は、経路選択(ルーティング)プロトコルを用いて個別（自律的）に最適経路を選択する。標準のルーティングプロトコルの例として、ＲＩＰ（Ｒｏｕｔｉｎｇ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）、ＯＳＰＦ（Ｏｐｅｎ  Ｓｈｏｒｔｅｓｔ  Ｐａｔｈ  Ｆｉｒｓｔ）等のホップ数やリンクコストベースに経路を決定するルーティングプロトコルが知られている。このような標準のルーティングプロトコルでは、ネットワークの負荷状況に応じた経路選択を行うことができない。例えば、ネットワークに輻輳が発生した場合は、ＱｏＳ機能により、優先度の低いパケットは廃棄されてしまう。仮に他の経路に空きがあり、迂回すれば救われるケースにおいても、従来技術では回避することが困難である。【０００４】
（２）従来のネットワークシステムでは、上記（１）で説明した手法で経路を選択するため、サーバ等の負荷状況も加味した上で最適経路の選択ができない。従来技術では、サーバの負荷状況を負荷分散装置（ロードバランサ）が定期的にチェックし、負荷分散装置が負荷の低いサーバを選択する方法でシステムを最適化している。このようにネットワークレイヤとアプリケーションレイヤがそれぞれ独立に最適化しているため、システム全体で最適化することが困難である。また、負荷分散装置を使用するシステムにおいては、全ての通信が負荷分散装置宛となり、この制約がシステム全体を最適化できない要因となる。【０００５】
（３）従来のベストエフォート型ネットワークシステムでは、経路選択を行う際、負荷状況を加味した経路選択ができない。特定の通信を保証するためには、経路全ての通信装置に帯域確保する設定が必要であり、可用性、拡張性、運用性が低下する。【０００６】
関連する技術として、特許文献１（特開２０００−２５０８７８号公報）に負荷分散システムが開示されている。この関連技術では、クライアントから通信経路変換装置にサーバ決定を依頼し、サーバを検索してレスポンス時間に差がなければ、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）使用率に基づいて、最も負荷の少ないサーバと経路を決定する。【０００７】
また、特許文献２（特開平０６−１２０９４３号公報）に最適迂回経路選択方式が開示されている。この関連技術では、複数の交換局のＣＰＵ使用率が測定され、予め設定した境界値と比較して該使用率が超過している交換局が記憶され、該交換局を中継局としない最適迂回経路を決定する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０００−２５０８７８号公報
【特許文献２】特開平０６−１２０９４３号公報
【非特許文献】
【０００９】
【非特許文献１】“ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ，  Ｖｅｒｓｉｏｎ  １．０．０”，［ｏｎｌｉｎｅ］，Ｄｅｃｅｍｂｅｒ  ３１，２００９，インターネット（ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｆｌｏｗｓｗｉｔｃｈ．ｏｒｇ／ｄｏｃｕｍｅｎｔｓ／ｏｐｅｎｆｌｏｗ−ｓｐｅｃ−ｖ１．０．０．ｐｄｆ）
【発明の概要】
【００１０】
本発明では、以下の（１）乃至（３）のようにすることで、従来の課題の解決を図る。
【００１１】
（１）ネットワーク、システムを構成する全ての機器を集中管理する制御装置が最適経路を計算し、通信経路をネットワーク機器に設定する。
【００１２】
（２）ネットワークの輻輳状況、サーバやアプリケーションの負荷状況を判断し、最適な経路を決定する。
【００１３】
（３）現状だけでなく、過去の輻輳状況、負荷状況から未来に起こり得る事象を判断し、最適経路を決定する。
【００１４】
本発明に係るネットワークシステムは、ネットワーク機器と、該ネットワーク機器からパケットの問い合わせを受けた際、該パケットをフローとして一律に制御するためのルールと動作とが定義されたエントリを、該ネットワーク機器のフローテーブルに設定する制御装置と、同一グループのサーバ群を形成し、該サーバ群に割り当てられた仮想アドレスを共有するサーバ機器とを含む。該制御装置は、該ネットワーク機器及び該サーバ機器の各々からパフォーマンスデータを収集し蓄積するデータ収集部と、該サーバ群を形成するサーバ機器の中から、該サーバ機器のパフォーマンスデータを基に、最適なサーバ機器を選択するサーバ選択部と、該ネットワーク機器のパフォーマンスデータを基に、該最適なサーバ機器に到達するための最適経路を決定する経路計算部と、該最適経路上のネットワーク機器に、該最適経路上の次段のノードに該仮想アドレス宛のパケットを転送する旨のエントリを登録するフロー制御部とを具備する。
【００１５】
本発明に係る最適経路制御方法は、制御装置として使用される計算機により実施される。該最適経路制御方法では、制御装置において、管理対象となるネットワーク機器と通信する。また、同一グループのサーバ群を形成し該サーバ群に割り当てられた仮想アドレスを共有するサーバ機器と通信する。また、該ネットワーク機器及び該サーバ機器の各々からパフォーマンスデータを収集し蓄積する。また、該サーバ群を形成するサーバ機器の中から、該サーバ機器のパフォーマンスデータを基に、最適なサーバ機器を選択する。また、該ネットワーク機器のパフォーマンスデータを基に、該最適なサーバ機器に到達するための最適経路を決定する。また、該最適経路上のネットワーク機器に、該パケットをフローとして一律に制御するためのルールと該最適経路上の次段のノードに該仮想アドレス宛のパケットを転送する旨の動作とが定義されたエントリを登録する。
【００１６】
本発明に係るプログラムは、上記の最適経路制御方法における処理を、計算機に実行させるためのプログラムである。なお、本発明に係るプログラムは、記憶装置や記憶媒体に格納することが可能である。
【００１７】
これにより、ネットワーク機器、サーバ機器を含めたアプリケーションレベル、サービスレベルで最適な経路を選択することが可能となる。また、過去のデータからの予測により、未来に起こり得る問題回避を考慮した経路を選択できる。結果として、各レイヤで個別最適するのではなく、システム全体として最適化された経路制御が可能となる。
【図面の簡単な説明】
【００１８】
【図１】本発明に係るネットワークシステムの構成例を示す図である。
【図２】本発明に係るネットワークシステムの実施例を説明するための図である。
【図３】ＮＷ機器テーブルの例を説明するための図である。
【図４】サーバ機器テーブルの例を説明するための図である。
【図５】最適経路制御処理における動作の第１の例を説明するためのフローチャートである。
【図６】最適経路制御処理における動作の第２の例を説明するためのフローチャートである。
【発明を実施するための形態】
【００１９】
＜前提＞
本発明に係るネットワークシステムでは、外部のコントローラ（コントロールプレーン）からスイッチや端末等（ユーザプレーン）を制御するＣＵ（Ｃ：コントロールプレーン／Ｕ：ユーザプレーン）分離型ネットワークを対象としている。ＣＵ分離型ネットワークの一例として、コントローラからスイッチを制御してネットワークの経路制御を行うオープンフロー（ＯｐｅｎＦｌｏｗ）技術を利用したオープンフローネットワークが挙げられる。なお、オープンフローネットワークは一例に過ぎない。
【００２０】
［オープンフローネットワークの説明］
オープンフローネットワークでは、ＯＦＣ（ＯｐｅｎＦｌｏｗ  Ｃｏｎｔｒｏｌｌｅｒ）等のコントローラが、ＯＦＳ（ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ）等のスイッチのフローテーブルを操作することによりスイッチの挙動を制御する。コントローラとスイッチの間は、コントローラがオープンフロープロトコルに準拠した制御メッセージを用いてスイッチを制御するためのセキュアチャネル（Ｓｅｃｕｒｅ  Ｃｈａｎｎｅｌ）により接続されている。
【００２１】
オープンフローネットワークにおけるスイッチとは、オープンフローネットワークを形成し、コントローラの制御下にあるエッジスイッチ及びコアスイッチのことである。オープンフローネットワークにおける入力側エッジスイッチでのパケットの受信から出力側エッジスイッチでの送信まで同じ経路を流れる一連のパケットをフロー（Ｆｌｏｗ）と呼ぶ。パケットは、フレームと読み替えても良い。
【００２２】
フローテーブルとは、所定のマッチ条件（ルール）に適合するパケット（通信データ）に対して行うべき所定の処理（アクション）を定義したエントリ（ｅｎｔｒｙ）が登録されたテーブルである。
【００２３】
エントリのルールは、パケットの各プロトコル階層のヘッダ領域に含まれる宛先アドレス（Ｄｅｓｔｉｎａｔｉｏｎ  Ａｄｄｒｅｓｓ）、送信元アドレス（Ｓｏｕｒｃｅ  Ａｄｄｒｅｓｓ）、宛先ポート（Ｄｅｓｔｉｎａｔｉｏｎ  Ｐｏｒｔ）、送信元ポート（Ｓｏｕｒｃｅ  Ｐｏｒｔ）のいずれか又は全てを用いた様々な組み合わせにより定義され、区別可能である。なお、上記のアドレスには、ＭＡＣアドレス（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ａｄｄｒｅｓｓ）やＩＰアドレス（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ａｄｄｒｅｓｓ）を含むものとする。また、上記に加えて、入口ポート（Ｉｎｇｒｅｓｓ  Ｐｏｒｔ）の情報も、エントリのルールとして使用可能である。
【００２４】
エントリのアクションは、「特定のポートに出力する」、「廃棄する」、「ヘッダを書き換える」といった動作を示す。例えば、スイッチは、エントリのアクションに出力ポートの識別情報（出力ポート番号等）が示されていれば、これに該当するポートにパケットを出力し、出力ポートの識別情報が示されていなければ、パケットを破棄する。或いは、スイッチは、エントリのアクションにヘッダ情報が示されていれば、当該ヘッダ情報に基づいてパケットのヘッダを書き換える。
【００２５】
オープンフローネットワークにおけるスイッチは、エントリのルールに適合するパケット群（パケット系列）に対して、エントリのアクションを実行する。
【００２６】
オープンフロー技術の詳細については、非特許文献１に記載されている。
【００２７】
＜実施形態＞
以下に、本発明の実施形態について添付図面を参照して説明する。
【００２８】
［全体構成］
図１に示すように、本発明に係るネットワークシステムは、制御装置１０と、ネットワーク機器２０（２０−ｉ、ｉ＝１〜ｎ：ｎは台数）と、サーバ機器３０（３０−ｊ、ｊ＝１〜ｓ：ｓは台数）と、クライアント４０を含む。
【００２９】
制御装置１０は、オープンフローネットワークにおけるコントローラに相当する。制御装置１０は、管理対象機器の集中管理を行い、全ての管理対象機器のパフォーマンスデータを収集する。ここでは、制御装置１０は、自身が管理する全てのネットワーク機器２０（２０−ｉ、ｉ＝１〜ｎ）及びサーバ機器３０（３０−ｊ、ｊ＝１〜ｓ）等、該ネットワークシステムを構成する全ての機器を管理対象機器として集中管理する。この場合、制御装置１０は、ネットワーク機器２０（２０−ｉ、ｉ＝１〜ｎ）の各々とセキュアチャネル（Ｓｅｃｕｒｅ  Ｃｈａｎｎｅｌ）で接続されているものとする。
【００３０】
ネットワーク機器２０（２０−ｉ、ｉ＝１〜ｎ）の各々は、オープンフローネットワークにおけるスイッチに相当する。ネットワーク機器２０（２０−ｉ、ｉ＝１〜ｎ）の各々は、制御装置１０の指示によって通信を行う。具体的には、ネットワーク機器２０（２０−ｉ、ｉ＝１〜ｎ）は、制御装置１０により設定されたフローテーブルに従ってパケットを転送する。ネットワーク機器２０（２０−ｉ、ｉ＝１〜ｎ）は、通常１台以上でネットワークを構成する。
【００３１】
サーバ機器３０（３０−ｊ、ｊ＝１〜ｓ）は、エンドユーザ、クライアントへアプリケーション等のサービスを提供する。サーバ機器３０（３０−ｊ、ｊ＝１〜ｓ）は、同じサービス（例えば、Ｗｅｂサービス等）を提供するサーバ毎にグループを形成する。すなわち、サーバ機器３０（３０−ｊ、ｊ＝１〜ｓ）は、いずれかのグループを形成するサーバ群に属する。サーバ群は、グループの数だけ存在する。サーバ機器３０（３０−ｊ、ｊ＝１〜ｓ）は、実ＩＰアドレスの他に、同じサーバ群に属する全てのサーバ機器３０（３０−ｊ、ｊ＝１〜ｓ）に共通の仮想ＩＰアドレスが割り当てられる。この仮想ＩＰアドレスは、クライアントからの要求を負荷分散する際、サーバ群を１台のサーバ機器に見せかけるために必要となる。すなわち、この仮想ＩＰアドレスは、１つのサーバ群に１つだけ割り当てられ、そのサーバ群に属する全てのサーバ機器３０（３０−ｊ、ｊ＝１〜ｓ）が共有することになる。なお、実際には、仮想ＩＰアドレスの代わりに、仮想ＭＡＣアドレス等を使用しても良い。
【００３２】
クライアント４０は、ネットワーク機器２０（２０−ｉ、ｉ＝１〜ｎ）により形成される経路を経由して、サーバ機器３０（３０−ｊ、ｊ＝１〜ｓ）と通信する。
【００３３】
ネットワーク機器２０（２０−ｉ、ｉ＝１〜ｎ）、サーバ機器３０（３０−ｊ、ｊ＝１〜ｓ）、及びクライアント４０は、ネットワーク上のノードである。制御装置１０も、ネットワーク上に存在する場合は、ノードの１つとなる。
【００３４】
［機能詳細］
次に、各装置の機能詳細について説明する。
【００３５】
［制御装置］
制御装置１０は、パフォーマンス管理部１１と、パフォーマンスデータ格納部１２と、経路計算部１３と、経路情報格納部１４と、フロー制御部１５と、フローテーブル格納部１６を備える。
【００３６】
パフォーマンス管理部１１は、自身が管理する全てのネットワーク機器２０（２０−ｉ、ｉ＝１〜ｎ）及びサーバ機器３０（３０−ｊ、ｊ＝１〜ｓ）からのトポロジ情報、及び、ＣＰＵ使用率、ＮＷ使用率（回線使用率）等のパフォーマンスデータを収集する。なお、ＮＷは、ネットワーク（Ｎｅｔｗｏｒｋ）を示す。
【００３７】
パフォーマンスデータ格納部１２は、自身が管理する全てのネットワーク機器２０（２０−ｉ、ｉ＝１〜ｎ）及びサーバ機器３０（３０−ｊ、ｊ＝１〜ｓ）から収集したトポロジ情報（ネットワーク機器、サーバ機器の接続状況、ＩＰアドレス、ＭＡＣアドレス）、ＣＰＵ使用率、ＮＷ使用率等のパフォーマンスデータを蓄積する。
【００３８】
経路計算部１３は、パフォーマンスデータ格納部１２から読み出したトポロジ情報等を基に、最適経路を計算する。なお、経路計算部１３は、パフォーマンス管理部１１から直接トポロジ情報等を受け取っても良い。
【００３９】
経路情報格納部１４は、経路計算部１３での計算結果である経路情報を蓄積する。
【００４０】
フロー制御部１５は、経路情報格納部１４から読み出した経路情報を基に、ネットワーク機器２０（２０−ｉ、ｉ＝１〜ｎ）の各々に対するエントリを定義し、自身のフローテーブル、及びネットワーク機器２０（２０−ｉ、ｉ＝１〜ｎ）の各々のフローテーブルへエントリの登録（設定）を行う。フロー制御部１５は、ネットワーク機器２０（２０−ｉ、ｉ＝１〜ｎ）の各々のフローテーブルへエントリの登録を行う際、オープンフロープロトコルに準拠したエントリ登録用の制御メッセージを送信する。
【００４１】
フローテーブル格納部１６は、制御装置１０が管理する全てのネットワーク機器２０（２０−ｉ、ｉ＝１〜ｎ）に対するエントリが登録されたフローテーブルを保持する。
【００４２】
［ネットワーク機器］
ネットワーク機器２０（２０−ｉ、ｉ＝１〜ｎ）は、パフォーマンス管理部２１と、フロー制御部２２と、フローテーブル格納部２３と、パケット制御部２４を備える。
【００４３】
パフォーマンス管理部２１は、ＮＷ使用率、ＣＰＵ使用率、自身のＩＰアドレス、ＭＡＣアドレスを制御装置へ伝達する。
【００４４】
フロー制御部２２は、制御装置１０へフローのエントリの要求・受信を行い、フローテーブルへのエントリの登録を行う。なお、フロー制御部２２は、制御装置１０から事前に（Ｐｒｏａｃｔｉｖｅ型で）フローテーブルにエントリが登録される場合、エントリの要求を行わなくても良い。フロー制御部２２は、制御装置１０からオープンフロープロトコルに準拠したエントリ登録用の制御メッセージを受信した際、該制御メッセージに従ってフローテーブルへのエントリの登録を行う。
【００４５】
フローテーブル格納部２３は、該ネットワーク機器に対するエントリが登録されたフローテーブルを保持する。すなわち、フローテーブル格納部２３は、ネットワーク機器毎の（個別の）フローテーブルを保持する。
【００４６】
パケット制御部２４は、フローテーブルに登録されたエントリのルールに該当するパケットに対し、該エントリに定義されたアクションに従って、該パケットの転送・廃棄等の処理を行う。また、パケット制御部２４は、フローテーブルに登録されたエントリのルールに該当しないパケットが到着した場合、フロー制御部２２に対し、制御装置１０へフローのエントリの要求を行うように依頼しても良い。例えば、パケット制御部２４は、フロー制御部２２に対し、不明なパケットを渡す。フロー制御部２２は、フローのエントリの要求として、該パケット（不明なパケット）を制御装置１０に問い合わせる。
【００４７】
［サーバ機器］
サーバ機器３０（３０−ｊ、ｊ＝１〜ｓ）は、パフォーマンス管理部３１と、パケット制御部３２と、アプリケーション実行部３３を備える。
【００４８】
パフォーマンス管理部３１は、ＣＰＵ使用率、自身の実ＩＰアドレス、仮想ＩＰアドレス、ＭＡＣアドレスを制御装置１０に伝達する。ここでは、パフォーマンス管理部３１は、パケット制御部３２及びアプリケーション実行部３３の動作状況や性能も監視する。
【００４９】
パケット制御部３２は、パケットの転送・廃棄を行う。ここでは、パケット制御部３２は、受信パケットをアプリケーション実行部３３に転送、又は廃棄する。また、アプリケーション実行部３３から受け取ったパケットを、送信先へ転送、又は廃棄する。
【００５０】
アプリケーション実行部３３は、パケット制御部３２から転送されたパケットに応じて、クライアント４０へ提供するサービスアプリケーションを実行し、パケット制御部３２経由でクライアント４０に応答のパケットを送信する。
【００５１】
［ハードウェアの例示］
制御装置１０、サーバ機器３０（３０−ｊ、ｊ＝１〜ｓ）、及びクライアント４０の例として、ＰＣ（パソコン）、アプライアンス（ａｐｐｌｉａｎｃｅ）、シンクライアント端末／サーバ、ワークステーション、メインフレーム、スーパーコンピュータ等の計算機を想定している。また、制御装置１０、サーバ機器３０（３０−ｊ、ｊ＝１〜ｓ）、及びクライアント４０は、計算機に搭載される拡張ボードや、物理マシン上に構築された仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）でも良い。
【００５２】
なお、クライアント４０は、携帯電話機、スマートフォン、スマートブック、カーナビ（カーナビゲーションシステム）、携帯型ゲーム機、家庭用ゲーム機、携帯型音楽プレーヤー、ハンディターミナル、ガジェット（電子機器）、双方向テレビ、デジタルチューナー、デジタルレコーダー、情報家電（ｉｎｆｏｒｍａｔｉｏｎ  ｈｏｍｅ  ａｐｐｌｉａｎｃｅ）、ＯＡ（Ｏｆｆｉｃｅ  Ａｕｔｏｍａｔｉｏｎ）機器等でも良い。また、クライアント４０は、車両や船舶、航空機等の移動体に搭載されていても良い。
【００５３】
ネットワーク機器２０（２０−ｉ、ｉ＝１〜ｎ）の例として、ネットワークスイッチ（ｎｅｔｗｏｒｋ  ｓｗｉｔｃｈ）、ルータ（ｒｏｕｔｅｒ）、プロキシ（ｐｒｏｘｙ）、ゲートウェイ（ｇａｔｅｗａｙ）、ファイアウォール（ｆｉｒｅｗａｌｌ）、ロードバランサ（ｌｏａｄ  ｂａｌａｎｃｅｒ：負荷分散装置）、帯域制御装置（ｐａｃｋｅｔ  ｓｈａｐｅｒ）、セキュリティ監視制御装置（ＳＣＡＤＡ：Ｓｕｐｅｒｖｉｓｏｒｙ  Ｃｏｎｔｒｏｌ  Ａｎｄ  Ｄａｔａ  Ａｃｑｕｉｓｉｔｉｏｎ）、ゲートキーパー（ｇａｔｅｋｅｅｐｅｒ）、基地局（ｂａｓｅ  ｓｔａｔｉｏｎ）、アクセスポイント（ＡＰ：Ａｃｃｅｓｓ  Ｐｏｉｎｔ）、通信衛星（ＣＳ：Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｓａｔｅｌｌｉｔｅ）、或いは、複数の通信ポートを有する計算機等が考えられる。また、ネットワーク機器２０（２０−ｉ、ｉ＝１〜ｎ）は、仮想スイッチでも良い。
【００５４】
図示しないが、制御装置１０、ネットワーク機器２０（２０−ｉ、ｉ＝１〜ｎ）、サーバ機器３０（３０−ｊ、ｊ＝１〜ｓ）、及びクライアント４０の各々は、プログラムに基づいて駆動し所定の処理を実行するプロセッサと、当該プログラムや各種データを記憶するメモリと、ネットワークに接続するための通信用インターフェースによって実現される。
【００５５】
上記のプロセッサの例として、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ネットワークプロセッサ（ＮＰ：Ｎｅｔｗｏｒｋ  Ｐｒｏｃｅｓｓｏｒ）、マイクロプロセッサ（ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ）、マイクロコントローラ、或いは、専用の機能を有する半導体集積回路（ＩＣ：Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等が考えられる。
【００５６】
上記のメモリの例として、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリ等の半導体記憶装置、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の補助記憶装置、又は、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のリムーバブルディスクや、ＳＤメモリカード（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ  ｍｅｍｏｒｙ  ｃａｒｄ）等の記憶媒体（メディア）等が考えられる。また、バッファ（ｂｕｆｆｅｒ）やレジスタ（ｒｅｇｉｓｔｅｒ）でも良い。或いは、ＤＡＳ（Ｄｉｒｅｃｔ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）、ＦＣ−ＳＡＮ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  −  Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）、ＩＰ−ＳＡＮ（ＩＰ  −  Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等を用いたストレージ装置でも良い。
【００５７】
なお、上記のプロセッサ及び上記のメモリは、一体化していても良い。例えば、近年では、マイコン等の１チップ化が進んでいる。従って、電子機器等に搭載される１チップマイコンが、上記のプロセッサ及び上記のメモリを備えている事例が考えられる。
【００５８】
上記のインターフェースの例として、ネットワーク通信に対応した基板（マザーボード、Ｉ／Ｏボード）やチップ等の半導体集積回路、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）等のネットワークアダプタや同様の拡張カード、アンテナ等の通信装置、接続口（コネクタ）等の通信ポート等が考えられる。
【００５９】
また、ネットワークの例として、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、無線ＬＡＮ（Ｗｉｒｅｌｅｓｓ  ＬＡＮ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、バックボーン（Ｂａｃｋｂｏｎｅ）、ケーブルテレビ（ＣＡＴＶ）回線、固定電話網、携帯電話網、ＷｉＭＡＸ（ＩＥＥＥ  ８０２．１６ａ）、３Ｇ（３ｒｄ  Ｇｅｎｅｒａｔｉｏｎ）、専用線（ｌｅａｓｅ  ｌｉｎｅ）、ＩｒＤＡ（Ｉｎｆｒａｒｅｄ  Ｄａｔａ  Ａｓｓｏｃｉａｔｉｏｎ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、シリアル通信回線、データバス等が考えられる。
【００６０】
なお、制御装置１０、ネットワーク機器２０（２０−ｉ、ｉ＝１〜ｎ）、サーバ機器３０（３０−ｊ、ｊ＝１〜ｓ）、及びクライアント４０の各々の内部の構成要素は、モジュール（ｍｏｄｕｌｅ）、コンポーネント（ｃｏｍｐｏｎｅｎｔ）、或いは専用デバイス、又はこれらの起動（呼出）プログラムでも良い。
【００６１】
但し、実際には、これらの例に限定されない。
【００６２】
［最適経路制御処理］
図２〜図６を参照して、本発明に係る最適経路制御処理について説明する。
【００６３】
［実施例の構成］
まず、図２を参照して、本発明に係るネットワークシステムの実施例の構成について説明する。
【００６４】
本実施例におけるネットワークシステムは、制御装置１０と、ネットワーク機器２０（２０−ｉ、ｉ＝１〜６）と、サーバ機器３０（３０−ｊ、ｊ＝１〜４）と、クライアント４０を含むものとする。
【００６５】
［各装置の識別情報］
なお、ネットワーク機器２０−１の識別情報を「ＮＷ機器１」とする。ネットワーク機器２０−２の識別情報を「ＮＷ機器２」とする。ネットワーク機器２０−３の識別情報を「ＮＷ機器３」とする。ネットワーク機器２０−４の識別情報を「ＮＷ機器４」とする。ネットワーク機器２０−５の識別情報を「ＮＷ機器５」とする。ネットワーク機器２０−６の識別情報を「ＮＷ機器６」とする。
【００６６】
また、サーバ機器３０−１の識別情報を「サーバＡ」とする。サーバ機器３０−２の識別情報を「サーバＢ」とする。サーバ機器３０−３の識別情報を「サーバＣ」とする。サーバ機器３０−４の識別情報を「サーバＤ」とする。
【００６７】
クライアント４０の識別情報を「Ｃｌｉｅｎｔ  Ａ」とする。
【００６８】
［サーバが属するサーバ群］
サーバＡ（サーバ機器３０−１）及びサーバＣ（サーバ機器３０−３）は、サーバ群１に属する。サーバ群１には、仮想ＩＰアドレス「ＸＸＸ」が割り当てられている。すなわち、サーバＡ（サーバ機器３０−１）及びサーバＣ（サーバ機器３０−３）は、仮想ＩＰアドレス「ＸＸＸ」を共有する。
【００６９】
サーバＢ（サーバ機器３０−２）及びサーバＤ（サーバ機器３０−４）は、サーバ群２に属する。サーバ群２には、仮想ＩＰアドレス「ＹＹＹ」が割り当てられている。すなわち、サーバＢ（サーバ機器３０−２）及びサーバＤ（サーバ機器３０−４）は、仮想ＩＰアドレス「ＹＹＹ」を共有する。
【００７０】
［各装置の接続関係］
クライアント４０は、ＮＷ機器１（ネットワーク機器２０−１）と相互に接続されている。ＮＷ機器１（ネットワーク機器２０−１）は、ＮＷ機器２（ネットワーク機器２０−２）、ＮＷ機器３（ネットワーク機器２０−３）、及びＮＷ機器４（ネットワーク機器２０−４）と相互に接続されている。ＮＷ機器２（ネットワーク機器２０−２）は、ＮＷ機器３（ネットワーク機器２０−３）、及びＮＷ機器４（ネットワーク機器２０−４）と相互に接続されている。ＮＷ機器３（ネットワーク機器２０−３）、及びＮＷ機器４（ネットワーク機器２０−４）は、いずれもＮＷ機器５（ネットワーク機器２０−５）、及びＮＷ機器６（ネットワーク機器２０−６）と相互に接続されている。ＮＷ機器５（ネットワーク機器２０−５）は、ＮＷ機器６（ネットワーク機器２０−６）と相互に接続されている。また、ＮＷ機器５（ネットワーク機器２０−５）、及びＮＷ機器６（ネットワーク機器２０−６）は、いずれもサーバＡ（サーバ機器３０−１）、サーバＢ（サーバ機器３０−２）、サーバＣ（サーバ機器３０−３）、及びサーバＤ（サーバ機器３０−４）の各々と相互に接続されている。
【００７１】
なお、制御装置１０は、ネットワーク機器２０（２０−ｉ、ｉ＝１〜６）の各々とセキュアチャネル（Ｓｅｃｕｒｅ  Ｃｈａｎｎｅｌ）で接続されているものとする。
【００７２】
また、制御装置１０は、全てのネットワーク機器２０（２０−ｉ、ｉ＝１〜６）、及びサーバ機器３０（３０−ｊ、ｊ＝１〜４）の各々から、パフォーマンスデータを収集済みとする。
【００７３】
［パフォーマンスデータのテーブル］
図３、図４を参照して、パフォーマンスデータのテーブル例について説明する。
【００７４】
制御装置１０のパフォーマンスデータ格納部１２は、パフォーマンスデータとして、ＮＷ機器テーブル１２１と、サーバ機器テーブル１２２を有する。
【００７５】
ＮＷ機器テーブル１２１は、ネットワーク機器２０（２０−ｉ、ｉ＝１〜６）の使用率を管理するためのテーブルである。
【００７６】
サーバ機器テーブル１２２は、サーバ機器３０（３０−ｊ、ｊ＝１〜４）の使用率を管理するためのテーブルである。
【００７７】
［ＮＷ機器テーブルの詳細］
図３を参照して、ＮＷ機器テーブル１２１の詳細について説明する。
【００７８】
ＮＷ機器テーブル１２１は、「ＮＷ機器」と、「ＮＷ（Ｃｕｒｒｅｎｔ）」と、「ＮＷ（Ａｖｅｒａｇｅ）」という領域を有する。
【００７９】
「ＮＷ機器」は、ネットワーク機器２０（２０−ｉ、ｉ＝１〜６）の各々の識別情報を格納するための領域である。
【００８０】
「ＮＷ（Ｃｕｒｒｅｎｔ）」は、ネットワーク機器２０（２０−ｉ、ｉ＝１〜６）の現在（最新）のＮＷ使用率を示す情報を格納するための領域である。
【００８１】
「ＮＷ（Ａｖｅｒａｇｅ）」は、ネットワーク機器２０（２０−ｉ、ｉ＝１〜６）のＮＷ使用率を示す情報の直近の単位時間当たりの平均値（ＮＷ平均使用率）を格納するための領域である。
【００８２】
［サーバ機器テーブルの詳細］
図４を参照して、サーバ機器テーブル１２２の詳細について説明する。
【００８３】
サーバ機器テーブル１２２は、「サーバ」と、「ＣＰＵ（Ｃｕｒｒｅｎｔ）」と、「ＣＰＵ（Ａｖｅｒａｇｅ）」という領域を有する。
【００８４】
「サーバ」は、サーバ機器３０（３０−ｊ、ｊ＝１〜４）の各々の識別情報を格納するための領域である。
【００８５】
「ＣＰＵ（Ｃｕｒｒｅｎｔ）」は、サーバ機器３０（３０−ｊ、ｊ＝１〜４）の現在（最新）のＣＰＵ使用率を示す情報を格納するための領域である。
【００８６】
「ＣＰＵ（Ａｖｅｒａｇｅ）」は、サーバ機器３０（３０−ｊ、ｊ＝１〜４）のＣＰＵ使用率を示す情報の直近の単位時間当たりの平均値（ＣＰＵ平均使用率）を格納するための領域である。
【００８７】
［最適経路制御処理における動作１］
図５を参照して、最適条件として、「ＣＰＵ使用率」と「ＮＷ使用率」が最も小さい経路を選択する場合の動作について説明する。
【００８８】
ここでは、図２に示されるネットワークシステムの構成を前提とする。
【００８９】
図２に示される構成において、「Ｃｌｉｅｎｔ  Ａ」（クライアント４０）から仮想ＩＰアドレス「ＸＸＸ」へアクセスする場合、「Ｃｌｉｅｎｔ  Ａ」（クライアント４０）から仮想ＩＰアドレス「ＸＸＸ」宛に通信が発生する。
【００９０】
（１）ステップＳ１０１
「Ｃｌｉｅｎｔ  Ａ」（クライアント４０）は、仮想ＩＰアドレス「ＸＸＸ」宛にパケットを送信する。
【００９１】
（２）ステップＳ１０２
ＮＷ機器１（ネットワーク機器２０−１）は、入力側エッジスイッチ（Ｉｎｇｒｅｓｓ）として「Ｃｌｉｅｎｔ  Ａ」（クライアント４０）に接続されている。したがって、ＮＷ機器１（ネットワーク機器２０−１）のパケット制御部２４は、「Ｃｌｉｅｎｔ  Ａ」（クライアント４０）から仮想ＩＰアドレス「ＸＸＸ」宛のパケットを受信し、自身のフローテーブル格納部２３内のフローテーブルに登録されているエントリの中に、受信パケットに該当するエントリが存在するか確認する。パケット制御部２４は、該エントリが存在する場合、該エントリに定義されたアクションに従って、仮想ＩＰアドレス「ＸＸＸ」宛のパケットを転送する。
【００９２】
（３）ステップＳ１０３
ＮＷ機器１（ネットワーク機器２０−１）は、仮想ＩＰアドレス「ＸＸＸ」宛のパケットを今回初めて受信したため、自身のフローテーブル格納部２３内のフローテーブルに登録されているエントリの中に、受信パケットに該当するエントリが存在しない。したがって、ＮＷ機器１（ネットワーク機器２０−１）のフロー制御部２２は、制御装置１０に対し、「ＸＸＸ」宛のパケットのフローのエントリを要求する。
【００９３】
（４）ステップＳ１０４
制御装置１０は、「ＸＸＸ」宛のパケットのフローのエントリを要求された場合、「ＸＸＸ」宛のパケットの転送先として、サーバＡ（サーバ機器３０−１）宛、又はサーバＣ（サーバ機器３０−３）宛のどちらかを選択することになる。このとき、制御装置１０の経路計算部１３は、図４に示されるサーバ機器テーブル１２２を参照し、サーバＡ（サーバ機器３０−１）のＣＰＵ使用率が「２０％」、サーバＣ（サーバ機器３０−３）のＣＰＵ使用率が「４０％」であるため、最もＣＰＵ使用率の低いサーバＡ（サーバ機器３０−１）を選択する。
【００９４】
（５）ステップＳ１０５
また、経路計算部１３は、図３に示されるＮＷ機器テーブル１２１を参照し、最もＮＷ使用率の低い経路で転送することを決定する。ここでは、経路計算部１３は、ＮＷ機器１（ネットワーク機器２０−３）の次段のノードとして、ＮＷ機器３（ネットワーク機器２０−３）のＮＷ使用率が「２０％」、ＮＷ機器４（ネットワーク機器２０−４）のＮＷ使用率が「１５％」であるため、ＮＷ機器４（ネットワーク機器２０−４）を次段のノードとする。また、ＮＷ機器４（ネットワーク機器２０−４）の次段のノードとして、ＮＷ機器５（ネットワーク機器２０−５）のＮＷ使用率が「２０％」、ＮＷ機器６（ネットワーク機器２０−６）のＮＷ使用率が「２５％」であるため、ＮＷ機器５（ネットワーク機器２０−５）を次段のノードとする。これにより、経路計算部１３は、最終的に、最もＮＷ使用率の低い経路である「ＮＷ機器１→ＮＷ機器４→ＮＷ機器５→サーバＡ」という経路で転送することを決定し、この経路情報を経路情報格納部１４に蓄積する。すなわち、最適経路は、「ＮＷ機器１（ネットワーク機器２０−１）→ＮＷ機器４（ネットワーク機器２０−４）→ＮＷ機器５（ネットワーク機器２０−５）→サーバＡ（サーバ機器３０−１）」ということになる。
【００９５】
（６）ステップＳ１０６
制御装置１０のフロー制御部１５は、経路情報格納部１４から読み出した最適経路の経路情報を基に、最適経路上のネットワーク機器の各々に対するエントリを定義し、自身のフローテーブル格納部１６内のフローテーブル、及び最適経路上のネットワーク機器の各々のフローテーブルへエントリの登録を行う。ここでは、最適経路上のネットワーク機器は、ＮＷ機器１（ネットワーク機器２０−１）、ＮＷ機器４（ネットワーク機器２０−４）、及びＮＷ機器５（ネットワーク機器２０−５）である。フロー制御部１５は、ＮＷ機器１（ネットワーク機器２０−１）、ＮＷ機器４（ネットワーク機器２０−４）、及びＮＷ機器５（ネットワーク機器２０−５）のフローテーブルへ、仮想ＩＰアドレス「ＸＸＸ」宛のパケットを最適経路上の次段のノードに転送するためのエントリの登録を行う。
【００９６】
（７）ステップＳ１０７
最適経路上のネットワーク機器の各々のフロー制御部２２は、制御装置１０からのエントリ登録処理に応じて、自身のフローテーブル格納部２３内のフローテーブルに、仮想ＩＰアドレス「ＸＸＸ」宛のパケットを最適経路上の次段のノードに転送するためのエントリを登録する。すなわち、ＮＷ機器１（ネットワーク機器２０−１）、ＮＷ機器４（ネットワーク機器２０−４）、及びＮＷ機器５（ネットワーク機器２０−５）は、制御装置１０からのエントリ登録処理に応じて、自身のフローテーブル格納部２３内のフローテーブルに、仮想ＩＰアドレス「ＸＸＸ」宛のパケットを最適経路上の次段のノードに転送するためのエントリを登録する。
【００９７】
（８）ステップＳ１０８
ＮＷ機器１（ネットワーク機器２０−１）に辿り着いたパケットは、最もＮＷ使用率の低い経路である「ＮＷ機器１→ＮＷ機器４→ＮＷ機器５→サーバＡ」という経路で転送される。すなわち、ＮＷ機器１（ネットワーク機器２０−１）は、自身のフローテーブルに登録されたエントリに従い、仮想ＩＰアドレス「ＸＸＸ」宛のパケットをＮＷ機器４（ネットワーク機器２０−４）に転送する。ＮＷ機器４（ネットワーク機器２０−４）は、自身のフローテーブルに登録されたエントリに従い、仮想ＩＰアドレス「ＸＸＸ」宛のパケットをＮＷ機器５（ネットワーク機器２０−５）に転送する。ＮＷ機器５（ネットワーク機器２０−５）は、自身のフローテーブルに登録されたエントリに従い、仮想ＩＰアドレス「ＸＸＸ」宛のパケットをサーバＡ（サーバ機器３０−１）に転送する。
【００９８】
［最適経路制御処理における動作２］
図６を参照して、最適条件として、「ＣＰＵ平均使用率」、「ネットワーク平均使用率」が最も小さい経路を選択する場合の動作について説明する。
【００９９】
ここでは、図２に示されるネットワークシステムの構成を前提とする。図２に示される構成において、「Ｃｌｉｅｎｔ  Ａ」（クライアント４０）から仮想ＩＰアドレス「ＹＹＹ」へアクセスする場合、「Ｃｌｉｅｎｔ  Ａ」（クライアント４０）から仮想ＩＰアドレス「ＹＹＹ」宛に通信が発生する。
【０１００】
（１）ステップＳ２０１
「Ｃｌｉｅｎｔ  Ａ」（クライアント４０）は、仮想ＩＰアドレス「ＹＹＹ」宛にパケットを送信する。
【０１０１】
（２）ステップＳ２０２
ＮＷ機器１（ネットワーク機器２０−１）は、入力側エッジスイッチ（Ｉｎｇｒｅｓｓ）として「Ｃｌｉｅｎｔ  Ａ」（クライアント４０）に接続されている。したがって、ＮＷ機器１（ネットワーク機器２０−１）のパケット制御部２４は、「Ｃｌｉｅｎｔ  Ａ」（クライアント４０）から仮想ＩＰアドレス「ＹＹＹ」宛のパケットを受信し、自身のフローテーブル格納部２３内のフローテーブルに登録されているエントリの中に、受信パケットに該当するエントリが存在するか確認する。パケット制御部２４は、該エントリが存在する場合、該エントリに定義されたアクションに従って、仮想ＩＰアドレス「ＹＹＹ」宛のパケットを転送する。
【０１０２】
（３）ステップＳ２０３
ＮＷ機器１（ネットワーク機器２０−１）は、仮想ＩＰアドレス「ＹＹＹ」宛のパケットを今回初めて受信したため、自身のフローテーブル格納部２３内のフローテーブルに登録されているエントリの中に、受信パケットに該当するエントリが存在しない。したがって、ＮＷ機器１（ネットワーク機器２０−１）のフロー制御部２２は、制御装置１０に対し、「ＹＹＹ」宛のパケットのフローのエントリを要求する。
【０１０３】
（４）ステップＳ２０４
制御装置１０は、「ＹＹＹ」宛のパケットのフローのエントリを要求された場合、「ＹＹＹ」宛のパケットの転送先として、サーバＢ（サーバ機器３０−２）宛、又はサーバＤ（サーバ機器３０−４）宛のどちらかを選択することになる。このとき、制御装置１０の経路計算部１３は、図４に示されるサーバ機器テーブル１２２を参照し、サーバＢ（サーバ機器３０−２）のＣＰＵ平均使用率が「３０％」、サーバＤ（サーバ機器３０−４）のＣＰＵ平均使用率が「１５％」であるため、最もＣＰＵ平均使用率の低いサーバＤ（サーバ機器３０−４）を選択する。
【０１０４】
（５）ステップＳ２０５
また、経路計算部１３は、図３に示されるＮＷ機器テーブル１２１を参照し、最もＮＷ平均使用率の低い経路で転送することを決定する。ここでは、経路計算部１３は、ＮＷ機器１（ネットワーク機器２０−３）の次段のノードとして、ＮＷ機器３（ネットワーク機器２０−３）のＮＷ平均使用率が「６０％」、ＮＷ機器４（ネットワーク機器２０−４）のＮＷ平均使用率が「６０％」であるため、どちらを次段のノードとしても同じであるが、優先順位又はＮＷ機器１（ネットワーク機器２０−３）との距離等を考慮して、ＮＷ機器３（ネットワーク機器２０−３）を次段のノードとする。また、ＮＷ機器３（ネットワーク機器２０−３）の次段のノードとして、ＮＷ機器５（ネットワーク機器２０−５）のＮＷ平均使用率が「３５％」、ＮＷ機器６（ネットワーク機器２０−６）のＮＷ平均使用率が「１０％」であるため、ＮＷ機器６（ネットワーク機器２０−６）を次段のノードとする。これにより、経路計算部１３は、最終的に、最もＮＷ平均使用率の低い「ＮＷ機器１→ＮＷ機器３→ＮＷ機器６→サーバＤ」という経路で転送することを決定し、この経路情報を経路情報格納部１４に蓄積する。すなわち、最適経路は、「ＮＷ機器１（ネットワーク機器２０−１）→ＮＷ機器３（ネットワーク機器２０−３）→ＮＷ機器６（ネットワーク機器２０−６）→サーバＤ（サーバ機器３０−４）」ということになる。
【０１０５】
（６）ステップＳ２０６
制御装置１０のフロー制御部１５は、経路情報格納部１４から読み出した最適経路の経路情報を基に、最適経路上のネットワーク機器の各々に対するエントリを定義し、自身のフローテーブル格納部１６内のフローテーブル、及び最適経路上のネットワーク機器の各々のフローテーブルへエントリの登録を行う。ここでは、最適経路上のネットワーク機器は、ＮＷ機器１（ネットワーク機器２０−１）、ＮＷ機器３（ネットワーク機器２０−３）、及びＮＷ機器６（ネットワーク機器２０−６）である。フロー制御部１５は、ＮＷ機器１（ネットワーク機器２０−１）、ＮＷ機器３（ネットワーク機器２０−３）、及びＮＷ機器６（ネットワーク機器２０−６）のフローテーブルへ、仮想ＩＰアドレス「ＹＹＹ」宛のパケットを最適経路上の次段のノードに転送するためのエントリの登録を行う。
【０１０６】
（７）ステップＳ２０７
最適経路上のネットワーク機器の各々のフロー制御部２２は、制御装置１０からのエントリ登録処理に応じて、自身のフローテーブル格納部２３内のフローテーブルに、仮想ＩＰアドレス「ＹＹＹ」宛のパケットを最適経路上の次段のノードに転送するためのエントリを登録する。すなわち、ＮＷ機器１（ネットワーク機器２０−１）、ＮＷ機器３（ネットワーク機器２０−３）、及びＮＷ機器６（ネットワーク機器２０−６）は、制御装置１０からのエントリ登録処理に応じて、自身のフローテーブル格納部２３内のフローテーブルに、仮想ＩＰアドレス「ＹＹＹ」宛のパケットを最適経路上の次段のノードに転送するためのエントリを登録する。
【０１０７】
（８）ステップＳ２０８
ＮＷ機器１（ネットワーク機器２０−１）に辿り着いたパケットは、最もＮＷ平均使用率の低い「ＮＷ機器１→ＮＷ機器３→ＮＷ機器６→サーバＤ」という経路で転送される。すなわち、ＮＷ機器１（ネットワーク機器２０−１）は、自身のフローテーブルに登録されたエントリに従い、仮想ＩＰアドレス「ＹＹＹ」宛のパケットをＮＷ機器３（ネットワーク機器２０−３）に転送する。ＮＷ機器３（ネットワーク機器２０−３）は、自身のフローテーブルに登録されたエントリに従い、仮想ＩＰアドレス「ＹＹＹ」宛のパケットをＮＷ機器６（ネットワーク機器２０−６）に転送する。ＮＷ機器６（ネットワーク機器２０−６）は、自身のフローテーブルに登録されたエントリに従い、仮想ＩＰアドレス「ＹＹＹ」宛のパケットをサーバＤ（サーバ機器３０−４）に転送する。
【０１０８】
［補足］
最適経路制御処理における動作として、図５に示される動作１と、図６に示される動作２のどちらを採用するかは、仮想ＩＰアドレスの宛先（アクセス先）のサーバ機器がクライアントに提供するサービスの内容に応じて変更・決定するようにしても良い。例えば、制御装置１０の経路計算部１３は、仮想ＩＰアドレスの宛先（アクセス先）のサーバ機器がクライアントに提供するサービスの内容に応じて、図５に示される動作１と、図６に示される動作２のどちらを採用するか変更・決定する。
【０１０９】
また、使用するパフォーマンスデータの内容は、自由に組み替えても使用しても良い。例えば、「ＣＰＵ平均使用率」を基に、サーバ群から最適なサーバを選択し、「ネットワーク使用率」を基に、最適経路を決定しても良い。或いは、「ＣＰＵ使用率」と「ＣＰＵ平均使用率」の両方を参照して、サーバ群から最適なサーバを選択し、「ネットワーク使用率」と「ネットワーク平均使用率」の両方を参照して、最適経路を決定しても良い。例えば、制御装置１０の経路計算部１３は、仮想ＩＰアドレスの宛先（アクセス先）のサーバ機器がクライアントに提供するサービスの内容に応じて、パフォーマンスデータ格納部１２に蓄積されたパフォーマンスデータのうち、どのデータを使用するか決定する。このとき、経路計算部１３は、どのデータを使用するかを定義した最適条件を変更・決定することになる。
【０１１０】
なお、「ＣＰＵ使用率」、「ＣＰＵ平均使用率」、「ＮＷ使用率」、「ＮＷ平均使用率」は、パフォーマンスデータの一例に過ぎない。実際には、これらのデータに限定されない。例えば、「メモリ使用率」、「ＣＰＵの性能（種別）」、「データ転送速度」、「利用ユーザ数」等でも良い。
【０１１１】
［他の実施例］
オープンフロー技術において、ネットワーク機器のフローテーブルにエントリを登録する方式は、大きく「Ｐｒｏａｃｔｉｖｅ型」と、「Ｒｅａｃｔｉｖｅ型」の２つの方式に分けられる。
【０１１２】
「Ｐｒｏａｃｔｉｖｅ型」では、制御装置が「事前に（データ通信が始まる前に）」所定のパケット群（フロー）の経路（パス）を計算し、ネットワーク機器のフローテーブルにエントリを登録する。すなわち、ここでいう「Ｐｒｏａｃｔｉｖｅ型」とは、制御装置が自発的に行う「事前のエントリ登録」を指す。
【０１１３】
「Ｒｅａｃｔｉｖｅ型」では、制御装置が「ネットワーク機器から１ｓｔパケット（該当エントリがない新規のパケット）についての問い合わせを受けた際に」当該パケット群（フロー）の経路を計算し、ネットワーク機器のフローテーブルにエントリを登録する。すなわち、ここでいう「Ｒｅａｃｔｉｖｅ型」とは、実際のデータ通信時に、制御装置がネットワーク機器からの問い合わせに応じて行う「リアルタイムのエントリ登録」を指す。
【０１１４】
オープンフローネットワークでは、基本的に、制御装置がネットワーク機器から１ｓｔパケットについての問い合わせを受けた際に当該受信パケットに関するエントリを登録する「Ｒｅａｃｔｉｖｅ型」が中心となっている。
【０１１５】
本発明では、「Ｒｅａｃｔｉｖｅ型」を例に説明している。しかし、実際には、「Ｐｒｏａｃｔｉｖｅ型」を採用しても良い。例えば、今後到着が予想されるパケットの通信開始前に、制御装置が、ネットワーク機器及びサーバ機器からトポロジ情報及びパフォーマンスデータを収集し、現状の（又は過去の）トポロジ情報及びパフォーマンスデータに基づいて、今後到着が予想されるパケットの最適経路を計算し、該フローのエントリを、該当するネットワーク機器のフローテーブルに事前に登録しておくことが考えられる。この場合、制御装置は、ネットワーク機器からパケットの問い合わせを受けることなく、ネットワーク機器のフローテーブルに、フローのエントリを登録することができる。
【０１１６】
［本発明の特徴］
オープンフロー（ＯｐｅｎＦｌｏｗ）等を用いた集中管理型ネットワークシステムでは、柔軟なネットワーク制御により、ネットワークの運用性、効率性の向上が期待されている。
【０１１７】
本発明では、従来の通信経路を集中管理するネットワークシステムにおいて、ネットワーク機器の負荷状況、サーバ機器の負荷状況、アプリケーションの負荷状況も踏まえた上で最適経路を選択することを可能とする。また、最適経路の選択において、現在（最新）の情報だけでなく、過去の傾向から予測し、最適経路を選択可能とする。
【０１１８】
本発明では、従来の課題を以下の方法により解決する。
【０１１９】
（１）ネットワーク、サーバ等システムを構成する全ての機器を集中管理する制御装置が最適経路を計算し、通信経路をネットワーク機器に設定する。
【０１２０】
（２）ネットワークの輻輳状況、サーバやアプリケーションの負荷状況を判断し、最適な経路を決定する。
【０１２１】
（３）現状だけでなく、過去の輻輳状況、負荷状況から未来に起こり得る事象を判断し、最適経路を決定する。
【０１２２】
上記解決方法により、ネットワーク機器、サーバ機器を含めたアプリケーションレベル、サービスレベルで最適な経路を選択することが可能となる。また、過去のデータからの予測により、未来に起こり得る問題回避を考慮した経路を選択できる。結果として、各レイヤで個別最適するのではなく、システム全体として最適化された経路制御を可能とする。
【０１２３】
従来技術では、負荷状況に応じて経路を変更することができず、あふれたパケット廃棄されるか、又は、低優先のパケットは遅延が発生する等、大量のデータ転送に時間を要してしまうという問題があった。しかし、本発明では、最適条件として現在（最新）のＣＰＵ使用率、ＮＷ使用率を選択した場合は、短時間で多くのデータを伝送したいアプリケーション等（例えばファイル転送）に効果を発揮する。
【０１２４】
従来技術では、瞬間的に発生した他の通信に影響を受け、遅延等の問題が発生する場合があった。しかし、本発明では、最適条件としてＣＰＵ及びＮＷの平均使用率を選択した場合、データ量は少ないが、長時間通信が継続するアプリケーション等（例えばＩＰ電話）に効果を発揮する。平均使用率の低い経路を選択できれば、確率的に本問題を回避しやすい。
【０１２５】
また、従来技術では、各ネットワーク機器が自律的に経路を決定するため、アプリケーション毎に最適化された経路を選択することが困難であった。しかし、本発明では、フロー毎に経路を選択（指定）できるため、システム全体を効率的に使用することが可能である。
【０１２６】
例えば、ＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ：ファイル転送プロトコル）等の「瞬間的に大量に通信が発生するアプリケーション」のフローについては現在（最新）の使用率を最適条件として経路を決定し、ＩＰ電話（ＩＰ  ｔｅｌｅｐｈｏｎｙ）等のフローについては平均使用率を最適条件として経路を決定する等、アプリケーションに適した最適条件を指定して、最適経路を選択することが可能となる。
【０１２７】
また、従来技術では、サーバの負荷分散をするためにロードバランサを使用しており、全ての通信がロードバランサを経由する必要があるため、可用性、効率性が十分に確保することができないという課題があった。しかし、本発明では、サーバの負荷（ＣＰＵ使用率）を考慮した上で経路を選択できるため、ロードバランサ等を使用せずにサーバの負荷分散を行うことができる。
【０１２８】
＜付記＞
上記の実施形態の一部又は全部は、以下の付記のように記載することも可能である。但し、実際には、以下の記載例に限定されない。
【０１２９】
［付記１］
管理対象となるネットワーク機器と通信する第１の通信部と、
同一グループのサーバ群を形成し該サーバ群に割り当てられた仮想アドレスを共有するサーバ機器と通信する第２の通信部と、
ネットワーク機器及びサーバ機器の各々からパフォーマンスデータを収集し蓄積するデータ収集部と、
サーバ群を形成するサーバ機器の中から、サーバ機器のパフォーマンスデータを基に、最適なサーバ機器を選択するサーバ選択部と、
ネットワーク機器のパフォーマンスデータを基に、最適なサーバ機器に到達するための最適経路を決定する経路計算部と、
最適経路上のネットワーク機器に、該パケットをフローとして一律に制御するためのルールと最適経路上の次段のノードに仮想アドレス宛のパケットを転送する旨の動作とが定義されたエントリを登録するフロー制御部と
を具備する
制御装置。
【０１３０】
［付記２］
付記１に記載の制御装置であって、
サーバ選択部は、サーバ機器のパフォーマンスデータとして、サーバ機器の最新のＣＰＵ使用率及びＣＰＵ平均使用率のうち少なくとも一方を基に、最適なサーバ機器を選択し、
経路計算部は、ネットワーク機器のパフォーマンスデータとして、ネットワーク機器の最新のネットワーク使用率及びネットワーク平均使用率のうち少なくとも一方を基に、最適なサーバ機器に到達するための最適経路を決定する
制御装置。
【０１３１】
［付記３］
付記１又は２に記載の制御装置であって、
仮想アドレス宛のパケットの種類及びサーバが提供するサービスの内容に応じて、ネットワーク機器及びサーバ機器の各々のパフォーマンスデータとして使用するデータを定義した最適条件を変更する条件変更部と、
蓄積されたパフォーマンスデータの中から、最適条件に定義されたデータを選択するデータ選択部と
を更に具備し、
サーバ選択部は、最適条件に定義されたデータを基に、最適なサーバ機器を決定し、
経路計算部は、最適条件に定義されたデータを基に、最適経路を決定する
制御装置。
【０１３２】
［付記４］
管理対象となるネットワーク機器と通信するステップと、
同一グループのサーバ群を形成し該サーバ群に割り当てられた仮想アドレスを共有するサーバ機器と通信するステップと、
ネットワーク機器及びサーバ機器の各々からパフォーマンスデータを収集し蓄積するステップと、
サーバ群を形成するサーバ機器の中から、サーバ機器のパフォーマンスデータを基に、最適なサーバ機器を選択するステップと、
ネットワーク機器のパフォーマンスデータを基に、最適なサーバ機器に到達するための最適経路を決定するステップと、
最適経路上のネットワーク機器に、該パケットをフローとして一律に制御するためのルールと最適経路上の次段のノードに仮想アドレス宛のパケットを転送する旨の動作とが定義されたエントリを登録するステップと
を計算機に実行させるための
プログラム。
【０１３３】
［付記５］
付記４に記載のプログラムであって、
サーバ機器のパフォーマンスデータとして、サーバ機器の最新のＣＰＵ使用率及びＣＰＵ平均使用率のうち少なくとも一方を基に、最適なサーバ機器を選択するステップと、
ネットワーク機器のパフォーマンスデータとして、ネットワーク機器の最新のネットワーク使用率及びネットワーク平均使用率のうち少なくとも一方を基に、最適なサーバ機器に到達するための最適経路を決定するステップと
を更に計算機に実行させるための
プログラム。
【０１３４】
［付記６］
付記４又は５に記載のプログラムであって、
仮想アドレス宛のパケットの種類及びサーバが提供するサービスの内容に応じて、ネットワーク機器及びサーバ機器の各々のパフォーマンスデータとして使用するデータを定義した最適条件を変更するステップと、
蓄積されたパフォーマンスデータの中から、最適条件に定義されたデータを選択し、最適条件に定義されたデータを基に、最適なサーバ機器及び最適経路を決定するステップと
を更に計算機に実行させるための
プログラム。
【０１３５】
＜備考＞
以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
【０１３６】
なお、本出願は、日本出願番号２０１１−０１４０５３に基づく優先権を主張するものであり、日本出願番号２０１１−０１４０５３における開示内容は引用により本出願に組み込まれる。
【図１】
2012101890.tif 000003
【図２】
2012101890.tif 000004
【図３】
2012101890.tif 000005
【図４】
2012101890.tif 000006
【図５】
2012101890.tif 000007
【図６】
2012101890.tif 000008
【国際調査報告】
2012101890.tif 000009
2012101890.tif 000010
2012101890.tif 000011
2012101890.tif 000012