(57)【要約】【課題】アプリケーションへのポート番号の割り当て方式に影響されずにアプリケーション毎の統計情報の監視を可能とする。【解決手段】本発明によるコンピュータシステムは、受信したパケットデータを、自身に設定されたフローに従った宛先に転送するスイッチ４ｉと、スイッチ４ｉからのファーストパケットの受信通知に応じて、スイッチ４ｉに対するフローの設定を行うコントローラ３とを具備する。スイッチ４ｉは、コントローラ３に対して、ファーストパケットの受信通知を行うとともにパケットデータに含まれるポート番号を通知する。コントローラ３は、ポート番号を利用するアプリケーションのアプリケーション名をサーバ３から取得し、アプリケーション名とスイッチ３に設定したフローとを対応付けて記憶装置に記録する。【選択図】図１
2011082834.tif 000002
【特許請求の範囲】
【請求項１】
受信したパケットデータを、自身に設定されたフローに従った宛先に転送するスイッチと、
前記スイッチからのファーストパケットの受信通知に応じて、前記スイッチに対するフローの設定を行うコントローラと、
アプリケーションを有するサーバと、
を具備し、
前記スイッチは、受信したパケットデータが、自身に設定されたフローに示されたルールに適合しない場合、前記コントローラに対して、ファーストパケットの受信通知を行うとともに前記パケットデータに含まれるポート番号を通知し、
前記コントローラは、前記ポート番号を利用するアプリケーションのアプリケーション名を前記サーバから取得し、前記アプリケーション名と前記スイッチに設定したフローとを対応付けて記憶装置に記録する
コンピュータシステム。
【請求項２】
請求項１に記載のコンピュータシステムにおいて、
前記サーバは、前記コントローラから通知されたポート番号をキーとして前記通知されたポート番号が割り当てられたアプリケーションを特定し、特定したアプリケーションのアプリケーション名を前記コントローラに通知するアプリ特定エージェントを備える
コンピュータシステム。
【請求項３】
請求項１又は２に記載のコンピュータシステムにおいて、
前記スイッチは、前記ファーストパケットの受信通知の際、受信パケットに含まれるポート番号とＩＰアドレスを前記コントローラに通知し、
前記コントローラは、前記ＩＰアドレスに基づいて決定したサーバから前記ポート番号に対応するアプリケーション名を取得する
コンピュータシステム。
【請求項４】
請求項１から３のいずれか１項に記載のコンピュータシステムにおいて、
前記スイッチは、自身に設定されたフローに対応するパケットデータに関する統計情報を前記コントローラに通知し、
前記コントローラは、前記統計情報を、前記スイッチに設定したフローに対応するアプリケーションに対応付けて前記記憶装置に記録する
コンピュータシステム。
【請求項５】
請求項１から４のいずれか１項に記載のコンピュータシステムにおいて、
前記コントローラは、前記サーバから取得したアプリケーション名に基づいて、前記スイッチにおける前記受信パケットの送信先回線を決定し、前記送信先回線に応じたフローを前記スイッチに設定する
コンピュータシステム。
【請求項６】
請求項１から５のいずれか１項に記載のコンピュータシステムにおいて、
前記サーバ宛に、前記スイッチを介してパケットデータを送信するクライアント端末を更に具備し、
前記サーバは、前記クライアント端末との間におけるセッションの確立時毎に、前記アプリケーションに対してポート番号を動的に割り当てる
コンピュータシステム。
【請求項７】
請求項１から６のいずれか１項に記載のコンピュータシステムで利用されるコントローラ。
【請求項８】
受信したパケットデータを、自身に設定されたフローに従った宛先に転送するスイッチと、
前記スイッチからのファーストパケットの受信通知に応じて、前記スイッチに対するフローの設定を行うコントローラと
を具備するコンピュータシステムにて実行されるコンピュータシステムの監視方法において、
前記スイッチが、受信したパケットデータが、自身に設定されたフローに示されたルールに適合しない場合、前記コントローラに対して、ファーストパケットの受信通知を行うとともに前記パケットデータに含まれるポート番号を通知するステップと、
前記コントローラが、前記ポート番号を利用するアプリケーションのアプリケーション名をサーバから取得するステップと、
前記コントローラが、前記アプリケーション名と前記スイッチに設定したフローとを対応付けて記憶装置に記録するステップと
を具備する
コンピュータシステムの監視方法。
【請求項９】
請求項８に記載のコンピュータシステムの監視方法において、
前記アプリケーション名を取得するステップは、
前記サーバが、前記コントローラから通知されたポート番号をキーとして前記通知されたポート番号が割り当てられたアプリケーションを特定するステップと、
前記サーバが、特定したアプリケーションのアプリケーション名を前記コントローラに通知するステップと
を備える
コンピュータシステムの監視方法。
【請求項１０】
請求項８又は９に記載のコンピュータシステムの監視方法において、
前記スイッチが、前記ファーストパケットの受信通知の際、受信パケットに含まれるポート番号とＩＰアドレスを前記コントローラに通知するステップを更に具備し、
前記アプリケーション名を取得するステップは、
前記コントローラが、前記ＩＰアドレスに基づいて、アプリケーション名を要求する対象のサーバを決定するステップと
を備える
コンピュータシステムの監視方法。
【請求項１１】
請求項８から１０のいずれか１項に記載のコンピュータシステムの監視方法において、
前記スイッチが、自身に設定されたフローに対応するパケットデータに関する統計情報を前記コントローラに通知するステップと、
前記コントローラが、前記統計情報を、前記スイッチに設定したフローに対応するアプリケーションに対応付けて前記記憶装置に記録するステップと
を更に具備する
コンピュータシステムの監視方法。
【請求項１２】
請求項８から１１のいずれか１項に記載のコンピュータシステムの監視方法において、
前記コントローラが、前記サーバから取得したアプリケーション名に基づいて、前記スイッチにおける前記受信パケットの送信先回線を決定するステップと、
前記コントローラが、前記送信先回線に応じたフローを前記スイッチに設定するステップと
を更に具備する
コンピュータシステムの監視方法。
【請求項１３】
請求項８から１２のいずれか１項に記載のコンピュータシステムの監視方法において、
クライアント端末が、前記サーバ宛に、前記スイッチを介してパケットデータを送信するステップと、
前記サーバが、前記クライアント端末との間におけるセッションの確立時毎に、前記アプリケーションに対してポート番号を動的に割り当てるステップと
を更に具備する
コンピュータシステムの監視方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステム、及びコンピュータシステムの監視方法に関し、特に、アプリケーション毎の通信トラフィックを監視する方法に関する。
【背景技術】
【０００２】
近年、ネットワークにおける回線毎の統計情報を収集し、これを監視することで、コンピュータシステム内で発生する障害の復旧や負荷分散等の対応を行うことが可能となっている。このような、統計情報の監視は、回線毎のみならずアプリケーション単位で実行できることが望まれている。
【０００３】
例えば、特開２０００−２０９２００には、パケットから抽出したポート番号とフローテーブルとによって通信フローを特定し、そのトラフィック量を監視（品質監視や課金）する装置が記載されている（特許文献１参照）。特許文献１には、ポート番号によってアプリケーションを識別することで、アプリケーションの使用状況に応じた課金が可能であることが記載されている。
【０００４】
又、特開２００８−７２４９６には、パケットデータのヘッダ情報に基づいてアプリケーションプロトコル、パケットの送信元及び送信先を判別し、アプリケーション別にトラフィック量や統計情報を集計する監視システムが記載されている（特許文献２参照）。
【０００５】
更に、特開２００５−５１７３６では、フローテーブルに設定されたＴＣＰ／ＵＤＰ等のプロトコル種別、ＴＣＰ／ＩＰポート番号、あるいはＩＰアドレス等の組み合わせ（ルール）に対応するパケットデータの統計情報を収集することで、アプリケーション毎の統計情報を監視することを可能としている（特許文献３参照）。
【０００６】
一方、アプリケーション間通信で利用されるポート番号は、予め設定されている場合もあるが、セッション確立時において任意に設定される場合がある。このようにポート番号が任意に設定される場合、パケットのヘッダ情報に含まれるポート番号によってトラフィックを識別するシステムでは、ポート番号によってアプリケーションを特定することができない。例えば、１つのアプリケーションが複数のアプリケーションと通信を行う場合、送信元又は送信先のポート番号は任意に設定されることとなる。このような場合、従来技術では、アプリケーション間のトラフィック量等を回線単位で監視することはできても、アプリケーション単位で監視することはできない。従来技術において、監視対象回線とアプリケーションを対応づけるためには、ネットワーク上に回線トレース等を設置し、これによる解析により監視対象回線に対応するアプリケーションを特定する必要がある。
【０００７】
任意に設定されるポート番号によって、監視対象のアプリケーションを特定する方法が、例えば、特開２００８−２１９３８３に記載されている（特許文献４参照）。特許文献４には、利用端末間におけるアプリケーション通信を、各利用端末に任意に割り当てたポート番号を利用して特定する技術が記載されている。ここでは、アプリケーション制御装置によってアプリケーションに割り当てられたポート番号が、マネージャ装置を介して収集プローブ装置に通知される。収集プローブ装置は通知されたポート番号を含むパケットデータを監視することで、アプリケーション毎のトラフィック量等を監視することが可能となる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０００−２０９２００
【特許文献２】特開２００８−７２４９６
【特許文献３】特開２００５−５１７３６
【特許文献４】特開２００８−２１９３８３
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特許文献４に記載の技術では、システム内の全ての収集プローブ装置に対して、監視対象となるアプリケーションを特定する情報（例えばポート番号）を通知しなければならない。又、マネージャ装置は、ポート番号がアプリケーションに割り当られる度に、全ての収集プローブ装置にポート番号を通知する。
【００１０】
上述のように、セッションの確立において任意のポート番号がアプリケーションに割り当てられるコンピュータシステムの場合、新たなアプリケーション間通信が発生する度に、システム内の全ての収集プローブ装置にポート番号が通知される。すなわち、新たなアプリケーション間通信の発生に応じて、当該アプリケーション通信に関係のないトラフィックを監視する収集プローブ装置に対してもポート番号が通知される。この収集プローブ装置は、当該ポート番号を含むパケットデータが通過することがなくても、パケットデータが通過する度に、当該ポート番号を含むかどうかを判定する必要がある。このように、従来技術におけるマネージャ装置や収集プローブ装置の処理量は大きくなるため、処理能力の高いマネージャ装置や収集プローブを用意する必要がある。このため、従来技術を用いた場合、システム全体のコストが増加してしまう。
【００１１】
又、収集プローブ装置をスイッチに搭載した場合、上述と同様に、アプリケーション通信によるトラフィックが通過しないスイッチにもポート番号が通知され、当該スイッチは、通過しないパケットデータに対する監視処理を行わなければならない。特に、システム規模が大きく、監視対象となるアプリケーションの数やスイッチ（収集プローブ装置）の数が多くなる場合、ポート番号の通知に要する処理量や、スイッチ（収集プローブ装置）毎の無駄な監視量（通過しないトラフィックに対する監視量）は膨大な量となる。
【００１２】
以上のことから、本発明の目的は、アプリケーションへのポート番号の割り当て方式に影響されずにアプリケーション毎の統計情報を監視できるコンピュータシステムを提供することにある。
【００１３】
本発明の他の目的は、不要な監視処理を省略しつつアプリケーション毎の統計情報を監視するコンピュータシステムを提供することにある。
【課題を解決するための手段】
【００１４】
上記の課題を解決するために、本発明は、以下に述べられる手段を採用する。その手段を構成する技術的事項の記述には、［特許請求の範囲］の記載と［発明を実施するための形態］の記載との対応関係を明らかにするために、［発明を実施するための形態］で使用される番号・符号が付加されている。ただし、付加された番号・符号は、［特許請求の範囲］に記載されている発明の技術的範囲を限定的に解釈するために用いてはならない。
【００１５】
本発明によるコンピュータシステムは、受信したパケットデータを、自身に設定されたフローに従った宛先に転送するスイッチ（４ｉ）と、スイッチ（４ｉ）からのファーストパケットの受信通知に応じて、スイッチ（４ｉ）に対するフローの設定を行うコントローラ（３）と、アプリケーション（１０１）を有するサーバ（１）とを具備する。スイッチ（４ｉ）は、受信したパケットデータが、自身に設定されたフローに示されたルール（４４４）に適合しない場合、コントローラ（３）に対して、ファーストパケットの受信通知を行うとともにパケットデータに含まれるポート番号を通知する。コントローラ（３）は、ポート番号を利用するアプリケーションのアプリケーション名をサーバ（１）から取得し、アプリケーション名とスイッチ（４ｉ）に設定したフローとを対応付けて記憶装置に記録する。
【００１６】
本発明によるコンピュータシステムの監視方法は、受信したパケットデータを、自身に設定されたフローに従った宛先に転送するスイッチ（４ｉ）と、スイッチ（４ｉ）からのファーストパケットの受信通知に応じて、スイッチ（４ｉ）に対するフローの設定を行うコントローラ（３）とを具備するコンピュータシステムにて実行される。
本発明によるコンピュータシステムの監視方法は、スイッチ（４ｉ）が、受信したパケットデータが、自身に設定されたフローに示されたルールに適合しない場合、コントローラ（３）に対して、ファーストパケットの受信通知を行うとともにパケットデータに含まれるポート番号を通知するステップと、
コントローラ（３）が、ポート番号を利用するアプリケーションのアプリケーション名をサーバから取得するステップと、コントローラが、アプリケーション名とスイッチ（４ｉ）に設定したフローとを対応付けて記憶装置に記録するステップとを具備する。
【００１７】
本発明では、アプリケーションに割り当てられたポート番号が未知であっても、スイッチを通過するファーストパケットの通知によって得られたポート番号を利用してアプリケーションを特定することができる。このため、アプリケーションに対してポート番号が動的に割り当てられても、本発明によるコントローラ（３）は、当該アプリケーションとパケット転送を制御するフローとを対応付けることが可能となる。
【発明の効果】
【００１８】
以上のことから、本発明によれば、アプリケーションへのポート番号の割り当て方式に影響されずにアプリケーション毎の統計情報を監視することができる。
【００１９】
又、フロー毎に統計情報を収集することが可能となるため、不要な監視処理を省略しつつアプリケーション毎の統計情報を監視することができる。
【図面の簡単な説明】
【００２０】
【図１】図１は、本発明によるコンピュータシステムの実施の形態における構成を示す図である。
【図２】図２は、本発明によるオープンフローコントローラの構成を示す図である。
【図３】図３は、本発明によるオープンフローコントローラが保持するフローテーブルの構成の一例を示す図である。
【図４】図４は、本発明によるオープンフローコントローラが保持するアプリ／ポート対応テーブルの構成の一例を示す図である。
【図５】図５は、本発明によるオープンフローコントローラが保持する統計テーブルの構成の一例を示す図である。
【図６】図６は、本発明に係るオープンフロースイッチの構成を示す図である。
【図７】図７は、本発明によるスイッチが保持するフローテーブルの一例を示す図である。
【図８】図８は、本発明によるスイッチが保持する統計テーブルの構成の一例を示す図である。
【図９】図９は、本発明に係るオープンフロー制御を説明するための図である。
【図１０】図１０は、本発明によるシステム監視のための準備処理の動作を示すシーケンス図である。
【図１１】図１１は、本発明によるシステム監視のための統計情報取得処理の動作を示すシーケンス図である。
【図１２】図１２は、第１の実施例におけるアプリケーション間通信の監視方法を説明する図である。
【図１３】図１３は、第２の実施例におけるアプリケーション間通信の監視方法を説明する図である。
【図１４】図１４は、第３の実施例におけるアプリケーション間通信の監視方法を説明する図である。
【発明を実施するための形態】
【００２１】
以下、添付図面を参照しながら本発明の実施の形態を説明する。図面において同一、又は類似の参照符号は、同一、類似、又は等価な構成要素を示す。
【００２２】
（コンピュータシステムの構成）
図１から図９を参照して、本発明によるコンピュータシステムの構成を説明する。図１は、本発明によるコンピュータシステムの構成を示す図である。本発明によるコンピュータシステムは、オープンフローコントローラ３（以下、ＯＦＣ３と称す）、スイッチ群４を含むネットワークを介して接続されたサーバ１及びクライアント端末２を具備する。クライアント端末２は、スイッチ群４を介して当該コンピュータシステムに接続された外部ネットワーク（例示：インターネット）内に設けられても構わない。スイッチ群４は少なくとも１つのオープンフロースイッチ４ｉ（以下、ＯＦＳ４ｉと称す）を備える。
【００２３】
サーバ１及びクライアント端末２は、複数設けられることが好ましい。図１では、説明を簡単化するため、サーバ１及びクライアント端末２が１つの形態を示している。サーバ１やクライアント端末２が複数ある場合、それぞれはスイッチ群４を介して相互に接続される。又、ＯＦＣ３も１つとは限らず複数設けられても良い。この場合、制御対象となるスイッチ群４やサーバ１はＯＦＣ３毎に決められていても構わない。更に、後述するがクライアント端末２とスイッチ群との間には、複数のサーバ１に対して負荷分散を行うロードバランサ５が設けられていても構わない。
【００２４】
サーバ１は、図示しないＣＰＵ、主記憶装置、及び外部記憶装置を備えるコンピュータ装置であり、外部記憶装置に格納されたプログラムを実行することで、アプリ特定エージェント１０や、複数のアプリケーション１０１、１０２の機能を実現する。以下では、アプリケーションソフトウェアを実行することで実現される機能を、アプリケーション１０１、１０２と称して説明する。サーバ１は、アプリケーション１０１、１０２に応じて、その働きを異にし、Ｗｅｂサーバ、ファイルサーバ、アプリケーションサーバ等に例示される機能を実現する。例えば、サーバ１がＷｅｂサーバとして機能する場合、アプリケーション１０１、１０２は、クライアント端末２のアプリケーション２０１（例示：Ｗｅｂブラウザ）の要求に従い、記憶装置（図示なし）内のＨＴＭＬ文書や画像データをクライアント端末２に転送する。又、アプリケーション１０１、１０２は、クライアント端末（アプリケーション２０１）からの要求に応じて、各種処理を実行し、各種データの生成や、データベースと連携したトランザクション処理を行っても良い。
【００２５】
アプリケーション１０１、１０２は、クライアント端末２（アプリケーション２０１）との間において、ＴＣＰ又はＵＤＰによる通信を行うことが好ましい。この場合、サーバ１とクライアント端末２との間でセッションを確立する際、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）によりアプリケーション１０１、１０２、２０１に対してポート番号（０〜６５５３５番のいずれか）が割り当てられる。ポート番号の割り当て方法は、予め決められたポート番号（予約ポート番号）を固定的に割り当てる方法や、予約ポート番号又は非公式ポート番号をセッション確立毎に動的に割り当てる方法がある。
【００２６】
サーバ・クライアントモデルにおけるアプリケーション間通信では、通常、最初にクライアント側からサーバ側にパケットデータが送信される。このため、サーバ１のアプリケーション１０１、１０２には予約ポート番号が固定的に割り当てられていることが好ましい。例えば、サーバ１のアプリケーション１０１には、その機能に応じたウェルノウンポート番号（０〜１０２３番のいずれか）が割り当てられる。あるいは、サーバ１のアプリケーション１０１、１０２には、１０２４−４９１５１番のいずれかが登録済みポートとして固定的に割り当てられていても構わない。更に、アプリケーション１０１、１０２には、プライベートポート番号として、４９１５２〜６５５３５番のいずれかが動的に割り当てられても良い。
【００２７】
アプリ特定エージェント１０は、ＯＦＣ３から通知されたポート番号をキーとして、当該ポート番号が割り当てられているアプリケーション名（以下、アプリ名と称す）を特定する。通知アプリ特定エージェント１０は、特定したアプリ名をＯＦＣ３に送信する。詳細には、サーバ１上のＯＳによってアプリケーション１０１、１０２に割り当てられたポート番号は、そのプロセス毎に対応付けられたテーブルとしてサーバ１内の記憶装置に記録されている（図示なし）。アプリ特定エージェント１０は、このテーブルを参照して、通知されたポート番号に対応するプロセスＩＤに応じたアプリケーション名を抽出し、ＯＦＣ３に送信する。この際、ＯＦＣ３から通知されるプロトコル識別子に応じてレイヤ４の使用プロトコル（例えばＴＣＰ又ＵＤＰ）を識別する。
【００２８】
ＯＦＣ３は、オープンフロー技術により、システム内の通信を制御する。オープンフロー技術とは、コントローラ（ここではＯＦＣ３）が、ルーティングポリシー（フロー：ルール＋アクション）に従い、マルチレイヤ及びフロー単位の経路情報をスイッチに設定し、経路制御やノード制御を行う技術を示す。これにより、経路制御機能がルータやスイッチから分離され、コントローラによる集中制御によって最適なルーティング、トラフィック管理が可能となる。オープンフロー技術が適用されるスイッチ（ＯＦＳ４ｉ）は、従来のルータやスイッチのようにパケットやフレームの単位ではなく、ＥＮＤ２ＥＮＤのフローとして通信を取り扱う。
【００２９】
詳細には、ＯＦＣ３は、スイッチやノード毎にフロー（ルール＋アクション）を設定することで当該スイッチやノードの動作（例えばパケットデータの中継動作）を制御する。ここで、ＯＦＣ３によって制御されるスイッチは、ＯＦＳ４ｉや仮想スイッチ等に例示され、ＯＦＣ３によって制御されるノードは、サーバ１やサーバ１上で動作する仮想マシン等に例示される。
【００３０】
図２は、本発明によるＯＦＣ３の構成を示す図である。ＯＦＣ３は、ＣＰＵ及び記憶装置を備えるコンピュータによって実現されることが好適である。ＯＦＣ３では、図示しないＣＰＵが記憶装置に格納されたプログラムを実行することで、図２に示すスイッチ制御部３３１、フロー管理部３３２、フロー生成部３３３の各機能が実現される。
【００３１】
スイッチ制御部３３１は、フローテーブル３３４に従ってスイッチやノード毎にフロー（ルール＋アクション）の設定又は削除を行う。本発明に係るＯＦＳ４ｉは、設定されたフローを参照し、受信パケットのヘッダ情報に応じたルールに対応するアクション（例えばパケットデータの中継や破棄）を実行する。ルール及びアクションの詳細は後述する。
【００３２】
図３は、本発明によるＯＦＣ３が保持するフローテーブル３３４の構成の一例を示す図である。図３を参照して、フローテーブル３３４には、フローを特定するためのフロー識別子４４１、当該フローの設定対象（スイッチやノード）を識別する識別子（対象装置４４２）、経路情報４４３、ルール４４４、アクション情報４４５、設定情報４４６が対応付けられて設定される。フローテーブル３３４には、ＯＦＣ３の制御対象となる全てのスイッチやノードに対するフロー（ルール４４４＋アクション情報４４５）が設定される。フローテーブル３３４には、フロー毎のＱｏＳや暗号化に関する情報など、通信の扱い方が定義されてもかまない。
【００３３】
ルール４４４には、例えば、ＴＣＰ／ＩＰのパケットデータにおけるヘッダ情報に含まれる、ＯＳＩ（Ｏｐｅｎ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ）参照モデルのレイヤ１からレイヤ４のアドレスや識別子の組み合わせが規定される。例えば、図９に示すレイヤ１の物理ポート、レイヤ２のＭＡＣアドレス、レイヤ３のＩＰアドレス、レイヤ４のポート番号、ＶＬＡＮタグのそれぞれの組み合わせがルール４４４として設定される。ここで、ルール４４４に設定されるポート番号等の識別子やアドレス等は、所定の範囲が設定されても構わない。又、宛先や送信元のアドレス等を区別してルール４４４として設定されることが好ましい。例えば、ＭＡＣ宛先アドレスの範囲や、接続先のアプリケーションを特定する宛先ポート番号の範囲、接続元のアプリケーションを特定する送信元ポート番号の範囲がルール４４４として設定される。更に、データ転送プロトコルを特定する識別子をルール４４４として設定してもよい。
【００３４】
アクション情報４４５には、例えばＴＣＰ／  ＩＰのパケットデータを処理する方法が規定される。例えば、受信パケットデータを中継するか否かを示す情報や、中継する場合はその送信先が設定される。又、アクション情報４４５には、パケットデータの複製や、破棄することを指示する情報が設定されてもよい。
【００３５】
経路情報４４３は、フロー（ルール４４４＋アクション情報４４５）を適用する経路を特定する情報である。これは、通信経路情報に対応付けられた識別子である。
【００３６】
設定情報４４６は、フロー（ルール４４４＋アクション情報４４５）が現在設定されているか否かを示す情報である。設定情報４４６は、対象装置４４２や経路情報４４３に対応付けられているため、通信経路毎にフローが設定されているか否かを確認できるとともに、通信経路上のスイッチやノード毎にフローが設定されているか否かを確認することができる。又、設定情報４４６は、生成されたフローが使用可能な状態（有効）か使用不可能な状態（無効）かを示す情報を含む。ＯＦＣ３は、設定情報４４６を参照し、有効なフローのみをＯＦＳに設定し、無効なフローは設定しない。
【００３７】
フロー管理部３３２は、フローテーブル３３４を参照して、ＯＦＳ４ｉから通知されたファーストパケットのヘッダ情報に対応するフロー（ルール４４４＋アクション情報４４５）を抽出し、スイッチ制御部３３１に通知する。ここで、ファーストパケットとは、ＯＦＳ４ｉで受信されるパケットのうち、ＯＦＳ４ｉに設定されたフローに適合しないヘッダ情報を持つパケットを示す。ＯＳＦ４ｉからファーストパケットの通知とともに送信されるヘッダ情報は、スイッチの受信ポート、ＶＬＡＮ番号、送信元ＭＡＣアドレス、宛先ＭＡＣアドレス、Ｅｔｈｅｒｎｅｔ（登録商標）タイプ情報  （上位プロトコルの種類。例示：ＩＰ，  ＡＲＰ，  ＩＰＸ等を識別する識別子）、送信元ＩＰアドレス、宛先ＩＰアドレス、Ｌ４プロトコル情報  （上位プロトコルの種類。例示：ＴＣＰ，  ＵＤＰ，  ＩＣＭＰ等を識別する識別子）、送信元ＴＣＰ／ＩＰポート番号、宛先ＴＣＰ／ＩＰポート番号を含む。フロー管理部３３２は、通知されたヘッダ情報内の送信元ＭＡＣアドレス、宛先ＭＡＣアドレス、送信元ＩＰアドレス、宛先ＩＰアドレスに基づいて、当該ＯＦＳ４ｉが受信したファーストパケットの送信元と送信先の装置を特定する。そして、フロー管理部３３２は、特定した装置間の通信経路やトポロジを参照してＯＦＳ４ｉの処理すべきアクションを決定し（アクションが中継動作の場合は送信先の決定を含む）、当該ＯＦＳｉに対応するフローをフローテーブル３３４から抽出する。
【００３８】
ＯＦＳ４ｉから通知されたヘッダ情報に基づいて特定した装置間の通信に関するフローが、フローテーブル３３４に存在しない場合、フロー管理部３３２は、フロー生成部３３３にフローの生成を指示してもよい。フロー管理部３３２は、フロー生成部３３３によって生成されたフロー（ルール４４４＋アクション情報４４５）にフロー識別子４４１をつけて記憶装置（フローテーブル３３４）に記録する。この際、フローを適用する通信経路の識別子（経路情報４４３）やフローを適用するスイッチやノードの識別子（対象装置４４２）が、フロー（ルール４４４＋アクション情報４４５）に付されて記録される。その後、フロー管理部３３２は、新たに生成されたフローをＯＦＳ４ｉに設定するフローとしてスイッチ制御部３３１に通知する。
【００３９】
スイッチ制御部３３１は、フロー管理部３３２によってフローテーブル３３４から抽出されたフローを、ファーストパケットの通知元であるＯＦＳ４ｉに設定する。
【００４０】
ファーストパケットの通知を受けたフロー管理部３３２は、ＯＦＳ４ｉから通知されるヘッダ情報をキーとして、当該ＯＦＳ４ｉに新規に設定するフローに対応するアプリケーション名をサーバ１から取得する。上述のように、フロー管理部３３２は、ヘッダ情報に基づいてＯＦＳ４ｉが受信したファーストパケットの送信元と送信先の装置を特定する。例えば、宛先ＭＡＣアドレス及び宛先ＩＰアドレスに基づいて、クライアント端末２の接続先となるサーバ１を特定する。ヘッダ情報から特定したサーバ１のアプリ特定エージェント１０に対して、アプリケーションの特定指示を発行するとともに、通知されたヘッダ情報内の送信元ＴＣＰ／ＩＰポート番号及び宛先ＴＣＰ／ＩＰポート番号の一方又は両方と、Ｌ４プロトコル情報（プロトコル識別子）とを送信する。そして、フロー管理部３３２は、アプリ特定エージェント１０から特定指示の返信としてアプリケーション名（アプリ名）を取得する。フロー管理部３３２は、当該ファーストパケットの通知に応じて、上述のようにＯＦＳ４ｉに設定したフローと、アプリ特定エージェント１０から取得したアプリ名とを対応付けてアプリ／フロー対応テーブル３３５に記録する。アプリ／フロー対応テーブル３３５には、図４に示すように、フロー毎に付与されたフロー識別子４４１と、アプリ名４５１とが対応付けられて記録される。
【００４１】
フロー管理部３３２は、更に、フロー毎の統計情報をＯＦＳ群４から収集する機能を有する。詳細には、図５を参照して、フロー管理部３３２は、ＯＦＳ４ｉから送信される統計情報４５２（例えばトラフィック量）を、フロー毎（フロー識別子４４１毎）に統計テーブル３３６に記録する。収集された統計情報４５２はフロー識別子４４１に対応付けられているため、統計テーブル３３６とアプリ／フロー対応テーブル３３５とをリンクさせることで、アプリケーション毎の統計情報を集計することができる。又、図５に示すように、統計情報４５２は、当該統計情報４５２を通知したＯＦＳ４ｉを特定する情報（スイッチ情報４５３）に対応付けられても良い。これにより、スイッチ毎の統計情報を把握することが可能となる。スイッチ情報４５３には、ＯＦＳ４ｉから通知されるスイッチの受信ポートを含んでも良い。これによりＯＦＳ４ｉの受信ポート毎の統計情報を監視することが可能となる。
【００４２】
ＯＦＣ３は、システム全体、あるいはアプリケーション毎の統計情報を視認可能に表示する出力装置（モニタ）を備えることが好ましい。又、このような統計情報をアプリケーション毎に集計する機能や出力装置は、ＯＦＣ３とは別の監視装置（図示なし）に搭載されても良い。
【００４３】
フロー生成部３３３は、トポロジ情報を用いて通信経路を算出し、算出結果を通信経路情報として記憶装置に記録する。ここでは、通信経路の端点となるノードと、通信経路上のスイッチ及びノードが設定される。又、フロー生成部３３３は、通信経路情報に基づいて通信経路上のスイッチやノードに設定するフロー（ルール４４４＋アクション情報４４５）を設定する。
【００４４】
トポロジ情報は、ＯＦＳ４ｉやノード（例えば、サーバ１、クライアント端末２、サーバ上１で動作する仮想サーバ等）、外部ネットワーク（例えばインターネット）等の接続状況に関する情報を含む。具体的には、トポロジ情報として、スイッチやノード（装置）を特定する装置識別子に、当該装置のポート数やポート接続先情報が対応付けられて記憶装置に記録される。ポート接続先情報は、接続相手を特定する接続種別（スイッチ／ノード／外部ネットワーク）や接続先を特定する情報（スイッチの場合はスイッチＩＤ、ノードの場合はＭＡＣアドレス、外部ネットワークの場合は外部ネットワークＩＤ）が含まれる。
【００４５】
通信経路情報は、通信経路を特定するための情報である。詳細には、通信経路情報として、ノード（例えば、サーバ１、クライアント端末２等）群、あるいは、外部ネットワークインタフェースを端点として指定する端点情報と、通過するＯＦＳ４ｉとポートの対群を指定する通過スイッチ情報とが対応付けられて記憶装置に記録される。例えば、通信経路がサーバ１とクライアント端末２とを接続する経路である場合、サーバ１とクライアント端末２のそれぞれのＭＡＣアドレスが端点情報として記録される。通過スイッチ情報は、端点情報で示される端点間の通信経路上に設けられるＯＦＳ４ｉの識別子を含む。又、通過スイッチ情報は、ＯＦＳ４ｉに設定されるフロー（ルール４４４＋アクション情報４４５）と当該ＯＦＳ４ｉとを対応づけるための情報を含んでも良い。
【００４６】
図６は、本発明に係るオープンフロースイッチ４ｉ（ＯＦＳ４ｉ）の構成を示す図である。ＯＦＳ４ｉは、ＯＦＣ３によって設定されたフローテーブル３４３に従って受信パケットの処理方法（アクション）を決定する。ＯＦＳ４ｉは、転送処理部３４１とフロー管理部３４２を備える。転送処理部３４１とフロー管理部３４２は、ハードウェアで構成されても、ＣＰＵによって実行されるソフトウェアで実現してもどちらでも良い。
【００４７】
ＯＦＳ４ｉの記憶装置には、図７に示すようなフローテーブル３４３が設定される。フロー管理部３４２は、ＯＦＣ３から取得したフロー（ルール４４４＋アクション情報４４５）をフローテーブル３４３に設定する。又、転送処理部３４１によって受信された受信パケットのヘッダ情報が、フローテーブル３４３に記録されたルール４４４に適合（一致）する場合、フロー管理部３４２は、当該ルール４４４に対応するアクション情報４４５を転送処理部３４１に通知する。一方、転送処理部３４１によって受信された受信パケットのヘッダ情報が、フローテーブル３４３に記録されたルール４４４に適合（一致）しない場合、フロー管理部３４２は、受信パケットをファーストパケットと認識し、当該ファーストパケットを受信したことをＯＦＣ３に通知するとともに、当該ヘッダ情報をＯＦＣ３に送信する。
【００４８】
転送処理部３４１は、受信パケットのヘッダ情報に応じた転送処理を行う。詳細には、転送処理部３４１は、受信したパケットデータからヘッダ情報を抽出し、フロー管理部３４２に通知する。フロー管理部３４２からアクション情報４４５を受け取ると、アクション情報４４５に従った処理を行う。例えば、アクション情報４４５に示された転送先のノードに受信パケットデータを転送する。又、フローテーブル３４３に規定されたルール４４４にないパケットデータが受信した場合、当該パケットデータを所定の期間保持し、ＯＦＣ３からフローが設定される（フローテーブル３４３が更新される）まで待機する。
【００４９】
具体例として、ルール４４４：ＭＡＣ送信元アドレス（Ｌ２）が“Ａ１〜Ａ３”、ＩＰ宛先アドレス（Ｌ３）が“Ｂ１〜Ｂ３”、プロトコルが“ＴＣＰ”、宛先ポート番号（Ｌ４）が“Ｃ１〜Ｃ３”と、アクション情報４４５：“サーバ１のアプリケーション１０１に中継”とが対応付けられているフローが設定されたＯＦＳ４ｉの動作を説明する。ＭＡＣ送信元アドレス（Ｌ２）が“Ａ１”、ＩＰ宛先アドレス（Ｌ３）が“Ｂ２”、プロトコルが“ＴＣＰ”、宛先ポート番号（Ｌ４）が“Ｃ３”であるパケットデータを受信した場合、ＯＦＳ４ｉは、ヘッダ情報が当該ルール４４４に一致していると判断し、受信したパケットデータをアプリケーション１０１に転送する。一方、ＭＡＣ送信元アドレス（Ｌ２）が“Ａ５”、ＩＰ宛先アドレス（Ｌ３）が“Ｂ２”、プロトコルが“ＴＣＰ”、宛先ポート番号（Ｌ４）が“Ｃ４”であるパケットデータを受信した場合、ＯＦＳ４ｉは、ヘッダ情報が当該ルール４４４に一致しないと判断し、ファーストパケット受信の旨をＯＦＣ３に通知するとともに当該ヘッダ情報をＯＦＣ３に送信する。ＯＦＣ３は、フローテーブル３３４から受信したヘッダ情報に対応するフロー（ルール４４４＋アクション情報４４５）を抽出し、ＯＦＳ４ｉに送信する。尚、フローテーブル３３４に適切なフローがない場合は、新たにフローを作成してもよい。ＯＦＳｉ４ｉは送信されたフローを自身のフローテーブル３４３に設定し、これに従った、受信パケットの中継処理を実行する。
【００５０】
通常、ＯＦＳ４ｉに設定されるフローは所定の時間が経過するとフローテーブル３４３から削除される（削除されるまでの時間は、ＯＦＣ３によってフローとともにＯＦＳ４ｉに設定される）。
【００５１】
ＯＦＳ４ｉは、トラフィック監視機能を有していても良い。詳細には、図８を参照して、ＯＦＳ４ｉは、所定の期間中にフローテーブル３４３に従ったパケット処理量（処理回数、例示：転送回数）やデータ長等の情報を、フロー毎に統計情報４５２（例えばトラフィック量）として統計テーブル３４４に記録する。そして、所定の周期毎又は、ＯＦＣ３からの指示に応じて記録したフロー毎の統計情報４５２をＯＦＣ３に送信する。この際、統計情報４５２は、これに対応するフロー識別子４４１とともにＯＦＣ３に送信される。例えば、ＯＦＣ３の指示に応じて統計情報を送信する場合、ＯＦＣ３から送信対象となるフロー識別子が示され、これに応じたフローに対応する統計情報４５２をＯＦＣ３に送信する。ＯＦＳ４ｉにおける記憶容量を考慮して、送信された統計情報は統計テーブル３４４から削除されることが好ましい。
【００５２】
例えば、ｓＦｌｏｗでは、所定のサンプリング周期で取得されたパケットを解析することで、フロー毎の統計情報を求めている。この場合、データ転送のタイミングによっては、実際のトラフィック状況と異なる結果となる場合がある。一方、本発明によるＯＦＳ４ｉは、フローに応じた処理毎に、パケットに関するデータを取得し、これを用いて統計情報を求めているため、監視対象のフローに対する実際のトラフィック状況に応じた統計情報を得ることができる。又、ＯＦＳ４ｉは、フローテーブル３４３に適合するフローのみを統計情報の収集対象とするため、ｓＦｌｏｗのようにサンプリング処理を行うことなく処理負荷が低減される。
【００５３】
以下、上記コンピュータシステムにおけるアプリケーション単位の監視処理の動作の詳細を説明する。
【００５４】
（監視準備及びフロー設定処理）
図１０は、本発明によるシステム監視のための準備処理の動作を示すシーケンス図である。本発明によるコンピュータシステムでは、ネットワークを監視する前に、アプリケーション間通信を行うアプリケーションと、フローとの対応付けが行われる。図１０を参照して、アプリケーションとフローとを対応付ける動作の詳細を説明する。
【００５５】
ここでは、予めサーバ１（アプリケーション１０１）とクライアント端末２（アプリケーション２０１）との間でセッションが確立され、それぞれのアプリケーションにＴＣＰ／ＩＰポート番号が割り当てられているものとして説明する。先ず、クライアント側から、サーバ１のアプリケーション１０１を利用するためのアクセスが発生する。この際、クライアント端末２のアプリケーション２０１からサーバ宛のパケットが転送される（ステップＳ１０１）。サーバ宛のパケットを受信したＯＦＳ４ｉは、当該パケットのヘッダ情報を読み出し、フローテーブル３４３に設定されたフローのルール４４４に適合しているかを確認する。ここで、受信パケットのヘッダ情報がフローテーブル３４３に設定された全てのルール４４４に適合しない場合、ＯＦＳ４ｉは、受信パケットをファーストパケットとして認識し、記憶装置に記録する（ステップＳ１０２）。
【００５６】
ＯＦＳ４ｉは、ファーストパケットを受信したことをＯＦＣ３に通知する（ステップＳ１０３）。この際、受信パケットのヘッダ情報や、ＯＦＳ４ｉを識別するスイッチ情報４５３がＯＦＣ３に通知される。ＯＦＣ３は、ファーストパケット受信通知に応じて、サーバ１のアプリ特定エージェント１０に対しアプリケーション名の問い合わせを行う（ステップＳ１０４）。詳細には、ＯＦＳ４ｉから通知されたヘッダ情報からアプリエーション間通信を行う端点となるサーバ１、クライアント端末２が特定される。ＯＦＣ３は、パケットの送信先として特定したサーバ１のアプリ特定エージェント１０に対して、アプリ名の問い合わせとともに、ヘッダ情報から抽出した宛先ＴＣＰ／ＩＰポート番号と送信元ＴＣＰ／ＩＰポート番号を通知する。
【００５７】
サーバ１のアプリ特定エージェント１０は、ＯＦＣ３から通知された宛先ＴＣＰ／ＩＰポート番号をキーとして、当該ポート番号が割り当てられているアプリケーション名を特定する（ステップＳ１０５）。特定されたアプリ名はＯＦＣ３に通知される（ステップＳ１０６）。
【００５８】
一方、ＯＦＣ３は、ステップＳ１０３におけるファーストパケット受信通知に応じて、フローテーブル３３４から、ＯＦＳ４ｉに設定するフロー（ルール４４４＋アクション情報４４５）を抽出する（ステップＳ１０７）。詳細には、ＯＦＣ３は、通知されたヘッダ情報及び、これに基づいて特定したアプリケーション間通信の端点に対応するフローをフローテーブルから抽出する。この際、対応するフローが存在しない場合は、ヘッダ情報及び特定した端点に基づき、トポロジ情報から通信経路を算出し、これを用いてＯＦＳ４ｉに設定するフローを生成する。ＯＦＣ３は、フローテーブル３３４から抽出したフローの設定をＯＦＳ４ｉに指示する（ステップＳ１０８）。
【００５９】
フローの抽出又は生成の際、ＯＦＳ４ｉの出力先の回線が混んでおり通信品質を確保できない場合、パケットのポート番号を参照して、より負荷の少ない回線に迂回させるフローを抽出又は生成してもよい。例えば、ＯＦＣ３は、事前に設定された優先アプリケーションに関するポート番号とパケットのポート番号とを比較し、両者が一致した場合、より負荷に少ない回線に迂回させるフローを抽出又は生成する。
【００６０】
ＯＦＳ４ｉは、ＯＦＣ３から送信されたフローをフローテーブル（ルール４４４＋アクション情報４４５）を自身のフローテーブル３４３に設定する（ステップＳ１０９）。フローの設定が完了したＯＦＳ４ｉは、ステップＳ１０２において記録したファーストパケット（サーバ宛パケット）を、ステップＳ１０９に設定されたフローに従った宛先に転送する（ステップＳ１１０）。ここでは、パケットはサーバ１宛となるポートに転送される。
【００６１】
ＯＦＣ３は、ステップＳ１０７においてＯＦＳ４ｉに設定するフローを決定すると、当該フローと、ステップＳ１０６において通知されたアプリ名とを対応付けて、アプリ／フロー対応テーブル３３５に記録する（ステップＳ１１１）。これにより、ＯＦＳ４ｉに設定され、アプリケーション１０１とアプリケーション２０１との間のデータ転送を制御するフローやその通信経路と、サーバ１のアプリケーション１０１とが対応付けられる。この情報（アプリ／フロー対応テーブル３３５）は、図示しない出力装置によって視認可能に表示されることが好ましい。
【００６２】
ステップＳ１０４におけるアプリ名の問い合わせと、ステップＳ１０７、Ｓ１０８におけるフロー選択（生成）及び設定指示の順はこれに限らず、逆順でも同時的に行われても良い。ただし、フローの設定前に、ポート番号に対応するアプリケーションを特定した場合、特定されたアプリケーションを考慮してＯＦＳ４ｉの出力先回線を決定し、それに応じたフローの選択又は生成が可能となる。この場合、アプリケーションと、ＯＦＳ４ｉにおける出力先回線との対応表をＯＦＣ３の記憶装置に予め用意し、これを用いて、ステップＳ１０６によって特定されたアプリケーションに対応する出力先回線が判断されることが好ましい。これにより、従来、任意のポート番号を使うフローでは出力先回線を判断できなかった出力先回線を判断できるようになる。このような方法を利用する場合、ポート番号に対応するアプリケーションを特定する処理を、フローの設定より先行して行うことが好適となる。
【００６３】
以上の監視準備処理により、ＯＦＣ３は、アプリケーション間通信のためにＯＦＳ４ｉに設定されるフローや、その通信経路と、通信を行うアプリケーションとを対応付けることができる。ＯＦＣ３は、ＯＦＳｉから当該フローに係る統計情報を取得することで、アプリケーション単位のトラフィック状況を監視することが可能となる。
【００６４】
本発明では、オープンフロー技術におけるファーストパケット通知によって取得されたポート番号をキーとして、当該ポート番号を利用するアプリケーション名を特定している。これにより、ＯＦＣ３は、アプリケーション通信を制御するフロー（ルール４４４＋アクション情報４４５）やその通信経路と、アプリケーションとを対応付けることができる。この結果、アプリケーションに対して動的にポート番号が割り当てられた場合（ポート番号がＡＮＹの場合）でも、ＯＦＣ３は、ＯＦＳ４ｉに設定したフローや、通信に利用する通信経路に対応するアプリケーションを特定することができる。
【００６５】
（監視処理）
図１１は、本発明によるシステム監視のための統計情報取得処理の動作を示すシーケンス図である。図１１を参照して、本発明によるシステム監視処理の詳細を説明する。
【００６６】
上述の監視準備処理によって、通信を行っているアプリケーションとＯＦＳ４ｉに設定されたフローとの対応付けを行ったＯＦＣ３は、ＯＦＳ４ｉに対して当該フローに係るトラフィック監視を指示する（ステップＳ１２０）。監視指示には、監視対象のフローを指定するフロー識別子４４１が含まれる。この際、上述のように、特定されたアプリケーションに応じて、トラフィック監視を中止させる指示を発行してもよい。
【００６７】
ＯＦＳ４ｉは、監視指示に応じてアプリケーション１０１とアプリケーション２０１に対するトラフィックの監視を開始する。ＯＦＳ４ｉは、監視指示に含まれるフロー識別子４４１に基づいて監視対象となるフローを特定し、当該フローを利用して処理を行うパケットのトラフィック量やデータ長を取得し、統計テーブルに記録する。例えば、クライアント端末２のアプリケーション２０１から転送されたサーバ宛パケットを、監視対象フローに応じてサーバ１のアプリケーション１０１に転送する際、当該パケットに関する統計情報４５２をフロー識別子４４１に対応付けて統計テーブル３４４に記録する（ステップＳ１２１〜Ｓ１２３）。同様に、サーバ１のアプリケーション１０１から転送されたクライアント端末宛パケットを、監視対象フローに応じてクライアント端末２のアプリケーション２０１に転送する際、当該パケットに関する統計情報４５２をフロー識別子４４１に対応付けて統計テーブル３４４に記録する（ステップＳ１２４〜Ｓ１２６）。
【００６８】
ＯＦＳ４ｉは、所定の周期毎に記録した統計情報４５２を対応するフロー識別子４４１とともに、ＯＦＣ３に送信する（ステップＳ１２７）。この際、ＯＦＳ４ｉを特定するスイッチ情報４５３も通知される。統計情報の送信は、ＯＦＣ３からの指示に応じて行われてもよい。
【００６９】
ＯＦＣ３は、ＯＦＳ４ｉから取得した統計情報４５２を統計テーブル３３６に記録する（ステップＳ１２８）。統計テーブル３３６と、アプリ／フロー対応テーブル３３５は、フロー識別子４４１を介してリンクしているため、ＯＦＣ３は、アプリケーション毎の統計情報を記録及び視認可能に表示することができる。
【００７０】
又、アプリケーションによっては、統計情報や通信経路等の可視化情報を収集する必要のない場合がある。このため、アプリケーションを特定した後、統計情報を収集するか否かの判定が行われてもよい。例えば、ステップＳ１０６において特定されたアプリ名を視認可能表示して、ユーザが統計情報の取得判定を行ってもよいし、予め統計情報を収集するアプリケーションを示した情報をＯＦＣ３に設定しておき、この情報を利用して統計情報の取得判定を行ってもよい。これにより、不要な統計情報の収集を省略することができる。尚、統計情報や通信経路を収集するか否かの判定は、ＯＦＳ４ｉに設定するフローを用いて行ってもよい。
【００７１】
以上のように、本発明では、アプリケーションへのポート番号の割り当て方法が、固定的又は動的のいずれかに関わらず、アプリケーション単位のトラフィック監視や、フロー（ルール４４４＋アクション情報４４５）の設定が可能となる。
【００７２】
次に、本発明によるコンピュータシステムの適用例を説明する。以下では、（１）サーバ側のアプリケーションにウェルノウンポート番号が割り当てられるアプリケーション間通信の監視、（２）両端点のアプリケーションに動的にポート番号が割り当てられるアプリケーション間通信の監視、（３）ロードバランサを介して行われるアプリケーション間通信の監視の、それぞれの監視準備処理について説明する。
【００７３】
（１）第１の実施例：サーバ側のアプリケーションにウェルノウンポート番号が割り当てられるアプリケーション間通信の監視
図１２は、第１の実施例におけるアプリケーション間通信の監視方法を説明する図である。ここでは、Ｗｅｂサーバとして機能するサーバ１に複数のクライアント端末２−１、２−２が通信する形態を一例として説明する。サーバ１のアプリケーション１０１にはウェルノウンポート番号として８０番が固定的に割り当てられている。
【００７４】
クライアント端末２−１のアプリケーションのポート番号として例えば３００００番が固定的に割り当てられている場合、クライアント端末２−１からアプリケーション１０１へのアクセスに応じて、ＯＦＳ４ｉは、ＯＦＣ３に対し、ファーストパケットの受信通知とともに、受信パケットのヘッダ情報から抽出した送信先ポート番号“８０番”と送信元ポート番号“３００００番”を通知する。ＯＦＣ３は、アプリ特定エージェント１０に送信先ポート番号“８０番”と送信元ポート番号“３００００番”に対応するアプリケーション名を要求する。又、ＯＦＣ３は、ファーストパケット受信通知に基づきサーバ１とクライアント端末２−１との通信を制御するためのフローをＯＦＳ４ｉに設定する。
【００７５】
アプリ特定エージェント１０は、送信先ポート番号“８０番”に対応するアプリケーション名（アプリケーション１０１）と、送信元ポート番号“３００００番”に対応するアプリケーション名（クライアント端末２−１のアプリケーション）を特定し、ＯＦＣ３に通知する。ＯＦＣ３は、通知されたアプリケーション名と、ＯＦＳ４ｉに設定したフローとを対応付けアプリ／フロー対応テーブル３３５に記録する。
【００７６】
尚、ＯＦＣ３に、固定的に割り当てられたポート番号とアプリケーションの対応表を用意し、これを参照することで、上述のアプリ特定エージェント１０にアプリ名を問い合わせることなく、アプリケーションとフローの対応付けが可能となる。
【００７７】
一方、クライアント端末２−２におけるアプリケーションの送信元ポート番号が“ＡＮＹ”である場合、サーバ１のアプリケーション１０１との間でセッションが確立される際、アクセス先のサーバ１によって当該アプリケーションに対してポート番号が動的に割り当てられる。ここでは、“４００００番”が割り当てられるものとする。
【００７８】
クライアント端末２−２からアプリケーション１０１へのアクセスに応じて、ＯＦＳ４ｉは、ＯＦＣ３に対し、ファーストパケットの受信通知とともに、受信パケットのヘッダ情報から抽出した送信先ポート番号“８０番”と送信元ポート番号“４００００番”を通知する。ＯＦＣ３は、アプリ特定エージェント１０に送信先ポート番号“８０番”と送信元ポート番号“４００００番”に対応するアプリケーション名を要求する。又、ＯＦＣ３は、ファーストパケット受信通知に基づきサーバ１とクライアント端末２−１との通信を制御するためのフローをＯＦＳ４ｉに設定する。
【００７９】
アプリ特定エージェント１０は、送信先ポート番号“８０番”に対応するアプリケーション名（アプリケーション１０１）と、送信元ポート番号“４００００番”に対応するアプリケーション名（クライアント端末２−２のアプリケーション）を特定し、ＯＦＣ３に通知する。ＯＦＣ３は、通知されたアプリケーション名と、ＯＦＳ４ｉに設定したフローとを対応付けアプリ／フロー対応テーブル３３５に記録する。
【００８０】
以上のように、本発明によれば、アクセス元のクライアント端末２におけるアプリケーションに対してポート番号が固定的、又は動的に割り当てられる場合でも、通信を行うアプリケーションとフローとが対応付けられ、アプリケーション毎の統計情報の監視が可能となる。
【００８１】
（２）第２の実施例：両端点のアプリケーションに動的にポート番号が割り当てられるアプリケーション間通信の監視
図１３は、第２の実施例におけるアプリケーション間通信の監視方法を説明する図である。ここでは、一例として１つのクライアントアプリケーションと複数のサーバアプリケーションとの間で通信が行われる形態について説明する。この場合、サーバ１のアプリケーション１０１、１０２のポート番号は“ＡＮＹ”となり、クライアント端末２のアプリケーション２０１のポート番号も“ＡＮＹ”となる。
【００８２】
アプリケーション２０２と、複数のアプリケーション１０１、１０２との間においてセッションが確立され際、アクセス先のサーバ１によって当該アプリケーション１０１、１０２、２０２に対してポート番号が動的に割り当てられる。ここでは、アプリケーション１０１とアプリケーション２０１との間の通信に関するポート番号として、アプリケーション１０１に“２０００番”、アプリケーション２０１に“３００００番”が割り当てられ、アプリケーション１０２とアプリケーション２０１との間の通信に関するポート番号として、アプリケーション１０２に“２００４番”、アプリケーション２０１に“４００００番”が割り当てられるものとする。
【００８３】
アプリケーション２０１からアプリケーション１０１へのアクセスに応じて、ＯＦＳ４ｉは、ＯＦＣ３に対し、ファーストパケットの受信通知とともに、受信パケットのヘッダ情報から抽出した送信先ポート番号“２０００番”と送信元ポート番号“３００００番”を通知する。ＯＦＣ３は、アプリ特定エージェント１０に送信先ポート番号“２０００番”と送信元ポート番号“３００００番”に対応するアプリケーション名を要求する。又、ＯＦＣ３は、ファーストパケット受信通知に基づきアプリケーション１０１とアプリケーション２０１との通信を制御するためのフローをＯＦＳ４ｉに設定する。
【００８４】
アプリ特定エージェント１０は、送信先ポート番号“２０００番”に対応するアプリケーション名（アプリケーション１０１）と、送信元ポート番号“３００００番”に対応するアプリケーション名（クライアント端末２のアプリケーション２０１）を特定し、ＯＦＣ３に通知する。ＯＦＣ３は、通知されたアプリケーション名と、ＯＦＳ４ｉに設定したフローとを対応付けアプリ／フロー対応テーブル３３５に記録する。
【００８５】
同様に、アプリケーション２０１からアプリケーション１０２へのアクセスに応じて、ＯＦＳ４ｉは、ＯＦＣ３に対し、ファーストパケットの受信通知とともに、受信パケットのヘッダ情報から抽出した送信先ポート番号“２００４番”と送信元ポート番号“４００００番”を通知する。ＯＦＣ３は、送信先ポート番号“２００４番”と送信元ポート番号“４００００番”に対応するアプリケーション名（アプリケーション１０２、２０１）をアプリ特定エージェント１０から取得する。又、ＯＦＣ３は、ファーストパケット受信通知に基づきアプリケーション１０２とアプリケーション２０１との通信を制御するためのフローをＯＦＳ４ｉに設定する。そして、ＯＦＣ３は、通知されたアプリケーション名と、ＯＦＳ４ｉに設定したフローとを対応付けアプリ／フロー対応テーブル３３５に記録する。
【００８６】
以上のように、本発明によれば、クライアント端末２が複数のサーバアプリケーションを同時に使用する場合のように、任意のＴＣＰ／ＩＰポート番号を使用してパケットの送受信を行う場合でも、ＯＦＳ４ｉに設定したフローに対応するアプリケーションを特定することができる。
【００８７】
（３）第３の実施例：ロードバランサを介して行われるアプリケーション間通信の監視
図１４は、第３の実施例におけるアプリケーション間通信の監視方法を説明する図である。ここでは、クライアント端末２とＯＦＳ群４との間にロードバランサ５が設けられたシステムにおいて、アプリケーション間通信が行われる形態について説明する。図１４を参照して、ロードバランサ５は、複数のクラインと端末２−１〜２−３と、ＯＦＳ群４との間に設けられ、複数のサーバ１−１、１−２のそれぞれのアプリケーション１０１−１、１０２−２に対する負荷分散を行う。ここでは、サーバ１−１のアプリケーション１０１−１、とサーバ１−２のアプリケーション１０１−２には、それぞれ同じポート番号“２０００番”が固定的に割り当てられるものとする。又、クライアント端末２−１〜２−３のそれぞれのアプリケーションのポート番号は“ＡＮＹ”であるものとする。
【００８８】
サーバ１−１のアプリケーション１０１−１、１０１−２との間でセッションが確立される際、アクセス先のサーバによってクライアント端末２−１〜２−３のそれぞれのアプリケーションに対してポート番号が動的に割り当てられる。ここでは、クライアント端末２−１に“３００００番”、クライアント端末２−２に“４００００番”、クライアント端末２−３に“５００００番”が割り当てられるものとする。
【００８９】
クライアント端末２−１からアプリケーション１０１へのアクセスに応じて、ＯＦＳ４ｉは、ＯＦＣ３に対し、ファーストパケットの受信通知とともに、受信パケットのヘッダ情報から抽出した送信先ポート番号“２０００番”と送信元ポート番号“３００００番”を通知する。ＯＦＣ３は、ファーストパケットの受信通知に含まれる宛先ＩＰアドレスや宛先ＭＡＣアドレス等に基づき、送信先のサーバを特定する。ここでは、サーバ１−１が送信先として特定される。ＯＦＣ３は、サーバ１−１のアプリ特定エージェント１０−１に送信先ポート番号“２０００番”と送信元ポート番号“３００００番”に対応するアプリケーション名を要求する。又、ＯＦＣ３は、ファーストパケット受信通知に基づきサーバ１−１とクライアント端末２−１（ロードバランサ５）との通信を制御するためのフローをＯＦＳ４ｉに設定する。
【００９０】
アプリ特定エージェント１０−１は、送信先ポート番号“２０００番”に対応するアプリケーション名（サーバ１−１のアプリケーション１０１）と、送信元ポート番号“３００００番”に対応するアプリケーション名（クライアント端末２−１のアプリケーション）を特定し、ＯＦＣ３に通知する。ＯＦＣ３は、通知されたアプリケーション名と、ＯＦＳ４ｉに設定したフローとを対応付けアプリ／フロー対応テーブル３３５に記録する。
【００９１】
同様にしてＯＦＣ３は、他のクライアント端末２−２、２−３と、サーバ１−１、１−２との間のアプリケーション間通信に係るアプリケーションとフローとを対応付け、アプリ／フロー対応テーブル３３５に記録する。
【００９２】
以上のように、本発明によるコンピュータシステムによれば、アプリケーションにポート番号が動的に割り当てられるようなアプリケーション間通信を監視することができる。これにより、アプリケーション単位のトラフィック量を可視化でき、例えば、トラフィックが混雑している原因が、サーバのＣＰＵにおける負荷の増大にあるのか、アプリケーション通信のトラフィック量の増大にあるのかを明らかにすることができる。又、可視化されたアプリケーション毎の統計情報に応じて、フロー制御を行うことで、アプリケーション単位の障害復旧や輻輳回避を行うことができる。又、可視化及び障害復旧等の処理はＯＦＣ３において一元的に制御できる。従来は、サーバ側（ＩＴ側）のアプリケーション管理と、ネットワーク側の管理は別々に行われてきたが、本発明により、これらの管理を一元的に行うことが可能となった。すなわち、本発明によれば、通信フローを使用しているアプリケーションと通信フローを関連付け、ＩＴ系とネットワーク系を融合した可視化が可能となる。
【００９３】
又、ＯＦＳ４ｉは、フローテーブル３４３に適合するフローのみを統計情報の収集対象とする。例えば、ｓＦｌｏｗのように所定のサンプリングタイミングで統計情報を収集する場合、サンプリングタイミングからはずれたパケットはサンプリングの対象から外れてしまい、統計情報の精度が低下してしまう。本発明では、フローに応じた処理をする都度（すなわち、監視対象パケットの受信の都度）、パケットをサンプリングして統計情報を生成しているため、サンプリングの処理負荷を軽減しつつ統計情報の精度が向上される。
【００９４】
以上、本発明の実施の形態を詳述してきたが、具体的な構成は上記実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。上述の第１〜第３の実施例における監視方法は、技術的に矛盾のない範囲内で組み合わせて適用され得る。又、アプリ特定エージェント１０は、クライアント端末２に搭載されてもよい。この場合も、クライアント端末２は、上述と同様に、問い合わせのあったポート番号を利用するアプリ名をＯＦＣ３に通知する。上述の実施の形態では、サーバ１とクライアント端末２間の通信について説明したが、複数のサーバ１−１、１−２間の通信監視にも適用できる。
【符号の説明】
【００９５】
１、１−１、１−２：サーバ
２、２−１〜２−３：クライアント端末
３：オープンフローコントローラ（ＯＦＣ）
４：スイッチ群
４ｉ：オープンフロースイッチ（ＯＦＳ）
５：ロードバランサ
１０：アプリ特定エージェント
１０１、１０２、２０１、１０１−１、１０１−２：アプリケーション
【図１】
2011082834.tif 000003
【図２】
2011082834.tif 000004
【図３】
2011082834.tif 000005
【図４】
2011082834.tif 000006
【図５】
2011082834.tif 000007
【図６】
2011082834.tif 000008
【図７】
2011082834.tif 000009
【図８】
2011082834.tif 000010
【図９】
2011082834.tif 000011
【図１０】
2011082834.tif 000012
【図１１】
2011082834.tif 000013
【図１２】
2011082834.tif 000014
【図１３】
2011082834.tif 000015
【図１４】
2011082834.tif 000016