JP6730437B2 - Transfer device and network system - Google Patents

Transfer device and network system Download PDF

Info

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
Application number
JP2018535971A
Other languages
Japanese (ja)
Other versions
JPWO2018037495A1 (en
Inventor
直輝 谷田
直輝 谷田
大 明石
大 明石
藤嶋 堅三郎
堅三郎 藤嶋
雄次 對馬
雄次 對馬
悠樹 宮崎
悠樹 宮崎
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
Publication of JPWO2018037495A1 publication Critical patent/JPWO2018037495A1/en
Application granted granted Critical
Publication of JP6730437B2 publication Critical patent/JP6730437B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection 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 Patent Document 1 is known. Patent Document 1 describes that, when transferring communication data, the segments stored in the persistent segment store are replaced with the reference and transferred.

また、特許文献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."

米国特許出願公開第2013/0246508号明細書U.S. Patent Application Publication No. 2013/0246508 特表2016−517551号公報Japanese Patent Publication No. 2016-517551

しかし、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.

実施例1のネットワークシステムの構成例を示す図である。1 is a diagram showing a configuration example of a network system of Example 1. FIG. 実施例1の転送装置のハードウェア構成及びソフトウェア構成の一例を示す図である。FIG. 3 is a diagram showing an example of a hardware configuration and a software configuration of a transfer device of the first embodiment. 実施例1の転送装置のソフトウェア構成の論理的な接続関係を示す図である。5 is a diagram showing a logical connection relationship of a software configuration of the transfer device according to the first embodiment. FIG. 実施例1の転送装置がLANを介して送受信するTCPパケットのフォーマットの一例を示す図である。FIG. 3 is a diagram showing an example of a format of a TCP packet which the transfer device according to the first embodiment sends and receives via a LAN. 実施例1の転送装置がWANを介して送受信するTCPパケットのフォーマットの一例を示す図である。FIG. 5 is a diagram showing an example of a format of a TCP packet transmitted and received by the transfer device of the first embodiment via the WAN. 実施例1のフロー情報の一例を示す図である。FIG. 8 is a diagram showing an example of flow information of the first embodiment. 実施例1の送信検索インデックスの一例を示す図である。FIG. 5 is a diagram showing an example of a transmission search index according to the first embodiment. 実施例1の送信データブロック情報の一例を示す図である。FIG. 6 is a diagram showing an example of transmission data block information according to the first embodiment. 実施例1のデータ転送処理の流れを説明するシーケンス図である。6 is a sequence diagram illustrating a flow of data transfer processing according to the first embodiment. FIG. 実施例1のデータ転送処理の流れを説明するシーケンス図である。6 is a sequence diagram illustrating a flow of data transfer processing according to the first embodiment. FIG. 実施例1のデータ転送処理の流れを説明するシーケンス図である。6 is a sequence diagram illustrating a flow of data transfer processing according to the first embodiment. FIG. 実施例1の転送制御部がLANからデータを受信した場合に実行する処理を説明するフローチャートである。6 is a flowchart illustrating a process executed when the transfer control unit according to the first embodiment receives data from a LAN. 実施例1の転送制御部がデータ分割部から応答を受け取った場合に実行する処理を説明するフローチャートである。6 is a flowchart illustrating a process executed by the transfer control unit according to the first embodiment when a response is received from the data dividing unit. 実施例1の転送制御部がタイマに設定された時間が経過した場合に実行する処理を説明するフローチャートである。6 is a flowchart illustrating a process executed by the transfer control unit according to the first embodiment when a time set in a timer has elapsed. 実施例1の転送制御部が他の転送装置から応答を受信した場合に実行する処理を説明するフローチャートである。7 is a flowchart illustrating a process executed by the transfer control unit according to the first embodiment when a response is received from another transfer device. 実施例1のデータ分割部が実行する処理を説明するフローチャートである。6 is a flowchart illustrating a process executed by the data dividing unit according to the first embodiment. 実施例1の重複排除部が転送制御部によって呼び出された場合に実行する処理を説明するフローチャートである。6 is a flowchart illustrating a process executed when the deduplication unit according to the first embodiment is called by the transfer control unit. 実施例1の重複排除部が転送制御部から更新指示を受け付けた場合に実行する処理を説明するフローチャートである。9 is a flowchart illustrating a process executed when the deduplication unit according to the first embodiment receives an update instruction from the transfer control unit. 実施例1の転送制御部がWANからデータを受信した場合に実行する処理を説明するフローチャートである。6 is a flowchart illustrating a process executed by the transfer control unit according to the first embodiment when data is received from a WAN. 実施例1の重複復元部が転送制御部によって呼び出された場合に実行する処理を説明するフローチャートである。7 is a flowchart illustrating a process executed when the duplication restoration unit according to the first embodiment is called by the transfer control unit. 実施例1の重複排除部が実行する処理の具体例を示す図である。FIG. 6 is a diagram illustrating a specific example of processing executed by a deduplication unit according to the first embodiment. 実施例2の転送装置のハードウェア構成及びソフトウェア構成の一例を示す図である。FIG. 9 is a diagram illustrating an example of a hardware configuration and a software configuration of a transfer device according to a second embodiment. 実施例2の転送装置のソフトウェア構成の論理的な接続関係を示す図である。FIG. 9 is a diagram showing a logical connection relationship of a software configuration of a transfer device according to a second embodiment. 実施例2のフロー情報の一例を示す図である。FIG. 9 is a diagram showing an example of flow information of Example 2; 実施例2のデータの分割方法の概念を示す図である。FIG. 10 is a diagram showing a concept of a data dividing method according to the second embodiment. 実施例2の副検索インデックスの一例を示す図である。FIG. 9 is a diagram showing an example of a sub-search index of the second embodiment. 実施例2の転送制御部がLANからデータを受信した場合に実行する処理を説明するフローチャートである。11 is a flowchart illustrating a process executed by the transfer control unit according to the second embodiment when data is received from a LAN. 実施例2の重複排除部が転送制御部から副データブロックの検出指示を受け付けた場合に実行する処理を説明するフローチャートである。10 is a flowchart illustrating a process executed when the deduplication unit according to the second embodiment receives a sub data block detection instruction from the transfer control unit. 実施例2の重複排除部が転送制御部によって呼び出された場合に実行する処理を説明するフローチャートである。9 is a flowchart illustrating a process executed when the deduplication unit according to the second embodiment is called by the transfer control unit.

以下、添付図面を参照して本発明の実施例を説明する。各図において共通の構成については同一の参照符号が付されている。 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 terminals 100, a plurality of transfer devices 110, and a network connecting the devices. The present invention is not limited to the number of devices and networks included in the network system.

端末100及び転送装置110は、LAN(Local Area Network)140を介して互いに接続される。また、複数の転送装置110は、WAN(Wide Area Network)を介して互いに接続される。各ネットワークの接続方式は、無線及び有線のいずれもよい。LAN140及びWAN120には、中継装置130が一つ以上含まれる。 The terminal 100 and the transfer device 110 are connected to each other via a LAN (Local Area Network) 140. Further, the plurality of transfer devices 110 are connected to each other via a WAN (Wide Area Network). The connection method of each network may be wireless or wired. One or more relay devices 130 are included in the LAN 140 and the WAN 120.

なお、各装置を接続するネットワークの種別に限定されず、専用回線及びインターネット等のネットワークでもよい。また、端末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 terminal 100 and the transfer device 110 may be directly connected. The plurality of transfer devices 110 may be directly connected.

図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 LAN 140 and the WAN 120, and may be a switch, a router, a gateway device, or the like. The relay device 130 has a calculation device, a main storage device, and a network interface, which are not shown.

転送装置110は、端末100間のTCP通信の終端及び中継を行う装置であり、端末100間で送受信されるデータを転送する。本実施例の転送装置110は、フロー単位で通信を制御するものとする。 The transfer device 110 is a device that terminates and relays TCP communication between the terminals 100, and transfers data transmitted and received between the terminals 100. The transfer device 110 of the present embodiment controls communication on a flow-by-flow basis.

端末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 TCP communication 150 between the terminal 100-1 and the terminal 100-2, the transfer device 110-1 terminates the TCP communication 150 and establishes the TCP communication 151 with the terminal 100-1 via the LAN 140-1. To do. In the TCP communication 151, the transfer device 110-1 uses the IP address and port number used by the terminal 100-2 in the TCP communication 150 as the IP address and port number of the transfer device 110-1. Similarly, in the TCP communication 150, the transfer device 110-2 terminates the TCP communication 150 and performs TCP communication 153 with the terminal 100-2 via the LAN 140-2. In the TCP communication 153, the transfer device 110-2 uses the IP address and port number used by the terminal 100-1 in the TCP communication 150 as the IP address and port number of the transfer device 110-2.

また、転送装置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 perform TCP communication 152 via the WAN 120. In the TCP communication 152, the transfer device 110-1 uses the IP address and port number of the terminal 100-1, and the transfer device 110-2 uses the IP address and port number of the terminal 100-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 TCP communication 150 in which the terminals 100 directly communicate with each other.

また、本実施例の転送装置110は、重複したデータの転送を排除するように通信を制御する。具体的には、転送装置110は、送信したデータ及び受信したデータを格納する情報を管理する。転送元の端末100から過去に送信されたデータと同一のデータを受信した場合、転送装置110は当該データの識別情報を送信する。データの識別情報を受信した場合、転送装置110は、当該データの識別情報に一致するデータを情報から読み出し、転送先の端末100に読み出されたデータを送信する。 Further, the transfer device 110 of the present embodiment controls communication so as to eliminate transfer of duplicated data. Specifically, the transfer device 110 manages information that stores transmitted data and received data. When the same data as the data transmitted in the past is received from the transfer source terminal 100, the transfer device 110 transmits the identification information of the data. When the identification information of the data is received, the transfer device 110 reads the data that matches the identification information of the data from the information, and transmits the read data to the terminal 100 of the transfer destination.

前述したようなデータの転送制御を行うことによって、WAN120へのデータ転送量が削減される。したがって、通信コストの削減及び端末100間の通信速度の高速化を実現できる。 By controlling the transfer of data as described above, the amount of data transferred to the WAN 120 is reduced. Therefore, it is possible to reduce the communication cost and increase the communication speed between the terminals 100.

以下の説明では、ネットワークシステム内で過去に送信されたデータと同一のデータの転送を排除する処理を「重複排除」とも記載する。また、以下の説明では、ネットワークシステム内で過去に送信されたデータを転送装置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 transfer device 110 is also referred to as “duplication restoration”.

図2は、実施例1の転送装置110のハードウェア構成及びソフトウェア構成の一例を示す図である。図3は、実施例1の転送装置110のソフトウェア構成の論理的な接続関係を示す図である。 FIG. 2 is a diagram illustrating an example of a hardware configuration and a software configuration of the transfer device 110 according to the first embodiment. FIG. 3 is a diagram illustrating a logical connection relationship of the software configuration of the transfer device 110 according to the first embodiment.

転送装置110は、演算装置201、主記憶装置202、二次記憶装置203、及び複数のネットワークインタフェース204を有する。転送装置110が有するハードウェアは、システムバス205を介して互いに接続され、システムバス205を介して互いに通信を行う。 The transfer device 110 includes an arithmetic device 201, a main storage device 202, a secondary storage device 203, and a plurality of network interfaces 204. The hardware included in the transfer device 110 is connected to each other via the system bus 205 and communicates with each other via the system bus 205.

なお、転送装置110が有する各ハードウェアの数は二つ以上でもよい。また、各ハードウェアは、複数のシステムバス205を介して、互いに接続されてもよい。また、各ハードウェアは、直接接続されてもよい。 The number of pieces of hardware included in the transfer device 110 may be two or more. Further, each hardware may be connected to each other via a plurality of system buses 205. Further, each hardware may be directly connected.

なお、前述したハードウェアは、仮想的なハードウェアを用いて実現してもよい。例えば、一つのネットワークインタフェース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 transfer device 110 may include an input/output device. The input/output device includes a keyboard, a mouse, a touch panel, a display and the like.

演算装置201は、主記憶装置202に格納されるプログラムを実行する。演算装置201は、CPU(Central Processing Unit)及びGPU(Graphics Processing Unit)等が考えられる。演算装置201がプログラムを実行することによって転送装置110が有する機能を実現できる。以下の説明では、機能部(モジュール)を主語に処理を説明する場合、演算装置201が当該機能部を実現するプログラムを実行していることを示す。 The arithmetic unit 201 executes a program stored in the main storage device 202. The arithmetic device 201 may be a CPU (Central Processing Unit), a GPU (Graphics Processing Unit), or the like. The functions of the transfer device 110 can be realized by the arithmetic device 201 executing the program. In the following description, when a process is described using a functional unit (module) as a subject, it indicates that the arithmetic device 201 is executing a program that implements the functional unit.

主記憶装置202は、演算装置201が実行するプログラム及び当該プログラムによって使用される情報を格納する。主記憶装置202は、また、プログラムが使用するワークエリア及びバッファ等の一時記憶領域を含む。主記憶装置202は、メモリ等が考えられる。 The main storage device 202 stores a program executed by the arithmetic device 201 and information used by the program. The main storage device 202 also includes a temporary storage area such as a work area and a buffer used by the program. The main storage device 202 may be a memory or the like.

二次記憶装置203は、永続的にデータを格納する。また、二次記憶装置203は、主記憶装置202に格納できないデータを格納する一時記憶領域を含む。二次記憶装置203は、HDD(Hard Disk Drive)及びSSD(Solid State Drive)等が考えられる。 The secondary storage device 203 stores data permanently. The secondary storage device 203 also includes a temporary storage area for storing data that cannot be stored in the main storage device 202. The secondary storage device 203 may be an HDD (Hard Disk Drive), an SSD (Solid State Drive), or the like.

主記憶装置202に格納されるプログラム及び情報は、二次記憶装置203に格納されてもよい。この場合、演算装置201は、二次記憶装置203から、プログラム及び情報を読み出し、主記憶装置202にプログラム及び情報をロードする。 The programs and information stored in the main storage device 202 may be stored in the secondary storage device 203. In this case, the arithmetic device 201 reads the program and information from the secondary storage device 203 and loads the program and information into the main storage device 202.

ネットワークインタフェース204は、ネットワークと接続するためのインタフェースである。本実施例では、転送装置110は、ネットワークインタフェース204−1を介してLAN140と接続し、また、ネットワークインタフェース204−2を介してWAN120と接続する。 The network interface 204 is an interface for connecting to a network. In this embodiment, the transfer device 110 is connected to the LAN 140 via the network interface 204-1 and is connected to the WAN 120 via the network interface 204-2.

ここで、主記憶装置202及び二次記憶装置203に格納されるプログラム及び情報に吹いて説明する。 Here, the programs and information stored in the main storage device 202 and the secondary storage device 203 will be described.

主記憶装置202は、プログラムとして、重複排除部211、重複復元部212、転送制御部213、プロトコル処理部214、及びデータ分割部215を実現するプログラムを格納する。主記憶装置202は、情報として、フロー情報217、送信検索インデックス218、及び受信検索インデックス219を格納する。また、主記憶装置202は、一時記憶領域としてデータブロックバッファ216を含む。 The main storage device 202 stores, as programs, programs that implement the deduplication unit 211, the duplication restoration unit 212, the transfer control unit 213, the protocol processing unit 214, and the data division unit 215. The main storage device 202 stores the flow information 217, the transmission search index 218, and the reception search index 219 as information. The main storage device 202 also includes a data block buffer 216 as a temporary storage area.

二次記憶装置203は、送信データブロック情報220及び受信データブロック情報221を格納する。 The secondary storage device 203 stores the transmission data block information 220 and the reception data block information 221.

フロー情報217は、フローを管理するための情報である。フロー情報217の詳細は、図6を用いて説明する。 The flow information 217 is information for managing flows. Details of the flow information 217 will be described with reference to FIG.

送信データブロック情報220は、重複排除を行う場合に使用されるデータブロックを格納する。受信データブロック情報221は、重複復元を行う場合に使用されるデータブロックを格納する。送信データブロック情報220及び受信データブロック情報221の詳細は、図8を用いて説明する。 The transmission data block information 220 stores a data block used when deduplication is performed. The received data block information 221 stores a data block used when duplication restoration is performed. Details of the transmission data block information 220 and the reception data block information 221 will be described with reference to FIG.

送信検索インデックス218は、送信データブロック情報220に格納されるデータブロックを検索する場合に使用されるインデックスである。受信検索インデックス219は、受信データブロック情報221に格納されるデータブロックを検索する場合に使用されるインデックスである。送信検索インデックス218及び受信検索インデックス219の詳細は、図7を用いて説明する。 The transmission search index 218 is an index used when searching for a data block stored in the transmission data block information 220. The reception search index 219 is an index used when searching for a data block stored in the reception data block information 221. Details of the transmission search index 218 and the reception search index 219 will be described with reference to FIG. 7.

データブロックバッファ216は、データブロックを一時的に格納する記憶領域である。 The data block buffer 216 is a storage area for temporarily storing data blocks.

転送制御部213は、転送装置110全体を制御する。転送制御部213は、内部変数として更新フラグを保持する。転送制御部213は、ネットワークインタフェース204−1を介してLAN140からデータを受信した場合、重複排除部211及びデータ分割部215等と連携して、重複排除を行い、ネットワークインタフェース204−2を介してWAN120にデータを転送する。転送制御部213は、ネットワークインタフェース204−2を介してWAN120からデータを受信した場合、重複復元部212等と連携して、重複復元を行い、ネットワークインタフェース204−1を介してLAN140にデータを転送する。転送制御部213が実行する処理の詳細は後述する。 The transfer control unit 213 controls the entire transfer device 110. The transfer control unit 213 holds the update flag as an internal variable. When the transfer control unit 213 receives data from the LAN 140 via the network interface 204-1, the transfer control unit 213 cooperates with the deduplication unit 211, the data division unit 215, and the like to perform deduplication, and via the network interface 204-2. Transfer the data to WAN 120. When the transfer control unit 213 receives data from the WAN 120 via the network interface 204-2, the transfer control unit 213 cooperates with the duplication restoration unit 212 or the like to perform duplication restoration and transfers the data to the LAN 140 via the network interface 204-1. To do. Details of the processing executed by the transfer control unit 213 will be described later.

プロトコル処理部214は、ネットワークインタフェース204を管理し、所定の通信プロトコルに基づく通信処理を実行する。本実施例の通信プロトコルは、TCP/IPプロトコルである。また、プロトコル処理部214は、アプリケーション等に対して通信を行うためのAPI(Application Programming Interface)を提供する。例えば、プロトコル処理部214は、送信アドレス及び送信ポート、並びに受信アドレス及び受信ポートを転送制御部213に通知する。また、プロトコル処理部214は、ネットワークインタフェース204を介してデータを受信した場合、転送制御部213にデータを出力し、転送制御部213からデータを受信した場合、ネットワークインタフェース204を介してデータをネットワークに送信する。 The protocol processing unit 214 manages the network interface 204 and executes communication processing based on a predetermined communication protocol. The communication protocol of this embodiment is the TCP/IP protocol. Further, the protocol processing unit 214 provides an API (Application Programming Interface) for communicating with an application or the like. For example, the protocol processing unit 214 notifies the transfer control unit 213 of the transmission address and the transmission port, and the reception address and the reception port. Further, when the protocol processing unit 214 receives data via the network interface 204, it outputs the data to the transfer control unit 213, and when the data is received from the transfer control unit 213, the protocol processing unit 214 sends the data via the network interface 204 to the network. Send to.

なお、プロトコル処理部214は、OS(Operating System)に含まれるTCP/IP機能として実現されてもよいし、専用のプログラムとして実現されてもよい。 The protocol processing unit 214 may be realized as a TCP/IP function included in an OS (Operating System) or may be realized as a dedicated program.

データ分割部215は、所定の分割方法(プロトコル)に基づいて、データを分割することによって複数のデータブロックを生成する。データ分割部215が実行する処理の詳細は後述する。 The data division unit 215 generates a plurality of data blocks by dividing the data based on a predetermined division method (protocol). Details of the processing executed by the data dividing unit 215 will be described later.

重複排除部211は、送信検索インデックス218を用いて重複排除を行う。また、重複排除部211は、送信検索インデックス218及び送信データブロック情報220を管理する。重複排除部211が実行する処理の詳細は後述する。 The deduplication unit 211 uses the transmission search index 218 to perform deduplication. The deduplication unit 211 also manages the transmission search index 218 and the transmission data block information 220. Details of the processing executed by the deduplication unit 211 will be described later.

重複復元部212は、受信検索インデックス219を用いて重複復元を行う。また、重複復元部212は、受信検索インデックス219及び受信データブロック情報221を管理する。重複復元部212が実行する処理の詳細は後述する。 The duplication restoration unit 212 performs duplication restoration using the reception search index 219. Further, the duplication restoration unit 212 manages the reception search index 219 and the reception data block information 221. Details of the processing executed by the duplication restoration unit 212 will be described later.

なお、重複排除部211は、第1ハッシュ関数及び第2ハッシュ関数を保持する。ハッシュ関数は、例えば、md5及びsha1等が考えられる。 The deduplication unit 211 holds the first hash function and the second hash function. As the hash function, for example, md5 and sha1 can be considered.

なお、前述した各機能部は、複数の機能部を一つの機能部に集約してもよいし、また、一つの機能部を複数の機能部に分割してもよい。例えば、重複排除部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 deduplication unit 211, the duplication restoration unit 212, and the data division unit 215 may be integrated in the transfer control unit 213.

なお、前述した各機能部は、ソフトウェアとして実現されているが、こられの機能の一部又は全てを演算装置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 arithmetic unit 201 and the network interface 204.

本実施例では、送信検索インデックス218及び受信検索インデックス219を主記憶装置202に格納することによって、データブロックの検索処理を高速に行うことができる。また、後述するように、送信検索インデックス218及び受信検索インデックス219のデータ構造を工夫することによって、検索処理の高速化及び検索精度の向上を実現できる。 In this embodiment, by storing the transmission search index 218 and the reception search index 219 in the main storage device 202, the data block search processing can be performed at high speed. Further, as will be described later, by devising the data structure of the transmission search index 218 and the reception search index 219, it is possible to realize the speedup of the search process and the improvement of the search accuracy.

次に、図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 packet 400 transmitted and received by the transfer device 110 according to the first embodiment via the LAN 140.

TCPパケット400は、MACヘッダ410、IPヘッダ420、IPオプションヘッダ430、TCPヘッダ440、TCPオプションヘッダ450、及びTCPペイロード460を含む。 The TCP packet 400 includes a MAC header 410, an IP header 420, an IP option header 430, a TCP header 440, a TCP option header 450, and a TCP payload 460.

MACヘッダ410は、DMAC411、SMAC412、TPID413、TCI414、及びType415を含む。DMAC411は、宛先MACアドレスを表す。SMAC412は、送信元MACアドレスを表す。TPID413は、タグ付きフレームであること及びタグの種類を表す。TCI414は、タグの情報を表す。Type415は、MACフレームタイプを表す。 The MAC header 410 includes a DMAC 411, a SMAC 412, a TPID 413, a TCI 414, and a Type 415. The DMAC 411 represents the destination MAC address. The SMAC 412 represents the source MAC address. The TPID 413 represents that the frame is a tagged frame and the tag type. The TCI 414 represents tag information. Type 415 represents a MAC frame type.

TCI414は、さらに、PCP416、CFI417、及びVID418を含む。PCP416は優先度を表す。CFI417は、MACアドレスが正規フォーマットであるかを表す。VID418は、VLANのIDを表す。なお、VLANが使用されていないネットワークの場合、TPID413及びTCI414は存在しない。この場合、転送装置110は、VID418が「0」であるものとして処理を行う。 The TCI 414 further includes PCP 416, CFI 417, and VID 418. PCP416 represents a priority. The CFI 417 represents whether the MAC address is in a regular format. The VID 418 represents a VLAN ID. In the case of a network where VLAN is not used, the TPID 413 and TCI 414 do not exist. In this case, the transfer device 110 performs processing assuming that the VID 418 is “0”.

IPヘッダ420は、IP length421、protocol422、SIP423、及びDIP424を含む。IP length421は、MACヘッダ410を除くパケット長を表す。protocol422は、プロトコル番号を表す。SIP423は、送信元IPアドレスを表す。DIP424は、宛先IPアドレスを表す。 The IP header 420 includes an IP length 421, a protocol 422, a SIP 423, and a DIP 424. The IP length 421 represents the packet length excluding the MAC header 410. protocol 422 represents a protocol number. SIP423 represents a source IP address. DIP424 represents a destination IP address.

IPオプションヘッダ430は、0又は複数のIPオプション情報431を含む。 The IP option header 430 includes 0 or a plurality of IP option information 431.

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 header 440 is the src. port 441, dst. It includes a port 442, a SEQ 443, an ACK 444, a flag 445, a tcp hlen 446, and a win_size 447. src. The port 441 represents the transmission source port number. dst. The port 442 represents the destination port number. SEQ443 represents a transmission sequence number. The ACK 444 represents the reception sequence number. The flag 445 represents a TCP flag number. tcp hlen 446 represents the TCP header length. win_size 447 represents the advertisement window size notified to the opposite device.

TCPオプションヘッダ450は、0又は複数のオプションを含む。例えば、option kind451、option length452、及びオプション情報453等のオプションが含まれる。option kind451は、オプションの種別を表す。option length452は、オプション長を表す。オプション情報453は、オプションの種類に応じた情報を表す。 The TCP option header 450 includes 0 or more options. For example, options such as an option kind 451, an option length 452, and option information 453 are included. The option kind 451 represents the type of option. The option length 452 represents an option length. The option information 453 represents information according to the type of option.

図5は、実施例1の転送装置110がWAN120を介して送受信するTCPパケット500のフォーマットの一例を示す図である。 FIG. 5 is a diagram illustrating an example of a format of a TCP packet 500 transmitted and received by the transfer device 110 of the first embodiment via the WAN 120.

TCPパケット500は、TCPパケット400と同様にMACヘッダ410、IPヘッダ420、IPオプションヘッダ430、TCPヘッダ440、及びTCPオプションヘッダ450を含む。さらに、TCPパケット500は、符号化されたデータ部分に対応するDedupヘッダ510及びDedupペイロード520の組を一つ以上含む。 Like the TCP packet 400, the TCP packet 500 includes a MAC header 410, an IP header 420, an IP option header 430, a TCP header 440, and a TCP option header 450. Further, the TCP packet 500 includes one or more sets of the Dedupe header 510 and the Dedupe payload 520 corresponding to the encoded data portion.

TCPパケット500に含まれるMACヘッダ410、IPヘッダ420、TCPヘッダ440、及びTCPオプションヘッダ450は、TCPパケット400に含まれるものと同一である。TCPパケット500に含まれるIPオプションヘッダ430には、オプション情報の一つとしてDedup501を含む。Dedup501は、転送装置110によって重複排除が行われたパケットであることを表す。 The MAC header 410, the IP header 420, the TCP header 440, and the TCP option header 450 included in the TCP packet 500 are the same as those included in the TCP packet 400. The IP option header 430 included in the TCP packet 500 includes Dedupe 501 as one of the option information. Dedup 501 indicates that the packet has been deduplicated by the transfer device 110.

Dedupヘッダ510は、dedup.type511、dedup.data_len512、dedup.hash1 513、及びdedup.hash2 514を含む。Dedupヘッダ510に含まれる各情報のデータサイズは、一例であって、必要に応じてデータサイズを変更できる。 The Dedup header 510 includes the Dedup. type 511, dedup. data_len 512, dedup. hash1 513, and dedup. including hash2 514. The data size of each information included in the Dedup header 510 is an example, and the data size can be changed as necessary.

dedup.type511は、Dedupペイロード520の種類を表す。dedup.data_len512は、Dedupペイロード520の長さを表す。dedup.hash1 513及びdedup.hash2 514は、データブロックを検索するために用いるハッシュ値を表す。本実施例では、dedup.hash1 513及びdedup.hash2 514が、データブロックの識別情報として用いられる。 dedup. The type 511 represents the type of the Dedup payload 520. dedup. The data_len 512 represents the length of the Dedup payload 520. dedup. hash1 513 and dedup. hash2 514 represents a hash value used to search the data block. In this embodiment, dedup. hash1 513 and dedup. hash2 514 is used as the identification information of the data block.

なお、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 type 511. “1” indicates that the TCP packet 500 includes only the identification information of the data block. “2” indicates that the TCP packet 500 includes a data block and data block identification information. “3” indicates that the TCP packet 500 includes data that has not been divided.

Dedupペイロード520は、Dedup.type511の値に応じて、データブロック又はLAN140から受信したデータ等が格納される。なお、データブロックの識別情報を送信する場合、空のDedupペイロード520が付与されてもよいし、Dedupペイロード520が付与されなくてもよい。 The Dedup payload 520 is the Dedup. Depending on the value of type 511, a data block, data received from the LAN 140, or the like is stored. When transmitting the identification information of the data block, an empty Dedupa payload 520 may be added or the Dedupa payload 520 may not be added.

次に、図6、図7、及び図8を用いて、転送装置110が管理する情報等について説明する。 Next, information and the like managed by the transfer device 110 will be described with reference to FIGS. 6, 7, and 8.

図6は、実施例1のフロー情報217の一例を示す図である。 FIG. 6 is a diagram illustrating an example of the flow information 217 according to the first embodiment.

フロー情報217は、フローを管理する情報を格納するエントリを含む。エントリは、フローID601、VLAN602、LAN−IP603、WAN−IP604、LAN−PORT605、WAN−PORT606、バッファ607、及びタイマ608から構成される。 The flow information 217 includes an entry that stores information that manages a flow. The entry includes a flow ID 601, a VLAN 602, a LAN-IP 603, a WAN-IP 604, a LAN-PORT 605, a WAN-PORT 606, a buffer 607, and a timer 608.

フローID601は、フローを一意に識別するための識別情報である。VLAN602は、フローが属するVLANの識別情報である。LAN−IP603及びLAN−PORT605は、LAN140を介して接続される端末100のIPアドレス及びポート番号である。WAN−IP604及びWAN−PORT606は、WAN120を介して接続される端末100のIPアドレス及びポート番号である。バッファ607は、LAN140から受信したデータをWAN120に転送する場合に、一時的にデータを格納するための領域である。タイマ608は、データ転送に用いるタイマ値である。 The flow ID 601 is identification information for uniquely identifying a flow. The VLAN 602 is identification information of the VLAN to which the flow belongs. LAN-IP 603 and LAN-PORT 605 are the IP address and port number of the terminal 100 connected via the LAN 140. WAN-IP 604 and WAN-PORT 606 are the IP address and port number of the terminal 100 connected via the WAN 120. The buffer 607 is an area for temporarily storing data when the data received from the LAN 140 is transferred to the WAN 120. The timer 608 is a timer value used for data transfer.

図7は、実施例1の送信検索インデックス218の一例を示す図である。なお、受信検索インデックス219のデータ構造は、送信検索インデックス218と同一であるため、説明を省略する。 FIG. 7 is a diagram illustrating an example of the transmission search index 218 according to the first embodiment. Since the data structure of the reception search index 219 is the same as that of the transmission search index 218, the description thereof will be omitted.

送信検索インデックス218は、2次元配列のデータ構造である。図7では、N行4列の2次元配列となっている。なお、行及び列の数は一例であって、任意の値に設定できる。 The transmission search index 218 has a two-dimensional array data structure. In FIG. 7, it is a two-dimensional array having N rows and 4 columns. The number of rows and columns is an example, and can be set to any value.

2次元配列の一つの要素701には、ハッシュ値X及びポインタ値Pが含まれる。ハッシュ値Xは、ハッシュ関数にデータブロックを入力することによって算出されるハッシュ値である。ハッシュ値Xは、データブロックが送信データブロック情報220に格納されているか否かを判定する場合に使用される。ポインタ値は、送信データブロック情報220内のデータブロックをアクセスするための値である。ポインタ値には、後述するファイル名801の値が設定される。 One element 701 of the two-dimensional array includes a hash value X and a pointer value P. The hash value X is a hash value calculated by inputting a data block into the hash function. The hash value X is used when determining whether the data block is stored in the transmission data block information 220. The pointer value is a value for accessing the data block in the transmission data block information 220. The value of the file name 801 described later is set as the pointer value.

後述するように、重複排除部211は、二つのハッシュ関数を用いて、送信検索インデックス218を参照する。 As described later, the deduplication unit 211 refers to the transmission search index 218 using the two hash functions.

図8は、実施例1の送信データブロック情報220の一例を示す図である。なお、受信データブロック情報221のデータ構造は、送信データブロック情報220と同一であるため、説明を省略する。 FIG. 8 is a diagram illustrating an example of the transmission data block information 220 according to the first embodiment. The data structure of the reception data block information 221 is the same as that of the transmission data block information 220, and thus the description thereof is omitted.

送信データブロック情報220は、データブロックを格納するエントリを含む。エントリは、ファイル名801及びデータブロック802から構成される。本実施例では、個々のデータブロックがファイルとして管理される。 The transmission data block information 220 includes an entry that stores a data block. The entry includes a file name 801 and a data block 802. In this embodiment, each data block is managed as a file.

ファイル名801は、データブロックを管理するファイルの識別情報である。本実施例では、ファイルの識別情報に数値を用いる。データブロック802は、データブロックそのものである。 The file name 801 is identification information of a file that manages a data block. In this embodiment, a numerical value is used as the identification information of the file. The data block 802 is the data block itself.

次に、図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 transmission search index 218 based on the hash value of the data block, and determines whether the data block is stored in the transmission data block information 220 (step S903).

データブロックは送信データブロック情報220に格納されているため、転送装置110−1は、WAN120を介して、端末100−2にデータブロックの識別情報を送信する(ステップS904)。このとき、転送装置110−1は、データブロックバッファ216にデータブロックを格納する。 Since the data block is stored in the transmission data block information 220, the transfer device 110-1 transmits the identification information of the data block to the terminal 100-2 via the WAN 120 (step S904). At this time, the transfer device 110-1 stores the data block in the data block buffer 216.

転送装置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 reception search index 219 based on the identification information of the data block, and determines whether the data block is stored in the reception data block information 221. Yes (step S905).

データブロックは受信データブロック情報221に格納されているため、転送装置110−2は、WAN120を介して、転送装置110−1に復元確認通知を送信する(ステップS906)。なお、復元確認通知は、データブロックの転送が完了した旨を示す通知である。 Since the data block is stored in the received data block information 221, the transfer device 110-2 transmits a restoration confirmation notification to the transfer device 110-1 via the WAN 120 (step S906). The restoration confirmation notification is a notification indicating that the transfer of the data block has been completed.

また、転送装置110−2は、データブロックの識別情報に基づいて受信データブロック情報221からデータブロックを取得し、LAN140−2を介して、端末100−2に取得されたデータブロックを端末100−1から送信されたデータとして送信する(ステップS907)。 Also, the transfer device 110-2 acquires a data block from the received data block information 221 based on the identification information of the data block, and transfers the acquired data block to the terminal 100-2 via the LAN 140-2. It is transmitted as the data transmitted from 1 (step S907).

転送装置110−1は、WAN120を介して、復元確認通知を受信した場合、データブロックバッファ216に格納されるデータブロックを削除する(ステップS908)。 When receiving the restoration confirmation notification via the WAN 120, the transfer device 110-1 deletes the data block stored in the data block buffer 216 (step S908).

なお、端末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 TCP packet 500 including one or more sets of the Dedupe header 510 and the Dedupe payload 520 one or more times. When transmitting the data block, the transfer device 110-2 may transmit one TCP packet 400 including a plurality of data blocks, or may transmit the TCP packet 400 including one data block a plurality of times. Good.

図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 transmission search index 218 based on the hash value of the data block and determines whether the data block is stored in the transmission data block information 220 (step S913).

データブロックは送信データブロック情報220に格納されていないため、転送装置110−1は、WAN120を介して、転送装置110−2にデータブロックを送信する(ステップS914)。 Since the data block is not stored in the transmission data block information 220, the transfer device 110-1 transmits the data block to the transfer device 110-2 via the WAN 120 (step S914).

転送装置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 WAN 120, the transfer device 110-1 stores the data block stored in the data block buffer 216 in the transmission data block information 220 (step S918).

図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 reception search index 219 based on the identification information of the data block, and determines whether the data block is stored in the reception data block information 221. Yes (step S925).

データブロックは受信データブロック情報221に格納されていないため、転送装置110−2は、WAN120を介して、データブロック要求を送信する(ステップS926)。 Since the data block is not stored in the received data block information 221, the transfer device 110-2 transmits the data block request via the WAN 120 (step S926).

転送装置110−1は、WAN120を介して、データブロック要求を受信した場合、WAN120を介して、転送装置110−2にデータブロックバッファ216に格納されるデータブロックを送信する(ステップS927)。 When the transfer device 110-1 receives the data block request via the WAN 120, the transfer device 110-1 transmits the data block stored in the data block buffer 216 to the transfer device 110-2 via the WAN 120 (step S927).

転送装置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 WAN 120, the transfer device 110-2 stores the data block in the received data block information 221 (step S928). The transfer device 110-2 transmits a restoration confirmation notification to the transfer device 110-1 via the WAN 120 (step S929). 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 S930).

