KR101568390B1 - Method for transmitting and receiving data using bloom filter - Google Patents

Method for transmitting and receiving data using bloom filter Download PDF

Info

Publication number
KR101568390B1
KR101568390B1 KR1020140025433A KR20140025433A KR101568390B1 KR 101568390 B1 KR101568390 B1 KR 101568390B1 KR 1020140025433 A KR1020140025433 A KR 1020140025433A KR 20140025433 A KR20140025433 A KR 20140025433A KR 101568390 B1 KR101568390 B1 KR 101568390B1
Authority
KR
South Korea
Prior art keywords
packet
bloom filter
fingerprints
chunks
transmitting
Prior art date
Application number
KR1020140025433A
Other languages
Korean (ko)
Other versions
KR20150104248A (en
Inventor
백상헌
박광우
심영준
Original Assignee
고려대학교 산학협력단
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 고려대학교 산학협력단 filed Critical 고려대학교 산학협력단
Priority to KR1020140025433A priority Critical patent/KR101568390B1/en
Publication of KR20150104248A publication Critical patent/KR20150104248A/en
Application granted granted Critical
Publication of KR101568390B1 publication Critical patent/KR101568390B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/166IP fragmentation; TCP segmentation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

수신 단말기에서 동작하는 데이터 수신 방법이 개시된다. 상기 데이터 수신 방법은 송신 단말기로부터 패킷을 수신하는 단계, 수신된 패킷의 인코딩 여부를 확인하는 단계, 및 상기 수신된 패킷이 인코딩된 패킷인 경우, 상기 인코딩된 패킷에 포함된 참조 값을 상기 참조 값에 대응하는 핑거프린트에 대응하는 청크로 교체하여 상기 인코딩된 패킷을 디코딩하는 단계를 포함한다.A data receiving method operating in a receiving terminal is disclosed. The data receiving method includes receiving a packet from a transmitting terminal, checking whether the received packet is encoded, and determining whether a reference value included in the encoded packet is a reference value, if the received packet is an encoded packet, And decoding the encoded packet by replacing with a chunk corresponding to a fingerprint corresponding to the encoded fingerprint.

Description

블룸 필터를 이용한 데이터 송수신 방법{METHOD FOR TRANSMITTING AND RECEIVING DATA USING BLOOM FILTER}TECHNICAL FIELD The present invention relates to a method for transmitting and receiving data using a Bloom filter,

본 발명의 개념에 따른 실시 예는 블룸 필터를 이용한 데이터 송수신 방법에 관한 것으로, 특히, 수신된 패킷으로부터 다음에 수신될 패킷을 예측하고, 예측 정보를 포함하는 블룸 필터를 이용하여 전송될 패킷의 용량을 줄임으로써, 트래픽을 감소시킬 수 있는 데이터 송수신 방법에 관한 것이다.More particularly, the present invention relates to a method of transmitting / receiving data using a Bloom filter, and more particularly, to a method and apparatus for predicting a next packet to be received from a received packet, a capacity of a packet to be transmitted using a Bloom filter including prediction information To a data transmission / reception method capable of reducing traffic.

네트워크의 트래픽을 감소시키기 위한 일반적인 방법으로서 웹 캐시 기법이 널리 사용되고 있다. 상기 웹 캐시 기법은 주로 컨텐츠 제공 서버와 사용자 단말기 사이에 구비된 캐시 서버를 활용한다. 상기 캐시 서버는 빈번하게 요청되는 컨텐츠들을 저장하고 있기 때문에 상기 사용자 단말기를 이용하는 사용자는 상기 사용자 단말기로부터 원거리에 위치한 상기 컨텐츠 제공 서버가 아니 상기 사용자 단말기로부터 근거리에 위치한 상기 캐시 서버로부터 컨텐츠를 제공받을 수 있다.As a general method for reducing the traffic of a network, a web cache technique is widely used. The web cache technique utilizes a cache server provided between a content providing server and a user terminal. Since the cache server stores frequently requested contents, a user using the user terminal can receive content from the cache server located near by the user terminal rather than the content providing server located remotely from the user terminal have.

하지만 일반적인 웹 캐시 기법은 HTTP(Hyper Text Protocol)의 URL(Uniform Resource Locator) 정보를 이용하여 컨텐츠의 동일 여부를 구분하기 때문에 다양한 응용계층 프로토콜에 사용되기 어려다. 또한, 인터넷에는 동일한 내용을 포함하는 컨텐츠가 서로 다른 URL 정보를 가지고 있는 경우가 많기 때문에 이를 이용한 컨텐츠 구별 방법 또한 신뢰성을 주지 못하고 있다.However, since the general web caching technique uses the uniform resource locator (URL) information of HTTP (Hyper Text Protocol) to identify the same content, it can not be used in various application layer protocols. In addition, since the contents having the same contents often have different URL information on the Internet, the method of distinguishing contents using the contents also has not provided reliability.

상기와 같은 웹 캐시 기법의 문제점을 해결하기 위한 기법으로서, 프로토콜에 독립적인 중복 제거 기법(protocol-independent redundancy elimination technique)이 존재한다. 상기 중복 제거 기법은 네트워크에서 중복적으로 전송되는 트래픽을 감소시키기 위한 기법으로써, 주로 네트워크 3계층인 네트워크 계층의 패킷을 대상으로 하기 때문에 상위 프로토콜에 독립적으로 사용될 수 있다.As a technique for solving the problem of the above-described web cache technique, there is a protocol-independent redundancy elimination technique. The deduplication technique is a technique for reducing traffic transmitted redundantly in a network, and can be used independently of an upper protocol because it mainly targets packets at a network layer, which is a network 3 layer.

도 1은 종래의 중복 제거 기법을 수행하기 위한 시스템을 도시한다.FIG. 1 illustrates a system for performing a conventional de-duplication technique.

도 1을 참조하면, 중복 제거 시스템(1)은 유선상에 위치한 고정된 2 개의 단말기인 송신 단말기(3)와 수신 단말기(5)를 포함한다. Referring to FIG. 1, the deduplication system 1 includes a transmitting terminal 3 and a receiving terminal 5, which are fixed two terminals located on the wire.

송신 단말기(3)와 수신 단말기(5)는 서로의 캐시 정보를 공유하여 이미 전송된 트래픽, 즉 중복되어 전송되는 트래픽을 제거함으로써 두 단말기 사이의 트래픽을 감소시킨다.The transmitting terminal 3 and the receiving terminal 5 share traffic information between the transmitting terminal 3 and the receiving terminal 5 to reduce traffic between the two terminals by eliminating already transmitted traffic, that is, duplicated traffic.

송신 단말기(3)는 패킷(P1)을 바이트 스트림(byte stream)으로 보고, 패킷(P1) 내에서 이미 전송된 부분을 제거함으로써 트래픽을 제거할 수 있다. 즉, 송신 단말기(3)는 패킷(P1)의 데이터 페이로드를 청크(chunk) 단위로 분할하며, 다수의 청크들(C1 내지 C5) 각각의 해시(hash) 값을 계산한 후에 계산된 해시 값에 기반한 핑거프린트(fingerprint)를 생성한다.The transmitting terminal 3 can remove the traffic by considering the packet P1 as a byte stream and removing the already transmitted part in the packet P1. That is, the transmitting terminal 3 divides the data payload of the packet P1 into chunks, calculates a hash value of each of the plurality of chunks C1 to C5, Based fingerprint. ≪ / RTI >

생성된 핑거프린트가 송신 단말기(3) 내의 핑거프린트 저장소에 이미 저장되어 있다면 핑거프린트에 대응하는 데이터가 수신 단말기(5) 측에도 캐시되어 있음을 의미할 수 있다. 따라서, 송신 단말기(3)는 패킷(P1) 내의 다수의 청크들 중 이미 전송되었다고 판단된 청크들(C2, C4)을 대응하는 핑거프린트(F2, F4)로 교체한다. 이와 같이 중복되는 청크들을 핑거프린트로 교체하여 패킷의 크기를 줄이는 과정을 인코딩(encoding)이라 한다. 송신 단말기(3)는 인코딩된 패킷(P2)을 수신 단말기(5)로 전송한다.If the generated fingerprint is already stored in the fingerprint storage in the transmitting terminal 3, it may mean that the data corresponding to the fingerprint is also cached on the receiving terminal 5 side. Thus, the transmitting terminal 3 replaces the chunks C2, C4 determined to have already been transmitted among the plurality of chunks in the packet P1 with the corresponding fingerprints F2, F4. The process of reducing the size of a packet by replacing duplicated chunks with fingerprints is called encoding. The transmitting terminal 3 transmits the encoded packet P2 to the receiving terminal 5.

수신 단말기(5)는 수신된 패킷(P3) 내의 핑거프린트(F2, F4)를 자신의 핑거프린트 저장소에서 검색하고, 핑거프린트(F2, F4)를 이에 대응하는 실제 데이터(C2, C4)로 교체하여 패킷을 복원시킨다. 위와 같은 패킷 복원 과정을 디코딩(decoding)이라 한다.The receiving terminal 5 retrieves the fingerprints F2 and F4 in the received packet P3 from its fingerprint store and replaces the fingerprints F2 and F4 with the corresponding actual data C2 and C4 And restores the packet. The above packet restoration process is called decoding.

결과적으로, 핑거프린트의 크기가 청크의 크기에 비해 매우 작기 때문에 송신 단말기(3)와 수신 단말기(5) 사이의 네트워크 트래픽을 효율적으로 줄일 수 있다.As a result, the network traffic between the transmitting terminal 3 and the receiving terminal 5 can be efficiently reduced because the size of the fingerprint is very small compared to the size of the chunk.

기존의 중복 제거 기법은 단말 사이에 전송되는 패킷의 에러율이 매우 낮고, 단말 사이의 통신이 지속적으로 가능하여 상호간의 캐시 정보를 공유하는 것이 용이한 유선 네트워크 상에서 활용가능한 효율적인 해결책을 제시하고 있다. The existing deduplication technique provides an efficient solution that can be used on a wired network where the error rate of the packets transmitted between the terminals is very low and communication between the terminals is continuously possible so that mutual cache information can be easily shared.

그러나, 전송되는 패킷의 에러율이 높으며, 단말 사이의 캐시 정보의 공유가 어려우며, 지속적인 통신이 불가능한 무선상의 단말간 직접 통신 상에서 상기 기존의 중복 제거 기법을 적용하기는 어렵다.However, it is difficult to apply the existing deduplication technique in direct communication between wireless terminals in which the error rate of the transmitted packets is high, sharing of cache information between terminals is difficult, and continuous communication is impossible.

대한민국 등록특허공보 제0781218호Korean Patent Publication No. 0781218 대한민국 공개특허공보 제2008-0087997호Korean Patent Publication No. 2008-0087997

본 발명이 이루고자 하는 기술적인 과제는 수신된 패킷으로부터 다음에 수신될 패킷을 예측하고, 예측 정보를 포함하고 있는 블룸 필터를 이용하여 상기 다음에 수신될 패킷의 용량을 감소시킬 수 있는 데이터 송수신 방법을 제공하는 것이다.SUMMARY OF THE INVENTION The present invention provides a data transmission / reception method capable of predicting a next packet to be received from a received packet and reducing the capacity of a packet to be received next using a bloom filter including prediction information .

본 발명의 실시 예에 따른, 수신 단말기에서 동작하는 데이터 수신 방법은 송신 단말기로부터 패킷을 수신하는 단계, 수신된 패킷의 인코딩 여부를 확인하는 단계, 및 상기 수신된 패킷이 인코딩된 패킷인 경우, 상기 인코딩된 패킷에 포함된 참조 값을 상기 참조 값에 대응하는 핑거프린트에 대응하는 청크로 교체하여 상기 인코딩된 패킷을 디코딩하는 단계를 포함한다.According to another aspect of the present invention, there is provided a method of receiving data from a receiving terminal, the method comprising: receiving a packet from a transmitting terminal; checking whether the received packet is encoded; And replacing the reference value included in the encoded packet with a chunk corresponding to the fingerprint corresponding to the reference value to decode the encoded packet.

상기 디코딩하는 단계에서 상기 인코딩된 패킷을 디코딩하지 못한 경우, 상기 수신된 패킷에 대한 원본 패킷의 송신을 상기 송신 단말기에 요청하는 단계를 더 포함할 수 있다.And requesting the transmitting terminal to transmit an original packet to the received packet if the encoded packet can not be decoded in the decoding step.

또한, 상기 수신된 패킷이 인코딩된 패킷이 아닌 경우, 상기 수신된 패킷을 다수의 청크들로 분할하고, 각각이 상기 다수의 청크들 각각에 대응하는 다수의 핑거프린트들을 생성하는 단계, 상기 다수의 핑거프린트들 중 미리 저장된 다수의 블룸 필터들 각각에 속하는 핑거프린트의 갯수를 도출하는 단계, 미리 결정된 값 이상의 갯수를 포함하는 블룸 필터를 상기 송신 단말기로 송신하는 단계를 포함할 수 있다.Dividing the received packet into a plurality of chunks and generating a plurality of fingerprints, each corresponding to each of the plurality of chunks, if the received packet is not an encoded packet; Deriving the number of fingerprints belonging to each of a plurality of previously stored bloom filters among the fingerprints, and transmitting the bloom filter including the number of fingerprints exceeding a predetermined value to the transmitting terminal.

또한, 상기 데이터 수신 방법은 상기 미리 결정된 값 이상의 갯수를 포함하는 블룸 필터가 존재하지 않는 경우, 상기 수신된 패킷에 대한 원본 패킷의 송신을 상기 송신 단말기에 요청하는 단계를 더 포함할 수 있다.The data receiving method may further include requesting, by the transmitting terminal, transmission of an original packet for the received packet if there is no Bloom filter including the number exceeding the predetermined value.

또한, 상기 데이터 수신 방법은 상기 송신 단말기로부터, 상기 블룸 필터를 이용하여 인코딩된 다음 패킷을 수신하는 단계를 더 포함할 수 있다.In addition, the data receiving method may further include receiving, from the transmitting terminal, a next packet encoded using the Bloom filter.

상기 다수의 블룸 필터들 각각에는 이전에 수신된 패킷들 각각에 포함된 청크들 각각의 핑거프린트들이 등록될 수 있다.Each of the plurality of Bloom filters may have fingerprints of each of the chunks included in each of the previously received packets.

본 발명의 다른 실시 예에 따른 송신 단말기에서 동작하는 데이터 송신 방법은 수신 단말기로부터 블룸 필터의 수신 여부를 결정하는 단계, 상기 블룸 필터가 수신된 경우, 상기 수신 단말기로 송신하려는 원본 패킷을 다수의 청크들로 분할하여 분할된 패킷을 생성하고, 각각이 상기 다수의 청크들 각각에 대응하는 다수의 핑거프린트들을 생성하는 단계, 상기 분할된 패킷에 포함된 다수의 청크들 중에서, 상기 다수의 핑거프린트들 중에서 상기 블룸 필터에 속하는 핑거프린트에 대응하는 청크를 참조 값으로 대체하여 인코딩된 패킷을 생성하는 단계, 및 상기 인코딩된 패킷을 상기 수신 단말기로 송신하는 단계를 포함한다.A method for transmitting data in a transmitting terminal according to another exemplary embodiment of the present invention includes the steps of determining whether a Bloom filter is received from a receiving terminal, receiving a Bloom filter, and transmitting a source packet to be transmitted to the receiving terminal to a plurality of chunks And generating a plurality of fingerprints each corresponding to each of the plurality of chunks, wherein, among the plurality of chunks included in the divided packet, the plurality of fingerprints Generating an encoded packet by replacing a chunk corresponding to a fingerprint belonging to the Bloom filter with a reference value among the plurality of bloom filters, and transmitting the encoded packet to the receiving terminal.

또한, 상기 데이터 송신 방법은 상기 수신 단말기로부터 수신된 블룸 필터가 존재하지 않는 경우, 상기 원본 패킷을 상기 수신 단말기로 송신하는 단계를 더 포함할 수 있다.The data transmission method may further include transmitting the original packet to the receiving terminal when the Bloom filter received from the receiving terminal does not exist.

상기 참조 값은 상기 참조 값에 대응하는 상기 핑거프린트에 포함된 비트 시퀀스(bit sequence) 또는 바이트 시퀀스(byte sequence)의 일부일 수 있다.The reference value may be part of a bit sequence or a byte sequence included in the fingerprint corresponding to the reference value.

또한, 상기 인코딩된 패킷을 생성하는 단계에서, 상기 블룸 필터에 속하는 핑거프린트가 존재하지 않는 경우, 상기 원본 패킷을 상기 수신 단말기로 송신하는 단계를 더 포함할 수 있다.The generating of the encoded packet may further include transmitting the original packet to the receiving terminal when there is no fingerprint belonging to the Bloom filter.

본 발명의 또 다른 실시 예에 따른, 송신 단말기에서 동작하는 데이터 송신 방법은 수신 단말기로 송신하려는 원본 패킷을 다수의 청크들로 분할하여 분할된 패킷을 생성하고, 각각이 상기 다수의 청크들 각각에 대응하는 다수의 핑거프린트들을 생성하는 단계, 상기 분할된 패킷에 포함된 다수의 청크들 중에서, 상기 다수의 핑거프린트들 중에서 상기 수신 단말기로부터 수신된 블룸 필터에 속하는 핑거프린트에 대응하는 청크를 참조 값으로 대체하여 인코딩된 패킷을 생성하는 단계, 및 상기 인코딩된 패킷을 상기 수신 단말기로 송신하는 단계를 포함한다.According to another embodiment of the present invention, a data transmission method operating in a transmitting terminal includes dividing an original packet to be transmitted to a receiving terminal into a plurality of chunks to generate divided packets, Generating a corresponding plurality of fingerprints, selecting a chunk corresponding to a fingerprint belonging to the bloom filter received from the receiving terminal from among the plurality of fingerprints, among the plurality of chunks included in the divided packet, To generate an encoded packet, and transmitting the encoded packet to the receiving terminal.

상기 참조 값은 상기 블룸 필터에 속하는 상기 핑거프린트에 포함된 비트 시퀀스 또는 바이트 시퀀스의 일부일 수 있다.The reference value may be part of a bit sequence or a byte sequence included in the fingerprint belonging to the Bloom filter.

본 발명의 또 다른 실시 예에 따른, 수신 단말기에서 동작하는 데이터 수신 방법은 송신 단말기로부터 패킷을 수신하는 단계, 수신된 패킷을 다수의 청크들로 분할하고, 각각이 상기 다수의 청크들 각각에 대응하는 다수의 핑거프린트들을 생성하는 단계, 미리 저장된 다수의 청크 집합들 중에서 상기 수신된 패킷과의 연관성이 가장 높은 청크 집합을 선택하는 단계, 및 상기 선택된 청크 집합에 포함된 블룸 필터를 상기 송신 단말기로 송신하는 단계, 상기 송신 단말기로부터 다음 패킷을 수신하는 단계를 포함한다. According to yet another embodiment of the present invention, a method of receiving data from a receiving terminal comprises receiving a packet from a transmitting terminal, dividing the received packet into a plurality of chunks, Selecting a chunk set having the highest association with the received packet among a plurality of chunk sets stored in advance, and transmitting the bloom filter included in the selected chunk set to the transmitting terminal And receiving the next packet from the transmitting terminal.

상기 다음 패킷은 상기 블룸 필터에 등록된 핑거프린트를 이용하여 생성된 참조 값을 포함하고, 상기 데이터 수신 방법은 상기 참조 값을 상기 선택된 청크 집합에 포함된 다수의 청크들 중에서 상기 참조 값에 대응하는 청크로 교체하는 단계를 더 포함할 수 있다.Wherein the next packet includes a reference value generated using fingerprints registered in the Bloom filter, and the data receiving method further comprises: comparing the reference value with a reference value corresponding to the reference value among a plurality of chunks included in the selected chunk set And replacing it with a chunk.

본 발명의 실시 예에 따른 데이터 송수신 방법은 수신된 패킷을 기반으로 다음에 수신될 패킷의 용량을 감소시킴으로써, 트래픽을 감소시킬 수 있는 효과가 있다.The data transmission / reception method according to the embodiment of the present invention has an effect of reducing the traffic by reducing the capacity of the next packet to be received based on the received packet.

또한, 상기 데이터 송수신 방법은 수신 단말기로부터 수신된 블룸 필터를 이용하여 원본 패킷을 인코딩함으로써, 수신 단말기와 송신 단말기 사이의 동기화 과정이 없이 효율적으로 트래픽을 감소시킬 수 있는 효과가 있다.In addition, the data transmission / reception method can efficiently reduce traffic without a synchronization process between the receiving terminal and the transmitting terminal by encoding the original packet using the Bloom filter received from the receiving terminal.

본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 종래의 중복 제거 기법을 수행하기 위한 시스템을 도시한다.
도 2는 본 발명의 일 실시 예에 따른 데이터 통신 시스템을 도시한다.
도 3은 도 2에 도시된 수신 단말기의 기능 블럭도이다.
도 4는 도 3에 도시된 청크 집합 생성 모듈의 동작을 설명하기 위한 도면이다.
도 5는 도 3에 도시된 청크 집합 예측 모듈의 동작을 설명하기 위한 도면이다.
도 6은 도 2에 도시된 송신 단말기의 기능 블럭도이다.
도 7은 도 6에 도시된 인코딩 모듈의 동작 과정을 설명하기 위한 도면이다.
도 8은 도 2에 도시된 수신 단말기에서의 동작을 설명하기 위한 흐름도이다.
도 9는 도 2에 도시된 송신 단말기의 동작을 설명하기 위한 흐름도이다.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS In order to more fully understand the drawings recited in the detailed description of the present invention, a detailed description of each drawing is provided.
FIG. 1 illustrates a system for performing a conventional de-duplication technique.
2 illustrates a data communication system in accordance with an embodiment of the present invention.
3 is a functional block diagram of the receiving terminal shown in FIG.
FIG. 4 is a view for explaining the operation of the chunk set generation module shown in FIG.
FIG. 5 is a view for explaining the operation of the chunk set prediction module shown in FIG.
6 is a functional block diagram of the transmitting terminal shown in FIG.
FIG. 7 is a diagram for explaining an operation process of the encoding module shown in FIG.
FIG. 8 is a flowchart for explaining an operation in the receiving terminal shown in FIG. 2. FIG.
FIG. 9 is a flowchart for explaining the operation of the transmitting terminal shown in FIG. 2. FIG.

본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.It is to be understood that the specific structural or functional description of embodiments of the present invention disclosed herein is for illustrative purposes only and is not intended to limit the scope of the inventive concept But may be embodied in many different forms and is not limited to the embodiments set forth herein.

본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.The embodiments according to the concept of the present invention can make various changes and can take various forms, so that the embodiments are illustrated in the drawings and described in detail herein. It should be understood, however, that it is not intended to limit the embodiments according to the concepts of the present invention to the particular forms disclosed, but includes all modifications, equivalents, or alternatives falling within the spirit and scope of the invention.

제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1 구성 요소는 제2 구성 요소로 명명될 수 있고 유사하게 제2 구성 요소는 제1 구성 요소로도 명명될 수 있다.The terms first, second, etc. may be used to describe various elements, but the elements should not be limited by the terms. The terms may be named for the purpose of distinguishing one element from another, for example, without departing from the scope of the right according to the concept of the present invention, the first element may be referred to as a second element, The component may also be referred to as a first component.

어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.It is to be understood that when an element is referred to as being "connected" or "connected" to another element, it may be directly connected or connected to the other element, . On the other hand, when an element is referred to as being "directly connected" or "directly connected" to another element, it should be understood that there are no other elements in between. Other expressions that describe the relationship between components, such as "between" and "between" or "neighboring to" and "directly adjacent to" should be interpreted as well.

본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. The singular expressions include plural expressions unless the context clearly dictates otherwise. In this specification, the terms "comprises" or "having" and the like are used to specify that there are features, numbers, steps, operations, elements, parts or combinations thereof described herein, But do not preclude the presence or addition of one or more other features, integers, steps, operations, components, parts, or combinations thereof.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless otherwise defined, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Terms such as those defined in commonly used dictionaries are to be interpreted as having a meaning consistent with the meaning of the context in the relevant art and, unless explicitly defined herein, are to be interpreted as ideal or overly formal Do not.

이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings attached hereto.

도 2는 본 발명의 일 실시 예에 따른 데이터 통신 시스템을 도시한다.2 illustrates a data communication system in accordance with an embodiment of the present invention.

도 2를 참조하면, 데이터 통신 시스템(10)은 수신 단말기(100)와 송신 단말기(300)를 포함한다.Referring to FIG. 2, the data communication system 10 includes a receiving terminal 100 and a transmitting terminal 300.

수신 단말기(100)는 단말간 직접 통신(device-to-device communication)을 이용하여 송신 단말기(300)와 데이터 또는 정보를 송수신할 수 있다. 상기 단말간 직적 통신은 동일한 셀 또는 서로 인접한 셀 내에 위치하는 단말들이 상호 간에 통신 링크를 설정한 후, 기지국을 거치지 않고 설정된 통신 링크를 통해 직접적으로 데이터를 송수신하는 통신 방식을 의미한다. The receiving terminal 100 may transmit and receive data or information with the transmitting terminal 300 using device-to-device communication. The inter-terminal direct communication refers to a communication method in which terminals located in the same cell or neighboring cells establish communication links with each other and then directly transmit and receive data through a communication link established without going through a base station.

수신 단말기(100)와 송신 단말기(300)는 휴대폰(mobile phone), 스마트폰(smart phone), PDA(personal digital assistants), PMP(portable multimedia player), PC(personal computer), 노트북(note book) 컴퓨터, e-reader 등으로 구현될 수 있다.The receiving terminal 100 and the transmitting terminal 300 may be a mobile phone, a smart phone, a personal digital assistant (PDA), a portable multimedia player (PMP), a personal computer (PC) A computer, an e-reader, or the like.

송신 단말기(300)는 수신 단말기(100)의 요청에 응답하거나, 네트워크의 상위 계층으로부터 패킷을 수신한 것에 응답하여, 패킷(packet) 단위의 데이터를 수신 단말기(100)로 송신할 수 있다. 이때, 송신되는 패킷은 송신 단말기(300)에 의해 인코딩된 패킷일 수 있다.The transmitting terminal 300 may transmit data in units of packets to the receiving terminal 100 in response to a request from the receiving terminal 100 or in response to receiving a packet from an upper layer of the network. At this time, the transmitted packet may be a packet encoded by the transmitting terminal 300.

수신 단말기(100)는 송신 단말기(300)로부터 패킷을 수신한다. 수신 단말기(100)는 수신된 패킷의 인코딩 유무에 따라 상기 수신된 패킷을 디코딩할 수 있다. 또한, 수신 단말기(100)는 상기 수신된 패킷이 인코딩되어 있지 않은 경우, 상기 수신된 패킷을 다수의 청크들(chunks)로 분할하고, 상기 다수의 청크들 각각의 핑거프린트를 생성할 수 있다. 또한, 수신 단말기(100)는 상기 다수의 청크들과 상기 다수의 핑거프린트들에 대한 블룸 필터(bloom filter)를 생성할 수 있다. 상기 다수의 청크들, 상기 다수의 핑거프린트들 및 상기 블룸 필터는 청크 집합으로 명명될 수 있다.The receiving terminal 100 receives a packet from the transmitting terminal 300. The receiving terminal 100 may decode the received packet according to whether the received packet is encoded or not. In addition, if the received packet is not encoded, the receiving terminal 100 may divide the received packet into a plurality of chunks and generate a fingerprint of each of the plurality of chunks. In addition, the receiving terminal 100 may generate a bloom filter for the plurality of chunks and the plurality of fingerprints. The plurality of chunks, the plurality of fingerprints, and the Bloom filter may be referred to as chunk sets.

또한, 수신 단말기(100)는 상기 메모리에 저장된 다수의 청크 집합들과 수신된 패킷의 연관성을 결정하고, 연관성에 따라 다음에 수신될 패킷을 예측 또는 예상할 수 있다. 즉, 수신 단말기(100)는 상기 생성된 청크 집합에 포함된 다수의 핑거프린트들이 이전에 수신되어 상기 메모리에 저장된 다수의 청크 집합들 각각의 블룸 필터에 속하는지 여부를 판단하고, 판단 결과에 따라 일정 개수(d, d는 자연수) 이상의 핑거프린트를 포함하고 있는 블룸 필터를 선택한다. 수신 단말기(100)는 선택된 블룸 필터가 포함된 청크 집합을 예측 청크 집합으로 결정하고, 상기 예측 청크 집합에 포함된 블룸 필터를 송신 단말기(300)로 전송한다.In addition, the receiving terminal 100 may determine the association between a plurality of chunk sets stored in the memory and the received packet, and predict or predict a next packet to be received according to the association. That is, the receiving terminal 100 determines whether or not a plurality of fingerprints included in the generated chunk set are previously received and belong to each of the plurality of chunk sets stored in the memory, Select a Bloom filter that contains a fingerprint of a certain number (d, d is a natural number) or more. The receiving terminal 100 determines a chunk set including the selected bloom filter as a predicted chunk set and transmits the bloom filter included in the predicted chunk set to the transmitting terminal 300.

상기 블룸 필터를 수신한 송신 단말기(300)가 다음 패킷을 수신 단말기(100)로 전송하고자 할 때, 송신 단말기는 패킷을 다수의 청크들로 분할하고, 상기 다수의 청크들 각각의 핑거프린트를 생성할 수 있다. 송신 단말기(300)는 다수의 핑거프린트들 각각이 상기 블룸 필터에 속하는지 여부를 판단하고, 판단 결과에 따라 송신될 패킷을 인코딩한다.When the transmitting terminal 300 receiving the Bloom filter tries to transmit the next packet to the receiving terminal 100, the transmitting terminal divides the packet into a plurality of chunks and generates fingerprints of the plurality of chunks can do. The transmitting terminal 300 determines whether each of the plurality of fingerprints belongs to the Bloom filter, and encodes the packet to be transmitted according to the determination result.

즉, 송신 단말기(300)는 다수의 핑거프린트들 중에서 상기 블룸 필터에 속하는 핑거프린트를 검색한 경우, 검색된 핑거프린트에 대응하는 청크를 참조 값으로 교체하고, 상기 참조 값을 포함하고 있는 패킷을 수신 단말기(100)로 전송할 수 있다. 상기와 같이 송신 단말기(300)가 패킷 내의 청크를 참조 값으로 교체하는 과정을 인코딩(incoding)이라 하고, 상기 참조 값을 포함하고 있는 패킷을 인코딩된 패킷이라 한다.That is, when the fingerprint belonging to the Bloom filter is searched among the plurality of fingerprints, the transmitting terminal 300 replaces the chunk corresponding to the searched fingerprint with a reference value, and receives a packet containing the reference value To the terminal (100). As described above, the process of replacing the chunk in the packet with the reference value is referred to as incoding, and the packet including the reference value is referred to as an encoded packet.

수신 단말기(100)는 송신 단말기(300)로부터 인코딩된 패킷을 수신하고, 수신된 패킷 내의 참조 값을 청크로 교체할 수 있다. 수신된 패킷 내의 참조 값들을 청크로 교체함으로써, 송신 단말기(300)가 송신하려 했던 패킷인 원본 패킷을 복원하는 과정을 디코딩(decoding)이라 한다.The receiving terminal 100 may receive the encoded packet from the transmitting terminal 300 and replace the reference value in the received packet with a chunk. The process of restoring the original packet, which is the packet that the transmitting terminal 300 has tried to transmit, by replacing the reference values in the received packet with chunks, is called decoding.

상기와 같이, 송신 단말기(300)는 인코딩된 패킷을 수신 단말기(100)로 전송함으로써 트래픽을 감소시킬 수 있는 효과가 있고, 수신 단말기는 인코딩된 패킷 내의 참조 값을 청크로 교체함으로써 효율적으로 패킷을 복원할 수 있다.As described above, the transmitting terminal 300 has an effect of reducing the traffic by transmitting the encoded packet to the receiving terminal 100, and the receiving terminal efficiently exchanges the packet by replacing the reference value in the encoded packet with the chunk Can be restored.

도 3은 도 2에 도시된 수신 단말기의 기능 블럭도이다.3 is a functional block diagram of the receiving terminal shown in FIG.

도 2와 도 3을 참조하면, 수신 단말기(100)는 송수신 모듈(110), 청크 집합 생성 모듈(130), 청크 집합 예측 모듈(140), 디코딩 모듈(150), 메모리(170) 및 제어 모듈(190)을 포함한다.2 and 3, the receiving terminal 100 includes a transmission / reception module 110, a chunk set generation module 130, a chunk set prediction module 140, a decoding module 150, a memory 170, (Not shown).

송수신 모듈(110)은 제어 모듈(190)의 제어 하에, 패킷을 송신 단말기(300)로부터 수신하거나 블룸 필터를 송신 단말기(300)로 송신한다. 상기 패킷은 인코딩된 패킷일 수 있다. 수신된 패킷은 제어 모듈(190)에 의해 메모리(170)에 저장될 수 있다.The transmission / reception module 110 receives the packet from the transmission terminal 300 or transmits the bloom filter to the transmission terminal 300 under the control of the control module 190. The packet may be an encoded packet. The received packet may be stored in the memory 170 by the control module 190.

청크 집합 생성 모듈(130)은 제어 모듈(190)의 제어 하에, 송수신 모듈(110)을 통하여 수신된 패킷을 다수의 청크들로 분할하고, 상기 다수의 청크들 각각의 핑거프린트를 생성한다. 다수의 핑거프린트들은 상기 다수의 청크들 각각을 입력 값으로 하여 얻어진 해쉬 함수(예컨대, SHA-1)의 결과 값 자체, 상기 결과 값을 포함하는 값, 또는 상기 결과 값을 이용하여 생성된 값일 수 있다. 이와 같이 핑거프린트를 생성하는 과정을 핑거프린팅이라 한다. The chunk set generation module 130 divides a packet received through the transmission / reception module 110 into a plurality of chunks and generates a fingerprint of each of the plurality of chunks under the control of the control module 190. The plurality of fingerprints may be the result itself of a hash function (e.g., SHA-1) obtained by taking each of the plurality of chunks as an input value, a value containing the resultant value, or a value generated using the resultant value have. The process of generating a fingerprint is referred to as fingerprinting.

또한, 청크 집합 생성 모듈(130)은 상기 다수의 청크들과 상기 다수의 핑거프린트들에 대응하는 하나의 블룸 필터를 생성한다. 상기 다수의 청크들, 상기 다수의 핑거프린트들 및 상기 하나의 블룸 필터의 모임 또는 집합을 청크 집합이라 한다. 생성된 청크 집합은 제어 모듈(190)에 의해 메모리(170)에 저장될 수 있다.In addition, the chunk set generation module 130 generates one bloom filter corresponding to the plurality of chunks and the plurality of fingerprints. A collection or set of the plurality of chunks, the plurality of fingerprints, and the one Bloom filter is referred to as a chunk set. The generated chunk set may be stored in the memory 170 by the control module 190.

청크 집합 예측 모듈(140)은 제어 모듈(190)의 제어 하에, 다음에 수신될 패킷을 예상할 수 있다. 즉, 청크 집합 예측 모듈(140)은 청크 집합 생성 모듈(130)에 의하여 생성된 청크 집합에 포함된 다수의 핑거프린트들 각각이 메모리(170)에 미리 저장되어 있는 다수의 청크 집합들 각각에 포함되어 있는 블룸 필터에 포함되는지 여부를 결정한다. 청크 집합 예측 모듈(140)은 메모리(170)에 저장되어 있는 다수의 블룸 필터들 중에서 상기 다수의 핑거프린트들 중 미리 정해진 개수(d) 이상의 핑거프린트들을 포함하고 있는 블룸 필터를 선택한다. 실시 예에 따라, 청크 집합 예측 모듈(140)은 상기 다수의 핑거프린트들 중 가장 많은 핑거프린트를 포함하고 있는 블룸 필터를 선택할 수도 있다.The chunk set prediction module 140 can predict the next packet to be received under the control of the control module 190. [ That is, the chunk set prediction module 140 may include a plurality of fingerprints included in the chunk set generated by the chunk set generation module 130 in each of a plurality of chunk sets previously stored in the memory 170 Is included in the Bloom filter. Chunk set prediction module 140 selects a Bloom filter that contains fingerprints of a predetermined number (d) or more among the plurality of fingerprints among a plurality of Bloom filters stored in memory 170. [ According to an embodiment, the chunk set prediction module 140 may select a Bloom filter that contains the most fingerprints of the plurality of fingerprints.

청크 집합 예측 모듈(140)은 선택된 필터를 포함하고 있는 청크 집합을 예측 청크 집합으로 예측한다. 상기 예측 청크 집합은 가장 최근에 수신된 패킷과의 연관성이 높거나 상기 가장 최근에 수신된 패킷과 가장 유사한 청크들을 포함하고 있는 청크 집합으로서, 상기 예측 청크 집합 내에는 다음에 수신될 패킷에 포함된 다수의 청크들 중 적어도 하나의 청크가 포함될 확률이 높다고 볼 수 있다.Chunk set prediction module 140 predicts a chunk set containing the selected filter as a predicted chunk set. Wherein the prediction chunk set is a chunk set that has high relevance to the most recently received packet or contains chunks most similar to the most recently received packet, The probability that at least one chunk of the plurality of chunks is included is high.

청크 집합 예측 모듈(140)에 의하여 선택된 블룸 필터는 제어 모듈(190)의 제어 하에, 송수신 모듈(110)에 의해 송신 단말기(300)로 전송될 수 있다. The bloom filter selected by the chunk set prediction module 140 may be transmitted to the transmitting terminal 300 by the sending / receiving module 110 under the control of the control module 190.

디코딩 모듈(150)은 제어 모듈(190)의 제어 하에, 인코딩된 패킷을 디코딩할 수 있다. 구체적으로, 송신 단말기(300)로부터 수신된 패킷이 인코딩된 패킷인 경우, 디코딩 모듈(150)은 인코딩된 패킷에 포함된 참조 값을 대응되는 청크, 즉 예측 청크 집합에 포함되어 있는 청크들 중에서 상기 참조 값에 대응하는 핑거프린트에 대응하는 청크로 교체함으로써 패킷을 디코딩할 수 있다. The decoding module 150 may decode the encoded packets under the control of the control module 190. [ Specifically, when the packet received from the transmitting terminal 300 is an encoded packet, the decoding module 150 extracts the reference value included in the encoded packet from the chunk corresponding to the corresponding chunk, that is, Lt; / RTI > can decode the packet by replacing it with a chunk corresponding to the fingerprint corresponding to the reference value.

인코딩된 패킷에 포함된 상기 참조 값은 상기 예측 청크 집합에 포함된 다수의 핑거프린트들 중에서 상기 참조 값에 대응하는 핑거프린트를 구분 또는 구별할 수 있는 값일 수 있다. 예컨대, 상기 참조 값은 w 개의 비트(또는 바이트)로 구현될 수 있으며, 상기 w 개의 비트(또는 바이트)는 상기 참조 값에 대응하는 핑거프린트에 포함된 비트 시퀀스(bit sequence) 또는 바이트 시퀀스(byte sequency)의 일부일 수 있으며, 구체적으로는 상기 핑거프린트의 하위 w 개의 비트(또는 바이트) 값일 수 있다. 실시 예에 따라, 상기 참조 값은 상기 예측 청크 집합에 포함된 다수의 핑거프린트들 중에서 상기 참조 값에 대응하는 핑거프린트의 순번을 의미하는 값일 수도 있다.The reference value included in the encoded packet may be a value capable of distinguishing or distinguishing a fingerprint corresponding to the reference value from a plurality of fingerprints included in the prediction chunk set. For example, the reference value may be implemented as w bits (or bytes), and the w bits (or bytes) may be a bit sequence or a byte sequence included in the fingerprint corresponding to the reference value sequency, and may specifically be the lower w bits (or bytes) of the fingerprint. According to an embodiment, the reference value may be a value indicating a sequence number of a fingerprint corresponding to the reference value among a plurality of fingerprints included in the prediction chunk set.

메모리(170)는 프로그램 메모리와 데이터 메모리를 포함할 수 있다. 상기 프로그램 메모리에는 수신 단말기(100)의 동작을 제어하기 위한 프로그램들이 저장될 수 있다. 상기 데이터 메모리에는 상기 프로그램들을 수행하는 과정 중에 발생되는 데이터들이 저장될 수 있다. 실시 예에 따라 메모리(170)는 버퍼 또는 캐시 등과 같은 다른 용어로 명칭되어질 수 있다. 그러나, 본 발명이 명칭되는 용어에 한정되는 것은 아니다.The memory 170 may include a program memory and a data memory. Programs for controlling the operation of the receiving terminal 100 may be stored in the program memory. Data generated during the execution of the programs may be stored in the data memory. Depending on the embodiment, the memory 170 may be referred to by other terms, such as a buffer or cache. However, the present invention is not limited thereto.

또한, 메모리(170)는 생성된 다수의 청크 집합들을 저장하기 위한 공간과 예측된 청크 집합을 저장하기 위한 공간을 포함할 수 있다.In addition, the memory 170 may include a space for storing a plurality of generated chunk sets and a space for storing a predicted chunk set.

제어 모듈(190)은 수신 단말기(100)의 전반적인 동작을 제어한다. 즉, 제어 모듈(190)은 송수신 모듈(110), 청크 집합 생성 모듈(130), 청크 집합 예측 모듈(140), 디코딩 모듈(150) 및 메모리(170)의 동작을 제어할 수 있다.The control module 190 controls the overall operation of the receiving terminal 100. That is, the control module 190 may control operations of the transmission / reception module 110, the chunk set generation module 130, the chunk set prediction module 140, the decoding module 150, and the memory 170.

또한, 제어 모듈(190)은 송수신 모듈(110)을 통하여 수신된 패킷이 인코딩된 패킷인지 여부를 결정하고, 인코딩된 패킷인 경우 디코딩 모듈(150)을 제어하여 상기 인코딩된 패킷을 디코딩할 수 있다. 디코딩 모듈(150)이 디코딩을 성공적으로 수행하지 못한 경우, 제어 모듈(190)은 송수신 모듈(110)을 통하여 송신 단말기(300)에 원본 패킷 전송 요청 신호를 송신할 수 있다.In addition, the control module 190 may determine whether a packet received through the transmission / reception module 110 is an encoded packet, and may control the decoding module 150 to decode the encoded packet if the packet is an encoded packet . The control module 190 may transmit the original packet transmission request signal to the transmitting terminal 300 through the transmitting and receiving module 110. [

본 명세서에서 모듈이라 함은, 본 발명의 기술적 사상을 수행하기 위한 하드웨어 및 상기 하드웨어를 구동하기 위한 소프트웨어의 기능적, 구조적 결합을 의미할 수 있다. 예컨대, 상기 모듈은 소정의 코드와 상기 소정의 코드가 수행되기 위한 하드웨어 리소스의 논리적인 단위를 의미할 수 있으며, 반드시 물리적으로 연결된 코드를 의미하거나, 한 종류의 하드웨어를 의미하는 것이 아니다.Herein, a module may mean a functional and structural combination of hardware for carrying out the technical idea of the present invention and software for driving the hardware. For example, the module may mean a logical unit of a predetermined code and a hardware resource for executing the predetermined code, and does not necessarily mean a physically connected code or a kind of hardware.

도 4는 도 3에 도시된 청크 집합 생성 모듈의 동작을 설명하기 위한 도면이다.FIG. 4 is a view for explaining the operation of the chunk set generation module shown in FIG.

도 2 내지 도 4를 참조하면, 청크 집합 생성 모듈(130)은 수신된 패킷으로부터 청크 집합을 생성할 수 있다. 구체적으로 청크 집합 생성 모듈(130)은 패킷을 n 개의 청크들(n은 2 이상의 자연수)로 분할하고, 상기 n 개의 청크들 각각에 대응하는 n 개의 핑거프린트들을 생성할 수 있다. 청크의 크기와 핑거프린트의 크기는 미리 결정될 수 있다. 예컨대, 상기 청크의 크기는 64바이트일 수 있고, 상기 핑거프린트의 크기는 20바이트일 수 있으나, 상기 청크의 크기와 상기 핑거프린트의 크기가 이에 한정되는 것은 아니고, 상기와 다른 크기를 가질 수 있다.2 through 4, the chunk set generation module 130 may generate a chunk set from the received packet. Specifically, the chunk set generation module 130 may divide a packet into n chunks (n is a natural number of 2 or more) and generate n fingerprints corresponding to each of the n chunks. The size of the chunk and the size of the fingerprint may be predetermined. For example, the size of the chunk may be 64 bytes, and the size of the fingerprint may be 20 bytes. However, the size of the chunk and the size of the fingerprint are not limited thereto, .

또한, 청크 집합 생성 모듈(130)은 상기 n 개의 핑거프린트들의 정보를 기록하기 위한 m 비트로 구현된 하나의 블룸 필터(m은 2 이상의 자연수)를 생성할 수 있다. 즉, 상기 n 개의 청크들 각각의 핑거프린트는 상기 블룸 필터에 등록된다. 결과적으로 상기 청크 집합은 n 개의 청크들, n 개의 핑거프린트들 및 하나의 블룸 필터를 포함한다. In addition, the chunk set generation module 130 may generate one bloom filter (m is a natural number of 2 or more) implemented with m bits for recording the information of the n fingerprints. That is, the fingerprint of each of the n chunks is registered in the Bloom filter. As a result, the chunk set includes n chunks, n fingerprints, and one Bloom filter.

청크 집합 생성 모듈(130)은 상기 블룸 필터를 생성하기 위해서 k 개의 해쉬(hash) 함수들(k는 2 이상의 자연수)을 사용하며, 각각의 해쉬 함수는 입력 값, 즉 핑거프린트에 대하여 m 가지의 값을 균등한 확률로 출력한다. 즉, 하나의 핑거프린트가 상기 블룸 필터에 등록 또는 추가되기 위해서는 상기 하나의 핑거프린트에 대한 k 개의 해쉬 함수 값이 생성 또는 계산되어야 하며, 상기 블룸 필터에 포함된 m 개의 비트들 중에서 각각의 해쉬 함수 값에 해당하는 비트를 1로 설정함으로써 상기 하나의 핑거프린트를 상기 블룸 필터에 등록할 수 있다.The chunk set generation module 130 uses k hash functions (k is a natural number of 2 or more) to generate the bloom filter, and each hash function has m types of input values, i.e., Output the values with equal probability. That is, in order for one fingerprint to be registered or added to the Bloom filter, k hash function values for the one fingerprint must be generated or calculated, and among the m bits included in the Bloom filter, The fingerprint can be registered in the bloom filter by setting the bit corresponding to the value to 1.

만약, 어떠한 핑거프린트가 블룸 필터에 속하는지 확인하고자 할 때에는 다음과 같은 과정을 통하여 확인할될 수 있다. 해당 핑거프린트에 대한 k 개의 해쉬 함수 값을 계산한 다음, 블룸 필터 내에서 각각의 해쉬 함수 값에 대응하는 비트의 값이 모두 1인 경우, 해당 핑거프린트가 블룸 필터에 속한다고 판단될 수 있다.If a fingerprint belongs to the Bloom filter, it can be confirmed by the following procedure. After calculating k hash function values for the fingerprint, if the bit values corresponding to the respective hash function values in the Bloom filter are all 1, it can be determined that the fingerprint belongs to the Bloom filter.

생성된 청크 집합은 메모리(170)에 저장될 수 있다. 메모리(170)에는 총 c 개의 청크 집합들(c는 자연수)을 저장할 수 있는 공간이 할당될 수 있다. 즉, 메모리(170)의 용량 또는 크기는 한정적이기 때문에, 할당된 공간이 모두 사용되었을 때 새로운 청크 집합을 저장하기 위해서는 청크 집합 교체 정책이 활용될 수 있다.The generated chunk set may be stored in the memory 170. The memory 170 may be allocated a space for storing a total of c chunk sets (c is a natural number). That is, since the capacity or size of the memory 170 is limited, a chunk set replacement policy can be utilized to store a new chunk set when all the allocated space is used.

실시 예에 따라, 메모리(170)가 캐시 또는 버퍼로 활용되거나 명명될 때 상기 청크 집합 교체 정책은 캐시 교체 정책(cache replacement)으로 명명될 수 있다. 상기 캐시 교체 정책은 LRU(least recently used) 방식, LFU(least frequently used) 방식 또는 라운드 로빈(round robin) 방식일 수 있다.According to an embodiment, when the memory 170 is utilized or named as a cache or buffer, the chunk set replacement policy may be referred to as cache replacement policy. The cache replacement policy may be a least recently used (LRU) scheme, a least frequently used (LFU) scheme, or a round robin scheme.

도 5는 도 3에 도시된 청크 집합 예측 모듈의 동작을 설명하기 위한 도면이다.FIG. 5 is a view for explaining the operation of the chunk set prediction module shown in FIG.

도 2, 도 3 및 도 5를 참조하면, 청크 집합 예측 모듈(140)은 청크 집합 생성 모듈(130)에 의하여 생성된 제1 청크 집합에 포함되어 있는 제1-1 핑거프린트 내지 제1-n 핑거프린트 각각이 메모리(170)에 저장되어 있는 제2 청크 집합 내지 제p 청크 집합(p-1=c)에 포함되어 있는 제2 블룸 필터 내지 제p 블룸 필터 각각에 속하는지 여부를 결정할 수 있다. Referring to FIGS. 2, 3 and 5, the chunk set prediction module 140 determines whether the first to n-th fingerprints included in the first chunk set generated by the chunk set generation module 130, It is possible to determine whether each fingerprint belongs to each of the second bloom filter to the p-th bloom filter included in the second to the p-th chunk set (p-1 = c) stored in the memory 170 .

구체적으로 청크 집합 예측 모듈(140)은 제1-1 핑거프린트 내지 제1-n 핑거프린트 중 제2 블룸 필터에 속하는 핑거프린트의 갯수를 도출할 수 있다. 또한, 청크 집합 예측 모듈(140)은 상기 제1-1 핑거프린트 내지 상기 제1-n 핑거프린트 중 제3 블룸 필터 내지 제p 블룸 필터에 속하는 핑거프린트의 갯수를 도출할 수 있다. Specifically, the chunk set prediction module 140 may derive the number of fingerprints belonging to the second bloom filter among the first-first fingerprint to the first-n fingerprint. Also, the chunk set prediction module 140 may derive the number of fingerprints belonging to the third bloom filter to the pbloom filter among the first-first fingerprint to the first-n fingerprint.

청크 집합 예측 모듈(140)은 제2 블룸 필터 내지 제p 블룸 필터 각각에 포함된 핑거프린트의 갯수를 기준으로 예측 청크 집합을 예측한다. 예컨대, 상기 제3 블룸 필터에 속하는 핑거프린트의 갯수만이 d(d는 임의의 자연수) 개 이상인 경우 상기 제3 청크 집합을 예측 청크 집합으로 예측한다. 이 경우, 청크 집합 예측 모듈(140)은 제4 블룸 필터 내지 제p 블룸 필터에 포함된 핑거프린트의 갯수를 도출하는 과정을 생략할 수도 있다.The chunk set prediction module 140 predicts a prediction chunk set based on the number of fingerprints included in each of the second bloom filter to the p-th bloom filter. For example, when only the number of fingerprints belonging to the third bloom filter is d (d is an arbitrary natural number) or more, the third chunk set is predicted as a predicted chunk set. In this case, the chunk set prediction module 140 may omit the process of deriving the number of fingerprints included in the fourth bloom filter to the pbloom filter.

미리 정해진 상기 d 값에 의하여 예측의 정확도 및 예측의 빈도가 결정된다. 즉, 상기 d 값이 작으면 적은 수의 핑거프린트가 포함된 청크 집합이 예측 청크 집합으로 선택될 수 있기 때문에, 예측의 빈도는 높아지지만 가장 최근에 수신된 패킷과의 연관성은 떨어진다. 반면에, 상기 d 값이 크면 많은 수의 핑거프린트가 하나의 청크 집합에 속해야 하기 때문에 수신받은 패킷과의 연관성을 높일 수 있다. 그러나, 예측 청크 집합으로 선택할 수 있는 청크 집합의 수가 적어지므로 예측에 의하여 트래픽을 줄이는 기회가 줄어들 수 있다. 즉, 예측 빈도가 낮아질 수 있다.The accuracy of the prediction and the frequency of the prediction are determined by the predetermined d value. That is, if the value of d is small, a chunk set including a small number of fingerprints can be selected as a predicted chunk set, so that the frequency of prediction increases but the relevance to the most recently received packet decreases. On the other hand, if the value of d is large, since a large number of fingerprints belong to one chunk set, the association with the received packet can be enhanced. However, since the number of chunk sets that can be selected by the prediction chunk set is small, the chance of reducing traffic by prediction can be reduced. That is, the prediction frequency can be lowered.

실시 예에 따라, 청크 집합 예측 모듈(140)은 상기 제2 내지 제p 블룸 필터 중 가장 많은 핑거프린트를 포함하고 있는 블룸 필터를 포함하는 청크 집합을 예측 청크 집합으로 예측할 수 있고, d 개 이상의 핑거프린트를 포함하고 있는 블룸 필터들 중에서 가장 많은 핑거프린트를 포함하고 있는 블룸 필터를 포함하는 청크 집합을 예측 청크 집합으로 예측할 수 있다.According to an embodiment, the chunk set prediction module 140 may predict a chunk set including a Bloom filter including the fingerprints of the second through p-th bloom filters as a predicted chunk set, A chunk set including a Bloom filter including the most fingerprints among the Bloom filters including the print can be predicted as a predicted chunk set.

상기 제3 블룸 필터는 제어 모듈(190)의 제어 하에, 송수신 모듈(110)을 통하여 송신 단말기(300)로 전송된다. 또한, 제어 모듈(190)은 상기 메모리(170)에 저장된 다수의 청크 집합들 중 적어도 하나의 청크 집합을 캐시 교체 정책 또는 청크 집합 교체 정책에 따라 상기 생성된 청크 집합으로 교체할 수 있다.The third bloom filter is transmitted to the transmitting terminal 300 through the transmitting / receiving module 110 under the control of the control module 190. Also, the control module 190 may replace at least one chunk set of the plurality of chunk sets stored in the memory 170 with the generated chunk set according to a cache replacement policy or a chunk set replacement policy.

도 6은 도 2에 도시된 송신 단말기의 기능 블럭도이다.6 is a functional block diagram of the transmitting terminal shown in FIG.

도 2와 도 6을 참조하면, 송신 단말기(300)는 송수신 모듈(310), 인코딩 모듈(350), 메모리(370) 및 제어 모듈(390)을 포함한다.2 and 6, the transmitting terminal 300 includes a transmitting / receiving module 310, an encoding module 350, a memory 370, and a control module 390.

송수신 모듈(310)은 제어 모듈(390)의 제어 하에, 패킷을 수신 단말기(100)로 송신하거나 블룸 필터를 수신 단말기(100)로부터 수신한다. 상기 패킷은 인코딩된 패킷일 수 있고, 수신된 블룸 필터는 제어 모듈(390)에 의해 메모리(370)에 저장될 수 있다.The transmission / reception module 310 transmits a packet to the receiving terminal 100 or receives a Bloom filter from the receiving terminal 100 under the control of the control module 390. The packet may be an encoded packet and the received bloom filter may be stored in memory 370 by control module 390. [

인코딩 모듈(350)은 제어 모듈(390)의 제어 하에, 전송될 패킷, 즉 원본 패킷을 인코딩할 수 있다. 구체적으로, 인코딩 모듈(350)은 수신 단말기(100)로 전송될 상기 원본 패킷을 다수의 청크들로 분할하고, 분할된 다수의 청크들 각각의 핑거프린트를 생성할 수 있다. 또한, 인코딩 모듈(350)은 생성된 다수의 핑거프린트들 각각이 수신 단말기(100)로부터 수신된 블룸 필터에 속하는지 여부를 판단한다. 이는 각 핑거프린트로부터 k 개의 해쉬 결과를 얻고, 상기 블룸 필터 중에서 k 개의 해쉬 결과 값에 대응하는 비트의 값이 모두 1인 경우 해당 핑거프린트가 상기 블룸 필터에 속한다고 판단될 수 있다. The encoding module 350 may encode the packet to be transmitted, i.e., the original packet, under the control of the control module 390. Specifically, the encoding module 350 may divide the original packet to be transmitted to the receiving terminal 100 into a plurality of chunks, and generate a fingerprint of each of the plurality of divided chunks. In addition, the encoding module 350 determines whether each of the generated plurality of fingerprints belongs to the bloom filter received from the receiving terminal 100. [ It is possible to obtain k hash results from each fingerprint and if the bit values corresponding to the k hash result values in the Bloom filter are all 1, it can be determined that the fingerprint belongs to the Bloom filter.

인코딩 모듈(350)은 어떤 핑거프린트가 상기 블룸 필터에 속한다고 판단한 경우, 해당 핑거프린트에 대응하는 청크를 참조 값으로 변경할 수 있다. 상기와 같이, 상기 원본 패킷의 적어도 하나의 청크를 참조 값으로 변환 또는 교체하는 과정을 인코딩이라 하고, 상기 인코딩의 결과 생성된 패킷을 인코딩된 패킷이라 한다. 상기 인코딩된 패킷은 제어 모듈(390)의 제어에 의해 송수신 모듈(310)을 통하여 수신 단말기(100)로 송신될 수 있다.Encoding module 350 may change a chunk corresponding to the fingerprint to a reference value when determining that a fingerprint belongs to the Bloom filter. As described above, the process of converting or replacing at least one chunk of the original packet into a reference value is referred to as encoding, and a packet generated as a result of encoding is referred to as an encoded packet. The encoded packet can be transmitted to the receiving terminal 100 through the sending / receiving module 310 under the control of the control module 390.

메모리(370) 프로그램 메모리와 데이터 메모리를 포함할 수 있다. 상기 프로그램 메모리에는 송신 단말기(300)의 동작을 제어하기 위한 프로그램들이 저장될 수 있다. 상기 데이터 메모리에는 상기 프로그램들을 수행하는 과정 중에 발생되는 데이터들이 저장될 수 있다. 실시 예에 따라 메모리(370)는 버퍼 또는 캐시 등과 같은 다른 용어로 명칭되어질 수 있다.The memory 370 may include a program memory and a data memory. Programs for controlling the operation of the transmitting terminal 300 may be stored in the program memory. Data generated during the execution of the programs may be stored in the data memory. In accordance with an embodiment, memory 370 may be referred to by other terms, such as a buffer or cache.

제어 모듈(390)은 송신 단말기(300)의 전반적인 동작을 제어한다. 즉, 제어 모듈(390)은 송수신 모듈(310), 인코딩 모듈(350) 및 메모리(370)의 동작을 제어할 수 있다. 또한, 제어 모듈(390)은 송수신 모듈(310)을 통하여 수신된 블룸 필터의 유무에 따라 전송될 패킷의 인코딩 유무를 결정하고, 상기 결정에 따라 인코딩 모듈(350)을 제어하여 상기 전송될 패킷을 인코딩할 수 있다. 따라서, 제어 모듈(390)의 결정에 따라, 인코딩되지 않은 원본 패킷이 전송되거나 인코딩된 패킷이 전송될 수 있다. The control module 390 controls the overall operation of the transmitting terminal 300. That is, the control module 390 can control operations of the transmission / reception module 310, the encoding module 350, and the memory 370. The control module 390 determines whether to encode a packet to be transmitted according to the presence or absence of the bloom filter received through the transmission / reception module 310, and controls the encoding module 350 according to the determination to transmit the packet to be transmitted Can be encoded. Thus, according to the determination of the control module 390, the unencoded original packet may be transmitted or an encoded packet may be transmitted.

또한 제어 모듈(390)은 인코딩 모듈(350)이 인코딩에 실패한 경우, 즉 인코딩 모듈(350)이 수신 단말기(100)로부터 수신된 블룸 필터에 포함된 핑거프린트를 찾지 못한 경우, 상기 원본 패킷을 송수신 모듈(310)을 통하여 수신 단말기(100)로 송신할 수 있다.If the encoding module 350 fails to encode, that is, if the encoding module 350 can not find the fingerprint included in the bloom filter received from the receiving terminal 100, the control module 390 transmits / To the receiving terminal 100 via the module 310.

도 7은 도 6에 도시된 인코딩 모듈의 동작 과정을 설명하기 위한 도면이다.FIG. 7 is a diagram for explaining an operation process of the encoding module shown in FIG.

도 2, 도 6 및 도 7을 참조하면, 인코딩 모듈(350)은 송신될 패킷인 원본 패킷(351)을 청크 단위로 분할하여, 다수의 청크들을 포함하는 분할된 패킷(353)을 생성한다. 또한, 인코딩 모듈(350)은 상기 다수의 청크들 각각에 대응하는 핑거프린트를 생성할 수 있다. 예컨대, 분할된 패킷(353)은 제1 청크(CK1) 내지 제5 청크(CK5)를 포함할 수 있고, 제1 청크(CK1) 내지 제5 청크(CK5) 각각에 대응하는 제1 핑거프린트(FP1) 내지 제5 핑거프린트(FP5)가 생성될 수 있다.2, 6 and 7, the encoding module 350 divides an original packet 351, which is a packet to be transmitted, into chunks, and generates a divided packet 353 including a plurality of chunks. The encoding module 350 may also generate a fingerprint corresponding to each of the plurality of chunks. For example, the divided packet 353 may include the first chunk CK1 to the fifth chunk CK5, and may include a first fingerprint corresponding to each of the first chunk CK1 to the fifth chunk CK5 FP1) to the fifth fingerprint FP5 may be generated.

인코딩 모듈(350)은 다수의 핑거프린트들(FP1 내지 FP5) 각각에 대한 k 개의 해쉬 함수 값(hash 1 내지 hash k)을 생성하고, 수신 단말기(100)로부터 수신된 블룸 필터 중에서 생성된 해쉬 함수 값 각각에 대응하는 비트들의 값에 따라, 각각의 핑거프린트가 상기 블룸 필터에 속하는지 여부를 판단할 수 있다. 예컨대, 인코딩 모듈(350)은 제2 핑거프린트(FP2)와 제4 핑거프린트(FP4)가 상기 블룸 필터에 속한다고 결정할 수 있다. 이 경우, 인코딩 모듈(350)은 분할된 패킷(353)에 포함된 다수의 청크들 중에서 제2 핑거프린트(FP2)에 대응하는 제2 청크(CK2)와 제4 핑거프린트(FP4)에 대응하는 제4 청크(CK4) 각각을 제2 참조 값(Ref2)과 제4 참조 값(Ref4)으로 교체할 수 있다. 제2 참조 값(Ref2)은 제2 핑거프린트(FP2)에 포함된 비트(또는 바이트)들 중 하위 w 개의 비트(또는 바이트)의 값을 의미할 수 있고, 제4 참조 값(Ref4)는 제4 핑거프린트(FP4)에 포함된 비트(또는 바이트)들 중 하위 w 개의 비트(또는 바이트)의 값을 의미할 수 있다.The encoding module 350 generates k hash function values (hash 1 to hash k) for each of the plurality of fingerprints FP1 to FP5 and generates a hash function Depending on the value of the bits corresponding to each of the values, it can be determined whether or not each fingerprint belongs to the Bloom filter. For example, the encoding module 350 may determine that the second fingerprint FP2 and the fourth fingerprint FP4 belong to the Bloom filter. In this case, the encoding module 350 generates the second chunk CK2 corresponding to the second fingerprint FP2 and the second chunk CK2 corresponding to the fourth fingerprint FP4 among the plurality of chunks included in the divided packet 353 Each of the fourth chunks CK4 may be replaced with a second reference value Ref2 and a fourth reference value Ref4. The second reference value Ref2 may mean the value of the lower w bits (or bytes) of the bits (or bytes) contained in the second fingerprint FP2, and the fourth reference value Ref4 (Or bytes) of the bits (or bytes) included in the 4-fingerprint (FP4).

상기와 같이 인코딩 모듈(350)은 원본 패킷에 포함된 데이터(또는 청크)의 일부를 참조 값으로 교체함으로써, 인코딩된 패킷(355)을 생성할 수 있다. 인코딩된 패킷(355)은 제어 모듈(390)에 의해, 송수신 모듈(310)을 통하여 수신 단말기(100)로 송신될 수 있다.As described above, the encoding module 350 may generate an encoded packet 355 by replacing a portion of the data (or chunk) contained in the original packet with a reference value. The encoded packet 355 may be transmitted by the control module 390 to the receiving terminal 100 via the sending and receiving module 310. [

도 8은 도 2에 도시된 수신 단말기에서의 동작을 설명하기 위한 흐름도이다.FIG. 8 is a flowchart for explaining an operation in the receiving terminal shown in FIG. 2. FIG.

도 2, 도 3 및 도 8을 참조하면, 송수신 모듈(110)은 제어 모듈(190)의 제어 하에 송신 단말기(300)로부터 패킷을 수신한다(S110).2, 3, and 8, the transmission / reception module 110 receives a packet from the transmission terminal 300 under the control of the control module 190 (S110).

제어 모듈(190)은 수신된 패킷의 인코딩 여부, 즉 인코딩된 패킷인지 인코딩되지 않은 패킷인지 여부를 결정한다(S120). 수신된 패킷이 인코딩된 패킷인 경우, 디코딩 모듈(150)은 제어 모듈(190)의 제어 하에 인코딩된 패킷을 디코딩한다(S130). 제어 모듈(190)은 디코딩 모듈(150)의 디코딩 성공 여부를 결정하고, 디코딩 모듈(150)이 디코딩에 성공한 경우 수신 단말기(100)의 동작은 종료된다. 디코딩 모듈(150)이 디코딩에 성공하지 못한 경우, 제어 모듈(190)은 송수신 모듈(110)을 통하여 송신 단말기(300)에 원본 패킷의 전송 요청 신호를 송신할 수 있다(S190).The control module 190 determines whether the received packet is encoded, that is, whether it is an encoded packet or an unencoded packet (S120). If the received packet is an encoded packet, the decoding module 150 decodes the encoded packet under the control of the control module 190 (S130). The control module 190 determines whether or not decoding of the decoding module 150 is successful and the operation of the receiving terminal 100 is ended when the decoding module 150 succeeds in decoding. If the decoding module 150 does not succeed in decoding, the control module 190 may transmit a transmission request signal of the original packet to the transmitting terminal 300 through the transmitting / receiving module 110 (S190).

송신 단말기(300)로부터 수신된 패킷이 인코딩된 패킷이 아닌 경우, 청크 집합 생성 모듈(130)은 제어 모듈(190)의 제어 하에, 청크 집합을 생성한다(S150). 또한, 청크 집합 예측 모듈(140)은 수신된 패킷과 연관성이 높은 청크 집합을 선택함으로써, 다음에 수신될 패킷을 예측할 수 있다(S160).If the packet received from the transmitting terminal 300 is not an encoded packet, the chunk set generation module 130 generates a chunk set under the control of the control module 190 (S150). In addition, the chunk set prediction module 140 can predict a next packet to be received by selecting a chunk set highly correlated with the received packet (S160).

제어 모듈(190)은 청크 집합 예측 모듈(140)의 예측 성공 여부를 판단하고(S170), 청크 집합 예측 모듈(140)이 예측에 실패한 경우 수신 단말기(100)의 동작을 종료된다. 청크 집합 예측 모듈(140)이 성공적으로 다음에 수신될 패킷을 예측한 경우, 제어 모듈(190)은 예측된 청크 집합에 포함되어 있는 블룸 필터를 송수신 모듈(110)을 통하여 송신 단말기(300)로 전송할 수 있다(S180).The control module 190 determines whether the chunk set prediction module 140 has succeeded in prediction at step S170 and ends the operation of the receiving terminal 100 when the chunk set prediction module 140 fails to predict. When the chunk set prediction module 140 successfully predicts a next packet to be received, the control module 190 transmits the bloom filter included in the predicted chunk set to the transmitting terminal 300 through the transmission / reception module 110 (S180).

도 9는 도 2에 도시된 송신 단말기의 동작을 설명하기 위한 흐름도이다.FIG. 9 is a flowchart for explaining the operation of the transmitting terminal shown in FIG. 2. FIG.

도 2, 도 6 및 도 9를 참조하면, 패킷을 전송하기 위해 제어 모듈(390)은 수신 단말기(100)로부터 수신된 블룸 필터의 유무를 결정한다(S310). 수신 단말기(100)로부터 수신된 블룸 필터가 존재하지 않는 경우, 송수신 모듈(310)은 제어 모듈(390)의 제어 하에 원본 패킷, 즉 인코딩되지 않은 패킷을 수신 단말기(100)로 전송한다(S320).Referring to FIGS. 2, 6 and 9, in order to transmit a packet, the control module 390 determines whether there is a bloom filter received from the receiving terminal 100 (S310). If there is no Bloom filter received from the receiving terminal 100, the sending / receiving module 310 transmits the original packet, i.e., the unencoded packet to the receiving terminal 100 under the control of the control module 390 (S320) .

수신 단말기(100)로부터 수신된 블룸 필터가 존재하는 경우, 인코딩 모듈(350)은 제어 모듈(390)의 제어 하에 상기 원본 패킷으로부터 분할된 패킷을 생성한다(S330). 또한, 인코딩 모듈(350)은 상기 분할된 패킷에 포함된 다수의 청크들 각각의 핑거프린트를 생성한다(S340).When there is a Bloom filter received from the receiving terminal 100, the encoding module 350 generates a packet segmented from the original packet under the control of the control module 390 (S330). In addition, the encoding module 350 generates a fingerprint of each of the plurality of chunks included in the divided packet (S340).

인코딩 모듈(350)은 생성된 다수의 핑거프린트들 각각이 수신 단말기(100)로부터 수신된 상기 블룸 필터에 속하는지 여부를 결정한다(S350). 상기 다수의 핑거프린트들 중 상기 블룸 필터에 속하는 핑거프린트가 존재하지 않는 경우, 제어 모듈(390)은 송수신 모듈(310)을 통하여 상기 원본 패킷을 수신 단말기(100)에 송신하고(S320), 송신 단말기(300)의 동작은 종료된다.The encoding module 350 determines whether each of the generated plurality of fingerprints belongs to the Bloom filter received from the receiving terminal 100 (S350). If there is no fingerprint belonging to the Bloom filter among the plurality of fingerprints, the control module 390 transmits the original packet to the receiving terminal 100 through the sending / receiving module 310 (S320) The operation of the terminal 300 is terminated.

상기 다수의 핑거프린트들 중 상기 블룸 필터에 속하는 핑거프린트가 적어도 하나 존재하는 경우, 인코딩 모듈(350)은 상기 분할된 패킷으로부터 인코딩된 패킷을 생성한다(S360). 생성된 인코딩된 패킷은 제어 모듈(390)의 제어를 받는 송수신 모듈(310)에 의해 수신 단말기(100)로 전송된다(S370).If there is at least one fingerprint belonging to the Bloom filter among the plurality of fingerprints, the encoding module 350 generates an encoded packet from the divided packet (S360). The generated encoded packet is transmitted to the receiving terminal 100 by the transmission / reception module 310 under the control of the control module 390 (S370).

본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is evident that many alternatives, modifications and variations will be apparent to those skilled in the art. Accordingly, the true scope of the present invention should be determined by the technical idea of the appended claims.

1 : 중복 제거 시스템 3 : 송신 단말기
5 : 수신 단말기 10 : 데이터 통신 시스템
100 : 수신 단말기 110 : 송수신 모듈
130 : 청크 집합 생성 모듈 140 : 청크 집합 예측 모듈
150 : 디코딩 모듈 170 : 메모리
190 : 제어 모듈 300 : 송신 단말기
310 : 송수신 모듈 350 : 인코딩 모듈
351 : 송신될 패킷 353 : 분할된 패킷
355 : 인코딩된 패킷 370 : 메모리
390 : 제어 모듈
1: deduplication system 3: transmitting terminal
5: receiving terminal 10: data communication system
100: receiving terminal 110: transmitting / receiving module
130: chunk set generation module 140: chunk set prediction module
150: decoding module 170: memory
190: control module 300: transmitting terminal
310: Transmitting / receiving module 350: Encoding module
351: packet to be transmitted 353:
355: Encoded packet 370: Memory
390: Control module

Claims (14)

수신 단말기에서 동작하는 데이터 수신 방법에 있어서,
송신 단말기로부터 패킷을 수신하는 단계;
수신된 패킷의 인코딩 여부를 확인하는 단계;
상기 수신된 패킷이 인코딩된 패킷인 경우, 상기 인코딩된 패킷에 포함된 참조 값을 상기 참조 값에 대응하는 핑거프린트에 대응하는 청크로 교체하여 상기 인코딩된 패킷을 디코딩하는 단계;
상기 수신된 패킷이 인코딩된 패킷이 아닌 경우,
상기 수신된 패킷을 다수의 청크들로 분할하고, 각각이 상기 다수의 청크들 각각에 대응하는 다수의 핑거프린트들을 생성하는 단계;
상기 다수의 핑거프린트들 중 미리 저장된 다수의 블룸 필터들 각각에 속하는 핑거프린트의 개수를 도출하는 단계; 및
상기 다수의 핑거프린트들 중 미리 결정된 개수 이상의 핑거프린트를 포함하는 블룸 필터를 상기 송신 단말기로 송신하는 단계를 포함하는 데이터 수신 방법.
A method for receiving data in a receiving terminal,
Receiving a packet from a transmitting terminal;
Confirming whether the received packet is encoded;
If the received packet is an encoded packet, decoding the encoded packet by replacing a reference value included in the encoded packet with a chunk corresponding to a fingerprint corresponding to the reference value;
If the received packet is not an encoded packet,
Dividing the received packet into a plurality of chunks, each generating a plurality of fingerprints corresponding to each of the plurality of chunks;
Deriving a number of fingerprints pertaining to each of a plurality of previously stored bloom filters of the plurality of fingerprints; And
And transmitting to the transmitting terminal a Bloom filter including a predetermined number or more of fingerprints among the plurality of fingerprints.
제1항에 있어서,
상기 디코딩하는 단계에서 상기 인코딩된 패킷을 디코딩하지 못한 경우, 상기 수신된 패킷에 대한 원본 패킷의 송신을 상기 송신 단말기에 요청하는 단계를 더 포함하는 데이터 수신 방법.
The method according to claim 1,
And requesting the transmitting terminal to transmit an original packet to the received packet if the encoded packet can not be decoded in the decoding step.
삭제delete 제1항에 있어서,
상기 미리 결정된 개수 이상의 핑거프린트를 포함하는 블룸 필터가 존재하지 않는 경우, 상기 수신된 패킷에 대한 원본 패킷의 송신을 상기 송신 단말기에 요청하는 단계를 더 포함하는 데이터 수신 방법.
The method according to claim 1,
Further comprising the step of requesting the transmitting terminal to transmit an original packet for the received packet if there is no Bloom filter including the predetermined number or more of fingerprints.
제1항에 있어서,
상기 송신 단말기로부터, 상기 블룸 필터를 이용하여 인코딩된 다음 패킷을 수신하는 단계를 더 포함하는 데이터 수신 방법.
The method according to claim 1,
Further comprising receiving, from the transmitting terminal, the next packet encoded using the Bloom filter.
제1항에 있어서,
상기 다수의 블룸 필터들 각각에는 이전에 수신된 패킷들 각각에 포함된 청크들 각각의 핑거프린트들이 등록된, 데이터 수신 방법.
The method according to claim 1,
Wherein fingerprints of each of the chunks contained in each of the previously received packets are registered in each of the plurality of Bloom filters.
송신 단말기에서 동작하는 데이터 송신 방법에 있어서,
수신 단말기로부터 상기 수신 단말기에 의해 생성된 블룸 필터의 수신 여부를 결정하는 단계;
상기 블룸 필터가 수신된 경우, 상기 수신 단말기로 송신하려는 원본 패킷을 다수의 청크들로 분할하여 분할된 패킷을 생성하고, 각각이 상기 다수의 청크들 각각에 대응하는 다수의 핑거프린트들을 생성하는 단계;
상기 분할된 패킷에 포함된 다수의 청크들 중에서, 상기 다수의 핑거프린트들 중에서 상기 블룸 필터에 속하는 핑거프린트에 대응하는 청크를 참조 값으로 대체하여 인코딩된 패킷을 생성하는 단계; 및
상기 인코딩된 패킷을 상기 수신 단말기로 송신하는 단계를 포함하고,
상기 블룸 필터는 상기 수신 단말기에 저장된 다수의 블룸 필터들 중, 각각이 상기 송신 단말기로부터 상기 수신 단말기로 송신된 제2 패킷으로부터 분할된 다수의 제2 청크들 각각에 대응하는 다수의 제2 핑거프린트들 중 미리 정해진 개수 이상의 핑거프린트를 포함하는 블룸 필터인,
데이터 송신 방법.
A method for transmitting data in a transmitting terminal,
Determining whether to receive the bloom filter generated by the receiving terminal from the receiving terminal;
Generating a divided packet by dividing an original packet to be transmitted to the receiving terminal into a plurality of chunks when the Bloom filter is received and generating a plurality of fingerprints each corresponding to each of the plurality of chunks ;
Generating an encoded packet by replacing a chunk corresponding to a fingerprint belonging to the Bloom filter with a reference value among the plurality of chunks included in the divided packet; And
And transmitting the encoded packet to the receiving terminal,
Wherein the Bloom filter includes a plurality of second fingerprints corresponding to each of a plurality of second chunks divided from a second packet transmitted from the transmitting terminal to the receiving terminal, A bloom filter comprising a predetermined number or more of fingerprints,
Data transmission method.
제7항에 있어서,
상기 수신 단말기로부터 수신된 블룸 필터가 존재하지 않는 경우, 상기 원본 패킷을 상기 수신 단말기로 송신하는 단계를 더 포함하는 데이터 송신 방법.
8. The method of claim 7,
And transmitting the original packet to the receiving terminal when there is no Bloom filter received from the receiving terminal.
제7항에 있어서,
상기 참조 값은 상기 참조 값에 대응하는 상기 핑거프린트에 포함된 비트 시퀀스(bit sequence) 또는 바이트 시퀀스(byte sequence)의 일부인 데이터 송신 방법.
8. The method of claim 7,
Wherein the reference value is a part of a bit sequence or a byte sequence included in the fingerprint corresponding to the reference value.
제7항에 있어서,
상기 인코딩된 패킷을 생성하는 단계에서, 상기 블룸 필터에 속하는 핑거프린트가 존재하지 않는 경우, 상기 원본 패킷을 상기 수신 단말기로 송신하는 단계를 더 포함하는 데이터 송신 방법.
8. The method of claim 7,
And transmitting the original packet to the receiving terminal when the fingerprint belonging to the Bloom filter does not exist in the step of generating the encoded packet.
송신 단말기에서 동작하는 데이터 송신 방법에 있어서,
수신 단말기로 송신하려는 원본 패킷을 다수의 청크들로 분할하여 분할된 패킷을 생성하고, 각각이 상기 다수의 청크들 각각에 대응하는 다수의 핑거프린트들을 생성하는 단계;
상기 분할된 패킷에 포함된 다수의 청크들 중에서, 상기 다수의 핑거프린트들 중에서 상기 수신 단말기로부터 수신된 블룸 필터에 속하는 핑거프린트에 대응하는 청크를 참조 값으로 대체하여 인코딩된 패킷을 생성하는 단계; 및
상기 인코딩된 패킷을 상기 수신 단말기로 송신하는 단계를 포함하고,
상기 블룸 필터는 상기 수신 단말기에 저장된 다수의 블룸 필터들 중, 각각이 상기 송신 단말기로부터 상기 수신 단말기로 송신된 제2 패킷으로부터 분할된 다수의 제2 청크들 각각에 대응하는 다수의 제2 핑거프린트들 중 미리 정해진 개수 이상의 핑거프린트를 포함하는 블룸 필터인,
데이터 송신 방법.
A method for transmitting data in a transmitting terminal,
Dividing an original packet to be transmitted to a receiving terminal into a plurality of chunks to generate a divided packet, and generating a plurality of fingerprints each corresponding to each of the plurality of chunks;
Generating an encoded packet by replacing a chunk corresponding to a fingerprint belonging to a Bloom filter received from the receiving terminal with a reference value among the plurality of chunks included in the divided packet; And
And transmitting the encoded packet to the receiving terminal,
Wherein the Bloom filter includes a plurality of second fingerprints corresponding to each of a plurality of second chunks divided from a second packet transmitted from the transmitting terminal to the receiving terminal, A bloom filter comprising a predetermined number or more of fingerprints,
Data transmission method.
제11항에 있어서,
상기 참조 값은 상기 블룸 필터에 속하는 상기 핑거프린트에 포함된 비트 시퀀스 또는 바이트 시퀀스의 일부인 데이터 송신 방법.
12. The method of claim 11,
Wherein the reference value is part of a bit sequence or a byte sequence included in the fingerprint belonging to the Bloom filter.
수신 단말기에서 동작하는 데이터 수신 방법에 있어서,
송신 단말기로부터 패킷을 수신하는 단계;
수신된 패킷을 다수의 청크들로 분할하고, 각각이 상기 다수의 청크들 각각에 대응하는 다수의 핑거프린트들을 생성하는 단계;
미리 저장된 다수의 청크 집합들 중에서 상기 수신된 패킷과의 연관성이 가장 높은 청크 집합을 선택하는 단계;
상기 선택된 청크 집합에 포함된 블룸 필터를 상기 송신 단말기로 송신하는 단계; 및
상기 송신 단말기로부터 다음 패킷을 수신하는 단계를 포함하고,
상기 블룸 필터는 상기 다수의 청크 집합들 각각에 포함된 블룸 필터 중, 각각이 상기 송신 단말기로부터 수신된 제2 패킷으로부터 분할된 다수의 제2 청크들 각각에 대응하는 다수의 제2 핑거프린트들 중 미리 정해진 개수 이상의 핑거프린트를 포함하는 블룸 필터인,
데이터 수신 방법.
A method for receiving data in a receiving terminal,
Receiving a packet from a transmitting terminal;
Dividing the received packet into a plurality of chunks, each generating a plurality of fingerprints corresponding to each of the plurality of chunks;
Selecting a chunk set having the highest correlation with the received packet among a plurality of chunk sets stored in advance;
Transmitting a Bloom filter included in the selected chunk set to the transmitting terminal; And
Receiving a next packet from the transmitting terminal,
Wherein the Bloom filter includes a plurality of second fingerprints corresponding to each of a plurality of second chunks divided from a second packet received from the transmitting terminal among bloom filters included in each of the plurality of chunk sets A Bloom filter including a predetermined number or more of fingerprints,
A method for receiving data.
제13항에 있어서,
상기 다음 패킷은 상기 블룸 필터에 등록된 핑거프린트를 이용하여 생성된 참조 값을 포함하고,
상기 데이터 수신 방법은, 상기 참조 값을 상기 선택된 청크 집합에 포함된 다수의 청크들 중에서 상기 참조 값에 대응하는 청크로 교체하는 단계를 더 포함하는 데이터 수신 방법.
14. The method of claim 13,
Wherein the next packet includes a reference value generated using a fingerprint registered in the Bloom filter,
Wherein the data receiving method further comprises replacing the reference value with a chunk corresponding to the reference value among a plurality of chunks included in the selected chunk set.
KR1020140025433A 2014-03-04 2014-03-04 Method for transmitting and receiving data using bloom filter KR101568390B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140025433A KR101568390B1 (en) 2014-03-04 2014-03-04 Method for transmitting and receiving data using bloom filter

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140025433A KR101568390B1 (en) 2014-03-04 2014-03-04 Method for transmitting and receiving data using bloom filter

Publications (2)

Publication Number Publication Date
KR20150104248A KR20150104248A (en) 2015-09-15
KR101568390B1 true KR101568390B1 (en) 2015-11-13

Family

ID=54244011

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140025433A KR101568390B1 (en) 2014-03-04 2014-03-04 Method for transmitting and receiving data using bloom filter

Country Status (1)

Country Link
KR (1) KR101568390B1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070124415A1 (en) 2005-11-29 2007-05-31 Etai Lev-Ran Method and apparatus for reducing network traffic over low bandwidth links
JP2011259024A (en) 2010-06-04 2011-12-22 Nippon Telegr & Teleph Corp <Ntt> Multicast transfer method, packet transfer system, node device and packet transfer program

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070124415A1 (en) 2005-11-29 2007-05-31 Etai Lev-Ran Method and apparatus for reducing network traffic over low bandwidth links
JP2011259024A (en) 2010-06-04 2011-12-22 Nippon Telegr & Teleph Corp <Ntt> Multicast transfer method, packet transfer system, node device and packet transfer program

Also Published As

Publication number Publication date
KR20150104248A (en) 2015-09-15

Similar Documents

Publication Publication Date Title
US9363309B2 (en) Systems and methods for compressing packet data by predicting subsequent data
CN108647230B (en) Distributed storage method, electronic device, and storage medium
CN105681380B (en) Client off-line method and its system
US11385794B2 (en) System and method for data compaction and security using multiple encoding algorithms
KR102100957B1 (en) Method and apparatus for sending inforamtion using sharing cache between portable terminals
JP5753946B2 (en) Method and system for downloading font files
US11733867B2 (en) System and method for multiple pass data compaction utilizing delta encoding
US11762557B2 (en) System and method for data compaction and encryption of anonymized datasets
CN107251529B (en) Method and apparatus for transmitting and receiving information between servers in content transmission network system
CN109274720B (en) Method and system for transmitting data
CN110519656B (en) Self-adaptive streaming media playing method, system and server
US9967774B2 (en) Compression method featuring dynamic coding for wireless communication in wireless networks
US20240020006A1 (en) System and method for compaction of floating-point numbers within a dataset
KR101465891B1 (en) Traffic redundancy elimination method and apparatus in wireless network
KR101568390B1 (en) Method for transmitting and receiving data using bloom filter
WO2018000647A1 (en) Method, device, terminal, and server for file downloading
US10769016B2 (en) Storing a plurality of correlated data in a dispersed storage network
US20170048303A1 (en) On the fly statistical delta differencing engine
CN107589917B (en) Distributed storage system and method
CN110856144A (en) LT code-based atomization caching method in mobile edge computing network
CN110958212A (en) Data compression method, data decompression method, device and equipment
KR20180082767A (en) Apparatus for transmitting and receiving data using synchronization-based encoding and method thereof
US20230315288A1 (en) System and method for data compaction and security using multiple encoding algorithms with pre-coding and complexity estimation
US20240143172A1 (en) System and method for personal health monitor data compaction using multiple encoding algorithms
US20150234908A1 (en) Techniques for data synchronization using compressive sensing

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20181025

Year of fee payment: 4