(57)【要約】【課題】所定の特徴を有するフローを推定すること。【解決手段】フロー監視部１８が、所定の特徴を有するフローの候補となる候補フローを候補フローテーブル１３に登録する。そして、不要フローマーキング部２０が、ＴＣＰフラグが特定の値であるパケットのヘッダに基づいて特定された候補フローのペナルティを更新する。そして、候補フロー伝送部２１が、ペナルティに基づいてロングフローを推定し、推定したロングフローの情報を管理者端末に送信する。【選択図】図５
2019097073.tif 000002
【特許請求の範囲】
【請求項１】
所定の特徴を有するフローとして推定するフローの候補となる候補フローの情報を中継するフローの情報に基づいて収集する収集部と、
前記収集部により情報が収集された候補フローについて前記所定の特徴を有しない可能性を表すペナルティ値を中継するパケットに基づいて算出する算出部と、
前記算出部により算出されたペナルティ値に基づいて、前記所定の特徴を有するフローを推定する推定部
を有することを特徴とする情報処理装置。
【請求項２】
前記推定部は、さらに、所定の検出条件に基づいて、前記所定の特徴を有するフローを推定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記収集部は、オープンフローテーブルを処理するＯＦ処理部とフローキャッシュを処理するＦＣ処理部との間の通信をキャプチャして前記フローキャッシュに一時的に登録される完全一致フローを収集し、収集した完全一致フローを前記候補フローとすることを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記算出部は、フローキャッシュのエントリで指定されるアクションにより送信されたパケット情報に基づいて前記ペナルティ値を算出することを特徴とする請求項１、２又は３に記載の情報処理装置。
【請求項５】
前記推定部は、前記所定の特徴を有するフローとして一定期間データの伝送が継続するロングフローを推定することを特徴とする請求項１〜４のいずれか１つに記載の情報処理装置。
【請求項６】
前記算出部は、ＴＣＰフラグとしてＦＩＮ、ＲＳＴ、ＣＷＲ又はＥＣＥを含むパケットに基づいて前記ペナルティ値を算出することを特徴とする請求項１〜５のいずれか１つに記載の情報処理装置。
【請求項７】
前記推定部は、通信量が所定の閾値以上のキャッシュエントリに属するフローであることを前記所定の検出条件として、前記所定の特徴を有するフローを推定することを特徴とする請求項２に記載の情報処理装置。
【請求項８】
コンピュータが、
所定の特徴を有するフローとして推定するフローの候補となる候補フローの情報を中継するフローの情報に基づいて収集し、
前記候補フローについて前記所定の特徴を有しない可能性を表すペナルティ値を中継するパケットに基づいて算出し、
算出したペナルティ値に基づいて、前記所定の特徴を有するフローを推定する
処理を実行することを特徴とする情報処理方法。
【請求項９】
コンピュータに、
所定の特徴を有するフローとして推定するフローの候補となる候補フローの情報を中継するフローの情報に基づいて収集し、
前記候補フローについて前記所定の特徴を有しない可能性を表すペナルティ値を中継するパケットに基づいて算出し、
算出したペナルティ値に基づいて、前記所定の特徴を有するフローを推定する
処理を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
情報通信システムにおいて利用されるネットワークでは、様々な種類のフローにより通信が行われる。ここで、フローとは、通信の起点と通信の終点で特定されるパケット群の流れである。通信の起点及び終点は、例えば、情報処理装置とアプリケーションの組合せで特定される。
【０００３】
様々な種類のフローのうち所定の特徴を有するフローを特定することができれば、特定したフローの経路制御、輻輳制御等を行うことができる。例えば、データセンターネットワーク（ＤＣＮ：Data  Center  Network）においてロングフローを特定することができれば、ロングフローの経路を変更する経路制御を行うことができる。ここで、ロングフローとは、一定期間データの伝送が継続するフローである。ロングフローは、スループットが高い。
【０００４】
ＤＣＮでは、ソフトウェアにより情報処理装置で実現される仮想スイッチが幅広く利用されている。仮想スイッチは、物理スイッチと比較して、拡張性が高く開発コストが低い等の利点がある。
【０００５】
仮想スイッチでは、異なる形式の２つのテーブルを用いてパケットが処理される。図１９は、仮想スイッチがパケットを処理する仕組みを説明するための図である。図１９に示すように、仮想スイッチは、オープンフロー（ＯＦ）テーブルとフローキャッシュを用いてパケットを処理する。
【０００６】
ＯＦテーブルを用いたパケットの処理では、複数のテーブルを用いたパイプラインによりパケットの通信情報からパケットに対するアクションが決定される。ここで、通信情報とは、例えば、送信元ＩＰ（Internet  Protocol）アドレス、送信先ＩＰアドレス、送信元ポート番号、送信先ポート番号、プロトコルであり、パケットのフローを識別する情報である。アクションには、次のテーブルの指定、パケットの出力先ポートの指定、ヘッダの修正指定等がある。また、ＯＦテーブルは、ユーザ空間にある。
【０００７】
一方、フローキャッシュには、ＯＦテーブルを用いて決定されたアクションに関する情報が通信情報と対応付けられてキャッシュされる。また、フローキャッシュには、類似する通信情報に関してワイルドカードやサブネット単位でまとめたエントリが登録される。図２０は、フローキャッシュエントリとＯＦテーブルエントリの関係を説明するための図である。図２０に示すように、例えば、「１９２．１６８．０．０／１６」のフローキャッシュエントリには、「１９２．１６８．１．１００／２４」、「１９２．１６８．１００．７／２４」、「１９２．１６８．２．２１／２４」等のＯＦテーブルのエントリが含まれる。
【０００８】
仮想スイッチは、パケットの通信情報に対応するアクションをフローキャッシュから検索する。パケットに対応するエントリがフローキャッシュにない場合に、仮想スイッチは、ＯＦテーブルを用いてパケットに対するアクションを決定し、通信情報とアクションを含むエントリをフローキャッシュに登録する。また、フローキャッシュはカーネルにある。このため、フローキャッシュを用いたパケットの処理は、ＯＦテーブルを用いたパケットの処理より高速である。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】国際公開第２０１１／１０２３１２号
【特許文献２】国際公開第２０１１／０６８０９１号
【特許文献３】特開２０１５−１８６１４９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
ＯＦテーブルとフローキャッシュを用いる中継装置では、フローの情報が分散されており、所定の特徴を有するフローを効率良く特定することができないという問題がある。図２１は、フロー特定の問題点を説明するための図である。図２０では、ＯＦテーブルは、Ｔ＃１〜Ｔ＃４で表される４つのテーブルが含まれる。
【００１１】
Ｔ＃１では、送信元ＩＰアドレス（ｓｉｐ）と通信バイト数（ｂｙｔｅｓ）が示され、他の情報は省略されている。Ｔ＃２では、送信先ＩＰアドレス（ｄｉｐ）と通信バイト数（ｂｙｔｅｓ）が示され、他の情報は省略されている。Ｔ＃３では、送信元ポート番号（ｓｐｏｒｔ）と通信バイト数（ｂｙｔｅｓ）が示され、他の情報は省略されている。Ｔ＃４では、送信先ポート番号（ｄｐｏｒｔ）と通信バイト数（ｂｙｔｅｓ）とアクション（ＡＣＬ）とが示され、他の情報は省略されている。
【００１２】
また、フローキャッシュでは、送信元ＩＰアドレス及びサブネットマスク（ｓｉｐ＝）、送信先ＩＰアドレス及びサブネットマスク（ｄｉｐ＝）、送信元ポート番号（ｓｐｏｒｔ＝）、送信先ポート番号（ｄｐｏｒｔ＝）、通信量（ｂｙｔｅｓ＝）、アクション（ｏｕｔｐｕｔ：）が示されている。「＊」は、何にでもマッチするワイルドカードである。
【００１３】
例えば、Ｔ＃４に着目すると、Ｔ＃４にはフローについての一部の情報しかないので、ロングフローをＴ＃４から特定することができない。また、フローキャッシュについては、フローの通信情報に関してワイルドカードやサブネット単位でまとめたエントリが登録されているため、通信情報がない部分があり、ロングフローをフローキャッシュから特定することができない。
【００１４】
本発明は、１つの側面では、所定の特徴を有するフローを効率良く推定することを目的とする。
【課題を解決するための手段】
【００１５】
１つの態様では、情報処理装置は、収集部と、算出部と、推定部を有する。前記収集部は、所定の特徴を有するフローとして推定するフローの候補となる候補フローの情報を中継するフローの情報に基づいて収集する。前記算出部は、前記収集部により情報が収集された候補フローについて前記所定の特徴を有しない可能性を表すペナルティ値を中継するパケットに基づいて算出する。前記推定部は、前記算出部により算出されたペナルティ値に基づいて、前記所定の特徴を有するフローを推定する。
【発明の効果】
【００１６】
１つの側面では、本発明は、所定の特徴を有するフローを効率良く推定することができる。
【図面の簡単な説明】
【００１７】
【図１】図１は、実施例に係る仮想スイッチによるフロー推定方法を説明するための図である。
【図２】図２は、ＥＣＮを説明するための図である。
【図３】図３は、Ｅｘフローを説明するための図である。
【図４】図４は、ＤＣＮにおけるフローの特徴を示す図である。
【図５】図５は、実施例に係る仮想スイッチの機能構成を示す図である。
【図６】図６は、候補フローテーブルの一例を示す図である。
【図７】図７は、キャッシュエントリテーブルの一例を示す図である。
【図８】図８は、フローフィルタ部によるペナルティの更新を説明するための図である。
【図９】図９は、仮想スイッチの時系列動作を示す図である。
【図１０】図１０は、観測スロットと推定スロットを複数に分けるフロー推定方法を説明するための図である。
【図１１】図１１は、図１０に示したフロー推定方法を用いる場合の仮想スイッチの時系列動作を示す図である。
【図１２】図１２は、ロングフローが存在する場合の例を示す図である。
【図１３】図１３は、ロングフローが存在する場合の仮想スイッチの時系列動作を示す図である。
【図１４】図１４は、ロングフローがない場合の例を示す図である。
【図１５】図１５は、ロングフローがない場合の仮想スイッチの時系列動作を示す図である。
【図１６】図１６は、フロー測定部による処理の手順を示すフローチャートである。
【図１７】図１７は、フロー推定部による処理の手順を示すフローチャートである。
【図１８】図１８は、仮想スイッチが動作するコンピュータのハードウェア構成を示す図である。
【図１９】図１９は、仮想スイッチがパケットを処理する仕組みを説明するための図である。
【図２０】図２０は、フローキャッシュエントリとＯＦテーブルエントリの関係を説明するための図である。
【図２１】図２１は、フロー特定の問題点を説明するための図である。
【発明を実施するための形態】
【００１８】
以下に、本願の開示する情報処理装置、情報処理方法及びプログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例】
【００１９】
まず、実施例に係る仮想スイッチによるフロー推定方法について説明する。図１は、実施例に係る仮想スイッチによるフロー推定方法を説明するための図である。図１に示すように、実施例に係る仮想スイッチは、初期化スロットと観測スロットと推定スロットにおいて、フロー推定処理を行う。ここで、スロットとは、時間帯を表す。
【００２０】
初期化スロットにおいて、実施例に係る仮想スイッチは、ＴＣＰ（Transmission  Control  Protocol）フラグがＦＩＮ、ＲＳＴ、ＣＷＲ、ＥＣＥ等であるパケットに関するエントリをフローキャッシュに登録する（０）。ここで、ＴＣＰフラグがＦＩＮであるパケットは、ＴＣＰ接続の終了の際に送られるパケットである。ＴＣＰフラグがＲＳＴであるパケットは、通信をリセットする際に送られるパケットである。このように、ＴＣＰフラグがＦＩＮ又はＲＳＴであるパケットに関するエントリをフローキャッシュに登録することで、実施例に係る仮想スイッチは、ＦＩＮ又はＲＳＴを検出して決められたアクションを行うことができる。
【００２１】
ＣＷＲ、ＥＣＥは、ＥＣＮ（Explicit  Congestion  Notification）で使用される。図２は、ＥＣＮを説明するための図である。図２に示すように、センダー（Sender）はＤＡＴＡをスイッチを経由してレシーバ（Receiver）に送る。このとき、スイッチは、キューがＥＣＮ閾値を超えたことを検出すると、輻輳が発生したと判断し、パケットのＥＣＮフィールドをＣＥ（Congestion  Experienced）を示す１１に設定してレシーバにＤＡＴＡを送る。
【００２２】
すると、レシーバは、ＥＣＮ  ｅｃｈｏ（ＥＣＥ＝１）を設定してセンダーにＡＣＫを送る。すると、センダーは、ＴＣＰウィンドウを半分に設定し、ＣＷＲ＝１を設定してＤＡＴＡをレシーバに送信する。したがって、ＴＣＰフラグが、ＣＷＲ又はＥＣＥであるパケットに関するエントリをフローキャッシュに登録することで、実施例に係る仮想スイッチは、ＣＷＲ又はＥＣＥを検出して決められたアクションを行うことができる。
【００２３】
図１に戻って、実施例に係る仮想スイッチは、観測スロットにおいて、全てのフローキャッシュエントリの通信量を観測する。また、実施例に係る仮想スイッチは、ＯＦテーブルを処理するＯＦ処理部とフローキャッシュを処理するＦＣ処理部との間の通信チャネルを監視し、Ｅｘフローの通信情報をコピーして候補フローテーブルに登録する。
【００２４】
ここで、Ｅｘフローとは、フローキャッシュにパケットの通信情報に対応するエントリがない場合に、一時的にフローキャッシュに新たに登録されるエントリである。図３は、Ｅｘフローを説明するための図である。図３において、Ｓ＿ＩＰは、送信元のＩＰアドレスである。Ｄ＿ＩＰは、送信先のＩＰアドレスである。Ｓ＿ポートは、送信元のポート番号である。Ｄ＿ポートは、送信先のポート番号である。プロトコルは、通信のプロトコルである。
【００２５】
Ｅｘフローの通信情報全てがエントリとしてフローキャッシュに登録されており、Ｅｘフローのエントリには、ワイルドカードやサブネット単位での情報が含まれない。また、先頭の１００パケット程度がＥｘフローのエントリとして処理され、その後のパケットは、新たにフローキャッシュに追加されるか、既存のエントリにマージされる。最終的には、パケットを高速に処理するために、Ｅｘフローのエントリは削除される。Ｅｘフローは、通信情報がパケットの通信情報と完全に一致する完全一致フローである。
【００２６】
また、候補フローテーブルは、ロングフローの候補となるＥｘフローが候補フローとして登録されるテーブルである。候補フローテーブルに登録されたＥｘフローのうち、観測スロットにおいて、終了したＴＣＰフローは、ペナルティが与えられ、ロングフローから排除される。また、輻輳制御が効いたＴＣＰフローは、ペナルティが与えられる。終了したＴＣＰフローは、ＴＣＰフラグがＦＩＮ（Ｆ）又はＲＳＴ（Ｒ）のパケットにより検出され、輻輳制御が効いたＴＣＰフローは、ＴＣＰフラグがＣＷＲ（Ｃ）又はＥＣＥ（Ｅ）のパケットにより検出される。
【００２７】
推定スロットでは、実施例に係る仮想スイッチは、検出条件を満たすフローキャッシュエントリを特定し（１）、特定したフローキャッシュエントリに属する候補フローを特定する（２）。ここで、検出条件は、例えば、通信量が１ＭＢ（メガバイト）以上である。
【００２８】
そして、実施例に係る仮想スイッチは、特定した候補フローからペナルティがある（例えばペナルティの値が０％でない）候補フローを除外し（３）、ペナルティがない（ペナルティの値が０％）候補フローだけをロングフローとして推定する（４）。そして、実施例に係る仮想スイッチは、ロングフローとして推定した候補フローの情報を提供する。
【００２９】
このように、実施例に係る仮想スイッチは、Ｅｘフローを候補フローとし、候補フローのうち検出条件を満たしペナルティのないフローをロングフローとして推定する。したがって、実施例に係る仮想スイッチは、検出条件に合うロングフローを正確に推定することができる。
【００３０】
なお、実施例に係る仮想スイッチは、ペナルティの所定の閾値（例えば５０％）に基づいてロングフローを推定してもよい。あるいは、実施例に係る仮想スイッチは、検出条件を用いることなく、ペナルティだけを用いてロングフローを推定してもよい。また、実施例に係る仮想スイッチは、終了したＴＣＰフローだけを検出してもよい。
【００３１】
また、ＤＣＮでは、フローに図４に示す特徴がある。ＤＣＮでは、フローの比率については、ロングフローが１０％であり、ショートフローが９０％である。フローのボリュームの比率については、ロングフローが９０％であり、ショートフローが１０％である。ＦＣＴ（Flow  Complete  Time：フロー完了時間）については、ロングフローが１０秒以上であり、ショートフローが１秒以下である。フローのボリュームについては、ロングフローが１ＭＢ以上であり、ショートフローが１０ＫＢ（キロバイト）以下である。
【００３２】
フローの主な生成要因は、ロングフローでは、更新等のパッチ、ハドゥープ（Hadoop）のデータ、データベースのデータ、オートスケール(AutoScale)のＡＰＩ（Application  Programming  Interface）のデータ等がある。フローの主な生成要因は、ショートフローでは、ＨＴＴＰ（Hypertext  Transfer  Protocol）／ＲＰＣ（Remote  Procedure  Call）のクエリ、監視系のＡＰＩのデータ等がある。
【００３３】
このように、ＤＣＮではフローのボリュームの９０％がロングフローであるので、ロングフローの経路制御を行うことで、ＤＣＮの性能を制御することができる。
【００３４】
次に、実施例に係る仮想スイッチの機能構成について説明する。図５は、実施例に係る仮想スイッチの機能構成を示す図である。図５に示すように、仮想スイッチ１は、ＯＦ処理部１１と、ＦＣ処理部１２と、候補フローテーブル１３と、キャッシュエントリテーブル１４とを有する。また、仮想スイッチ１は、フローフィルタ部１５と、アクション登録部１６と、エントリ収集部１７と、フロー監視部１８と、不要フロー検出部１９と、不要フローマーキング部２０と、候補フロー伝送部２１とを有する。
【００３５】
ＯＦ処理部１１は、ＯＦテーブルの処理を行う。ＦＣ処理部１２は、フローキャッシュの処理を行う。ＯＦテーブルの各テーブル及びフローキャッシュのエントリには、エントリにより処理されたパケットの数、バイト数等が含まれる。ＯＦ処理部１１とＦＣ処理部１２は、Ｅｘフローの通信情報等を送受信する。
【００３６】
候補フローテーブル１３は、ロングフローの候補となるＥｘフローの情報が候補フローの情報として登録されるテーブルである。図６は、候補フローテーブル１３の一例を示す図である。図６に示すように、候補フローテーブル１３には、インデックスと、Ｓ＿ＩＰと、Ｓ＿ポートと、Ｄ＿ＩＰと、Ｄ＿ポートと、輻輳＿カウントと、ペナルティとが候補フロー毎に登録される。
【００３７】
インデックスは、候補フローのフローキャッシュにおけるエントリを識別する番号である。輻輳＿カウントは、候補フローの中でＴＣＰの輻輳制御フラグ（ＣＷＲ又はＥＣＥ）が検出された回数である。
【００３８】
ペナルティは、候補フローがロングフローでない可能性を示し、０％〜１００％の値である。ペナルティの値が大きいほどロングフローでない可能性が高い。１００％は、ＴＣＰの終了フラグ（ＦＩＮ又はＲＳＴ）が検出された状態であり、候補フローがロングフローでないことを示す。０％は、ＴＣＰフラグが何も検出されていないペナルティのない状態であり、候補フローがロングフローである可能性が高いことを示す。ペナルティの初期値は０％である。
【００３９】
１％〜９９％は、ＴＣＰの輻輳制御フラグが検出された状態である。ペナルティの値は、ＴＣＰの輻輳制御フラグの発生頻度α＝ｐ／Ｔに基づいて計算される。ここで、ｐはＴＣＰの輻輳制御フラグが検出されたパケットの数すなわち輻輳＿カウントであり、Ｔはキャッシュエントリの総パケット数である。ここで、キャッシュエントリとは、フローキャッシュのエントリである。α＝１の場合には、ペナルティの値は９９％である。
【００４０】
例えば、フローキャッシュにおけるエントリの番号が「２」である候補フローについては、送信元のＩＰアドレスが「１９２．１６８．１．２４０」であり、送信元のポート番号が「２３４５７」である。また、送信先のＩＰアドレスは「１９２．１６８．１０．７０」であり、送信先のポート番号は「３４５２１」であり、輻輳制御フラグが検出された回数は「３００」であり、ペナルティは「５０％」である。
【００４１】
キャッシュエントリテーブル１４は、フローキャッシュから所定時間間隔で収集されたキャッシュエントリが登録されるテーブルである。図７は、キャッシュエントリテーブル１４の一例を示す図である。図７に示すように、キャッシュエントリテーブル１４には、インデックスと、時刻と、パケット数と、バイト数と、総パケット数と、総バイト数と、エントリ＿フィールドとがキャッシュエントリ毎に登録される。
【００４２】
インデックスは、キャッシュエントリを識別する番号であり、候補フローテーブル１３のインデックスと対応する。時刻は、キャッシュエントリが登録された時刻であり、日付とマイクロ秒までの時刻とを含む。パケット数は、キャッシュエントリに対応するフローで所定時間内に転送されたパケットの数である。バイト数は、キャッシュエントリに対応するフローで所定時間内に転送されたデータのバイト数である。総パケット数は、パケット数の積算値である。総バイト数は、バイト数の積算値である。エントリ＿フィールドは、キャッシュエントリのマッチ条件及びアクションである。ここで、マッチ条件とは、パケットの通信情報にマッチするか否かの判定に用いられる条件である。
【００４３】
例えば、フローキャッシュにおけるエントリの番号が「１」であるキャッシュエントリが「２０１７／０７／１３  １９：３６：３０．００００２３」にフローキャッシュに登録され、所定時間内に転送されたパケット数は、「１４５３６」である。また、所定時間内に転送されたデータのバイト数は、「１４５６８９０」である。パケット数の積算値は「８９１２３」であり、バイト数の積算値は「２３４５７８０」である。マッチ条件は、「ｓｉｐ＝１０．２０．０．０／１６，ｄｉｐ＝＊，ｓｐｏｒｔ＝＊，ｄｐｏｒｔ＝＊」である。アクションは、「ａｃｔｉｏｎ＝３」である。
【００４４】
また、フローキャッシュにおけるエントリの番号が「４」であるキャッシュエントリが「２０１７／０７／１３  １９：３６：３０．００００２３」にフローキャッシュに登録され、所定時間内に転送されたパケット数は、「３」である。また、所定時間内に転送されたデータのバイト数は、「４３８０」である。パケット数の積算値は「６」であり、バイト数の積算値は「８７８０」である。
【００４５】
マッチ条件は、「ｓｉｐ＝１０．２０．０．０／１６，ｄｉｐ＝＊，ｓｐｏｒｔ＝＊，ｄｐｏｒｔ＝＊，ｔｃｐ＝ＦＩＮ  ｏｒ  ＲＳＴ」である。ここで、「ｔｃｐ＝ＦＩＮ  ｏｒ  ＲＳＴ」は、ＴＣＰフラグがＦＩＮ又はＲＳＴであることを指定する。アクションは、「ａｃｔｉｏｎ＝３，ｍｒｎｔ」である。ここで、「ｍｒｎｔ」は、パケットのヘッダを不要フロー検出部１９に転送することを指定する。
【００４６】
図７において、フローキャッシュにおけるエントリの番号が「４」、「５」及び「６」であるエントリは、初期化スロットにおいてフローキャッシュに登録されたエントリである。観測スロットにおいて、ＦＣ処理部１２によりパケットのヘッダが不要フロー検出部１９に転送されることにより、ヘッダに対応する候補フローのペナルティの値が更新される。
【００４７】
フローフィルタ部１５は、初期化スロットでネットワークシステムの管理者からロングフローの検出条件を受け付ける。また、フローフィルタ部１５は、推定スロットで、キャッシュエントリテーブル１４のキャッシュエントリのうち検出条件を満たすキャッシュエントリだけを抽出し、抽出したキャッシュエントリのいずれにも属さない候補フローのペナルティを１００％に更新する。
【００４８】
図８は、フローフィルタ部１５によるペナルティの更新を説明するための図である。図８では、検出条件は総バイト数が１ＭＢ以上である。キャッシュエントリテーブル１４のインデックスが「１」のキャッシュエントリは総バイト数が「２３４５７８０」であり検出条件を満たす。また、候補フローテーブル１３のインデックスが「１」の候補フローは、キャッシュエントリテーブル１４のインデックスが「１」のキャッシュエントリに属し、ペナルティが「０％」であるので、ロングフローとして推定される。
【００４９】
一方、キャッシュエントリテーブル１４のインデックスが「３」のキャッシュエントリは総バイト数が「６９５７２１」であり検出条件を満たさない。したがって、候補フローテーブル１３のインデックスが「３」の候補フローは、キャッシュエントリテーブル１４のインデックスが「３」のキャッシュエントリに属し、検出条件を満たさない。このため、候補フローテーブル１３のインデックスが「３」の候補フローは、ペナルティが「０％」から「１００％」に変更され、ロングフローとして推定されない。
【００５０】
図５に戻って、アクション登録部１６は、ＴＣＰ終了フラグアクション及びＴＣＰ制御フラグアクションをフローキャッシュに登録する。ここで、ＴＣＰ終了フラグアクションとは、ＴＣＰフラグがＦＩＮ又はＲＳＴであるパケットのヘッダをＦＣ処理部１２が不要フロー検出部１９に送信するキャッシュエントリである。また、ＴＣＰ制御フラグアクションとは、ＴＣＰフラグがＣＷＲ又はＥＣＥであるパケットのヘッダをＦＣ処理部１２が不要フロー検出部１９に送信するキャッシュエントリである。
【００５１】
エントリ収集部１７は、所定時間間隔でフローキャッシュから全てのキャッシュエントリを収集してキャッシュエントリテーブル１４に記録する。
【００５２】
フロー監視部１８は、ＯＦ処理部１１とＦＣ処理部１２との間の通信チャネルを監視して、新たなＥｘフローがあると、通信情報を収集して候補フローテーブル１３に登録する。フロー監視部１８は、特許請求の範囲の収集部に対応する。
【００５３】
不要フロー検出部１９は、ＦＣ処理部１２が送信したヘッダを分析して、ＴＣＰフラグがＦＩＮ、ＲＳＴ、ＣＷＲ又はＥＣＥであるパケットの通信情報を特定する。不要フローマーキング部２０は、不要フロー検出部１９により特定された通信情報に対応する候補フローのペナルティの値を計算して更新する。不要フローマーキング部２０は、特許請求の範囲の推定部に対応する。
【００５４】
候補フロー伝送部２１は、候補フローテーブル１３からペナルティの値が０％であるフローをロングフローとして推定し、推定したフローの情報を管理者が使用する管理者端末に送信する。そして、管理者端末が、ロングフローの情報を表示装置に表示する。なお、候補フロー伝送部２１は、候補フローテーブル１３からペナルティの値が所定の閾値以下であるフローをロングフローとして推定してもよい。候補フロー伝送部２１は、特許請求の範囲の収集部に対応する。
【００５５】
また、図５において、フローフィルタ部１５、アクション登録部１６、エントリ収集部１７及びフロー監視部１８は、フロー測定部としてまとめられ、不要フロー検出部１９、不要フローマーキング部２０及び候補フロー伝送部２１は、フロー推定部としてまとめられる。
【００５６】
次に、仮想スイッチ１の時系列動作について説明する。図９は、仮想スイッチ１の時系列動作を示す図である。図９に示すように、初期化スロットでは、フロー測定部が管理者から検出条件を受け付ける（ｔ１）。そして、フロー測定部は、ＴＣＰ終了フラグアクション及びＴＣＰ制御フラグアクションをフローキャッシュに登録する（ｔ２）。
【００５７】
観測スロットでは、フロー測定部は、キャッシュエントリの統計値を収集する（ｔ３）。ここで、統計値とは、パケット数、バイト数、総パケット数及び総バイト数である。そして、フロー測定部は、新たなＥｘフローを収集し（ｔ４）、候補フローテーブル１３にＥｘフローの通信情報を登録する（ｔ５）。
【００５８】
そして、ＦＣ処理部１２が、フロー推定部に制御／終了フラグのヘッダを伝送する（ｔ６）。ここで、制御／終了フラグのヘッダとは、ＴＣＰフラグがＦＩＮ、ＲＳＴ、ＣＷＲ又はＥＣＥであるパケットのヘッダである。そして、フロー推定部は、候補フローテーブル１３の制御／終了したＥｘフローにペナルティを付与する（ｔ７）。ここで、制御／終了したＥｘフローとは、ＴＣＰフラグがＦＩＮ、ＲＳＴ、ＣＷＲ又はＥＣＥであるパケットに対応するフローである。
【００５９】
そして、ＦＣ処理部１２が、フロー推定部に制御／終了フラグのヘッダを伝送する（ｔ８）。そして、フロー推定部は、候補フローテーブル１３の制御／終了したＥｘフローにペナルティを付与する（ｔ９）。
【００６０】
そして、フロー測定部は、新たなＥｘフローを収集し（ｔ１０）、候補フローテーブル１３にＥｘフローの通信情報を登録する（ｔ１１）。そして、ＦＣ処理部１２は、フロー推定部に制御／終了フラグのヘッダを伝送し（ｔ１２）、フロー推定部は、候補フローテーブル１３の制御／終了したＥｘフローにペナルティを付与する（ｔ１３）。そして、ＦＣ処理部１２は、フロー推定部に制御／終了フラグのヘッダを伝送する（ｔ１４）。そして、フロー推定部は、候補フローテーブル１３の制御／終了したＥｘフローにペナルティを付与する（ｔ１５）。
【００６１】
なお、フロー測定部は、キャッシュエントリの統計値の収集を所定の時間間隔で繰り返す。また、フロー測定部は、新たなＥｘフローを収集して候補フローテーブル１３にＥｘフローの通信情報を登録する処理を仮想スイッチ１が中継するパケットに応じて繰り返す。また、ＦＣ処理部１２は、制御／終了フラグのヘッダの伝送を仮想スイッチ１が中継するパケットに応じて繰り返す。また、観測スロットの長さは例えば１０秒である。
【００６２】
推定スロットでは、フロー測定部は、キャッシュエントリの統計値を収集する（ｔ１６）。そして、フロー測定部は、検出条件を満たすキャッシュエントリを特定し、特定したキャッシュエントリに属する候補フローを特定する（ｔ１７）。そして、フロー推定部は、フロー測定部により特定された候補フローのうちペナルティがない候補フローだけをロングフローとして推定する（ｔ１８）。そして、フロー推定部は、推定したロングフローの情報を管理者端末に伝送する（ｔ１９）。
【００６３】
このように、仮想スイッチ１は、検出条件を満たす候補フローのうちペナルティがない候補フローだけをロングフローとして推定するので、正確にロングフローを推定することができる。なお、仮想スイッチ１は、検出条件を満たす候補フローのうちペナルティのない候補フローをロングフローとして特定する代わりに、ペナルティのない候補フローのうち検出条件を満たす候補フローをロングフローとして特定してもよい。
【００６４】
ところで、仮想スイッチ１は、観測スロットと推定スロットを複数に分けてロングフローを推定することもできる。図１０は、観測スロットと推定スロットを複数に分けるフロー推定方法を説明するための図である。図１０に示すように、初期化スロットにおいて、仮想スイッチ１は、ＴＣＰフラグがＦＩＮ、ＲＳＴ等であるパケットに関するエントリをフローキャッシュに登録する（０）。
【００６５】
観測スロット（＃１）において、仮想スイッチ１は、全てのキャッシュエントリの通信量を観測する。また、仮想スイッチ１は、ＯＦ処理部１１とＦＣ処理部１２との間の通信チャネルを監視し、Ｅｘフローの通信情報をコピーして候補フローテーブル１３に登録する。また、仮想スイッチ１は、終了したＴＣＰフローにペナルティを付与し、排除する。
【００６６】
推定スロット（＃１）において、仮想スイッチ１は、検出条件を満たすキャッシュエントリを特定し（１）、特定したキャッシュエントリに属するＥｘフローを候補フローとして特定する（２）。また、仮想スイッチ１は、サブネット単位等でまとめてＴＣＰフラグがＣＷＲ、ＥＣＥ等であるパケットに関するエントリをフローキャッシュに登録する（３）。
【００６７】
観測スロット（＃２）において、仮想スイッチ１は、検出条件を満たすキャッシュエントリだけを観測する。また、仮想スイッチ１は、ＯＦ処理部１１とＦＣ処理部１２との間の通信チャネルを監視し、Ｅｘフローの通信情報をコピーして候補フローテーブル１３に登録する。
【００６８】
推定スロット（＃２）において、仮想スイッチ１は、終了したＴＣＰフローを排除し、輻輳制御が効いたＴＣＰフローのペナルティを計算する（４）。そして、仮想スイッチ１は、残されたキャッシュエントリが検出条件を満たすかを確認する（５）。そして、仮想スイッチ１は、最後の推定スロット（＃２）において、ペナルティがないフローだけをロングフローと推定する（６）。
【００６９】
図１１は、図１０に示したフロー推定方法を用いる場合の仮想スイッチ１の時系列動作を示す図である。図１１に示すように、初期化スロットでは、フロー測定部が管理者から検出条件を受け付ける（ｔ２１）。そして、フロー測定部は、ＴＣＰ終了フラグアクションをフローキャッシュに登録する（ｔ２２）。
【００７０】
観測スロット（＃１）では、フロー測定部は、新たなＥｘフローを収集し（ｔ２３）、候補フローテーブル１３にＥｘフローの通信情報を登録する（ｔ２４）。そして、ＦＣ処理部１２が、フロー推定部に終了フラグのヘッダを伝送する（ｔ２５）。そして、フロー推定部が、候補フローテーブル１３の終了したＥｘフローにペナルティを付与する（ｔ２６）。そして、ＦＣ処理部１２が、フロー推定部に終了フラグのヘッダを伝送する（ｔ２７）。そして、フロー推定部は、候補フローテーブル１３の終了したＥｘフローにペナルティを付与する（ｔ２８）。
【００７１】
推定スロット（＃１）では、フロー測定部は、所定の時間間隔で全てのキャッシュエントリを収集する（ｔ２９）。そして、フロー測定部は、検出条件を満たすキャッシュエントリを特定し、特定したキャッシュエントリに属するＥｘフローを特定する（ｔ３０）。また、フロー測定部は、サブネットでまとめてＴＣＰ制御フラグアクションをフローキャッシュに登録する（ｔ３１）。
【００７２】
観測スロット（＃２）では、ＦＣ処理部１２は、フロー推定部に制御／終了フラグのヘッダを伝送し（ｔ３２）、フロー推定部は、候補フローテーブル１３の制御／終了したＥｘフローにペナルティを付与する（ｔ３３）。そして、ＦＣ処理部１２は、フロー推定部に制御／終了フラグのヘッダを伝送する（ｔ３４）。そして、フロー推定部は、候補フローテーブル１３の制御／終了したＥｘフローにペナルティを付与する（ｔ３５）。
【００７３】
推定スロット（＃２）では、フロー推定部は、フロー測定部により特定されたＥｘフローのうちペナルティがないＥｘフローだけをロングフローとして推定する（ｔ３６）。そして、フロー推定部は、推定したロングフローの情報を管理者端末に伝送する（ｔ３７）。
【００７４】
このように、仮想スイッチ１は、観測スロットと推定スロットを複数に分けてロングフローを推定することで、推定精度を上げることができる。
【００７５】
次に、ロングフローを推定する処理の例について図１２〜図１５を用いて説明する。図１２及び図１３は、ロングフローがある場合の例を示し、図１４及び図１５は、ロングフローがない場合の例を示す。なお、図１２〜図１５の例では、仮想スイッチ１は、ＴＣＰフラグのＦＩＮ及びＲＳＴだけを用い、ＣＷＲ及びＥＣＥは用いない。
【００７６】
図１２は、ロングフローが存在する場合の例を示す図である。図１２に示すように、フロー測定部は、初期化スロットにおいて、管理者から検出条件として、総バイト数１ＭＢ以上を受け付け、ＴＣＰフラグがＦＩＮ又はＲＳＴであるパケットに関するエントリをフローキャッシュに登録する。
【００７７】
そして、観測スロットにおいて、仮想スイッチ１は、ＯＦ処理部１１とＦＣ処理部１２との間の通信チャネルを監視し、新たなＥｘフローの通信情報をコピーして候補フローテーブル１３に登録する。ここでは、インデックスが「１」であり、Ｓ＿ＩＰ／Ｓ＿ポートが「１０．１．１．３０／５３４１１」であり、Ｄ＿ＩＰ／Ｄ＿ポートが「２０．５．３．４８／８０」であるエントリが候補フローテーブル１３に登録される。
【００７８】
その後、仮想スイッチ１は、新たなＥｘフローの通信情報をコピーして候補フローテーブル１３に登録する。新たなＥｘフローのインデックスは「９５」であり、Ｓ＿ＩＰ／Ｓ＿ポートが「１８．１．１．２０／３１１」であり、Ｄ＿ＩＰ／Ｄ＿ポートが「１．５．３．２８／８０」であるとする。そして、インデックスが「９５」のＥｘフローについてＦＩＮパケットが検出され、インデックスが「９５」のＥｘフローのペナルティが「１００％」に更新される。
【００７９】
そして、推定スロットにおいて、仮想スイッチ１は、総バイト数１ＭＢ以上を満たし、ペナルティがないフローをロングフローと推定する。インデックスが「１」であるＥｘフローの総バイト数が１ＭＢ以上であるとすると、仮想スイッチ１は、インデックスが「１」であるＥｘフローをロングフローと推定し、推定したロングフローの情報を伝送する。
【００８０】
図１３は、ロングフローが存在する場合の仮想スイッチ１の時系列動作を示す図である。図１３に示すように、初期化スロットでは、フロー測定部が管理者から検出条件（１ＭＢ以上）を受け付ける（ｔ４１）。そして、フロー測定部は、ＴＣＰ終了フラグアクションをフローキャッシュに登録する（ｔ４２）。
【００８１】
観測スロットでは、フロー測定部は、キャッシュエントリの統計値を収集する（ｔ４３）。そして、フロー測定部は、インデックスが「１」の新たなＥｘフローを収集し（ｔ４４）、候補フローテーブル１３にインデックスが「１」のＥｘフローの通信情報を登録する（ｔ４５）。
【００８２】
その後、フロー測定部は、インデックスが「９５」の新たなＥｘフローを収集し（ｔ４６）、候補フローテーブル１３にインデックスが「９５」のＥｘフローの通信情報を登録する（ｔ４７）。そして、ＦＣ処理部１２が、フロー推定部に終了フラグのヘッダを伝送する（ｔ４８）。ここで、ヘッダが伝送されたＥｘフローのインデックスは「９５」であるとする。そして、フロー推定部は、候補フローテーブル１３のインデックスが「９５」であるＥｘフローにペナルティを付与する（ｔ４９）。
【００８３】
推定スロットでは、フロー測定部は、キャッシュエントリの統計値を収集する（ｔ５０）。そして、フロー測定部は、検出条件を満たすキャッシュエントリを特定し、特定したキャッシュエントリに属する候補フローを特定する（ｔ５１）。そして、フロー推定部は、フロー測定部により特定された候補フローのうちペナルティがない候補フローだけをロングフローとして推定する（ｔ５２）。ここでは、インデックスが「１」であるＥｘフローがロングフローと推定される。そして、フロー推定部は、推定したロングフローの情報を管理者端末に伝送する（ｔ５３）。
【００８４】
図１４は、ロングフローがない場合の例を示す図である。図１４に示すように、フロー測定部は、初期化スロットにおいて、管理者から検出条件として、総バイト数１ＭＢ以上を受け付け、ＴＣＰフラグがＦＩＮ又はＲＳＴであるパケットに関するエントリをフローキャッシュに登録する。
【００８５】
そして、観測スロットにおいて、仮想スイッチ１は、ＯＦ処理部１１とＦＣ処理部１２との間の通信チャネルを監視し、新たなＥｘフローの通信情報をコピーして候補フローテーブル１３に登録する。ここでは、インデックスが「１」であり、Ｓ＿ＩＰ／Ｓ＿ポートが「１０．１．１．３０／５３４１１」であり、Ｄ＿ＩＰ／Ｄ＿ポートが「２０．５．３．４８／８０」であるエントリが候補フローテーブル１３に登録される。そして、インデックスが「１」のＥｘフローについてＦＩＮパケットが検出され、インデックスが「１」のＥｘフローのペナルティが「１００％」に更新される。
【００８６】
その後、仮想スイッチ１は、新たなＥｘフローの通信情報をコピーして候補フローテーブル１３に登録する。新たなＥｘフローのインデックスは「９５」であり、Ｓ＿ＩＰ／Ｓ＿ポートが「１８．１．１．２０／３１１」であり、Ｄ＿ＩＰ／Ｄ＿ポートが「１．５．３．２８／８０」であるとする。そして、インデックスが「９５」のＥｘフローについてＦＩＮパケットが検出され、インデックスが「９５」のＥｘフローのペナルティが「１００％」に更新される。
【００８７】
そして、推定スロットにおいて、仮想スイッチ１は、総バイト数１ＭＢ以上を満たし、ペナルティがないフローをロングフローと推定する。ここでは、総バイト数１ＭＢ以上を満たし、ペナルティがないフローはないので、仮想スイッチ１は、ロングフローがないことを伝送する。
【００８８】
図１５は、ロングフローがない場合の仮想スイッチ１の時系列動作を示す図である。図１５に示すように、初期化スロットでは、フロー測定部が管理者から検出条件（１ＭＢ以上）を受け付ける（ｔ６１）。そして、フロー測定部は、ＴＣＰ終了フラグアクションをフローキャッシュに登録する（ｔ６２）。
【００８９】
観測スロットでは、フロー測定部は、キャッシュエントリの統計値を収集する（ｔ６３）。そして、フロー測定部は、インデックスが「１」の新たなＥｘフローを収集し（ｔ６４）、候補フローテーブル１３にインデックスが「１」のＥｘフローの通信情報を登録する（ｔ６５）。そして、ＦＣ処理部１２が、フロー推定部に終了フラグのヘッダを伝送する（ｔ６６）。ここで、ヘッダが伝送されたＥｘフローのインデックスは「１」であるとする。そして、フロー推定部は、候補フローテーブル１３のインデックスが「１」であるＥｘフローにペナルティを付与する（ｔ６７）。
【００９０】
その後、フロー測定部は、インデックスが「９５」の新たなＥｘフローを収集し（ｔ６８）、候補フローテーブル１３にインデックスが「９５」のＥｘフローの通信情報を登録する（ｔ６９）。そして、ＦＣ処理部１２が、フロー推定部に終了フラグのヘッダを伝送する（ｔ７０）。ここで、ヘッダが伝送されたＥｘフローのインデックスは「９５」であるとする。そして、フロー推定部は、候補フローテーブル１３のインデックスが「９５」であるＥｘフローにペナルティを付与する（ｔ７１）。
【００９１】
推定スロットでは、フロー測定部は、キャッシュエントリの統計値を収集する（ｔ７２）。そして、フロー測定部は、検出条件を満たすキャッシュエントリを特定し、特定したキャッシュエントリに属する候補フローを特定する（ｔ７３）。そして、フロー推定部は、フロー測定部により特定された候補フローのうちペナルティがない候補フローだけをロングフローとして推定し、ロングフローはないと推定する（ｔ７４）。そして、フロー推定部は、ロングフローなしを管理者端末に伝送する（ｔ７５）。
【００９２】
次に、フロー測定部による処理の手順について説明する。図１６は、フロー測定部による処理の手順を示すフローチャートである。図１６に示すように、アクション登録部１６は、ＴＣＰ終了フラグアクション及びＴＣＰ制御フラグアクションをフローキャッシュに登録する（ステップＳ１）。
【００９３】
そして、エントリ収集部１７は、キャッシュエントリの統計値等を収集してキャッシュエントリテーブル１４に記録する（ステップＳ２）。なお、ここでは、観測スロット内で１回だけキャッシュエントリの統計値等が収集されるが、キャッシュエントリの統計値等は、観測スロット内で複数回収集されてもよい。そして、フロー測定部は、フロー検出の観測スロットであるか否かを判定し（ステップＳ３）、フロー検出の観測スロットである場合には、フロー監視部１８は、新たなＥｘフローがあるかを監視する（ステップＳ４）。
【００９４】
そして、フロー監視部１８は、新たなＥｘフローが出現したか否かを判定し（ステップＳ５）、新たなＥｘフローが出現しない場合には、ステップＳ４へ戻る。一方、新たなＥｘフローが出現した場合には、フロー監視部１８は、新たなＥｘフローの情報を通信チャネルから収集し（ステップＳ６）、新たなＥｘフローの情報を候補フローテーブル１３に登録する（ステップＳ７）。そして、フロー監視部１８は、ステップＳ４へ戻る。
【００９５】
また、ステップＳ３において、フロー検出の観測スロットでない場合には、エントリ収集部１７は、キャッシュエントリの統計値等をもう一度収集してキャッシュエントリテーブル１４に差分を記録する（ステップＳ８）。そして、フローフィルタ部１５は、候補フローとキャッシュエントリを収集し（ステップＳ９）、全ての候補フローについて推定が終わったか否かを判定する（ステップＳ１０）。そして、全ての候補フローについて推定が終わった場合には、フロー測定部は、処理を終了する。
【００９６】
一方、推定が終わっていない候補フローがある場合には、フローフィルタ部１５は、候補フローがどのキャッシュエントリに属するかを確認し（ステップＳ１１）、候補フローが属するキャッシュエントリが検出条件を満たすか否かを判定する（ステップＳ１２）。そして、候補フローが属するキャッシュエントリが検出条件を満たす場合には、フローフィルタ部１５は、ステップＳ１０へ戻る。一方、候補フローが属するキャッシュエントリが検出条件を満たさない場合には、フローフィルタ部１５は、候補フローにペナルティを与え（ステップＳ１３）、ステップＳ１０へ戻る。
【００９７】
このように、フローフィルタ部１５が、候補フローが属するキャッシュエントリが検出条件を満たさない場合に候補フローにペナルティを与えることで、仮想スイッチ１は、検出条件を満たす候補フローだけを対象にロングフローを推定することができる。
【００９８】
次に、フロー推定部による処理の手順について説明する。図１７は、フロー推定部による処理の手順を示すフローチャートである。図１７に示すように、フロー推定部は、フロー検出の観測スロットであるか否かを判定する（ステップＳ２１）。そして、フロー検出の観測スロットである場合には、フロー推定部は、ＴＣＰフラグがＦＩＮ、ＲＳＴ、ＣＷＲ又はＥＣＥであるパケットのヘッダを受信したか否かを判定する（ステップＳ２２）。そして、ＴＣＰフラグがＦＩＮ、ＲＳＴ、ＣＷＲ又はＥＣＥであるパケットのヘッダを受信しない場合には、フロー推定部は、ステップＳ２１へ戻る。
【００９９】
一方、ＴＣＰフラグがＦＩＮ、ＲＳＴ、ＣＷＲ又はＥＣＥであるパケットのヘッダをフロー推定部が受信した場合には、不要フロー検出部１９は、ヘッダを分解し、通信情報を特定する（ステップＳ２３）。そして、不要フロー検出部１９は、特定した通信情報に対応する候補フローが候補フローテーブル１３に存在するか否かを判定し（ステップＳ２４）、存在しない場合には、ステップＳ２１へ戻る。
【０１００】
一方、特定した通信情報に対応する候補フローが候補フローテーブル１３に存在する場合には、不要フロー検出部１９は、ＴＣＰフラグがＦＩＮ又はＲＳＴであるか否かを判定する（ステップＳ２５）。そして、不要フローマーキング部２０は、ＴＣＰフラグがＦＩＮ又はＲＳＴである場合には、候補フローにペナルティ（１００％）を与え（ステップＳ２６）、ＴＣＰフラグがＦＩＮ又はＲＳＴでない場合には、輻輳＿カウントを１増加する（ステップＳ２７）。そして、フロー推定部は、ステップＳ２１へ戻る。
【０１０１】
また、ステップＳ２１においてフロー検出の観測スロットでない場合には、候補フロー伝送部２１は、候補フローテーブル１３でペナルティがない（０％）フローだけを収集する（ステップＳ２８）。そして、候補フロー伝送部２１は、収集したフローに関する情報をロングフローに関する情報として管理者端末に伝送する（ステップＳ２９）。
【０１０２】
このように、候補フロー伝送部２１がペナルティがないフローだけを収集することで、仮想スイッチ１は、ロングフローを推定することができる。
【０１０３】
次に、仮想スイッチ１が動作するコンピュータのハードウェア構成について説明する。図１８は、仮想スイッチ１が動作するコンピュータのハードウェア構成を示す図である。図１８に示すように、コンピュータ５０は、メインメモリ５１と、ＣＰＵ（Central  Processing  Unit）５２と、ＬＡＮ（Local  Area  Network）インタフェース５３と、ＨＤＤ（Hard  Disk  Drive）５４とを有する。また、コンピュータ５０は、スーパーＩＯ（Input  Output）５５と、ＤＶＩ（Digital  Visual  Interface）５６と、ＯＤＤ（Optical  Disk  Drive）５７とを有する。
【０１０４】
メインメモリ５１は、プログラムやプログラムの実行途中結果などを記憶するメモリである。ＣＰＵ５２は、メインメモリ５１からプログラムを読み出して実行する中央処理装置である。ＣＰＵ５２は、メモリコントローラを有するチップセットを含む。
【０１０５】
ＬＡＮインタフェース５３は、コンピュータ５０をＬＡＮ経由で他のコンピュータに接続するためのインタフェースである。ＨＤＤ５４は、プログラムやデータを格納するディスク装置であり、スーパーＩＯ５５は、マウスやキーボードなどの入力装置を接続するためのインタフェースである。ＤＶＩ５６は、液晶表示装置を接続するインタフェースであり、ＯＤＤ５７は、ＤＶＤ（Digital  Versatile  Disc）の読み書きを行う装置である。
【０１０６】
ＬＡＮインタフェース５３は、ＰＣＩエクスプレス（ＰＣＩｅ）によりＣＰＵ５２に接続され、ＨＤＤ５４及びＯＤＤ５７は、ＳＡＴＡ（Serial  Advanced  Technology  Attachment）によりＣＰＵ５２に接続される。スーパーＩＯ５５は、ＬＰＣ（Low  Pin  Count）によりＣＰＵ５２に接続される。
【０１０７】
そして、コンピュータ５０において仮想スイッチ１として動作するプログラムは、コンピュータ５０により読み出し可能な記録媒体の一例であるＤＶＤに記憶され、ＯＤＤ５７によってＤＶＤから読み出されてコンピュータ５０にインストールされる。あるいは、仮想スイッチ１として動作するプログラムは、ＬＡＮインタフェース５３を介して接続された他のコンピュータシステムのデータベースなどに記憶され、これらのデータベースから読み出されてコンピュータ５０にインストールされる。そして、インストールされたプログラムは、ＨＤＤ５４に記憶され、メインメモリ５１に読み出されてＣＰＵ５２によって実行される。
【０１０８】
上述してきたように、実施例では、フロー監視部１８が、新たなＥｘフローを候補フローとして候補フローテーブル１３に登録する。そして、不要フローマーキング部２０が、ＴＣＰフラグがＦＩＮ、ＲＳＴ、ＣＷＲ又はＥＣＥであるパケットのヘッダに基づいて特定された候補フローのペナルティを更新する。そして、候補フロー伝送部２１が、ペナルティに基づいてロングフローを推定し、推定したロングフローの情報を管理者端末に送信する。したがって、仮想スイッチ１は、効率良くロングフローを推定し、ロングフローの情報を提供することができる。
【０１０９】
また、実施例では、フローフィルタ部１５が、候補フローのうち検出条件を満たさないフローにペナルティを与えるので、仮想スイッチ１は、検出条件を満たさないフローをロングフローから除外することができる。
【０１１０】
また、実施例では、フロー監視部１８は、ＯＦ処理部１１とＦＣ処理部１２との間の通信チャネルを監視して新たなＥｘフローを検出するので、候補フローを候補フローテーブル１３に確実に登録することができる。
【０１１１】
また、実施例では、アクション登録部１６が、ＴＣＰ終了フラグアクション及びＴＣＰ制御フラグアクションをフローキャッシュに登録する。そして、ＦＣ処理部１２が、ＴＣＰフラグがＦＩＮ、ＲＳＴ、ＣＷＲ又はＥＣＥであるパケットのヘッダを不要フロー検出部１９に送信する。そして、不要フロー検出部１９は、ヘッダに含まれる通信情報に基づいて候補フローテーブル１３から候補フローを特定し、特定した候補フローのペナルティを更新する。したがって、仮想スイッチ１は、終了したフロー及び輻輳制御が行われたフローをロングフローから除外することができる。
【０１１２】
また、実施例では、仮想スイッチ１は、総パケット数が１ＭＢ以上のフローだけをロングフローとして推定するので、ネットワークへの影響が大きいロングフローだけを推定することができる。
【０１１３】
また、実施例では、仮想スイッチ１は、ＯＦテーブルとフローキャッシュの両方のエントリを観測してロングフローを推定する代わりに、フローキャッシュのエントリだけを観測してロングフローを推定するので、効率良くロングフローを推定することができる。
【０１１４】
例えば、フローキャッシュのエントリ数を４、ＯＦテーブルに含まれるテーブルの数及び各テーブルのエントリ数をそれぞれ２０及び３００とする。ＯＦテーブルとフローキャッシュの両方のエントリを観測する場合には、４×２０×３００＝２４００個のエントリを観測する必要があるが、実施例では、仮想スイッチ１は、４個のエントリだけを観測すればよい。
【０１１５】
なお、実施例では、候補フローテーブル１３、キャッシュエントリテーブル１４、フロー推定部及びフロー測定部が仮想スイッチ１に含まれる場合について説明した。しかしながら、候補フローテーブル１３、キャッシュエントリテーブル１４、フロー推定部及びフロー測定部は仮想スイッチ１とは別の装置で実現されてもよい。
【０１１６】
また、実施例では、仮想スイッチ１によりフローが中継される場合について説明したが、物理スイッチによりフローが中継されてもよい。また、実施例では、ロングフローを推定する場合について説明したが、ショートフロー等の他の特徴を有するフローを推定してもよい。
【０１１７】
また、実施例では、仮想スイッチ１はＴＣＰフラグがＦＩＮ、ＲＳＴ、ＣＷＲ又はＥＣＥであるパケットを用いてＴＣＰフローの終了及び輻輳制御を特定したが、仮想スイッチ１は他の方法によりフローの終了及び輻輳制御を特定してもよい。
【符号の説明】
【０１１８】
１    仮想スイッチ
１１    ＯＦ処理部
１２    ＦＣ処理部
１３    候補フローテーブル
１４    キャッシュエントリテーブル
１５    フローフィルタ部
１６    アクション登録部
１７    エントリ収集部
１８    フロー監視部
１９    不要フロー検出部
２０    不要フローマーキング部
２１    候補フロー伝送部
５０    コンピュータ
５１    メインメモリ
５２    ＣＰＵ
５３    ＬＡＮインタフェース
５４    ＨＤＤ
５５    スーパーＩＯ
５６    ＤＶＩ
５７    ＯＤＤ
【図１】
2019097073.tif 000003
【図２】
2019097073.tif 000004
【図３】
2019097073.tif 000005
【図４】
2019097073.tif 000006
【図５】
2019097073.tif 000007
【図６】
2019097073.tif 000008
【図７】
2019097073.tif 000009
【図８】
2019097073.tif 000010
【図９】
2019097073.tif 000011
【図１０】
2019097073.tif 000012
【図１１】
2019097073.tif 000013
【図１２】
2019097073.tif 000014
【図１３】
2019097073.tif 000015
【図１４】
2019097073.tif 000016
【図１５】
2019097073.tif 000017
【図１６】
2019097073.tif 000018
【図１７】
2019097073.tif 000019
【図１８】
2019097073.tif 000020
【図１９】
2019097073.tif 000021
【図２０】
2019097073.tif 000022
【図２１】
2019097073.tif 000023