転送装置110−1は、WAN120を介して、復元確認通知を受信した場合、データブロックバッファ216に格納されるデータブロックを削除する(ステップS931)。 When receiving the restoration confirmation notification via the WAN 120, the transfer device 110-1 deletes the data block stored in the data block buffer 216 (step S931).

転送装置110−1は、復元確認通知を受信するまで、データブロックバッファ216にデータブロックを格納するため、転送装置110−2からのデータブロック要求を受信した場合、即座に転送装置110−2にデータブロックを送信できる。 Since the transfer device 110-1 stores the data block in the data block buffer 216 until the restoration confirmation notification is received, when the data block request from the transfer device 110-2 is received, the transfer device 110-1 immediately notifies the transfer device 110-2. Data blocks can be sent.

また、図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 information 220 after receiving the restoration confirmation notification. If the storage order of the data blocks in the transmission data block information 220 is reversed, there is a possibility that the data blocks are not registered in the transfer device 110-2. Therefore, the data transfer process as shown in FIG. 9C may occur. On the other hand, by adopting the processing procedure as shown in FIG. 9B, it is possible to reduce the possibility that the data transfer processing as shown in FIG. 9C will occur. In the data transfer process shown in FIG. 9C, the number of times of communication between the transfer devices 110 increases, so that communication delay occurs. Therefore, by preventing the occurrence of the data transfer process as shown in FIG. 9C, it is possible to improve the communication speed, communication quality, etc. of the entire network system.

