(57)【要約】  転送装置（１００）は、クライアント（７０）からサーバ（８０）に送信される要求パケットの送信パターンを、動的シーケンステーブルを用いて学習しておく。そして、転送装置（１００）は、学習した動的シーケンステーブルを用いて、クライアント（７０）から送信される要求パケットに続くパケットを予測し、予測したパケットを、サーバ（８０）に先行して送信する。
2017081801.tif 000002
【特許請求の範囲】
【請求項１】
クライアントから一連のパケットを受信した場合に、前記一連のパケットを受信した順に、各パケットを一意に識別する識別情報をシーケンステーブルに登録する登録部と、
前記クライアントからパケットを受信した場合に、受信したパケットの識別情報と、前記シーケンステーブルに登録された識別情報の列とを比較し、受信したパケットの識別情報の次のパケットの識別情報を特定する特定部と、
前記特定部が特定した識別情報に対応するパケットを送信する送信部と
を有することを特徴とする転送装置。
【請求項２】
前記登録部は、前記パケットを受信した場合に、前記パケットに含まれるコマンドを、前記クライアントがアクセスするファイルに依存する依存パラメータと、前記ファイルに依存しない非依存パラメータとに分け、前記非依存パラメータを基にして、前記パケットを一意に識別する識別情報を生成することを特徴とする請求項１に記載の転送装置。
【請求項３】
前記送信部が送信したパケットと、前記送信部が送信したパケットに対応する応答パケットとを対応付けて応答テーブルに登録する応答部を更に有し、前記応答部は、前記クライアントからパケットを受信した場合には、受信したパケットと前記応答テーブルとを基にして、応答パケットを特定し、特定した応答パケットを前記クライアントに送信することを特徴とする請求項１に記載の転送装置。
【請求項４】
第１転送装置と第２転送装置とを有する転送システムであって、
前記第１転送装置は、
クライアントから一連のパケットを受信した場合に、前記一連のパケットを受信した順に、各パケットを一意に識別する識別情報をシーケンステーブルに登録する登録部と、
前記クライアントからパケットを受信した場合に、受信したパケットの識別情報と、前記シーケンステーブルに登録された識別情報の列とを比較し、受信したパケットの識別情報の次のパケットの識別情報を特定する特定部と、
前記特定部が特定した識別情報に対応するパケットを送信する送信部と、
前記送信部が送信したパケットと、前記送信部が送信したパケットに対応する応答パケットとを対応付けて応答テーブルに登録し、前記応答テーブルを前記第２転送装置に送信する応答テーブル生成部とを有し、
前記第２転送装置は、
前記クライアントからパケットを受信した場合には、受信したパケットと前記応答テーブルとを基にして、応答パケットを特定し、特定した応答パケットを前記クライアントに送信する代理応答部
を有することを特徴とする転送システム。
【請求項５】
コンピュータが実行する転送方法であって、
クライアントから一連のパケットを受信した場合に、前記一連のパケットを受信した順に、各パケットを一意に識別する識別情報をシーケンステーブルに登録し、
前記クライアントからパケットを受信した場合に、受信したパケットの識別情報と、前記シーケンステーブルに登録された識別情報の列とを比較し、受信したパケットの識別情報の次のパケットの識別情報を特定し、
特定した識別情報に対応するパケットを送信する
処理を実行することを特徴とする転送方法。
【請求項６】
前記パケットを受信した場合に、前記パケットに含まれるコマンドを、前記クライアントがアクセスするファイルに依存する依存パラメータと、前記ファイルに依存しない非依存パラメータとに分け、前記非依存パラメータを基にして、前記パケットを一意に識別する識別情報を生成する処理を更に実行することを特徴とする請求項５に記載の転送方法。
【請求項７】
前記送信する処理が送信したパケットと、送信したパケットに対応する応答パケットとを対応付けて応答テーブルに登録し、前記クライアントからパケットを受信した場合には、受信したパケットと前記応答テーブルとを基にして、応答パケットを特定し、特定した応答パケットを前記クライアントに送信する処理を更に実行することを特徴とする転送方法。
【請求項８】
コンピュータに、
クライアントから一連のパケットを受信した場合に、前記一連のパケットを受信した順に、各パケットを一意に識別する識別情報をシーケンステーブルに登録し、
前記クライアントからパケットを受信した場合に、受信したパケットの識別情報と、前記シーケンステーブルに登録された識別情報の列とを比較し、受信したパケットの識別情報の次のパケットの識別情報を特定し、
特定した識別情報に対応するパケットを送信する
処理を実行させることを特徴とする転送プログラム。
【請求項９】
前記パケットを受信した場合に、前記パケットに含まれるコマンドを、前記クライアントがアクセスするファイルに依存する依存パラメータと、前記ファイルに依存しない非依存パラメータとに分け、前記非依存パラメータを基にして、前記パケットを一意に識別する識別情報を生成する処理を更に実行することを特徴とする請求項８に記載の転送プログラム。
【請求項１０】
前記送信する処理が送信したパケットと、送信したパケットに対応する応答パケットとを対応付けて応答テーブルに登録し、前記クライアントからパケットを受信した場合には、受信したパケットと前記応答テーブルとを基にして、応答パケットを特定し、特定した応答パケットを前記クライアントに送信する処理を更に実行させることを特徴とする転送プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、転送装置等に関する。
【背景技術】
【０００２】
近年、ビジネスのグローバル化、サーバのデータセンタ集約、クラウド利用の普及、モバイル端末の普及により、ＷＡＮ（Wide  Area  Network）上のデータの転送速度を高速化することが求められている。【０００３】
まず、データの転送速度を高速化する技術を説明する前に、ファイルを読み込む場合にクライアントとサーバとの間で実行されるパケットのやり取りの一例について説明する。図１６は、従来技術１を説明するための図である。従来技術１の処理手順は、ＣＩＦＳ（Common  Internet  File  System）に基づく処理手順である。図１６に示すように、クライアント１０が、サーバ２０のファイルを読み込む場合には、要求パケット１０ａ〜１０ｄ、応答パケット２０ａ〜２０ｄを送受信する。要求パケット１０ａ〜１０ｄ、応答パケット２０ａ〜２０ｄには、各種のコマンド、パラメータ、ステータス等が含まれる。【０００４】
例えば、クライアント１０が、ファイルＡを読み込む場合には、要求パケット１０ａを送信してから応答パケット２０ａを受信する処理、要求パケット１０ｂを送信してから応答パケット２０ｂを受信する処理を順に実行する。また、クライアント１０は、要求パケット１０ｃを送信してから、応答パケット２０ｃを受信する処理を実行する。【０００５】
クライアント１０が、ファイルＡに対する読み込みを終了する場合には、要求パケット１０ｄを送信してから、応答パケット２０ｄを受信する処理を実行する。【０００６】
図１６で説明したように、従来技術１では、要求パケットおよび応答パケットのやり取りにより、無駄な待ち時間が発生する。例えば、クライアント１０によるファイルＡを読み込む処理が終了するまでの時間ＲＴＴ（Round-Trip  Time）は、式（１）によって示される。式（１）において、ＲＴＴ１は、クライアント１０が要求パケット１０ａを送信してから、応答パケット２０ａを受信するまでの時間である。ＲＴＴ２は、クライアント１０が要求パケット１０ｂを送信してから、応答パケット２０ｂを受信するまでの時間である。ＲＴＴ３は、クライアント１０が要求パケット１０ｃを送信してから、応答パケット２０ｃを受信するまでの時間である。ＲＴＴ４は、クライアント１０が要求パケット１０ｄを送信してから、応答パケット２０ｄを受信するまでの時間である。【０００７】
ＲＴＴ＝ＲＴＴ１＋ＲＴＴ２＋ＲＴＴ３＋ＲＴＴ４・・・（１）【０００８】
次に、データの転送を高速化する従来技術２について説明する。図１７は、従来技術２を説明するための図である。図１７に示すように、従来技術２では、クライアント３０とサーバ４０との間に、ダミークライアント３５と、ダミーサーバ４５とを配置する。【０００９】
ダミークライアント３５は、ＣＩＦＳプロトコルを事前に解析して、シーケンステーブル５０を生成する。シーケンステーブル５０は、要求パケットと、後続予測パケットとを対応付けるテーブルである。要求パケットは、クライアント３０から送信される要求パケットである。後続予測パケットは、クライアント３０から送信された要求パケットの次に、クライアント３０から送信されることが予測される要求パケットを示す。【００１０】
例えば、図１７のシーケンステーブル５０に示す例では、コマンド「open」、パラメータ「1234」を含む要求パケットが、コマンド「getinfo」、パラメータ「004」を含む後続予測パケットに対応付けられている。このため、クライアント３０から、コマンド「open」、パラメータ「1234」を含む要求パケットが送信された場合には、次に、コマンド「getinfo」、パラメータ「004」の要求パケットが送信されることが、シーケンステーブル５０により予測できる。【００１１】
ダミークライアント３５は、クライアント３０から要求パケットを受信すると、要求パケットと、シーケンステーブル５０とを比較して、後続予測パケットを特定する。ダミークライアント３５は、後続予測パケットを特定すると、クライアント３０から次の要求パケットを受信する前に、後続予測パケットをサーバ４０に送信する。【００１２】
例えば、図１７に示す例では、ダミークライアント３５は、クライアント３０から要求パケット３０ａを取得すると、要求パケット３０ａと、予測パケット３５ａ，３５ｂとを、サーバ４０に送信する。予測パケット３５ａは、要求パケット３０ａから予測される要求パケットであり、予測パケット３５ｂは、予測パケット３５ａから予測される要求パケットである。【００１３】
要求パケット３０ａ、予測パケット３５ａ，３５ｂは、ダミーサーバ４５を介して、サーバ４０に到達する。サーバ４０は、要求パケット３０ａに対応する応答パケット４０ａ、予測パケット３５ａに対応する応答パケット４０ｂ、予測パケット３５ｂに対応する応答パケット４０ｃを、クライアント３０に送信する。【００１４】
応答パケット４０ａ〜４０ｃは、ダミーサーバ４５を介して、ダミークライアント３５に到達する。ダミークライアント３５は、既に受信している要求パケット３０ａに対応する応答パケット４０ａを、クライアント３０に送信する。その後、ダミークライアント３５は、クライアント３０から、要求パケット３０ｂを受信した場合には、応答パケット４０ｂを、クライアント３０に送信する。ダミークライアント３５は、クライアント３０から、要求パケット３０ｃを受信した場合には、応答パケット４０ｃをクライアント３０に送信する。【００１５】
図１７で説明したように、ダミークライアント３５が、クライアント３０から要求パケット３０ｂ，３０ｃを受信する前に、予測パケット３５ａ，３５ｂを、サーバ４０に事前に送信して、応答パケット４０ｂ，４０ｃを事前に受信しておく。このような処理を実行することで、クライアント３０は、従来技術１と比較して、要求パケット３０ｂ，３０ｃの応答パケットをより速く受信することができ、ＲＴＴを短縮することができる。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】特開２０１１−０３９８９９号公報
【特許文献２】特開２０１３−２１８５０５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１７】
しかしながら、上述した従来技術には、データの転送を高速化できないという問題がある。【００１８】
例えば、従来技術２では、シーケンステーブル５０に登録された要求コマンドをクライアント３０から受信した場合には、後続予測パケットをサーバ４０に事前に送信することで、データの転送を高速化できる。しかし、シーケンステーブル５０に登録されていない要求コマンドをクライアント３０から受信した場合には、後続予測パケットをサーバ４０に事前に送信することができない。また、一般的に、通信プロトコルは定期的にバージョンアップされる。バージョンアップされると、要求パケットや応答パケットの内容が変化するため、それまで利用していたシーケンステーブル５０が利用できなくなり、バージョンアップに合わせて、シーケンステーブル５０を更新しないと、データの転送を高速化できない。【００１９】
１つの側面では、本発明は、データの転送を高速化することができる転送装置、転送システム、転送方法および転送プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２０】
第１の案では、転送装置は、登録部と、特定部と、送信部とを有する。登録部は、クライアントから一連のパケットを受信した場合に、一連のパケットを受信した順に、各パケットを一意に識別する識別情報をシーケンステーブルに登録する。特定部は、クライアントからパケットを受信した場合に、受信したパケットの識別情報と、シーケンステーブルに登録された識別情報の列とを比較し、受信したパケットの識別情報の次のパケットの識別情報を特定する。送信部は、特定部が特定した識別情報に対応するパケットを送信する。
【発明の効果】
【００２１】
データの転送を高速化することができる。
【図面の簡単な説明】
【００２２】
【図１】図１は、本実施例１に係るシステムの構成を示す図である。
【図２】図２は、本実施例１に係る転送装置の処理を説明するための図である。
【図３】図３は、本実施例１に係る転送装置の構成を示す機能ブロック図である。
【図４】図４は、使用順リストのデータ構造の一例を示す図である。
【図５】図５は、動的シーケンステーブルのデータ構造の一例を示す図である。
【図６】図６は、ＩＤテーブルのデータ構造の一例を示す図である。
【図７】図７は、応答テーブルのデータ構造の一例を示す図である。
【図８】図８は、本実施例１に係る転送装置の処理手順を示すフローチャートである。
【図９】図９は、本実施例２に係るシステムの構成を示す図である。
【図１０】図１０は、本実施例２に係る各転送装置の処理を説明するための図である。
【図１１】図１１は、本実施例２に係る転送装置の構成を示す機能ブロック図（１）である。
【図１２】図１２は、本実施例２に係る転送装置の構成を示す機能ブロック図（２）である。
【図１３】図１３は、本実施例２に係る転送装置の処理手順を示すフローチャート（１）である。
【図１４】図１４は、応答受信処理の処理手順を示すフローチャートである。
【図１５】図１５は、転送プログラムを実行するコンピュータの一例を示す図である。
【図１６】図１６は、従来技術１を説明するための図である。
【図１７】図１７は、従来技術２を説明するための図である。
【発明を実施するための形態】
【００２３】
以下に、本発明にかかる転送装置、転送システム、転送方法および転送プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００２４】
図１は、本実施例１に係るシステムの構成を示す図である。図１に示すように、このシステムは、クライアント７０と、サーバ８０と、ダミーサーバ８５と、転送装置１００とを有する。転送装置１００は、クライアント７０に接続される。転送装置１００は、ＷＡＮ（Wide  Area  Network）等のネットワーク６０を介して、ダミーサーバ８５に接続される。サーバ８０は、ダミーサーバ８５に接続される。【００２５】
クライアント７０は、サーバ８０に格納されたデータにアクセスする装置である。クライアント７０は、サーバ８０のデータにアクセスする場合には、所定の通信プロトコルに従って、要求パケットを送信し、サーバ８０から、要求パケットに対応する応答パケットを受信する。【００２６】
ダミーサーバ８５は、転送装置１００とサーバ８０との間で送受信される要求パケット、応答パケットを中継する装置である。【００２７】
サーバ８０は、要求パケットを受信した場合に、通信プロトコルに従って、要求パケットに対応する応答パケットを生成し、生成した応答パケットを、クライアント７０に送信する装置である。【００２８】
転送装置１００は、クライアント７０からサーバ８０に送信される要求パケットの送信パターンを、動的シーケンステーブルを用いて学習する。転送装置１００は、学習した動的シーケンステーブルを用いて、クライアント７０から送信される要求パケットに続くパケットを予測し、予測したパケットを、サーバ８０に先行して送信する。【００２９】
次に、本実施例１に係る転送装置１００の処理について説明する。図２は、本実施例１に係る転送装置の処理を説明するための図である。図２に示すように、転送装置１００は、動的シーケンステーブル１４５を用いて、要求パケットの送信パターンを学習する。【００３０】
転送装置１００は、要求パケットの送信パターンを学習する場合には、要求パケットをＩＤ（Identification）に変換する。例えば、転送装置１００は、要求パケットをファイルに依存するパラメータと、ファイルに依存しないパラメータとに分離し、ファイルに依存しないパラメータを基にして、要求パケットをＩＤに変換する。以下の説明では、適宜、ファイルに依存するパラメータを「依存パラメータ」と表記し、ファイルに依存しないパラメータを「非依存パラメータ」と表記する。【００３１】
転送装置１００は、クライアント７０から、要求パケット７０ａ，７０ｂ，７０ｃの順番で、要求パケットを受信した場合には、要求パケット７０ａ〜７０ｃを、サーバ８０に送信する。また、転送装置１００は、要求パケット７０ａ，７０ｂ，７０ｃをそれぞれＩＤに変換する。転送装置１００は、受信した要求パケット７０ａ〜７０ｃの順番に基づいて、ＩＤを並べることで、送信パターン１４５ａを生成する。【００３２】
例えば、転送装置１００は、要求パケット７０ａの非依存パラメータ「open、param=1234」に基づき、要求パケット７０ａをＩＤ「xxx」に変換する。転送装置１００は、要求パケット７０ｂの非依存パラメータ「getinfo、param=004」に基づき、要求パケット７０ｂをＩＤ「yyy」に変換する。転送装置１００は、要求パケット７０ｃの非依存パラメータ「read  from」に基づき、要求パケット７０ｂをＩＤ「zzz」に変換する。転送装置１００は、各ＩＤを、受信した順番に並べることで、送信パターン１４５ａ「xxx→yyy→zzz」を生成する。【００３３】
要求パケット７０ａ〜７０ｃは、ダミーサーバ８５を介して、サーバ８０に到達する。サーバ８０は、要求パケット７０ａ〜７０ｃに対応する応答パケット８０ａ〜８０ｃを生成し、生成した応答パケット８０ａ〜８０ｃをクライアント７０に送信する。【００３４】
転送装置１００は、送信パターン１４５ａを生成した後に、クライアント７０から要求パケットを受信した場合には、受信した要求パケットを、サーバ８０に転送すると共に、要求パケットをＩＤに変換する。転送装置１００は、変換したＩＤが、送信パターン１４５ａに含まれている場合には、送信パターン１４５ａに基づいて、予測パケットを生成し、サーバ８０に送信する。転送装置１００は、変換したＩＤが、送信パターン１４５ａに含まれていない場合には、新たな送信パターンを生成して、動的シーケンステーブル１４５に登録する処理を実行する。【００３５】
一例として、転送装置１００が、要求パケット７０ｄ，要求パケット７０ｅの順番で、要求パケットをクライアント７０から受信した場合について説明する。転送装置１００は、要求パケット７０ｄの非依存パラメータ「open、param=456」に基づき、要求パケット７０ｄを、ＩＤ「aaa」に変換する。ＩＤ「aaa」は、送信パターン１４５ａに含まれていないため、新たな送信パターン１４５ｂを生成する。例えば、要求パケット７０ｄの次に受信した要求パケット７０ｅのＩＤを「bbb」とすると、送信パターン１４５ｂは「aaa→bbb」となる。【００３６】
転送装置１００は、要求パケット７０ｄ，７０ｅを、サーバ８０に送信する。要求パケット７０ｄ，７０ｅは、ダミーサーバ８５を介して、サーバ８０に到達する。サーバ８０は、要求パケット７０ｄ，７０ｅに対応する応答パケット８０ｄ，８０ｅを生成し、生成した応答パケット８０ｄ，８０ｅをクライアント８０に送信する。【００３７】
続いて、転送装置１００が、送信パターン１４５ａ，１４５ｂを生成した後に、クライアント７０から要求パケット７０ｆを受信した場合について説明する。転送装置１００は、要求パケット７０ｆの非依存パラメータ「open、param=456」に基づき、要求パケット７０ｆを、ＩＤ「aaa」に変換する。ＩＤ「aaa」は、送信パターン１４５ｂに含まれるため、転送装置１００は、送信パターン１４５ｂに基づいて、予測パケットを生成する。【００３８】
例えば、転送装置１００は、送信パターン１４５ｂのＩＤ「aaa」の次のＩＤがＩＤ「bbb」となっている。このため、転送装置は、ＩＤ「bbb」に基づいて、予測パケット７０ｇを生成する。転送装置１００は、ＩＤ「bbb」を、非依存パラメータに変換する。例えば、ＩＤ「bbb」に対応する非依存パラメータは、「getinfo、param=006」となる。転送装置１００は、要求パケット７０ｆに含まれる依存パラメータ「C」と、非依存パラメータ「getinfo、param=006」とを組み合わせることで、予測パケット７０ｇを生成する。転送装置１００は、クライアント７０から、要求パケット７０ｆの次の要求パケットを受信する前に、予測パケット７０ｇを、サーバ８０に先行して送信する。【００３９】
次に、図１および図２に示した転送装置１００の構成の一例について説明する。図３は、本実施例１に係る転送装置の構成を示す機能ブロック図である。図３に示すように、転送装置１００は、通信部１１０と、入力部１２０と、表示部１３０と、記憶部１４０と、制御部１５０とを有する。【００４０】
通信部１１０は、クライアント７０と、サーバ８０と、ダミーサーバ８５との間でデータ通信を実行する処理部である。後述する制御部１５０は、通信部１１０を介して、クライアント７０、サーバ８０、ダミーサーバ８５との間で、データをやり取りする。通信部１１０は、通信装置に対応する。【００４１】
入力部１２０は、各種の情報を転送装置１００に入力する入力装置である。例えば、入力部１２０は、キーボードやマウス、タッチパネル、入力ボタン等に対応する。【００４２】
表示部１３０は、制御部１５０から出力される各種の情報を表示する表示装置である。例えば、表示部１３０は、液晶ディスプレイやタッチパネル等に対応する。【００４３】
記憶部１４０は、使用順リスト１４１と、動的シーケンステーブル１４５と、ＩＤテーブル１４６と応答テーブル１４７とを有する。例えば、記憶部１４０は、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュメモリ（Flash  Memory）などの半導体メモリ素子や、ＨＤＤ（Hard  Disk  Drive）などの記憶装置に対応する。【００４４】
使用順リスト１４１は、クライアント７０から要求パケットを受信した順番を、要求パケットに対応するＩＤの順番で示すリストである。ＩＤは、上述したように、要求パケットの非依存パラメータから生成される。【００４５】
図４は、使用順リストのデータ構造の一例を示す図である。使用順リスト１４１に記憶される先頭のＩＤは、クライアント７０から最後に受信した要求パケットに対応するＩＤである。例えば、図２で説明したように、転送装置１００が、クライアント７０から、要求パケット７０ａ，７０ｂ，７０ｃの順に受信した場合には、使用順リスト１４１に記録されるＩＤは、図４に示すように、先頭から順に「zzz、yyy、xxx」となる。【００４６】
動的シーケンステーブル１４５は、クライアント７０から送信される要求パケットの送信順の学習結果となる送信パターンを保持するテーブルである。図５は、動的シーケンステーブルのデータ構造の一例を示す図である。図５に示す例では、動的シーケンステーブル１４５には、送信パターン１４５ａ，１４５ｂ，１４５ｃが格納されている。【００４７】
例えば、送信パターン１４５ａには、ＩＤが「xxx、yyy、zzz」の順に登録されている。このため、クライアント７０は、ＩＤ「xxx」に対応する要求パケット、ＩＤ「yyy」に対応する要求パケット、ＩＤ「zzz」に対応する要求パケットの順に、要求パケットを送信することを示している。【００４８】
送信パターン１４５ｂには、ＩＤが「aaa、bbb」の順に登録されている。このため、クライアント７０は、ＩＤ「aaa」に対応する要求パケット、ＩＤ「bbb」に対応する要求パケットの順に、要求パケットを送信することを示している。【００４９】
送信パターン１４５ｂには、ＩＤが「eee、fff」の順に登録されている。このため、クライアント７０は、ＩＤ「eee」に対応する要求パケット、ＩＤ「fff」に対応する要求パケットの順に、要求パケットを送信することを示している。【００５０】
ＩＤテーブル１４６は、ＩＤと、ＩＤを生成する場合に利用された非依存パラメータとを対応付けるテーブルである。図６は、ＩＤテーブルのデータ構造の一例を示す図である。図６に示すように、このＩＤテーブル１４６は、ＩＤと、非依存パラメータとを対応付ける。例えば、ＩＤテーブル１４６の１行目を参照すると、ＩＤ「xxx」と、非依存パラメータ「open、param=1234」とが対応付けられている。【００５１】
応答テーブル１４７は、サーバ８０に送信した要求パケットと、この要求パケットに対してサーバ８０から送信される応答パケットとを対応付けるテーブルである。図７は、応答テーブルのデータ構造の一例を示す図である。図７に示すように、この応答テーブル１４７は、要求パケットと、応答パケットとが対応付けられている。例えば、応答テーブル１４７の１行目を参照すると、要求パケット「open  A  param=1234」に対する応答パケットが「open  A  param=1234  OK」である旨が示されている。【００５２】
図３の説明に戻る。制御部１５０は、登録部１５１と、特定部１５２と、送信部１５３と、応答部１５４とを有する。制御部１５０は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）や、ＦＰＧＡ（Field  Programmable  Gate  Array）などの集積装置に対応する。また、制御部１５０は、例えば、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）等の電子回路に対応する。【００５３】
登録部１５１は、クライアント７０から一連の要求パケットを受信した場合に、一連の要求パケットを受信した順に、各要求パケットに対応するＩＤを、動的シーケンステーブル１４５に登録する処理部である。以下において、登録部１５１の処理の一例について説明する。【００５４】
登録部１５１は、クライアント７０から要求パケットを受信した場合に、要求パケットを依存パラメータと非依存パラメータに分離し、非依存パラメータに基づいてＩＤを生成する。例えば、登録部１５１は、ハッシュ関数を利用して、非依存パラメータのハッシュ値を求め、求めたハッシュ値を、要求パケットのＩＤとして生成する。登録部１５１は、ＩＤと、非依存パラメータとを対応付けて、ＩＤテーブル１４６に登録する。また、登録部１５１は、生成したＩＤを、特定部１５２に出力する。登録部１５１は、要求パケットの依存パラメータを、送信部１５３に出力する。【００５５】
登録部１５１は、生成したＩＤと、動的シーケンステーブル１４５とを比較し、比較結果を基にして、処理を行う。ここでは、比較結果が第１パターンである場合と、第２パターンである場合とに分けて登録部１５１が実行する処理について説明する。【００５６】
第１パターンは、生成したＩＤと同一のＩＤが、動的シーケンステーブル１４５に登録されており、かつ、同一のＩＤに続く後続のＩＤが存在するパターンである。例えば、生成したＩＤが「xxx」であり、動的シーケンステーブル１４５の送信パターン１４５ａが「xxx→yyy→zzz」となるパターンが、第１パターンとなる。【００５７】
第１パターンでは、生成したＩＤと同一のＩＤが、使用順リスト１４１に登録されていることになる。登録部１５１は、登録されている同一のＩＤを、先頭に移動させることで、使用順リスト１４１を更新する。例えば、登録部１５１は、生成したＩＤが「xxx」であり、使用順リスト１４１に登録されているＩＤが「zzz、yyy、xxx」である場合には、使用順リストを「xxx、zzz、yyy」とする。【００５８】
第２パターンは、生成したＩＤと同一のＩＤが、動的シーケンステーブル１４５に登録されていないパターンである。また、同一のＩＤが、動的シーケンステーブル１４５に登録されているが、後続のＩＤが存在しないパターンも、第２パターンとなる。【００５９】
第２パターンにおいて、登録部１５１は、要求パケットから生成したＩＤと、使用順リスト１４１とを比較し、生成したＩＤが、使用順リスト１４１に登録されていない場合には、生成したＩＤを、使用順リスト１４１の先頭に新規登録する。例えば、登録部１５１は、生成したＩＤが「zzz」であり、使用順リスト１４１に登録されているＩＤが「yyy、xxx」である場合には、使用順リスト１４１を「zzz、yyy、xxx」とする。【００６０】
登録部１５１は、使用順リスト１４１において、新規登録したＩＤを、前コマンドに設定する。使用順リスト１４１のＩＤに、既に前コマンドが設定されている場合には、既に前コマンドが設定されているＩＤの次のＩＤを、新規登録したＩＤとして特定した後に、前コマンドを、新規登録したＩＤに設定する。登録部１５１は、上記処理を繰り返し実行することで、ＩＤの順番を特定し、特定したＩＤの順番を、送信パターンとして、動的シーケンステーブル１４５に設定する。【００６１】
例えば、図４において、新規登録したＩＤが「xxx」、「yyy」、「zzz」の順に、使用順リスト１４１に登録された場合には、前コマンドは、「xxx」、「yyy」、「zzz」の順に移動する。この場合には、「yyy」が「xxx」の後続コマンドとなり、「zzz」が「yyy」の後続コマンドとなるため、登録部１５１は、送信パターン１４５ａ「xxx→yyy→zzz」を生成し、動的シーケンステーブル１４５に登録する。【００６２】
一方、登録部１５１は、生成したＩＤが、使用順リスト１４１に登録されている場合には、登録されている同一のＩＤを、先頭に移動させることで、使用順リスト１４１を更新する。登録部１５１は、先頭に移動させたＩＤを、前コマンドに設定する。使用順リスト１４１のＩＤに、既に前コマンドが設定されている場合には、既に前コマンドが設定されているＩＤの次のＩＤを、先頭に移動させたＩＤとして特定した後に、前コマンドを、先頭に移動させたＩＤに設定する。登録部１５１は、上記処理を繰り返し実行することで、ＩＤの順番を特定し、特定したＩＤの順番を、送信パターンとして、動的シーケンステーブル１４５に設定する。【００６３】
登録部１５１は、上記のように、生成したＩＤを使用順リスト１４１に新規登録する処理または使用順リスト１４１を更新する処理を繰り返し実行し、送信パターンを生成する。登録部１５１は、使用順リスト１４１に登録されているＩＤの登録数が上限数を超えた場合には、使用順リスト１４１に登録された各ＩＤのうち、末尾のＩＤを削除する。【００６４】
ところで、登録部１５１は、要求パケットが後続予測無効コマンドを含むパケットである場合には、上記処理をスキップし、次の要求パケットを受信するまで待機する。例えば、後続予測無効コマンドは「close」等である。【００６５】
図３の説明に戻る。特定部１５２は、登録部１５１から要求パケットに対応するＩＤを取得した場合に、取得したＩＤと、動的シーケンステーブル１４５とを比較し、取得したＩＤと同一のＩＤが、動的シーケンステーブル１４５に存在するか否かを判定する処理部である。特定部１５２は、取得したＩＤと同一のＩＤが動的シーケンステーブル１４５に存在する場合には、このＩＤの次のＩＤを特定し、特定したＩＤを、送信部１５３に出力する。特定部１５２は、特定したＩＤの後ろに、更にＩＤが続いている場合には、続くＩＤを順に、送信部１５３に出力する。【００６６】
例えば、登録部１５１から取得した要求パケットに対応するＩＤを「xxx」として、特定部１５２の処理を説明する。特定部１５２は、ＩＤ「xxx」と、図５の動的シーケンステーブル１４５とを比較すると、送信パターン１４５ａに、ＩＤ「xxx」が存在すると判定する。特定部１５２は、送信パターン１４５ａに登録されたＩＤ「xxx」の次のＩＤ「yyy」を、送信部１５３に出力する。また、特定部１５２は、ＩＤ「yyy」の更に次のＩＤ「zzz」を、送信部１５３に出力する。従って、特定部は、ＩＤ「yyy」、「zzz」の順で、ＩＤを、送信部１５３に出力する。【００６７】
送信部１５３は、特定部１５２から取得したＩＤを基にして、予測パケットを生成し、生成した予測パケットを、サーバ８０に送信する処理部である。また、送信部１５３は、クライアント７０から要求パケットを受信し、受信した要求パケットと同一の予測パケットを、サーバ８０に送信していない場合には、要求パケットを、サーバ８０に送信する。以下において、送信部１５３の処理手順の一例について説明する。【００６８】
送信部１５３は、特定部１５２から取得したＩＤと、ＩＤテーブル１４６とを比較して、ＩＤに対応する非依存パラメータを取得する。また、送信部１５３は、登録部１５１から、要求パラメータの依存パラメータを取得する。送信部１５３は、非依存パラメータと、依存パラメータとを組み合わせることで、予測パケットを生成する。【００６９】
例えば、送信部１５３が、特定部１５２からＩＤ「yyy」を取得し、登録部１５１から依存パラメータ「A」を取得した場合の処理について説明する。送信部１５２は、ＩＤ「yyy」と、ＩＤテーブル１４６とを比較して、ＩＤ「yyy」に対応する非依存パラメータ「getinfo、param=004」を取得する。送信部１５３は、依存パラメータ「A」と、非依存パラメータ「getinfo、param=004」とを組み合わせて、予測パケット「getinfo  A  param=004」を生成し、生成した予測パケットを、サーバ８０に送信する。【００７０】
応答部１５４は、転送装置１００からサーバ８０に送信した要求パケットまたは予測パケットと、この要求パケットまたは予測パケットに対応する応答パケットとを対応付けて応答テーブル１４７に登録する処理部である。以下の応答部１５４の説明では、説明の便宜上、要求パケットおよび予測パケットを区別しないで、要求パケットとして説明する。【００７１】
応答部１５４は、クライアント７０から要求パケットを受信した場合には、受信した要求パケットと、応答テーブル１４７とを比較して、要求パケットと同一の要求パケットが、応答テーブル１４７に登録されているか否かを判定する。応答部１５４は、要求パケットと同一の要求パケットが応答テーブル１４７に登録されている場合には、対応する応答パケットを、クライアント７０に送信する。【００７２】
例えば、図７を用いて、クライアント７０から要求パケット「getinfo  A  param=004」を受信した場合の、応答部１５４の処理について説明する。応答部１５４は、要求パケット「getinfo  A  param=004」と、応答テーブル１４７とを比較して、要求パケット「getinfo  A  param=004」に対応する応答パケット「getinfo  A  param=004  OK」を特定する。応答部１５４は、応答パケット「getinfo  A  param=004  OK」をクライアント７０に送信する。【００７３】
次に、本実施例１に係る転送装置１００の処理手順の一例について説明する。図８は、本実施例１に係る転送装置の処理手順を示すフローチャートである。図８に示すように、転送装置１００の登録部１５１は、クライアント７０から要求パケットを受信する（ステップＳ１０１）。登録部１５１は、要求パケットに後続予測無効コマンドが含まれる場合には（ステップＳ１０２，Ｙｅｓ）、処理を終了する。一方、登録部１５１は、要求パケットに後続予測コマンドが含まれない場合には（ステップＳ１０２，Ｎｏ）、ステップＳ１０３に移行する。【００７４】
登録部１５１は、要求パケットを依存パラメータと非依存パラメータとに分離し（ステップＳ１０３）、非依存パラメータからＩＤを生成する（ステップＳ１０４）。登録部１５１は、生成したＩＤをキーにして、動的シーケンステーブル１４５を検索する（ステップＳ１０５）。【００７５】
登録部１５１は、ＩＤが動的シーケンステーブル１４５に登録されており、かつ、後続ＩＤが存在する場合には（ステップＳ１０６，Ｙｅｓ）、ステップＳ１０７に移行する。一方、登録部１５１は、ＩＤが動的シーケンステーブル１４５に登録されていない場合、または、後続ＩＤが存在しない場合には（ステップＳ１０６，Ｎｏ）、ステップＳ１１０に移行する。【００７６】
ステップＳ１０７以降の説明を行う。登録部１５１は、ＩＤを使用順リスト１４１の先頭に設定する（ステップＳ１０７）。転送装置１００の特定部１５２は、動的シーケンステーブル１４５を基にして後続ＩＤを特定する（ステップＳ１０８）。転送装置１００の送信部１５３は、後続ＩＤから予測パケットを生成し、予測パケットを先行してサーバ８０に送信する（ステップＳ１０９）。【００７７】
ステップＳ１１０以降の説明を行う。登録部１５１は、ＩＤを使用順リスト１４１の先頭に新規登録する（ステップＳ１１０）。登録部１５１は、使用順リスト１４１のＩＤの登録数が上限数を超えた場合には、使用順リスト１４１の末尾のＩＤを削除する（ステップＳ１１１）。【００７８】
登録部１５１は、前コマンドが存在する場合には、先頭のＩＤを、前コマンドのＩＤの次のＩＤに設定する（ステップＳ１１２）。登録部１５１は、先頭のＩＤを前コマンドに設定する（ステップＳ１１３）。【００７９】
次に、本実施例１に係る転送装置１００の効果について説明する。上記のように、転送装置１００は、クライアント７０からサーバ８０に送信される要求パケットの送信パターンを、動的シーケンステーブル１４５を用いて学習しておく。そして、転送装置１００は、学習した動的シーケンステーブル１４５を用いて、クライアント７０から送信される要求パケットに続くパケットを予測し、予測したパケットを、サーバ８０に先行して送信する。これにより、データの転送を高速化することができる。【００８０】
例えば、転送装置１００は、要求パケットを受信した時点で、後続の要求パケットをサーバ８０に前もって送信してき、応答パケットを受信しておく。このため、クライアント７０から後続の要求パケットを受信した時点で、予め受信しておいた応答パケットを、クライアント７０に送信することができ、ＲＴＴを短縮することができる。【００８１】
また、転送装置１００は、動的に送信パターンを動的シーケンステーブル１４５に登録する処理を実行する。このため、通信プロトコルのバージョンアップがなされた場合でも、バージョンアップによる送信パターンの変化を、動的シーケンステーブル１４５に反映させることができ、バージョンアップ後も、データの転送を高速化することができる。【００８２】
また、転送装置１００は、要求パケットに含まれるコマンドのうち、非依存パラメータに基づいて、ＩＤを生成し、要求パケットの送信順序を学習する。このため、非依存パラメータが同一で、依存パラメータが異なる要求パケットを受信した場合であっても、後続の要求パケットを予測することができる。
【実施例２】
【００８３】
次に、本実施例２に係るシステムについて説明する。図９は、本実施例２に係るシステムの構成を示す図である。図９に示すように、このシステムは、クライアント７０と、サーバ８０と、転送装置２００と、転送装置３００とを有する。クライアント７０は、転送装置３００に接続される。転送装置２００，３００は、ネットワーク６０を介して相互に接続される。転送装置３００は、サーバ８０に接続される。このうち、クライアント７０とサーバ８０に関する説明は、図１に示したクライアント７０とサーバ８０に関する説明と同様であるため、説明を省略する。【００８４】
転送装置２００は、クライアント７０からサーバ８０に送信される要求パケットの送信パターンを、動的シーケンステーブルを用いて学習する。転送装置２００は、学習した動的シーケンステーブルを用いて、クライアント７０から送信される要求パケットに続くパケットを予測し、予測したパケットをサーバ８０に先行して送信する。【００８５】
また、転送装置２００は、サーバ８０に送信した要求パケットと、この要求パケットに対応する応答パケットとを対応付けた応答テーブルを生成し、生成した応答テーブルを、転送装置２００に送信する。【００８６】
転送装置３００は、クライアント７０からサーバ８０に送信される要求パケットを受信した場合には、受信した要求パケットを、サーバ８０に転送する。また、転送装置３００は、転送装置２００から、応答テーブルを受信した場合には、応答テーブルを基にして、クライアント７０から送信される要求パケットに対応する応答パケットを、クライアント７０に送信する。【００８７】
次に、本実施例２に係る転送装置２００，３００の処理の一例について説明する。図１０は、本実施例２に係る各転送装置の処理を説明するための図である。図１０に示すように、クライアント７０は、要求パケットを転送装置３００に送信する（ステップＳ１０）。転送装置３００は、クライアント７０から要求パケットを受信し、要求パケットを転送装置２００に送信する（ステップＳ１１）。【００８８】
転送装置３００は、転送装置２００から要求パケットを受信する（ステップＳ１２）。転送装置３００は、動的シーケンスモデルに基づいて、予測パケットをサーバ８０に先行して送信する（ステップＳ１３）。転送装置３００は、実施例１で説明した転送装置１００と同様にして、動的シーケンスモデルを生成しておくものとする。【００８９】
サーバ８０は、予測パケットを受信する（ステップＳ１４）。サーバ８０は、応答パケットを転送装置２００に送信する（ステップＳ１５）。転送装置２００は、サーバ８０から応答パケットを受信し、要求パケットと応答パケットとを対応付けた応答テーブルを生成する（ステップＳ１６）。例えば、転送装置２００が、ステップＳ１３において、複数の予測パケットを、サーバ８０に送信した場合には、転送装置２００は、ステップＳ１６において、各予測パケットに対応する応答パケットを、サーバ８０から受信する。【００９０】
転送装置２００は、応答テーブルを転送装置３００に送信する（ステップＳ１７）。転送装置３００は、応答テーブルを受信する（ステップＳ１８）。クライアント７０は、要求パケットを送信し（ステップＳ１９ａ）、転送装置３００は、応答テーブルを基にして、応答パケットを代理応答する（ステップＳ１９ｂ）。【００９１】
次に、図９および図１０に示した転送装置２００の構成の一例について説明する。図１１は、本実施例２に係る転送装置の構成を示す機能ブロック図（１）である。図９に示すように、転送装置２００は、通信部２１０と、入力部２２０と、表示部２３０と、記憶部２４０と、制御部２５０とを有する。【００９２】
通信部２１０は、クライアント７０、サーバ８０、転送装置３００との間でデータ通信を実行する処理部である。後述する制御部２５０は、通信部２１０を介して、クライアント７０、サーバ８０、転送装置３００との間でデータをやり取りする。通信部２１０は、通信装置に対応する。【００９３】
入力部２２０および表示部２３０に関する説明は、図３で説明した入力部１２０および表示部１３０に関する説明と同様である。【００９４】
記憶部２４０は、使用順リスト２４１と、動的シーケンステーブル２４５と、ＩＤテーブルと、応答テーブル２４７とを有する。記憶部２４０は、ＲＡＭ、ＲＯＭ、フラッシュメモリなどの半導体メモリ素子や、ＨＤＤなどの記憶装置に対応する。【００９５】
使用順リスト２４１は、クライアント７０から要求パケットを受信した順番を、要求パケットに対応するＩＤの順番で示すリストである。要求パケットに対応するＩＤは、実施例１と同様にして、要求パケットの非依存パラメータから生成される。使用順リスト２４１のデータ構造は、図４で説明した使用順リスト１４１のデータ構造と同様である。【００９６】
動的シーケンステーブル２４５は、クライアント７０から送信される要求パケットの送信順の学習結果となる送信パターンを保持するテーブルである。動的シーケンステーブル２４５のデータ構造は、図５で説明した動的シーケンステーブル１４５のデータ構造と同様である。【００９７】
ＩＤテーブル２４６は、ＩＤと、ＩＤを生成する場合に利用された非依存パラメータとを対応付けるテーブルである。ＩＤテーブルのデータ構造は、図６で説明したＩＤテーブル１４６のデータ構造と同様である。【００９８】
応答テーブル２４７は、サーバ８０に送信した要求パケットと、この要求パケットに対してサーバ８０から送信される応答パケットとを対応付けるテーブルである。応答テーブル２４７のデータ構造は、図７で説明した応答テーブル１４７のデータ構造と同様である。【００９９】
制御部２５０は、登録部２５１と、特定部２５２と、送信部２５３と、応答テーブル生成部２５４とを有する。制御部２５０は、ＡＳＩＣや、ＦＰＧＡなどの集積装置に対応する。また、制御部２５０は、例えば、ＣＰＵやＭＰＵ等の電子回路に対応する。【０１００】
登録部２５１は、クライアント７０から一連の要求パケットを受信した場合に、一連の要求パケットを受信した順に、各要求パケットに対応するＩＤを、動的シーケンステーブル２４５に登録する処理部である。また、登録部２５１は、要求パケットのＩＤを基にして、使用順リスト２４１を更新し、要求パケットのＩＤを、特定部２５２に出力する。登録部２５１は、要求パケットの依存パラメータを、送信部２５３に出力する。なお、登録部２５１の具体的な処理は、図３に示した登録部１５１の処理と同様であるため、説明を省略する。【０１０１】
特定部２５２は、登録部２５１から要求パケットに対応するＩＤを取得した場合に、取得したＩＤと、動的シーケンステーブル２４５とを比較し、取得したＩＤと同一のＩＤが、動的シーケンステーブル２４５に存在するか否かを判定する処理部である。特定部２５２は、取得したＩＤと同一のＩＤが動的シーケンステーブル２４５に存在する場合には、このＩＤの次のＩＤを特定し、特定したＩＤを、送信部２５３に出力する。特定部２５２は、特定したＩＤの後ろに、更にＩＤが続いている場合には、続くＩＤを順に、送信部２５３に出力する。【０１０２】
送信部２５３は、特定部２５２から取得したＩＤを基にして、予測パケットを生成し、生成した予測パケットを、サーバ８０に送信する処理部である。また、送信部２５３は、クライアント７０から要求パケットを受信し、受信した要求パケットと同一の予測パケットを、サーバ８０に送信していない場合には、要求パケットを、サーバ８０に送信する。なお、送信部２５３の具体的な処理は、図３に示した送信部１５３の処理と同様であるため、説明を省略する。【０１０３】
応答テーブル生成部２５４は、転送装置２００からサーバ８０に送信した要求パケットまたは予測パケットと、この要求パケットまたは予測パケットに対応する応答パケットとを対応付けて、応答テーブル２４７に登録する処理部である。応答テーブル２５４は、生成した応答テーブル２４７を、転送装置３００に送信する。以下の応答テーブル生成部２５４の説明では、説明の便宜上、要求パケットおよび予測パケットを区別しないで、要求パケットとして説明する。【０１０４】
応答テーブル生成部２５４は、転送装置２００がサーバ８０に要求パケットを最後に送信し、最後に送信した要求パケットに対応する応答パケットの受信を待って、応答テーブル２４７を、転送装置３００に送信する。または、応答テーブル生成部２５４は、所定周期毎に、応答テーブル２４７を、転送装置３００に送信しても良い。【０１０５】
次に、図９および図１０に示した転送装置３００の構成の一例について説明する。図１２は、本実施例２に係る転送装置の構成を示す機能ブロック図（２）である。図１２に示すように、この転送装置３００は、応答テーブル取得部３５１と、代理応答部３５２とを有する。【０１０６】
通信部３１０は、クライアント７０と、サーバ８０と、転送装置２００との間でデータ通信を実行する処理部である。後述する制御部３５０は、通信部３１０を介して、クライアント７０、サーバ８０、転送装置２００との間で、データをやり取りする。通信部３１０は、通信装置に対応する。【０１０７】
入力部３２０および表示部３３０に関する説明は、図３で説明した入力部１２０および表示部１３０に関する説明と同様である。【０１０８】
記憶部３４０は、応答テーブル２４７を有する。記憶部３４０は、ＲＡＭ、ＲＯＭ、フラッシュメモリなどの半導体メモリ素子や、ＨＤＤなどの記憶装置に対応する。【０１０９】
応答テーブル２４７は、転送装置２００から送信される応答テーブルである。応答テーブル２４７に関する説明は、上述した応答テーブル２４７に対する説明と同様である。【０１１０】
制御部３５０は、応答テーブル取得部３５１と、代理応答部３５２とを有する。制御部３５０は、ＡＳＩＣや、ＦＰＧＡなどの集積装置に対応する。また、制御部３５０は、例えば、ＣＰＵやＭＰＵ等の電子回路に対応する。【０１１１】
応答テーブル取得部３５１は、転送装置２００から応答テーブル２４７を取得する処理部である。応答テーブル取得部３５１は、取得した応答テーブル２４７を、記憶部３４０に格納する。【０１１２】
代理応答部３５２は、クライアント７０から要求パケットを受信した場合に、応答テーブル２４７を基にして、要求パケットに対応する応答パケットを検索し、応答パケットを、クライアント７０に送信する処理部である。なお、代理応答部３５２は、要求パケットに対応する応答パケットが、応答テーブル２４７に登録されていない場合には、要求パケットを、転送装置２００に送信する。【０１１３】
次に、本実施例２に係る転送装置２００の処理手順について説明する。図１３は、本実施例２に係る転送装置の処理手順を示すフローチャート（１）である。図１３に示すように、転送装置２００の登録部２５１は、クライアント７０から要求パケットを受信する（ステップＳ２０１）。登録部１５１は、要求パケットに後続予測無効コマンドが含まれる場合には（ステップＳ２０２，Ｙｅｓ）、処理を終了する。一方、登録部２５１は、要求パケットに後続予測コマンドが含まれない場合には（ステップＳ２０２，Ｎｏ）、ステップＳ２０３に移行する。【０１１４】
登録部２５１は、要求パケットを依存パラメータと非依存パラメータとに分離し（ステップＳ２０３）、非依存パラメータからＩＤを生成する（ステップＳ２０４）。登録部２５１は、生成したＩＤをキーにして、動的シーケンステーブル２４５を検索する（ステップＳ２０５）。【０１１５】
登録部２５１は、ＩＤが動的シーケンステーブル２４５に登録されており、かつ、後続ＩＤが存在する場合には（ステップＳ２０６，Ｙｅｓ）、ステップＳ２０７に移行する。一方、登録部２５１は、ＩＤが動的シーケンステーブル２４５に登録されていない場合、または、後続ＩＤが存在しない場合には（ステップＳ２０６，Ｎｏ）、ステップＳ２１１に移行する。【０１１６】
ステップＳ２０７以降の説明を行う。登録部２５１は、ＩＤを使用順リスト２４１の先頭に設定する（ステップＳ２０７）。転送装置２００の特定部２５２は、動的シーケンステーブル２４５を基にして後続ＩＤを特定する（ステップＳ２０８）。転送装置２００の送信部２５３は、後続ＩＤから予測パケットを生成し、予測パケットを先行してサーバ８０に送信する（ステップＳ２０９）。転送装置２００の応答テーブル生成部２５４は、応答受信処理を実行し（ステップＳ２１０）、処理を終了する。【０１１７】
ステップＳ２１１以降の説明を行う。登録部２５１は、ＩＤを使用順リスト２４１の先頭に新規登録する（ステップＳ２１１）。登録部２５１は、使用順リスト２４１のＩＤの登録数が上限数を超えた場合には、使用順リスト２４１の末尾のＩＤを削除する（ステップＳ２１２）。【０１１８】
登録部２５１は、前コマンドが存在する場合には、先頭のＩＤを、前コマンドのＩＤの次のＩＤに設定する（ステップＳ２１３）。登録部２５１は、先頭のＩＤを前コマンドに設定する（ステップＳ２１４）。【０１１９】
次に、図１３のステップＳ２１０に示した応答受信処理について説明する。図１４は、応答受信処理の処理手順を示すフローチャートである。図１４に示すように、転送装置２００の応答テーブル生成部２５４は、要求パケットが送信された後、該要求パケットに対応する応答パケットを受信していない場合には（ステップＳ３０１，Ｎｏ）、再度ステップＳ３０１に移行する。【０１２０】
応答テーブル生成部２５４は、要求パケットが送信された後、該要求パケットに対応する応答パケットを受信した場合には（ステップＳ３０１，Ｙｅｓ）、ステップＳ３０２に移行する。応答テーブル生成部２５４は、要求パケットと応答パケットとを対応付けて応答テーブル２４７に登録する（ステップＳ３０２）。【０１２１】
応答テーブル生成部２５４は、応答テーブル２４７を送信しない場合には（ステップＳ３０３，Ｎｏ）、ステップＳ３０１に移行する。一方、応答テーブル生成部２５４は、応答テーブル２４７を送信する場合には（ステップＳ３０３，Ｙｅｓ）、応答テーブル２４７を、転送装置３００に送信する（ステップＳ３０４）。応答テーブル生成部２５４は、応答テーブル２４７を初期化する（ステップＳ３０５）。【０１２２】
次に、本実施例２に係る転送装置２００，３００の効果について説明する。転送装置２００は、クライアント７０から送信される要求パケットに続く予測したパケットを、サーバ８０に先行して送信し、要求パケットに対応する応答パケットを、転送装置３００に通知しておく。これにより、クライアント７０から送信された要求パケットが転送装置３００に到達した時点で、事前に取得しておいた応答パケットを、クライアント７０に通知することができ、データの転送を高速化することができる。【０１２３】
なお、転送装置２００，３００の構成を別々に記載したが、転送装置２００および転送装置３００の構成を統合した機能を有する転送装置を、転送装置２００，３００の代わりに配置しても良い。【０１２４】
次に、上述した転送装置１００，２００，３００の処理内容は一例であり、転送装置１００，２００，３００はその他の処理を実行することができる。以下において、転送装置１００，２００，３００のその他の処理（１）〜（３）について説明する。【０１２５】
転送装置２００のその他の処理（１）について説明する。転送装置２００は、例えば、図５に示した送信パターン１４５ａを用いて、要求パケットの次の予測パケットを予測していたが、これに限定されるものではない。例えば、転送装置２００は、送信パターンに、サーバ８０からの応答パケットを加えて、送信パターンを生成し、予測パケットを生成しても良い。例えば、下記に示す送信パターンを生成しても良い。【０１２６】
送信パターン：ＩＤ「xxx」→ＩＤ「XXX」→ＩＤ「yyy」【０１２７】
第１の送信パターンは、クライアント７０が、ＩＤ「xxx」の要求パケットをサーバ８０に送信すると、サーバ８０がＩＤ「XXX」の応答パケットをクライアント７０に送信し、その後に、クライアント７０がＩＤ「yyy」の要求パケットをサーバ８０に送信するパターンである。【０１２８】
転送装置２００は、クライアント７０からＩＤ「xxx」の要求パターンを受信すると、上記の送信パターンに基づいて、ＩＤ「yyy」の予測パケットを、サーバ８０に先行して送信する。【０１２９】
転送装置２００のその他の処理（２）について説明する。転送装置２００は、動的シーケンステーブル２４５の各送信パターンに各種の統計情報を追加しても良い。例えば、統計情報は、再現回数と、再現クライアントの情報を含む。再現回数は、要求パケットのＩＤが送信パターンにヒットした回数を示す。再現クライアントは、要求パケットのＩＤが送信パターンにヒットした場合の、要求パケットの送信元となるクライアントを示す情報である。また、転送装置２００は、複数のクライアントが存在する場合には、クライアント毎に、パターンを生成する。【０１３０】
また、転送装置２００の登録部２５１は、送信パターンの統計情報を基にして、再現回数の少ない送信パターンを削除しても良い。例えば、送信パターンを生成してから、所定日時経過後、再現回数の増加回数が所定回数未満である場合に、増加回数が所定回数未満の送信パターンを削除する。【０１３１】
転送装置２００のその他の処理（３）について説明する。転送装置２００は、クライアント７０から受信する要求パケットが、複数のファイルを閲覧する要求パケットである場合には、各ファイルを閲覧するために送信する複数の後続パケットを、先行して、サーバ８０に送信しても良い。【０１３２】
例えば、要求パケットが、Ａ，Ｂ，Ｃファイルの閲覧を要求するパケットである場合には、転送装置２００は、ファイルＡを閲覧する場合に送信される後続の予測パケット、ファイルＢを閲覧する場合に送信される後続の予測パケット、ファイルＣを閲覧する場合に送信される後続の予測パケットをそれぞれ先行して送信する。後続の予測パケットは、上述した転送装置１００，２００と同様にして、動的シーケンステーブル２４５に基づき生成されるものとする。【０１３３】
次に、上記実施例に示した転送装置１００，２００，３００と同様の機能を実現する表示プログラムを実行するコンピュータの一例について説明する。図１５は、転送プログラムを実行するコンピュータの一例を示す図である。【０１３４】
図１５に示すように、コンピュータ４００は、各種演算処理を実行するＣＰＵ４０１と、ユーザからのデータの入力を受け付ける入力装置４０２と、ディスプレイ４０３とを有する。また、コンピュータ４００は、記憶媒体からプログラム等を読み取る読み取り装置４０４と、ネットワークを介して他のコンピュータとの間でデータの授受を行うインターフェース装置４０５とを有する。また、コンピュータ４００は、各種情報を一時記憶するＲＡＭ４０６と、ハードディスク装置４０７とを有する。そして、各装置４０１〜４０７は、バス４０８に接続される。【０１３５】
ハードディスク装置４０７は、登録プログラム４０７ａ、特定プログラム４０７ｂ、送信プログラム４０７ｃ、応答プログラム４０７ｄを有する。ＣＰＵ４０１は、登録プログラム４０７ａ、特定プログラム４０７ｂ、送信プログラム４０７ｃ、応答プログラム４０７ｄを読み出してＲＡＭ４０６に展開する。登録プログラム４０７ａは、登録プロセス４０６ａとして機能する。特定プログラム４０７ｂは、特定プロセス４０６ｂとして機能する。送信プログラム４０７ｃは、送信プロセス４０６ｃとして機能する。応答プログラム４０７ｄは、応答プロセス４０６ｄとして機能する。【０１３６】
登録プロセス４０６ａは、登録部１５１，２５１の処理に対応する。特定プロセス４０６ｂは、特定部１５２，２５２の処理に対応する。送信プロセス４０６ｃは、送信部１５３、２５３の処理に対応する。応答プロセス４０６ｄは、応答部１５４，応答テーブル生成部２５４、代理応答部３５２に対応する。【０１３７】
なお、登録プログラム４０７ａ、特定プログラム４０７ｂ、送信プログラム４０７ｃ、応答プログラム４０７ｄについては、必ずしも最初からハードディスク装置４０７に記憶させておかなくても良い。例えば、コンピュータ４００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカード等の「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ４００が各プログラム４０７ａ〜４０７ｄを読み出して実行するようにしてもよい。
【符号の説明】
【０１３８】
７０  クライアント
６０  ネットワーク
８０  サーバ
８５  ダミ−サーバ
１００，２００，３００  転送装置
【図１】
2017081801.tif 000003
【図２】
2017081801.tif 000004
【図３】
2017081801.tif 000005
【図４】
2017081801.tif 000006
【図５】
2017081801.tif 000007
【図６】
2017081801.tif 000008
【図７】
2017081801.tif 000009
【図８】
2017081801.tif 000010
【図９】
2017081801.tif 000011
【図１０】
2017081801.tif 000012
【図１１】
2017081801.tif 000013
【図１２】
2017081801.tif 000014
【図１３】
2017081801.tif 000015
【図１４】
2017081801.tif 000016
【図１５】
2017081801.tif 000017
【図１６】
2017081801.tif 000018
【図１７】
2017081801.tif 000019
【手続補正書】
【提出日】平成30年4月23日(2018.4.23)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
クライアントから一連のパケットを受信した場合に、前記一連のパケットを受信した順に、各パケットを一意に識別する識別情報をシーケンステーブルに登録する登録部と、
前記クライアントからパケットを受信した場合に、受信したパケットの識別情報と、前記シーケンステーブルに登録された識別情報の列とを比較し、受信したパケットの識別情報の次のパケットの識別情報を特定する特定部と、
前記特定部が特定した識別情報に対応するパケットを送信する送信部と
を有することを特徴とする転送装置。
【請求項２】
前記登録部は、前記パケットを受信した場合に、前記パケットに含まれるコマンドを、前記クライアントがアクセスするファイルに依存する依存パラメータと、前記ファイルに依存しない非依存パラメータとに分け、前記非依存パラメータを基にして、前記パケットを一意に識別する識別情報を生成することを特徴とする請求項１に記載の転送装置。
【請求項３】
前記送信部が送信したパケットと、前記送信部が送信したパケットに対応する応答パケットとを対応付けて応答テーブルに登録する応答部を更に有し、前記応答部は、前記クライアントからパケットを受信した場合には、受信したパケットと前記応答テーブルとを基にして、応答パケットを特定し、特定した応答パケットを前記クライアントに送信することを特徴とする請求項１に記載の転送装置。
【請求項４】
第１転送装置と第２転送装置とを有する転送システムであって、
前記第１転送装置は、
クライアントから一連のパケットを受信した場合に、前記一連のパケットを受信した順に、各パケットを一意に識別する識別情報をシーケンステーブルに登録する登録部と、
前記クライアントからパケットを受信した場合に、受信したパケットの識別情報と、前記シーケンステーブルに登録された識別情報の列とを比較し、受信したパケットの識別情報の次のパケットの識別情報を特定する特定部と、
前記特定部が特定した識別情報に対応するパケットを送信する送信部と、
前記送信部が送信したパケットと、前記送信部が送信したパケットに対応する応答パケットとを対応付けて応答テーブルに登録し、前記応答テーブルを前記第２転送装置に送信する応答テーブル生成部とを有し、
前記第２転送装置は、
前記クライアントからパケットを受信した場合には、受信したパケットと前記応答テーブルとを基にして、応答パケットを特定し、特定した応答パケットを前記クライアントに送信する代理応答部
を有することを特徴とする転送システム。
【請求項５】
コンピュータが実行する転送方法であって、
クライアントから一連のパケットを受信した場合に、前記一連のパケットを受信した順に、各パケットを一意に識別する識別情報をシーケンステーブルに登録し、
前記クライアントからパケットを受信した場合に、受信したパケットの識別情報と、前記シーケンステーブルに登録された識別情報の列とを比較し、受信したパケットの識別情報の次のパケットの識別情報を特定し、
特定した識別情報に対応するパケットを送信する
処理を実行することを特徴とする転送方法。
【請求項６】
コンピュータに、
クライアントから一連のパケットを受信した場合に、前記一連のパケットを受信した順に、各パケットを一意に識別する識別情報をシーケンステーブルに登録し、
前記クライアントからパケットを受信した場合に、受信したパケットの識別情報と、前記シーケンステーブルに登録された識別情報の列とを比較し、受信したパケットの識別情報の次のパケットの識別情報を特定し、
特定した識別情報に対応するパケットを送信する
処理を実行させることを特徴とする転送プログラム。
【国際調査報告】
2017081801.tif 000020
2017081801.tif 000021