JP2013218505A - クライアントとサーバ間の通信を中継する通信装置及び通信システム - Google Patents

クライアントとサーバ間の通信を中継する通信装置及び通信システム Download PDF

Info

Publication number
JP2013218505A
JP2013218505A JP2012088055A JP2012088055A JP2013218505A JP 2013218505 A JP2013218505 A JP 2013218505A JP 2012088055 A JP2012088055 A JP 2012088055A JP 2012088055 A JP2012088055 A JP 2012088055A JP 2013218505 A JP2013218505 A JP 2013218505A
Authority
JP
Japan
Prior art keywords
file
client
buffer
prefetch
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2012088055A
Other languages
English (en)
Other versions
JP2013218505A5 (ja
Inventor
Daisuke Ito
大輔 伊藤
Takashi Isobe
隆史 磯部
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2012088055A priority Critical patent/JP2013218505A/ja
Priority to PCT/JP2012/079310 priority patent/WO2013153694A1/ja
Publication of JP2013218505A publication Critical patent/JP2013218505A/ja
Publication of JP2013218505A5 publication Critical patent/JP2013218505A5/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】 従来の予測に基づくアプリケーション高速化手法では、多くのユーザに対して平等にサービスできない。
【解決手段】 多くのユーザに対して平等にサービスを提供できるよう、一度に先読みするデータ量に制限を設ける。また既に先読みしたデータへのアクセス進捗状況を監視し、必要に応じて後続のデータを先読みする。また、全てのCIFSメッセージのTIDをつけかえ、不整合が生じないようにする。
【選択図】 図1

Description

本発明は、通信装置に関し、特に、クライアントーサーバ間のファイルデータの転送を制御する通信装置に関する。
広域網(Wide Area Network, WAN)を介してデータセンタ(DC)-拠点間で通信を行う場合に、TCPでの帯域制御を行い、WANの高速化を実現する技術が特許文献1に開示されている。
また、TCPの上位のレイヤであるアプリケーション層のプロトコルにファイル共有のためのプロトコルとして、CIFS(Common Internet File System)がある。特許文献3では、CIFSプロトコルに従ったファイルサーバとクライアント間の通信する技術が開示されている。
特許文献2では、ネットワーク上でプロクシとして動作し、ユーザからのCIFSメッセージを予測(特許文献2では”prediction”と呼ばれている)し、先にNASにメッセージを送信しレスポンスを受信しておき、高速化を実現するという技術が開示されている。
WO11/033894 米国特許公開公報番号2004/0215746 特開2004-280283
しかし、DC-拠点間のWANを介したTCP通信が高速化されても、ネットワークストレージ(Network Attached Storage,NAS)等のファイルサーバを用いたファイル共有は十分に高速化されないという問題がある。特にNASの主要プロトコルであり、かつWindowsの標準ファイル共有プロトコルであるCIFS(Common Internet File System)は特許文献1の手法と組み合わせても契約帯域の10%程度しか利用できない。その理由は、CIFSは高々60KBのメッセージを1件ずつ往復させて送受信しているためである。このため特許文献1の手法の効果が得られず、メッセージ1往復ごとにRTT分の時間がかかる。
また特許文献2の予測に基づく手法では、予測される系列(ルール)が長い場合にはWAN回線を一クライアントが長時間占有してしまう。また高速化装置内のバッファも一クライアントが長時間占有してしまう。そのため、予測の確度を高めるため「あるファイルのopenをトリガに全データをreadする」といったルールを定義すると多くのユーザに対して平等にサービスを提供できない。一方で「あるファイルのopenをトリガに一部のデータをreadする」だけでは高速化効果が低い。
したがって、背景技術では、多くのクライアントに対して平等に通信サービスを提供できないという課題がある。また、特許文献2では、予測が外れた場合にユーザからのコマンドを送信すると、処理の識別番号(Transaction Identifier,TID)の不整合が生じ、NASから通信を切断される。
上記少なくとも一の課題を解決するために、
本発明の一態様では、クライアントとサーバ間における通信装置は、クライアントからのアクセスに対して、先読みするデータ量に制限を設ける。また既に先読みしたデータへのクライアントからのアクセス進捗状況を監視し、監視結果に応じて追加の先読み処理を制御する。
先読みするデータの保持するリソース(バッファ)を効率よく使用することができる。また、先読みするデータのために、通信帯域を占有せずに済む。
実施例1のシーケンス例 実施例1のシステム構成 実施例1のシーケンス例 システムのフローチャート アプリケーション高速化装置の装置構成 入力処理部の処理フロー 出力処理部の処理フロー 出力処理部が管理する表 プリフェッチ処理部の処理フローA プリフェッチ処理部の処理フローB プリフェッチ処理部の処理フローC プリフェッチ処理部の処理フローD プリフェッチ処理部の処理フローE プリフェッチ処理部の処理フローF アクセスパターンとプリフェッチバッファサイズ 実施例2のシステム構成 実施例2のシーケンス例 入力処理部の処理フロー 出力処理部の処理フロー プリフェッチ処理部の処理フローB プリフェッチ処理部の処理フローD プリフェッチ処理部の処理フローE プリフェッチ処理部の処理フローG プリフェッチ要求管理テーブルを示す図。 プリフェッチデータ管理テーブルを示す図。 アクセスパタン管理テーブルを示す図。 アクセスパターンの状態遷移例を示す表
以下、実施例を図面を用いて説明する。
図2は、ファイルを利用するクライアントとファイルを管理するファイルサーバとを含む実施例1の全体構成を示す。本実施例で、ファイル共有のための記憶リソースや通信リソースの効率よい利用形態について説明する。また、クライアント計算機へのファイルデータの提供を高速化する。
ここではWAN201を介してクライアント101とファイルサーバ102が接続されている。
クライアント101は、ファイルサーバ102と、ネットワークを介して接続され、ファイルサーバが管理するファイルを利用する。クライアント101は、例えば計算機や情報処理端末や、またはスマートフォン等の携帯型情報処理端末であって、サーバにあるサーバを利用する、情報処理装置である。
ファイルサーバ102は、ファイル入出力制御部5800と、複数のファイルを格納するストレージ5900を有する、サーバー等であって、ネットワークを介してデータを提供する情報処理装置である。
ファイル入出力制御部5800は、クライアント101に対して、該当するファイルの識別子を通知したり、WANを介したリクエストに応じて、ファイルの部分データをストレージ5900から読み出し、WANに向けて送出する。
ただし、クライアント101は、アプリケーション高速化装置1(105)とTCP高速化装置1(103)を介してWAN102に接続し、またファイルサーバ102はアプリケーション高速化装置2(106)とTCP高速化装置2(104)を介してWAN201に接続する。
TCP高速化装置103および104は例えば特許文献1で開示された高速化手法を用いて第4層トランスポート層(L4)の高速化機能を提供する。
TCP高速化装置は、WAN帯域制御装置であってもよい。例えば、TCP高速化装置アプリケーション高速化装置105による先読み要求をWANの通信帯域を送信するための送信制御を行う。例えば、WAN帯域制御装置103は、OSI(Open Systems Interconnection)参照モデルで規定されるLayer4のTCP(Transmission Control Protocol)に従い、WAN上でのパケットの廃棄状況や再送発生状況によって送信する帯域を設定し、先読み要求を設定された帯域で送信する。また、WAN帯域制御装置は、設定された帯域が、あらかじめ定められた上限の帯域内にあるかを判定し、判定結果、帯域内である場合に、先読み要求などのパケットを送信する遵守判定を行ってもよい。また、WAN帯域制御装置間は、TCPに従って、データ通信を行う。パケットには、ファイルの識別子やファイルのデータ、サーバへのファイルの処理を制御するコマンド、または、クライアント側でファイルに関する処理を制御するコマンドが含まれる。
アプリケーション高速化装置は、OSIで規定される第5層から第7層までを担当し、たとえば、第7層アプリケーション層(L7)アプリケーションであるCIFS(Common Internet File System)を高速化するための制御を行う。なお、アプリケーション層は、TCP/IP参照モデルにおける4階層の内の第4層でもある。TCP/IP参照モデルでのアプリケーション層は、OSI参照モデルのアプリケーション層、プレゼンテーション層、およびセッション層に対応する。
例えば、アプリケーション高速化装置105は、クライアント101からファイルへアクセスするため取得要求を受信した場合に、ファイルサーバに対してファイルのデータの先読みをWANを介して実行する通信装置である。アプリケーション高速化装置105は、プリフェッチバッファを備え、WANを介して先読みにより取得したデータをバッファに保持し、その後のクライアントからのリクエストに対し、保持されている先読みデータをプリフェッチバッファから返す。また、アプリケーション高速化装置105は、クライアント101からファイルへのアクセス状況、例えば、クライアントからのファイルのリード要求に該当する先読み要求の有無や、先読みデータのクライアントへの送信状況に応じて、先読み量、先読み位置を決定し、ファイルサーバ102に対して、さらにファイルデータの先読みを行い、先読みされたデータをプリフェッチバッファに保持する。
アプリケーション高速化装置105は、クライアント側、サーバ側双方ではなく、ファイルサーバー102側あるいはクライアント側いずれか一方(実施例2で後述)にあってもよい。この場合は、ファイルサーバー102側の場合は、アプリケーション高速化装置105は、WAN201とファイルサーバ102との間に設けられる。
なお、アプリケーション高速化装置105とTCP高速化装置103は、別々の装置ではなく、一つの通信システムであってもよい。例えば、通信システムは、アプリケーション高速化装置105とTCP高速化装置103にそれぞれに対応する処理部とLAN送受信部とWAN送受信部とを有し、それぞれがBUSなどの信号線や内部スイッチで接続される。LAN送受信部は、クライアントとネットワークを介してリクエストの受信やデータを送信すると、先読み要求をファイルサーバ102に向けてWANに送出する。または、WAN送受信部は、ファイルサーバ102から、ファイルの識別子やファイルのデータ、クライアント側でファイルに関する処理を制御するコマンドをWANから受信する。つまり、通信システムは、局所ネットワーク(LAN)を介して複数のクライアント101と接続し、広域エリアネットワーク(WAN)を介してファイルサーバ102と接続し、クライアント101とファイルサーバ102とのデータ通信の中継、データ通信帯域を制御する。また、通信システムは、ファイルサーバから取得する先読みデータをバッファに保持し、クライアントからのリード要求に応じたバッファから読み出し制御、さらなる先読みリクエストによりファイルデータの取得を行う。また、通信システムは、LANのゲートウエイ装置であってもよい。
図2によると、アプリケーション高速化装置105により、Layer5−7に基づいて、クライアントからのリクエストに対するレスポンスの高速化を実現し、TCP高速化装置103により、Layer4におけるWAN帯域の高速化を実現する。
以上が、アプリケーション高速化装置の構成例である。
図1は、実施例1のシーケンスの一例である。図1では、クライアント101側、ファイルサーバ102側に、アプリケーション高速化装置1(105),2(106)を備える。また、アプリケーション高速化装置の通信を高速化するために、WANの通信帯域を制御するTCP高速化装置がWANの複数拠点に備えられる。
まずクライアント101からのTID=1のopenコマンド111が各装置105,103,104,106を経由しファイルサーバ102に到達する。ここでTIDとは処理の識別番号(Transaction IDentifier)の略であり、同一セッション内ではTIDによってリクエストを一意に識別可能であるとする。ただし、セッションとはあるユーザがログインしてからログアウトするまでの、あるクライアント101の一連のメッセージのやり取りの事とし、コマンドがどのセッションに属するかはセッションIDから容易に識別可能とする。また、ここではあるリクエストコマンドに対するレスポンスコマンドには同じTIDをつけ、かつリクエストとレスポンスはフォーマットから容易に識別可能とする。さらに、特にCIFSを実装した一部のファイルサーバでは、TIDは単に一意に識別可能なだけではなく、前後のリクエストあるいはレスポンス、それらの組み合わせの関係を特定する通し番号である事が要求される。そのため、クライアント101側、ファイルサーバ102側それぞれでTIDの不整合を起こさないために、アプリケーション高速化装置1(105)および2(106)がそれぞれTIDを振り直し、個別に管理する。個別管理の具体例は後に記す。
また、ここでopenコマンドとは引数で指定したファイルを利用可能にするためのコマンドである。openコマンド111の場合は、引数で指定した“/foo/bar.txt”が利用可能対象である。特にCIFSでは“SMB2_CREATE”コマンドがopenコマンドである。また、一部のファイル共有プロトコルでは、openコマンドの引数において排他制御の要求も行う。openコマンド111の場合は引数で指定した“x(exclusive)”で排他制御権を要求している。特にCIFSでは“RequestedOplockLevel”という引数において排他制御の要求を行う。
ファイルサーバ102はopenコマンド111へのレスポンス112を返す。openコマンドのレスポンスはopenコマンドの引数で指定されたファイルの識別子(File Identifier、FID)を含む。以降、ファイルサーバ102に対してopenコマンドの引数で指定したファイルの読み込み命令(readコマンド)や書込み命令(writeコマンド)を出す時にはファイル名“/foo/bar.txt”ではなく、FIDであるAを引数にする。また、一部のファイル共有プロトコルでは、排他制御権の取得結果も返される。
なお、レスポンス112には、ファイルサーバに格納されるファイルの排他制御権の取得結果が含まれていてもよい。例えば、ファイル共有プロトコルの一つであるCIFSでは“OplockLevel”という引数において排他制御権の取得結果を返す。この取得結果は“SMB2_OPLOCK_LEVEL_NONE”、“SMB2_OPLOCK_LEVEL_II”“SMB2_OPLOCK_LEVEL_EXCLUSIVE”、“SMB2_OPLOCK_LEVEL_BATCH”、“SMB2_OPLOCK_LEVEL_LEASE”という値を取り、“SMB2_OPLOCK_LEVEL_NONE”以外の値であれば排他制御権が取れている。openコマンドのレスポンス112は、まずアプリケーション高速化装置2(106)に渡る(113)。このとき、アプリケーション高速化装置2(106)はopenコマンドのレスポンス112に含まれる排他制御権の取得結果を調べ、排他制御権が取れていればFIDや、その他認証情報などファイルサーバ102との通信に必要な情報も併せて読込む。その後、openコマンドのレスポンス112は各装置104,103,105を経由しクライアント101に到達する。
一方でアプリケーション高速化装置2(106)は、レスポンス(113)で取得したFIDを用いてファイルのプリフェッチを行う。具体的には、アプリケーション高速化装置2(106)は、ファイルサーバ(102)に対しreadコマンドを送信121する。readコマンドはFID,読込みオフセット、読込み長の3つの引数を取る。シーケンス121において送信したreadコマンドはFIDがA(すなわち“/foo/bar.txt”)であり、読込みオフセットが0(すなわちファイルの先頭から読込む)、読込み長が1000である。
次に、アプリケーション高速化装置2(106)はファイルサーバ102からシーケンス121において送信したreadコマンドのレスポンス(122)を受け取る。ここで受け取るレスポンス122には“/foo/bar.txt”のデータ実体が含まれている。
続いてアプリケーション高速化装置2(106)は、送信したコマンド121と受け取ったレスポンス122の関係が判るように二つをペアにし、TCP高速化装置104および103を介してアプリケーション高速化装置1(105)へ送信(123)する。
これを受信したアプリケーション高速化装置1(105)は、アプリケーション高速化装置2(106)は送信したコマンド121と受け取ったレスポンス122に分割し、FID=Aのオフセット=0から1000のデータである事が判るようにバッファに格納しておく。以後、同様にアプリケーション高速化装置2(106)はプリフェッチバッファサイズに達するまでプリフェッチ(125)を行い、その結果をアプリケーション高速化装置1(105)に渡す126。図1の例ではプリフェッチバッファサイズは、4000である。プリフェッチバッファサイズの詳細は後に記す。
プリフェッチとは別に、クライアント101もopenコマンド111へのレスポンス112を受信した後にFIDがAのファイルに対するreadを行う。ここではまず読込みオフセットが0、読込み長が500のreadコマンド(131)をファイルサーバ102に向けて送信する。ファイルサーバ102への経路上のアプリケーション高速化装置1(105)が、このreadコマンド(131)を受領すると、ファイルサーバ102自らのプリフェッチバッファからコマンドに対する処理結果を返す。続いて読込みオフセットが500、読込み長が500のreadコマンド(132)を送信しても同じくアプリケーション高速化装置1(105)がプリフェッチバッファから結果を返す。
続いて読込みオフセットが1000、読込み長が1000のreadコマンドを送信133しても同じくアプリケーション高速化装置1(105)がプリフェッチバッファから結果を返すが、この時プリフェッチバッファの半分(2000)のデータを読んだため、アプリケーション高速化装置1のプリフェッチバッファ管理の閾値に達する(134)。そこで、アプリケーション高速化装置1(105)は、アプリケーション高速化装置2(106)に追加先読み依頼(135)をし、プリフェッチバッファサイズのデータをプリフェッチする(136)。なお、ここでは閾値を50%(半分)としたが、閾値はユーザ定義もしくはシステム定義の任意の値とする。 ところで、この時点でクライアント101側のTIDは4(133)であり、一方ファイルサーバ(102)側のTIDは6(136)である。これは先に書いた通りアプリケーション高速化装置1(105)および2(106)がそれぞれTIDを振り直し、個別に管理しているためである。
ファイルサーバ側102のアプリケーション高速化装置2(106)が、openコマンド(111)に対するレスポンスを契機に、ファイルサーバ102に対してファイルAのうち、所定量のデータの先読みを複数回分けて行い、複数回にわたって得られたデータを、アプリケーション高速化装置1(105)に転送する。アプリケーション高速化装置は、転送されたデータをバッファに保持し、クライアント101のreadコマンド(131)に対してデータを返答する。そして、クライアント101側のアプリケーション高速化装置1(105)は、バッファに保持されるデータに対して、クライアントからのread(131,132,133)が、閾値を超えたばあいは、さらに、ファイルサーバ(102)側のアプリケーション高速化装置2(106)は、追加先読み依頼(135)を、ファイルサーバ(102)に対して行う。
このように、本発明では、あるファイルのプリフェッチをエンドユーザの読込みに合わせて少しずつ取りに行くことで、特定クライアントに関するプリフェッチが回線を占有しないようにする。また、あるファイルのプリフェッチをクライアントのデータ取得リクエストに合わせて少しずつ取りに行くことで、クライアントがデータ取得をやめた場合や余分なデータをプリフェッチせずに、済む。あるファイルのプリフェッチを、クライアントのデータ取得リクエストに合わせて、通信回線の帯域を利用して少しずつ取りに行くことで、余分なデータをプリフェッチするための帯域を他の通信に有効に利用することができる。
図3を用いて、図1で、プリフェッチが外れ、バッファで保持されるデータとは異なるアドレスに対応するデータに対するreadコマンドをアプリケーション高速化装置105が受領した場合の動作を説明する。ここではクライアント101がopenコマンド301を送信し、それに伴いアプリケーション高速化装置2(106)がプリフェッチを行う所までは図1の112、113と同様である。
しかし、ここではクライアント101側TID=4のreadコマンド303がプリフェッチされていない領域のデータを要求する。
ここで、はクライアント101の要求が、6000から6499までのデータの要求であるにも関わらず、アプリケーション高速化装置1(105)は、0から3999までのデータをプリフェッチしかしていない。そこで、アプリケーション高速化装置1(105)は、プリフェッチが外れたと判断311し、アプリケーション高速化装置2(106)に対して、オフセット6000からの追加先読み依頼312を出す。その後、アプリケーション高速化装置2(106)はプリフェッチバッファサイズ分のプリフェッチを行う。 図3のように、ランダムアクセスをした場合であっても、余分なデータをプリフェッチせずに、済む。あるファイルのプリフェッチを、クライアントのデータ取得リクエストに合わせて、通信回線の帯域を利用して少しずつ取りに行くことで、余分なデータをプリフェッチするための帯域を他の通信に有効に利用することができる。
続いて図4を用いて、アプリケーション高速化装置105、106が行う、図1および図3で説明した実施例1の処理の流れを説明する。処理はアプリケーション高速化装置1(105)のopenコマンド受付401から始まり、その後各装置TCP高速化装置103、104,アプリケーション高速化装置106を介してopenコマンドをファイルサーバ102に転送する。ファイルサーバ102からのレスポンスアプリケーション高速化装置105は、ファイル識別子(FID)レスポンスをアプリケーション装置106を介して受けると、クライアント101に返される(402)。
続いてアプリケーション高速化装置2(106)が、FID受領後、プリフェッチバッファサイズ分のreadコマンド(図1での122)をファイルサーバ102に送信し、結果をアプリケーション高速化装置1(105)に転送(403)する(図1での124)。
次に、アプリケーション高速化装置1(105)はクライアント(101)からのコマンドを待ちうける。受信したコマンドがcloseコマンドか否か判断し404、closeではない場合は続いてreadコマンドか否か判断する405。readコマンドではない場合は、アプリケーション高速化装置1(105)および2(106)で、クライアント(101)からのreadコマンドに含まれるTIDを付替え、ファイルサーバ102に転送し、結果をクライアントに返し406、手順404に戻る。
一方、手順405においてreadコマンドである場合は、アプリケーション高速化装置1(105)は、read対象のデータをプリフェッチバッファに読込み中もしくは読込み済みか否か判断し407、そうではない(すなわち保持されていない)場合は、アプリケーション高速化装置1(105)からアプリケーション高速化装置2(106)へ追加先読み依頼をし、プリフェッチバッファ分の先読み(408)を行う(図1の追加先読み依頼(135)に対応)。
その後、アプリケーション高速化装置1(105)はTIDを付替えし、プリフェッチバッファ内のデータをクライアント101へ返す(409)。その後、プリフェッチバッファ内データに対し閾値n%を超えるアクセスがあったか否か判断し(410)、閾値を超えたと判断された場合、プリフェッチバッファ分の追加先読み(311)を行い、手順404に戻る。追加先読み依頼は、図1の135に対応する。
一方、手順404において、受領したコマンドが、closeコマンドと判断した場合は、アプリケーション高速化装置1(105)は、プリフェッチバッファを解放し(412)、openコマンド受付401以降に同一FIDのファイルに対してwrite系のコマンドがなかったか否か判断する(413)。ここでwrite系コマンドとは、ファイルに何らかの変更を加えるコマンドである。
特にCIFSプロトコルの場合、SMB2_WRITEとSMB2_SETINFOがwrite系コマンドである。write系コマンドがなかった場合は、アプリケーション高速化装置1(105)がcloseレスポンスを作りクライアント101に返し(414)、その後各装置103、104,106を介しTIDを付替えてcloseコマンドをファイルサーバ102に転送し(415)、処理を終える417。write系コマンドがないことを判別することにより、closeコマンドが失敗する恐れがないと判定でき、close処理を完了できる。
手順413において、アプリケーション高速化装置1(105)は、write系コマンドがあったと判断した場合は、各装置103、104,106を介しTIDを付替えてcloseコマンドをファイルサーバ102に転送し、ファイルサーバ102から送信される、結果を再びTIDをつけかえてクライアント101に返し、処理を終える。 続いて、図5を用いて図1および図3で説明した動作を可能にするアプリケーション高速化装置1(105)および2(106)の構成と動作について説明する。
アプリケーション高速化装置1(105)および2(106)と同じアプリケーション高速化装置501はLAN側NIF502とWAN側NIF503と入力処理部504と出力処理部505とプリフェッチ処理部506を持つ。
LAN側NIF502は、アプリケーション高速化装置501とLAN(Local Area Network、構内通信網)の接続口であり、アプリケーション高速化装置1(105)ではクライアント101と接続される。またアプリケーション高速化装置2(106)のLAN側NIF502では、ファイルサーバ102と接続される。
またLAN側NIF502はLANからの入力を一時的に蓄積するLAN側入力バッファ521と、LANへの出力を一時的に蓄積するLAN側出力バッファ522を持つ。
WAN側NIF503はアプリケーション高速化装置501とWANの接続口であり、アプリケーション高速化装置1(105)ではTCP高速化装置1(103)と接続され、またアプリケーション高速化装置2(106)ではTCP高速化装置2(104)と接続される。またWAN側NIF503はWANからの入力を一時的に蓄積するWAN側入力バッファ531と、WANへの出力を一時的に蓄積するWAN側出力バッファ532を持つ。
入力処理部504はLAN側NIF502およびWAN側NIF503それぞれの入力バッファ521および531を監視し、メッセージを受信して処理を行う。入力処理部504の処理詳細は後述する。
出力処理部505は、最新TID管理テーブル801と更新前TID管理テーブル802とを有する最新TID管理テーブル801は、セッションIDごとの最新のTIDを管理するためにセッションID列811とTID列812を持つ。更新前TID管理テーブル802は、セッションIDごとの変更前TIDと変更後TIDの対応付けを管理するために、セッションID列821と変更前TID列822と変更後TID列823とを持つ。
そして、出力処理部505は、入力処理部504およびプリフェッチ処理部506からの出力要求を受け、それをLAN側NIF502もしくはWAN側NIF503の出力バッファ522および532に出力処理を転送する。また、出力処理部505は、LAN側NIFバッファ551とWAN側NIFバッファ552を持ち、LAN側NIFバッファ551に入ったメッセージをLAN側NIF502の出力バッファ522に転送し、またWAN側NIFバッファ552に入ったメッセージをWAN側NIF503の出力バッファ532に転送する。出力処理部505の処理詳細は後述する。 プリフェッチ処理部506は、プリフェッチバッファ550と、プリフェッチ要求管理テーブル560、プリフェッチデータ管理テーブル570、アクセスパタン管理テーブル580とを有する。
プリフェッチバッファ550は、ファイルサーバから取得した複数のファイルのデータを、ユーザ毎及びファイル毎に格納する。プリフェッチ要求管理テーブル560は、プリフェッチバッファに格納されているデータが、ファイルのどの部分に該当するのか、及び、そのデータがバッファのどこに格納されているかを管理する。プリフェッチ要求管理テーブル570は、プリフェッチデータとファイルとプリフェッチバッファにおける格納位置との対応付けを示すテーブルである。このテーブルはさらに、アクセスを出すクライアント101と対応付けされてもよい。
プリフェッチデータ管理テーブル570は、シーケンシャルかランダムかを判別するために、過去のリード要求を管理する。プリフェッチデータ管理テーブル570は、ファイルごとに開始オフセットと、終了オフセットと、プリフェッチバッファに格納されている当該ファイルの開始オフセットとの対応付けを示すテーブルである。
アクセスパタン管理テーブル580は、クライアントからのファイルに対するアクセスパタンの状態遷移を管理するテーブルである。
プリフェッチ処理部506は、上述の少なくとも一のテーブルで、プリフェッチデータのクライアントからのアクセス状況とクライアントのアクセスパターンにより、プリフェッチ処理を制御する。
プリフェッチ処理部506は、クライアント101からのファイルのオープン要求に従い、ファイル識別子をファイルサーバから取得する。
プリフェッチ処理部506は、ファイル識別子(FID)をクライアント101に通知する。プリフェッチ処理部506は、ファイル識別子の受領に応じてクライアント101から送信されるファイルサーバ宛のファイルの取得要求を受信する。また、ファイルのオープン要求受領後に、プリフェッチ処理部506は、ファイルサーバから該当ファイルの所定の範囲のデータを順次取得を開始する。
例えば、プリフェッチ処理部506は、プリフェッチ要求管理テーブル560とプリフェッチデータ管理テーブル570とを用いて、クライアントからファイルデータがプリフェッチバッファ550から読み出される状況を監視し、さらに、ファイルサーバ102あるいは、WAN側のアプリケーション高速化装置106に対して、ファイル取得要求(プリフェッチ)をWAN側NIFを介して、発行するか決定する。その際用いる閾値もプリフェッチ処理部506のメモリ(図示せず)に保持される。より具体的には、サーバに格納される一ファイルの先読みするデータ量に制限を設け、サーバに対してファイルの所定量の先読みを行う。先読みしたデータへのユーザからのアクセス状況を監視し、監視結果、所定の量、先読みデータがユーザからリード要求された場合は、サーバに対してさらなる所定量の先読みを行う。
そして、プリフェッチ処理部506は、先読みデータを受領すると、クライアント101からのデータ取得要求に応じて、該当データをクライアントにLAN側NIFを介して、送る。該当データを送付後、プリフェッチバッファ550から消去あるいは上書き可能な状態にしてもよい。クライアント101への再送のために、LAN側NIF502の出力バッファ522が保持していてもよい。
また、プリフェッチ処理部506は、入力処理部504が処理したデータのうち、プリフェッチに関するメッセージを受け取り、処理結果を出力処理部505に転送する。プリフェッチ処理部506の処理詳細は後述する。
続いて図6を用いて入力処理部504の処理詳細を説明する。入力処理部504は処理開始601後、判断602から判断607までの一連の手順を繰り返し実行し、各判断にヒットする場合にそれぞれの処理を行う。なお、手順602、603、604にヒットするのはクライアント101側の高速化装置1(105)であり、また手順605,606、607にヒットするのはファイルサーバ102側の高速化装置2(106)である。したがって、クライアント101側の高速化装置1(105)は、手順602、603、604以外の手順605,606、607をスキップしてもよい。またファイルサーバ102側の高速化装置2(106)は、手順605,606、607以外の手順602、603、604をスキップ処理をしてもよい。 入力処理部504は、LAN側NIF502の入力バッファ521にリクエストが入ったと判断602した場合は、それがcloseコマンドか否か判断し(621)、closeコマンドであればプリフェッチ処理部506のプリフェッチ処理D(図12)に処理を引きつぐ(622)。プリフェッチ処理Dは、図4の手順413ないし415に対応する処理である。なお、手順621は、図4の手順404に対応する
一方、closeコマンドでなければ、入力処理部504は、readコマンドか否か判断する(623)。readコマンドであればプリフェッチ処理部506のプリフェッチ処理B(図10)に処理を引き継ぐ(624)。プリフェッチ処理Bは、手順407ないし411に相当する処理で、追加の先読み要求をするべきか判断する処理を行う。またプリフェッチ処理Bは、readコマンドに内容に応じて、ランダムアクセスかシーケンシャルアクセスかを判別し、先読み先や先読み量の変更を行う。
一方、readコマンドでなければ、入力処理部504は、出力処理部のWAN側NIFバッファにメッセージを転送する(625)。(図4の手順406の一部に対応する。)
WAN側NIFバッファにレスポンスが入ったと判断(603)した場合は、出力処理部505のLAN側NIFバッファ551にメッセージを転送する(631)。
WAN側NIFバッファに管理コマンドのレスポンスが入ったと判断した場合は(604)、プリフェッチ処理部506のプリフェッチ処理C641(図11)に処理を引き継ぐ。プリフェッチ処理Cは、管理要求コマンドに対するレスポンスに対して、データ部のみ切り離し、プリフェッチバッファに保持する処理を行う。
なお、管理コマンドとは、アプリケーション高速化装置1(105)および2(106)の間で情報のやり取りを行うためのコマンドであり、本実施例では管理要求コマンドと管理closeコマンドの2つを用いる。またそれぞれリクエストとレスポンスがあり、フォーマットからリクエストに対するレスポンスが容易に判断でき、かつフォーマットからリクエストとレスポンスを容易に識別可能とする。
WAN側NIFバッファにリクエストが入ったと判断した場合は(605)、出力処理部505のLAN側NIFバッファ551にメッセージを転送する(651)。
LAN側NIFバッファにレスポンスが入ったと判断した場合606は、レスポンスがcloseコマンドか否か判断661し、closeコマンドであれば、そのレスポンスの処理をプリフェッチ処理部506のプリフェッチ処理F(図14)に処理を引き継ぐ662。そうでない場合は続いてopenコマンドか否か判断663し、そうであればプリフェッチ処理部506のプリフェッチ処理Eに処理を引き継ぐ664。そうでない場合は続いてreadコマンドか否か判断665し、そうである場合には管理レスポンスを作成666する。その後、出力処理部505のWAN側NIFバッファ552にメッセージを転送667する。
WAN側NIFバッファに管理コマンドのリクエストが入ったと判断607した場合はプリフェッチ処理部506のプリフェッチ処理A671にメッセージを転送する。
以上が入力処理部504の処理詳細である。 次に、図4の406,409のTID付け替えの際に行う、TIDの管理処理について説明する。 図8は、図7の手順を実行するために出力処理部505が保持するテーブル(A)(B)を示す。1つ目のテーブル(A)は、最新TID管理テーブル801であり、セッションIDごとの最新のTIDを管理するためにセッションID列811とTID列812を持つ。2つ目のテーブル(B)は、更新前TID管理テーブル802であり、セッションIDごとの変更前TIDと変更後TIDの対応付けを管理するために、セッションID列821と変更前TID列822と変更後TID列823とを持つ。
図7は、出力処理部505の処理詳細を示す。図7の手順の詳細に合わせて、図8の2つのテーブルの更新方法を説明する。
出力処理部505は処理開始701後、判断702から判断705までの一連の手順を繰り返し実行し、各判断処理にヒットする場合にそれぞれの処理を行う。
なお、手順702、703にヒットするのは、クライアント101側の高速化装置1(105)であり、また手順704、705にヒットするのはファイルサーバ102側の高速化装置2(106)である。クライアント101側の高速化装置1(105)は、手順702、703以外の手順704、705はスキップしてもよい。また、ファイルサーバ102側の高速化装置2(106)は、手順704、705以外の手順702、703をスキップしてもよい。
WAN側NIFバッファ552にリクエストが入ったと判断した場合(702)は、メッセージ中のセッションIDを用いて最新TID管理テーブル801から最新のTIDの値(aとする)を取得し、最新TID管理テーブル801のTID列812をa+1に更新し(721)、更新前TID管理テーブル802にメッセージ中のセッションIDとメッセージ中のTIDとaを用いてレコードを挿入し(722)、WAN側NIF503の出力バッファ532にメッセージを転送する(723)。手順721ないし723は、図4の手順406をより詳細にしたものに対応する。WAN側NIF503の出力バッファに532に保持されるメッセージは、TCPに従って、送信帯域制御を行い、WANに送出される。
LAN側NIFバッファ551にレスポンスが入ったと判断した場合は(703)、メッセージ中のセッションIDとTID(これは更新後TID)を用いて更新前TID管理テーブル802からメッセージ中のセッションID及びTIDに対応するレコードを探索し、更新前TID(bとする)を取得し、メッセージ中のTIDをbに更新する。その後、出力処理部505は、探索したレコードを削除する(731)。
ここで、プリフェッチ処理部506が出力したレスポンスの場合は、更新前TID管理テーブル802内にレコードがない場合がある。そこで手順731においてレコードが見つかったか否か判断し(732)、見つからなかった場合はメッセージ中のセッションIDを用いて最新TID管理テーブル801から最新のTIDの値(cとする)を取得(801)し、のTID列812をc+1に更新しメッセージ中のTIDをcに更新する733。その後LAN側NIF502の出力バッファ522に、TIDがcに更新されたメッセージを転送する(734)。LAN側NIF502は、出力バッファ522に格納されるメッセージをクライアント101に向かって順次転送する。手順731ないし734は、図6の手順631によりLAN側NIFに転送されるレスポンスに対して実行される。例えば、手順731から734は、図4の406に対応する。
WAN側NIFバッファ552にレスポンスが入ったと判断した場合(704)は、メッセージ中のセッションIDとTID(これは更新後TID)を用いて更新前TID管理表802からレコードを探索し更新前TID(dとする)を取得しメッセージ中のTIDをdに更新した後にレコードを削除741する。その後WAN側NIF503の出力バッファ532にメッセージを転送742する。
LAN側NIFバッファ551にレスポンスが入ったと判断705した場合はメッセージ中のセッションIDを用いて最新TID管理テーブル801から最新のTIDの値(eとする)を取得後801のTID列812をe+1に更新751し、更新前TID管理テーブル802にメッセージ中のセッションIDとメッセージ中のTIDとeを用いてレコードを挿入752し、LAN側NIF502の出力バッファ522にメッセージを転送753する。 以上が、出力処理部505が、クライアント側とのトランザクションと、サーバ側とのトランザクションを対応づけるために、TIDを管理する処理である。
続いて、図9から図13、図24から図26を用いてプリフェッチ処理部506の処理詳細を説明する。 図24は、プリフェッチ要求管理テーブル560を示す図である。プリフェッチ要求管理テーブル560は、ファイルごとのプリフェッチバッファサイズと次回プリフェッチする場所を管理するテーブルである。本テーブルの主キーはFID列2410である(FIDはシステムユニークな値のため、主キーになりうる)。また、FIDは、特定のユーザにより、オープンしたファイルオブジェクトを特定する識別子である。
プリフェッチオフセット列2420は現在どこまでプリフェッチできているかを表す。つまり、アプリケーション高速化装置のファイルの取得状況を示す。次回プリフェッチを行うときは、アプリケーション高速化装置105,106は、この列で示されたオフセット位置から読込むリクエスト発行する。
プリフェッチバッファサイズ列2430はFID列2410で表されるファイルオブジェクトに割り当てられたプリフェッチバッファのサイズを現す列である。つまり、プリフェッチバッファサイズ2430の値は、特定ユーザに対して該当ファイルのために割り当てられるバッファの上限値を示す。
本テーブルにはファイルオープンに伴いFIDが発行されたとき(すなわちopenのレスポンス受信時)にレコードが追加する。その際のプリフェッチオフセットは0、プリフェッチバッファサイズは初期値 (ここでは1MB) とする。
図25は、プリフェッチデータ管理テーブル570を示す。プリフェッチデータ管理テーブル570は、ファイルごとのプリフェッチ済み箇所とプリフェッチバッファ内での場所を管理するテーブルである。本テーブルの主キーはFID列2510と開始オフセット列2520の組み合わせである。(本テーブルは同一FIDに対して複数のレコードが存在する (プリフェッチバッファ内でフラグメントするため)。)
開始オフセット列2520と終了オフセット列2530は、FIDで表されるファイルのどこからどこまでをプリフェッチしたかを表す。
プリフェッチバッファ内オフセット列2540は、プリフェッチバッファに格納される当該ファイルデータの、プリフェッチバッファにおける開始オフセットをあらわす。プリフェッチバッファ内での終了オフセットは、終了オフセット列2530とプリフェッチバッファ内開始オフセット2540との値から特定される。
図9は、プリフェッチ処理部506のプリフェッチ処理Aの処理詳細である。
プリフェッチ処理Aは,図6で、WAN側NIFのバッファに管理コマンドリクエストが保持されている場合に実行される。
ここではまず処理開始後(901)、受け取ったメッセージが管理要求コマンド(例えば、追加先読み依頼)か否か判断(902)し、管理要求コマンドであればプリフェッチバッファ分のreadコマンド(リクエスト)を作成し(921)、出力処理部505のLAN側NIFバッファ551に渡し922、処理を終える(903)。その後、図7の処理フローにて、出力処理部505は、LAN側NIFバッファに格納されるメッセージの処理を行う。従って、サーバ側のアプリケーション装置2(106)は、手順921で作成されたreadコマンドによる先読み要求を行い、ファイルサーバ102に送信し、ファイルの部分データを取得する。
一方、管理要求コマンドではない場合(すなわち管理closeコマンドである場合)は、プリフェッチ処理部506は、closeコマンドを作成し(931)、出力処理部505のLAN側NIFバッファ552に渡し(932)、処理を終える(903)。その後、図7の処理フローにて、出力処理部505は、LAN側NIFバッファに格納されるメッセージの処理を行う。従って、サーバ側のアプリケーション装置2(106)は、手順931で作成されたcloseコマンドを送信する処理を行う(図4の手順416の一部に対応する。)。
図10は、プリフェッチ処理部506のプリフェッチ処理Bの処理詳細である。プリフェッチ処理Bは、クライアント側のアプリケーション高速化装置1(105)のLAN側NIFのバッファにreadコマンドを保持した場合に行う処理である。図4の手順407ないし411に対応する。ここではまず処理開始後(1001)、プリフェッチ処理部506は、プリフェッチデータ管理テーブル570を参照し、受け取ったreadコマンドの要求範囲が先読み済みか否か、要求範囲に該当するデータが、プリフェッチバッファ550に保持されているか判断する(1002)。判断の結果、保持されていれば(先読み済みであれば)、プリフェッチ処理部506は、クライアント101から送信された過去のreadコマンドの要求範囲に基づいて、クライアントからのアクセスパターンがシーケンシャルか否か判断し(1021)、判断結果、シーケンシャルであれば、次回取得プリフェッチバッファサイズを増加させる(1022)。一方、該当データが保持されていない(先読み済みではない)場合は、プリフェッチ処理部506は、アクセスパターンがランダムか否か判断し(1003)、ランダムであれば次回取得バッファサイズを減少させる(1031)。
バッファサイズを増減させる場合は、プリフェッチ処理部506は、手順1002、1021,1022により、プリフェッチ処理部506は、クライアントからのアクセス履歴により、ランダムアクセスかシーケンシャルアクセスかを判別し、次回取得プリフェッチバッファサイズを更新する。なおアクセスパターンの判定処理の詳細とプリフェッチバッファサイズについては後述する。その後、プリフェッチ処理部506は、もっとも古いプリフェッチバッファを解放する(1004)。
さらに、プリフェッチ処理部506は、新たにプリフェッチバッファを確保し(1005)、管理要求コマンドを作成し、(1006)。出力処理部505のWAN側NIFバッファに渡す(552)。管理要求コマンドに対する処理は、図7で前述のとおりである。
その後、プリフェッチ処理部506は、プリフェッチバッファにファイルの部分データが入ってきた後、プリフェッチバッファからファイルデータを含む、readコマンドに対する応答を作成し(1008)、出力処理部505のLAN側NIFバッファ551に渡す(1009)。
次に、プリフェッチバッファ内データに対し閾値n%を超えるアクセスがあったか否か判断し(1010)、閾値を超えた場合は古いプリフェッチバッファを解放1011し、新たにプリフェッチバッファを確保する(1012)。次のファイルデータを取得するための追加先読み依頼である管理要求コマンドを作成し(1013)、出力処理部505のWAN側NIFバッファに渡す(1014)。その後、処理を終える1015。以上、プリフェッチするデータ量の更新処理や、追加の先読み依頼を行う処理を含むプリフェッチ処理Bの詳細を説明した。なお、手順1010の、プリフェッチバッファ内データに対するアクセス状況を監視する処理は、図10のタイミングに限らず、定期的に行ってもよい。
ここで、図10のステップ1003及び1021の判定処理に関する、アクセスパターンとプリフェッチバッファについて、図15,図26,図27及び図28を用いて説明する。本実施例では、プリフェッチ処理部506が、あるファイルに対するアクセスの履歴から、アクセスパターンが、シーケンシャルアクセス、ランダムアクセス、ニュートラルアクセスいずれかを判定し、判定結果に基づいて、プリフェッチの制御を変更する。
ここでシーケンシャルアクセスとは、クライアントからの複数のreadコマンドで要求されるアドレス範囲を比較すると、連続するアドレス範囲を指定されていると判定されるアクセスパターンをいう。またはシーケンシャルアクセスとは、複数のreadコマンドにより指定されるアドレス範囲が、プリフェッチバッファのn%以上のデータを読んだ場合の事とする。なお、n%は、図10の手順1010の閾値n%よりも小さい。
またランダムアクセスとは、クライアントからの連続するreadコマンドによって、所定の回数連続してプリフェッチバッファのn%以上のデータを読まなかった場合の事とする。
また、ニュートラルアクセスとは、シーケンシャルアクセスでもランダムアクセスでもない場合の事とし、具体的にはプリフェッチバッファのn%以上のデータを読んだり読まなかったりした場合を指す。
図10の手順1021で。ここであるファイルがシーケンシャルアクセスと判定されているのであれば、プリフェッチバッファのサイズを増やす(1022)ことでクライアントから見たアクセス速度をさらに速くできる。
一方であるファイルがランダムアクセスと判定されているのであれば、プリフェッチバッファのサイズを減らす事で、実際にクライアントからアクセスされないデータをWANに流れることをぼうしできる。さらに、シーケンシャルアクセスと判断し、プリフェッチバッファのサイズを増やした場合、新しいサイズにおいてもシーケンシャルアクセスを行う(すなわち連続して新しいサイズのプリフェッチバッファのn%以上のデータを読む)か否か分からないため、一旦ニュートラルアクセスとして扱い、あらたにアクセス種別の判断をおこなう。同様にシーケンシャルアクセスと判断し、プリフェッチバッファのサイズを増やした場合、新しいサイズにおいてもランダムアクセスを行う(すなわち連続して新しいサイズのプリフェッチバッファのn%以上のデータを読まない)か否か分からないため、一旦ランダムアクセスとして扱い、あらたにアクセス種別の判断をおこなう。
以上の説明をまとめた状態遷移図の例を図15に示す。プリフェッチ処理部505が、図10の手順1021,1003で行う、シーケンシャルアクセスやランダムアクセスの判断基準を3回連続したn%以上(もしくは以下)のアクセスとした場合で、説明する。
ここではニュートラルアクセス状態を1501、シーケンシャルアクセス状態を1502、ランダムアクセス状態を1503とし、ニュートラル状態からプリフェッチバッファのn%読込むと状態1521へ進み、さらに次のプリフェッチバッファのn%読込むと状態1522へ進み、さらに次のプリフェッチバッファのn%読込むとシーケンシャルアクセス1502と判断され、次回取得バッファサイズを増やしニュートラルアクセス状態1501に戻る。同様にニュートラル状態からプリフェッチバッファのn%読込まないと状態1531へ進み、さらに次のプリフェッチバッファのn%読込まないと状態1532へ進み、さらに次のプリフェッチバッファのn%読込まないとシーケンシャルアクセス1503と判断され、次回取得バッファサイズを減らしニュートラルアクセス状態1501に戻る。なお、シーケンシャルアクセス状態への移行中状態1521および1522においてプリフェッチバッファのn%読込まないと状態1531に移行する。またランダムアクセス状態への移行中状態1531および1532においてプリフェッチバッファのn%読込むと状態1531に移行する。
図26は、アクセスパタン管理テーブルを示す。
図15のアクセスパタンの状態遷移のルールに従って遷移されたアクセスパターンの状態を示す状態例2620と、クライアントからのアクセスが、連続した読み込みが発生したか、またはその回数を示す連続読み込み列2630と、をFID列2610にて対応づけるテーブルである。FID列2610は、主キーであり、ファイルオブジェクトごとにアクセスパタンの状態とクライアントからの連続読み込み回数、つまりクライアントからのファイルの読み出し要求範囲を含むアクセス履歴を管理する。状態列2620は、図15の状態遷移図中のどの状態にいるかを表す。
なお、図24のプリフェッチバッファサイズ2430の値の管理については、最大値と最小値をあらかじめ、プリフェッチ処理部506が認識していてもよい。例えば、プリフェッチ処理部506は、プリフェッチバッファを大きくしすぎるとクライアント101間のアクセス速度に偏りが生じるため、プリフェッチバッファサイズにはユーザ定義もしくはシステム定義の上限を持たせる。また、プリフェッチバッファを小さくしすぎるとread一回分のデータすらバッファに乗らなくなるため、プリフェッチバッファサイズにはユーザ定義もしくはシステム定義の下限を持たせる。
一例として、プリフェッチバッファサイズ1541の上限を8MB(1542)、下限を128KB(1543)とし、また初期値を1MB(1544)とする。プリフェッチバッファサイズを増加させる時には上限(1542)に達するまで2倍(1545)し、またプリフェッチバッファサイズを減少させる時には下限(1543)に達するまで半分(1546)にする。
また、ファイルに対する開始オフセット、終了オフセットの組み合わせで示すクライアントからのアクセスが、以下のように、最初のアクセス(Read(101,150))のあと、2回がランダムに読んだ後、シーケンシャルアクセスが続いた場合であり、かつ現在のプリフェッチバッファのn%が2000である場合の状態遷移を図27に示す。
Read(101, 150)
Read(301, 400)
Read(5501, 6500)
Read(6501, 7500)
Read(7501, 8500)
Read(8501, 9500)
Read(9501, 10500)
Read(10501, 11500)
Read(11501, 12500)
Read(12501, 13500)
図27は、それぞれの行で、初期状態2710から、入力(クライアントからのアクセス)2720が発生すると、状態が、図15に従って遷移先2730に遷移し、その際アクセスパタン管理テーブル580の状態列2620の値は遷移先2730になり、またアクセスパタン管理テーブル580の連続読込み列2630の値は値2740になり、さらに次の入力に対しては一段下がった下の行で遷移することを示している。プリフェッチ処理部506は、その遷移後の状態とクライアントからのプリフェッチバッファに格納されているデータに対する連続読み込みがあったかを、図26のアクセスパタン管理テーブル580を更新する。
以上が、図10のステップ1003及び1021の判定処理に関する、アクセスパターンとプリフェッチバッファについての説明である。
図11は、プリフェッチ処理部506のプリフェッチ処理Cの処理詳細である。
プリフェッチ処理Cは、図6の手順604の処理結果に応じて行われる。
ここではまず処理開始1101後、受け取ったメッセージが管理要求コマンドのレスポンスか否か判断し(1102)、管理要求コマンド(例えば、追加先読み要求依頼)のレスポンスであればデータ部のみ切り離して新たに確保したプリフェッチバッファに、データ部に格納されているファイルの部分データを保存1121し、処理を終える(1103)。
図12は、プリフェッチ処理部506のプリフェッチ処理Dの処理詳細である。図4の手順412ないし415に対応し、図6の手順621の判断結果に応じて行われる。まず、プリフェッチ処理部506は、プリフェッチバッファを解放1202し、openコマンド受付663以降に同一FIDのファイルに対してwrite系のコマンドがなかったか否か判断する(1203)。
write系コマンドがなかった場合は(手順1203の判断結果でYesの場合)、closeレスポンスを作りクライアントに返し(1231)、管理closeコマンドを作成する(1232)。そして、プリフェッチ処理部506は、closeしたファイルのFIDをメモリに記録しておき(1233)、出力処理部505のWAN側NIFバッファ552に渡し1204、処理を終える。手順1233にて記録したFIDはプリフェッチ処理部506プリフェッチ処理Fにて使用する。
一方write系コマンドがあった場合は(手順1203の判断結果でNoの場合)、プリフェッチ処理部506は、クライアント101からのcloseリクエストコマンドをそのまま出力処理部505のWAN側NIFバッファ552に渡し(1204)、処理を終える。Closeリクエストコマンドは、WANを介してファイルサーバ102に転送される。以上が、図12を用いてクライアント101からcloseコマンドを受領したときの、アプリケーション高速化装置105が行う処理フローを説明した。
図13はプリフェッチ処理部506のプリフェッチ処理Eの処理詳細である。プリフェッチ処理Eは、ファイルサーバ側のアプリケーション装置2(106)が、openコマンドに対するレスポンスをファイルサーバから受領した場合に、そのレスポンスをWANを介してクライアントに転送する処理に対応して行う処理である。図4の手順403に対応する。
まず、プリフェッチ処理部506は、プリフェッチバッファ分のreadコマンド(先読み要求)を作成し(1302)、出力処理部505のLAN側NIFバッファ551に渡し(1303)、処理を終える1304。
図14は、プリフェッチ処理部506のプリフェッチ処理Fの処理詳細である。プリフェッチ処理Fは、ここではまず処理開始1401後、受け取ったcloseレスポンスメッセージのFIDが記録されているか判断1402し、記録されていた(すなわちプリフェッチ処理Dの手順1233で記録した)場合は何もしない(すなわちcloseレスポンスメッセージをここで破棄する)で処理を終える。一方、記録されていなかった場合はcloseレスポンスメッセージを出力処理部のLAN側NIFバッファに渡し1403、処理を終える1404。 実施例1は上記の方法を実装したアプリケーション高速化装置によって、図2に示す構成のシステムにおいて多くのユーザに対して平等にサービスを提供できるよう、一度に先読みするデータ量に制限を設ける。また既に先読みしたデータへのアクセス進捗状況を監視し、必要に応じて後続のデータを先読みする。また、全てのCIFSメッセージのTIDをつけかえ、不整合が生じないようにする。
実施例1では、WANを介してクライアント側及びサーバ側の双方にアプリーケーション高速化装置を備え、先読み処理を両装置が協調して行う例説明した。
実施例2では、図16に示すクライアント側のアプリケーション高速化装置1605が、フィルサーバに対して、他のアプリケーション高速化装置と協調せずに、先読み処理を行う例を説明する。本実施例によると、アプリケーション高速化装置1605をクライアント側への導入で済む。以下、実施例1との差分を強調して説明する。 図17は実施例2のシーケンスである。実施例1の図1と比較して、openコマンドを受け取りプリフェッチを開始1701するのがアプリケーション高速化装置1605に変わっている。また、同様にプリフェッチが外れた場合もアプリケーション高速化装置1605がプリフェッチを開始する。
実施例1において図4で説明した処理の流れと図5で説明したアプリケーション高速化装置内の構成については、本実施例でも変更はない。ただし、アプリケーション高速化装置内の各処理部504、505、506の処理内容には若干の変更があるため、以下で説明する。
図18は入力処理部504の処理詳細である。ここでは実施例1の入力処理部504の処理詳細(図6)と比較し、入力処理部が判断するのはLAN側NIF502の入力バッファ521にリクエストが入った場合602とWAN側NIF503の入力バッファ531にレスポンスが入った場合1806だけになる。また、手順1806にヒットした場合の処理のうち、そのレスポンスがreadコマンドであった場合の処理がプリフェッチ処理部506のプリフェッチ処理Gへの引き継ぎ1866に変わる。
図19は出力処理部505の処理詳細である。ここでは実施例1の出力処理部505の処理詳細(図7)と比較し、出力処理部が判断するのはWAN側NIFバッファ552にリクエストが入った場合702とLAN側NIFバッファ551にレスポンスが入った場合703だけになる。判断702および703にヒットした以降の処理に変わりはない。
図20から図23はプリフェッチ処理部506の処理詳細である。実施例1にあったプリフェッチ処理Aおよびプリフェッチ処理Cは実施例2のプリフェッチ処理部506には不要である。また、新たにプリフェッチ処理Fを追加する。
図20はプリフェッチ処理部506のプリフェッチ処理Bの処理詳細である。実施例1の場合(図10)と比較し、管理要求コマンドを作成する手順1006および手順1013が、プリフェッチバッファ分のreadコマンド作成2006および2013に変わる。
図21はプリフェッチ処理部506のプリフェッチ処理Dの処理詳細である。実施例1の場合(図12)と比較し、管理closeコマンドの作成1232手順が不要となる。
図22はプリフェッチ処理部506のプリフェッチ処理Eの処理詳細である。実施例1の場合(図13)と比較し、readコマンドの渡し先が出力処理部505のWAN側NIFバッファ532(2203)に変わる。
図23はプリフェッチ処理部506のプリフェッチ処理Gの処理詳細である。ここではまず処理開始2301後、データ部のみ切り離して新たに確保したプリフェッチバッファに保存2302し、処理を終える2303。
実施例2は、上記の方法を実装したアプリケーション高速化装置1605によって、図16に示す構成のシステムにおいて多くのクライアントに対して平等にサービスを提供できるよう、一度に先読みするデータ量に制限を設ける。また既に先読みしたデータへのアクセス進捗状況を監視し、必要に応じて後続のデータを先読みする。また、アプリケーション高速化装置は、クライアントからのCIFSメッセージに含まれるTIDを変換して、サーバ側に先読み要求を含むCIFSメッセージを送信し、サーバからのレスポンスについても同様にTIDを変換して、クライアントのアクセス要求に応答する。それにより、不整合が生じないようにする。 上述の実施例により、ファイルを利用する一ユーザによるバッファの占有を防ぎ、効率的な先読み処理が可能となり、多くのユーザに対しても平等にサービスを提供できる。 ファイルデータを少しずつ読み込むため、帯域も他の通信に解放することができる。一度に読み込まないので、ユーザが利用しないデータについての先読みのために、帯域を使う必要がなくなり、ネットワークの効率的な利用ができる。
なお、CIFSプロトコルを例に説明したが、NFS(ネットワークファイルシステム)プロトコルやFTTP(ファイル転送プロトコル)に従う通信を行うクライアントとサーバ間を中継する通信装置でも上述の実施例と同様のプリフェッチ制御をおこなってもよい。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
アプリケーション高速化装置105、106、
TCP高速化装置103、104、
ファイルサーバ102

Claims (15)

  1. 第一のネットワークを介してクライアントと、第二のネットワークを介してサーバとに接続される通信装置であって、
    前記サーバが提供するファイルのデータを保持可能なバッファと、
    前記バッファに対するデータの読み書き制御を行う、制御部と、を有し、
    前記制御部は、前記サーバが提供するファイルに対する前記クライアントからの少なくとも一以上のアクセスに基づいて、前記ファイルにおける所定の範囲について前記サーバに対して、先読みを実行するかを判別し、前記先読みを実行することにより、前記サーバから受信するファイルデータを前記バッファに保持する、ことを特徴とする通信装置。
  2. 請求項1記載の通信装置であって、
    前記クライアントからのアクセスが、ファイルのオープンリクエストである場合、
    前記制御部は、前記オープンリクエストを前記サーバに転送し、前記サーバからファイル識別子を受信するのに応じて前記先読みを実行する、ことを特徴とする通信装置。
  3. 請求項2記載の通信装置であって、
    前記先読みは、前記ファイルにおける所定の範囲について、前記ファイルの指定と範囲とを指定を含む複数回のリード要求に分けてファイルデータを取得する、ことを特徴とする通信装置。
  4. 請求項3記載の通信装置であって、
    前記リード要求は、それぞれ識別可能な識別子を含む、ことを特徴とする通信装置。
  5. 請求項2記載の通信装置であって、
    前記制御部は、前記クライアントへ前記ファイル識別子の送信後に、前記クライアントからのアクセスに対応するデータが、前記バッファにある場合、前記対応するデータを前記クライアントに送信する、ことを特徴とする通信装置。
  6. 請求項5記載の通信装置であって、前記バッファに保持されるデータを前記クライアントに送信した量に基づいて、前記サーバに対して先読みを実行する、ことを特徴とする通信装置。
  7. 請求項1ないし6いずれか記載の通信装置であって、
    前記制御部は、前記クライアントからのアクセスが、前記ファイルのデータの取得要求である場合、前記取得要求に対応するデータを前記クライアントに送信するために前記バッファから読み出し、前記バッファからの読み出し量に基づいて、前記サーバに対して先読みを実行する、ことを特徴とする通信装置。
  8. 請求項7記載の通信装置であって、
    前記制御部は、前記読み出し量が所定の量を超えた場合、前記サーバに対して、前記ファイルにおける以前に先読みした範囲と連続する範囲を含むデータを先読みする、ことを特徴とする通信装置。
  9. 請求項1ないし8いずれか記載の通信装置であって、
    前記クライアントからの複数のアクセスの履歴に基づいて
    前記ファイルにおける、先読みの対象を決定する、ことを特徴とする通信装置。
  10. 請求項9記載の通信装置であって、
    前記複数のアクセスが、前記ファイルの連続する範囲を指定する場合、
    前記制御部は、前記先読み対象とする範囲を増加させる、ことを特徴とする通信装置。
  11. 請求項1ないし10記載の通信装置であって、
    前記第2のネットワークは、TCPに従うネットワークであり、
    前記サーバは、ファイル要求プロトコルに従ってファイルを前記クライアントに提供する、ことを特徴とする通信装置。
  12. クライアントと、前記クライアントにファイルを提供するサーバとの通信を中継する通信システムであって、
    前記クライアントからのファイルに対するアクセスに応じて、バッファに格納されるデータのうち、前記ファイルに対応するデータを読み出して前記クライアントに送信し、
    前記クライアントからのアクセス状況に応じて、前記ファイルに対する先読みリクエストを発行するバッファ制御装置と、
    前記先読みリクエストに基づいてサーバから前記ファイルを取得する取得装置と、
    を有することを特徴とする通信システム。
  13. 請求項12記載の通信システムであって、
    前記バッファ制御装置と、前記取得装置とは、ネットワークを介して接続され、
    前記ファイル取得装置は、前記クライアントからの前記ファイルの指定に応じて、前記サーバのファイルデータに対して前記ファイルの所定の範囲のデータを取得し、
    前記クライアントからの前記ファイルに対する複数のリード要求により特定される先読み対象範囲に対応するデータを取得し、前記バッファ制御装置に送信し、
    前記バッファ制御装置は、前記ファイル取得装置から受信されるデータを前記バッファに格納し、前記複数のリード要求の後に前記クライアント装置から送信されるリード要求に対応するデータを前記バッファから読み出して前記クライアントに送信する、ことを特徴とする通信システム。
  14. 請求項12記載の通信システムであって、
    前記バッファ制御装置と前記取得装置とはBUSを介して接続され、
    前記ファイル取得装置は、前記クライアントからの前記ファイルの指定に応じて、前記サーバのファイルデータに対して前記ファイルの所定の範囲のデータを取得し、
    前記クライアントからの前記ファイルに対する複数のリード要求により特定される先読み対象範囲に対応するデータを取得し、
    前記バッファ制御装置は、前記ファイル取得装置により取得されるデータを前記バッファに格納し、前記複数のリード要求の後に前記クライアント装置から送信されるリード要求に対応するデータを前記バッファから読み出して前記クライアントに送信する、ことを特徴とする通信システム。
  15. クライアントとファイルサーバとがファイル共有プロトコルに従い、ファイルデータを通信する通信方法であって、
    前記クライアントからのファイルの指定に応じて、前記ファイルサーバからファイル識別子を取得し、
    前記ファイル識別子に対応するファイルのデータの所定の範囲について先読みリクエストを作成し、
    前記先読みリクエストをTCPに従って前記サーバに送信し、
    前記先読みリクエストに対応するレスポンスに含まれるファイルデータをバッファに保持し、
    前記クライアントからの前記ファイルのリード要求に対する前記バッファからのデータの読み出し状況に基づいて、前記ファイルの先読み対象範囲を決定し、前記決定された先読み対象範囲についての先読みリクエストを前記サーバにTCPに従って送信し、
    前記サーバから受信するデータを、前記クライアントからのさらなるリード要求のために前記バッファに格納する、ことを特徴とする通信方法。
JP2012088055A 2012-04-09 2012-04-09 クライアントとサーバ間の通信を中継する通信装置及び通信システム Pending JP2013218505A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012088055A JP2013218505A (ja) 2012-04-09 2012-04-09 クライアントとサーバ間の通信を中継する通信装置及び通信システム
PCT/JP2012/079310 WO2013153694A1 (ja) 2012-04-09 2012-11-12 クライアントとサーバ間の通信を中継する通信装置、システム、及び方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012088055A JP2013218505A (ja) 2012-04-09 2012-04-09 クライアントとサーバ間の通信を中継する通信装置及び通信システム

Publications (2)

Publication Number Publication Date
JP2013218505A true JP2013218505A (ja) 2013-10-24
JP2013218505A5 JP2013218505A5 (ja) 2015-02-19

Family

ID=49327293

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012088055A Pending JP2013218505A (ja) 2012-04-09 2012-04-09 クライアントとサーバ間の通信を中継する通信装置及び通信システム

Country Status (2)

Country Link
JP (1) JP2013218505A (ja)
WO (1) WO2013153694A1 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016132501A1 (ja) * 2015-02-19 2016-08-25 富士通株式会社 通信装置、情報処理方法、及び、情報処理プログラム
JP2017054162A (ja) * 2015-09-07 2017-03-16 日本電気株式会社 情報端末、情報処理システムおよびデータ読み込み方法、並びにコンピュータ・プログラム
JPWO2017163426A1 (ja) * 2016-03-25 2018-12-27 富士通株式会社 中継装置、中継方法及び中継プログラム
US10516628B2 (en) 2015-11-12 2019-12-24 Fujitsu Limited Transfer device, transfer system, and transfer method
JP2021117773A (ja) * 2020-01-27 2021-08-10 富士通株式会社 情報処理装置、分析用データ生成プログラム及び方法
CN117130952A (zh) * 2023-01-10 2023-11-28 荣耀终端有限公司 预读方法和预读装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007520812A (ja) * 2004-01-08 2007-07-26 ネットワーク・アプライアンス・インコーポレイテッド 複数ファクタに基づく適応ファイル先読み
JP2011191856A (ja) * 2010-03-12 2011-09-29 Hitachi Ltd ファイルキャッシュの管理方法、ファイルキャッシュ装置、及び、プログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007520812A (ja) * 2004-01-08 2007-07-26 ネットワーク・アプライアンス・インコーポレイテッド 複数ファクタに基づく適応ファイル先読み
JP2011191856A (ja) * 2010-03-12 2011-09-29 Hitachi Ltd ファイルキャッシュの管理方法、ファイルキャッシュ装置、及び、プログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6013005724; 嘉藤将之,外4名: 'ファイルシステムを利用した透過性・汎用性の高い連続メディア情報のリモートアクセス手法' 情報処理学会研究報告 第2006巻,第26号, 20060317, p.1-6 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016132501A1 (ja) * 2015-02-19 2016-08-25 富士通株式会社 通信装置、情報処理方法、及び、情報処理プログラム
JPWO2016132501A1 (ja) * 2015-02-19 2017-10-26 富士通株式会社 通信装置、情報処理方法、及び、情報処理プログラム
JP2017054162A (ja) * 2015-09-07 2017-03-16 日本電気株式会社 情報端末、情報処理システムおよびデータ読み込み方法、並びにコンピュータ・プログラム
US10516628B2 (en) 2015-11-12 2019-12-24 Fujitsu Limited Transfer device, transfer system, and transfer method
JPWO2017163426A1 (ja) * 2016-03-25 2018-12-27 富士通株式会社 中継装置、中継方法及び中継プログラム
US10637955B2 (en) 2016-03-25 2020-04-28 Fujitsu Limited Relay device, and relay method
JP2021117773A (ja) * 2020-01-27 2021-08-10 富士通株式会社 情報処理装置、分析用データ生成プログラム及び方法
JP7393642B2 (ja) 2020-01-27 2023-12-07 富士通株式会社 情報処理装置、分析用データ生成プログラム及び方法
CN117130952A (zh) * 2023-01-10 2023-11-28 荣耀终端有限公司 预读方法和预读装置

Also Published As

Publication number Publication date
WO2013153694A1 (ja) 2013-10-17

Similar Documents

Publication Publication Date Title
JP4696089B2 (ja) 分散ストレージシステム
CN105812351B (zh) 实现会话共享的方法和***
US9569742B2 (en) Reducing costs related to use of networks based on pricing heterogeneity
US10630758B2 (en) Method and system for fulfilling server push directives on an edge proxy
US10795577B2 (en) De-duplication of client-side data cache for virtual disks
CN105224255B (zh) 一种存储文件管理方法及装置
JP2008542887A5 (ja)
WO2013153694A1 (ja) クライアントとサーバ間の通信を中継する通信装置、システム、及び方法
JP2004318743A (ja) ファイル移送装置
CN114756519A (zh) 与无状态同步节点的托管文件同步
WO2006074064A2 (en) Method and apparatus for managing data object size in a multi-user environment
US20140188982A1 (en) Virtual Desktop Infrastructure (VDI) Login Acceleration
GB2510192A (en) Intermediate proxy server caching buffer searched with key (URI hash)
US9307025B1 (en) Optimized file creation in WAN-optimized storage
US8352442B2 (en) Determination of an updated data source from disparate data sources
US20150006622A1 (en) Web contents transmission method and apparatus
US10171582B2 (en) Method and apparatus for client to content appliance (CA) synchronization
WO2016101748A1 (zh) 一种网络连接的缓存方法和装置
US10516628B2 (en) Transfer device, transfer system, and transfer method
JP5109901B2 (ja) セッションデータ共有方法
US8806056B1 (en) Method for optimizing remote file saves in a failsafe way
EP3479550B1 (en) Constraint based controlled seeding
JP2018511131A (ja) オンライン媒体のための階層的なコストベースのキャッシング
US9609079B1 (en) Methods for improved cache maintenance and devices thereof
CN111541624A (zh) 空间以太网缓存处理方法

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20141110

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141223

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141223

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151104

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20160315