次に、図10から図18を用いて、転送装置110の各機能部が実行する処理の詳細を説明する。 Next, the details of the processing executed by each functional unit of the transfer device 110 will be described with reference to FIGS. 10 to 18.

図10は、実施例1の転送制御部213がLAN140からデータを受信した場合に実行する処理を説明するフローチャートである。 FIG. 10 is a flowchart illustrating a process executed when the transfer control unit 213 according to the first embodiment receives data from the LAN 140.

転送制御部213は、プロトコル処理部214から、LAN140から受信したデータを受け取った場合(ステップS1001)、フロー情報217にデータを格納する(ステップS1002)。 When receiving the data received from the LAN 140 from the protocol processing unit 214 (step S1001), the transfer control unit 213 stores the data in the flow information 217 (step S1002).

具体的には、転送制御部213は、プロトコル処理部214から受け取ったIPアドレス、ポート番号、及びVLANのID等に基づいてフロー情報217を参照し、フローに対応するエントリを特定する。転送制御部213は、特定されたエントリのバッファ607に、受け取ったデータ(TCPペイロード460)を格納する。なお、バッファ607にデータが格納されている場合、転送制御部213は、当該データの後方に受け取ったデータを追加する。 Specifically, the transfer control unit 213 refers to the flow information 217 based on the IP address, the port number, the VLAN ID, and the like received from the protocol processing unit 214, and identifies the entry corresponding to the flow. The transfer control unit 213 stores the received data (TCP payload 460) in the buffer 607 of the specified entry. When the data is stored in the buffer 607, the transfer control unit 213 adds the received data after the data.

次に、転送制御部213は、データ分割部215を呼び出す(ステップS1003)。このとき、転送制御部213は、受け取ったデータをデータ分割部215に出力する。その後、転送制御部213は、処理を終了する。 Next, the transfer control unit 213 calls the data division unit 215 (step S1003). At this time, the transfer control unit 213 outputs the received data to the data dividing unit 215. After that, the transfer control unit 213 ends the process.

