JP6730437B2 - Transfer device and network system - Google Patents
Transfer device and network system Download PDFInfo
- Publication number
- JP6730437B2 JP6730437B2 JP2018535971A JP2018535971A JP6730437B2 JP 6730437 B2 JP6730437 B2 JP 6730437B2 JP 2018535971 A JP2018535971 A JP 2018535971A JP 2018535971 A JP2018535971 A JP 2018535971A JP 6730437 B2 JP6730437 B2 JP 6730437B2
- Authority
- JP
- Japan
- Prior art keywords
- data block
- data
- value
- transfer device
- information
- 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.)
- Active
Links
- 238000012546 transfer Methods 0.000 title claims description 359
- 238000000034 method Methods 0.000 claims description 103
- 230000008569 process Effects 0.000 claims description 84
- 230000005540 biological transmission Effects 0.000 claims description 76
- 238000012545 processing Methods 0.000 claims description 65
- 230000004044 response Effects 0.000 claims description 40
- 230000006870 function Effects 0.000 claims description 38
- 238000004891 communication Methods 0.000 description 38
- 238000010586 diagram Methods 0.000 description 32
- 238000012790 confirmation Methods 0.000 description 13
- 238000001514 detection method Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000002085 persistent effect Effects 0.000 description 3
- 101150082208 DIABLO gene Proteins 0.000 description 2
- 102100033189 Diablo IAP-binding mitochondrial protein Human genes 0.000 description 2
- MHABMANUFPZXEB-UHFFFAOYSA-N O-demethyl-aloesaponarin I Natural products O=C1C2=CC=CC(O)=C2C(=O)C2=C1C=C(O)C(C(O)=O)=C2C MHABMANUFPZXEB-UHFFFAOYSA-N 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000010187 selection method Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000001771 impaired effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (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)
Description
本発明は、データの転送制御に関する。 The present invention relates to data transfer control.
クラウドコンピューティングの普及によって、ネットワークを介してデータを利用する機会が増えている。 With the spread of cloud computing, there are increasing opportunities to use data via networks.
ネットワーク帯域が制限されている場合、データへのアクセス時間がかかり、利用者の快適性が損なわれるという問題がある。また、同一のデータに対して繰り返し、アクセスが行われることによって、システム全体の通信量が増加し、ネットワーク帯域を圧迫するという問題もある。 When the network bandwidth is limited, there is a problem that it takes time to access the data and the comfort of the user is impaired. In addition, the same data is repeatedly accessed, so that the communication volume of the entire system increases, and the network bandwidth is pressed.
本技術分野の背景技術として、特許文献1に記載の技術が知られている。特許文献1には、通信データを転送する際に、persistent segment store に保存されているセグメントをreferenceに置き換えて転送することが記載されている。
As a background art of this technical field, the technique described in
また、特許文献2には、「ネットワークの利用度が利用度閾値に達したまたはこれを超過したときに、暗号化ハッシュ関数を適用して通信トラフィックにハッシュ・ダイジェストを組み込み、データの完全性点検およびデータの重複排除を提供し、これによって、送信側ネットワーク・デバイスと受信側ネットワーク・デバイスとの間で伝送されるデータの量を低減する」ことが開示されている。 Further, Japanese Patent Application Laid-Open No. 2004-242242 describes, "When the usage of a network reaches or exceeds a usage threshold, a cryptographic hash function is applied to incorporate a hash digest into communication traffic to check data integrity. And providing deduplication of data, thereby reducing the amount of data transmitted between the sending network device and the receiving network device."
しかし、persistent segment storeが大きい場合、主記憶装置に格納できないため、二次記憶装置に保存されるpersistent segment storeからセグメントを検索する必要がある。一般に、二次記憶装置はアクセス速度が遅いため、通信データの転送速度が遅くなる。 However, if the persistent segment store is large, it cannot be stored in the main storage device, so it is necessary to retrieve the segment from the persistent segment store stored in the secondary storage device. Generally, since the secondary storage device has a low access speed, the transfer speed of communication data becomes slow.
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、端末間で送受信されるデータを転送する転送装置であって、プロセッサ、前記プロセッサに接続される主記憶装置、前記プロセッサに接続される副記憶装置、及び前記プロセッサに接続されるネットワークインタフェースを備え、前記端末間のデータの転送処理を制御する転送制御部を有し、ネットワークを介して他の転送装置と接続され、前記副記憶装置は、データを分割することによって生成されるデータブロックであって、前記端末間で過去に送信されたデータブロックを管理するデータブロック情報を格納し、前記主記憶装置は、前記データブロック情報に格納される前記データブロックを検索するための検索インデックスと、前記データブロックを一時的に保存するバッファとを格納し、前記検索インデックスは、前記データブロックから算出された比較値及び前記データブロック情報に格納される前記データブロックへアクセスするためのポインタ値の組から構成される要素を複数含み、前記データブロック情報は、前記ポインタ値及び前記データブロックから構成されるエントリを複数含み、前記転送制御部は、前記端末からデータを受信した場合、前記受信したデータから前記データブロックを生成するための分割処理を実行し、前記分割処理によって生成された第1データブロックから、前記検索インデックスを参照するための検索値及び参照値を算出し、前記参照値に基づいて、前記検索インデックスに含まれる複数の要素の中から参照する少なくとも一つの要素を特定し、前記特定された少なくとも一つの要素に含まれる前記比較値と前記検索値とを比較することによって、前記第1データブロックが前記データブロック情報に格納されているか否かを判定し、前記第1データブロックが前記データブロック情報に格納されていると判定された場合、前記第1データブロックの識別情報を前記他の転送装置に送信し、前記バッファに前記データブロックを保存し、前記他の転送装置から当該第1データブロックの転送完了を通知する応答を受信した後、前記バッファから前記第1データブロックを削除し、前記第1データブロックが前記データブロック情報に格納されていないと判定された場合、前記第1データブロックの識別情報及び前記第1データブロックを前記他の転送装置に送信し、前記バッファに前記データブロックを保存し、前記他の転送装置から当該第1データブロックの転送完了を通知する応答を受信した後、前記データブロック情報に前記第1データブロックを格納し、前記バッファから前記第1データブロックを削除し、前記第1データブロックの識別情報を送信した前記他の転送装置から、前記第1データブロックの送信を要求するデータブロック要求を受信した場合、前記バッファに保存される前記第1データブロックを前記他の転送装置に送信することを特徴とする。 A typical example of the invention disclosed in the present application is as follows. That is, an transfer device for transferring the data between the terminals, a processor, a main memory coupled to the processor, secondary storage device coupled to the processor, and a network interface connected to the processor A transfer control unit that controls a transfer process of data between the terminals, is connected to another transfer device via a network, and the secondary storage device is a data block generated by dividing the data. There is stored data block information for managing data blocks transmitted in the past between the terminals, the main storage device, a search index for searching the data block stored in the data block information , And a buffer for temporarily storing the data block, wherein the search index is a set of a comparison value calculated from the data block and a pointer value for accessing the data block stored in the data block information. And the data block information includes a plurality of entries including the pointer value and the data block, and the transfer control unit, when receiving data from the terminal, receives the received data. Performing a division process for generating the data block from the first data block, calculating a search value and a reference value for referring to the search index from the first data block generated by the division process, and based on the reference value. By specifying at least one element to be referenced from a plurality of elements included in the search index, and by comparing the comparison value and the search value included in the specified at least one element, If it is determined whether the first data block is stored in the data block information, and if it is determined that the first data block is stored in the data block information, the identification information of the first data block is determined. The first data block is transmitted from the buffer after the response is transmitted to the other transfer device , the data block is stored in the buffer, and the transfer completion notification of the first data block is received from the other transfer device. Is deleted and it is determined that the first data block is not stored in the data block information, the identification information of the first data block and the first data block are transmitted to the other transfer device, and The data block is stored in a buffer, and the first data block of the first data block is saved from the other transfer device. The other that stores the first data block in the data block information, deletes the first data block from the buffer, and transmits identification information of the first data block after receiving a response notifying transfer completion When the data block request for transmitting the first data block is received from the transfer device, the first data block stored in the buffer is transmitted to the other transfer device .
本発明によれば、検索インデックスを用いることによって、データブロックの検索を高速に行うことができる。前述した以外の課題、構成及び効果は、以下の実施例の説明によって明らかにされる。 According to the present invention, the search of the data block can be performed at high speed by using the search index. Problems, configurations, and effects other than those described above will be clarified by the following description of the embodiments.
以下、添付図面を参照して本発明の実施例を説明する。各図において共通の構成については同一の参照符号が付されている。 Hereinafter, embodiments of the present invention will be described with reference to the accompanying drawings. In each figure, the same reference numerals are given to common configurations.
実施例1では、本発明の基本的な一例として、転送装置が、二次記憶装置に格納されるデータブロック情報からデータブロックを高速に検索する転送制御方法を説明する。これによって、データの高速な転送を実現できる。本実施例では、TCP/IP通信におけるデータ転送を一例として示す。ただし、本発明は、データ転送に用いる通信プロトコルに限定されない。 In the first embodiment, as a basic example of the present invention, a transfer control method in which a transfer device searches a data block at high speed from data block information stored in a secondary storage device will be described. As a result, high-speed data transfer can be realized. In this embodiment, data transfer in TCP/IP communication is shown as an example. However, the present invention is not limited to the communication protocol used for data transfer.
図1は、実施例1のネットワークシステムの構成例を示す図である。 FIG. 1 is a diagram illustrating a configuration example of a network system according to the first embodiment.
ネットワークシステムは、複数の端末100、複数の転送装置110、及び各装置を接続するネットワークから構成される。なお、本発明は、ネットワークシステムに含まれる装置及びネットワークの数には限定されない。
The network system includes a plurality of
端末100及び転送装置110は、LAN(Local Area Network)140を介して互いに接続される。また、複数の転送装置110は、WAN(Wide Area Network)を介して互いに接続される。各ネットワークの接続方式は、無線及び有線のいずれもよい。LAN140及びWAN120には、中継装置130が一つ以上含まれる。
The
なお、各装置を接続するネットワークの種別に限定されず、専用回線及びインターネット等のネットワークでもよい。また、端末100及び転送装置110は、直接接続されてもよい。複数の転送装置110は、直接接続されてもよい。
The type of network that connects each device is not limited, and a network such as a dedicated line or the Internet may be used. Further, the
図1では、二つの端末100−1、100−2が、LAN140−1、140−2、転送装置110−1、110−2、及びWAN120を介して、互いに通信を行う。 In FIG. 1, two terminals 100-1 and 100-2 communicate with each other via LANs 140-1 and 140-2, transfer devices 110-1 and 110-2, and WAN 120.
端末100は、通信を行う装置である。端末100は、物理計算機及びプロキシ装置等が考えられる。端末100は、図示しない演算装置、主記憶装置、及びネットワークインタフェースを有する。なお、端末100は、仮想計算機を用いて実現してもよい。 The terminal 100 is a device that performs communication. The terminal 100 may be a physical computer, a proxy device, or the like. The terminal 100 has a computing device, a main storage device, and a network interface, which are not shown. The terminal 100 may be realized by using a virtual computer.
中継装置130は、LAN140及びWAN120等のネットワークを構成する装置であり、スイッチ、ルータ、及びゲートウェイ装置等が考えられる。中継装置130は、図示しない演算装置、主記憶装置、及びネットワークインタフェースを有する。
The relay device 130 is a device that constitutes a network such as the
転送装置110は、端末100間のTCP通信の終端及び中継を行う装置であり、端末100間で送受信されるデータを転送する。本実施例の転送装置110は、フロー単位で通信を制御するものとする。
The
端末100−1と端末100−2との間のTCP通信150において、転送装置110−1は、TCP通信150を終端し、LAN140−1を介して端末100−1との間でTCP通信151を行う。なお、TCP通信151では、転送装置110−1は、TCP通信150において端末100−2が用いるIPアドレス及びポート番号を、転送装置110−1のIPアドレス及びポート番号として用いる。同様に、TCP通信150において、転送装置110−2は、TCP通信150を終端し、LAN140−2を介して端末100−2とTCP通信153を行う。TCP通信153では、転送装置110−2は、TCP通信150において端末100−1が用いるIPアドレス及びポート番号を、転送装置110−2のIPアドレス及びポート番号として用いる。
In the
また、転送装置110−1及び転送装置110−2は、WAN120を介して、TCP通信152を行う。TCP通信152では、転送装置110−1は、端末100−1のIPアドレス及びポート番号を用い、また、転送装置110−2は、端末100−2のIPアドレス及びポート番号を用いる。
Further, the transfer devices 110-1 and 110-2
前述のようなTCP通信によって、端末100−1及び端末100−2は、端末100間で直接通信するTCP通信150を行っている場合と同様の動作を行う。
By the TCP communication as described above, the terminal 100-1 and the terminal 100-2 perform the same operation as in the case of performing the
また、本実施例の転送装置110は、重複したデータの転送を排除するように通信を制御する。具体的には、転送装置110は、送信したデータ及び受信したデータを格納する情報を管理する。転送元の端末100から過去に送信されたデータと同一のデータを受信した場合、転送装置110は当該データの識別情報を送信する。データの識別情報を受信した場合、転送装置110は、当該データの識別情報に一致するデータを情報から読み出し、転送先の端末100に読み出されたデータを送信する。
Further, the
前述したようなデータの転送制御を行うことによって、WAN120へのデータ転送量が削減される。したがって、通信コストの削減及び端末100間の通信速度の高速化を実現できる。
By controlling the transfer of data as described above, the amount of data transferred to the
以下の説明では、ネットワークシステム内で過去に送信されたデータと同一のデータの転送を排除する処理を「重複排除」とも記載する。また、以下の説明では、ネットワークシステム内で過去に送信されたデータを転送装置110が管理する情報から取得する処理を「重複復元」とも記載する。
In the following description, the process of eliminating the transfer of the same data as the data transmitted in the past in the network system is also referred to as “duplication elimination”. Further, in the following description, the process of acquiring the data transmitted in the network system in the past from the information managed by the
図2は、実施例1の転送装置110のハードウェア構成及びソフトウェア構成の一例を示す図である。図3は、実施例1の転送装置110のソフトウェア構成の論理的な接続関係を示す図である。
FIG. 2 is a diagram illustrating an example of a hardware configuration and a software configuration of the
転送装置110は、演算装置201、主記憶装置202、二次記憶装置203、及び複数のネットワークインタフェース204を有する。転送装置110が有するハードウェアは、システムバス205を介して互いに接続され、システムバス205を介して互いに通信を行う。
The
なお、転送装置110が有する各ハードウェアの数は二つ以上でもよい。また、各ハードウェアは、複数のシステムバス205を介して、互いに接続されてもよい。また、各ハードウェアは、直接接続されてもよい。
The number of pieces of hardware included in the
なお、前述したハードウェアは、仮想的なハードウェアを用いて実現してもよい。例えば、一つのネットワークインタフェース204上に複数の論理的なネットワークインタフェースを構成し、論理的なネットワークインタフェースを用いることもできる。 The above-mentioned hardware may be realized by using virtual hardware. For example, it is possible to configure a plurality of logical network interfaces on one network interface 204 and use the logical network interfaces.
なお、転送装置110は、入出力装置を有してもよい。入出力装置には、キーボード、マウス、タッチパネル、及びディスプレイ等が含まれる。
The
演算装置201は、主記憶装置202に格納されるプログラムを実行する。演算装置201は、CPU(Central Processing Unit)及びGPU(Graphics Processing Unit)等が考えられる。演算装置201がプログラムを実行することによって転送装置110が有する機能を実現できる。以下の説明では、機能部(モジュール)を主語に処理を説明する場合、演算装置201が当該機能部を実現するプログラムを実行していることを示す。
The
主記憶装置202は、演算装置201が実行するプログラム及び当該プログラムによって使用される情報を格納する。主記憶装置202は、また、プログラムが使用するワークエリア及びバッファ等の一時記憶領域を含む。主記憶装置202は、メモリ等が考えられる。
The
二次記憶装置203は、永続的にデータを格納する。また、二次記憶装置203は、主記憶装置202に格納できないデータを格納する一時記憶領域を含む。二次記憶装置203は、HDD(Hard Disk Drive)及びSSD(Solid State Drive)等が考えられる。
The
主記憶装置202に格納されるプログラム及び情報は、二次記憶装置203に格納されてもよい。この場合、演算装置201は、二次記憶装置203から、プログラム及び情報を読み出し、主記憶装置202にプログラム及び情報をロードする。
The programs and information stored in the
ネットワークインタフェース204は、ネットワークと接続するためのインタフェースである。本実施例では、転送装置110は、ネットワークインタフェース204−1を介してLAN140と接続し、また、ネットワークインタフェース204−2を介してWAN120と接続する。
The network interface 204 is an interface for connecting to a network. In this embodiment, the
ここで、主記憶装置202及び二次記憶装置203に格納されるプログラム及び情報に吹いて説明する。
Here, the programs and information stored in the
主記憶装置202は、プログラムとして、重複排除部211、重複復元部212、転送制御部213、プロトコル処理部214、及びデータ分割部215を実現するプログラムを格納する。主記憶装置202は、情報として、フロー情報217、送信検索インデックス218、及び受信検索インデックス219を格納する。また、主記憶装置202は、一時記憶領域としてデータブロックバッファ216を含む。
The
二次記憶装置203は、送信データブロック情報220及び受信データブロック情報221を格納する。
The
フロー情報217は、フローを管理するための情報である。フロー情報217の詳細は、図6を用いて説明する。
The
送信データブロック情報220は、重複排除を行う場合に使用されるデータブロックを格納する。受信データブロック情報221は、重複復元を行う場合に使用されるデータブロックを格納する。送信データブロック情報220及び受信データブロック情報221の詳細は、図8を用いて説明する。
The transmission data block
送信検索インデックス218は、送信データブロック情報220に格納されるデータブロックを検索する場合に使用されるインデックスである。受信検索インデックス219は、受信データブロック情報221に格納されるデータブロックを検索する場合に使用されるインデックスである。送信検索インデックス218及び受信検索インデックス219の詳細は、図7を用いて説明する。
The
データブロックバッファ216は、データブロックを一時的に格納する記憶領域である。
The data block
転送制御部213は、転送装置110全体を制御する。転送制御部213は、内部変数として更新フラグを保持する。転送制御部213は、ネットワークインタフェース204−1を介してLAN140からデータを受信した場合、重複排除部211及びデータ分割部215等と連携して、重複排除を行い、ネットワークインタフェース204−2を介してWAN120にデータを転送する。転送制御部213は、ネットワークインタフェース204−2を介してWAN120からデータを受信した場合、重複復元部212等と連携して、重複復元を行い、ネットワークインタフェース204−1を介してLAN140にデータを転送する。転送制御部213が実行する処理の詳細は後述する。
The
プロトコル処理部214は、ネットワークインタフェース204を管理し、所定の通信プロトコルに基づく通信処理を実行する。本実施例の通信プロトコルは、TCP/IPプロトコルである。また、プロトコル処理部214は、アプリケーション等に対して通信を行うためのAPI(Application Programming Interface)を提供する。例えば、プロトコル処理部214は、送信アドレス及び送信ポート、並びに受信アドレス及び受信ポートを転送制御部213に通知する。また、プロトコル処理部214は、ネットワークインタフェース204を介してデータを受信した場合、転送制御部213にデータを出力し、転送制御部213からデータを受信した場合、ネットワークインタフェース204を介してデータをネットワークに送信する。
The
なお、プロトコル処理部214は、OS(Operating System)に含まれるTCP/IP機能として実現されてもよいし、専用のプログラムとして実現されてもよい。
The
データ分割部215は、所定の分割方法(プロトコル)に基づいて、データを分割することによって複数のデータブロックを生成する。データ分割部215が実行する処理の詳細は後述する。
The
重複排除部211は、送信検索インデックス218を用いて重複排除を行う。また、重複排除部211は、送信検索インデックス218及び送信データブロック情報220を管理する。重複排除部211が実行する処理の詳細は後述する。
The
重複復元部212は、受信検索インデックス219を用いて重複復元を行う。また、重複復元部212は、受信検索インデックス219及び受信データブロック情報221を管理する。重複復元部212が実行する処理の詳細は後述する。
The
なお、重複排除部211は、第1ハッシュ関数及び第2ハッシュ関数を保持する。ハッシュ関数は、例えば、md5及びsha1等が考えられる。
The
なお、前述した各機能部は、複数の機能部を一つの機能部に集約してもよいし、また、一つの機能部を複数の機能部に分割してもよい。例えば、重複排除部211、重複復元部212、及びデータ分割部215を、転送制御部213に集約してもよい。
It should be noted that each of the functional units described above may have a plurality of functional units integrated into one functional unit, or one functional unit may be divided into a plurality of functional units. For example, the
なお、前述した各機能部は、ソフトウェアとして実現されているが、こられの機能の一部又は全てを演算装置201及びネットワークインタフェース204等のハードウェアを用いて実現されてもよい。
Although each functional unit described above is realized as software, some or all of these functions may be realized by using hardware such as the
本実施例では、送信検索インデックス218及び受信検索インデックス219を主記憶装置202に格納することによって、データブロックの検索処理を高速に行うことができる。また、後述するように、送信検索インデックス218及び受信検索インデックス219のデータ構造を工夫することによって、検索処理の高速化及び検索精度の向上を実現できる。
In this embodiment, by storing the
次に、図4及び図5を用いてTCP通信に使用されるTCPパケットについて説明する。 Next, a TCP packet used for TCP communication will be described with reference to FIGS. 4 and 5.
図4は、実施例1の転送装置110がLAN140を介して送受信するTCPパケット400のフォーマットの一例を示す図である。
FIG. 4 is a diagram illustrating an example of a format of the
TCPパケット400は、MACヘッダ410、IPヘッダ420、IPオプションヘッダ430、TCPヘッダ440、TCPオプションヘッダ450、及びTCPペイロード460を含む。
The
MACヘッダ410は、DMAC411、SMAC412、TPID413、TCI414、及びType415を含む。DMAC411は、宛先MACアドレスを表す。SMAC412は、送信元MACアドレスを表す。TPID413は、タグ付きフレームであること及びタグの種類を表す。TCI414は、タグの情報を表す。Type415は、MACフレームタイプを表す。
The
TCI414は、さらに、PCP416、CFI417、及びVID418を含む。PCP416は優先度を表す。CFI417は、MACアドレスが正規フォーマットであるかを表す。VID418は、VLANのIDを表す。なお、VLANが使用されていないネットワークの場合、TPID413及びTCI414は存在しない。この場合、転送装置110は、VID418が「0」であるものとして処理を行う。
The
IPヘッダ420は、IP length421、protocol422、SIP423、及びDIP424を含む。IP length421は、MACヘッダ410を除くパケット長を表す。protocol422は、プロトコル番号を表す。SIP423は、送信元IPアドレスを表す。DIP424は、宛先IPアドレスを表す。
The
IPオプションヘッダ430は、0又は複数のIPオプション情報431を含む。
The
TCPヘッダ440は、src.port441、dst.port442、SEQ443、ACK444、flag445、tcp hlen446、及びwin_size447を含む。src.port441は、送信元ポート番号を表す。dst.port442は、宛先ポート番号を表す。SEQ443は、送信シーケンス番号を表す。ACK444は、受信シーケンス番号を表す。flag445は、TCPフラグ番号を表す。tcp hlen446は、TCPのヘッダ長を表す。win_size447は、対向装置へ通知する広告ウインドウサイズを表す。
The
TCPオプションヘッダ450は、0又は複数のオプションを含む。例えば、option kind451、option length452、及びオプション情報453等のオプションが含まれる。option kind451は、オプションの種別を表す。option length452は、オプション長を表す。オプション情報453は、オプションの種類に応じた情報を表す。
The
図5は、実施例1の転送装置110がWAN120を介して送受信するTCPパケット500のフォーマットの一例を示す図である。
FIG. 5 is a diagram illustrating an example of a format of a
TCPパケット500は、TCPパケット400と同様にMACヘッダ410、IPヘッダ420、IPオプションヘッダ430、TCPヘッダ440、及びTCPオプションヘッダ450を含む。さらに、TCPパケット500は、符号化されたデータ部分に対応するDedupヘッダ510及びDedupペイロード520の組を一つ以上含む。
Like the
TCPパケット500に含まれるMACヘッダ410、IPヘッダ420、TCPヘッダ440、及びTCPオプションヘッダ450は、TCPパケット400に含まれるものと同一である。TCPパケット500に含まれるIPオプションヘッダ430には、オプション情報の一つとしてDedup501を含む。Dedup501は、転送装置110によって重複排除が行われたパケットであることを表す。
The
Dedupヘッダ510は、dedup.type511、dedup.data_len512、dedup.hash1 513、及びdedup.hash2 514を含む。Dedupヘッダ510に含まれる各情報のデータサイズは、一例であって、必要に応じてデータサイズを変更できる。
The
dedup.type511は、Dedupペイロード520の種類を表す。dedup.data_len512は、Dedupペイロード520の長さを表す。dedup.hash1 513及びdedup.hash2 514は、データブロックを検索するために用いるハッシュ値を表す。本実施例では、dedup.hash1 513及びdedup.hash2 514が、データブロックの識別情報として用いられる。
dedup. The
なお、dedup.type511には「1」、「2」、「3」のいずれかが設定される。「1」は、データブロックの識別情報のみを含むTCPパケット500であることを示す。「2」は、データブロック及びデータブロックの識別情報を含むTCPパケット500であることを示す。「3」は、分割されなかったデータを含むTCPパケット500であることを示す。
In addition, dedup. Any one of “1”, “2”, and “3” is set in the
Dedupペイロード520は、Dedup.type511の値に応じて、データブロック又はLAN140から受信したデータ等が格納される。なお、データブロックの識別情報を送信する場合、空のDedupペイロード520が付与されてもよいし、Dedupペイロード520が付与されなくてもよい。
The
次に、図6、図7、及び図8を用いて、転送装置110が管理する情報等について説明する。
Next, information and the like managed by the
図6は、実施例1のフロー情報217の一例を示す図である。
FIG. 6 is a diagram illustrating an example of the
フロー情報217は、フローを管理する情報を格納するエントリを含む。エントリは、フローID601、VLAN602、LAN−IP603、WAN−IP604、LAN−PORT605、WAN−PORT606、バッファ607、及びタイマ608から構成される。
The
フローID601は、フローを一意に識別するための識別情報である。VLAN602は、フローが属するVLANの識別情報である。LAN−IP603及びLAN−PORT605は、LAN140を介して接続される端末100のIPアドレス及びポート番号である。WAN−IP604及びWAN−PORT606は、WAN120を介して接続される端末100のIPアドレス及びポート番号である。バッファ607は、LAN140から受信したデータをWAN120に転送する場合に、一時的にデータを格納するための領域である。タイマ608は、データ転送に用いるタイマ値である。
The
図7は、実施例1の送信検索インデックス218の一例を示す図である。なお、受信検索インデックス219のデータ構造は、送信検索インデックス218と同一であるため、説明を省略する。
FIG. 7 is a diagram illustrating an example of the
送信検索インデックス218は、2次元配列のデータ構造である。図7では、N行4列の2次元配列となっている。なお、行及び列の数は一例であって、任意の値に設定できる。
The
2次元配列の一つの要素701には、ハッシュ値X及びポインタ値Pが含まれる。ハッシュ値Xは、ハッシュ関数にデータブロックを入力することによって算出されるハッシュ値である。ハッシュ値Xは、データブロックが送信データブロック情報220に格納されているか否かを判定する場合に使用される。ポインタ値は、送信データブロック情報220内のデータブロックをアクセスするための値である。ポインタ値には、後述するファイル名801の値が設定される。
One
後述するように、重複排除部211は、二つのハッシュ関数を用いて、送信検索インデックス218を参照する。
As described later, the
図8は、実施例1の送信データブロック情報220の一例を示す図である。なお、受信データブロック情報221のデータ構造は、送信データブロック情報220と同一であるため、説明を省略する。
FIG. 8 is a diagram illustrating an example of the transmission data block
送信データブロック情報220は、データブロックを格納するエントリを含む。エントリは、ファイル名801及びデータブロック802から構成される。本実施例では、個々のデータブロックがファイルとして管理される。
The transmission data block
ファイル名801は、データブロックを管理するファイルの識別情報である。本実施例では、ファイルの識別情報に数値を用いる。データブロック802は、データブロックそのものである。
The
次に、図9A、図9B、及び図9Cを用いて、データ転送処理の一連の流れについて説明する。以下では、一例として、端末100−1から端末100−2へデータを転送する場合のデータ転送処理について説明する。なお、端末100−2から端末100−2へデータを転送する場合も同様の処理となる。 Next, a series of flow of the data transfer process will be described with reference to FIGS. 9A, 9B, and 9C. Hereinafter, as an example, a data transfer process when data is transferred from the terminal 100-1 to the terminal 100-2 will be described. The same processing is performed when data is transferred from the terminal 100-2 to the terminal 100-2.
図9A、図9B、及び図9Cは、実施例1のデータ転送処理の流れを説明するシーケンス図である。なお、TCP通信における確認応答等のTCPレイヤの処理については省略している。 9A, 9B, and 9C are sequence diagrams illustrating the flow of data transfer processing according to the first embodiment. Note that processing of the TCP layer such as confirmation response in TCP communication is omitted.
図9Aは、転送装置110−1及び転送装置110−2が、端末100−1から送信されるデータ(データブロック)を保持している場合のデータ転送処理の流れを示す。 FIG. 9A shows a flow of data transfer processing when the transfer device 110-1 and the transfer device 110-2 hold data (data block) transmitted from the terminal 100-1.
端末100−1が端末100−2へデータを送信する(ステップS901)。 The terminal 100-1 transmits data to the terminal 100-2 (step S901).
転送装置110−1は、LAN140−1を介して、端末100−1からデータを受信した場合、当該データをデータブロックに分割する(ステップS902)。転送装置110−1は、データブロックのハッシュ値に基づいて送信検索インデックス218を検索し、データブロックが送信データブロック情報220に格納されているか否かを判定する(ステップS903)。
When the transfer device 110-1 receives data from the terminal 100-1 via the LAN 140-1, the transfer device 110-1 divides the data into data blocks (step S902). The transfer device 110-1 searches the
データブロックは送信データブロック情報220に格納されているため、転送装置110−1は、WAN120を介して、端末100−2にデータブロックの識別情報を送信する(ステップS904)。このとき、転送装置110−1は、データブロックバッファ216にデータブロックを格納する。
Since the data block is stored in the transmission data block
転送装置110−2は、データブロックの識別情報を受信した場合、データブロックの識別情報に基づいて受信検索インデックス219を検索し、データブロックが受信データブロック情報221に格納されているか否かを判定する(ステップS905)。
When the transfer device 110-2 receives the identification information of the data block, the transfer device 110-2 searches the
データブロックは受信データブロック情報221に格納されているため、転送装置110−2は、WAN120を介して、転送装置110−1に復元確認通知を送信する(ステップS906)。なお、復元確認通知は、データブロックの転送が完了した旨を示す通知である。
Since the data block is stored in the received
また、転送装置110−2は、データブロックの識別情報に基づいて受信データブロック情報221からデータブロックを取得し、LAN140−2を介して、端末100−2に取得されたデータブロックを端末100−1から送信されたデータとして送信する(ステップS907)。
Also, the transfer device 110-2 acquires a data block from the received
転送装置110−1は、WAN120を介して、復元確認通知を受信した場合、データブロックバッファ216に格納されるデータブロックを削除する(ステップS908)。
When receiving the restoration confirmation notification via the
なお、端末100−1から受信したデータは複数のデータブロックに分割される。したがって、転送装置110−1は、Dedupヘッダ510及びDedupペイロード520の組を一つ以上含むTCPパケット500の送信を一回以上行う。また、転送装置110−2は、データブロックを送信する場合、複数のデータブロックを含む一つのTCPパケット400を送信してもよいし、一つのデータブロックを含むTCPパケット400を複数回送信してもよい。
The data received from the terminal 100-1 is divided into a plurality of data blocks. Therefore, the transfer device 110-1 transmits the
図9Bは、転送装置110−1が、端末100−1から送信されるデータ(データブロック)を保持していない場合のデータ転送処理の流れを示す。 FIG. 9B shows a flow of data transfer processing when the transfer device 110-1 does not hold the data (data block) transmitted from the terminal 100-1.
端末100−1が端末100−2へデータを送信する(ステップS911)。 The terminal 100-1 transmits data to the terminal 100-2 (step S911).
転送装置110−1は、LAN140−1を介して、端末100−1からデータを受信した場合、当該データをデータブロックに分割する(ステップS912)。転送装置110−1は、データブロックのハッシュ値に基づいて送信検索インデックス218を検索し、データブロックが送信データブロック情報220に格納されているか否かを判定する(ステップS913)。
When the transfer device 110-1 receives data from the terminal 100-1 via the LAN 140-1, the transfer device 110-1 divides the data into data blocks (step S912). The transfer device 110-1 searches the
データブロックは送信データブロック情報220に格納されていないため、転送装置110−1は、WAN120を介して、転送装置110−2にデータブロックを送信する(ステップS914)。
Since the data block is not stored in the transmission data block
転送装置110−2は、データブロックを受信した場合、受信データブロック情報221に当該データブロックを格納する(ステップS915)。転送装置110−2は、WAN120を介して、転送装置110−1に復元確認通知を送信する(ステップS916)。また、転送装置110−2は、LAN140−2を介して、端末100−2に受信したデータブロックを端末100−1から送信されたデータとして送信する(ステップS917)。 When receiving the data block, the transfer device 110-2 stores the data block in the received data block information 221 (step S915). The transfer device 110-2 transmits a restoration confirmation notification to the transfer device 110-1 via the WAN 120 (step S916). Further, the transfer device 110-2 transmits the data block received by the terminal 100-2 as the data transmitted from the terminal 100-1 via the LAN 140-2 (step S917).
転送装置110−1は、WAN120を介して、復元確認通知を受信した場合、データブロックバッファ216に格納されるデータブロックを送信データブロック情報220に格納する(ステップS918)。
When receiving the restoration confirmation notification via the
図9Cは、転送装置110−1のみが、端末100−1から送信されるデータ(データブロック)を保持している場合のデータ転送処理の流れを示す。 FIG. 9C shows the flow of the data transfer process when only the transfer device 110-1 holds the data (data block) transmitted from the terminal 100-1.
ステップS921からステップS924の処理は、ステップS901からステップS904の処理と同一である。 The processing of steps S921 to S924 is the same as the processing of steps S901 to S904.
転送装置110−2は、データブロックの識別情報を受信した場合、データブロックの識別情報に基づいて受信検索インデックス219を検索し、データブロックが受信データブロック情報221に格納されているか否かを判定する(ステップS925)。
When the transfer device 110-2 receives the identification information of the data block, the transfer device 110-2 searches the
データブロックは受信データブロック情報221に格納されていないため、転送装置110−2は、WAN120を介して、データブロック要求を送信する(ステップS926)。
Since the data block is not stored in the received
転送装置110−1は、WAN120を介して、データブロック要求を受信した場合、WAN120を介して、転送装置110−2にデータブロックバッファ216に格納されるデータブロックを送信する(ステップS927)。
When the transfer device 110-1 receives the data block request via the
転送装置110−2は、WAN120を介して、データブロックを受信した場合、受信データブロック情報221に当該データブロックを格納する(ステップS928)。転送装置110−2は、WAN120を介して、転送装置110−1に復元確認通知を送信する(ステップS929)。また、転送装置110−2は、LAN140−2を介して、端末100−2に受信したデータブロックを端末100−1から送信されたデータとして送信する(ステップS930)。
When the transfer device 110-2 receives the data block via the
転送装置110−1は、WAN120を介して、復元確認通知を受信した場合、データブロックバッファ216に格納されるデータブロックを削除する(ステップS931)。
When receiving the restoration confirmation notification via the
転送装置110−1は、復元確認通知を受信するまで、データブロックバッファ216にデータブロックを格納するため、転送装置110−2からのデータブロック要求を受信した場合、即座に転送装置110−2にデータブロックを送信できる。
Since the transfer device 110-1 stores the data block in the data block
また、図9Bに示すように、転送装置110−1は、復元確認通知を受信した後に、送信データブロック情報220にデータブロックを格納する。送信データブロック情報220へのデータブロックの格納順番が逆の場合、転送装置110−2にデータブロックが登録されていない可能性がある。そのため、図9Cに示すようなデータ転送処理が発生する可能性がある。一方、図9Bに示すような処理手順にすることによって、図9Cに示すようなデータ転送処理が発生する可能性を低くすることができる。図9Cに示すデータ転送処理では、転送装置110間の通信回数が増えることから、通信の遅延が発生する。したがって、図9Cに示すようなデータ転送処理の発生を防止することによって、ネットワークシステム全体の通信速度、通信品質等を向上させることができる。
Further, as illustrated in FIG. 9B, the transfer device 110-1 stores the data block in the transmission data block
次に、図10から図18を用いて、転送装置110の各機能部が実行する処理の詳細を説明する。
Next, the details of the processing executed by each functional unit of the
図10は、実施例1の転送制御部213がLAN140からデータを受信した場合に実行する処理を説明するフローチャートである。
FIG. 10 is a flowchart illustrating a process executed when the
転送制御部213は、プロトコル処理部214から、LAN140から受信したデータを受け取った場合(ステップS1001)、フロー情報217にデータを格納する(ステップS1002)。
When receiving the data received from the
具体的には、転送制御部213は、プロトコル処理部214から受け取ったIPアドレス、ポート番号、及びVLANのID等に基づいてフロー情報217を参照し、フローに対応するエントリを特定する。転送制御部213は、特定されたエントリのバッファ607に、受け取ったデータ(TCPペイロード460)を格納する。なお、バッファ607にデータが格納されている場合、転送制御部213は、当該データの後方に受け取ったデータを追加する。
Specifically, the
次に、転送制御部213は、データ分割部215を呼び出す(ステップS1003)。このとき、転送制御部213は、受け取ったデータをデータ分割部215に出力する。その後、転送制御部213は、処理を終了する。
Next, the
図11は、実施例1の転送制御部213がデータ分割部215から応答を受け取った場合に実行する処理を説明するフローチャートである。
FIG. 11 is a flowchart illustrating a process executed when the
転送制御部213は、データ分割部215から受け取った応答が分割不可通知であるか否かを判定する(ステップS1101)。
The
データ分割部215から受け取った応答が分割不可通知であると判定された場合、転送制御部213は、ステップS1106に進む。
When it is determined that the response received from the
データ分割部215から受け取った応答が分割不可通知ではないと判定された場合、すなわち、データ分割部215からデータブロックを受け取った場合、転送制御部213は、ステップS1002において特定されたエントリのバッファ607に格納されるデータから当該データブロックを削除する(ステップS1102)。
When it is determined that the response received from the
具体的には、転送制御部213は、ステップS1002において特定されたエントリのバッファ607に格納されるデータからデータブロックに一致するデータ列を削除する。
Specifically, the
次に、転送制御部213は、重複排除部211を呼び出す(ステップS1103)。転送制御部213は、重複排除部211から応答があるまで待ち状態に移行する。このとき、転送制御部213は、データブロックを重複排除部211に入力する。
Next, the
転送制御部213は、一定時間経過した後、重複排除部211から符号化されたデータを取得したか否かを判定する(ステップS1104)。
The
重複排除部211から符号化されたデータを取得していないと判定された場合、転送制御部213は、待ち状態に移行し、一定時間経過した後にステップS1104に戻る。
When it is determined that the coded data has not been acquired from the
重複排除部211から符号化されたデータを取得したと判定された場合、転送制御部213は、WAN120を介して、符号化されたデータを送信し、また、データブロックバッファ216にデータブロックを格納する(ステップS1105)。
When it is determined that the encoded data is acquired from the
具体的には、転送制御部213は、符号化されたデータをプロトコル処理部214に出力する。なお、符号化されたデータとは、一つ以上のDedupヘッダ510及びDedupペイロード520の組を表す。
Specifically, the
ステップS1101の判定結果がYESの場合、又は、ステップS1105の処理が実行された後、転送制御部213は、ステップS1002において特定されたエントリのバッファ607にデータが残っているか否かを判定する(ステップS1106)。
When the determination result of step S1101 is YES, or after the process of step S1105 is executed, the
ステップS1002において特定されたエントリのバッファ607にデータが残っていると判定された場合、転送制御部213は、当該エントリのタイマ608に任意の時間を設定する(ステップS1107)。その後、転送制御部213は、処理を終了する。
When it is determined in step S1002 that data remains in the
ステップS1002において特定されたエントリのバッファ607にデータが残っていないと判定された場合、転送制御部213は、当該エントリのタイマ608に「0」を設定する(ステップS1108)。その後、転送制御部213は、処理を終了する。
When it is determined in step S1002 that no data remains in the
図12は、実施例1の転送制御部213がタイマ608に設定された時間が経過した場合に実行する処理を説明するフローチャートである。
FIG. 12 is a flowchart illustrating processing executed by the
転送制御部213は、各フローについてタイマをカウントし、タイマ608に設定された時間が経過したエントリを検出した場合、以下の処理を開始する。以下では、タイマ608に設定された時間が経過したエントリを対象エントリと記載する。
The
転送制御部213は、対象エントリのバッファ607に格納されるデータの符号化を重複排除部211に指示する(ステップS1201)。転送制御部213は、重複排除部211から符号化されたデータを取得するまで待ち状態に移行する。なお、当該指示には、対象エントリのバッファ607に格納されるデータが含まれる。
The
重複排除部211は、当該指示を受け付けた場合、dedup.type511に「3」を設定し、dedup.data_len512にバッファ607に格納されるデータの長さを設定し、dedup.hash1 513及びdedup.hash2 514にダミーの値として「0」を設定することによってDedupヘッダ510を生成する。また、重複排除部211は、Dedupペイロード520に対象エントリのバッファ607に格納されるデータを設定する。重複排除部211は、Dedupヘッダ510及びDedupペイロード520を転送制御部213に出力する。
When the
次に、転送制御部213は、重複排除部211から符号化されたデータを取得した場合、WAN120を介して、符号化されたデータを送信する(ステップS1202)。
Next, when the
具体的には、転送制御部213は、符号化されたデータをプロトコル処理部214に出力する。これによって、Dedupヘッダ510及びDedupペイロード520を含むTCPパケット500が送信される。
Specifically, the
次に、転送制御部213は、対象エントリのタイマ608に「0」を設定する(ステップS1203)。その後、転送制御部213は、処理を終了する。
Next, the
このように、タイマ608に設定された時間が経過した場合に、転送装置110がバッファ607に格納されるデータを送信することによって、受信したデータが転送されない状態を防止できる。
Thus, when the
図13は、実施例1の転送制御部213が他の転送装置110から応答を受信した場合に実行する処理を説明するフローチャートである。
FIG. 13 is a flowchart illustrating a process executed by the
転送制御部213は、プロトコル処理部214から、WAN120から受信した他の転送装置110の応答を受け取った場合(ステップS1301)、受け取った応答がデータブロック要求であるか否かを判定する(ステップS1302)。
When the
受け取った応答がデータブロック要求であると判定された場合、転送制御部213は、データブロックバッファ216からデータブロックを読み出し、重複排除部211にデータブロックの符号化を指示する(ステップS1303)。転送制御部213は、重複排除部211から符号化されたデータブロックを取得するまで待ち状態に移行する。なお、当該指示には、データブロックが含まれる。
When it is determined that the received response is the data block request, the
重複排除部211は、当該指示を受け付けた場合、第1ハッシュ関数及び第2ハッシュ関数を用いて、変数α及び変数βを算出する。変数α及び変数βの算出方法は、図15を用いて説明する。重複排除部211は、dedup.type511に「2」を設定し、dedup.data_len512にデータブロックの長さを設定し、dedup.hash1 513に変数αを設定し、dedup.hash2 514に変数βを設定することによってDedupヘッダ510を生成する。また、重複排除部211は、Dedupペイロード520にデータブロックを設定する。重複排除部211は、Dedupヘッダ510及びDedupペイロード520を転送制御部213に出力する。
When the
次に、転送制御部213は、重複排除部211から符号化されたデータブロックを取得した場合、WAN120を介して、符号化されたデータブロックを送信する(ステップS1304)。その後、転送制御部213は、処理を終了する。
Next, when the
具体的には、転送制御部213は、符号化されたデータブロックをプロトコル処理部214に出力する。これによって、Dedupヘッダ510及びDedupペイロード520を含むTCPパケット500が送信される。
Specifically, the
ステップS1302において、受け取った応答がデータブロック要求でないと判定された場合、転送制御部213は、更新フラグがONであるか否かを判定する(ステップS1305)。
When it is determined in step S1302 that the received response is not the data block request, the
更新フラグがOFFであると判定された場合、転送制御部213は、ステップS1307に進む。
When it is determined that the update flag is OFF, the
更新フラグがONであると判定された場合、転送制御部213は、重複排除部211に更新指示を出力する(ステップS1306)。このとき、転送制御部213は、更新フラグをOFFに設定する。当該更新指示にはデータブロックが含まれる。重複排除部211が、更新指示を受け付けた場合に実行する処理は図16を用いて説明する。
When it is determined that the update flag is ON, the
ステップS1305の判定結果がNOである場合、又は、ステップS1306の処理が実行された後、転送制御部213は、データブロックバッファ216からデータブロックを削除する(ステップS1307)。その後、転送制御部213は、処理を終了する。
When the determination result of step S1305 is NO, or after the process of step S1306 is executed, the
図14は、実施例1のデータ分割部215が実行する処理を説明するフローチャートである。
FIG. 14 is a flowchart illustrating processing executed by the
ここでは、データ分割部215が、Content Defined Chunkingとして知られるアルゴリズムに基づいて、データを可変長のデータブロックに分割する方法について説明する。Content Defined Chunkingでは、計算機が、固定長のウインドウ(例えば、48バイト)をデータの先頭から1バイトずつスライドし、ウインドウに含まれるデータのハッシュ値を用いて分割位置を決定する。
Here, a method will be described in which the
データ分割部215は、転送制御部213から呼び出された場合、処理を開始する。まず、データ分割部215は、転送制御部213からLAN140から受信したデータを取得する(ステップS1401)。
The
データ分割部215は、データの先頭に所定のサイズのウインドウを配置する(ステップS1402)。データ分割部215は、ウインドウに含まれるデータのハッシュ値を算出する(ステップS1403)。ハッシュ値を算出するためのハッシュ関数は、例えば、ローリングハッシュとして知られるハッシュ関数を用いる。
The
次に、データ分割部215は、ハッシュ値が所定の条件を満たすか否かを判定する(ステップS1404)。
Next, the
例えば、2進法表記におけるハッシュ値の下10桁が全て1であるか否かが判定される。ハッシュ値が入力されたデータに応じて適切に散らばる場合、2進法表記におけるハッシュ値の下10桁が全て1になる確率は1024分の1である。このとき、データブロックの平均サイズは約1024バイトとなる。 For example, it is determined whether or not the last 10 digits of the hash value in binary notation are all 1. If the hash values are appropriately scattered according to the input data, the probability that the lower 10 digits of the hash value in the binary notation will be all 1's is 1/1024. At this time, the average size of the data block is about 1024 bytes.
ハッシュ値が所定の条件を満たすと判定された場合、データ分割部215は、ウインドウに含まれるデータを出力するデータブロックに決定し、転送制御部213に当該データブロックを応答として出力する(ステップS1405)。その後、転送制御部213は処理を終了する。
When it is determined that the hash value satisfies the predetermined condition, the
ステップS1404において、ハッシュ値が所定の条件を満たさないと判定された場合、データ分割部215は、ウインドウの移動が可能であるか否かを判定する(ステップS1406)。
When it is determined in step S1404 that the hash value does not satisfy the predetermined condition, the
具体的には、データ分割部215は、ウインドウの終端がLAN140から受信したデータの終端と一致するか否かが判定される。ウインドウの終端がLAN140から受信したデータの終端と一致しない場合、データ分割部215は、ウインドウの移動が可能であると判定する。
Specifically, the
ウインドウの移動が不可能であると判定された場合、データ分割部215は、転送制御部213に分割不可通知を応答として出力する(ステップS1407)。その後、転送制御部213は処理を終了する。
When it is determined that the window cannot be moved, the
ウインドウの移動が可能であると判定された場合、データ分割部215は、ウインドウをデータの後方にスライドさせ(ステップS1408)、その後、ステップS1403に戻る。例えば、データ分割部215は、ウインドウを1バイト分だけ後方にスライドさせる。
When it is determined that the window can be moved, the
図15は、実施例1の重複排除部211が転送制御部213によって呼び出された場合に実行する処理を説明するフローチャートである。
FIG. 15 is a flowchart illustrating processing executed when the
重複排除部211は、転送制御部213からデータブロックを取得する(ステップS1501)。重複排除部211は、第1ハッシュ関数及び第2ハッシュ関数を用いて、変数α及び変数βを算出する(ステップS1502)。
The
具体的には、重複排除部211は、第1ハッシュ関数にデータブロックを入力することによって算出された第1ハッシュ値を2次元配列の行数Nで除算し、その余りを変数αとして算出する。また、重複排除部211は、第2ハッシュ関数にデータブロックを入力することによって算出される第2ハッシュ値を変数βとして算出する。
Specifically, the
次に、重複排除部211は、送信検索インデックス218を参照し(ステップS1503)、ハッシュ値が変数βに一致する要素701が存在するか否かを判定する(ステップS1504)。
Next, the
具体的には、重複排除部211は、α行目の行に含まれる要素701を参照する要素701群として特定する。重複排除部211は、α行目に含まれる各要素701に格納されるハッシュ値Xと、変数βとを比較する。
Specifically, the
ハッシュ値Xが変数βに一致する要素701が存在しないと判定された場合、重複排除部211は、ステップS1508に進む。
When it is determined that there is no
ハッシュ値Xが変数βに一致する要素701が存在すると判定された場合、重複排除部211は、送信データブロック情報220からデータブロックを読み出す(ステップS1505)。
When it is determined that there is the
具体的には、重複排除部211は、ハッシュ値Xが変数βに一致する要素701に含まれるポインタ値Pを取得し、送信データブロック情報220を参照して、当該ポインタ値Pがファイル名801に一致するエントリを検索する。重複排除部211は、検索されたエントリのデータブロック802からデータブロックを読み出す。
Specifically, the
次に、重複排除部211は、転送制御部213から取得したデータブロックと、送信データブロック情報220から読み出したデータブロックとが一致するか否かを判定する(ステップS1506)。
Next, the
二つのデータブロックが一致しないと判定された場合、重複排除部211は、ステップS1508に進む。
If it is determined that the two data blocks do not match, the
二つのデータブロックが一致すると判定された場合、重複排除部211は、転送制御部213に、符号化されたデータブロックの識別情報を出力する(ステップS1507)。その後、重複排除部211は、処理を終了する。
When it is determined that the two data blocks match, the
具体的には、重複排除部211は、dedup.type511に「1」を設定し、dedup.data_len512に「0」を設定し、dedup.hash1 513に変数αを設定し、dedup.hash2 514に変数βを設定することによってDedupヘッダ510を生成する。重複排除部211は、Dedupヘッダ510及びDedupペイロード520を転送制御部213に出力する。なお、Dedupペイロード520は空であるものとする。
Specifically, the
Dedupヘッダ510のサイズが28バイト、データブロックのサイズの平均値が4キロバイトである場合、データブロックの識別情報のみを送信する通信は、データブロックを送信する通信より通信量が100分の1以下となる。なお、前述の比較は、TCPヘッダ440等を除いたものである。
When the size of the
ステップS1504の判定結果がNOである場合、又は、ステップS1506の判定結果がNOである場合、重複排除部211は、転送制御部213の更新フラグをONに設定する(ステップS1508)。このとき、重複排除部211は、変数α及び変数βを一時的に保持する。
When the determination result of step S1504 is NO or when the determination result of step S1506 is NO, the
次に、重複排除部211は、転送制御部213に、符号化されたデータブロックの識別情報及び符号化されたデータブロックを出力する(ステップS1509)。その後、重複排除部211は、処理を終了する。
Next, the
具体的には、重複排除部211は、dedup.type511に「2」を設定し、dedup.data_len512にデータブロックのサイズを設定し、dedup.hash1 513に変数αを設定し、dedup.hash2 514に変数βを設定することによってDedupヘッダ510を生成する。また、重複排除部211は、Dedupペイロード520にデータブロックを設定する。重複排除部211は、Dedupヘッダ510及びDedupペイロード520を転送制御部213に出力する。
Specifically, the
変数αは、行数Nで割った余りであるため、0からN−1までの値となる。したがって、任意のデータブロックの変数αは、他のデータブロックを用いて算出された変数αとN分の1の確率で一致する。送信検索インデックス218のデータサイズは行数Nの大きさに依存するため、行数Nの大きさには制限がある。一方、変数βは、第2ハッシュ値をそのまま入力したものであり、Nより十分大きな値を設定できる。
Since the variable α is the remainder divided by the number of rows N, it takes a value from 0 to
例えば、変数αのサイズを20ビット、変数βのサイズを128ビット、ポインタ値Pのサイズを64ビットとした場合、送信検索インデックス218のサイズは、式(1)に示すように約100MBとなる。変数αのサイズを128ビット、変数βのサイズを20ビット、ポインタ値Pのサイズを64ビットとした場合、送信検索インデックス218のサイズは、式(2)に示すように約1.2×1016YBとなる。For example, when the size of the variable α is 20 bits, the size of the variable β is 128 bits, and the size of the pointer value P is 64 bits, the size of the
変数βのサイズを大きくすると、ハッシュ値の衝突が発生する確率が非常に低くなる。したがって、変数βとハッシュ値Xとが一致する場合、受信したデータブロックと、送信データブロック情報220から読み出したデータブロックとは、高い確率で一致する。この場合、変数β及びハッシュ値Xの比較のみを行えばよく、データブロック同士を比較する必要はない。そのため、ステップS1506の省略できる。
When the size of the variable β is increased, the probability of collision of hash values becomes very low. Therefore, when the variable β and the hash value X match, the received data block and the data block read from the transmission data block
ステップS1506の処理を省略した場合、二次記憶装置203へのアクセスする必要がないため、重複排除部211は、さらに高速に、データブロックを検索することができる。したがって、処理速度を重視する場合には、変数βのサイズを大きくし、ステップS1506の処理を行わないように設定すればよい。
If the process of step S1506 is omitted, there is no need to access the
図16は、実施例1の重複排除部211が転送制御部213から更新指示を受け付けた場合に実行する処理を説明するフローチャートである。
FIG. 16 is a flowchart illustrating a process executed when the
重複排除部211は、転送制御部213から更新指示を受け取った場合(ステップS1601)、送信検索インデックス218及び送信データブロック情報220を更新する(ステップS1602)。その後、重複排除部211は、処理を終了する。具体的には、以下のような処理が実行される。
When receiving the update instruction from the transfer control unit 213 (step S1601), the
重複排除部211は、ポインタ値Pに設定する値を式(3)を用いて算出する。なお、mは、第2ハッシュ関数の出力値の最大ビット数である。
The
式(3)に示すように変数α及び変数βに基づいて一意に定まる値をポインタ値に用いることによって、異なるデータブロックのポインタ値が同一となる確率を非常に小さくできる。 By using a value that is uniquely determined based on the variable α and the variable β as the pointer value as shown in Expression (3), the probability that the pointer values of different data blocks are the same can be extremely reduced.
重複排除部211は、送信検索インデックス218のα行目を参照し、α行目に含まれる要素701の中に空の要素701が存在するか否かを判定する。空の要素701とは、ハッシュ値X及びポインタ値Pが設定されていない要素701を示す。
The
空の要素701が存在する場合、重複排除部211は、当該要素701のハッシュ値Xに変数βを設定し、ポインタ値Pに式(3)を用いて算出された値を設定する。また、重複排除部211は、送信データブロック情報220にエントリを追加し、追加されたエントリのファイル名801に式(3)を用いて算出された値を設定し、データブロック802に更新指示に含まれるデータブロックを格納する。
If the
空の要素701が存在しない場合、重複排除部211は、α行目に含まれる要素701の中から値を設定する要素701を一つ選択する。要素701を選択する方法は様々考えられる。例えば、ランダムに選択する方法、及びLRU(Least Recently Used)アルゴリズムに基づいて選択する方法等が考えられる。
When there is no
重複排除部211は、送信データブロック情報220を参照し、ファイル名801が選択された要素701のポインタ値Pに一致するエントリを検索し、検索されたエントリを削除する。重複排除部211は、選択された要素701のハッシュ値Xに変数βを設定し、ポインタ値Pに式(3)を用いて算出された値を設定する。また、重複排除部211は、送信データブロック情報220にエントリを追加し、追加されたエントリのファイル名801に式(3)を用いて算出された値を設定し、データブロック802にデータブロックを格納する。以上がステップS1602の処理の説明である。
The
図17は、実施例1の転送制御部213がWAN120からデータを受信した場合に実行する処理を説明するフローチャートである。
FIG. 17 is a flowchart illustrating a process executed when the
転送制御部213は、プロトコル処理部214から、WAN120から受信したデータ(TCPパケット500)を受け取った場合(ステップS1701)、重複復元部212を呼び出す(ステップS1702)。このとき、転送制御部213は、受け取ったデータを重複復元部212に出力する。転送制御部213は、重複復元部212から応答を受け付けるまで待ち状態に移行する。
When the
転送制御部213は、重複復元部212からの応答に基づいて、データブロックを取得する必要があるか否かを判定する(ステップS1703)。
The
具体的には、転送制御部213は、重複復元部212からの応答が「該当データ無し」であるか否かを判定する。重複復元部212からの応答が「該当データ無し」である場合、転送制御部213は、データブロックを取得する必要があると判定する。
Specifically, the
データブロックを取得する必要がないと判定された場合、転送制御部213は、LAN140を介して、復元されたデータを送信する(ステップS1704)。
When it is determined that it is not necessary to acquire the data block, the
具体的には、転送制御部213は、復元されたデータをプロトコル処理部214に出力する。これによって、Dedupペイロード520に設定されたデータがTCPペイロード460に設定されたTCPパケット400が送信される。
Specifically, the
次に、転送制御部213は、WAN120を介して、復元確認通知を送信する(ステップS1705)。その後、転送制御部213は、処理を終了する。
Next, the
具体的には、転送制御部213は、プロトコル処理部214に復元確認通知の送信を指示する。なお、復元確認通知を送信する場合には、TCPパケット400及びTCPパケット500のいずれを用いてもよい。
Specifically, the
ステップS1703において、データブロックを取得する必要があると判定された場合、転送制御部213は、WAN120を介して、データブロック要求を送信する(ステップS1706)。その後、転送制御部213は、処理を終了する。
When it is determined in step S1703 that the data block needs to be acquired, the
具体的には、転送制御部213は、プロトコル処理部214にデータブロック要求の送信を指示する。なお、データブロック要求を送信する場合には、TCPパケット400及びTCPパケット500のいずれを用いてもよい。
Specifically, the
図18は、実施例1の重複復元部212が転送制御部213によって呼び出された場合に実行する処理を説明するフローチャートである。
FIG. 18 is a flowchart illustrating a process executed when the
重複復元部212は、転送制御部213からデータを取得し(ステップS1801)、Dedupヘッダ510に含まれるdedup.type511の値が「2」であるか否かを判定する(ステップS1802)。
The
dedup.type511の値が「2」ではないと判定された場合、重複復元部212は、dedup.type511の値が「3」であるか否かを判定する(ステップS1803)。
dedup. When it is determined that the value of the
dedup.type511の値が「1」であると判定された場合、重複復元部212は、受信検索インデックス219を参照し、ハッシュ値Xがdedup.hash2 514の値に一致する要素701が存在するか否かを判定する(ステップS1804)。
dedup. When it is determined that the value of the
具体的には、重複復元部212は、(dedup.hash1 513)行目の行に含まれる要素701を参照する要素701群として特定する。重複復元部212は、(dedup.hash1 513)行目に含まれる各要素701に格納されるハッシュ値Xと、dedup.hash2 514の値とを比較する。
Specifically, the
ハッシュ値Xがdedup.hash2 514の値に一致する要素701が存在すると判定された場合、重複復元部212は、受信データブロック情報221からデータブロックを読み出す(ステップS1805)。
The hash value X is dedup. When it is determined that the
具体的には、重複復元部212は、ハッシュ値Xがdedup.hash2 514の値に一致する要素701からポインタ値Pを取得し、受信データブロック情報221を参照して、当該ポインタ値Pがファイル名801に一致するエントリを検索する。重複復元部212は、検索されたエントリのデータブロック802からデータブロックを読み出す。
Specifically, the
次に、重複復元部212は、転送制御部213に読み出されたブロックデータを応答として出力する(ステップS1806)。その後、重複復元部212は、処理を終了する。
Next, the
ステップS1804において、ハッシュ値がdedup.hash2 514の値に一致する要素701が存在しないと判定された場合、重複復元部212は、転送制御部213に「該当データ無し」を応答として出力する(ステップS1808)。その後、重複復元部212は、処理を終了する。
In step S1804, the hash value is dedup. When it is determined that the
ステップS1803において、dedup.type511の値が「3」であると判定された場合、重複復元部212は、転送制御部213に、Dedupペイロード520に設定されたデータを応答として出力する(ステップS1807)。その後、重複復元部212は、処理を終了する。
In step S1803, delete. When it is determined that the value of the
ステップS1802において、dedup.type511の値が「2」であると判定された場合、重複復元部212は、受信検索インデックス219及び受信データブロック情報221を更新する(ステップS1809)。具体的には、以下のような処理が実行される。
In step S1802, dedup. When it is determined that the value of
重複復元部212は、ポインタ値Pに設定する値を式(4)を用いて算出する。
The
式(4)に示すようにdedup.hash1 513及びdedup.hash2 514に基づいて一意に定まる値をポインタ値に用いることによって、異なるデータブロックのポインタ値が同一となる確率を非常に小さくできる。
As shown in equation (4), dedup. hash1 513 and dedup. By using a value that is uniquely determined based on
重複復元部212は、受信検索インデックス219の(dedup.hash1 513)行目を参照し、(dedup.hash1 513)行目に含まれる要素701の中に空の要素701が存在するか否かを判定する。
The
空の要素701が存在する場合、重複復元部212は、当該要素701のハッシュ値Xにdedup.hash2 514の値を設定し、ポインタ値Pに式(4)を用いて算出された値を設定する。また、重複復元部212は、受信データブロック情報221にエントリを追加し、追加されたエントリのファイル名801に式(4)を用いて算出された値を設定し、データブロック802にデータブロックを格納する。
When the
空の要素701が存在しない場合、重複復元部212は、(dedup.hash1 513)行目に含まれる要素701の中から、値を設定する要素701を一つ選択する。要素701を選択する方法は重複排除部211が使用する方法と同一の方法とする。重複排除部211及び重複復元部212が同一の方法を用いることによって、送信データブロック情報220及び受信データブロック情報221の内容が一致する可能性が高くなる。これによって、データブロック要求を送信する回数を低減できる。
When the
重複復元部212は、受信データブロック情報221を参照し、ファイル名801が選択された要素701のポインタ値Pに一致するエントリを検索し、検索されたエントリを削除する。重複復元部212は、選択された要素701のハッシュ値Xにdedup.hash2 514の値を設定し、ポインタ値Pに式(4)を用いて算出された値を設定する。また、重複復元部212は、受信データブロック情報221にエントリを追加し、追加されたエントリのファイル名801に式(4)を用いて算出された値を設定し、データブロック802にデータブロックを格納する。以上がステップS1809の処理の説明である。
The
次に、重複復元部212は、転送制御部213に、Dedupペイロード520に設定されたデータブロックを応答として出力する(ステップS1810)。その後、重複復元部212は、処理を終了する。
Next, the
次に、図19を用いて、重複排除部211が実行する具体的な処理内容について説明する。
Next, specific processing contents executed by the
図19は、実施例1の重複排除部211が実行する処理の具体例を示す図である。ここで、送信検索インデックス218及び送信データブロック情報220は、それぞれ、図19に示すエントリが格納されるものとする。なお、送信検索インデックスの左側の数字は行数を表す。
FIG. 19 is a diagram illustrating a specific example of the process executed by the
まず、重複排除部211がデータブロック「abc...z」を受信した場合を例に説明する。なお、当該データブロックの変数αは「6423」、変数βは「0x11121239」であるものとする。
First, a case where the
ステップS1503において、重複排除部211は、6423行目に含まれる四つの要素701のハッシュ値Xと、変数βとを比較する。このとき、2列目の要素701のハッシュ値Xと変数βとが一致するため、ステップS1504の判定結果はYESとなる。
In step S1503, the
ステップS1505では、重複排除部211は、2列目の要素701のポインタ値Pの値「p2」を用いて、送信データブロック情報220からデータブロック「abc...z」を読み出す。
In step S1505, the
転送制御部213から取得したデータブロックと、送信データブロック情報220から読み出したデータブロックとは一致するため、ステップS1506の判定結果はYESとなる。
Since the data block acquired from the
したがって、重複排除部211は、符号化されたデータブロックの識別情報を出力する(ステップS1507)。なお、Dedupヘッダ510のdedup.hash1 513には「6242」が設定され、dedup.hash2 514には「0x11121239」が設定される。
Therefore, the
次に、重複排除部211がデータブロック「012...9」を受信した場合を例に説明する。なお、当該データブロックの変数αは「312」、変数βは「0x121f12d9」であるものとする。
Next, a case where the
ステップS1503において、重複排除部211は、312行目に含まれる四つの要素701のハッシュ値Xと、変数βとを比較する。このとき、変数βに一致するハッシュ値Xを含む要素701は存在しないため、ステップS1504の判定結果はNOとなる。
In step S1503, the
したがって、重複排除部211は、更新フラグをONに設定し(ステップS1508)、符号化されたデータブロックの識別情報及びデータブロックを出力する(ステップS1509)。なお、Dedupヘッダ510のdedup.hash1 513には「312」が設定され、dedup.hash2 514には「0x121f12d9」が設定される。また、Dedupペイロード520にはデータブロック「012...9」が設定される。
Therefore, the
重複排除部211は、転送制御部213から更新指示を受け取った場合、データブロック「012...9」から変数α及び変数βを算出し、また、式(3)を用いてポインタ値Pに設定する値を算出する。
When the
重複排除部211は、送信検索インデックス218の312行目を参照する。312行目には空の要素701が存在しないため、重複排除部211は、312行目に含まれる要素701の中から一つの要素を選択する。ここでは、2列目の要素701が選択されたものとする。
The
重複排除部211は、送信データブロック情報220を参照して、ファイル名801がp6であるエントリを検索し、検索されたエントリを削除する。
The
重複排除部211は、312行目の2列目の要素701のハッシュ値Xに変数βを設定し、また、ポインタ値Pに式(3)を用いて算出された値を設定する。また、重複排除部211は、送信データブロック情報220にエントリを追加し、追加されたエントリのファイル名801に式(3)を用いて算出された値を設定し、データブロック802にデータブロック「012...9」を設定する。
The
二つのデータブロックを例に、送信検索インデックス218及び送信データブロック情報220の使用方法について説明した。なお、受信検索インデックス219及び受信データブロック情報221の使用方法も同様である。
The method of using the
実施例1によれば、転送装置110は、送信検索インデックス218及び受信検索インデックス219を用いることによって、二次記憶装置203に格納される送信データブロック情報220及び受信データブロック情報221にアクセスすることなくデータブロックを保持しているか否かを判定できる。
According to the first embodiment, the
特に、dedup.hash2 514(変数β)のサイズを大きくすることによって、ハッシュ値の衝突を回避することができるため、転送装置110は、送信検索インデックス218及び受信検索インデックス219のみを用いてデータブロックを検索することができる。
In particular, dedup. Since the hash value collision can be avoided by increasing the size of hash2 514 (variable β), the
また、送信検索インデックス218及び受信検索インデックス219は、送信データブロック情報220及び受信データブロック情報221よりサイズを小さくできるため、主記憶装置202に送信検索インデックス218及び受信検索インデックス219を格納することができる。
Since the
したがって、転送装置110は、送信検索インデックス218及び受信検索インデックス219を用いて、データブロックの重複排除及び重複復元を高速に行うことができる。これによって、データ転送処理の高速化を実現することができる。
Therefore, the
実施例2では、データブロックの分割方法が実施例1と異なる。以下、実施例1との差異を中心に実施例2について説明する。なお、実施例1と同一の構成、同一の処理には、同一の符号を付し、説明を省略する。 The second embodiment is different from the first embodiment in the data block dividing method. Hereinafter, the second embodiment will be described focusing on the differences from the first embodiment. The same components and processes as those in the first embodiment are designated by the same reference numerals and the description thereof will be omitted.
実施例2のネットワークシステムの構成は、実施例1のネットワークシステムの構成と同一であるため説明を省略する。 The configuration of the network system according to the second embodiment is the same as the configuration of the network system according to the first embodiment, and a description thereof will be omitted.
図20は、実施例2の転送装置110のハードウェア構成及びソフトウェア構成の一例を示す図である。図21は、実施例2の転送装置110のソフトウェア構成の論理的な接続関係を示す図である。
FIG. 20 is a diagram illustrating an example of the hardware configuration and the software configuration of the
実施例2の転送装置110のハードウェア構成は、実施例1の転送装置110のハードウェア構成と同一であるため説明を省略する。
The hardware configuration of the
実施例2の転送装置110の主記憶装置202は、副検索インデックス2001を格納する。副検索インデックス2001は、送信データブロック情報220に格納されるデータブロックを検索する場合に使用されるインデックスである。副検索インデックス2001の詳細は、図24を用いて説明する。
The
実施例2のフロー情報217のデータ構造は、実施例1のフロー情報217のデータ構造と異なる。実施例2のフロー情報217の詳細は、図22を用いて説明する。
The data structure of the
実施例2のデータ分割部215は、実施例1とは異なる方法を用いてデータブロックを生成する。データ分割部215が生成するデータブロックについて、図23を用いて説明する。
The
実施例2の転送制御部213が実行する処理は、実施例1の転送制御部213が実行する処理と一部異なる。異なる処理については、図25を用いて説明する。実施例2の重複排除部211が実行する処理は、実施例1の重複排除部211が実行する処理と一部異なる。異なる処理については、図26及び図27を用いて説明する。また、実施例2の重複排除部211は、第1ハッシュ関数及び第2ハッシュ関数の他に、第3ハッシュ関数を保持する。
The process executed by the
その他の情報及び機能部が実行する処理は、実施例1と同一である。 The other information and the processing executed by the functional unit are the same as in the first embodiment.
図22は、実施例2のフロー情報217の一例を示す図である。
FIG. 22 is a diagram illustrating an example of the
フロー情報217に含まれるエントリは、head2201を含む。head2201は、バッファ607に格納されるデータの先頭がデータブロックの先頭であるか否かを示す情報であり、初期値は「NO」である。エントリに含まれるその他のカラムは実施例1と同一である。
The entries included in the
図23は、実施例2のデータの分割方法の概念を示す図である。 FIG. 23 is a diagram illustrating the concept of the data dividing method according to the second embodiment.
実施例2では、LAN140を介して受信したデータは、固定長のデータブロックに分割される。図23では、i番目のデータブロックの識別情報をMiと記載している。
In the second embodiment, the data received via the
さらに、実施例2では、一つのデータブロックが、固定長の副データブロックに分割される。転送装置110は、副データブロックの場所を検索するためのインデックスとして、副検索インデックス2001を保持する。
Further, in the second embodiment, one data block is divided into fixed-length sub data blocks. The
図24は、実施例2の副検索インデックス2001の一例を示す図である。
FIG. 24 is a diagram illustrating an example of the
副検索インデックス2001は、2次元配列のデータ構造である。図24では、N行4列の2次元配列となっている。なお、行及び列の数は一例であって、任意の値に設定できる。
The
2次元配列の一つの要素2401には、ハッシュ値XX及び添字Iが含まれる。ハッシュ値XXは、第3ハッシュ関数にデータブロックを入力することによって算出されるハッシュ値である。ハッシュ値XXは、データブロックが送信データブロック情報220に格納されているか否かを判定する場合に使用される。添字Iは、データブロックの先頭から何番目の副データブロックであるかを示す値である。
One
図25は、実施例2の転送制御部213がLAN140からデータを受信した場合に実行する処理を説明するフローチャートである。
FIG. 25 is a flowchart illustrating a process executed when the
転送制御部213は、ステップS1002の処理が完了した後、特定されたエントリのバッファ607に格納されるデータの先頭がデータブロックの先頭であるか否かを判定する(ステップS2501)。
After the processing of step S1002 is completed, the
具体的には、転送制御部213は、特定されたエントリのhead2201が「YES」であるか否かを判定する。head2201が「YES」である場合、転送制御部213は、特定されたエントリのバッファ607に格納されるデータの先頭がデータブロックの先頭であると判定する。
Specifically, the
特定されたエントリのバッファ607に格納されるデータの先頭がデータブロックの先頭であると判定された場合、転送制御部213は、データ分割部215を呼び出す(ステップS1003)。このとき、転送制御部213は、受け取ったデータをデータ分割部215に出力する。その後、転送制御部213は、処理を終了する。
When it is determined that the head of the data stored in the
特定されたエントリのバッファ607に格納されるデータの先頭がデータブロックの先頭ではないと判定された場合、転送制御部213は、特定されたエントリのバッファ607に格納されるデータのサイズが比較ブロックサイズ以上であるか否かを判定する(ステップS2502)。なお、比較ブロックサイズは、予め設定されているものとする。
When it is determined that the head of the data stored in the buffer of the specified
特定されたエントリのバッファ607に格納されるデータのサイズが比較ブロックサイズより小さいと判定された場合、転送制御部213は、特定されたエントリのバッファ607にデータが残っているか否かを判定する(ステップS2503)。
When it is determined that the size of the data stored in the
特定されたエントリのバッファ607にデータが残っていると判定された場合、転送制御部213は、当該エントリのタイマ608に任意の時間を設定する(ステップS2504)。その後、転送制御部213は、処理を終了する。
When it is determined that data remains in the
特定されたエントリのバッファ607にデータが残っていないと判定された場合、転送制御部213は、当該エントリのタイマ608に「0」を設定する(ステップS2505)。その後、転送制御部213は、処理を終了する。
When it is determined that no data remains in the
ステップS2502において、特定されたエントリのバッファ607に格納されるデータのサイズが比較ブロックサイズ以上であると判定された場合、転送制御部213は、重複排除部211に副データブロックの検出指示を出力する(ステップS2506)。転送制御部213は、重複排除部211から応答を受け取るまで待ち状態に移行する。なお、副データブロックの検索処理は、図26を用いて説明する。
When it is determined in step S2502 that the size of the data stored in the
転送制御部213は、重複排除部211から受け取った応答に基づいて、特定されたエントリのバッファ607に格納されるデータに副データブロックが存在するか否かを判定する(ステップS2507)。
The
具体的には、転送制御部213は、重複排除部211からの応答が「該当データ無し」であるか否かを判定する。重複排除部211からの応答が「該当データ無し」である場合、転送制御部213は、特定されたエントリのバッファ607に格納されるデータに副データブロックが存在すると判定する。
Specifically, the
特定されたエントリのバッファ607に格納されるデータに副データブロックが存在すると判定された場合、転送制御部213は、副データブロックを含むデータブロックを特定し、特定されたエントリのバッファ607に格納されるデータの先頭から当該データブロックの手前までのデータを削除し、符号化されたデータを出力するとともに、特定されたエントリのhead2201を「YES」に更新する(ステップS2508)。その後、転送制御部213は、ステップS1003に進む。具体的には、以下のような処理が実行される。
When it is determined that the sub data block exists in the data stored in the buffer of the specified
転送制御部213は、重複排除部211を介して、検索された副データブロックの識別情報(添字I)に基づいて、特定されたエントリのバッファ607に格納されるデータにおける、データブロックの先頭を特定する。
The
転送制御部213は、重複排除部211にデータブロックの符号化を指示する。転送制御部213は、重複排除部211から符号化されたデータを取得するまで待ち状態に移行する。当該指示には、特定されたエントリのバッファ607に格納されるデータが含まれる。以下では、バッファ607に格納されるデータの先頭から当該データブロックの手前までのデータを対象データと記載する。
The
重複排除部211は、当該指示を受け付けた場合、dedup.type511に「3」を設定し、dedup.data_len512に対象データの長さを設定し、dedup.hash1 513及びdedup.hash2 514にダミーの値として「0」を設定することによってDedupヘッダ510を生成する。また、重複排除部211は、Dedupペイロード520に対象データを設定する。以上がステップS2508の処理の説明である。
When the
特定されたエントリのバッファ607に格納されるデータに副データブロックが存在しないと判定された場合、転送制御部213は、特定されたエントリのバッファ607に格納されるデータから比較ブロックサイズ分のデータを削除し、符号化されたデータを出力する(ステップS2509)。
When it is determined that the sub-data block does not exist in the data stored in the
ステップS2509の処理は、ステップS2508の処理と同様の処理である。ただし、Dedupペイロード520にはバッファ607から削除されたデータが含まれ、また、特定されたエントリのhead2201は更新されない。
The process of step S2509 is similar to the process of step S2508. However, the
比較ブロックサイズは、副データブロックのサイズより大きい値が設定される。比較ブロックサイズが大きい場合、処理の負荷が軽くなるため、データの分割を高速に行うことができる。一方、比較ブロックサイズが大きい場合、重複排除されるデータの割合が小さくなる。 The comparison block size is set to a value larger than the size of the sub data block. When the comparison block size is large, the processing load is light, and thus the data can be divided at high speed. On the other hand, when the comparison block size is large, the ratio of data that is deduplicated is small.
図26は、実施例2の重複排除部211が転送制御部213から副データブロックの検出指示を受け付けた場合に実行する処理を説明するフローチャートである。
FIG. 26 is a flowchart illustrating a process executed when the
重複排除部211は、転送制御部213から副データブロックの検出指示を受け付けた場合、特定されたエントリのバッファ607に格納されるデータを取得する(ステップS2601)。
When the
重複排除部211は、変数Sに「1」を設定し(ステップS2602)、また、データの先頭に所定のサイズのウインドウを配置する(ステップS2603)。データ分割部215は、ウインドウに含まれるデータのハッシュ値を算出する(ステップS2604)。
The
具体的には、データ分割部215は、変数αと同様の手順に基づいてハッシュ値SAを算出し、第3ハッシュ関数にデータを入力することによってハッシュ値SCを算出する。なお、ウインドウのサイズは、副データブロックのサイズと同一のものとする。
Specifically, the
次に、重複排除部211は、副検索インデックス2001を参照し(ステップS2605)、ハッシュ値XXがハッシュ値SCに一致する要素2401が存在するか否かを判定する(ステップS2606)。
Next, the
具体的には、重複排除部211は、SA行目の行に含まれる各要素2401に格納されるハッシュ値XXと、ハッシュ値SCとを比較する。
Specifically, the
ハッシュ値XXがハッシュ値SCに一致する要素2401が存在すると判定された場合、重複排除部211は、転送制御部213に、当該要素2401に含まれる添字Iを応答として出力する(ステップS2607)。その後、重複排除部211は処理を終了する。
When it is determined that the
ハッシュ値XXがハッシュ値SCに一致する要素2401が存在しないと判定された場合、重複排除部211は、変数Sが閾値以上であるか否かを判定する(ステップS2608)。閾値は任意に設定できる。
When it is determined that the
変数Sが閾値以上であると判定された場合、重複排除部211は、転送制御部213に、「該当データ無し」を応答として出力する(ステップS2609)。
When it is determined that the variable S is equal to or larger than the threshold value, the
変数Sが閾値より小さいと判定された場合、重複排除部211は、変数Sに「1」を加算し(ステップS2610)、また、ウインドウをデータの後方にスライドさせる(ステップS2611)。その後、重複排除部211は、ステップS2604に戻る。例えば、重複排除部211は、ウインドウを1バイト分だけ後方にスライドさせる。
When it is determined that the variable S is smaller than the threshold value, the
図27は、実施例2の重複排除部211が転送制御部213によって呼び出された場合に実行する処理を説明するフローチャートである。
FIG. 27 is a flowchart illustrating processing executed when the
実施例2では、重複排除部211は、ステップS1508の処理が完了した後、副検索インデックス2001を更新する(ステップS2701)。その後、重複排除部211は、ステップS1509に進む。具体的には、以下のような処理が実行される。
In the second embodiment, the
重複排除部211は、データブロックに含まれる副データブロックの中から、対象の副データブロックを選択し、当該副データブロックを第1ハッシュ関数及び第2ハッシュ関数に入力し、ハッシュ値Sa及びハッシュ値Scを算出する。
The
重複排除部211は、副検索インデックス2001を参照し、Sa行目に含まれる要素2401に空の要素2401が存在するか否かを判定する。
The
Sa行目に含まれる要素2401に空の要素2401が存在する場合、重複排除部211は、空きの要素2401のハッシュ値XXにハッシュ値Scを格納し、添字Iにデータブロックにおける対象の副データブロックの位置を示す値を格納する。
When the
Sa行目に含まれる要素2401に空の要素2401が存在しない場合、重複排除部211は、所定のアルゴリズムに基づいて、Sa行目に含まれる要素2401の中から値を設定する要素2401を一つ選択する。重複排除部211は、選択された要素2401のハッシュ値XXにハッシュ値Scを格納し、添字Iにデータブロックにおける対象の副データブロックの位置を示す値を格納する。以上がステップS2701の処理の説明である。
When the
実施例2によれば、実施例1と同様にデータ転送処理の高速化を実現することができる。また、実施例2によれば、転送装置110は、比較ブロックサイズの間隔をあけながら副データブロックを用いて、データブロックの境界をバイト単位で調べることができる。データ全体に対してデータブロックの境界を特定する処理が転送処理の速度を律速する場合、比較ブロックサイズのサイズを大きくすることによって、データブロックの境界を特定する処理を間引くことができる。
According to the second embodiment, similarly to the first embodiment, the speeding up of the data transfer process can be realized. Further, according to the second embodiment, the
また、データブロックサイズと独立したパラメータである比較ブロックサイズを用いることによって、バイト単位のデータブロックの境界の特定処理の間引き方を調整できる。データブロックサイズを小さくした場合、データブロックが一致する可能性が高まるため重複排除の効果を高めることができ、比較ブロックサイズを大きくした場合、バイト単位のデータブロックの境界の特定処理が間引かれるため処理を高速化できる。 Further, by using the comparison block size, which is a parameter independent of the data block size, it is possible to adjust the thinning method of the process of identifying the boundary of the data block in byte units. When the data block size is reduced, the possibility of matching data blocks increases, so the effect of deduplication can be enhanced, and when the comparison block size is increased, the process of identifying the boundaries of data blocks in byte units is skipped. Therefore, the processing can be speeded up.
請求の範囲に記載した以外の発明の観点の代表的なものとして、次のものがあげられる。
(1)端末間で送受信されるデータを転送する複数の転送装置を備えるネットワークシステムであって、
前記複数の転送装置の各々は、
前記端末間のデータの転送処理を制御する転送制御部を有し、
データを分割することによって生成されるデータブロックであって、前記端末間で過去に送信されたデータブロックを管理するデータブロック情報と、前記データブロック情報に格納される前記データブロックを検索するための識別情報を管理する検索インデックスと、を保持し、
前記複数の転送装置は、第1検索インデックス及び第1データブロック情報を保持する第1転送装置、並びに、第2検索インデックス及び第2データブロック情報を保持する第2転送装置を含み、
前記第1転送装置は、
前記第1転送装置に接続する端末から送信データを受信した場合、前記送信データから前記データブロックを生成するための分割処理を実行し、
前記分割処理によって生成された第1データブロックから、前記検索インデックスを参照するための第1識別情報を算出し、
前記第1識別情報に基づいて前記第1検索インデックスを参照して、前記第1データブロックが前記第1データブロック情報に格納されているか否かを判定し、
前記第1データブロックが前記第1データブロック情報に格納されていないと判定された場合、前記第1識別情報及び前記第1データブロックを前記第2転送装置に送信し、
前記第2転送装置は、
前記第1識別情報及び前記第1データブロックを受信した場合、前記第2検索インデックスに前記第1識別情報を格納し、前記第2データブロック情報に前記第1データブロックを格納し、
前記第1転送装置に応答を送信し、
前記第1転送装置は、前記第2転送装置からの応答を受信した場合、前記第1検索インデックスに前記第1識別情報を格納し、前記第1データブロック情報に前記第1データブロックを格納することを特徴とするネットワークシステム。The following are typical aspects of the invention other than those described in the claims.
(1) A network system including a plurality of transfer devices for transferring data transmitted and received between terminals,
Each of the plurality of transfer devices is
A transfer control unit that controls a transfer process of data between the terminals,
A data block generated by dividing data, for managing data block information for managing data blocks transmitted in the past between the terminals, and for searching the data block stored in the data block information. Holds a search index that manages identification information, and
The plurality of transfer devices include a first transfer device that holds a first search index and first data block information, and a second transfer device that holds a second search index and second data block information,
The first transfer device is
When transmission data is received from the terminal connected to the first transfer device, a division process for generating the data block from the transmission data is executed,
Calculating first identification information for referring to the search index from the first data block generated by the division processing,
Referring to the first search index based on the first identification information, determining whether the first data block is stored in the first data block information,
When it is determined that the first data block is not stored in the first data block information, the first identification information and the first data block are transmitted to the second transfer device,
The second transfer device is
When the first identification information and the first data block are received, the first identification information is stored in the second search index, and the first data block is stored in the second data block information,
Sending a response to the first transfer device,
When the first transfer device receives a response from the second transfer device, the first transfer device stores the first identification information in the first search index and stores the first data block in the first data block information. A network system characterized in that
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。 It should be noted that the present invention is not limited to the above-described embodiments, but includes various modifications. In addition, for example, the above-described embodiments have been described in detail in order to explain the present invention in an easy-to-understand manner, and are not necessarily limited to those having all the described configurations. Also, a part of the configuration of the embodiment can be added, deleted, or replaced with another configuration.
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるCPUが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD−ROM、DVD−ROM、ハードディスク、SSD(Solid State Drive)、光ディスク、光磁気ディスク、CD−R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。 Further, each of the above-mentioned configurations, functions, processing units, processing means, etc. may be realized by hardware by designing a part or all of them with, for example, an integrated circuit. The present invention can also be realized by a program code of software that realizes the functions of the embodiments. In this case, the storage medium recording the program code is provided to the computer, and the CPU included in the computer reads the program code stored in the storage medium. In this case, the program code itself read from the storage medium realizes the function of the above-described embodiment, and the program code itself and the storage medium storing the program code constitute the present invention. As a storage medium for supplying such a program code, for example, a flexible disk, a CD-ROM, a DVD-ROM, a hard disk, an SSD (Solid State Drive), an optical disk, a magneto-optical disk, a CD-R, a magnetic tape, A non-volatile memory card, ROM or the like is used.
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、perl、Shell、PHP、Java等の広範囲のプログラム又はスクリプト言語で実装できる。 Further, the program code that realizes the functions described in this embodiment can be implemented by a wide range of programs or script languages such as assembler, C/C++, perl, Shell, PHP, and Java.
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はCD−RW、CD−R等の記憶媒体に格納し、コンピュータが備えるCPUが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。 Furthermore, by distributing the program code of the software that realizes the functions of the embodiments via a network, the program code is stored in a storage means such as a hard disk or a memory of a computer or a storage medium such as a CD-RW or a CD-R. Alternatively, the CPU included in the computer may read and execute the program code stored in the storage unit or the storage medium.
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。 In the above-mentioned embodiments, the control lines and information lines are shown to be necessary for explanation, and not all the control lines and information lines in the product are necessarily shown. All configurations may be connected to each other.
Claims (7)
プロセッサ、前記プロセッサに接続される主記憶装置、前記プロセッサに接続される副記憶装置、及び前記プロセッサに接続されるネットワークインタフェースを備え、
前記端末間のデータの転送処理を制御する転送制御部を有し、
ネットワークを介して他の転送装置と接続され、
前記副記憶装置は、データを分割することによって生成されるデータブロックであって、前記端末間で過去に送信されたデータブロックを管理するデータブロック情報を格納し、
前記主記憶装置は、前記データブロック情報に格納される前記データブロックを検索するための検索インデックスと、前記データブロックを一時的に保存するバッファとを格納し、
前記検索インデックスは、前記データブロックから算出された比較値及び前記データブロック情報に格納される前記データブロックへアクセスするためのポインタ値の組から構成される要素を複数含み、
前記データブロック情報は、前記ポインタ値及び前記データブロックから構成されるエントリを複数含み、
前記転送制御部は、
前記端末からデータを受信した場合、前記受信したデータから前記データブロックを生成するための分割処理を実行し、
前記分割処理によって生成された第1データブロックから、前記検索インデックスを参照するための検索値及び参照値を算出し、
前記参照値に基づいて、前記検索インデックスに含まれる複数の要素の中から参照する少なくとも一つの要素を特定し、
前記特定された少なくとも一つの要素に含まれる前記比較値と前記検索値とを比較することによって、前記第1データブロックが前記データブロック情報に格納されているか否かを判定し、
前記第1データブロックが前記データブロック情報に格納されていると判定された場合、前記第1データブロックの識別情報を前記他の転送装置に送信し、前記バッファに前記データブロックを保存し、前記他の転送装置から当該第1データブロックの転送完了を通知する応答を受信した後、前記バッファから前記第1データブロックを削除し、
前記第1データブロックが前記データブロック情報に格納されていないと判定された場合、前記第1データブロックの識別情報及び前記第1データブロックを前記他の転送装置に送信し、前記バッファに前記データブロックを保存し、前記他の転送装置から当該第1データブロックの転送完了を通知する応答を受信した後、前記データブロック情報に前記第1データブロックを格納し、前記バッファから前記第1データブロックを削除し、
前記第1データブロックの識別情報を送信した前記他の転送装置から、前記第1データブロックの送信を要求するデータブロック要求を受信した場合、前記バッファに保存される前記第1データブロックを前記他の転送装置に送信することを特徴とする転送装置。 A transfer device for transferring data transmitted and received between terminals ,
A processor , a main memory connected to the processor, a sub memory connected to the processor, and a network interface connected to the processor,
A transfer control unit that controls a transfer process of data between the terminals,
Connected to other transfer devices via the network,
The secondary storage device is a data block generated by dividing data, and stores data block information for managing a data block transmitted in the past between the terminals,
The main storage device stores a search index for searching the data block stored in the data block information, and a buffer for temporarily storing the data block ,
The search index includes a plurality of elements configured from a set of a comparison value calculated from the data block and a pointer value for accessing the data block stored in the data block information,
The data block information includes a plurality of entries composed of the pointer value and the data block,
The transfer control unit,
When receiving data from the terminal, execute a division process for generating the data block from the received data,
Calculating a search value and a reference value for referring to the search index from the first data block generated by the division processing,
Based on the reference value, to identify at least one element to be referenced from the plurality of elements included in the search index,
Determining whether the first data block is stored in the data block information by comparing the comparison value and the search value included in the specified at least one element,
When it is determined that the first data block is stored in the data block information, the identification information of the first data block is transmitted to the other transfer device , the data block is stored in the buffer, and Deleting a first data block from the buffer after receiving a response notifying completion of transfer of the first data block from another transfer device,
When it is determined that the first data block is not stored in the data block information, the identification information of the first data block and the first data block are transmitted to the other transfer device, and the data is stored in the buffer. After storing a block and receiving a response notifying completion of transfer of the first data block from the other transfer device, storing the first data block in the data block information, and storing the first data block from the buffer. Remove
When a data block request requesting transmission of the first data block is received from the other transfer device that has transmitted the identification information of the first data block, the first data block stored in the buffer may be the other one. The transfer device is characterized by transmitting to another transfer device.
前記比較値及び前記検索値は、ハッシュ値であり、
前記転送制御部は、第1ハッシュ関数及び第2ハッシュ関数を保持し、
前記第1ハッシュ関数及び前記第1データブロックを用いて前記参照値を算出し、
前記第2ハッシュ関数及び前記第1データブロックを用いて前記検索値を算出し、
前記検索値及び前記参照値を前記第1データブロックの識別情報として送信し、
前記検索値が前記比較値と一致する場合、前記第1データブロックが前記データブロック情報に格納されると判定することを特徴とする転送装置。 The transfer device according to claim 1, wherein
The comparison value and the search value are hash values,
The transfer control unit holds a first hash function and a second hash function,
Calculating the reference value using the first hash function and the first data block,
Calculating the search value using the second hash function and the first data block,
Transmitting the search value and the reference value as identification information of the first data block,
The transfer device, wherein if the search value matches the comparison value, it is determined that the first data block is stored in the data block information.
前記転送制御部は、
前記第1データブロックの識別情報及び前記第1データブロックを送信した前記他の転送装置から当該第1データブロックの格納完了を通知する応答を受信した場合、前記検索値及び前記参照値を用いて前記ポインタ値を算出し、
前記参照値に基づいて前記検索インデックスを参照して、値を設定する要素を一つ選択し、
前記選択された要素に、前記検索値及び前記算出されたポインタ値を設定し、
前記データブロック情報にエントリを追加し、
前記追加されたエントリに、前記算出されたポインタ値及び前記第1データブロックを格納することを特徴とする転送装置。 The transfer device according to claim 2, wherein
The transfer control unit,
When the identification information of the first data block and the response notifying the completion of storage of the first data block are received from the other transfer device that has transmitted the first data block, the search value and the reference value are used. Calculating the pointer value,
Referring to the search index based on the reference value, select one element to set a value,
Setting the search value and the calculated pointer value to the selected element,
Add an entry to the data block information,
The transfer device, wherein the calculated pointer value and the first data block are stored in the added entry.
前記複数の転送装置の各々は、 Each of the plurality of transfer devices is
プロセッサ、前記プロセッサに接続される主記憶装置、前記プロセッサに接続される副記憶装置、及び前記プロセッサに接続されるネットワークインタフェースを有し、 A processor, a main storage device connected to the processor, a sub storage device connected to the processor, and a network interface connected to the processor;
前記端末間のデータの転送処理を制御する転送制御部を有し、 A transfer control unit that controls a transfer process of data between the terminals,
前記副記憶装置は、データを分割することによって生成されるデータブロックであって、前記端末間で過去に送信されたデータブロックを管理するデータブロック情報を格納し、 The secondary storage device is a data block generated by dividing data, and stores data block information for managing a data block transmitted in the past between the terminals,
前記主記憶装置は、前記データブロック情報に格納される前記データブロックを検索するための検索インデックスと、前記データブロックを一時的に保存するバッファとを格納し、 The main storage device stores a search index for searching the data block stored in the data block information, and a buffer for temporarily storing the data block,
前記検索インデックスは、前記データブロックから算出された比較値及び前記データブロック情報に格納される前記データブロックへアクセスするためのポインタ値の組から構成される要素を複数含み、 The search index includes a plurality of elements configured from a set of a comparison value calculated from the data block and a pointer value for accessing the data block stored in the data block information,
前記データブロック情報は、前記ポインタ値及び前記データブロックから構成されるエントリを複数含み、 The data block information includes a plurality of entries composed of the pointer value and the data block,
前記複数の転送装置は、第1検索インデックス及び第1データブロック情報を保持する第1転送装置、並びに、第2検索インデックス及び第2データブロック情報を保持する第2転送装置を含み、 The plurality of transfer devices include a first transfer device that holds a first search index and first data block information, and a second transfer device that holds a second search index and second data block information,
前記第1転送装置は、 The first transfer device is
前記第1転送装置に接続する端末から送信データを受信した場合、前記送信データから前記データブロックを生成するための分割処理を実行し、 When transmission data is received from the terminal connected to the first transfer device, a division process for generating the data block from the transmission data is executed,
前記分割処理によって生成された第1データブロックから、前記検索インデックスを参照するための検索値と参照値を算出し、 Calculating a search value and a reference value for referring to the search index from the first data block generated by the division processing,
前記参照値に基づいて、前記第1検索インデックスに含まれる複数の要素の中から参照する少なくとも一つの要素を特定し、 Specifying at least one element to be referenced from among a plurality of elements included in the first search index based on the reference value,
前記特定された少なくとも一つの要素に含まれる前記比較値と前記検索値とを比較することによって、前記第1データブロックが前記第1データブロック情報に格納されているか否かを判定し、 Determining whether or not the first data block is stored in the first data block information by comparing the comparison value and the search value included in the specified at least one element,
前記第1データブロックが前記第1データブロック情報に格納されていると判定された場合、前記検索値及び前記参照値を前記第1データブロックの識別情報として前記第2転送装置に送信し、前記バッファに前記データブロックを保存し、前記第2転送装置から当該第1データブロックの転送完了を通知する応答を受信した後、前記バッファから前記第1データブロックを削除し、 When it is determined that the first data block is stored in the first data block information, the search value and the reference value are transmitted to the second transfer device as identification information of the first data block, Storing the data block in a buffer, deleting the first data block from the buffer after receiving a response notifying completion of transfer of the first data block from the second transfer device,
前記第1データブロックが前記第1データブロック情報に格納されていないと判定された場合、前記第1データブロックの識別情報及び前記第1データブロックを前記第2転送装置に送信し、前記バッファに前記データブロックを保存し、前記第2転送装置から当該第1データブロックの転送完了を通知する応答を受信した後、前記データブロック情報に前記第1データブロックを格納し、前記バッファから前記第1データブロックを削除し、 When it is determined that the first data block is not stored in the first data block information, the identification information of the first data block and the first data block are transmitted to the second transfer device and stored in the buffer. After storing the data block and receiving a response notifying completion of transfer of the first data block from the second transfer device, storing the first data block in the data block information, and storing the first data block from the buffer. Delete the data block,
前記第1データブロックの識別情報を送信した前記第2転送装置から、前記第1データブロックの送信を要求するデータブロック要求を受信した場合、前記バッファに保存される前記第1データブロックを前記第2転送装置に送信し、 When a data block request requesting transmission of the first data block is received from the second transfer device that has transmitted the identification information of the first data block, the first data block stored in the buffer is stored as the first data block. 2 Send to the transfer device,
前記第2転送装置は、 The second transfer device is
前記第1データブロックの識別情報を受信した場合、前記参照値に基づいて、前記第2検索インデックスに含まれる複数の要素の中から参照する少なくとも一つの要素を特定し、 When the identification information of the first data block is received, based on the reference value, at least one element to be referenced is identified from among a plurality of elements included in the second search index,
前記特定された少なくとも一つの要素に含まれる前記比較値と前記第1データブロックの識別情報に含まれる前記検索値とを比較することによって、前記第1データブロックが前記第2データブロック情報に格納されているか否かを判定し、 The first data block is stored in the second data block information by comparing the comparison value included in the identified at least one element with the search value included in the identification information of the first data block. Is determined,
前記第1データブロックが前記第2データブロック情報に格納されていると判定された場合、前記第2データブロック情報から前記第1データブロックを読み出して、前記第1データブロックを前記第2転送装置に接続される端末に送信し、前記第1データブロックの転送完了を通知する応答を前記第1転送装置に送信し、 When it is determined that the first data block is stored in the second data block information, the first data block is read from the second data block information, and the first data block is stored in the second transfer device. To a terminal connected to the first transfer device, and sends a response notifying completion of transfer of the first data block to the first transfer device,
前記第1データブロックが前記第2データブロック情報に格納されていないと判定された場合、前記データブロック要求を前記第1転送装置に送信することを特徴とするネットワークシステム。 The network system, wherein when it is determined that the first data block is not stored in the second data block information, the data block request is transmitted to the first transfer device.
前記第1転送装置は、 The first transfer device is
第1ハッシュ関数及び第2ハッシュ関数を保持し、 Holding a first hash function and a second hash function,
前記第1ハッシュ関数及び前記第1データブロックを用いて前記参照値を算出し、 Calculating the reference value using the first hash function and the first data block,
前記第2ハッシュ関数及び前記第1データブロックを用いて前記検索値を算出し、 Calculating the search value using the second hash function and the first data block,
前記検索値が前記比較値と一致する場合、前記第1データブロックが前記データブロック情報に格納されると判定することを特徴とするネットワークシステム。 The network system, wherein when the search value matches the comparison value, it is determined that the first data block is stored in the data block information.
前記第1転送装置は、 The first transfer device is
前記第1データブロックの識別情報及び前記第1データブロックを送信した前記第2転送装置から当該第1データブロックの格納完了を通知する応答を受信した場合、前記検索値及び前記参照値を用いて前記ポインタ値を算出し、 When the identification information of the first data block and the response notifying the completion of the storage of the first data block are received from the second transfer device which has transmitted the first data block, the search value and the reference value are used. Calculating the pointer value,
前記参照値に基づいて前記検索インデックスを参照して、値を設定する要素を一つ選択し、 Referring to the search index based on the reference value, select one element to set a value,
前記選択された要素に、前記検索値及び前記算出されたポインタ値を設定し、 Setting the search value and the calculated pointer value to the selected element,
前記データブロック情報にエントリを追加し、 Add an entry to the data block information,
前記追加されたエントリに、前記算出されたポインタ値及び前記第1データブロックを格納することを特徴とするネットワークシステム。 The network system, wherein the calculated pointer value and the first data block are stored in the added entry.
前記第2転送装置は、 The second transfer device is
前記第1データブロック及び前記第1データブロックの識別情報を受信した場合、前記検索値及び前記参照値を用いて前記ポインタ値を算出し、 When the first data block and the identification information of the first data block are received, the pointer value is calculated using the search value and the reference value,
前記参照値に基づいて前記検索インデックスを参照して、値を設定する要素を選択し、 Referring to the search index based on the reference value, select the element to set the value,
前記選択された要素に、前記検索値及び前記算出されたポインタ値を設定し、 Setting the search value and the calculated pointer value to the selected element,
前記データブロック情報にエントリを追加し、 Add an entry to the data block information,
前記追加されたエントリに、前記算出されたポインタ値及び前記第1データブロックを格納することを特徴とするネットワークシステム。 The network system, wherein the calculated pointer value and the first data block are stored in the added entry.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2016/074632 WO2018037495A1 (en) | 2016-08-24 | 2016-08-24 | Transfer device and network system |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2018037495A1 JPWO2018037495A1 (en) | 2019-01-10 |
JP6730437B2 true JP6730437B2 (en) | 2020-07-29 |
Family
ID=61246648
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018535971A Active JP6730437B2 (en) | 2016-08-24 | 2016-08-24 | Transfer device and network system |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP6730437B2 (en) |
WO (1) | WO2018037495A1 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108809514B (en) | 2018-04-23 | 2021-01-12 | 华为技术有限公司 | Data transmission method and related equipment |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004096692A (en) * | 2002-09-04 | 2004-03-25 | Matsushita Electric Ind Co Ltd | Apparatus and method for variable length coding by hash |
US7120666B2 (en) * | 2002-10-30 | 2006-10-10 | Riverbed Technology, Inc. | Transaction accelerator for client-server communication systems |
WO2016121024A1 (en) * | 2015-01-28 | 2016-08-04 | 富士通株式会社 | Communication method, program, and communication device |
-
2016
- 2016-08-24 JP JP2018535971A patent/JP6730437B2/en active Active
- 2016-08-24 WO PCT/JP2016/074632 patent/WO2018037495A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2018037495A1 (en) | 2018-03-01 |
JPWO2018037495A1 (en) | 2019-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20170185326A1 (en) | Consistent transition from asynchronous to synchronous replication in hash-based storage systems | |
EP3125501B1 (en) | File synchronization method, server, and terminal | |
CN103502926A (en) | Extent-based storage architecture | |
CN103729470A (en) | Secure storage method based on different cloud storage ends | |
EP2960800B1 (en) | Wireless access device and wireless access system | |
CN106331153B (en) | A kind of filter method of service request, apparatus and system | |
EP3316150A1 (en) | Method and apparatus for file compaction in key-value storage system | |
CN111130822B (en) | Communication method, device, system and computer readable storage medium | |
CA2941163C (en) | Data processing method and apparatus | |
WO2016202222A1 (en) | Access method and device for random access memories, control chip and storage medium | |
JP6268116B2 (en) | Data processing apparatus, data processing method, and computer program | |
CN106569963A (en) | Buffering method and buffering device | |
JP6164042B2 (en) | Relay device, relay method, relay program, and relay system | |
CN104933054B (en) | The URL storage methods and device of cache resource file, cache server | |
JP6730437B2 (en) | Transfer device and network system | |
CN114610679A (en) | Storage device, data storage method thereof and cloud storage system | |
CN109417507A (en) | The message of section retards accesses | |
JP5941969B2 (en) | Data transmission apparatus and method | |
US20160085683A1 (en) | Data receiving device and data receiving method | |
CN114338510A (en) | Data forwarding method and system with separated control and forwarding | |
US10185783B2 (en) | Data processing device, data processing method, and non-transitory computer readable medium | |
JP6851350B2 (en) | Storage system and storage control method | |
CN109726144B (en) | Data message processing method and device | |
JP2018511131A (en) | Hierarchical cost-based caching for online media | |
CN107526530B (en) | Data processing method and device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A529 | Written submission of copy of amendment under article 34 pct |
Free format text: JAPANESE INTERMEDIATE CODE: A5211 Effective date: 20180906 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20180906 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20191119 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200116 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20200616 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20200702 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6730437 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |