(57)【要約】【課題】複数の通信が存在するネットワークにおいて、通信装置の最適化機能を有効に活用させる。【解決手段】ネットワークを介して接続される端末間の通信を制御する複数の通信装置、及びネットワークを流れるパケットを解析する解析装置を備えるネットワークシステムであって、解析装置は、ネットワークを流れるパケットを解析し、解析の結果に基づいて通信装置が有する通信最適化機能の要否を通信毎に判定する解析部と、判定の結果に基づいて通信装置の制御命令を生成し、通信装置に制御命令を送信する制御部と、を有し、通信装置は、通信最適化機能が必要と判定された通信に対する最適処理を実行する最適化部と、パケットの送受信処理を制御し、制御命令に基づいて通信最適化機能を適用する通信を変更する接続管理部と、を有する。【選択図】図２
2016174268.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して接続される端末間の通信を制御する複数の通信装置、及び前記ネットワークを流れるパケットを解析する解析装置を備えるネットワークシステムであって、
前記解析装置は、
前記ネットワークを流れるパケットを解析し、前記解析の結果に基づいて前記通信装置が有する通信最適化機能の要否を前記通信毎に判定する解析部と、
前記判定の結果に基づいて前記通信装置の制御命令を生成し、前記通信装置に前記制御命令を送信する制御部と、
を有し、
前記通信装置は、
前記通信最適化機能が必要と判定された前記通信に対する最適処理を実行する最適化部と、
パケットの送受信処理を制御し、前記制御命令に基づいて前記通信最適化機能を適用する前記通信を変更する接続管理部と、
を有することを特徴とするネットワークシステム。
【請求項２】
請求項１に記載のネットワークシステムであって、
前記通信装置は、前記通信によって送信されたデータパケットを一時的に格納するバッファを有し、
前記接続管理部は、
第１の通信に対して前記通信最適化機能の有効化を指示する前記制御命令を受信した後、前記第１の通信によって送信されたデータパケットを受信した場合、当該データパケットを前記バッファに格納し、
前記バッファに格納されたデータパケットに対応する応答パケットを受信した場合、前記第１の通信に対する最適化処理を前記最適化部に開始させることを特徴とするネットワークシステム。
【請求項３】
請求項２に記載のネットワークシステムであって、
前記接続管理部は、
第２の通信に適用された前記通信最適化機能の無効化を指示する前記制御命令を受信した後、前記第２の通信によって送信されたデータパケットを受信した場合、当該データパケットを送信先の端末に対して送信し、
前記バッファに格納された前記第２の通信によって送信されたデータパケットに対応する応答パケットを受信した場合、前記第２の通信に対する最適化処理を前記最適化部に終了させることを特徴とするネットワークシステム。
【請求項４】
請求項３に記載のネットワークシステムであって、
前記接続管理部は、前記バッファに格納されたデータパケットの識別番号を管理し、
前記バッファに格納されたデータパケットの識別番号と、前記応答パケットに含まれる識別番号とを比較することによって、前記バッファに格納されたデータパケットに対する応答パケットであるか否かを判定することを特徴とするネットワークシステム。
【請求項５】
請求項３に記載のネットワークシステムであって、
前記接続管理部は、前記第２の通信に適用された前記通信最適化機能の無効化を指示する前記制御命令を受信した後、応答パケットを受信した場合、前記バッファに格納されるデータパケットから、前記受信した応答パケットに対応するデータパケットを削除することを特徴とするネットワークシステム。
【請求項６】
ネットワークを介して接続される端末間の通信を制御する複数の通信装置、及び前記ネットワークを流れるパケットを解析する解析装置を備えるネットワークシステムの制御方法であって、
前記ネットワークシステムの制御方法は、
前記解析装置が、前記ネットワークを流れるパケットを解析し、前記解析の結果に基づいて前記通信装置が有する通信最適化機能の要否を前記通信毎に判定する第１のステップと、
前記解析装置が、前記判定の結果に基づいて前記通信装置の制御命令を生成し、前記通信装置に前記制御命令を送信する第２のステップと、
前記通信装置が、パケットの送受信処理を制御する第３のステップと、
前記通信装置が、前記通信最適化機能が必要と判定された前記通信に対する最適処理を実行する第４のステップと、
前記通信装置が、前記制御命令に基づいて前記通信最適化機能を適用する前記通信を変更する第５のステップと、
を含むことを特徴とするネットワークシステムの制御方法。
【請求項７】
請求項６に記載のネットワークシステムの制御方法であって、
前記通信装置は、前記通信によって送信されたデータパケットを一時的に格納するバッファを有し、
前記第５のステップは、
第１の通信に対して前記通信最適化機能の有効化を指示する前記制御命令を受信した後、前記第１の通信によって送信されたデータパケットを受信した場合、当該データパケットを前記バッファに格納する第６のステップと、
前記バッファに格納されたデータパケットに対する応答パケットを受信した場合、前記第１の通信に対する最適化処理を開始する第７のステップと、を含むことを特徴とするネットワークシステムの制御方法。
【請求項８】
請求項７に記載のネットワークシステムの制御方法であって、
前記第５のステップは、
第２の通信に適用された前記通信最適化機能の無効化を指示する前記制御命令を受信した後、前記第２の通信によって送信されたデータパケットを受信した場合、当該データパケットを送信先の端末に対して送信する第８ステップと、
前記バッファに格納された前記第２の通信によって送信されたデータパケットに対する応答パケットを受信した場合、前記第２の通信に対する最適化処理を終了する第９のステップと、を含むことを特徴とするネットワークシステムの制御方法。
【請求項９】
請求項８に記載のネットワークシステムの制御方法であって、
前記通信装置は、前記バッファに格納されたデータパケットの識別番号を管理し、
前記第７のステップ及び前記第９のステップは、前記バッファに格納されたデータパケットの識別番号と、前記応答パケットに含まれる識別番号とを比較することによって、前記バッファに格納されたデータパケットに対応する応答パケットであるか否かを判定するステップを含むことを特徴とするネットワークシステムの制御方法。
【請求項１０】
請求項８に記載のネットワークシステムの制御方法であって、
前記第９のステップは、応答パケットを受信した場合、前記バッファに格納されるデータパケットから、前記バッファに格納されるデータパケットから、前記受信した応答パケットに対応するデータパケットを削除するステップを含むことを特徴とするネットワークシステムの制御方法。
【請求項１１】
ネットワークを介して接続される端末間の通信を制御する通信装置であって、
特定の通信に対して通信最適化機能に基づく最適化処理を実行する最適化部と、
パケットの送受信処理を制御する接続管理部と、を備え、
前記接続管理部は、
前記通信最適化機能を適用する通信を変更する制御命令を受信した場合、対象となる通信を特定し、
前記特定された通信に対する前記通信最適化機能の適用を変更することを特徴とする通信装置。
【請求項１２】
請求項１１に記載の通信装置であって、
前記通信によって送信されたデータパケットを一時的に格納するバッファを有し、
前記接続管理部は、
第１の通信に対して前記通信最適化機能の有効化を指示する前記制御命令を受信した後、前記第１の通信によって送信されたデータパケットを受信した場合、当該データパケットを前記バッファに格納し、
前記バッファに格納されたデータパケットに対する応答パケットを受信した場合、前記第１の通信に対する最適化処理を前記最適化部に開始させることを特徴とする通信装置。
【請求項１３】
請求項１２に記載の通信装置であって、
前記接続管理部は、
第２の通信に適用された前記通信最適化機能の無効化を指示する前記制御命令を受信した後、前記第２の通信によって送信されたデータパケットを受信した場合、当該データパケットを送信先の端末に対して送信し、
前記バッファに格納された前記第２の通信によって送信されたデータパケットに対する応答パケットを受信した場合、前記第２の通信に対する最適化処理を前記最適化部に終了させることを特徴とする通信装置。
【請求項１４】
請求項１３に記載の通信装置であって、
前記接続管理部は、前記バッファに格納されたデータパケットの識別番号を管理し、
前記バッファに格納されたデータパケットの識別番号と、前記応答パケットに含まれる識別番号とを比較することによって、前記バッファに格納されたデータパケットに対応する応答パケットであるか否かを判定することを特徴とする通信装置。
【請求項１５】
請求項１３に記載の通信装置であって、
前記最適化部は、
前記第２の通信に適用された前記通信最適化機能の無効化を指示する前記制御命令を受信した後、応答パケットを受信した場合、前記バッファに格納されるデータパケットから、前記受信した応答パケットに対応するデータパケットを削除することを特徴とする通信装置。
【請求項１６】
ネットワークを介して接続される端末間の通信を制御する通信装置に実行させるプログラムであって、
通信最適化機能を適用する通信を変更する制御命令を受信した場合、対象となる通信を特定する手順と、
前記特定された通信に対する前記通信最適化機能の適用を変更する手順と、
特定の通信に対して前記通信最適化機能に基づく最適化処理を実行する手順と、を前記通信装置に実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、端末間の通信を制御する通信装置に関する。
【背景技術】
【０００２】
クラウド等に用いられる拠点間の通信網として、ＩＰ−ＶＰＮ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ−  Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ）技術等を用いたＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を用いることが一般的になっている。
【０００３】
ある拠点に存在する端末と別の拠点に存在する端末との間で通信を行う場合、自拠点ＬＡＮ及びＷＡＮを接続する回線と、ＷＡＮ及び別拠点ＬＡＮを接続する回線とを経由して通信が行われる。これらの回線は、契約帯域に基づいて使用可能な帯域幅が定められている。
【０００４】
端末間の通信では、ＴＣＰを用いるのが一般的である。ＴＣＰ通信では、送信側の端末が送信したデータに対して、受信側の端末が受信済みデータの位置を送信端末にフィードバック通知する。送信側の端末は、フィードバック通知される受信済みデータの位置が変化しなくなった場合、廃棄検出と判定する。
【０００５】
さらに、送信側の端末は、輻輳ウィンドウサイズ（受信したことを受信端末から通知されなくても送信可能なデータサイズ）と呼ばれるパラメータを管理し、ＲＴＴ（Ｒｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅ）及び廃棄検出の有無に応じて、輻輳ウィンドウサイズを変化させる。
【０００６】
例えば、送信側の端末は、廃棄検出時又はＲＴＴ増加時にネットワークが混雑していると判定し、ウィンドウサイズを減少させる。これによって、送信帯域を間接的に減少させて、ネットワークの混雑を回避できる。また、送信側の端末は、廃棄が無い時やＲＴＴ減少時にネットワークが空いていると判定して、ウィンドウサイズを増加させる。これによって、送信帯域を間接的に増加させて、ネットワークの回線帯域を有効に利用できる。
【０００７】
ＲＴＴが大きく、かつ、廃棄率の高いＷＡＮのような回線では、ＴＣＰのウィンドウサイズが増加しにくくなり、通信帯域が低下することにより、契約回線の利用効率が低下する問題がある。また、ＷＡＮ及び無線のような長距離回線のコストは高いため、契約帯域によって使用可能な帯域幅が制限され、データの転送が目標時間以内に完了しない問題があった。
【０００８】
上記の問題を解決するために、２つのネットワークの中継地点に、セッションを介した通信を最適化する機能を備えた通信装置を設置して、帯域を有効に活用する手法が一般的になっている。前述した方法は、無線端末及びセンサ端末向けにも用いられるようになっている。
【０００９】
セッションを介した通信を最適化する技術として、ＷＡＮのＴＣＰ通信の帯域を向上させる技術（例えば、特許文献１）、及び端末間の通信データを削減する技術（例えば、特許文献２）などが知られている。
【００１０】
特許文献１には、「ネットワークに接続される第一の通信装置であって、前記第一の通信装置から前記ネットワークを介して第二の通信装置に送信されるパケットに関する帯域をインターバル毎に管理し、前記管理される現在のインターバルの再送帯域又は廃棄帯域及び過去のインターバルにおける制御帯域に基づいて、パケットを送出するための制御帯域を変更する帯域制御部と、前記制御帯域に従って、パケットを前記ネットワークに送出する送信部と、を有する」ことが記載されている。また、特許文献２には、「コンピュータ上で制限のないサイズのウインドウ内の可変長の繰り返されたフレーズを検出し、取り除くことのできるデータ圧縮システム及び方法」が記載されている。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特許第５１７５９８２号公報
【特許文献２】米国特許出願公開第２００２/００３７０３５号明細書
【発明の概要】
【発明が解決しようとする課題】
【００１２】
通信セッションを最適化する機能を備えた通信装置を設置することで、通信回線帯域を有効に活用する手法は、無線キャリア向けの多数の無線端末の通信最適化のニーズと、社会インフラ向けの多数のセンサ端末の情報収集効率化のニーズを満たすためにも用いられる。
【００１３】
無線キャリアや社会インフラ向けのニーズを満たすためには、多セッションを効率的に最適化せねばならないという課題があった。この課題を解決するために、本発明は、少ないリソース量で実際に通信中の最適化効果が高い通信セッションのみを効率的に最適化する方法、装置及びシステムを提供する。
【課題を解決するための手段】
【００１４】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、ネットワークを介して接続される端末間の通信を制御する複数の通信装置、及び前記ネットワークを流れるパケットを解析する解析装置を備えるネットワークシステムであって、前記解析装置は、前記ネットワークを流れるパケットを解析し、前記解析の結果に基づいて前記通信装置が有する通信最適化機能の要否を前記通信毎に判定する解析部と、前記判定の結果に基づいて前記通信装置の制御命令を生成し、前記通信装置に前記制御命令を送信する制御部と、を有し、前記通信装置は、前記通信最適化機能が必要と判定された前記通信に対する最適処理を実行する最適化部と、パケットの送受信処理を制御し、前記制御命令に基づいて前記通信最適化機能を適用する前記通信を変更する接続管理部と、を有することを特徴とする。
【発明の効果】
【００１５】
本発明によれば、複数の通信が存在するネットワークにおいて、通信装置の最適化機能を有効に活用できる。上記した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【００１６】
【図１】実施例１のネットワークシステムの構成例を示す説明図である。
【図２】実施例１の通信装置のハードウェア構成及びソフトウェア構成の一例を示すブロック図である。
【図３】実施例１の解析装置のハードウェア構成及びソフトウェア構成の一例を示すブロック図である。
【図４】実施例１の通信装置が送受信するパケットのフォーマットを示す説明図である。
【図５】実施例１の通信装置が保持するセッション管理テーブルの一例を示す説明図である。
【図６】実施例１の通信装置、転送装置、及び解析装置の各機能部の関係を示すブロック図である。各装置の機能部の処理について説明する。
【図７】実施例１の通信情報保存部が保持する各セッションのセッションデータのデータ構造を示す説明図である。
【図８】実施例１の通信情報保存部が保持するキャプチャデータのデータ構造を示す説明図である。
【図９】実施例１の通信情報保存部が保持するアナライズデータのデータ構造である。
【図１０】実施例１の解析装置の受信処理部が実行する処理を説明するフローチャートである。
【図１１】実施例１の解析装置の通信情報巡回部が実行する処理を説明するフローチャートである。
【図１２】実施例１の解析装置の通信情報巡回部が実行する処理を説明するフローチャートである。
【図１３】実施例１の通信装置の接続管理部が解析装置から制御命令を受信した場合に実行する処理を説明するフローチャートである。
【図１４Ａ】実施例１の通信装置の接続管理部が実行する処理を説明するフローチャートである。
【図１４Ｂ】実施例１の通信装置の接続管理部が実行する処理を説明するフローチャートである。
【図１５】実施例１の通信装置が最適化処理を開始するまでの状態遷移を示す説明図である。
【図１６】実施例１の通信装置が最適化処理を終了するまでの状態遷移を示す説明図である。
【図１７】実施例１の通信回線におけるセッションの状態を示す説明図である。
【図１８】従来のセッションに対する最適化機能の適用方法の流れを示すシーケンス図である。
【図１９】従来の通信装置における最適化機能の適用状態の一例を示す説明図である。
【発明を実施するための形態】
【００１７】
以下、添付図面を参照して本発明の実施例について説明する。各図において共通の構成については同一の参照符号を付している。
【実施例１】
【００１８】
図１は、実施例１のネットワークシステムの構成例を示す説明図である。
【００１９】
実施例１のネットワークシステムは、通信装置１００、解析装置１１０、転送装置１２０、及び複数の端末１３０から構成される。図１では、通信装置１００、解析装置１１０、及び転送装置１２０は一つずつであるが二つ以上あってもよい。
【００２０】
複数の端末１３０−１、１３０−２、１３０−３と転送装置１２０とは、ネットワーク１４０−１を介して互いに接続される。また、複数の端末１３０−４、１３０−５、１３０−６と通信装置１００とはネットワーク１４０−２を介して接続される。ネットワーク１４０は、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）及びＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等が考えられる。なお、ネットワーク１４０の種別に限定されない。
【００２１】
端末１３０は、ネットワーク１４０、通信装置１００、及び転送装置１２０を介して、他の端末１３０と通信する。
【００２２】
通信装置１００は、端末１３０間の通信を制御する。本実施例では通信装置１００は、セッション単位で通信を管理するものとする。また、本実施例では、セッションはＴＣＰセッションであるものとする。
【００２３】
通信装置１００は、パケットの受信処理及びパケットの送信処理を実行する。また、通信装置１００は、最適化機能を用いて特定のセッションを流れるパケットに対して最適化処理を実行する。通信装置１００は、解析装置１１０からの指示にしたがって、セッションに対する最適化機能の有効化又は無効化する。本実施例の通信装置１００は、解析装置１１０からの制御命令に基づいて、セッションを介した通信中に、最適化機能を適用するセッションを動的に変更する。
【００２４】
転送装置１２０は、端末１３０から送信されるパケットをネットワーク１４０−１又は通信装置１００に転送する。また、本実施例の転送装置１２０は、通信装置１００と転送装置１２０との間を通過するパケットのミラーパケットを、解析装置１１０に転送する。
【００２５】
解析装置１１０は、転送装置１２０から受信したミラーパケットを解析し、解析結果に基づいて通信装置１００の特定機能の要否をセッション毎に判定する。
【００２６】
解析装置１１０は、最適化機能を要と判定したセッションに対して最適化機能の有効化を指示する制御命令を通信装置１００に送信する。解析装置１１０は、ＴＣＰセッション毎に通信を管理し、また通信を制御することによって、効率的かつ効果的に通信装置１００の最適化機能を制御できる。
【００２７】
解析装置１１０は、最適化機能を不要と判定したセッションに対して最適化機能の無効化を指示する制御命令を通信装置１００に送信する。これによって、通信装置１００は、特定のセッションを流れるパケットに対してのみ最適化機能を適用し、他のセッションを流れるパケットはそのまま送信する。
【００２８】
ここで、図１８及び図１９を用いて、従来のセッションに対する最適化機能の適用方法について説明する。
【００２９】
図１８は、従来のセッションに対する最適化機能の適用方法の流れを示すシーケンス図である。図１９は、従来の通信装置における最適化機能の適用状態の一例を示す説明図である。
【００３０】
従来では、セッションを確立時に、セッションに対して最適化機能が適用される。具体的には、通信装置１９００は、３−Ｗａｙ  Ｈａｎｄｓｈａｋｅにおいて、端末１９１０−１と端末１９１０−２との間でＳＹＮパケット１８０１、ＳＹＮＡＣＫパケット１８０２、及びＡＣＫパケット１８０３が送受信され、セッションが確立された後、当該セッションに対して最適化機能を有効化する。すなわち、当該セッションにおける最適化処理が開始される（ステップＳ１８０４）。
【００３１】
また、従来では、セッションの切断時に、セッションに対する最適化機能の適用が終了する。具体的には、通信装置１９００は、端末１９１０−１と端末１９１０−２との間でＦＩＮ１８０５、ＦＩＮＡＣＫパケット１８０６、及びＡＣＫパケット１８０７が送受信され、セッションが切断された後、当該セッションに対する最適化機能を無効化する。すなわち、最適化処理が終了する（ステップＳ１８０８）。
【００３２】
従来技術では、セッションの確立時に最適化機能の適用が可能な上限数を超えた場合、当該セッションに対して最適化機能が適用されない。
【００３３】
図１９は、従来の通信装置１９００におけるセッションの状態を示す。図１９に示すように、通信装置１９００の最適化機能の適用が可能な上限数が「４」であり、最適化機能が適用されたセッションの数が「４」、最適化機能が適用されていないセッションの数が「２」である。このとき、最適化機能が適用された二つのセッションが切断された場合、従来技術では、セッションを介した通信中に、最適化機能が適用されていないセッションに対して新たに最適化機能を適用できない。したがって、最適化機能を最大限利用した通信の最適化ができないため、通信装置１９００の通信リソースの無駄が発生する。
【００３４】
本実施例では、前述したような課題を解決するために、解析装置１１０が、最適化機能の効果が高いセッションを動的に選択することによって、通信装置１００が有する通信リソースを最大限に利用した通信が可能となる。また、通信装置１００は、最適化機能の有効化の指示を受け付けた後、通信の信頼性を確保可能なタイミングで最適化機能を有効化する。
【００３５】
図２は、実施例１の通信装置１００のハードウェア構成及びソフトウェア構成の一例を示すブロック図である。
【００３６】
通信装置１００は、ハードウェア構成として、演算装置２００、主記憶装置２１０、及び複数のＮＩＣ２２０を有する。演算装置２００、主記憶装置２１０、及び複数のＮＩＣ２２０はシステムバス２３０を介して互いに接続される。
【００３７】
演算装置２００は、主記憶装置２１０に格納されるプログラムを実行する。演算装置２００は、例えば、ＣＰＵ、ＧＰＵ等が考えられる。演算装置２００がプログラムを実行することによって通信装置１００が有する機能を実現する。以下では、機能部を主語に処理を説明する場合、演算装置２００が当該機能部を実現するプログラムを実行していることを示す。
【００３８】
主記憶装置２１０は、演算装置２００が実行するプログラム及び当該プログラムの実行に必要な情報を格納する。また、主記憶装置２１０は、各プログラムが使用するワークエリア、及びバッファ２１４等の記憶領域を有する。
【００３９】
本実施例の主記憶装置２１０には、通信最適化部２１１及び接続管理部２１２を実現するプログラムが格納される。また、主記憶装置２１０にはセッション管理テーブル２１３が格納される。
【００４０】
通信最適化部２１１は、最適化機能を提供するモジュールであり、特定のセッションに対する最適化処理を実行する。最適化処理には、ＴＣＰ高速化処理、圧縮処理、アプリケーション高速化処理、差分転送処理、暗号高速化処理、及びキャッシュ処理などが含まれる。本実施例では、ＴＣＰ高速化処理を実現するＴＣＰ高速化機能を最適化機能の一例として説明する。
【００４１】
接続管理部２１２は、パケットの転送処理（送信処理及び受信処理）を制御する。また、接続管理部２１２は、解析装置１１０から送信される制御命令に基づいて、最適化機能を適用するセッションを動的に変更する。
【００４２】
セッション管理テーブル２１３は、通信装置１００上のセッションに関する情報を格納する。セッション管理テーブル２１３の詳細は図５を用いて後述する。
【００４３】
バッファ２１４は、通信装置１００が受信したパケットを一時的に格納する記憶領域である。バッファ２１４のサイズ及び数は適宜変更できる。
【００４４】
ＮＩＣ２２０は、他の装置と接続するためのインタフェースである。本実施例の通信装置１００は、解析装置１１０、転送装置１２０、及びネットワーク１４０−２のそれぞれに接続する三つのＮＩＣ２２０−１、２２０−２、２２０−３を備える。
【００４５】
なお、転送装置１２０は、通信装置１００と同様のハードウェア構成であるものとする。
【００４６】
図３は、実施例１の解析装置１１０のハードウェア構成及びソフトウェア構成の一例を示すブロック図である。
【００４７】
解析装置１１０は、ハードウェア構成として、演算装置３００、主記憶装置３１０、及び複数のＮＩＣ３２０を有する。演算装置３００、主記憶装置３１０、及び複数のＮＩＣ３２０はシステムバス３３０を介して互いに接続される。
【００４８】
演算装置３００、主記憶装置３１０、及びＮＩＣ３２０は、演算装置２００、主記憶装置２１０、及びＮＩＣ２２０と同一のものである。
【００４９】
主記憶装置３１０には、受信処理部３１１、通信装置制御部３１２、通信情報巡回部３１３、及び通信情報保存部３１４を実現するプログラムを格納する。
【００５０】
受信処理部３１１は、転送装置１２０から受信したミラーパケットのヘッダ情報に基づいて、ミラーパケットが転送されるセッションに対応するセッション情報が通信情報保存部３１４に格納されているか否かを判定する。
【００５１】
通信情報保存部３１４に上記情報が格納されている場合、受信処理部３１１は、通信情報保存部３１４に格納されるセッション情報とミラーパケットのヘッダ情報に含まれるセッション情報とを解析し、通信情報保存部３１４に格納されるセッション情報を更新する。ミラーパケットが通過するセッションのセッション情報が通信情報保存部３１４に格納されていない場合、受信処理部３１１は、当該セッションのセッション情報を、通信情報保存部３１４に格納する。
【００５２】
通信装置制御部３１２は、通信情報保存部３１４に格納される各セッションのセッション情報に基づいて通信装置１００に各種制御命令を送信する。
【００５３】
具体的には、任意のセッションに対して最適化機能が必要であると判定されている場合、通信装置制御部３１２は、セッションに対して最適化機能の有効化を指示する制御命令を通信装置１００に送信する。一方、任意のセッションに対して最適化機能が不要であると判定されている場合、通信装置制御部３１２は、セッションに対する最適化機能の無効化を指示する制御命令を通信装置１００に送信する。
【００５４】
通信情報巡回部３１３は、通信情報保存部３１４に格納される各セッションのセッション情報を確認し、各セッションに対して最適化機能の要否を判定し、判定結果を含むセッション情報を更新する。
【００５５】
通信情報保存部３１４は、各セッションのセッション情報を管理し、受信処理部３１１、通信装置制御部３１２、及び通信情報巡回部３１３から並列にセッション情報の更新操作を受け付ける。
【００５６】
図４は、実施例１の通信装置１００が送受信するパケットのフォーマットを示す説明図である。
【００５７】
パケットは、ＭＡＣヘッダ４００、ＩＰヘッダ４１０、ＴＣＰヘッダ４２０、ＴＣＰオプションヘッダ４３０、及びペイロード４５０を含む。
【００５８】
ＭＡＣヘッダ４００は、ＤＭＡＣ４０１、ＳＭＡＣ４０２、ＴＰＩＤ４０３、ＰＣＰ４０４、ＣＦＩ４０５、ＶＩＤ４０６、及びＴｙｐｅ４０７を含む。
【００５９】
ＤＭＡＣ４０１は、宛先ＭＡＣアドレスを表す。ＳＭＡＣ４０２は、送信元ＭＡＣアドレスを表す。Ｔｙｐｅ４０７は、ＭＡＣフレームタイプを表す。
【００６０】
ＴＰＩＤ４０３は、フレームタイプがＶＬＡＮであることを示す。ＰＣＰ４０４は、ＶＬＡＮの優先度を表す。ＣＦＩ４０５は、ＭＡＣアドレスが正規フォーマットであるかを表す。ＶＩＤ４０６はＶＬＡＮのＩＤ番号を表す。なお、ＶＬＡＮを用いた通信でない場合、ＴＰＩＤ４０３は存在しない。
【００６１】
ＩＰヘッダ４１０は、ＩＰ  ｌｅｎｇｔｈ４１１、ｐｒｏｔｏｃｏｌ４１２、ＳＩＰ４１３、及びＤＩＰ４１４を含む。
【００６２】
ＩＰ  ｌｅｎｇｔｈ４１１は、ＭＡＣヘッダを除くパケット長を表す。ｐｒｏｔｏｃｏｌ４１２は、プロトコル番号を表す。ＳＩＰ４１３は、送信元ＩＰアドレスを表す。ＤＩＰ４１４は、宛先ＩＰアドレスを現す。
【００６３】
ＴＣＰヘッダ４２０は、ｓｒｃ．ｐｏｒｔ４２１、ｄｓｔ．ｐｏｒｔ４２２、ＳＥＱ４２３、ＡＣＫ４２４、ｆｌａｇ４２５、及びｔｃｐ  ｈｌｅｎ４２６を含む。
【００６４】
ｓｒｃ．ｐｏｒｔ４２１は、送信元ポート番号を表す。ｄｓｔ．ｐｏｒｔ４２２は、宛先ポート番号を表す。ＳＥＱ４２３は、送信シーケンス番号を表す。ＡＣＫ４２４は、受信シーケンス番号を表す。ｆｌａｇ４２５は、ＴＣＰフラグ番号を表す。ｔｃｐ  ｈｌｅｎ４２６は、ＴＣＰのヘッダ長を表す。
【００６５】
ＴＣＰオプションヘッダ４３０は、ｏｐｔｉｏｎ  ｋｉｎｄ  １（４３１）、ｏｐｔｉｏｎ  ｌｅｎｇｔｈ  １（４３２）、ｌｅｆｔ＿ｅｄｇｅ＿１〜４（４３３、４３５、４３７、４３９）、及びｒｉｇｈｔ＿ｅｄｇｅ＿１〜４（４３４、４３６、４３８、４４０）を含む。
【００６６】
ｏｐｔｉｏｎ  ｋｉｎｄ  １（４３１）は、オプション種別を表す。ｏｐｔｉｏｎ  ｌｅｎｇｔｈ  １（４３２）は、オプション長を表す。ｌｅｆｔ＿ｅｄｇｅ＿１〜４（４３３、４３５、４３７、４３９）、及びｒｉｇｈｔ＿ｅｄｇｅ＿１〜４（４３４、４３６、４３８、４４０）は、一つのデータのうち、部分的に受信したデータ箇所の位置を送信先の端末１３０に通知するために用いられる。
【００６７】
なお、ｌｅｆｔ＿ｅｄｇｅ＿１〜４（４３３、４３５、４３７、４３９）、ｒｉｇｈｔ＿ｅｄｇｅ＿１〜４（４３４、４３６、４３８、４４０）は、部分的に受信できなかったデータ箇所の位置を通知するために用いられる場合もある。
【００６８】
ＴＣＰオプションヘッダ４３０は、ＴＣＰ通信を開始するときに、装置間の情報交換などに使用する場合もある。
【００６９】
例えば、ＭＳＳオプションは、ＴＣＰ通信を開始するときに、自装置の受信可能なＭＳＳのサイズを対向装置に通知するために用いられる。ＳＡＣＫオプションは、ＴＣＰ通信を開始するときに、自装置がＳＡＣＫオプションに対応可能であることを対向装置に通知するために用いられるだけでなく、通信中にパケットの廃棄が検出されたときに部分的に受信したデータ箇所を対向装置に通知するためにも用いられる。タイムスタンプオプションは、通信中の自装置の受信時刻を対向装置に通知するために用いられる。このように、ＴＣＰオプションヘッダ４３０は、通信開始時及び通信中に、自装置の対応可能な機能及び情報を対向装置に伝えるために用いられる。
【００７０】
図５は、実施例１の通信装置１００が保持するセッション管理テーブル２１３の一例を示す説明図である。
【００７１】
セッション管理テーブル２１３は、一つのセッション毎に一つのエントリを含む。セッション管理テーブル２１３のエントリは、送信元ＩＰアドレス５０１、送信元ポート番号５０２、送信先ＩＰアドレス５０３、送信先ポート番号５０４、先頭シーケンス番号５０５、末尾シーケンス番号５０６、ＯＮフラグ５０７、ＯＦＦフラグ５０８、及び種類５０９を含む。
【００７２】
送信元ＩＰアドレス５０１及び送信元ポート番号５０２は、送信元の装置（端末１３０）のＩＰアドレス及びポート番号を表す。送信先ＩＰアドレス５０３及び送信先ポート番号５０４は、送信先の装置（端末１３０）のＩＰアドレス及びポート番号を表す。
【００７３】
先頭シーケンス番号５０５は、バッファ２１４に蓄積された複数のパケットの先頭となるシーケンス番号を表す。末尾シーケンス番号５０６は、バッファ２１４に蓄積された複数のパケットの末尾となるシーケンス番号である。
【００７４】
ＯＮフラグ５０７は、最適化機能の有効化を指示するフラグである。ＯＮフラグ５０７には「０」又は「１」が格納される。ＯＮフラグ５０７には初期値として「０」が設定される。解析装置１１０によって最適化機能を有効化する制御命令を受信した場合、ＯＮフラグ５０７に「１」が設定される。これによって最適化機能を有効化するための処理が開始される。最適化機能が有効化された後、すなわち、セッションに対する最適化処理が開始した後、ＯＮフラグ５０７には再び「０」が設定される。
【００７５】
ＯＦＦフラグ５０８は、最適化機能の無効化を指示するフラグである。ＯＦＦフラグ５０８には「０」又は「１」が格納される。ＯＦＦフラグ５０８には初期値として「０」が設定される。解析装置１１０によって最適化機能を無効化する制御命令を受信した場合、ＯＦＦフラグ５０８に「１」が設定される。これによって最適化機能を無効化するための処理が開始される。最適化機能が無効化された後、すなわち、セッションに対する最適化処理が終了した後、ＯＦＦフラグ５０８には再び「０」が設定される。
【００７６】
種類５０９は、セッションに対して適用される最適化機能の種類を表す。
【００７７】
図６は、実施例１の通信装置１００、転送装置１２０、及び解析装置１１０の各機能部の関係を示すブロック図である。各装置の機能部の処理について説明する。
【００７８】
（転送装置１２０）
転送装置１２０は、四つのＮＩＣ６００を有し、また、ポートミラーリング機能部６１０を備える。ポートミラーリング機能部６１０は、ＮＩＣ６００−１から受信したパケットをＮＩＣ６００−２に出力し、また、受信したパケットと同一のミラーパケットをＮＩＣ６００−３から解析装置１１０に送信する。また、ポートミラーリング機能部６１０は、ＮＩＣ６００−２から受信したパケットをＮＩＣ６００−１に出力し、また、受信したパケットと同一のミラーパケットをＮＩＣ６００−４から解析装置１１０に送信する。
【００７９】
以下の説明では、ネットワーク１４０−１からネットワーク１４０−２へ流れるパケットを右方向のパケットと記載し、当該右方向のパケットのミラーパケットを右方向のミラーパケットと記載する。また、ネットワーク１４０−２からネットワーク１４０−１へ流れるパケットを左方向のパケットと記載し、当該左方向のパケットのミラーパケットを左方向のミラーパケットと記載する。なお、右方向のミラーパケット及び左方向のミラーパケットを特に区別しない場合、単にミラーパケットと記載する。
【００８０】
（解析装置１１０）
解析装置１１０の受信処理部３１１は、転送装置１２０から、ＮＩＣ３２０−１を介して右方向のミラーパケットを受信し、また、ＮＩＣ３２０−２を介して左方向のミラーパケットを受信する。受信処理部３１１は、受信したミラーパケットのヘッダ情報に基づいて、ミラーパケットが属するセッションのセッション情報が通信情報保存部３１４に格納されているか検索する。
【００８１】
上記情報が通信情報保存部３１４に格納されている場合、受信処理部３１１は、通信情報保存部３１４に格納されるセッション情報とミラーパケットのヘッダ情報におけるセッション情報とを解析し、通信情報保存部３１４に格納されるセッション情報を更新する。  上記情報が通信情報保存部３１４に格納されていない場合、受信処理部３１１は、当該セッションのセッション情報を、通信情報保存部３１４に格納する。
【００８２】
通信情報巡回部３１３は、通信情報保存部３１４に格納される各セッションのセッション情報を確認し、各セッションに対して通信装置１００の最適化機能の要否を判定し、判定結果を含むセッション情報を更新する。
【００８３】
通信装置制御部３１２は、通信情報保存部３１４に格納される各セッションのセッション情報を確認する。任意のセッションに対して最適化機能が要と判定されている場合、通信装置制御部３１２は、当該セッションに対して最適化機能の有効化を指示する制御命令を生成し、ＮＩＣ３２０−３を介して当該制御命令を通信装置１００に送信する。任意のセッションに対して最適化機能が不要と判定されている場合、通信装置制御部３１２は、当該セッションに対して最適化機能の無効化を指示する制御命令を生成し、ＮＩＣ３２０−３を介して当該制御命令を通信装置１００に送信する。
【００８４】
通信情報保存部３１４は、受信処理部３１１、通信装置制御部３１２、及び通信情報巡回部３１３から並列にセッション情報の更新操作を受け付ける。
【００８５】
ここで、図７、図８、図９を用いて通信情報保存部３１４に格納されるセッション情報について説明する。セッション情報は、セッションデータ７００、キャプチャデータ８００、及びアナライズデータ９００の三種類のデータ構造から構成される。
【００８６】
セッションデータ７００は、セッションを管理するための情報を格納する。キャプチャデータ８００は、セッションを流れるパケットのミラーパケットに関する情報を格納する。本実施例では、右方向のミラーパケットのキャプチャデータ８００と左方向のミラーパケットのキャプチャデータ８００が存在する。アナライズデータ９００は、ミラーパケットの解析結果を格納する。
【００８７】
一つのセッションデータ７００に対して、二つのキャプチャデータ８００と、一つのアナライズデータ９００とが対応付けられて管理される。
【００８８】
図７は、実施例１の通信情報保存部３１４が保持する各セッションのセッションデータ７００のデータ構造を示す説明図である。図８は、実施例１の通信情報保存部３１４が保持するキャプチャデータ８００のデータ構造を示す説明図である。図９は、実施例１の通信情報保存部３１４が保持するアナライズデータ９００のデータ構造である。
【００８９】
セッションデータ７００は、受信処理部３１１によって生成される情報であり、ｓｒｃ＿ｉｐ７０１、ｄｅｓｔ＿ｉｐ７０２、ｓｒｃ＿ｐｏｒｔ７０３、ｄｅｓｔ＿ｐｏｒｔ７０４、ｖｌａｎ７０５、ｐｒｅｖ７０６、ｎｅｘｔ７０７、ｃｄ［０］７０８、ｃｄ［１］７０９、及びａｄ７１０から構成される。
【００９０】
ｓｒｃ＿ｉｐ７０１及びｓｒｃ＿ｐｏｒｔ７０３は、送信元の装置のＩＰアドレス及びポート番号である。ｄｅｓｔ＿ｉｐ７０２及びｄｅｓｔ＿ｐｏｒｔ７０４は、送信先の装置のＩＰアドレス及びポート番号である。ｖｌａｎ７０５は、ｖｌａｎ番号である。
【００９１】
ｐｒｅｖ７０６及びｎｅｘｔ７０７はセッションデータ７００に対するポインタ変数である。ｃｄ［０］６０８及びｃｄ［１］６０９は、キャプチャデータ８００に対するポインタ変数である。ａｄ７１０はアナライズデータ９００に対するポインタ変数である。
【００９２】
キャプチャデータ８００は、受信処理部３１１によって生成及び更新される情報である。キャプチャデータ８００は、転送装置１２０を流れるパケットの方向毎に存在する。すなわち、右方向のミラーパケットのキャプチャデータ８００と、左方向のミラーパケットのキャプチャデータ８００とが存在する。
【００９３】
キャプチャデータ８００は、ｓｅｑ８０１、ａｃｋ８０２、ｔｘ＿ｐｋｔｓ８０３、ｒｅｔｒ＿ｐｋｔｓ８０４、ｔｘ＿ｂｙｔｅｓ８０５、ａｃｋ＿ｂｙｔｅｓ８０６、ｔｉｍｅｓｔａｍｐ＿ｔｖ３２［０］８０７、ｔｉｍｅｓｔａｍｐ＿ｔｖ３２［１］８０８、ｍｉｌｅｓｔｏｎｅ＿ｓｅｑ８０９、及びｍｉｌｅｓｔｏｎｅ＿ａｃｋ８１０から構成される。
【００９４】
ｓｅｑ８０１は、これまで受信したミラーパケットのシーケンス番号のうちの最後尾の番号である。ａｃｋ８０２は、これまで受信したミラーパケットのＡＣＫ番号の最後尾の番号である。
【００９５】
ｔｘ＿ｐｋｔｓ８０３は、これまで受信したミラーパケットの数である。ｒｅｔｒ＿ｐｋｔｓ８０４は、これまでミラーパケットのうちＴＣＰによる再送パケットの数である。
【００９６】
ｔｘ＿ｂｙｔｅｓ８０５は、これまで受信したミラーパケットのペイロードサイズの合計値である。ａｃｋ＿ｂｙｔｅｓ８０６は、これまで受信したミラーパケットのＡＣＫ済のバイト数の合計値である。
【００９７】
ｍｉｌｅｓｔｏｎｅ＿ｓｅｑ８０９は、装置間の往復遅延時間を計測する場合に用いられる目印シーケンス番号である。ｍｉｌｅｓｔｏｎｅ＿ａｃｋ８１０は、装置間の往復遅延時間を計測する場合に用いられる目印ＡＣＫ番号である。目印シーケンス番号及び目印ＡＣＫ番号を同一に刷ることによって、目印シーケンス番号を送信したパケットに対するＡＣＫパケットを識別することができる。
【００９８】
ｔｉｍｅｓｔａｍｐ＿ｔｖ３２［０］８０７は、ｓｅｑ８０１がｍｉｌｅｓｔｏｎｅ＿ｓｅｑ８０９より大きくなった場合における、最初のミラーパケットのタイムスタンプである。ｔｉｍｅｓｔａｍｐ＿ｔｖ３２［１］８０８は、ａｃｋ８０２がｍｉｌｅｓｔｏｎｅ＿ａｃｋ８１０より大きくなった場合における、最初のミラーパケットのタイムスタンプである。
【００９９】
アナライズデータ９００は、受信処理部３１１によって生成され、また、通信情報巡回部３１３によって更新されるセッション情報である。アナライズデータ９００は、ｉｎｉｔ＿ｔｖ９０１、ｌａｓｔ＿ｕｐｄａｔｅ＿ｔｖ９０２、ｌａｓｔ＿ｔｘ＿ｂｙｔｅ［０］９０３、ｌａｓｔ＿ｔｘ＿ｂｙｔｅ［１］９０４、ｌａｓｔ＿ａｃｋ＿ｂｙｔｅｓ［０］９０５、ｌａｓｔ＿ａｃｋ＿ｂｙｔｅｓ［１］９０６、ａｖｅｒａｇｅ＿ｂｗ［０］９０７、ａｖｅｒａｇｅ＿ｂｗ［１］９０８、ｃｕｒｒｅｎｔ＿ｂｗ［０］９０９、ｃｕｒｒｅｎｔ＿ｂｗ［１］９１０、ｃｕｒｒｅｎｔ＿ｔｘ＿ｒａｔｅ［０］９１１、ｃｕｒｒｅｎｔ＿ｔｘ＿ｒａｔｅ［１］９１２、ｃｕｒｒｅｎｔ＿ｌｏｓｓ＿ｒａｔｅ［０］９１３、ｃｕｒｒｅｎｔ＿ｌｏｓｓ＿ｒａｔｅ［１］９１４、ｃｕｒｒｅｎｔ＿ｒｔｔ＿ｕｓ［０］９１５、ｃｕｒｒｅｎｔ＿ｒｔｔ＿ｕｓ［１］９１６、ｆｉｎｉｓｈ＿ｃｏｕｎｔ９１７、及びｓｃｏｒｅ９１８から構成される。
【０１００】
ｉｎｉｔ＿ｔｖ９０１は、セッション内で最初に受信したミラーパケットのタイムスタンプである。ｌａｓｔ＿ｕｐｄａｔｅ＿ｔｖ９０２は、前回通信情報巡回部３１３がセッション情報を更新したときの時刻である。
【０１０１】
ｌａｓｔ＿ｔｘ＿ｂｙｔｅ［０］９０３は、前回通信情報巡回部３１３がセッション情報を更新したときまでに受信した右方向のミラーパケットのペイロードサイズの合計値である。ｌａｓｔ＿ｔｘ＿ｂｙｔｅ［１］９０４は、前回通信情報巡回部３１３がセッション情報を更新したときまでに受信した左方向のミラーパケットのペイロードサイズの合計値である。
【０１０２】
ｌａｓｔ＿ａｃｋ＿ｂｙｔｅｓ［０］９０５は、前回通信情報巡回部３１３がセッション情報を更新したときまでに受信した右方向のミラーパケットによってＡＣＫ済みのバイト数の合計値である。ｌａｓｔ＿ａｃｋ＿ｂｙｔｅｓ［１］９０６は、前回通信情報巡回部３１３がセッション情報を更新したときまでに受信した左方向のミラーパケットによってＡＣＫ済みのバイト数の合計値である。
【０１０３】
ａｖｅｒａｇｅ＿ｂｗ［０］９０７は、ｉｎｉｔ＿ｔｖ９０１以降現在までの右方向のパケットの通信速度の平均値である。ａｖｅｒａｇｅ＿ｂｗ［１］９０８は、ｉｎｉｔ＿ｔｖ９０１以降現在までの左方向のパケットの通信速度の平均値である。
【０１０４】
ｃｕｒｒｅｎｔ＿ｂｗ［０］９０９は、前回通信情報巡回部３１３がセッション情報を更新して以降現在までの右方向のパケットの通信速度の平均値である。ｃｕｒｒｅｎｔ＿ｂｗ［１］９１０は、前回通信情報巡回部３１３がセッション情報を更新して以降現在までの左方向のパケットの通信速度の平均値である。
【０１０５】
ｃｕｒｒｅｎｔ＿ｔｘ＿ｒａｔｅ［０］９１１は、前回通信情報巡回部３１３がセッション情報を更新して以降現在までの再送パケットを含む右方向のパケットの速度である。ｃｕｒｒｅｎｔ＿ｔｘ＿ｒａｔｅ［１］９１２は、前回通信情報巡回部３１３がセッション情報を更新して以降現在までの再送パケットを含む左方向のパケットの速度である。
【０１０６】
ｃｕｒｒｅｎｔ＿ｌｏｓｓ＿ｒａｔｅ［０］９１３は、右方向のパケットの再送率である。ｃｕｒｒｅｎｔ＿ｌｏｓｓ＿ｒａｔｅ［１］９１４は、ひらり方向のパケットの再送率である。
【０１０７】
ｃｕｒｒｅｎｔ＿ｒｔｔ＿ｕｓ［０］９１５は、ネットワーク１４０−２側の端末１３０と通信装置１００との間のマイクロ秒単位の往復遅延時間である。ｃｕｒｒｅｎｔ＿ｒｔｔ＿ｕｓ［１］９１６は、ネットワーク１４０−１側の端末１３０と通信装置１００との間のマイクロ秒単位の往復遅延時間である。
【０１０８】
ｆｉｎｉｓｈ＿ｃｏｕｎｔ９１７は、セッションが終了したか否かの判定に用いるフラグ変数である。ＦＩＮパケットが受信された場合、ｆｉｎｉｓｈ＿ｃｏｕｎｔ８１７の値が変更される。終了したセッションのセッション情報は、通信情報巡回部３１３によって削除される。また、通信情報巡回部３１３は、所定時間更新されていないセッション情報を削除する。
【０１０９】
ｓｃｏｒｅ９１８は、通信装置１００の最適化機能の要否の判定に用いる点数である。なお、アナライズデータ９００には、最適化機能の種別毎にｓｃｏｒｅ９１８が存在する。本実施例では、最適化機能としてＴＣＰ高速化を中心に説明するため、アナライズデータ９００には、ＴＣＰ高速化の要否を判定するｓｃｏｒｅ９１８が含まれるものとする。
【０１１０】
以上が、通信情報保存部３１４に格納される情報の説明である。図６の説明に戻る。
【０１１１】
（通信装置１００）
接続管理部２１２は、ＮＩＣ２２０−１を介してパケットを受信した場合、セッション管理テーブル２１３を参照して、最適化機能が適用されるセッションか否かを判定する。例えば、接続管理部２１２は、最適化機能が適用されるセッションの情報を保持する方法が考えられる。この場合、接続管理部２１２は、パケットのヘッダ情報に基づいてセッションを特定し、当該セッションに対して最適化機能が適用されているか否かを検索する。
【０１１２】
受信したパケットが最適化機能が適用されるセッションのパケットである場合、接続管理部２１２は、当該パケットを通信最適化部２１１に出力する。受信したパケットが最適化機能が適用されるセッションのパケットでない場合、接続管理部２１２は、ＮＩＣ２２０−２を介して転送装置１２０にパケットを送信する。
【０１１３】
ＮＩＣ２２０−２を介してパケットを受信した場合にも同様の処理が実行される。
【０１１４】
接続管理部２１２は、ＮＩＣ２２０−３を介して、任意のセッションに対する最適化機能の有効化を指示する制御命令又は任意のセッションに対する最適化機能の無効化を指示する制御命令を受信した場合、セッション管理テーブル２１３を更新する。
【０１１５】
通信最適化部２１１は、任意のセッションに適用された最適化機能に対応する最適化処理を実行する。例えば、ＴＣＰ高速化処理を実行する通信最適化部２１１は、ＮＩＣ２２０−２から受信したパケットが入力された場合、受信したパケットのＴＣＰ通信を終端し、より高速な輻輳制御アルゴリズムを実行するＴＣＰ通信に基づいてＮＩＣ２２０−１へパケットを出力するプロキシ機能を提供する。また、ＴＣＰ高速化処理を実行する通信最適化部２１１は、ＮＩＣ２２０−１から受信したパケットが入力された場合、受信したパケットのＴＣＰ通信を終端し、ＲＥＮＯとして知られるアルゴリズムを実行するＴＣＰ通信に基づいてパケットをＮＩＣ２２０−２へ出力する。
【０１１６】
本実施例では、接続管理部２１２がフィルタとしての機能を有するが、別途フィルタを設けてもよい。この場合、接続管理部２１２がフィルタに対して設定を行う。
【０１１７】
次に、解析装置１１０及び通信装置１００が実行する処理の詳細について説明する。まず、図１０、図１１及び図１２を用いて解析装置１１０が実行する処理について説明する。
【０１１８】
図１０は、実施例１の解析装置１１０の受信処理部３１１が実行する処理を説明するフローチャートである。
【０１１９】
受信処理部３１１は、ミラーパケットを受信した場合（ステップＳ１００１）処理を開始する。まず、受信処理部３１１は、受信したミラーパケットのヘッダ情報を主記憶装置３１０に格納する（ステップＳ１００２）。ミラーパケットのヘッダ情報のみを主記憶装置３１０に格納することによって、主記憶装置３１０の記憶領域の使用量を節約し、かつ、処理性能を高めることができる。
【０１２０】
次に、受信処理部３１１は、通信情報保存部３１４が受信したミラーパケットが属するセッションのセッション情報を保持しているか否かを判定する（ステップＳ１００３）。具体的には、受信処理部３１１は、通信情報保存部３１４に格納されるセッション情報の中から、受信したミラーパケットが属するセッションのセッション情報を検索する。
【０１２１】
ＮＩＣ３２０−１から受信したミラーパケットの場合、受信処理部３１１は、ＳＩＰ４１３がｓｒｃ＿ｉｐ７０１、ＤＩＰ４１４がｄｅｓｔ＿ｉｐ７０２、ｓｒｃ．ｐｏｒｔ４２１がｓｒｃ＿ｐｏｒｔ７０３、ｄｓｔ．ｐｏｒｔ４２２がｄｅｓｔ＿ｐｏｒｔ７０４、ＶＩＤ４０６がｖｌａｎ７０５と一致するエントリを検索する。ＮＩＣ３２０−２から受信したミラーパケットの場合、受信処理部３１１は、ＳＩＰ４１３がｄｅｓｔ＿ｉｐ７０２、ＤＩＰ４１４がｓｒｃ＿ｉｐ７０１、ｓｒｃ．ｐｏｒｔ４２１がｄｅｓｔ＿ｐｏｒｔ７０４、ｄｓｔ．ｐｏｒｔ４２２がｓｒｃ＿ｐｏｒｔ７０３、ＶＩＤ４０６がｖｌａｎ７０５と一致するエントリを検索する。
【０１２２】
通信情報保存部３１４が受信したミラーパケットが属するセッションのセッション情報を保持していると判定された場合、受信処理部３１１は、当該セッション情報を読み出し（ステップＳ１００４）、受信したミラーパケットに基づいてセッション情報を更新する（ステップＳ１００５）。その後、受信処理部３１１は、ステップＳ１００１に戻り同様の処理を実行する。ステップＳ１００５では、例えば、以下のような処理が実行される。
【０１２３】
受信処理部３１１は、キャプチャデータ８００のｔｘ＿ｐｋｔｓ８０３に「１」を加算する。ＳＥＱ４２３がｓｅｑ８０１より大きい場合、受信処理部３１１は、ＳＥＱ４２３とｓｅｑ８０１との差分をｔｘ＿ｂｙｔｅｓ８０５に追加し、ｓｅｑ８０１及びｔｉｍｅｓｔａｍｐ＿ｔｖ３２［０］８０７を更新する。
【０１２４】
ＡＣＫ４２４がａｃｋ８０２より大きい場合、受信処理部３１１は、ＡＣＫ４２４とａｃｋ８０２との差分をａｃｋ＿ｂｙｔｅｓ８０６に追加し、ａｃｋ８０２及びｔｉｍｅｓｔａｍｐ＿ｔｖ３２［１］８０８を更新する。
【０１２５】
ＳＥＱ４２３がｓｅｑ８０１より小さい場合、又はＳＥＱ４２３がｓｅｑ８０１と等しく、かつ、ペイロード長が「０」の場合、受信処理部３１１は、ｒｅｔｒ＿ｐｋｔｓ８０４に「１」を加算する。
【０１２６】
通信情報保存部３１４が受信したミラーパケットが属するセッションのセッション情報を保持していないと判定された場合、受信処理部３１１は、新たにセッション情報を生成し、通信情報保存部３１４に生成されたセッション情報を格納する（ステップＳ１００６）。ここでは、一つのセッションデータ７００、二つのキャプチャデータ８００、及び一つのアナライズデータ９００を含むセッション情報が生成される。その後、受信処理部３１１は、ステップＳ１００１に戻り同様の処理を実行する。ステップＳ１００６では、例えば、以下のような処理が実行される。
【０１２７】
受信処理部３１１は、ｔｉｍｅｓｔａｍｐ＿ｔｖ３２［０］８０７及びｔｉｍｅｓｔａｍｐ＿ｔｖ３２［１］８０８に、受信したミラーパケットのタイムスタンプを設定する。受信処理部３１１は、ｔｘ＿ｐｋｔｓ８０３に「１」を設定する。受信処理部３１１は、ｔｘ＿ｂｙｔｅｓ８０５にペイロード長を設定し、ｓｅｑ８０１にＳＥＱ４２３の値を設定し、また、ａｃｋ８０２にＡＣＫ４２４の値を設定する。
【０１２８】
図１１及び図１２は、実施例１の解析装置１１０の通信情報巡回部３１３が実行する処理を説明するフローチャートである。
【０１２９】
通信情報巡回部３１３は、周期的に又オペレータ等からの指示を受け付けた場合に、以下で説明する処理を開始する。以下の説明では、図１１に示す処理を実行することをセッション情報の巡回とも記載する。
【０１３０】
通信情報巡回部３１３は、通信情報保存部３１４に格納されるセッション情報の中から対象のセッション情報を選択する（ステップＳ１１０１）。本実施例はセッション情報の選択順番に依存しない。
【０１３１】
なお、全てのセッション情報について処理が完了した場合、通信情報巡回部３１３は、処理を終了する。また、通信情報保存部３１４に一つもセッション情報が格納されていない場合、通信情報巡回部３１３は、処理を終了する。この場合、セッション情報が格納された後、以下で説明する処理が実行される。
【０１３２】
通信情報巡回部３１３は、対象のセッション情報に基づいてパケットの再送率を算出する（ステップＳ１１０２）。
【０１３３】
具体的には、通信情報巡回部３１３は、右向きのパケットに対応するキャプチャデータ８００のｔｘ＿ｐｋｔｓ８０３及びｒｅｔｒ＿ｐｋｔｓ８０４を下式（１）に代入して右向きパケットの再送率を算出する。通信情報巡回部３１３は、同様に、左向きパケットに対応するキャプチャデータ８００のｔｘ＿ｐｋｔｓ８０３及びｒｅｔｒ＿ｐｋｔｓ８０４を式（１）に代入して左向きパケットの再送率を算出する。通信情報巡回部３１３は、アナライズデータ９００のｃｕｒｒｅｎｔ＿ｌｏｓｓ＿ｒａｔｅ［０］９１３に算出された右向きのパケットの再送率を設定する。また、通信情報巡回部３１３は、ｃｕｒｒｅｎｔ＿ｌｏｓｓ＿ｒａｔｅ［１］９１４に算出された左向きのパケットの再送率を設定する。
【０１３４】
【数１】
2016174268.tif 000003
【０１３５】
次に、通信情報巡回部３１３は、対象のセッション情報に基づいて、通信の開始から現在までの平均帯域を算出する（ステップＳ１１０３）。
【０１３６】
具体的には、通信情報巡回部３１３は、右向きのパケットに対応するキャプチャデータ８００のａｃｋ＿ｂｙｔｅｓ８０６及びアナライズデータ９００のｉｎｉｔ＿ｔｖ９０１を下式（２）に代入して、右向きの平均帯域を算出する。通信情報巡回部３１３は、同様に、左向きのパケットに対応するキャプチャデータ８００のａｃｋ＿ｂｙｔｅｓ８０６及びアナライズデータ９００のｉｎｉｔ＿ｔｖ９０１を式（２）に代入して、左向きの平均帯域を算出する。通信情報巡回部３１３は、ａｖｅｒａｇｅ＿ｂｗ［０］９０７に算出された右向きの平均帯域を設定する。また、通信情報巡回部３１３は、ａｖｅｒａｇｅ＿ｂｗ［１］９０８に算出された左向きの平均帯域を設定する。
【０１３７】
【数２】
2016174268.tif 000004
【０１３８】
次に、通信情報巡回部３１３は、対象のセッション情報に基づいて、現在の帯域を算出する（ステップＳ１１０４）。
【０１３９】
具体的には、通信情報巡回部３１３は、右向きのパケットに対応するキャプチャデータ８００のａｃｋ＿ｂｙｔｅｓ８０６及びアナライズデータ９００のｌａｓｔ＿ｕｐｄａｔｅ＿ｔｖ９０２を下式（３）に代入して、現在の右向きの帯域を算出する。通信情報巡回部３１３は、左向きのパケットに対応するキャプチャデータ８００のａｃｋ＿ｂｙｔｅｓ８０６及びアナライズデータ９００のｌａｓｔ＿ｕｐｄａｔｅ＿ｔｖ９０２を式（３）に代入して、現在の左向きの帯域を算出する。通信情報巡回部３１３は、アナライズデータ９００のｃｕｒｒｅｎｔ＿ｂｗ［０］９０９に算出された現在の右向きの帯域を設定し、ｃｕｒｒｅｎｔ＿ｂｗ［１］９１０に算出された現在の左向きの帯域を設定する。
【０１４０】
【数３】
2016174268.tif 000005
【０１４１】
次に、通信情報巡回部３１３は、対象のセッション情報に基づいて、前回のセッション情報の巡回後から現在までの送信速度を算出する（ステップＳ１１０５）。
【０１４２】
具体的には、通信情報巡回部３１３は、右向きのパケットに対応するキャプチャデータ８００のｔｘ＿ｂｙｔｅｓ８０５及びアナライズデータ９００のｌａｓｔ＿ｕｐｄａｔｅ＿ｔｖ９０２を下式（４）に代入して、現在の右向きの送信速度を算出する。通信情報巡回部３１３は、左向きのパケットに対応するキャプチャデータ８００のｔｘ＿ｂｙｔｅｓ８０５及びアナライズデータ９００のｌａｓｔ＿ｕｐｄａｔｅ＿ｔｖ９０２を式（４）に代入して、現在の左向きの送信速度を算出する。通信情報巡回部３１３は、アナライズデータ９００のｃｕｒｒｒｅｎｔ＿ｔｘ＿ｒａｔｅ［０］９１１に算出された現在の右向きの送信速度を設定し、ｃｕｒｒｒｅｎｔ＿ｔｘ＿ｒａｔｅ［１］９１２に算出された現在の左向きの送信速度を設定する。
【０１４３】
【数４】
2016174268.tif 000006
【０１４４】
次に、通信情報巡回部３１３は、送信済バイト数及びＡＣＫ済バイト数をセッション情報に保存する（ステップＳ１１０６、ステップＳ１１０７）。
【０１４５】
具体的には、通信情報巡回部３１３は、右向きのパケットに対応するキャプチャデータ８００のｔｘ＿ｂｙｔｅｓ８０５をアナライズデータ９００のｌａｓｔ＿ｔｘ＿ｂｙｔｅｓ［０］９０３に保存し、また、当該キャプチャデータ８００のａｃｋ＿ｂｙｔｅｓ８０６をアナライズデータ９００のｌａｓｔ＿ａｃｋ＿ｂｙｔｅｓ［０］９０５に保存する。また、通信情報巡回部３１３は、左向きのパケットに対応するキャプチャデータ８００のｔｘ＿ｂｙｔｅｓ８０５をアナライズデータ９００のｌａｓｔ＿ｔｘ＿ｂｙｔｅｓ［１］９０４に保存し、また、当該キャプチャデータ８００のａｃｋ＿ｂｙｔｅｓ８０６をアナライズデータ９００のｌａｓｔ＿ａｃｋ＿ｂｙｔｅｓ［１］９０６に保存する。
【０１４６】
次に、通信情報巡回部３１３は、現在の時刻をセッション情報の巡回の時刻として保存する（ステップＳ１１０８）。
【０１４７】
具体的には、通信情報巡回部３１３は、現在の時刻をアナライズデータ９００のｌａｓｔ＿ｕｐｄａｔｅ＿ｔｖ９０２に設定する。
【０１４８】
次に、通信情報巡回部３１３は、対象のセッション情報を用いて、ＲＴＴ（Ｒｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅ）を算出する（ステップＳ１１０９）。
【０１４９】
具体的には、通信情報巡回部３１３は、右向きのパケットに対応するキャプチャデータ８００のｔｉｍｅｓｔａｍｐ＿ｔｖ３２［１］８０８と、左向きのパケットに対応するキャプチャデータ８００のｔｉｍｅｓｔａｍｐ＿ｔｖ３２［０］８０７とを下式（５）に代入して右向きの通信のＲＴＴを算出する。また、通信情報巡回部３１３は、左向きのパケットに対応するキャプチャデータ８００のｔｉｍｅｓｔａｍｐ＿ｔｖ３２［１］８０８と、右向きのパケットに対応するキャプチャデータ８００のｔｉｍｅｓｔａｍｐ＿ｔｖ３２［０］８０７とを式（５）に代入して左向きの通信のＲＴＴを算出する。通信情報巡回部３１３は、アナライズデータ９００のｃｕｒｒｅｎｔ＿ｒｔｔ＿ｕｓ［０］９１５に算出された右向きの通信のＲＴＴを設定し、ｃｕｒｒｅｎｔ＿ｒｔｔ＿ｕｓ［１］９１６に算出された左向きの通信のＲＴＴを設定する。
【０１５０】
【数５】
2016174268.tif 000007
【０１５１】
次に、通信情報巡回部３１３は、対象のセッション情報に対応するセッションに対する最適化機能の要否を判定するスコアを算出する（ステップＳ１１１０）。スコアの算出処理は図１２を用いて後述する。通信情報巡回部３１３は、アナライズデータ９００のｓｃｏｒｅ９１８に算出されたスコアを設定する。その後、通信情報巡回部３１３は、ステップＳ１１０１に戻り、同様の処理を全てのセッション情報に対して繰り返し実行する。
【０１５２】
図１２を用いてスコアの算出処理ついて説明する。
【０１５３】
通信情報巡回部３１３は、再送率及びＲＴＴを用いてスコアを算出する（ステップＳ１２０１）。本実施例では、通信情報巡回部３１３は、右方向の通信及び左方向の通信のそれぞれについて、ステップＳ１２０１からステップＳ１２０４までの処理を実行する。
【０１５４】
通信情報巡回部３１３は、アナライズデータ９００のｃｕｒｒｅｎｔ＿ｌｏｓｓ＿ｒａｔｅ［０］９１３、ｃｕｒｒｅｎｔ＿ｒｔｔ＿ｕｓ［０］９１５、ｃｕｒｒｅｎｔ＿ｒｔｔ＿ｕｓ［１］９１６を下式（６）に代入してスコアを算出する。通信情報巡回部３１３は、アナライズデータ９００のｓｃｏｒｅ９１８に算出されたスコアを設定する。
【０１５５】
【数６】
2016174268.tif 000008
【０１５６】
ここで、式（６）のａ及びｂは変更可能なパラメータであり、例えば、ａが「０．００１」、ｂが「１」に設定される。式（６）を用いてスコアを算出した場合、通信遅延及びネットワークにおけるパケット破棄率が大きいセッションのスコアの値は大きくなる。そのため、スコアの値が大きいセッションに対して最適化機能が優先的に適用される。
【０１５７】
次に、通信情報巡回部３１３は、ＡＣＫ済バイト数（ｌａｓｔ＿ａｃｋ＿ｂｙｔｅｓ［０］９０５）がｃ以下であるか否かを判定する（ステップＳ１２０２）。ここでｃは変更可能なパラメータである。ステップＳ１２０２の処理は、通信開始後からの通信量が多いか否かを判定する処理である。
【０１５８】
ＡＣＫ済バイト数がｃ以下であると判定された場合、通信情報巡回部３１３は、ｓｃｏｒｅ９１８を「０」に変更し（ステップＳ１２０４）、その後、ステップＳ１２０５に進む。通信開始後から通信量が少ないセッションの場合、最適化機能を適用する必要がないため、スコアによる判定が行われない。
【０１５９】
ＡＣＫ済バイト数がｃより大きいと判定された場合、通信情報巡回部３１３は、現在の帯域（ｃｕｒｒｅｎｔ＿ｂｗ［０］９０９）がｄ以下であるか否かを判定する（ステップＳ１２０３）。ステップＳ１２０３の処理は、現在の通信量が多いか否かを判定する処理である。
【０１６０】
現在の帯域がｄ以下であると判定された場合、通信情報巡回部３１３は、ｓｃｏｒｅ９１８を「０」に変更し（ステップＳ１２０４）、その後、ステップＳ１２０５に進む。現在の通信量が少ないセッションの場合、最適化機能を適用する必要がないため、スコアによる判定が行われない。
【０１６１】
現在の帯域がｄより大きいと判定された場合、通信情報巡回部３１３は、左方向の通信についてスコアを算出する。
【０１６２】
ステップＳ１２０１では、式（６）のｃｕｒｒｅｎｔ＿ｌｏｓｓ＿ｒａｔｅ［０］９１３の代わりに、ｃｕｒｒｅｎｔ＿ｌｏｓｓ＿ｒａｔｅ［１］９１４を用いる式を用いてスコアが算出される。通信情報巡回部３１３は、ｓｃｏｒｅ９１８に算出されたスコアを加算する。
【０１６３】
ステップＳ１２０２では、ｌａｓｔ＿ａｃｋ＿ｂｙｔｅｓ［１］９０６がｃ以下であるか否かが判定される。また、ステップＳ１２０３では、ｃｕｒｒｅｎｔ＿ｂｗ［１］９１０がｄ以下であるか否かが判定される。
【０１６４】
右方向の通信及び左方向の通信をセットとして処理する通信装置１００を制御する場合、双方向の通信を考慮したスコアを用いることによって、効果的なセッションの制御を実現できる。
【０１６５】
双方向の通信についてスコアが算出された後、通信情報巡回部３１３は、全てのセッションについてスコアが算出されたか否かを判定する（ステップＳ１２０５）。
【０１６６】
全てのセッションについてスコアが算出されていないと判定された場合、通信情報巡回部３１３は、ステップＳ１２０１に戻り、同様の処理を実行する。
【０１６７】
全てのセッションについてスコアが算出されたと判定された場合、通信情報巡回部３１３は、算出されたスコアに基づいて、セッションに対する最適化機能の適用の要否を判定する（ステップＳ１２０６）。その後、通信情報巡回部３１３は、処理を終了する。
【０１６８】
例えば、スコアが閾値未満である場合、通信情報巡回部３１３は、当該セッションに対する最適化機能の適用は不要であると判定する。他の判定方法としては、通信情報巡回部３１３は、スコアが高い順に、予め規定された数だけセッションを選択し、選択されたセッションが最適化機能を適用するセッションであると判定する。
【０１６９】
なお、通信装置制御部３１２が、スコアに基づくセッションの最適化機能の適用の要否を判定してもよい。
【０１７０】
本実施例はスコアの算出方法に限定されない。例えば、パケットの廃棄率又は通信の遅延時間のいずれか一方のみを用いてスコアを算出してもよい。また、パケット廃棄率及び通信の遅延時間以外に、通信量、ポート番号、パケット長、データのエントロピー等に基づいて算出されたスコアを算出してもよい。
【０１７１】
通信情報巡回部３１３は、最適化機能を要と判定したセッションの情報を通信装置制御部３１２に通知する。
【０１７２】
通信装置制御部３１２は、通信情報巡回部３１３から通知された情報に基づいて、通信情報保存部３１４に格納されるセッション情報を参照して、最適化機能を要と判定したセッションに対して最適化機能を有効化するための制御命令を生成する。当該制御命令にはＩＰアドレス、ポート番号等のセッションを特定するための情報、及び最適化機能の有効化を指示する制御種別が含まれる。
【０１７３】
また、通信装置制御部３１２は、その他のセッションに対して最適化機能を無効化するための制御命令を生成する。当該制御命令には、最適化機能を要と判定したセッションを特定するための情報、及び最適化機能の無効化を指示する制御種別が含まれる。なお、特定のセッションに対する最適化機能の無効化を指示する場合には、制御命令には最適化機能を不要と判定したセッションを特定するための情報が含まれる。
【０１７４】
なお、最適化機能毎のスコアを用いる場合、制御命令には、最適化機能の種別を特定するための情報が含まれる。
【０１７５】
通信装置制御部３１２は、通信装置１００に二つの制御命令を送信する。
【０１７６】
次に、図１３、図１４Ａ及び図１４Ｂを用いて、通信装置１００が実行する処理について説明する。
【０１７７】
図１３は、実施例１の通信装置１００の接続管理部２１２が解析装置１１０から制御命令を受信した場合に実行する処理を説明するフローチャートである。
【０１７８】
接続管理部２１２は、解析装置１１０から制御命令を受信した場合（ステップＳ１３０１）、以下で説明する処理を開始する。
【０１７９】
接続管理部２１２は、制御命令に含まれる制御種別が最適化機能の有効化を指示する制御種別か否かを判定する（ステップＳ１３０２）。
【０１８０】
制御命令に含まれる制御種別が最適化機能の有効化を指示する制御種別であると判定された場合、接続管理部２１２は、制御命令に含まれるセッションを特定するための情報に基づいてセッション管理テーブル２１３を参照して、セッションを特定する（ステップＳ１３０３）。
【０１８１】
具体的には、接続管理部２１２は、送信元ＩＰアドレス５０１、送信元ポート番号５０２、送信先ＩＰアドレス５０３、及び送信先ポート番号５０４が制御命令に含まれる情報と一致するエントリを検索する。
【０１８２】
接続管理部２１２は、特定されたセッションのＯＮフラグ５０７に「１」を設定し、また、種類５０９にＴＣＰ高速化を設定する（ステップＳ１３０４）。その後、接続管理部２１２は、処理を終了する。接続管理部２１２は、ＯＮフラグ５０７が「０」に変更されるまで、ＡＣＫパケットの監視を開始する。
【０１８３】
ステップＳ１３０２において、制御命令に含まれる制御種別が最適化機能の無効化を指示する制御種別であると判定された場合、接続管理部２１２は、現在最適化機能が有効化されているセッションの中から、最適化機能を無効化するセッションを特定する（ステップＳ１３０５）。
【０１８４】
例えば、接続管理部２１２は、セッション管理テーブル２１３の種類５０９にＴＣＰ高速化が設定されているセッションを検索する。接続管理部２１２は、制御命令に含まれるセッションを特定するための情報と、特定されたセッションの情報とを比較することによって、最適化機能を無効化するセッションを特定する。
【０１８５】
接続管理部２１２は、特定されたセッションのＯＦＦフラグ５０８に「１」を設定し、また、種類５０９を空欄に変更する（ステップＳ１３０６）。その後、接続管理部２１２は、処理を終了する。
【０１８６】
図１４Ａ及び図１４Ｂは、実施例１の通信装置１００の接続管理部２１２が実行する処理を説明するフローチャートである。
【０１８７】
接続管理部２１２は、パケットを受信すると以下で説明する処理を開始する。接続管理部２１２は、受信したパケットを解析し、解析結果に基づいてセッション管理テーブル２１３して当該パケットが流れるセッションを特定する（ステップＳ１４０１）。
【０１８８】
具体的には、接続管理部２１２は、ＳＩＰ４１３、ｓｒｃ．ｐｏｒｔ４２１、ＤＩＰ４１４、及びｄｓｔ．ｐｏｒｔ４２２が送信元ＩＰアドレス５０１、送信元ポート番号５０２、送信先ＩＰアドレス５０３、及び送信先ポート番号５０４と一致するエントリを検索する。
【０１８９】
接続管理部２１２は、特定されたセッションに対応するエントリのＯＮフラグ５０７が「１」であるか否かを判定する（ステップＳ１４０２）。
【０１９０】
ＯＮフラグ５０７が「１」であると判定された場合、接続管理部２１２は、受信したパケットがＡＣＫパケットであるか否かを判定する（ステップＳ１４０３）。
【０１９１】
受信したパケットがＡＣＫパケットであると判定された場合、接続管理部２１２は、ＡＣＫパケットに含まれるＡＣＫ４２４が特定されたセッションに対応するエントリの先頭シーケンス番号５０５以上であるか否かを判定する（ステップＳ１４０４）。
【０１９２】
ＡＣＫパケットに含まれるＡＣＫ４２４が特定されたセッションに対応するエントリの先頭シーケンス番号５０５より小さいと判定された場合、接続管理部２１２は、受信したＡＣＫパケットを転送する（ステップＳ１４０５）。すなわち、通常の転送処理が実行される。この場合、接続管理部２１２は、受信したパケットを通信最適化部２１１に出力することなく、送信側のＮＩＣ２２０からパケットを転送する。その後、接続管理部２１２は、処理を終了する。
【０１９３】
ＡＣＫパケットに含まれるＡＣＫ４２４が特定されたセッションに対応するエントリの先頭シーケンス番号５０５より以上であると判定された場合、接続管理部２１２は、最適化処理の開始と判定して、受信したパケットを通信最適化部２１１に出力し、また、当該エントリのＯＮフラグ５０７を「０」に変更する（ステップＳ１４０６）。その後、接続管理部２１２は、処理を終了する。これによって、接続管理部２１２は、通信最適化部２１１に最適化処理を開始させることができる。
【０１９４】
ステップＳ１４０３において、受信したパケットがＡＣＫパケットではなくデータパケットであると判定された場合、接続管理部２１２は、バッファ２１４に受信したパケットを格納し、また当該パケットを転送する（ステップＳ１４０７）。この場合、接続管理部２１２は、受信したパケットを通信最適化部２１１に出力することなく、送信側のＮＩＣ２２０からパケットを転送する。
【０１９５】
ＯＮフラグ５０７が「１」である場合にデータパケットを受信した場合、通信最適化部２１１による最適化処理はまだ開始されていない。所定のシーケンス番号を含むＡＣＫパケットの受信後にセッションに対して最適化機能が適用されるため、接続管理部２１２が受信したパケットをバッファ２１４に格納する。これによって、通信最適化部２１１による最適化処理が開始される前であっても、当該最適化処理に必要なパケットをバッファ２１４に蓄積できる。
【０１９６】
次に、接続管理部２１２は、受信したデータパケットのペイロード長及び当該パケットに含まれるＳＥＱ４２３に基づいて、特定されたセッションに対応するエントリの先頭シーケンス番号５０５及び末尾シーケンス番号５０６を更新する（ステップＳ１４０８）。なお、先頭シーケンス番号５０５は、ＯＮフラグ５０７が「１」になってから初めて受信したデータパケットの場合のみ、ＳＥＱ４２３の値へと更新される。また、末尾シーケンス番号５０６は、ＳＥＱ４２３とペイロード長とを加算した値に更新される。その後、接続管理部２１２は、処理を終了する。
【０１９７】
ステップＳ１４０２において、特定されたセッションに対応するエントリのＯＮフラグ５０７が「０」であると判定された場合、接続管理部２１２は、当該エントリのＯＦＦフラグ５０８が「１」であるか否かを判定する（ステップＳ１４１１）。
【０１９８】
特定されたセッションに対応するエントリのＯＦＦフラグ５０８が「１」であると判定された場合、接続管理部２１２は、受信したパケットがＡＣＫパケットであるか否かを判定する（ステップＳ１４１２）。
【０１９９】
受信したパケットがＡＣＫパケットであると判定された場合、接続管理部２１２は、ＡＣＫパケットのＡＣＫ４２４が特定されたエントリの末尾シーケンス番号５０６以上であるか否かを判定する（ステップＳ１４１３）。
【０２００】
ＡＣＫパケットのＡＣＫ４２４が特定されたエントリの末尾シーケンス番号５０６より小さいと判定された場合、接続管理部２１２は、バッファ２１４に格納されるパケットのうち、パケットのＡＣＫ４２４が受信したパケットのＡＣＫ４２４に対応するパケット、又は当該ＡＣＫ４２４以下であるパケットをバッファ２１４から削除する（ステップＳ１４１４）。その後、接続管理部２１２は、処理を終了する。
【０２０１】
ＡＣＫパケットのＡＣＫ４２４が特定されたエントリの末尾シーケンス番号５０６以上であると判定された場合、接続管理部２１２は、特定されたセッションに対する最適化処理の終了と判定して、受信したパケットを転送し、また、当該エントリのＯＦＦフラグ５０８を「０」に変更する（ステップＳ１４１５）。この場合、接続管理部２１２は、受信したパケットを通信最適化部２１１に出力することなく、送信側のＮＩＣ２２０からパケットを転送する。その後、接続管理部２１２は、処理を終了する。これによって、接続管理部２１２は、通信最適化部２１１に最適化処理を終了させることができる。
【０２０２】
ステップＳ１４１２において、受信したパケットがデータパケットであると判定された場合、接続管理部２１２は、受信したパケットを転送する（ステップＳ１４１７）。この場合、接続管理部２１２は、受信したパケットを通信最適化部２１１に出力することなく、送信側のＮＩＣ２２０からパケットを転送する。その後、接続管理部２１２は、処理を終了する。
【０２０３】
ステップＳ１４１１において、特定されたセッションに対応するエントリのＯＦＦフラグ５０８が「０」であると判定された場合、接続管理部２１２は、当該セッションに対して最適化機能が適用されているか否かを判定する（ステップＳ１４１６）。
【０２０４】
具体的には、接続管理部２１２は、セッションに対応するエントリの種類５０９が空欄であるか否かを判定する。種類５０９が空欄である場合、接続管理部２１２は、セッションに対して最適化機能が適用されていないと判定する。
【０２０５】
特定されたセッションに対して最適化機能が適用されていないと判定された場合、接続管理部２１２は、受信したパケットを転送する（ステップＳ１４１７）。その後、接続管理部２１２は、処理を終了する。
【０２０６】
特定されたセッションに対して最適化機能が適用されていると判定された場合、接続管理部２１２は、通信最適化部２１１に受信したパケットを出力する（ステップＳ１４１８）。その後、接続管理部２１２は、処理を終了する。
【０２０７】
次に、具体例を用いて通信装置１００の制御内容について説明する。図１５は、実施例１の通信装置１００が最適化処理を開始するまでの状態遷移を示す説明図である。図１６は、実施例１の通信装置１００が最適化処理を終了するまでの状態遷移を示す説明図である。以下の説明では、端末１３０−１と端末１３０−４との間でセッションが確立されているものとする。
【０２０８】
状態１では、通信装置１００が端末１３０−１から受信したデータパケットＤ０〜Ｄ３を端末１３０−４に転送した後、ＯＮフラグ５０７に「１」が設定されたものとする。このとき、当該セッションに対する最適化処理は開始していない。
【０２０９】
なお、通信装置１００がデータパケットＤ０〜Ｄ３を受信した時点では、ＯＮフラグ５０７及びＯＦＦフラグ５０８が「０」であり、かつ、セッションに対して最適化機能が適用されていないため、データパケットＤ０〜Ｄ３を送信先の端末１３０−４に転送する（ステップＳ１４１７）。
【０２１０】
状態１では、ＯＮフラグ５０７に「１」が設定された後、通信装置１００は、端末１３０−１から端末１３０−４宛てのデータパケットＤ４〜Ｄ７を受信するものとする。
【０２１１】
状態２では、通信装置１００は、データパケットＤ４〜Ｄ７を受信した場合、ＯＮフラグ５０７が「１」であると判定し（ステップＳ１４０２がＹＥＳ）、また、受信したパケットがデータパケットであると判定する（ステップＳ１４０３がＮＯ）。したがって、通信装置１００は、受信したデータパケットＤ４〜Ｄ７をバッファ２１４に格納し、端末１３０−４に当該データパケットＤ４〜Ｄ７を転送する（ステップＳ１４０７）。また、通信装置１００は、先頭シーケンス番号５０５にデータパケットＤ４のＳＥＱ４２３を設定し、末尾シーケンス番号５０６にデータパケットＤ７のＳＥＱ４２３を設定する（ステップＳ１４０８）。
【０２１２】
また、状態２では、端末１３０−１が端末１３０−４宛てのデータパケットＤ８〜Ｄ１１を送信し、端末１３０−４が端末１３０−１宛てのＡＣＫパケットＡ０〜Ａ３を送信する。
【０２１３】
通信装置１００は、データパケットＤ８〜Ｄ１１を受信した場合、ＯＮフラグ５０７が「１」であると判定し（ステップＳ１４０２がＹＥＳ）、また、受信したパケットがデータパケットであると判定する（ステップＳ１４０３がＮＯ）。したがって、通信装置１００は、受信したデータパケットＤ８〜Ｄ１１をバッファ２１４に格納し、端末１３０−４に当該データパケットＤ８〜Ｄ１１を転送する（ステップＳ１４０７）。また、通信装置１００は、末尾シーケンス番号５０６にデータパケットＤ１１のＳＥＱ４２３を設定する（ステップＳ１４０８）。
【０２１４】
状態３では、通信装置１００は、端末１３０−１から受信したデータパケットＤ９〜Ｄ１２を端末１３０−４に転送し、端末１３０−１は、端末１３０−４宛てのデータパケットＤ１３〜Ｄ１６を送信し、端末１３０−４は、端末１３０−１宛てのＡＣＫパケットＡ４〜Ａ８を送信しているものとする。
【０２１５】
通信装置１００は、ＡＣＫパケットＡ０〜Ａ３を受信した場合、ＯＮフラグ５０７が「１」であると判定し（ステップＳ１４０２がＹＥＳ）、また、受信したパケットがＡＣＫパケットであると判定する（ステップＳ１４０３がＹＥＳ）。さらに、通信装置１００は、ＡＣＫパケットＡ３のＡＣＫ４２４が先頭シーケンス番号５０５より小さいと判定する（ステップＳ１４０４がＮＯ）。したがって、通信装置１００は、受信したＡＣＫパケットＡ０〜Ａ３を端末１３０−１に転送する（ステップＳ１４０５）。
【０２１６】
通信装置１００は、ＡＣＫパケットＡ４を受信した場合、ＡＣＫパケットＡ３のＡＣＫ４２４が先頭シーケンス番号５０５以上であると判定する（ステップＳ１４０４がＹＥＳ）。したがって、通信装置１００は、ＯＮフラグ５０７を「０」を変更し、最適化処理を開始する。
【０２１７】
状態４では、通信装置１００が端末１３０−１から受信したデータパケットＤ０〜Ｄ７をバッファ２１４に格納し、端末１３０−４に転送した後、ＯＦＦフラグ５０８に「１」が設定されたものとする。このとき、当該セッションに対する最適化処理は終了していない。また、セッションに対応するエントリの先頭シーケンス番号５０５にはデータパケットＤ０のＳＥＱ４２３が格納され、末尾シーケンス番号５０６にはデータパケットＤ７のＳＥＱ４２３が格納される。
【０２１８】
状態４では、端末１３０−４が、端末１３０−１宛てのＡＣＫパケットＡ０〜Ａ３を送信する。また、端末１３０−１が、端末１３０−４宛てのデータパケットＤ８〜Ｄ１１を送信する。
【０２１９】
状態５では、通信装置１００は、データパケットＤ８〜Ｄ１１を受信した場合、ＯＦＦフラグ５０８が「１」であると判定し（ステップＳ１４１１がＹＥＳ）、また、受信したパケットがデータパケットであると判定する（ステップＳ１４１２がＮＯ）。したがって、通信装置１００は、受信したデータパケットＤ８〜Ｄ１１をバッファ２１４に格納することなく、端末１３０−４に転送する（ステップＳ１４１７）。
【０２２０】
状態５では、通信装置１００は、ＡＣＫパケットＡ０〜Ａ３を受信した場合、ＯＦＦフラグ５０８が「１」であると判定し（ステップＳ１４１１がＹＥＳ）、また、受信したパケットがＡＣＫパケットであると判定する（ステップＳ１４１２がＹＥＳ）。さらに、通信装置１００は、ＡＣＫパケットＡ３のＡＣＫ４２４が末尾シーケンス番号５０６より小さいと判定する（ステップＳ１４１３がＮＯ）。したがって、通信装置１００は、バッファ２１４に格納されるデータパケットＡ０〜Ａ４を削除する（ステップＳ１４１４）。
【０２２１】
状態５では、端末１３０−１は、端末１３０−４宛てのデータパケットＤ１２〜Ｄ１５を送信する。また、端末１３０−４は、端末１３０−１宛てのＡＣＫパケットＡ４〜Ａ７を送信する。
【０２２２】
状態６では、通信装置１００は、データパケットＤ１２〜Ｄ１５を受信した場合、ＯＦＦフラグ５０８が「１」であると判定し（ステップＳ１４１１がＹＥＳ）、また、受信したパケットがデータパケットであると判定する（ステップＳ１４１２がＮＯ）。したがって、通信装置１００は、受信したデータパケットＤ８〜Ｄ１１をバッファ２１４に格納することなく、端末１３０−４に転送する（ステップＳ１４１７）。
【０２２３】
状態６では、通信装置１００は、ＡＣＫパケットＡ７を受信した場合、ＡＣＫパケットＡ３のＡＣＫ４２４が末尾シーケンス番号５０６以上であると判定する（ステップＳ１４１３がＹＥＳ）。したがって、通信装置１００は、ＯＦＦフラグ５０８を「０」を変更し、最適化処理を終了する。以後、通信装置１００は通常の転送処理を実行する。
【０２２４】
図１７は、実施例１の通信回線におけるセッションの状態を示す説明図である。通信装置１００が最適化機能を適用できるセッションの数は「４」であるものとする。
【０２２５】
図１７に示す例では、通信装置１００は、四つのセッションに対して最適化機能を適用している。解析装置１１０は、二つのセッションについて最適化機能が不要であると判定し、また、最適化機能を適用するセッションを新たに二つ選択する。
【０２２６】
通信装置１００は、解析装置から最適化機能を有効化する制御命令及び最適化機能を無効化する制御命令を受信した場合、最適化機能を適用するセッションを図１７に示すように変更する。これによって、通信装置１００が備える最適化機能を有効に活用できる。また、動的に最適化機能を適用するセッションを変更できるため、高品質の通信を提供することができる。
【０２２７】
また、通信装置１００は、ＴＣＰ通信においてデータパケットの再送等が可能となるように、最適化処理の開始又は終了タイミングを適切に管理できる。
【０２２８】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
【０２２９】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるＣＰＵが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク、光磁気ディスク、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどが用いられる。
【０２３０】
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、Ｃ／Ｃ＋＋、ｐｅｒｌ、Ｓｈｅｌｌ、ＰＨＰ、Ｊａｖａ（登録商標）等の広範囲のプログラム又はスクリプト言語で実装できる。
【０２３１】
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はＣＤ−ＲＷ、ＣＤ−Ｒ等の記憶媒体に格納し、コンピュータが備えるＣＰＵが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
【０２３２】
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
【符号の説明】
【０２３３】
１００  通信装置
１１０  解析装置
１２０  転送装置
１３０  端末
１４０  ネットワーク
２００  演算装置
２１０  主記憶装置
２１１  通信最適化部
２１２  接続管理部
２１３  セッション管理テーブル
２１４  バッファ
２２０  ＮＩＣ
２３０  システムバス
３００  演算装置
３１０  主記憶装置
３１１  受信処理部
３１２  通信装置制御部
３１３  通信情報巡回部
３１４  通信情報保存部
３２０  ＮＩＣ
３３０  システムバス
６００  ＮＩＣ
６１０  ポートミラーリング機能部
７００  セッションデータ
８００  キャプチャデータ
９００  アナライズデータ
１８０１  ＳＹＮパケット
１８０２  ＳＹＮＡＣＫパケット
１８０３  ＡＣＫパケット
１８０５  ＦＩＮパケット
１８０６  ＦＩＮＡＣＫパケット
１８０７  ＡＣＫパケット
１９００  通信装置
１９１０  端末
【図１】
2016174268.tif 000009
【図２】
2016174268.tif 000010
【図３】
2016174268.tif 000011
【図４】
2016174268.tif 000012
【図５】
2016174268.tif 000013
【図６】
2016174268.tif 000014
【図７】
2016174268.tif 000015
【図８】
2016174268.tif 000016
【図９】
2016174268.tif 000017
【図１０】
2016174268.tif 000018
【図１１】
2016174268.tif 000019
【図１２】
2016174268.tif 000020
【図１３】
2016174268.tif 000021
【図１４Ａ】
2016174268.tif 000022
【図１４Ｂ】
2016174268.tif 000023
【図１５】
2016174268.tif 000024
【図１６】
2016174268.tif 000025
【図１７】
2016174268.tif 000026
【図１８】
2016174268.tif 000027
【図１９】
2016174268.tif 000028