図11は、実施例1の転送制御部213がデータ分割部215から応答を受け取った場合に実行する処理を説明するフローチャートである。 FIG. 11 is a flowchart illustrating a process executed when the transfer control unit 213 according to the first embodiment receives a response from the data division unit 215.

転送制御部213は、データ分割部215から受け取った応答が分割不可通知であるか否かを判定する(ステップS1101)。 The transfer control unit 213 determines whether or not the response received from the data division unit 215 is an undividable notification (step S1101).

データ分割部215から受け取った応答が分割不可通知であると判定された場合、転送制御部213は、ステップS1106に進む。 When it is determined that the response received from the data division unit 215 is the division impossible notification, the transfer control unit 213 proceeds to step S1106.

データ分割部215から受け取った応答が分割不可通知ではないと判定された場合、すなわち、データ分割部215からデータブロックを受け取った場合、転送制御部213は、ステップS1002において特定されたエントリのバッファ607に格納されるデータから当該データブロックを削除する(ステップS1102)。 When it is determined that the response received from the data division unit 215 is not the division impossible notification, that is, when the data block is received from the data division unit 215, the transfer control unit 213 determines the buffer 607 of the entry specified in step S1002. The data block is deleted from the data stored in (step S1102).

具体的には、転送制御部213は、ステップS1002において特定されたエントリのバッファ607に格納されるデータからデータブロックに一致するデータ列を削除する。 Specifically, the transfer control unit 213 deletes the data string that matches the data block from the data stored in the buffer 607 of the entry specified in step S1002.

次に、転送制御部213は、重複排除部211を呼び出す(ステップS1103)。転送制御部213は、重複排除部211から応答があるまで待ち状態に移行する。このとき、転送制御部213は、データブロックを重複排除部211に入力する。 Next, the transfer control unit 213 calls the deduplication unit 211 (step S1103). The transfer control unit 213 shifts to a waiting state until there is a response from the deduplication unit 211. At this time, the transfer control unit 213 inputs the data block to the deduplication unit 211.

転送制御部213は、一定時間経過した後、重複排除部211から符号化されたデータを取得したか否かを判定する(ステップS1104)。 The transfer control unit 213 determines whether or not the encoded data is acquired from the deduplication unit 211 after a certain time has elapsed (step S1104).

重複排除部211から符号化されたデータを取得していないと判定された場合、転送制御部213は、待ち状態に移行し、一定時間経過した後にステップS1104に戻る。 When it is determined that the coded data has not been acquired from the deduplication unit 211, the transfer control unit 213 shifts to the waiting state and returns to step S1104 after a predetermined time has elapsed.

重複排除部211から符号化されたデータを取得したと判定された場合、転送制御部213は、WAN120を介して、符号化されたデータを送信し、また、データブロックバッファ216にデータブロックを格納する(ステップS1105)。 When it is determined that the encoded data is acquired from the deduplication unit 211, the transfer control unit 213 transmits the encoded data via the WAN 120, and also stores the data block in the data block buffer 216. Yes (step S1105).

具体的には、転送制御部213は、符号化されたデータをプロトコル処理部214に出力する。なお、符号化されたデータとは、一つ以上のDedupヘッダ510及びDedupペイロード520の組を表す。 Specifically, the transfer control unit 213 outputs the encoded data to the protocol processing unit 214. The encoded data represents a set of one or more Dedupe header 510 and Dedupe payload 520.

ステップ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 transfer control unit 213 determines whether or not data remains in the buffer 607 of the entry identified in step S1002 ( Step S1106).

ステップS1002において特定されたエントリのバッファ607にデータが残っていると判定された場合、転送制御部213は、当該エントリのタイマ608に任意の時間を設定する(ステップS1107)。その後、転送制御部213は、処理を終了する。 When it is determined in step S1002 that data remains in the buffer 607 of the identified entry, the transfer control unit 213 sets an arbitrary time in the timer 608 of the entry (step S1107). After that, the transfer control unit 213 ends the process.

ステップS1002において特定されたエントリのバッファ607にデータが残っていないと判定された場合、転送制御部213は、当該エントリのタイマ608に「0」を設定する(ステップS1108)。その後、転送制御部213は、処理を終了する。 When it is determined in step S1002 that no data remains in the buffer 607 of the identified entry, the transfer control unit 213 sets “0” in the timer 608 of the entry (step S1108). After that, the transfer control unit 213 ends the process.

図12は、実施例1の転送制御部213がタイマ608に設定された時間が経過した場合に実行する処理を説明するフローチャートである。 FIG. 12 is a flowchart illustrating processing executed by the transfer control unit 213 according to the first embodiment when the time set in the timer 608 elapses.

転送制御部213は、各フローについてタイマをカウントし、タイマ608に設定された時間が経過したエントリを検出した場合、以下の処理を開始する。以下では、タイマ608に設定された時間が経過したエントリを対象エントリと記載する。 The transfer control unit 213 counts the timer for each flow, and when detecting an entry in which the time set in the timer 608 has elapsed, starts the following processing. Hereinafter, an entry in which the time set in the timer 608 has elapsed is described as a target entry.

転送制御部213は、対象エントリのバッファ607に格納されるデータの符号化を重複排除部211に指示する(ステップS1201)。転送制御部213は、重複排除部211から符号化されたデータを取得するまで待ち状態に移行する。なお、当該指示には、対象エントリのバッファ607に格納されるデータが含まれる。 The transfer control unit 213 instructs the deduplication unit 211 to encode the data stored in the buffer 607 of the target entry (step S1201). The transfer control unit 213 shifts to a waiting state until it acquires the encoded data from the deduplication unit 211. The instruction includes the data stored in the buffer 607 of the target entry.

重複排除部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 deduplication unit 211 receives the instruction, the dedup. "3" is set in the type 511, and dedup. The length of the data stored in the buffer 607 is set in the data_len 512, and the delete. hash1 513 and dedup. By setting "0" as the dummy value in the hash2 514, the Dedup header 510 is generated. Further, the deduplication unit 211 sets the data stored in the buffer 607 of the target entry in the Dedup payload 520. The deduplication unit 211 outputs the Dedup header 510 and the Dedup payload 520 to the transfer control unit 213.

次に、転送制御部213は、重複排除部211から符号化されたデータを取得した場合、WAN120を介して、符号化されたデータを送信する(ステップS1202)。 Next, when the transfer control unit 213 acquires the encoded data from the deduplication unit 211, the transfer control unit 213 transmits the encoded data via the WAN 120 (step S1202).

具体的には、転送制御部213は、符号化されたデータをプロトコル処理部214に出力する。これによって、Dedupヘッダ510及びDedupペイロード520を含むTCPパケット500が送信される。 Specifically, the transfer control unit 213 outputs the encoded data to the protocol processing unit 214. As a result, the TCP packet 500 including the Dedup header 510 and the Dedup payload 520 is transmitted.

次に、転送制御部213は、対象エントリのタイマ608に「0」を設定する(ステップS1203)。その後、転送制御部213は、処理を終了する。 Next, the transfer control unit 213 sets “0” in the timer 608 of the target entry (step S1203). After that, the transfer control unit 213 ends the process.

このように、タイマ608に設定された時間が経過した場合に、転送装置110がバッファ607に格納されるデータを送信することによって、受信したデータが転送されない状態を防止できる。 Thus, when the transfer device 110 transmits the data stored in the buffer 607 when the time set in the timer 608 elapses, it is possible to prevent the received data from not being transferred.

図13は、実施例1の転送制御部213が他の転送装置110から応答を受信した場合に実行する処理を説明するフローチャートである。 FIG. 13 is a flowchart illustrating a process executed by the transfer control unit 213 according to the first embodiment when a response is received from another transfer device 110.

転送制御部213は、プロトコル処理部214から、WAN120から受信した他の転送装置110の応答を受け取った場合(ステップS1301)、受け取った応答がデータブロック要求であるか否かを判定する(ステップS1302)。 When the transfer control unit 213 receives from the protocol processing unit 214 a response from the other transfer device 110 received from the WAN 120 (step S1301), the transfer control unit 213 determines whether the received response is a data block request (step S1302). ).

受け取った応答がデータブロック要求であると判定された場合、転送制御部213は、データブロックバッファ216からデータブロックを読み出し、重複排除部211にデータブロックの符号化を指示する(ステップS1303)。転送制御部213は、重複排除部211から符号化されたデータブロックを取得するまで待ち状態に移行する。なお、当該指示には、データブロックが含まれる。 When it is determined that the received response is the data block request, the transfer control unit 213 reads the data block from the data block buffer 216 and instructs the deduplication unit 211 to encode the data block (step S1303). The transfer control unit 213 shifts to a waiting state until it acquires the encoded data block from the deduplication unit 211. The instruction includes a data block.

重複排除部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 deduplication unit 211 receives the instruction, the deduplication unit 211 calculates the variable α and the variable β using the first hash function and the second hash function. A method of calculating the variables α and β will be described with reference to FIG. The deduplication unit 211 uses the dedup. “2” is set in the type 511, and dedup. The length of the data block is set in the data_len 512 and the data. The variable α is set in the hash1 513, and dedup. The Dedup header 510 is generated by setting the variable β in the hash2 514. Further, the deduplication unit 211 sets a data block in the Dedup payload 520. The deduplication unit 211 outputs the Dedup header 510 and the Dedup payload 520 to the transfer control unit 213.

次に、転送制御部213は、重複排除部211から符号化されたデータブロックを取得した場合、WAN120を介して、符号化されたデータブロックを送信する(ステップS1304)。その後、転送制御部213は、処理を終了する。 Next, when the transfer control unit 213 acquires the encoded data block from the deduplication unit 211, the transfer control unit 213 transmits the encoded data block via the WAN 120 (step S1304). After that, the transfer control unit 213 ends the process.

具体的には、転送制御部213は、符号化されたデータブロックをプロトコル処理部214に出力する。これによって、Dedupヘッダ510及びDedupペイロード520を含むTCPパケット500が送信される。 Specifically, the transfer control unit 213 outputs the encoded data block to the protocol processing unit 214. As a result, the TCP packet 500 including the Dedup header 510 and the Dedup payload 520 is transmitted.

ステップS1302において、受け取った応答がデータブロック要求でないと判定された場合、転送制御部213は、更新フラグがONであるか否かを判定する(ステップS1305)。 When it is determined in step S1302 that the received response is not the data block request, the transfer control unit 213 determines whether the update flag is ON (step S1305).

更新フラグがOFFであると判定された場合、転送制御部213は、ステップS1307に進む。 When it is determined that the update flag is OFF, the transfer control unit 213 proceeds to step S1307.

更新フラグがONであると判定された場合、転送制御部213は、重複排除部211に更新指示を出力する(ステップS1306)。このとき、転送制御部213は、更新フラグをOFFに設定する。当該更新指示にはデータブロックが含まれる。重複排除部211が、更新指示を受け付けた場合に実行する処理は図16を用いて説明する。 When it is determined that the update flag is ON, the transfer control unit 213 outputs an update instruction to the deduplication unit 211 (step S1306). At this time, the transfer control unit 213 sets the update flag to OFF. The update instruction includes a data block. The processing executed by the deduplication unit 211 when it receives the update instruction will be described with reference to FIG.

ステップ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 transfer control unit 213 deletes the data block from the data block buffer 216 (step S1307). After that, the transfer control unit 213 ends the process.

図14は、実施例1のデータ分割部215が実行する処理を説明するフローチャートである。 FIG. 14 is a flowchart illustrating processing executed by the data dividing unit 215 according to the first embodiment.

ここでは、データ分割部215が、Content Defined Chunkingとして知られるアルゴリズムに基づいて、データを可変長のデータブロックに分割する方法について説明する。Content Defined Chunkingでは、計算機が、固定長のウインドウ(例えば、48バイト)をデータの先頭から1バイトずつスライドし、ウインドウに含まれるデータのハッシュ値を用いて分割位置を決定する。 Here, a method will be described in which the data division unit 215 divides data into variable-length data blocks based on an algorithm known as Content Defined Chunking. In Content Defined Chunking, a computer slides a fixed-length window (for example, 48 bytes) one byte at a time from the beginning of data, and determines a division position using a hash value of data included in the window.

データ分割部215は、転送制御部213から呼び出された場合、処理を開始する。まず、データ分割部215は、転送制御部213からLAN140から受信したデータを取得する(ステップS1401)。 The data division unit 215 starts processing when called by the transfer control unit 213. First, the data division unit 215 acquires the data received from the LAN 140 from the transfer control unit 213 (step S1401).

データ分割部215は、データの先頭に所定のサイズのウインドウを配置する(ステップS1402)。データ分割部215は、ウインドウに含まれるデータのハッシュ値を算出する(ステップS1403)。ハッシュ値を算出するためのハッシュ関数は、例えば、ローリングハッシュとして知られるハッシュ関数を用いる。 The data dividing unit 215 arranges a window of a predetermined size at the beginning of the data (step S1402). The data dividing unit 215 calculates the hash value of the data included in the window (step S1403). As the hash function for calculating the hash value, for example, a hash function known as rolling hash is used.

次に、データ分割部215は、ハッシュ値が所定の条件を満たすか否かを判定する(ステップS1404)。 Next, the data dividing unit 215 determines whether or not the hash value satisfies a predetermined condition (step S1404).

例えば、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 data dividing unit 215 determines the data block to output the data included in the window, and outputs the data block to the transfer control unit 213 as a response (step S1405). ). After that, the transfer control unit 213 ends the process.

ステップS1404において、ハッシュ値が所定の条件を満たさないと判定された場合、データ分割部215は、ウインドウの移動が可能であるか否かを判定する(ステップS1406)。 When it is determined in step S1404 that the hash value does not satisfy the predetermined condition, the data dividing unit 215 determines whether or not the window can be moved (step S1406).

具体的には、データ分割部215は、ウインドウの終端がLAN140から受信したデータの終端と一致するか否かが判定される。ウインドウの終端がLAN140から受信したデータの終端と一致しない場合、データ分割部215は、ウインドウの移動が可能であると判定する。 Specifically, the data dividing unit 215 determines whether the end of the window matches the end of the data received from the LAN 140. If the end of the window does not match the end of the data received from the LAN 140, the data dividing unit 215 determines that the window can be moved.

ウインドウの移動が不可能であると判定された場合、データ分割部215は、転送制御部213に分割不可通知を応答として出力する(ステップS1407)。その後、転送制御部213は処理を終了する。 When it is determined that the window cannot be moved, the data division unit 215 outputs a division impossible notification to the transfer control unit 213 as a response (step S1407). After that, the transfer control unit 213 ends the process.

ウインドウの移動が可能であると判定された場合、データ分割部215は、ウインドウをデータの後方にスライドさせ(ステップS1408)、その後、ステップS1403に戻る。例えば、データ分割部215は、ウインドウを1バイト分だけ後方にスライドさせる。 When it is determined that the window can be moved, the data dividing unit 215 slides the window to the rear of the data (step S1408), and then returns to step S1403. For example, the data dividing unit 215 slides the window backward by 1 byte.

図15は、実施例1の重複排除部211が転送制御部213によって呼び出された場合に実行する処理を説明するフローチャートである。 FIG. 15 is a flowchart illustrating processing executed when the deduplication unit 211 according to the first embodiment is called by the transfer control unit 213.

重複排除部211は、転送制御部213からデータブロックを取得する(ステップS1501)。重複排除部211は、第1ハッシュ関数及び第2ハッシュ関数を用いて、変数α及び変数βを算出する(ステップS1502)。 The deduplication unit 211 acquires the data block from the transfer control unit 213 (step S1501). The deduplication unit 211 calculates the variable α and the variable β using the first hash function and the second hash function (step S1502).

具体的には、重複排除部211は、第1ハッシュ関数にデータブロックを入力することによって算出された第1ハッシュ値を2次元配列の行数Nで除算し、その余りを変数αとして算出する。また、重複排除部211は、第2ハッシュ関数にデータブロックを入力することによって算出される第2ハッシュ値を変数βとして算出する。 Specifically, the deduplication unit 211 divides the first hash value calculated by inputting the data block into the first hash function by the number N of rows in the two-dimensional array, and calculates the remainder as a variable α. .. Further, the deduplication unit 211 calculates the second hash value calculated by inputting the data block to the second hash function as the variable β.

次に、重複排除部211は、送信検索インデックス218を参照し(ステップS1503)、ハッシュ値が変数βに一致する要素701が存在するか否かを判定する(ステップS1504)。 Next, the deduplication unit 211 refers to the transmission search index 218 (step S1503) and determines whether or not there is an element 701 whose hash value matches the variable β (step S1504).

具体的には、重複排除部211は、α行目の行に含まれる要素701を参照する要素701群として特定する。重複排除部211は、α行目に含まれる各要素701に格納されるハッシュ値Xと、変数βとを比較する。 Specifically, the deduplication unit 211 identifies the element 701 included in the α-th row as a group of elements 701 that refers to the element 701. The deduplication unit 211 compares the hash value X stored in each element 701 included in the α-th row with the variable β.

ハッシュ値Xが変数βに一致する要素701が存在しないと判定された場合、重複排除部211は、ステップS1508に進む。 When it is determined that there is no element 701 whose hash value X matches the variable β, the deduplication unit 211 proceeds to step S1508.

ハッシュ値Xが変数βに一致する要素701が存在すると判定された場合、重複排除部211は、送信データブロック情報220からデータブロックを読み出す(ステップS1505)。 When it is determined that there is the element 701 whose hash value X matches the variable β, the deduplication unit 211 reads the data block from the transmission data block information 220 (step S1505).

具体的には、重複排除部211は、ハッシュ値Xが変数βに一致する要素701に含まれるポインタ値Pを取得し、送信データブロック情報220を参照して、当該ポインタ値Pがファイル名801に一致するエントリを検索する。重複排除部211は、検索されたエントリのデータブロック802からデータブロックを読み出す。 Specifically, the deduplication unit 211 acquires the pointer value P included in the element 701 in which the hash value X matches the variable β, refers to the transmission data block information 220, and sets the pointer value P to the file name 801. Search for an entry that matches. The deduplication unit 211 reads a data block from the data block 802 of the searched entry.

次に、重複排除部211は、転送制御部213から取得したデータブロックと、送信データブロック情報220から読み出したデータブロックとが一致するか否かを判定する(ステップS1506)。 Next, the deduplication unit 211 determines whether the data block acquired from the transfer control unit 213 and the data block read from the transmission data block information 220 match (step S1506).

二つのデータブロックが一致しないと判定された場合、重複排除部211は、ステップS1508に進む。 If it is determined that the two data blocks do not match, the deduplication unit 211 proceeds to step S1508.

二つのデータブロックが一致すると判定された場合、重複排除部211は、転送制御部213に、符号化されたデータブロックの識別情報を出力する(ステップS1507)。その後、重複排除部211は、処理を終了する。 When it is determined that the two data blocks match, the deduplication unit 211 outputs the encoded data block identification information to the transfer control unit 213 (step S1507). After that, the deduplication unit 211 ends the process.

具体的には、重複排除部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 deduplication unit 211 uses the dedup. “1” is set in the type 511, and dedup. “0” is set in the data_len 512, and the data is deleted. The variable α is set in the hash1 513, and dedup. The Dedup header 510 is generated by setting the variable β in the hash2 514. The deduplication unit 211 outputs the Dedup header 510 and the Dedup payload 520 to the transfer control unit 213. It should be noted that the Dedup payload 520 is empty.

Dedupヘッダ510のサイズが28バイト、データブロックのサイズの平均値が4キロバイトである場合、データブロックの識別情報のみを送信する通信は、データブロックを送信する通信より通信量が100分の1以下となる。なお、前述の比較は、TCPヘッダ440等を除いたものである。 When the size of the Dedupe header 510 is 28 bytes and the average value of the size of the data block is 4 kilobytes, the communication that transmits only the identification information of the data block has a communication amount 1/100 or less than the communication that transmits the data block. Becomes It should be noted that the above comparison excludes the TCP header 440 and the like.

ステップ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 deduplication unit 211 sets the update flag of the transfer control unit 213 to ON (step S1508). At this time, the deduplication unit 211 temporarily holds the variable α and the variable β.

次に、重複排除部211は、転送制御部213に、符号化されたデータブロックの識別情報及び符号化されたデータブロックを出力する(ステップS1509)。その後、重複排除部211は、処理を終了する。 Next, the deduplication unit 211 outputs the identification information of the encoded data block and the encoded data block to the transfer control unit 213 (step S1509). After that, the deduplication unit 211 ends the process.

具体的には、重複排除部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 deduplication unit 211 uses the dedup. “2” is set in the type 511, and dedup. The size of the data block is set in the data_len 512, and the dedu. The variable α is set in the hash1 513, and dedup. The Dedup header 510 is generated by setting the variable β in the hash2 514. Further, the deduplication unit 211 sets a data block in the Dedup payload 520. The deduplication unit 211 outputs the Dedup header 510 and the Dedup payload 520 to the transfer control unit 213.

変数αは、行数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 N−1. Therefore, the variable α of an arbitrary data block matches the variable α calculated using another data block with a probability of 1/N. Since the data size of the transmission search index 218 depends on the size of the number of rows N, the size of the number of rows N is limited. On the other hand, the variable β is a value obtained by directly inputting the second hash value, and can be set to a value sufficiently larger than N.

例えば、変数αのサイズを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 transmission search index 218 is about 100 MB as shown in Expression (1). .. When the size of the variable α is 128 bits, the size of the variable β is 20 bits, and the size of the pointer value P is 64 bits, the size of the transmission search index 218 is about 1.2×10 6 as shown in Expression (2). It will be 16 YB.

Figure 0006730437
Figure 0006730437

Figure 0006730437
Figure 0006730437

変数βのサイズを大きくすると、ハッシュ値の衝突が発生する確率が非常に低くなる。したがって、変数βとハッシュ値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 information 220 match with high probability. In this case, only the variable β and the hash value X need to be compared, and it is not necessary to compare the data blocks. Therefore, step S1506 can be omitted.

ステップS1506の処理を省略した場合、二次記憶装置203へのアクセスする必要がないため、重複排除部211は、さらに高速に、データブロックを検索することができる。したがって、処理速度を重視する場合には、変数βのサイズを大きくし、ステップS1506の処理を行わないように設定すればよい。 If the process of step S1506 is omitted, there is no need to access the secondary storage device 203, so the deduplication unit 211 can search the data block even faster. Therefore, when the processing speed is emphasized, the size of the variable β may be increased so that the process of step S1506 is not performed.

図16は、実施例1の重複排除部211が転送制御部213から更新指示を受け付けた場合に実行する処理を説明するフローチャートである。 FIG. 16 is a flowchart illustrating a process executed when the deduplication unit 211 according to the first embodiment receives an update instruction from the transfer control unit 213.

重複排除部211は、転送制御部213から更新指示を受け取った場合(ステップS1601)、送信検索インデックス218及び送信データブロック情報220を更新する(ステップS1602)。その後、重複排除部211は、処理を終了する。具体的には、以下のような処理が実行される。 When receiving the update instruction from the transfer control unit 213 (step S1601), the deduplication unit 211 updates the transmission search index 218 and the transmission data block information 220 (step S1602). After that, the deduplication unit 211 ends the process. Specifically, the following processing is executed.

重複排除部211は、ポインタ値Pに設定する値を式(3)を用いて算出する。なお、mは、第2ハッシュ関数の出力値の最大ビット数である。 The deduplication unit 211 calculates the value to be set as the pointer value P using Expression (3). Note that m is the maximum number of bits of the output value of the second hash function.

Figure 0006730437
Figure 0006730437

式(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 deduplication unit 211 refers to the α-th row of the transmission search index 218 and determines whether or not the empty element 701 is present in the elements 701 included in the α-th row. The empty element 701 indicates the element 701 to which the hash value X and the pointer value P are not set.

空の要素701が存在する場合、重複排除部211は、当該要素701のハッシュ値Xに変数βを設定し、ポインタ値Pに式(3)を用いて算出された値を設定する。また、重複排除部211は、送信データブロック情報220にエントリを追加し、追加されたエントリのファイル名801に式(3)を用いて算出された値を設定し、データブロック802に更新指示に含まれるデータブロックを格納する。 If the empty element 701 exists, the deduplication unit 211 sets the hash value X of the element 701 to the variable β and sets the pointer value P to the value calculated by using the formula (3). Further, the deduplication unit 211 adds an entry to the transmission data block information 220, sets a value calculated using Expression (3) in the file name 801 of the added entry, and gives an update instruction to the data block 802. Stores the included data block.

空の要素701が存在しない場合、重複排除部211は、α行目に含まれる要素701の中から値を設定する要素701を一つ選択する。要素701を選択する方法は様々考えられる。例えば、ランダムに選択する方法、及びLRU(Least Recently Used)アルゴリズムに基づいて選択する方法等が考えられる。 When there is no empty element 701, the deduplication unit 211 selects one element 701 whose value is set from the elements 701 included in the α-th row. There are various possible methods for selecting the element 701. For example, a random selection method, a selection method based on an LRU (Least Recently Used) algorithm, and the like are possible.

重複排除部211は、送信データブロック情報220を参照し、ファイル名801が選択された要素701のポインタ値Pに一致するエントリを検索し、検索されたエントリを削除する。重複排除部211は、選択された要素701のハッシュ値Xに変数βを設定し、ポインタ値Pに式(3)を用いて算出された値を設定する。また、重複排除部211は、送信データブロック情報220にエントリを追加し、追加されたエントリのファイル名801に式(3)を用いて算出された値を設定し、データブロック802にデータブロックを格納する。以上がステップS1602の処理の説明である。 The deduplication unit 211 refers to the transmission data block information 220, searches for an entry whose file name 801 matches the pointer value P of the selected element 701, and deletes the searched entry. The deduplication unit 211 sets the variable β to the hash value X of the selected element 701 and sets the pointer value P to the value calculated using the equation (3). The deduplication unit 211 also adds an entry to the transmission data block information 220, sets the file name 801 of the added entry to the value calculated using equation (3), and sets the data block in the data block 802. Store. The above is the description of the process of step S1602.

図17は、実施例1の転送制御部213がWAN120からデータを受信した場合に実行する処理を説明するフローチャートである。 FIG. 17 is a flowchart illustrating a process executed when the transfer control unit 213 according to the first embodiment receives data from the WAN 120.

転送制御部213は、プロトコル処理部214から、WAN120から受信したデータ(TCPパケット500)を受け取った場合(ステップS1701)、重複復元部212を呼び出す(ステップS1702)。このとき、転送制御部213は、受け取ったデータを重複復元部212に出力する。転送制御部213は、重複復元部212から応答を受け付けるまで待ち状態に移行する。 When the transfer control unit 213 receives the data (TCP packet 500) received from the WAN 120 from the protocol processing unit 214 (step S1701), the transfer control unit 213 calls the duplication restoration unit 212 (step S1702). At this time, the transfer control unit 213 outputs the received data to the duplication restoration unit 212. The transfer control unit 213 shifts to a waiting state until it receives a response from the duplication restoration unit 212.

転送制御部213は、重複復元部212からの応答に基づいて、データブロックを取得する必要があるか否かを判定する(ステップS1703)。 The transfer control unit 213 determines whether or not the data block needs to be acquired based on the response from the duplication restoration unit 212 (step S1703).

具体的には、転送制御部213は、重複復元部212からの応答が「該当データ無し」であるか否かを判定する。重複復元部212からの応答が「該当データ無し」である場合、転送制御部213は、データブロックを取得する必要があると判定する。 Specifically, the transfer control unit 213 determines whether the response from the duplication restoration unit 212 is “no corresponding data”. When the response from the duplication restoration unit 212 is “no corresponding data”, the transfer control unit 213 determines that the data block needs to be acquired.

データブロックを取得する必要がないと判定された場合、転送制御部213は、LAN140を介して、復元されたデータを送信する(ステップS1704)。 When it is determined that it is not necessary to acquire the data block, the transfer control unit 213 transmits the restored data via the LAN 140 (step S1704).

具体的には、転送制御部213は、復元されたデータをプロトコル処理部214に出力する。これによって、Dedupペイロード520に設定されたデータがTCPペイロード460に設定されたTCPパケット400が送信される。 Specifically, the transfer control unit 213 outputs the restored data to the protocol processing unit 214. As a result, the TCP packet 400 in which the data set in the Dedup payload 520 is set in the TCP payload 460 is transmitted.

次に、転送制御部213は、WAN120を介して、復元確認通知を送信する(ステップS1705)。その後、転送制御部213は、処理を終了する。 Next, the transfer control unit 213 transmits a restoration confirmation notification via the WAN 120 (step S1705). After that, the transfer control unit 213 ends the process.

具体的には、転送制御部213は、プロトコル処理部214に復元確認通知の送信を指示する。なお、復元確認通知を送信する場合には、TCPパケット400及びTCPパケット500のいずれを用いてもよい。 Specifically, the transfer control unit 213 instructs the protocol processing unit 214 to transmit the restoration confirmation notification. When transmitting the restoration confirmation notification, either the TCP packet 400 or the TCP packet 500 may be used.

ステップS1703において、データブロックを取得する必要があると判定された場合、転送制御部213は、WAN120を介して、データブロック要求を送信する(ステップS1706)。その後、転送制御部213は、処理を終了する。 When it is determined in step S1703 that the data block needs to be acquired, the transfer control unit 213 transmits a data block request via the WAN 120 (step S1706). After that, the transfer control unit 213 ends the process.

具体的には、転送制御部213は、プロトコル処理部214にデータブロック要求の送信を指示する。なお、データブロック要求を送信する場合には、TCPパケット400及びTCPパケット500のいずれを用いてもよい。 Specifically, the transfer control unit 213 instructs the protocol processing unit 214 to transmit the data block request. When transmitting the data block request, either the TCP packet 400 or the TCP packet 500 may be used.

図18は、実施例1の重複復元部212が転送制御部213によって呼び出された場合に実行する処理を説明するフローチャートである。 FIG. 18 is a flowchart illustrating a process executed when the duplication restoration unit 212 according to the first embodiment is called by the transfer control unit 213.

重複復元部212は、転送制御部213からデータを取得し(ステップS1801)、Dedupヘッダ510に含まれるdedup.type511の値が「2」であるか否かを判定する(ステップS1802)。 The duplication restoration unit 212 acquires the data from the transfer control unit 213 (step S1801), and deletes the dedup. It is determined whether the value of type 511 is "2" (step S1802).

dedup.type511の値が「2」ではないと判定された場合、重複復元部212は、dedup.type511の値が「3」であるか否かを判定する(ステップS1803)。 dedup. When it is determined that the value of the type 511 is not “2”, the duplication restoration unit 212 determines that the dedup. It is determined whether the value of type 511 is "3" (step S1803).

dedup.type511の値が「1」であると判定された場合、重複復元部212は、受信検索インデックス219を参照し、ハッシュ値Xがdedup.hash2 514の値に一致する要素701が存在するか否かを判定する(ステップS1804)。 dedup. When it is determined that the value of the type 511 is “1”, the duplication restoration unit 212 refers to the reception search index 219 and determines that the hash value X is dedup. It is determined whether or not the element 701 that matches the value of hash2 514 exists (step S1804).

具体的には、重複復元部212は、(dedup.hash1 513)行目の行に含まれる要素701を参照する要素701群として特定する。重複復元部212は、(dedup.hash1 513)行目に含まれる各要素701に格納されるハッシュ値Xと、dedup.hash2 514の値とを比較する。 Specifically, the duplication restoration unit 212 identifies the element 701 included in the (deduup.hash1 513)-th row as a group of elements 701 that refers to the element 701. The duplication restoring unit 212 uses the hash value X stored in each element 701 included in the (dedup.hash1 513) line, and the dedupe. Compare with the value of hash2 514.

ハッシュ値Xがdedup.hash2 514の値に一致する要素701が存在すると判定された場合、重複復元部212は、受信データブロック情報221からデータブロックを読み出す(ステップS1805)。 The hash value X is dedup. When it is determined that the element 701 that matches the value of hash2 514 exists, the duplication restoration unit 212 reads the data block from the received data block information 221 (step S1805).

具体的には、重複復元部212は、ハッシュ値Xがdedup.hash2 514の値に一致する要素701からポインタ値Pを取得し、受信データブロック情報221を参照して、当該ポインタ値Pがファイル名801に一致するエントリを検索する。重複復元部212は、検索されたエントリのデータブロック802からデータブロックを読み出す。 Specifically, the duplication restoration unit 212 determines that the hash value X is dedup. The pointer value P is acquired from the element 701 that matches the value of hash2 514, and the entry in which the pointer value P matches the file name 801 is searched by referring to the received data block information 221. The duplication restoration unit 212 reads a data block from the data block 802 of the searched entry.

次に、重複復元部212は、転送制御部213に読み出されたブロックデータを応答として出力する(ステップS1806)。その後、重複復元部212は、処理を終了する。 Next, the duplication restoration unit 212 outputs the read block data to the transfer control unit 213 as a response (step S1806). Then, the duplication restoration unit 212 ends the process.

ステップS1804において、ハッシュ値がdedup.hash2 514の値に一致する要素701が存在しないと判定された場合、重複復元部212は、転送制御部213に「該当データ無し」を応答として出力する(ステップS1808)。その後、重複復元部212は、処理を終了する。 In step S1804, the hash value is dedup. When it is determined that the element 701 that matches the value of hash2 514 does not exist, the duplication restoration unit 212 outputs "no corresponding data" to the transfer control unit 213 as a response (step S1808). Then, the duplication restoration unit 212 ends the process.

ステップS1803において、dedup.type511の値が「3」であると判定された場合、重複復元部212は、転送制御部213に、Dedupペイロード520に設定されたデータを応答として出力する(ステップS1807)。その後、重複復元部212は、処理を終了する。 In step S1803, delete. When it is determined that the value of the type 511 is “3”, the duplication restoration unit 212 outputs the data set in the Dedup payload 520 to the transfer control unit 213 as a response (step S1807). Then, the duplication restoration unit 212 ends the process.

ステップS1802において、dedup.type511の値が「2」であると判定された場合、重複復元部212は、受信検索インデックス219及び受信データブロック情報221を更新する(ステップS1809)。具体的には、以下のような処理が実行される。 In step S1802, dedup. When it is determined that the value of type 511 is “2”, the duplication restoration unit 212 updates the reception search index 219 and the reception data block information 221 (step S1809). Specifically, the following processing is executed.

重複復元部212は、ポインタ値Pに設定する値を式(4)を用いて算出する。 The duplication restoration unit 212 calculates the value to be set as the pointer value P using Expression (4).

Figure 0006730437
Figure 0006730437

式(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 hash2 514 for the pointer value, the probability that the pointer values of different data blocks are the same can be made extremely small.

重複復元部212は、受信検索インデックス219の(dedup.hash1 513)行目を参照し、(dedup.hash1 513)行目に含まれる要素701の中に空の要素701が存在するか否かを判定する。 The duplication restoration unit 212 refers to the (dedup.hash1 513) line of the reception search index 219 and determines whether or not an empty element 701 is present in the element 701 included in the (dedup.hash1 513) line. judge.

空の要素701が存在する場合、重複復元部212は、当該要素701のハッシュ値Xにdedup.hash2 514の値を設定し、ポインタ値Pに式(4)を用いて算出された値を設定する。また、重複復元部212は、受信データブロック情報221にエントリを追加し、追加されたエントリのファイル名801に式(4)を用いて算出された値を設定し、データブロック802にデータブロックを格納する。 When the empty element 701 exists, the duplication restoration unit 212 determines that the hash value X of the element 701 is dedup. The value of hash2 514 is set, and the pointer value P is set to the value calculated using equation (4). Further, the duplication restoration unit 212 adds an entry to the received data block information 221, sets a value calculated using Expression (4) in the file name 801 of the added entry, and sets the data block in the data block 802. Store.

空の要素701が存在しない場合、重複復元部212は、(dedup.hash1 513)行目に含まれる要素701の中から、値を設定する要素701を一つ選択する。要素701を選択する方法は重複排除部211が使用する方法と同一の方法とする。重複排除部211及び重複復元部212が同一の方法を用いることによって、送信データブロック情報220及び受信データブロック情報221の内容が一致する可能性が高くなる。これによって、データブロック要求を送信する回数を低減できる。 When the empty element 701 does not exist, the duplication restoration unit 212 selects one element 701 for which a value is set from the elements 701 included in the (dupup.hash1 513) line. The method of selecting the element 701 is the same as the method used by the deduplication unit 211. By using the same method for the deduplication unit 211 and the duplication restoration unit 212, the contents of the transmission data block information 220 and the reception data block information 221 are highly likely to match. This can reduce the number of times the data block request is transmitted.

重複復元部212は、受信データブロック情報221を参照し、ファイル名801が選択された要素701のポインタ値Pに一致するエントリを検索し、検索されたエントリを削除する。重複復元部212は、選択された要素701のハッシュ値Xにdedup.hash2 514の値を設定し、ポインタ値Pに式(4)を用いて算出された値を設定する。また、重複復元部212は、受信データブロック情報221にエントリを追加し、追加されたエントリのファイル名801に式(4)を用いて算出された値を設定し、データブロック802にデータブロックを格納する。以上がステップS1809の処理の説明である。 The duplication restoration unit 212 refers to the received data block information 221, searches for an entry whose file name 801 matches the pointer value P of the selected element 701, and deletes the found entry. The duplication restoration unit 212 sets the hash value X of the selected element 701 to dedup. The value of hash2 514 is set, and the pointer value P is set to the value calculated using equation (4). Further, the duplication restoration unit 212 adds an entry to the received data block information 221, sets a value calculated by using Expression (4) in the file name 801 of the added entry, and sets the data block in the data block 802. Store. The above is the description of the process of step S1809.

次に、重複復元部212は、転送制御部213に、Dedupペイロード520に設定されたデータブロックを応答として出力する(ステップS1810)。その後、重複復元部212は、処理を終了する。 Next, the duplication restoration unit 212 outputs the data block set in the Dedupe payload 520 to the transfer control unit 213 as a response (step S1810). Then, the duplication restoration unit 212 ends the process.

次に、図19を用いて、重複排除部211が実行する具体的な処理内容について説明する。 Next, specific processing contents executed by the deduplication unit 211 will be described with reference to FIG.

図19は、実施例1の重複排除部211が実行する処理の具体例を示す図である。ここで、送信検索インデックス218及び送信データブロック情報220は、それぞれ、図19に示すエントリが格納されるものとする。なお、送信検索インデックスの左側の数字は行数を表す。 FIG. 19 is a diagram illustrating a specific example of the process executed by the deduplication unit 211 according to the first embodiment. Here, the transmission search index 218 and the transmission data block information 220 are assumed to store the entries shown in FIG. 19, respectively. The number on the left side of the transmission search index indicates the number of lines.

まず、重複排除部211がデータブロック「abc...z」を受信した場合を例に説明する。なお、当該データブロックの変数αは「6423」、変数βは「0x11121239」であるものとする。 First, a case where the deduplication unit 211 receives a data block “abc...z” will be described as an example. The variable α of the data block is “6423” and the variable β is “0x11121393”.

ステップS1503において、重複排除部211は、6423行目に含まれる四つの要素701のハッシュ値Xと、変数βとを比較する。このとき、2列目の要素701のハッシュ値Xと変数βとが一致するため、ステップS1504の判定結果はYESとなる。 In step S1503, the deduplication unit 211 compares the hash value X of the four elements 701 included in the 6423th line with the variable β. At this time, since the hash value X of the element 701 in the second column and the variable β match, the determination result of step S1504 is YES.

ステップS1505では、重複排除部211は、2列目の要素701のポインタ値Pの値「p2」を用いて、送信データブロック情報220からデータブロック「abc...z」を読み出す。 In step S1505, the deduplication unit 211 reads the data block “abc...z” from the transmission data block information 220 using the value “p2” of the pointer value P of the element 701 in the second column.

転送制御部213から取得したデータブロックと、送信データブロック情報220から読み出したデータブロックとは一致するため、ステップS1506の判定結果はYESとなる。 Since the data block acquired from the transfer control unit 213 and the data block read from the transmission data block information 220 match, the determination result of step S1506 is YES.

したがって、重複排除部211は、符号化されたデータブロックの識別情報を出力する(ステップS1507)。なお、Dedupヘッダ510のdedup.hash1 513には「6242」が設定され、dedup.hash2 514には「0x11121239」が設定される。 Therefore, the deduplication unit 211 outputs the identification information of the encoded data block (step S1507). In addition, the dedup. “6242” is set in the hash1 513, and dedup. “0x1112139” is set in the hash2 514.

次に、重複排除部211がデータブロック「012...9」を受信した場合を例に説明する。なお、当該データブロックの変数αは「312」、変数βは「0x121f12d9」であるものとする。 Next, a case where the deduplication unit 211 receives the data block “012...9” will be described as an example. The variable α of the data block is “312” and the variable β is “0x121f12d9”.

ステップS1503において、重複排除部211は、312行目に含まれる四つの要素701のハッシュ値Xと、変数βとを比較する。このとき、変数βに一致するハッシュ値Xを含む要素701は存在しないため、ステップS1504の判定結果はNOとなる。 In step S1503, the deduplication unit 211 compares the hash value X of the four elements 701 included in the 312th row with the variable β. At this time, since the element 701 including the hash value X that matches the variable β does not exist, the determination result of step S1504 is NO.

したがって、重複排除部211は、更新フラグをONに設定し(ステップS1508)、符号化されたデータブロックの識別情報及びデータブロックを出力する(ステップS1509)。なお、Dedupヘッダ510のdedup.hash1 513には「312」が設定され、dedup.hash2 514には「0x121f12d9」が設定される。また、Dedupペイロード520にはデータブロック「012...9」が設定される。 Therefore, the deduplication unit 211 sets the update flag to ON (step S1508), and outputs the coded data block identification information and the data block (step S1509). In addition, the dedup. “312” is set in the hash1 513, and dedup. “0x121f12d9” is set in the hash2 514. Further, data blocks “012...9” are set in the Dedup payload 520.

重複排除部211は、転送制御部213から更新指示を受け取った場合、データブロック「012...9」から変数α及び変数βを算出し、また、式(3)を用いてポインタ値Pに設定する値を算出する。 When the deduplication unit 211 receives the update instruction from the transfer control unit 213, the deduplication unit 211 calculates the variable α and the variable β from the data block “012...9”, and uses the formula (3) to obtain the pointer value P. Calculate the value to set.

重複排除部211は、送信検索インデックス218の312行目を参照する。312行目には空の要素701が存在しないため、重複排除部211は、312行目に含まれる要素701の中から一つの要素を選択する。ここでは、2列目の要素701が選択されたものとする。 The deduplication unit 211 refers to the 312th line of the transmission search index 218. Since the empty element 701 does not exist in the 312th line, the deduplication unit 211 selects one element from the elements 701 included in the 312th line. Here, it is assumed that the element 701 in the second column is selected.

重複排除部211は、送信データブロック情報220を参照して、ファイル名801がp6であるエントリを検索し、検索されたエントリを削除する。 The deduplication unit 211 refers to the transmission data block information 220, searches for an entry whose file name 801 is p6, and deletes the found entry.

重複排除部211は、312行目の2列目の要素701のハッシュ値Xに変数βを設定し、また、ポインタ値Pに式(3)を用いて算出された値を設定する。また、重複排除部211は、送信データブロック情報220にエントリを追加し、追加されたエントリのファイル名801に式(3)を用いて算出された値を設定し、データブロック802にデータブロック「012...9」を設定する。 The deduplication unit 211 sets the variable β as the hash value X of the element 701 in the second column of the 312nd row, and also sets the value calculated using Expression (3) as the pointer value P. Further, the deduplication unit 211 adds an entry to the transmission data block information 220, sets the file name 801 of the added entry to the value calculated using Expression (3), and sets the data block 802 to the data block “ 012...9” is set.

二つのデータブロックを例に、送信検索インデックス218及び送信データブロック情報220の使用方法について説明した。なお、受信検索インデックス219及び受信データブロック情報221の使用方法も同様である。 The method of using the transmission search index 218 and the transmission data block information 220 has been described using two data blocks as an example. Note that the method of using the reception search index 219 and the reception data block information 221 is also the same.

実施例1によれば、転送装置110は、送信検索インデックス218及び受信検索インデックス219を用いることによって、二次記憶装置203に格納される送信データブロック情報220及び受信データブロック情報221にアクセスすることなくデータブロックを保持しているか否かを判定できる。 According to the first embodiment, the transfer device 110 can access the transmission data block information 220 and the reception data block information 221 stored in the secondary storage device 203 by using the transmission search index 218 and the reception search index 219. It is possible to determine whether or not the data block is retained.

特に、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 transfer device 110 searches the data block using only the transmission search index 218 and the reception search index 219. You can

また、送信検索インデックス218及び受信検索インデックス219は、送信データブロック情報220及び受信データブロック情報221よりサイズを小さくできるため、主記憶装置202に送信検索インデックス218及び受信検索インデックス219を格納することができる。 Since the transmission search index 218 and the reception search index 219 can be smaller in size than the transmission data block information 220 and the reception data block information 221, the transmission search index 218 and the reception search index 219 can be stored in the main storage device 202. it can.

したがって、転送装置110は、送信検索インデックス218及び受信検索インデックス219を用いて、データブロックの重複排除及び重複復元を高速に行うことができる。これによって、データ転送処理の高速化を実現することができる。 Therefore, the transfer apparatus 110 can perform deduplication and deduplication of data blocks at high speed by using the transmission search index 218 and the reception search index 219. As a result, the speeding up of the data transfer process can be realized.

実施例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 transfer device 110 according to the second embodiment. FIG. 21 is a diagram illustrating a logical connection relationship of the software configuration of the transfer device 110 according to the second embodiment.

実施例2の転送装置110のハードウェア構成は、実施例1の転送装置110のハードウェア構成と同一であるため説明を省略する。 The hardware configuration of the transfer device 110 according to the second embodiment is the same as the hardware configuration of the transfer device 110 according to the first embodiment, and thus the description thereof is omitted.

実施例2の転送装置110の主記憶装置202は、副検索インデックス2001を格納する。副検索インデックス2001は、送信データブロック情報220に格納されるデータブロックを検索する場合に使用されるインデックスである。副検索インデックス2001の詳細は、図24を用いて説明する。 The main storage device 202 of the transfer device 110 according to the second embodiment stores the sub-search index 2001. The sub-search index 2001 is an index used when searching for a data block stored in the transmission data block information 220. Details of the sub-search index 2001 will be described with reference to FIG.

実施例2のフロー情報217のデータ構造は、実施例1のフロー情報217のデータ構造と異なる。実施例2のフロー情報217の詳細は、図22を用いて説明する。 The data structure of the flow information 217 of the second embodiment is different from the data structure of the flow information 217 of the first embodiment. Details of the flow information 217 according to the second embodiment will be described with reference to FIG.

実施例2のデータ分割部215は、実施例1とは異なる方法を用いてデータブロックを生成する。データ分割部215が生成するデータブロックについて、図23を用いて説明する。 The data dividing unit 215 of the second embodiment generates a data block by using a method different from that of the first embodiment. The data block generated by the data dividing unit 215 will be described with reference to FIG.

実施例2の転送制御部213が実行する処理は、実施例1の転送制御部213が実行する処理と一部異なる。異なる処理については、図25を用いて説明する。実施例2の重複排除部211が実行する処理は、実施例1の重複排除部211が実行する処理と一部異なる。異なる処理については、図26及び図27を用いて説明する。また、実施例2の重複排除部211は、第1ハッシュ関数及び第2ハッシュ関数の他に、第3ハッシュ関数を保持する。 The process executed by the transfer control unit 213 according to the second embodiment is partially different from the process executed by the transfer control unit 213 according to the first embodiment. The different processing will be described with reference to FIG. The process executed by the deduplication unit 211 of the second embodiment is partially different from the process executed by the deduplication unit 211 of the first embodiment. The different processing will be described with reference to FIGS. 26 and 27. In addition, the deduplication unit 211 of the second embodiment holds the third hash function in addition to the first hash function and the second hash function.

その他の情報及び機能部が実行する処理は、実施例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 flow information 217 according to the second embodiment.

フロー情報217に含まれるエントリは、head2201を含む。head2201は、バッファ607に格納されるデータの先頭がデータブロックの先頭であるか否かを示す情報であり、初期値は「NO」である。エントリに含まれるその他のカラムは実施例1と同一である。 The entries included in the flow information 217 include head 2201. The head 2201 is information indicating whether or not the head of the data stored in the buffer 607 is the head of the data block, and the initial value is “NO”. The other columns included in the entry are the same as in the first embodiment.

図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 LAN 140 is divided into fixed-length data blocks. In FIG. 23, the identification information of the i-th data block is described as Mi.

さらに、実施例2では、一つのデータブロックが、固定長の副データブロックに分割される。転送装置110は、副データブロックの場所を検索するためのインデックスとして、副検索インデックス2001を保持する。 Further, in the second embodiment, one data block is divided into fixed-length sub data blocks. The transfer device 110 holds the sub search index 2001 as an index for searching the location of the sub data block.

図24は、実施例2の副検索インデックス2001の一例を示す図である。 FIG. 24 is a diagram illustrating an example of the sub-search index 2001 according to the second embodiment.

副検索インデックス2001は、2次元配列のデータ構造である。図24では、N行4列の2次元配列となっている。なお、行及び列の数は一例であって、任意の値に設定できる。 The sub-search index 2001 has a two-dimensional array data structure. In FIG. 24, it is a two-dimensional array having N rows and 4 columns. The number of rows and columns is an example, and can be set to any value.

2次元配列の一つの要素2401には、ハッシュ値XX及び添字Iが含まれる。ハッシュ値XXは、第3ハッシュ関数にデータブロックを入力することによって算出されるハッシュ値である。ハッシュ値XXは、データブロックが送信データブロック情報220に格納されているか否かを判定する場合に使用される。添字Iは、データブロックの先頭から何番目の副データブロックであるかを示す値である。 One element 2401 of the two-dimensional array includes the hash value XX and the subscript I. The hash value XX is a hash value calculated by inputting the data block to the third hash function. The hash value XX is used when determining whether the data block is stored in the transmission data block information 220. The subscript I is a value indicating the number of the sub data block from the head of the data block.

図25は、実施例2の転送制御部213がLAN140からデータを受信した場合に実行する処理を説明するフローチャートである。 FIG. 25 is a flowchart illustrating a process executed when the transfer control unit 213 according to the second embodiment receives data from the LAN 140.

転送制御部213は、ステップS1002の処理が完了した後、特定されたエントリのバッファ607に格納されるデータの先頭がデータブロックの先頭であるか否かを判定する(ステップS2501)。 After the processing of step S1002 is completed, the transfer control unit 213 determines whether the head of the data stored in the buffer 607 of the identified entry is the head of the data block (step S2501).

具体的には、転送制御部213は、特定されたエントリのhead2201が「YES」であるか否かを判定する。head2201が「YES」である場合、転送制御部213は、特定されたエントリのバッファ607に格納されるデータの先頭がデータブロックの先頭であると判定する。 Specifically, the transfer control unit 213 determines whether or not the head 2201 of the identified entry is “YES”. When the head 2201 is “YES”, the transfer control unit 213 determines that the head of the data stored in the buffer 607 of the identified entry is the head of the data block.

特定されたエントリのバッファ607に格納されるデータの先頭がデータブロックの先頭であると判定された場合、転送制御部213は、データ分割部215を呼び出す(ステップS1003)。このとき、転送制御部213は、受け取ったデータをデータ分割部215に出力する。その後、転送制御部213は、処理を終了する。 When it is determined that the head of the data stored in the buffer 607 of the identified entry is the head of the data block, the transfer control unit 213 calls the data division unit 215 (step S1003). At this time, the transfer control unit 213 outputs the received data to the data dividing unit 215. After that, the transfer control unit 213 ends the process.

特定されたエントリのバッファ607に格納されるデータの先頭がデータブロックの先頭ではないと判定された場合、転送制御部213は、特定されたエントリのバッファ607に格納されるデータのサイズが比較ブロックサイズ以上であるか否かを判定する(ステップS2502)。なお、比較ブロックサイズは、予め設定されているものとする。 When it is determined that the head of the data stored in the buffer of the specified entry 607 is not the head of the data block, the transfer control unit 213 determines that the size of the data stored in the buffer of the specified entry 607 is the comparison block. It is determined whether the size is equal to or larger than the size (step S2502). Note that the comparison block size is set in advance.

特定されたエントリのバッファ607に格納されるデータのサイズが比較ブロックサイズより小さいと判定された場合、転送制御部213は、特定されたエントリのバッファ607にデータが残っているか否かを判定する(ステップS2503)。 When it is determined that the size of the data stored in the buffer 607 of the specified entry is smaller than the comparison block size, the transfer control unit 213 determines whether or not the data remains in the buffer 607 of the specified entry. (Step S2503).

特定されたエントリのバッファ607にデータが残っていると判定された場合、転送制御部213は、当該エントリのタイマ608に任意の時間を設定する(ステップS2504)。その後、転送制御部213は、処理を終了する。 When it is determined that data remains in the buffer 607 of the identified entry, the transfer control unit 213 sets an arbitrary time in the timer 608 of the entry (step S2504). After that, the transfer control unit 213 ends the process.

特定されたエントリのバッファ607にデータが残っていないと判定された場合、転送制御部213は、当該エントリのタイマ608に「0」を設定する(ステップS2505)。その後、転送制御部213は、処理を終了する。 When it is determined that no data remains in the buffer 607 of the identified entry, the transfer control unit 213 sets “0” in the timer 608 of the entry (step S2505). After that, the transfer control unit 213 ends the process.

ステップS2502において、特定されたエントリのバッファ607に格納されるデータのサイズが比較ブロックサイズ以上であると判定された場合、転送制御部213は、重複排除部211に副データブロックの検出指示を出力する(ステップS2506)。転送制御部213は、重複排除部211から応答を受け取るまで待ち状態に移行する。なお、副データブロックの検索処理は、図26を用いて説明する。 When it is determined in step S2502 that the size of the data stored in the buffer 607 of the identified entry is equal to or larger than the comparison block size, the transfer control unit 213 outputs a sub data block detection instruction to the deduplication unit 211. Yes (step S2506). The transfer control unit 213 shifts to a waiting state until it receives a response from the deduplication unit 211. The sub data block search process will be described with reference to FIG.

転送制御部213は、重複排除部211から受け取った応答に基づいて、特定されたエントリのバッファ607に格納されるデータに副データブロックが存在するか否かを判定する(ステップS2507)。 The transfer control unit 213 determines, based on the response received from the deduplication unit 211, whether or not a sub data block exists in the data stored in the buffer 607 of the identified entry (step S2507).

具体的には、転送制御部213は、重複排除部211からの応答が「該当データ無し」であるか否かを判定する。重複排除部211からの応答が「該当データ無し」である場合、転送制御部213は、特定されたエントリのバッファ607に格納されるデータに副データブロックが存在すると判定する。 Specifically, the transfer control unit 213 determines whether the response from the deduplication unit 211 is “no corresponding data”. When the response from the deduplication unit 211 is “no corresponding data”, the transfer control unit 213 determines that the data stored in the buffer 607 of the identified entry has a sub data block.

特定されたエントリのバッファ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 entry 607, the transfer control unit 213 specifies the data block including the sub data block and stores it in the buffer 607 of the specified entry. The data from the beginning of the data to the front of the data block is deleted, the encoded data is output, and the head 2201 of the specified entry is updated to "YES" (step S2508). After that, the transfer control unit 213 proceeds to step S1003. Specifically, the following processing is executed.

転送制御部213は、重複排除部211を介して、検索された副データブロックの識別情報(添字I)に基づいて、特定されたエントリのバッファ607に格納されるデータにおける、データブロックの先頭を特定する。 The transfer control unit 213 determines, via the deduplication unit 211, the head of the data block in the data stored in the buffer 607 of the identified entry based on the identification information (subscript I) of the retrieved sub data block. Identify.

転送制御部213は、重複排除部211にデータブロックの符号化を指示する。転送制御部213は、重複排除部211から符号化されたデータを取得するまで待ち状態に移行する。当該指示には、特定されたエントリのバッファ607に格納されるデータが含まれる。以下では、バッファ607に格納されるデータの先頭から当該データブロックの手前までのデータを対象データと記載する。 The transfer control unit 213 instructs the deduplication unit 211 to encode the data block. The transfer control unit 213 shifts to a waiting state until it acquires the encoded data from the deduplication unit 211. The instruction includes the data stored in the buffer 607 of the identified entry. Below, the data from the beginning of the data stored in the buffer 607 to the front of the data block will be described as the target data.

重複排除部211は、当該指示を受け付けた場合、dedup.type511に「3」を設定し、dedup.data_len512に対象データの長さを設定し、dedup.hash1 513及びdedup.hash2 514にダミーの値として「0」を設定することによってDedupヘッダ510を生成する。また、重複排除部211は、Dedupペイロード520に対象データを設定する。以上がステップS2508の処理の説明である。 When the deduplication unit 211 receives the instruction, the dedup. "3" is set in the type 511, and dedup. The length of the target data is set in the data_len 512, and the deletion. hash1 513 and dedup. By setting "0" as the dummy value in the hash2 514, the Dedup header 510 is generated. Further, the deduplication unit 211 sets the target data in the Dedup payload 520. The above is the description of the process of step S2508.

特定されたエントリのバッファ607に格納されるデータに副データブロックが存在しないと判定された場合、転送制御部213は、特定されたエントリのバッファ607に格納されるデータから比較ブロックサイズ分のデータを削除し、符号化されたデータを出力する(ステップS2509)。 When it is determined that the sub-data block does not exist in the data stored in the buffer 607 of the specified entry, the transfer control unit 213 determines that the data of the comparison block size is calculated from the data stored in the buffer 607 of the specified entry. Is deleted and the encoded data is output (step S2509).

ステップS2509の処理は、ステップS2508の処理と同様の処理である。ただし、Dedupペイロード520にはバッファ607から削除されたデータが含まれ、また、特定されたエントリのhead2201は更新されない。 The process of step S2509 is similar to the process of step S2508. However, the Dedup payload 520 includes the data deleted from the buffer 607, and the head 2201 of the specified entry is not updated.

比較ブロックサイズは、副データブロックのサイズより大きい値が設定される。比較ブロックサイズが大きい場合、処理の負荷が軽くなるため、データの分割を高速に行うことができる。一方、比較ブロックサイズが大きい場合、重複排除されるデータの割合が小さくなる。 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 deduplication unit 211 according to the second embodiment receives a sub data block detection instruction from the transfer control unit 213.

重複排除部211は、転送制御部213から副データブロックの検出指示を受け付けた場合、特定されたエントリのバッファ607に格納されるデータを取得する(ステップS2601)。 When the deduplication unit 211 receives a sub data block detection instruction from the transfer control unit 213, the deduplication unit 211 acquires the data stored in the buffer 607 of the identified entry (step S2601).

重複排除部211は、変数Sに「1」を設定し(ステップS2602)、また、データの先頭に所定のサイズのウインドウを配置する(ステップS2603)。データ分割部215は、ウインドウに含まれるデータのハッシュ値を算出する(ステップS2604)。 The deduplication unit 211 sets "1" in the variable S (step S2602), and arranges a window of a predetermined size at the beginning of the data (step S2603). The data dividing unit 215 calculates the hash value of the data included in the window (step S2604).

具体的には、データ分割部215は、変数αと同様の手順に基づいてハッシュ値SAを算出し、第3ハッシュ関数にデータを入力することによってハッシュ値SCを算出する。なお、ウインドウのサイズは、副データブロックのサイズと同一のものとする。 Specifically, the data dividing unit 215 calculates the hash value SA based on the same procedure as the variable α, and inputs the data to the third hash function to calculate the hash value SC. The size of the window is the same as the size of the sub data block.

次に、重複排除部211は、副検索インデックス2001を参照し(ステップS2605)、ハッシュ値XXがハッシュ値SCに一致する要素2401が存在するか否かを判定する(ステップS2606)。 Next, the deduplication unit 211 refers to the sub-search index 2001 (step S2605) and determines whether or not there is an element 2401 whose hash value XX matches the hash value SC (step S2606).

具体的には、重複排除部211は、SA行目の行に含まれる各要素2401に格納されるハッシュ値XXと、ハッシュ値SCとを比較する。 Specifically, the deduplication unit 211 compares the hash value XX stored in each element 2401 included in the SAth row with the hash value SC.

ハッシュ値XXがハッシュ値SCに一致する要素2401が存在すると判定された場合、重複排除部211は、転送制御部213に、当該要素2401に含まれる添字Iを応答として出力する(ステップS2607)。その後、重複排除部211は処理を終了する。 When it is determined that the element 2401 whose hash value XX matches the hash value SC exists, the deduplication unit 211 outputs the subscript I included in the element 2401 to the transfer control unit 213 as a response (step S2607). After that, the deduplication unit 211 ends the process.

ハッシュ値XXがハッシュ値SCに一致する要素2401が存在しないと判定された場合、重複排除部211は、変数Sが閾値以上であるか否かを判定する(ステップS2608)。閾値は任意に設定できる。 When it is determined that the element 2401 whose hash value XX matches the hash value SC does not exist, the deduplication unit 211 determines whether the variable S is equal to or greater than the threshold value (step S2608). The threshold can be set arbitrarily.

変数Sが閾値以上であると判定された場合、重複排除部211は、転送制御部213に、「該当データ無し」を応答として出力する(ステップS2609)。 When it is determined that the variable S is equal to or larger than the threshold value, the deduplication unit 211 outputs “no corresponding data” as a response to the transfer control unit 213 (step S2609).

変数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 deduplication unit 211 adds “1” to the variable S (step S2610), and also slides the window to the rear of the data (step S2611). After that, the deduplication unit 211 returns to step S2604. For example, the deduplication unit 211 slides the window backward by one byte.

図27は、実施例2の重複排除部211が転送制御部213によって呼び出された場合に実行する処理を説明するフローチャートである。 FIG. 27 is a flowchart illustrating processing executed when the deduplication unit 211 according to the second embodiment is called by the transfer control unit 213.

実施例2では、重複排除部211は、ステップS1508の処理が完了した後、副検索インデックス2001を更新する(ステップS2701)。その後、重複排除部211は、ステップS1509に進む。具体的には、以下のような処理が実行される。 In the second embodiment, the deduplication unit 211 updates the sub-search index 2001 after the processing of step S1508 is completed (step S2701). After that, the deduplication unit 211 proceeds to step S1509. Specifically, the following processing is executed.

重複排除部211は、データブロックに含まれる副データブロックの中から、対象の副データブロックを選択し、当該副データブロックを第1ハッシュ関数及び第2ハッシュ関数に入力し、ハッシュ値Sa及びハッシュ値Scを算出する。 The deduplication unit 211 selects a target sub-data block from the sub-data blocks included in the data block, inputs the sub-data block to the first hash function and the second hash function, and outputs the hash value Sa and the hash value. The value Sc is calculated.

重複排除部211は、副検索インデックス2001を参照し、Sa行目に含まれる要素2401に空の要素2401が存在するか否かを判定する。 The deduplication unit 211 refers to the sub-search index 2001 and determines whether or not an empty element 2401 exists in the element 2401 included in the Sa row.

Sa行目に含まれる要素2401に空の要素2401が存在する場合、重複排除部211は、空きの要素2401のハッシュ値XXにハッシュ値Scを格納し、添字Iにデータブロックにおける対象の副データブロックの位置を示す値を格納する。 When the empty element 2401 is present in the element 2401 included in the Sa row, the deduplication unit 211 stores the hash value Sc in the hash value XX of the empty element 2401 and the subscript I is the target sub-data in the data block. Stores the value that indicates the position of the block.

Sa行目に含まれる要素2401に空の要素2401が存在しない場合、重複排除部211は、所定のアルゴリズムに基づいて、Sa行目に含まれる要素2401の中から値を設定する要素2401を一つ選択する。重複排除部211は、選択された要素2401のハッシュ値XXにハッシュ値Scを格納し、添字Iにデータブロックにおける対象の副データブロックの位置を示す値を格納する。以上がステップS2701の処理の説明である。 When the empty element 2401 does not exist in the element 2401 included in the Sa row, the deduplication unit 211 determines one of the elements 2401 included in the Sa row to set a value based on a predetermined algorithm. Choose one. The deduplication unit 211 stores the hash value Sc in the hash value XX of the selected element 2401 and stores the value indicating the position of the target sub data block in the data block in the subscript I. The above is the description of the process of step S2701.

実施例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 transfer device 110 can check the boundaries of the data blocks in byte units by using the sub data blocks while keeping the comparison block size intervals. When the process of identifying the boundary of the data block with respect to the entire data limits the speed of the transfer process, the process of identifying the boundary of the data block can be thinned by increasing the size of the comparison block size.

また、データブロックサイズと独立したパラメータである比較ブロックサイズを用いることによって、バイト単位のデータブロックの境界の特定処理の間引き方を調整できる。データブロックサイズを小さくした場合、データブロックが一致する可能性が高まるため重複排除の効果を高めることができ、比較ブロックサイズを大きくした場合、バイト単位のデータブロックの境界の特定処理が間引かれるため処理を高速化できる。 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に記載の転送装置であって、
前記比較値及び前記検索値は、ハッシュ値であり、
前記転送制御部は、第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.
請求項2に記載の転送装置であって、
前記転送制御部は、
前記第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.
端末間で送受信されるデータを転送する複数の転送装置を備えるネットワークシステムであって、 A network system comprising a plurality of transfer devices for transferring data transmitted and received between terminals,
前記複数の転送装置の各々は、 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.
請求項4に記載のネットワークシステムであって、 The network system according to claim 4, wherein:
前記第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.
請求項5に記載のネットワークシステムであって、 The network system according to claim 5,
前記第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.
請求項5に記載のネットワークシステムであって、 The network system according to claim 5,
前記第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.
JP2018535971A 2016-08-24 2016-08-24 Transfer device and network system Active JP6730437B2 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Also Published As

Publication number Publication date
WO2018037495A1 (en) 2018-03-01
JPWO2018037495A1 (en) 2019-01-10

Similar Documents

Publication Publication Date Title
CN107911249B (en) Method, device and equipment for sending command line of network equipment
EP3125501B1 (en) File synchronization method, server, and terminal
CN103729470A (en) Secure storage method based on different cloud storage ends
EP3316150A1 (en) Method and apparatus for file compaction in key-value storage system
EP2960800B1 (en) Wireless access device and wireless access system
EP3474146B1 (en) Data processing method, storage system and exchange device
CN111130822B (en) Communication method, device, system and computer readable storage medium
CA2941163C (en) Data processing method and apparatus
CN106569963A (en) Buffering method and buffering device
JP6164042B2 (en) Relay device, relay method, relay program, and relay system
JP2016177688A (en) Data processor, data processing method and computer program
JP6730437B2 (en) Transfer device and network system
US11226778B2 (en) Method, apparatus and computer program product for managing metadata migration
CN104933054A (en) Uniform resource locator (URL) storage method and device of cache resource file, and cache server
CN109417507A (en) The message of section retards accesses
CN114338510A (en) Data forwarding method and system with separated control and forwarding
JP5941969B2 (en) Data transmission apparatus and method
KR20170006742A (en) Software Router, Method for Routing Table Lookup and Updating Routing Entry thereof
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
CN110896408B (en) Data processing method and server cluster
JP2018511131A (en) Hierarchical cost-based caching for online media
US20160085683A1 (en) Data receiving device and data receiving method
CN108614879A (en) Small documents processing method and device

Legal Events

Date Code Title Description
A529 Written submission of copy of amendment under section 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 Written amendment

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