KR20200044648A - 트래픽 최적화 장치 및 그 방법 - Google Patents

트래픽 최적화 장치 및 그 방법 Download PDF

Info

Publication number
KR20200044648A
KR20200044648A KR1020190017605A KR20190017605A KR20200044648A KR 20200044648 A KR20200044648 A KR 20200044648A KR 1020190017605 A KR1020190017605 A KR 1020190017605A KR 20190017605 A KR20190017605 A KR 20190017605A KR 20200044648 A KR20200044648 A KR 20200044648A
Authority
KR
South Korea
Prior art keywords
data stream
encoding
segment
primary
hash value
Prior art date
Application number
KR1020190017605A
Other languages
English (en)
Other versions
KR102208364B1 (ko
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 펌킨네트웍스(주)
Publication of KR20200044648A publication Critical patent/KR20200044648A/ko
Application granted granted Critical
Publication of KR102208364B1 publication Critical patent/KR102208364B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0014Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the source coding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • 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/04Protocols for data compression, e.g. ROHC
    • 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/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

본 발명은 트래픽 최적화 장치 및 그 방법에 관한 것이다. 본 발명에 따르면, 수신한 데이터 스트림의 압축 여부에 따라 트래픽을 최적화하는 장치에 있어서, 상기 수신한 데이터 스트림의 압축 여부를 판별하는 전처리부와, 상기 수신한 데이터 스트림을 설정 규칙에 따라 세그먼트 단위로 분할하고 분할된 세그먼트가 캐시 메모리에 기 존재하면 해당 세그먼트를 그에 대응된 해시값으로 대체하여 상기 데이터 스트림을 1차 인코딩하는 제1 인코딩부와, 상기 수신한 데이터 스트림 또는 상기 1차 인코딩된 데이터 스트림을 기 설정된 알고리즘을 통하여 압축하여 2차 인코딩하는 제2 인코딩부, 및 상기 데이터 스트림의 압축 여부에 따라, 상기 1차 인코딩의 수행 여부, 상기 2차 인코딩의 수행 여부, 상기 1차 인코딩 전 상기 데이터 스트림의 압축 해제 수행 여부 중 적어도 하나를 결정하여 상기 제1 및 제2 인코딩부의 동작을 제어하는 제어부를 포함하는 트래픽 최적화 장치를 제공한다.
본 발명에 의하면, 서버 또는 클라이언트로부터 전송받은 데이터 스트림을 경량화하고 압축하여 WAN으로 중계 전송함으로써, WAN 환경에서 서버와 클라이언트 간의 데이터 전송을 원활하게 하는 동시에 대역폭 한계를 극복할 수 있다.

Description

트래픽 최적화 장치 및 그 방법{Traffic optimizing apparatus and method thereof}
본 발명은 트래픽 최적화 장치 및 그 방법에 관한 것으로서, 보다 상세하게는 WAN(Wide Area Network) 환경에서 서버(Server)와 클라이언트(Client) 간의 데이터 전송을 원활히 하고 대역폭 한계를 극복할 수 있는 트래픽 최적화 장치 및 그 방법에 관한 것이다.
LAN 환경에 비하여 WAN 환경에서는 낮은 대역폭, 높은 지연(high latency), 높은 패킷 손실률 등의 특징을 갖고 있다. 이러한 WAN 환경에서의 네트워크 최적화를 위해서는 전송 프로토콜, 패킷 손실, 네트워크 대역폭 한계 때문에 생기는 성능 문제를 극복해야 한다.
따라서, WAN과 서버 및 WAN과 클라이언트 사이에서 WAN을 최적화할 수 있는 트래픽 최적화 장치가 절실히 요구된다.
본 발명의 배경이 되는 기술은 한국등록특허 제10-0818776호(2008.04.01 공고)에 개시되어 있다.
본 발명은 WAN 환경에서 서버와 클라이언트 간의 데이터 전송을 원활히 하고 대역폭 한계를 극복할 수 있는 트래픽 최적화 장치 및 그 방법을 제공하는데 목적이 있다.
본 발명은, 수신한 데이터 스트림의 압축 여부에 따라 트래픽을 최적화하는 장치에 있어서, 상기 수신한 데이터 스트림의 압축 여부를 판별하는 전처리부와, 상기 수신한 데이터 스트림을 설정 규칙에 따라 세그먼트 단위로 분할하고 분할된 세그먼트가 캐시 메모리에 기 존재하면 해당 세그먼트를 그에 대응된 해시값으로 대체하여 상기 데이터 스트림을 1차 인코딩하는 제1 인코딩부와, 상기 수신한 데이터 스트림 또는 상기 1차 인코딩된 데이터 스트림을 기 설정된 알고리즘을 통하여 압축하여 2차 인코딩하는 제2 인코딩부, 및 상기 데이터 스트림의 압축 여부에 따라, 상기 1차 인코딩의 수행 여부, 상기 2차 인코딩의 수행 여부, 상기 1차 인코딩 전 상기 데이터 스트림의 압축 해제 수행 여부 중 적어도 하나를 결정하여 상기 제1 및 제2 인코딩부의 동작을 제어하는 제어부를 포함하는 트래픽 최적화 장치를 제공한다.
또한, 상기 트래픽 최적화 장치는, 상기 데이터 스트림을 수신하는 수신부, 및 상기 1차 또는 2차 인코딩이 완료된 데이터 스트림을 네트워크망으로 전달하며, 상기 1차 및 2차 인코딩 중 어떠한 인코딩도 수행되지 않은 경우에는 상기 수신된 데이터 스트림 원본을 상기 네트워크망으로 전달하는 송신부를 더 포함할 수 있다.
또한, 상기 전처리부는, 상기 수신된 데이터 스트림 내 각 문자의 누적 빈도수를 기초로 상기 데이터 스트림의 엔트로피 값을 분석하여 상기 엔트로피 값이 기 설정된 문턱값 이상이면 상기 데이터 스트림을 압축 상태로 판별하며, 상기 제어부는, 상기 데이터 스트림이 압축 상태이면 상기 1차 인코딩만 진행시키고 미압축 상태이면 상기 2차 인코딩까지 진행시킬 수 있다.
또한, 상기 전처리부는, 상기 수신된 데이터 스트림의 헤더를 분석하여 상기 압축 여부 및 압축 유형을 판별하며, 상기 제어부는, 상기 데이터 스트림이 압축 상태이면, 판별된 제1 압축 유형에 따라 상기 데이터 스트림을 압축 해제하고 상기 제1 인코딩부로 전달하여, 압축 해제 상태의 데이터 스트림에 대한 상기 1차 인코딩을 진행시키며, 상기 1차 인코딩 후 상기 2차 인코딩이 완료된 데이터 스트림의 앞에 상기 제1 압축 유형의 정보를 삽입시킬 수 있다.
또한, 상기 전처리부는, 상기 수신한 데이터 스트림에서 지정된 문자열이 발견되었을 경우 상기 데이터 스트림을 압축 상태로 판별할 수 있다.
또한, 상기 캐시 메모리는, 기 전송 이력이 있는 세그먼트들 각각에 대한 데이터 및 그에 대응된 해시값을 매칭 저장하며, 상기 제1 인코딩부는, 상기 분할된 세그먼트에 대해 연산한 해시값이 상기 캐시 메모리에 존재하는 동시에 데이터도 일치하면 해당 세그먼트의 데이터를 상기 해시값으로 대체하고, 상기 캐시 메모리에 미존재하거나 데이터가 불일치하면 해시값 대체 없이 해당 세그먼트의 데이터 및 그에 대응된 해시값을 상기 캐시 메모리에 신규 등록할 수 있다.
또한, 상기 제2 인코딩부는, 상기 1차 인코딩된 데이터 스트림을 대상으로 무손실 압축방법을 적용하여 2차 인코딩할 수 있다.
또한, 상기 설정 규칙은, 상기 데이터 스트림을 지정 길이의 세그먼트 단위로 분할하는 방식, 상기 데이터 스트림에 대해 지정 길이의 슬라이딩 윈도우를 소정 바이트씩 이동시켜 인접 세그먼트 간 중첩되는 형태로 분할하는 방식, 그리고 설정된 길이의 슬라이딩 윈도우를 이동시키되 라빈핑거프린트 다항식에 기반한 해시값을 기반으로 각 세그먼트를 비균등한 크기로 분할하는 방식 중 적어도 하나를 포함할 수 있다.
그리고, 본 발명은, 수신한 데이터 스트림의 압축 여부에 따라 트래픽을 최적화하는 장치를 이용한 트래픽 최적화 방법에 있어서, 상기 수신한 데이터 스트림의 압축 여부를 판별하는 단계와, 상기 데이터 스트림의 압축 여부에 따라, 제1 인코딩부를 통한 1차 인코딩의 수행 여부, 제2 인코딩부를 통한 2차 인코딩의 수행 여부, 상기 1차 인코딩 전 상기 데이터 스트림의 압축 해제 수행 여부 중 적어도 하나를 결정하는 단계, 및 상기 결정된 결과를 기초로 상기 제1 및 제2 인코딩부의 동작을 제어하거나, 상기 1차 인코딩 전 상기 데이터 스트림의 압축 해제를 수행하는 단계를 포함하며, 상기 1차 인코딩 수행 시, 상기 수신한 데이터 스트림을 설정 규칙에 따라 세그먼트 단위로 분할하고 분할된 세그먼트가 캐시 메모리에 기 존재하면 해당 세그먼트를 그에 대응된 해시값으로 대체하여 1차 인코딩하고, 상기 2차 인코딩 수행 시, 상기 수신한 데이터 스트림 또는 상기 1차 인코딩된 데이터 스트림을 기 설정된 알고리즘을 통하여 압축하여 2차 인코딩하는 트래픽 최적화 방법을 제공한다.
또한, 상기 트래픽 최적화 방법은, 상기 데이터 스트림을 수신하는 단계, 및 상기 1차 또는 2차 인코딩이 완료된 데이터 스트림을 네트워크망으로 전달하며, 상기 1차 및 2차 인코딩 중 어떠한 인코딩도 수행되지 않은 경우에는 상기 수신된 데이터 스트림 원본을 상기 네트워크망으로 전달하는 단계를 더 포함할 수 있다.
또한, 상기 압축 여부를 판별하는 단계는, 상기 수신된 데이터 스트림 내 각 문자의 누적 빈도수를 기초로 상기 데이터 스트림의 엔트로피 값을 분석하여 상기 엔트로피 값이 기 설정된 문턱값 이상이면 상기 데이터 스트림을 압축 상태로 판별하며, 상기 1차 인코딩 또는 2차 인코딩 수행 시에는, 상기 데이터 스트림이 압축 상태이면 상기 1차 인코딩만 진행시키고 미압축 상태이면 상기 2차 인코딩까지 진행시킬 수 있다.
또한, 상기 압축 여부를 판별하는 단계는, 상기 수신된 데이터 스트림의 헤더를 분석하여 상기 압축 여부 및 압축 유형을 판별하며, 상기 트래픽 최적화 방법은, 상기 데이터 스트림이 압축 상태이면, 판별된 제1 압축 유형에 따라 상기 데이터 스트림을 압축 해제한 상태에서 상기 1차 인코딩을 수행하는 단계, 및 상기 1차 인코딩 후 상기 2차 인코딩이 완료된 데이터 스트림의 앞에 상기 제1 압축 유형의 정보를 삽입시키는 단계를 더 포함할 수 있다.
또한, 상기 압축 여부를 판별하는 단계는, 상기 수신한 데이터 스트림에서 지정된 문자열이 발견되었을 경우 상기 데이터 스트림을 압축 상태로 판별할 수 있다.
또한, 상기 캐시 메모리는, 기 전송 이력이 있는 세그먼트들 각각에 대한 데이터 및 그에 대응된 해시값을 매칭 저장하며, 상기 1차 인코딩 수행 시, 상기 분할된 세그먼트에 대해 연산한 해시값이 상기 캐시 메모리에 존재하는 동시에 데이터도 일치하면 해당 세그먼트의 데이터를 상기 해시값으로 대체하고, 상기 캐시 메모리에 미존재하거나 데이터가 불일치하면 해시값 대체 없이 해당 세그먼트의 데이터 및 그에 대응된 해시값을 상기 캐시 메모리에 신규 등록할 수 있다.
또한, 상기 2차 인코딩 수행 시, 상기 1차 인코딩된 데이터 스트림을 대상으로 무손실 압축방법을 적용하여 2차 인코딩할 수 있다.
본 발명에 따르면, 서버 또는 클라이언트로부터 전송받은 데이터 스트림을 경량화하고 압축하여 WAN으로 중계 전송함으로써, WAN 환경에서 서버와 클라이언트 간의 데이터 전송을 원활하게 하는 동시에 대역폭 한계를 극복할 수 있는 이점이 있다.
도 1은 본 발명의 실시예에 따른 트래픽 최적화 장치가 적용된 광역망 통신 시스템의 구성을 나타낸 도면이다.
도 2는 본 발명의 실시예에 따른 트래픽 최적화 장치를 나타낸 도면이다.
도 3은 도 2에 도시된 전처리부의 구성을 나타낸 도면이다.
도 4는 도 3에 도시된 엔트로피 측정기의 동작을 설명하는 도면이다.
도 5는 본 발명의 실시예에서 해시값을 이용한 데이터 스트림의 1차 인코딩 과정을 설명하는 도면이다.
도 6은 도 2의 제어부를 위한 제어 정책을 예시한 도면이다.
도 7은 도 5에 대응되는 디코딩 과정을 설명하는 도면이다.
도 8은 도 2의 장치를 이용한 트래픽 최적화 방법을 설명하는 도면이다.
도 9는 본 발명의 실시예에 사용되는 LZ77 알고리즘을 설명하는 도면이다.
도 10 및 도 11은 본 발명의 실시예에 사용되는 허프만 코딩을 설명하는 도면이다.
도 12a 및 도 12b는 본 발명의 제1 실시예에 따른 WAN 최적화 방법을 구체적으로 설명하는 도면이다.
도 13a 및 도 13b는 본 발명의 제2 실시예에 따른 트래픽 최적화 방법을 구체적으로 설명하는 도면이다.
도 14a 및 도 14b는 본 발명의 제3 실시예에 따른 트래픽 최적화 방법을 구체적으로 설명하는 도면이다.
도 15a 및 도 15b는 본 발명의 제4 실시예에 따른 트래픽 최적화 방법을 구체적으로 설명하는 도면이다.
그러면 첨부한 도면을 참고로 하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다.
그러면 첨부한 도면을 참고로 하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다.
도 1은 본 발명의 실시예에 따른 트래픽 최적화 장치가 적용된 광역망 통신 시스템의 구성을 나타낸 도면이다. 이러한 도 1은 낮은 네트워크 대역을 극복하기 위한 트래픽 최적화 장치의 동작 환경을 보여준다.
도 1에 나타낸 것과 같이, 본 발명의 실시예에 따른 광역망 통신 시스템은 서버(Server), 클라이언트(Client), WAN(Wide Area Network), 그리고 제1 및 제2 트래픽 최적화 장치(100)(WAN Optimizer)를 포함한다.
WAN 환경에서 서버(S)와 클라이언트(C)는 WAN(광역 통신망)을 통해 네트워크 연결되어 상호 데이터를 송수신한다. 즉, 일반적으로 WAN 환경에서는 '서버 - WAN - 클라이언트'의 구조로 동작한다.
여기에 WAN Optimizer가 적용되는 경우에는 도 1과 같이 '서버 - WAN Optimizer(Accelerator) - WAN - WAN Optimizer(Accelerator) - 클라이언트'의 구조로 동작한다.
제1 및 제2 트래픽 최적화 장치(100-1,100-2)는 서버(S)와 WAN 사이, 그리고 WAN과 클라이언트(C) 사이에 각각 위치하며, WAN 환경에서 데이터 전송 효율 및 속도를 개선할 수 있는 가속화기(Accelerator)로 동작한다.
이를 위해, 각각의 최적화 장치(100-1,100-2)는 자신과 연결된 서버(S) 혹은 클라이언트(C)로부터 받은 데이터를 경량화하고 압축하여 다시 WAN으로 전달함으로써 네트워크 대역폭을 절약함은 물론 낮은 대역폭으로 원활한 데이터 전송이 가능하게 하고 대역폭 한계로 인한 성능 문제를 해결할 수 있다. 이러한 트래픽 최적화 장치(100)는 프록시 서버(proxy server)를 의미할 수 있다.
또한, 도 1에 도시된 것과 같이, 각각의 트래픽 최적화 장치(100-1,100-2)는 데이터 부호화를 수행하는 인코더(Encoder)와 데이터 복호화를 수행하는 디코더(Decoder)를 모두 포함한다. 이와 같이 인코더와 디코더 세트를 포함하는 이유는 다음과 같다.
우선, 서버(S)에서 클라이언트(C)를 향하는 데이터 전송 경로(도 1의 실선 경로 참조)의 경우, 제1 트래픽 최적화 장치(100-1)는 데이터 인코더로 동작하고, 제2 트래픽 최적화 장치(100-2)는 데이터 디코더로 동작한다.
반대로 클라이언트(C)에서 서버(S)를 향하는 데이터 전송 경로(도 1의 점선 경로 참조)의 경우 제2 트래픽 최적화 장치(100-2)가 데이터 인코더로 동작하고, 제1 트래픽 최적화 장치(100-1)가 데이터 디코더로 동작한다.
실선 경로를 설명하면, 서버(S)가 전송한 데이터 스트림은 제1 트래픽 최적화 장치(100-1)에 수신된다. 그러면, 제1 트래픽 최적화 장치(100-1)는 수신한 데이터 스트림을 인코딩(데이터 중복 제거 및 압축)한 후 다시 WAN으로 전송한다.
이후, 인코딩된 데이터 스트림이 WAN을 통해 제2 트래픽 최적화 장치(100-2)에 전달되고 제2 트래픽 최적화 장치(100-2)는 이를 역으로 디코딩하여 클라이언트(C)에게 보낸다. 이에 따라 서버(S)가 보내고자 하는 데이터가 클라이언트(C)에게 최종 전달된다.
여기서, 중요한 것은 서버(S)와 클라이언트(C)는 시스템 내의 트래픽 최적화 장치(100-1,100-2)의 존재를 전혀 알지 못한다. 따라서, 제2 트래픽 최적화 장치(100-2)는 인코딩된 상태로 수신된 데이터를 다시 디코딩(압축 해제 및 중복 데이터 복원)하여, 인코딩 전의 상태 즉, 초기에 서버(S)가 보낸 데이터 스트림과 동일 상태로 돌린 후에 클라이언트(C)로 전달해 주어야 한다.
물론, 이와 반대되는 점선 경로의 경우, 제2 트래픽 최적화 장치(100-2)는 클라이언트(C)로부터 전송받은 데이터 스트림을 인코딩하여 WAN으로 전달하고, 제1 트래픽 최적화 장치(100-1)는 WAN을 통해 이를 수신한 후 다시 디코딩하여 서버(S)로 보낸다. 구체적인 원리는 앞서와 동일하므로 중복된 설명은 생략한다.
디코딩 방법은 인코딩에 사용한 방법을 역으로 수행하면 되므로 이하의 본 발명의 실시예에서는 인코딩 방법을 중점적으로 설명한다.
또한, 제1 및 제2 트래픽 최적화 장치(100-1,100-2)에 포함된 인코더는 경로 상의 차이를 제외하고는 상호 동일 원리로 동작하므로, 이하에서는 설명의 편의상 제1 트래픽 최적화 장치(100-1)를 기준으로 설명한다. 즉, 제1 트래픽 최적화 장치(100-1)가 서버(S)로부터 받은 데이터 스트림을 인코딩하여 WAN으로 전송하는 동작을 대표 예시로 하여 설명한다.
물론, 본 실시예에 따른 트래픽 최적화 기법은 제1 트래픽 최적화 장치(100-1)가 서버(S)의 데이터 스트림을 인코딩하여 WAN으로 보낼 때도 적용 가능하지만, 제2 트래픽 최적화 장치(100-2)가 클라이언트(C)의 데이터 스트림을 인코딩하여 WAN으로 보낼 때도 적용 가능함은 자명하다.
다음은 본 발명의 실시예에 따른 트래픽 최적화 장치 및 그 방법에 관하여 더욱 구체적으로 설명한다.
도 2는 본 발명의 실시예에 따른 트래픽 최적화 장치의 구성을 나타낸 도면이다. 도 2에 나타낸 것과 같이, 본 발명의 실시예에 따른 트래픽 최적화 장치(100)는 수신한 데이터 스트림의 압축 여부에 따라 트래픽을 최적화하며, 수신부(110), 전처리부(120), 제1 인코딩부(130), 제2 인코딩부(140), 제어부(150) 및 송신부(160)를 포함한다.
수신부(110)는 서버(S)나 클라이언트(C)로부터 데이터 스트림을 수신한다. 이하에서는 도 1의 장치(100)가 서버(S)로부터 데이터 스트림을 수신하고 이를 인코딩 후 네트워크망(WAN)으로 전송하는 것을 예시한다.
전처리부(120)는 수신한 데이터 스트림의 압축 여부를 판별한다. 여기서, 전처리부(120)는 데이터 스트림의 압축 여부를 판별하기 위한 방법으로, 엔트로피 분석 기법, 헤더 분석 기법 또는 패턴 분석 기법을 사용할 수 있다.
도 3은 도 2에 도시된 전처리부의 구성을 나타낸 도면이다.
도 3을 참조하면, 전처리부(120)는 엔트로피 측정기(121), 프로토콜 해석기(122), 그리고 패턴 조회기(123)를 포함할 수 있다.
엔트로피 측정기(121)는 데이터 스트림 내 각 문자의 누적 빈도수를 기초로 데이터 스트림의 엔트로피 값(무작위성; randomness)을 분석하여, 엔트로피 값이 기 설정된 문턱값 이상이면 데이터 스트림을 압축 상태로 판별하고 문턱값 미만이면 미압축 상태로 판단한다.
도 4는 도 3에 도시된 엔트로피 측정기의 동작을 설명하는 도면이다.
도 4에 나타낸 것과 같이, 엔트로피 측정기(121)는 데이터 스트림을 설정 길이의 세그먼트 단위로 분할한 다음, 각 세그먼트 별로 세그먼트 내 존재하는 각 문자의 빈도수를 계산하고, 그 결과를 전체 세그먼트에 대해 누적한다. 그러면, 데이터 스트림 내에 존재하는 각 문자 별 최종 누적 빈도수가 구해지며, 이를 통해 데이터 스트림에 대한 엔트로피 값을 계산할 수 있다.
만일, 데이터 스트림이 압축된 형태이면 데이터 스트림 내에 중복 문자들이 거의 없기 때문에, 데이터 내 무작위성(randomness)이 높아지고, 결과적으로 엔트로피 값이 높아진다. 따라서 데이터 스트림의 엔트로피 값이 문턱값 이상이면 압축 파일, 문턱값 미만이면 일반 파일에 해당한다.
엔트로피 측정기(121)를 이용한 엔트로피 분석 기반의 기법은 네트워크에 무관한 방법이지만, 이하의 프로토콜 해석기(122)를 이용한 헤더 분석 기반의 기법은 네트워크 프로토콜에 종속적인 방법이다.
프로토콜 해석기(122)는 수신된 데이터 스트림의 헤더를 분석한 결과를 기초로 데이터 스트림의 압축 여부를 판별한다. 예를 들어, 유저(client)가 웹브라우저의 압축 파일을 다운 요청 시에 서버(server)는 이를 WAN을 통해 유저로 전송하게 되는데, 이때 서버와 WAM 사이의 트래픽 최적화 장치(100)는 서버가 보낸 파일의 패킷을 통해 HTTP 헤더를 분석하고, 헤더 내 URL 필드에 위치한 파일 이름에서 파일 확장자를 확인함으로써 해당 파일이 압축 파일인지 여부를 구분한다. 압축 파일인 경우에는 파일의 압축 유형 역시 헤더 분석을 통해 파악할 수 있다.
패턴 조회기(123)는 수신된 데이터 스트림에서 지정된 문자열이 발견되었을 경우 데이터 스트림을 압축 상태로 판별한다. 이를 위해, 패턴 조회기(123)는 기 등록된 문자열 패턴을 등록해 두고, 수신된 데이터 스트림에서 기 등록된 패턴이 나타나는 경우에 해당 데이터 스트림을 압축 상태로 판단한다.
이와 같이, 패턴 조회기(123)는 프로토콜을 해석하지 않은 상태에서 데이터 스트림 내에서 압축 패턴 목록에 포함된 문자열을 발견하였다면 해당 데이터 스트림을 압축 상태로 판단한다.
물론, 이상과 같은 전처리부(120)는 상술한 세가지 구성(121,122,123) 중 적어도 하나를 포함하여 구현될 수 있다.
제1 인코딩부(130)는 데이터 스트림을 설정 규칙에 따라 세그먼트 단위로 분할하고 분할된 세그먼트가 캐시 메모리(cash memory)에 기 존재하면 해당 세그먼트를 그에 대응된 해시값(hash)으로 대체하는 방식으로 중복 데이터를 제거(Data deduplication)하여 데이터 스트림을 1차 인코딩한다.
제1 인코딩부(130)는 해시값이 같은 세그먼트들을 중복된 데이터로 간주할 수 있다. 이처럼, 기 전송 이력이 있는 세그먼트를 그에 대응된 짧은 길이의 해시값으로 대체하는 것을 각 세그먼트 별로 수행할 경우, 전체 데이터 스트림의 길이는 확연히 축소되어 경량화될 수 있다.
캐시 메모리는 트래픽 최적화 장치(100)가 과거에 기 전송한 이력이 있는 세그먼트들 각각에 대한 데이터 및 그에 대응된 해시값을 매칭 저장한다. 캐시 메모리는 트래픽 최적화 장치(100) 내에 포함될 수 있으며 트래픽 최적화 장치(100) 간에 서로 공유할 수도 있다. 또한, 캐시 메모리는 시스템의 메모리, 하드 디스크, SSD 등과 같은 저장 장치 중 적어도 하나를 포함할 수 있다.
이러한 캐시 메모리는 해시값을 인덱스로 하여 빠른 저장 및 조회가 가능하다. 다만 해시값이 같은 두 세그먼트가 실제로는 다른 데이터일 수 있기 때문에, 이 경우 데이터를 추가로 비교하여 동일 여부를 따질 수 있다.
즉, 제1 인코딩부(130)는 데이터 스트림에서 분할된 해당 세그먼트에 대해 해시값을 연산한 결과, 해시값이 캐시 메모리에 존재하는 동시에 데이터도 일치하는 경우에, 해당 세그먼트의 데이터를 해시값으로 대체한다.
반면, 해당 세그먼트의 해시 값이 캐시 메모리에 미존재하거나, 캐시 메모리에는 존재하지만 데이터가 불일치하는 경우에는 해시값 대체 없이 해당 세그먼트의 데이터를 유지하도록 하고, 대신 해당 세그먼트의 데이터 및 그에 대응된 해시값을 캐시 메모리에 신규 등록하여, 이후부터 해당 해시값과 데이터를 중복 데이터 제거에 이용 가능하게 한다.
이처럼, 해시값은 동일하지만 실제 세그먼트 데이터는 상이한 경우가 있기 때문에, 해시값만 비교하는 것보다는 데이터 원본의 추가 비교를 통해 1차 인코딩 시의 발생 가능한 오류를 줄인다.
도 5는 본 발명의 실시예에서 해시값을 이용한 데이터 스트림의 1차 인코딩 과정을 설명하는 도면이다.
도 5는 데이터 스트림에 대해 분할된 4개의 세그먼트 중 세그먼트 2,4에 대해 연산한 해시값 H2, H4 만이 캐시 메모리에 기 저장된 상황을 예시한다. 이 경우 1차 인코딩 시에 세그먼트 1,3의 데이터는 그대로 유지하되 세그먼트 2,4의 데이터는 해시값 H2, H4로 각각 대체되고, 이에 따라 데이터의 길이가 확연히 줄어든다. 물론, 도 5의 말단과 같이 추후 이를 다시 압축하여 2차 인코딩할 경우 그 길이가 더욱 더 줄어든다.
데이터 스트림의 1차 인코딩 시에, 세그먼트 분할에 사용되는 설정 규칙은 세 가지 유형으로 구분될 수 있다.
첫 번째 방법은 데이터 스트림을 지정 길이의 세그먼트 단위로 분할하는 방식이다. 이는 입력되어 들어오는 데이터 스트림을 지정된 크기로 분할하고 분할한 세그먼트에 대해 해시값을 계산하는 가장 간단한 방식이다.
두 번째 방법은 데이터 스트림에 대해 지정 길이의 슬라이딩 윈도우를 소정 바이트(예를 들어, 한 바이트)씩 이동시켜 인접 세그먼트 간이 중첩되는 형태로 분할하는 방식이다. 각 세그먼트의 길이는 균일하며 슬라이딩 윈도우의 길이와 같다. 만일, 해당 슬라이딩 윈도우에 대한 캐시값이 메모리에 존재하면 해당 세그먼트를 해시값으로 대체한다. 만일 최대 지정 길이(슬라이딩 윈도우의 크기)만큼 이동한 경우에도 해당 해시값이 캐시에 존재하지 않으면 해당 세그먼트를 캐시 메모리에 해시값과 함께 저장하며 해당 세그먼트는 원본 그대로 사용한다. 이 방법은 처음 들어온 데이터에 대해서는 첫 번째 방법과 거의 동일하게 작동하지만 변경된 데이터가 들어온 경우 캐시를 이용하여 기존에 등록된 세그먼트를 찾는 과정을 우선으로 하므로, 기존 데이터가 변경되었더라도 변경된 세그먼트 만을 별도로 전송하며, 세그먼트가 일치하는 부분에 대해서는 해시값을 전달하므로 더욱 효과적이다.
세 번째 방법은 설정된 길이(예를 들어 48 바이트)의 슬라이딩 윈도우를 이동시키되 라빈핑거프린트(Rabin fingerprint) 다항식에 기반한 해시값을 기반으로 각 세그먼트를 비균등한 크기로 분할하는 방식으로, 다항식을 이용하여 내용 기반으로 분할 위치를 결정하며 해시값에 의해 분할 되기 때문에 세그먼트의 크기가 동일하지 않은 특징이 있다. 이 방법은 데이터의 일부가 변경되어 변경점이 발생하더라도 기존 데이터와 동일한 부분에서는 같은 방식으로 분할이 되기 때문에 변경된 부분만을 원본 세그먼트로 전송하고, 기존 세그먼트와 동일한 세그먼트들은 세그먼트의 해시값만을 전송할 수 있어 효과적이다.
제2 인코딩부(140)는 수신한 데이터 스트림 또는 제1 인코딩부(130)에서 1차 인코딩된 데이터 스트림을 기 설정된 알고리즘을 통해 압축하는 방식으로 2차 인코딩한다. 즉, 제2 인코딩부(140)는 1차 인코딩 여부와 상관 없이 수신한 데이터 스트림을 바로 2차 인코딩하거나 1차 인코딩된 상태의 데이터 스트림을 2차 인코딩할 수 있으며, 이에 대한 판단은 제어부(150)에서 수행한다.
본 발명의 실시예에서, 제2 인코딩부(140)는 1차 인코딩된 데이터 스트림에 대해 무손실 압축방법을 적용하여 2차 인코딩할 수 있다.
예를 들어, 1차 인코딩된 데이터 스트림에 대해 LZ77 알고리즘을 적용하여 데이터 스트림을 압축한 다음, 해당 데이터 스트림에 대해 다시 허프만 코딩(Huffman Coding)을 적용하여 데이터 스트림을 한번 더 압축하는 방식으로 2차 인코딩한다.
LZ77 알고리즘은 해당 데이터 스트림 내에서 중복된 문자열을 참조자로 표현하여 데이터 길이를 축소하는 기법이다. 허프만 코딩은 해당 데이터 스트림에 포함된 각 문자열의 빈도수를 기초로 2진 트리를 생성하고 이를 이용하여 높은 빈도의 문자열은 짧은 코드를 할당하고 낮은 빈도의 문자열은 긴 코드를 할당하여 코딩함으로써 데이터의 비트수를 줄이는 기법이다. 이들 두 기법은 기 공지된 무손실 압축 기법에 해당한다.
제어부(150)는 각 부(110,120,130,140,160)의 동작을 제어한다.
특히, 본 발명의 실시예에서, 제어부(150)는 전처리부(120)에서 판별한 데이터 스트림의 압축 여부에 따라, 1차 인코딩의 수행 여부, 1차 인코딩 후 2차 인코딩의 수행 여부, 그리고 1차 인코딩 전 데이터 스트림의 압축 해제 수행 여부 중 적어도 하나를 결정하고, 결정된 결과 또는 그 조합을 기초로 제1 인코딩부(130) 및 제2 인코딩부(140)의 동작을 제어하거나, 1차 인코딩 전에 데이터 스트림의 압축 해제를 수행한다.
물론, 이를 위해, 제어부(150)는 매우 다양한 제어 정책을 저장하고 이를 참조할 수 있다.
도 6은 도 2의 제어부를 위한 제어 정책을 예시한 도면이다. 도 6에 도시된 것과 같이, 제어부(150)는 다양한 상황 별 그에 대응된 제어 정책을 기초로, 현재 상황에 대응된 제어 정책에 따라 압축 해제 수행 여부, 1차 인코딩 수행 여부, 그리고 2차 인코딩 수행 여부를 결정할 수 있다. 물론, 다양한 제어 정책에 따라, 1차 인코딩을 생략하고 2차 인코딩만 수행할 수도 있으며, 1차 및 2차 인코딩을 모두 수행하지 않을 수도 있다.
따라서, 본 발명의 실시예의 경우, 제어부(150)에서 데이터 스트림의 압축 여부에 따라 제1 및 제2 인코딩부(130,140)의 동작을 제어하는 실시예는 매우 다양하게 존재할 수 있다.
예를 들어, 제어부(150)는 데이터 스트립이 압축 상태이면, 1차 인코딩만 진행시키고 2차 인코딩을 생략할 수 있으며, 미압축 상태이면 1차 인코딩 후 2차 인코딩을 추가로 진행시켜 1차 만으로 인코딩 효과가 미약한 상황을 보완할 수 있다.
또한, 제어부(150)는 데이터 스트림이 압축 상태이면 압축을 다시 해제 하여 1차 인코딩을 진행시키고 그에 대한 2차 인코딩을 진행시킬 수 있다. 이때, 2차 인코딩이 완료된 데이터 스트림의 앞 부분에 압축 유형 정보를 추가할 수 있다.
물론, 압축 상태 판별에는 앞서 상술한 바와 같은 헤더 기반, 엔트로피 기반 도는 패턴 기반의 분석 기법이 사용될 수 있다.
더욱 구체적인 예로, 엔트로피 기반의 분석 결과 전처리부(110)에서 데이터 스트림이 압축 상태로 판별된 경우, 제어부(150)는 데이터 스트림의 1차 인코딩만 진행시킬 수 있으며, 미압축 상태로 판별된 경우에는 1차 인코딩 후 2차 인코딩을 추가로 진행시킬 수 있다.
또한, 헤더 기반의 분석 결과 전처리부(110)에서 데이터 스트림이 제1 압축 유형으로 압축된 상태로 판별된 경우, 제어부(150)는 데이터 스트림을 제1 압축 유형에 따라 압축 해제하여 제1 인코딩부(130)로 보내어 압축 해제 상태의 데이터 스트림의 1차 인코딩을 진행시키고 이후 제2 인코딩부(140)에서 2차 인코딩을 진행시킨다. 이때, 제2 인코딩부(140)는 2차 인코딩이 완료된 데이터 스트림의 앞(전단)에 제1 압축 유형의 정보를 삽입시킨다.
이때, 인코딩이 모두 완료된 데이터 스트림의 앞에 압축 유형 정보를 삽입하는 이유는 서버와 클라이언트가 트래픽 최적화 장치(100)의 존재를 알지 못하므로, 추후 수신측의 트래픽 최적화 장치가 이를 다시 디코딩하여 클라이언트로 보낼 때, 기존에 서버가 전송했던 데이터 상태인 제1 압축 유형의 압축 상태 그대로 다시 압축하여 클라이언트로 전달할 수 있도록 하기 위함이다.
즉, 수신측의 트래픽 최적화 장치는 인코딩된 데이터를 수신하여 반대로 디코딩한 후에 제1 압축 유형 정보를 이용하여 다시 압축하여 클라이언트로 보낼 수 있다. 이에 따라 서버가 초기 전송한 데이터 상태 그대로 클라이언트로 데이터를 전달할 수 있으며 이로써 서버에서 클라이언트로 데이터 스트림을 다이렉트로 보낸 것과 같은 효과를 낼 수 있다.
송신부(160)는 1차 인코딩 또는 2차 인코딩이 완료된 데이터 스트림을 네트워크망 즉, WAN으로 전달한다. 본 발명의 실시예는 네트워크망으로 WAN을 예시하고 있지만 다른 네트워크에도 적용 가능하다.
여기서 물론, 송신부(160)는 1차 및 2차 인코딩 중 어떠한 인코딩도 수행되지 않은 경우에는 인코딩되지 않은 상태의 데이터 스트림 원본을 네트워크망으로 전달할 수도 있다.
도 7은 도 5에 대응되는 디코딩 과정을 설명하는 도면이다. 디코딩의 경우 도 4와 반대되는 방법을 수행하면 된다. 예를 들면, 압축된 데이터를 해당 기법을 기초로 다시 압축 해제한 다음, 해시값 H2, H4로 대체된 블록은 그와 매칭된 데이터를 캐시 메모리에서 조회하여 원래의 세그먼트 데이터 즉, 세그먼트 2와 세그먼트 4의 원래 데이터로 되돌린다. 이후, 분할 상태의 세그먼트를 하나로 통합하여 원래의 데이터 스트림으로 복원한다.
도 8은 도 2의 장치를 이용한 트래픽 최적화 방법을 설명하는 도면이다.
먼저, 트래픽 최적화 장치(100)의 수신부(110)는 서버(S)로부터 데이터 스트림을 수신한다(S810).
그리고, 전처리부(120)는 수신한 데이터 스트림의 압축 여부를 판별하고 판별 결과를 제어부(150)로 전달한다(S820). 이때, 전처리부(120)는 앞서 상술한 바와 같이 엔트로피 분석 기반, 헤더 분석 기반 또는 패턴 분석 기반의 기법을 이용하여 데이터 스트림의 압축 여부를 판별할 수 있다.
제어부(150)는 데이터 스트림의 압축 여부에 따라, 1차 인코딩의 수행 여부, 1차 인코딩 후 2차 인코딩의 수행 여부, 1차 인코딩 전 데이터 스트림의 압축 해제 수행 여부 중 적어도 하나를 결정하고(S830), 결정된 결과를 기초로 제1 및 제2 인코딩부(130,140)의 동작을 각각 제어한다(S840).
이때, 결정된 결과 또는 결과의 조합을 기반으로, 트래픽 최적화 장치(100)는 데이터 스트림에 대한 1차 인코딩만 수행할 수도 있고, 1차 인코딩 이후 2차 인코딩을 추가로 수행할 수도 있다. 또한, 1차 인코딩 이전에 데이터 스트림의 압축 해제를 수행할 수도 있다.
물론, 1차 인코딩 없이 2차 인코딩을 바로 수행할 수도 있고, 1차 및 2차 인코딩이 모두 생략될 수도 있다.
또한, 1차 인코딩 시에는 데이터 스트림을 설정 규칙에 따라 세그먼트 단위로 분할하고 분할된 세그먼트가 캐시 메모리에 기 존재하면 해당 세그먼트를 그에 대응된 해시값으로 대체하여 1차 인코딩할 수 있다. 또한, 2차 인코딩 수행 시, 상기 1차 인코딩된 데이터 스트림을 기 설정된 알고리즘을 통하여 압축하여 2차 인코딩할 수 있다.
이후, 전송부(160)는 1차 또는 2차 인코딩이 완료된 데이터 스트림을 네트워크망으로 전달한다(S850). 여기서, 앞서 상술한 것과 같이, 어떠한 인코딩도 수행하지 않은 경우에는 수신된 데이터 스트림 원본을 그대로 전달한다.
그 밖에도 본 발명의 실시예는 데이터 스트림의 암호화 여부에 따라 트래픽을 최적화할 수도 있으며 그 기본 원리는 앞서 상술한 것과 동일하다. 즉, 압축 여부 판별 시와 마찬가지로 전처리부에서 엔트로피, 문자열 비교, 헤더 분석 중 적어도 하나를 이용하여 데이터 스트림의 암호화 여부를 판별하며, 판별 결과를 기초로 제어부에서 1차 인코딩의 수행 여부, 2차 인코딩의 수행 여부, 1차 인코딩 전 데이터 복호화 수행 여부 중 적어도 하나를 결정하여 1차 및 2차 인코딩의 동작을 제어하면 된다.
한편, 본 발명의 실시예에서, 2차 인코딩 시에 사용 가능한 LZ77 기법과 허프만 코딩은 모두 기 공지된 기법에 해당하지만, 그 원리를 간단히 설명하면 다음과 같다.
도 9는 본 발명의 실시예에 사용되는 LZ77 알고리즘을 설명하는 도면이다.
LZ77은 사전(Dictionary) 기반 압축 방식 또는 디렉토리 기반 압축 방식으로 불리우며, 슬라이딩 윈도우를 이용하여 데이터를 슬라이딩 하면서 서치 버퍼(111)와 룩 어헤드 버퍼(113)를 비교하여 내용을 치환하는 압축 알고리즘이다. 도 9에서 각 행은 시간을 나타내며, 시간에 따라 데이터를 슬라이딩 하여 비교하는 모습을 확인할 수 있다.
도 9는 "abracadabrad"라는 문자열을 대상으로 LZ77 알고리즘을 적용하여 압축을 수행하는 과정으로, 서치 버퍼(111)는 7의 크기를 가지고, 룩-어헤드 버퍼(113)는 5의 크기를 가지는 것을 예시한다.
LZ77은 이미 한번 이상 사용된 문자열(중복 문자열)은 기존의 문자열의 상대적 위치와 일치하는 길이를 저장한다. 구체적으로, 현재의 중복된 문자열을 (offset, length, symbol)와 같은 형태의 참조자로 대체하여 저장한다.
여기서, offset은 현재의 중복 문자열과 동일한 이전 문자열의 위치(현재 문자열로부터 떨어진 거리), length는 중복 문자열의 길이, 그리고 symbol은 다음 문자 즉, 현재의 중복 문자열 다음에 나타난 문자를 의미한다.
먼저, 도 9의 첫 번째 행을 보면, 슬라이딩 윈도우가 문자열을 스캔하여 맨 처음 등장한 문자 a는 기존에 없는 문자이므로, 현재의 문자 a에 대한 결과(Output)는 (0,0, 현재 문자) = (0,0,a)이 된다. 즉, 이때의 symbol 값은 다음 문자가 아닌 현재 문자가 된다.
슬라이딩 윈도우를 한칸 이동시킨 두 번째 행을 보면, 문자 b는 기존에 없는 문자이므로 b에 대한 결과는 (0,0,b)가 된다. 이후, 그 다음 문자 r에 대한 결과 역시 (0,0,r)이 된다.
네번째 행을 보면, 문자 a는 그보다 3칸 앞에 이미 등장한 문자이며, a의 길이는 1이고, 그 다음 문자는 c 이므로, 그 결과는 (3,1,c)가 된다. 이로부터 슬라이딩 윈도우를 2칸 이동한 다섯번째 행에서, 문자 a는 2칸 앞에 이미 등장한 문자이며, 그 다음 문자는 d이므로, 그에 대한 결과는 (2,1,d)가 된다.
이로부터 슬라이딩 윈도우를 2칸 이동한 여섯번째 행을 보면, 문자 abra는 7칸 앞에 이미 등장한 문자열이며, 문자열의 길이는 4이고, 그 다음 문자는 d 이므로, 그 결과는 (7,4,d)가 된다.
이러한 방법을 이용하면 데이터의 길이를 축소할 수 있으며, 데이터 스트림 내에서 일치하는 문자열이 많을수록 데이터의 양을 최대한 줄일 수 있다.
도 10 및 도 11은 본 발명의 실시예에 사용되는 허프만 코딩을 설명하는 도면이다. 허프만 코딩은 데이터 내 출현 빈도가 높은 문자에는 짧은 코드를 할당하고 출현 빈도가 높은 문자에는 긴 코드를 할당하는 가변 길이 코딩 기법이다.
도 10은 소정 데이터 스트림 내 각 문자 A, B, C, D, E, F의 출현 빈도를 예시한 것이다. 참고로 문자 A~F는 설명의 편의상 데이터 스트림 내 존재하는 문자를 간단히 대문자 기호로 나타낸 것이며, 도 9에 기재된 소문자 기호와는 무관하다.
도 10에 도시된 각 문자의 빈도를 이용하면 도 11과 같은 이진 트리를 생성할 수 있다. 이진 트리는 가장 빈도수가 낮은 두 개의 문자를 최하위 노드로 하여 점차 빈도 값을 누적하면서 올라가는 형태를 가진다. 이는 기 공지된 방식으로 상세한 설명은 생략한다.
이와 같이 이진 트리를 생성한 결과, 도 11의 좌측 상단과 같은 허프만 코딩 테이블(각 문자 별로 그에 대응된 이진 코드가 할당된 테이블)을 얻을 수 있다. 도 10에서 가장 낮은 빈도를 나타낸 문자 E의 경우, 도 8의 최상위 노드로부터 문자 E에 해당하는 최하위 노드까지 내려가면 '1010'의 코드가 만들어진다. 따라서 문자 E에 대해서는 '1010'이 할당된다.
도 10에서 가장 높은 빈도를 가진 문자 B의 경우 도 8의 최상위 노드로부터 문자 B에 해당하는 노드까지 내려가면 간단히 '11'의 코드가 만들어진다. 따라서 문자 B에 대해서는 '11'이 할당된다. 이처럼, 데이터 스트림 내 빈도수가 높은 문자일수록 짧은 코드를 할당하여 압축하게 되면 비트수를 최소화할 수 있다.
다음은 본 발명의 실시예에 따른 트래픽 최적화 기법의 다양한 예시를 설명한다. 이하에서는 설명의 편의상 아래 표 1의 실시예를 예시로 하여 설명하지만 본 발명이 반드시 이에 한정되지 않음은 자명하다.
실시예 압축 여부
판별 방법
판별
상태
압축 해제
수행여부
1차 인코딩
수행 여부
2차 인코딩
수행 여부
인코딩
단위
1 엔트로피 분석 압축 × ×
데이터
스트림
미압축 ×
2 헤더 분석 압축
3 엔트로피 분석 압축 × ×
세그먼트
미압축 ×
4 헤더 분석 압축
제1 실시예는 엔트로피 분석에 기반하여 압축 여부를 판별하고, 제2 실시예는 헤더 분석에 기반하여 압축 여부를 판별한다. 제1 실시예의 경우, 수신된 데이터 스트림의 압축 상태를 판별하여 압축 상태이면 데이터 스트림 전체에 대해 1차 인코딩(해시값 기반의 데이터 중복 제거 과정)만 수행하고, 미압축 상태이면 1차 인코딩 후 2차 인코딩(LZ77 기법과 허프만 코딩을 이용한 무손실 데이터 압축 과정)을 추가로 진행하는 방식이다.
제2 실시예의 경우, 데이터 스트림의 헤더에 포함된 정보를 기반으로 데이터 스트림의 압축 여부와 압축 유형을 판단하며, 압축 상태인 경우 압축을 해제한 후에 1차 및 2차 인코딩을 수행하고 미압축 상태인 경우 압축 해제 없이 1차 및 2차 인코딩을 수행한다. 다만, 압축 상태인 경우에는 2차 인코딩까지 완료된 데이터 스트림의 전단에 압축 유형의 정보를 삽입한 상태로 데이터 스트림을 외부 전송한다.
제3 및 제4 실시예는 데이터 스트림을 세그먼트 단위로 개별 인코딩한 후에 다시 하나의 데이터 스트림으로 결합하는 전송하는 점에서만 차이가 있을 뿐 근본 원리는 앞서 제1 및 제2 실시예와 동일하다.
이러한 제3 및 제4 실시예는 데이터 스트림을 세그먼트 단위로 개별 인코딩하는 구조로, 전체 데이터가 아닌 세그먼트 단위로 인코딩이 이루어지므로 현재 처리 중인 세그먼트에 대한 메모리만 확보하면 된다. 따라서, 제1 및 제2 실시예에 비해 적은 메모리로 구동 가능하며 메모리 사용 측면에서 유리하다.
제3 실시예의 경우, 수신된 데이터 스트림을 세그먼트 단위로 분할하여 각 세그먼트의 압축 상태를 엔트로피 분석을 기반으로 판단한다. 압축 상태인 세그먼트의 경우 1차 인코딩만 진행하고 미압축 상태인 세그먼트의 경우 2차 인코딩을 추가로 수행하는 것을 반복하여, 모든 세그먼트의 인코딩이 완료되면 결과를 결합하여 하나의 데이터 스트림으로 전송한다.
제4 실시예의 경우, 헤더 분석을 기반으로 데이터 스트림의 압축 여부를 판별하며, 미압축 상태이면 데이터 스트림을 세그먼트 단위로 분할하여 각 세그먼트 별로 1차 및 2차 인코딩을 수행하고, 압축 상태이면 데이터 스트림을 압축 해제한 상태에서 세그먼트 단위로 분할하여 각 세그먼트 별로 1차 및 2차 인코딩을 수행하며, 모든 세그먼트의 인코딩이 완료되면 하나의 데이터 스트림으로 결합하여 전송한다.
이러한 제3 및 제4 실시예가 멀티 코어/멀티 프로세서 환경에서 구동할 경우에는, 1차 인코딩은 코어 0에서 담당하고 2차 인코딩은 코어 1에서 담당하게 하여, 코어 0에서는 i번째 세그먼트에 대한 1차 작업을 수행하는 동시에 코어 1에서는 i-1번째 세그먼트의 2차 작업을 수행하게 함으로써, 두 개의 코어에서 동시에 작업을 수행할 수 있는 구조로 동작 가능하다.
도 12a 및 도 12b는 본 발명의 제1 실시예에 따른 트래픽 최적화 방법을 구체적으로 설명하는 도면이다. 도 12a는 1차 인코딩까지의 과정을 나타내고 도 12b는 그 이후의 2차 인코딩 과정을 나타낸다.
먼저, 도 12a를 참조하면, 본 발명의 제1 실시예에 따른 트래픽 최적화 장치는 서버나 클라이언트로부터 데이터 스트림이 수신되면, 이를 설정 길이의 세그먼트 단위로 나눈다(S1201). 이에 따라 데이터 스트림은 M개의 세그먼트로 분할된다.
이후, 세그먼트 포인터를 이동시켜서 M개의 세그먼트 중 첫번째 세그먼트인 1번 세그먼트를 가리키도록 한다(S1202).
이때 세그먼트 포인터가 특정 세그먼트로 이동할 때마다, 해당 세그먼트에 대해 문자 누적 빈도수를 구하는 과정과, 해당 세그먼트에 대해 연산한 해시값을 기초로 중복 데이터를 제거하는 1차 인코딩 과정을 각각 진행하게 된다.
즉, S1202 단계 이후 1번 세그먼트 내의 각 문자의 누적 빈도수를 계산한다(S1203). 그리고, 1번 세그먼트에 대한 해시값을 연산하고(S1204), 해시값이 캐시 메모리 내에 존재하는지 판단한다(S1205).
캐시 메모리 내 해시값이 발견되면, 캐시에 저장된 실제 데이터까지 비교하여 데이터 일치 여부를 판단한다(S1206). 데이터도 일치하면, 1번 세그먼트의 데이터를 해시값으로 대체하여 출력버퍼 1에 저장한다(S1207). 하지만 해시값이 캐시에 없다면, 1번 세그먼트의 데이터와 해시값을 캐시 메모리에 신규 저장하고, 1번 세그먼트 데이터를 출력버퍼 1에 저장한다(S1208). 이러한 S1205 내지 S1208 과정은 해시값을 이용한 중복 데이터 제거 과정 즉, 1차 인코딩 과정을 나타낸다.
이후, 현재 세그먼트가 마지막 M번째 세그먼트인지 확인하고(S1209), 그렇지 않은 경우 세그먼트 포인터를 1만큼 증가시켜 다음 번 세그먼트에 대해 S1203 내지 S1208 과정을 반복하여, 데이터 스트림 전체에 대한 1차 인코딩을 완료한다.
1차 인코딩이 완료된 경우, 즉 현재 세그먼트가 마지막 세그먼트이면, 각 세그먼트 별 구한 세그먼트 내 각 문자의 빈도수를 모두 누적한 결과를 기초로 데이터 스트림의 엔트로피 값을 계산하고(S1210), 문턱값과 비교한다(S1211).
엔트로피 값이 문턱값 이상이면, 데이터 스트림이 압축된 것으로 판단하여, 앞서 진행한 1차 인코딩만으로 데이터 인코딩을 종료한다. 하지만, 엔트로피 값이 문턱값 미만이면 미압축 상태로 판단하여, LZ77 기법과 허프만 코딩을 통해 데이터를 압축하는 도 12b에 도시된 2차 인코딩을 추가 진행한다.
출력버퍼 1에는 1차 인코딩된 데이터 스트림이 저장되어 있으며, 2차 인코딩을 위해 스캔 포인터(scan pointer)를 출력버퍼 1의 첫 문자를 가리키게 한다(S1212).
도 12b에서 S1213 내지 S1218 단계는 LZ77 적용 과정이며, S1219 내지 S1221 단계는 허프만 코딩 과정을 나타낸다.
먼저, LZ77 알고리즘을 적용한다. 즉, 스캔 포인터가 가리키는 문자부터 시작하여, 연속적인 문자열 후보들이 이미 스캔한 앞선 문자열 안에 존재하는지 여부를 판단한다(S1213).
만일, 현재 스캔 중인 문자열이 앞선 문자열 안에 존재하는 경우, 즉 현재 문자열이 중복 문자열인 경우, 현재의 중복 문자열을 (offset, length, symbol)과 같은 참조자로 대체하고 출력버퍼 2에 저장하고(S1214), 스캔 포인터를 중복 문자열의 크기(length)만큼 증가시킨다(S1215). 여기서, offset은 앞선 문자열의 시작 문자와의 거리값, length는 중복 문자열의 크기, symbol은 현재 스캔중인 중복 문자열 다음에 나타난 문자를 나타낸다.
하지만, 현재 스캔 중인 문자열이 앞선 문자열 안에 없는 경우 즉, 현재 문자열이 중복 문자열이 아닌 경우에는, 현재의 문자를 (0, 0, 현재 문자)로 대체하고 출력버퍼 2에 저장한다(S1216).
이후, 스캔 포인터를 1만큼 증가시켜(S1217), 문자열의 끝인지 확인한다(S1218). 끝이 아니면, S1213 단계로 넘어가고, 끝으로 확인되면 이하의 허프만 코딩을 진행한다.
LZ77 알고리즘의 적용 결과는 출력버퍼 2에 저장되어 있다. 허프만 코딩을 위해, 출력버퍼 2의 전체 문자열에 대해 문자 누적도를 계산하고(S1219), 누적 문자 빈도수를 이용한 허프만 코드 테이블을 생성한다(S1220). 그리고, 허프만 코드 테이블을 이용하여 출력버퍼 2에서 각 문자를 할당된 비트 형태로 변환하고(S1221), 인코딩을 종료한다.
도 13a 및 도 13b는 본 발명의 제2 실시예에 따른 트래픽 최적화 방법을 구체적으로 설명하는 도면이다.
먼저, 본 발명의 제2 실시예에 따른 트래픽 최적화 장치는 입력된 데이터(문자열)스트림에 대해, 압축유형을 0으로 초기화한다(S1301). 그리고, 패킷의 프로토콜 헤더를 분석하여 압축 유형을 확인하고 데이터 스트림이 압축 형태인지 확인한다(S1302,S1303).
만일, 압축 형태이면 분석된 해당 압축 유형 즉, 제1 압축 유형을 기초로 데이터 스트림 전체에 대해 압축을 해제하고(S1304), 압축 유형을 1로 세팅한다(S1305). 압축 유형을 1로 세팅한 것은 디코딩할 때 압축해제를 먼저해야 함을 알리기 위함이다.
그리고, 압축 해제된 데이터 스트림을 세그먼트 단위로 분할한다(S1306). 하지만, 데이터 스트림이 압축 형태가 아닌 경우에는, 데이터 스트림에 대한 세그먼트 분할을 즉시 수행한다(S1306).
세그먼트 분할 이후에는, 세그먼트 포인터가 복수의 세그먼트 중 1번 세그먼트를 가리키도록 한다(S1307).
다음은 각 세그먼트의 해시값을 기초로 데이터 스트림 전체를 1차 인코딩한다(S1308~S1313). 1차 인코딩 과정은 앞서 도 10a에 나타낸 S1205~S1209 단계와 동일하며 중복 설명은 생략한다.
S1313 단계 이후에는 스캔 포인터를 출력버퍼 1의 맨 첫 문자를 가리키게 한 다음(S1314), 도 13b에 나타낸 2차 인코딩 과정을 수행한다. 2차 인코딩 과정 역시 도 12b에 도시된 것과 동일하므로 중복 설명은 생략한다. 다만, 데이터 스트림이 압축 파일인 경우에는 2차 인코딩까지 완료된 데이터 스트림의 맨 앞에 압축 유형 정보 1(제1 압축 유형)을 추가하고 인코딩을 종료한다.
도 14a 및 도 14b는 본 발명의 제3 실시예에 따른 트래픽 최적화 방법을 구체적으로 설명하는 도면이다.
먼저, 본 발명의 제3 실시예에 따른 트래픽 최적화 장치는 입력된 데이터(문자열)스트림을 세그먼트 단위로 분할한다(S1401). 이후 세그먼트 포인터를 첫 세그먼트를 가리키게 한 다음(S1402), 해당 세그먼트에 대한 문자 누적 빈도수를 계산하고(S1403), 세그먼트의 해시값을 기초로 세그먼트를 1차 인코딩한다(S1404~S1408).
이후, 앞서 구한 문자 누적 빈도수를 기초로 해당 세그먼트의 엔트로피 값을 연산하여(S1409), 엔트로피 값이 문턱값 이상이면, 해당 세그먼트가 압축된 것으로 판별하여 해당 세그먼트를 출력버퍼에 저장하고 S1412 단계로 넘어간다.
다만, 엔트로피 값이 문턱값보다 작으면 세그먼트가 미압축된 것으로 판단한고 해당 세그먼트에 대해 도 14b에서와 같이 2차 인코딩 과정을 진행한다(A). 도 14b을 통한 2차 인코딩 과정 즉, LZ877 및 허프만 코딩을 통한 압축이 완료된 이후에는 다시 도 14a의 S1411 단계로 넘어와서 해당 세그먼트의 전단에 압축 사실을 알리는 압축 상태 정보(압축 유형 2)를 부가한다. 이는 해당 세그먼트가 압축된 형태임을 표기하여 추후 디코더가 알 수 있게 하며, 그렇지 않은 세그먼트와 구분 가능하게 한다.
마지막으로, 해당 세그먼트가 마지막 세그먼트인지 판단하여(S1412), 마지막 세그먼트가 아니면 세그먼트 포인터를 1만큼 증가시켜 다음 세그먼트에 대해 S1403 단계 이하의 동작을 반복하며, 해당 세그먼트가 마지막 세그먼트이면 데이터 인코딩을 종료한다.
도 15a 및 도 15b는 본 발명의 제4 실시예에 따른 트래픽 최적화 방법을 구체적으로 설명하는 도면이다.
먼저, 본 발명의 제4 실시예에 따른 트래픽 최적화 장치는 입력된 데이터(문자열)스트림에 대해, 압축유형을 0으로 초기화하고(S1501), 패킷의 프로토콜 헤더를 분석하여 압축 유형을 확인하고 데이터 스트림이 압축 형태인지 확인한다(S1502,S1503).
만일, 압축 상태이면 해당 데이터 스트림을 압축 해제한 후 압축 유형을 1로 세팅한다(S1504,S1505). 이후, 압축 해제된 데이터 스트림을 세그먼트 단위로 분할한다(S1506). 물론, 데이터 스트림이 압축 형태가 아닌 경우에는, 데이터 스트림에 대한 세그먼트 분할을 즉시 수행하면 된다(S1506).
다음, 세그먼트 포인터를 첫 세그먼트를 가리키게 한 다음(S1507), 해당 세그먼트의 해시값을 기초로 세그먼트를 1차 인코딩한다(S1508~S1512).
이후에는, 도 15b로 넘어가 1차 인코딩된 해당 세그먼트에 대해 2차 인코딩(LZ77 및 허프만 코딩)을 수행한다. 도 15b의 2차 인코딩을 완료한 후에는 다시 도 15a의 S1513 단계로 돌아와, 2차 인코딩한 해당 세그먼트의 앞에 압축 유형 2를 부가하여 2차 인코딩을 수행했음을 알린다.
이후, 현재 세크먼트가 마지막 세그먼트인지 확인한다(S1514). 만일, 마지막 세그먼트가 아니면, 세그먼트 포인터를 1만큼 증가시켜 다음 세그먼트에 대해 S1508 단계 이하의 동작을 반복하며, 해당 세그먼트가 마지막 세그먼트인 경우에는 전체 데이터 스트림의 맨 앞에 압축 유형 1을 부가하고 데이터 인코딩을 종료한다.
이상과 같은 본 발명에 따르면, 서버 또는 클라이언트로부터 전송받은 데이터 스트림을 경량화하고 압축하여 WAN으로 중계 전송함으로써, WAN 환경에서 서버와 클라이언트 간의 데이터 전송을 원활하게 하는 동시에 대역폭 한계를 극복할 수 있는 이점이 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 다른 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의하여 정해져야 할 것이다.
100: 트래픽 최적화 장치 110: 수신부
120: 전처리부 130: 제1 인코딩부
140: 제2 인코딩부 150: 제어부
160: 송신부

Claims (16)

  1. 수신한 데이터 스트림의 압축 여부에 따라 트래픽을 최적화하는 장치에 있어서,
    상기 수신한 데이터 스트림의 압축 여부를 판별하는 전처리부;
    상기 수신한 데이터 스트림을 설정 규칙에 따라 세그먼트 단위로 분할하고 분할된 세그먼트가 캐시 메모리에 기 존재하면 해당 세그먼트를 그에 대응된 해시값으로 대체하여 상기 데이터 스트림을 1차 인코딩하는 제1 인코딩부;
    상기 수신한 데이터 스트림 또는 상기 1차 인코딩된 데이터 스트림을 기 설정된 알고리즘을 통하여 압축하여 2차 인코딩하는 제2 인코딩부; 및
    상기 데이터 스트림의 압축 여부에 따라, 상기 1차 인코딩의 수행 여부, 상기 2차 인코딩의 수행 여부, 상기 1차 인코딩 전 상기 데이터 스트림의 압축 해제 수행 여부 중 적어도 하나를 결정하여 상기 제1 및 제2 인코딩부의 동작을 제어하는 제어부를 포함하는 트래픽 최적화 장치.
  2. 청구항 1에 있어서,
    상기 데이터 스트림을 수신하는 수신부; 및
    상기 1차 또는 2차 인코딩이 완료된 데이터 스트림을 네트워크망으로 전달하며, 상기 1차 및 2차 인코딩 중 어떠한 인코딩도 수행되지 않은 경우에는 상기 수신된 데이터 스트림 원본을 상기 네트워크망으로 전달하는 송신부를 더 포함하는 트래픽 최적화 장치.
  3. 청구항 1에 있어서,
    상기 전처리부는,
    상기 수신된 데이터 스트림 내 각 문자의 누적 빈도수를 기초로 상기 데이터 스트림의 엔트로피 값을 분석하여 상기 엔트로피 값이 기 설정된 문턱값 이상이면 상기 데이터 스트림을 압축 상태로 판별하며,
    상기 제어부는,
    상기 데이터 스트림이 압축 상태이면 상기 1차 인코딩만 진행시키고 미압축 상태이면 상기 2차 인코딩까지 진행시키는 트래픽 최적화 장치.
  4. 청구항 1에 있어서,
    상기 전처리부는,
    상기 수신된 데이터 스트림의 헤더를 분석하여 상기 압축 여부 및 압축 유형을 판별하며,
    상기 제어부는,
    상기 데이터 스트림이 압축 상태이면, 판별된 제1 압축 유형에 따라 상기 데이터 스트림을 압축 해제하고 상기 제1 인코딩부로 전달하여, 압축 해제 상태의 데이터 스트림에 대한 상기 1차 인코딩을 진행시키며,
    상기 1차 인코딩 후 상기 2차 인코딩이 완료된 데이터 스트림의 앞에 상기 제1 압축 유형의 정보를 삽입시키는 트래픽 최적화 장치.
  5. 청구항 1에 있어서,
    상기 전처리부는,
    상기 수신한 데이터 스트림에서 지정된 문자열이 발견되었을 경우 상기 데이터 스트림을 압축 상태로 판별하는 트래픽 최적화 장치.
  6. 청구항 1에 있어서,
    상기 캐시 메모리는,
    기 전송 이력이 있는 세그먼트들 각각에 대한 데이터 및 그에 대응된 해시값을 매칭 저장하며,
    상기 제1 인코딩부는,
    상기 분할된 세그먼트에 대해 연산한 해시값이 상기 캐시 메모리에 존재하는 동시에 데이터도 일치하면 해당 세그먼트의 데이터를 상기 해시값으로 대체하고, 상기 캐시 메모리에 미존재하거나 데이터가 불일치하면 해시값 대체 없이 해당 세그먼트의 데이터 및 그에 대응된 해시값을 상기 캐시 메모리에 신규 등록하는 트래픽 최적화 장치.
  7. 청구항 1에 있어서,
    상기 제2 인코딩부는,
    상기 1차 인코딩된 데이터 스트림을 대상으로 무손실 압축방법을 적용하여 2차 인코딩하는 트래픽 최적화 장치.
  8. 청구항 1에 있어서,
    상기 설정 규칙은,
    상기 데이터 스트림을 지정 길이의 세그먼트 단위로 분할하는 방식, 상기 데이터 스트림에 대해 지정 길이의 슬라이딩 윈도우를 소정 바이트씩 이동시켜 인접 세그먼트 간 중첩되는 형태로 분할하는 방식, 그리고 설정된 길이의 슬라이딩 윈도우를 이동시키되 라빈핑거프린트 다항식에 기반한 해시값을 기반으로 각 세그먼트를 비균등한 크기로 분할하는 방식 중 적어도 하나를 포함하는 트래픽 최적화 장치.
  9. 수신한 데이터 스트림의 압축 여부에 따라 트래픽을 최적화하는 장치를 이용한 트래픽 최적화 방법에 있어서,
    상기 수신한 데이터 스트림의 압축 여부를 판별하는 단계;
    상기 데이터 스트림의 압축 여부에 따라, 제1 인코딩부를 통한 1차 인코딩의 수행 여부, 제2 인코딩부를 통한 2차 인코딩의 수행 여부, 상기 1차 인코딩 전 상기 데이터 스트림의 압축 해제 수행 여부 중 적어도 하나를 결정하는 단계; 및
    상기 결정된 결과를 기초로 상기 제1 및 제2 인코딩부의 동작을 제어하거나, 상기 1차 인코딩 전 상기 데이터 스트림의 압축 해제를 수행하는 단계를 포함하며,
    상기 1차 인코딩 수행 시,
    상기 수신한 데이터 스트림을 설정 규칙에 따라 세그먼트 단위로 분할하고 분할된 세그먼트가 캐시 메모리에 기 존재하면 해당 세그먼트를 그에 대응된 해시값으로 대체하여 1차 인코딩하고,
    상기 2차 인코딩 수행 시,
    상기 수신한 데이터 스트림 또는 상기 1차 인코딩된 데이터 스트림을 기 설정된 알고리즘을 통하여 압축하여 2차 인코딩하는 트래픽 최적화 방법.
  10. 청구항 9에 있어서,
    상기 데이터 스트림을 수신하는 단계; 및
    상기 1차 또는 2차 인코딩이 완료된 데이터 스트림을 네트워크망으로 전달하며, 상기 1차 및 2차 인코딩 중 어떠한 인코딩도 수행되지 않은 경우에는 상기 수신된 데이터 스트림 원본을 상기 네트워크망으로 전달하는 단계를 더 포함하는 트래픽 최적화 방법.
  11. 청구항 9에 있어서,
    상기 압축 여부를 판별하는 단계는,
    상기 수신된 데이터 스트림 내 각 문자의 누적 빈도수를 기초로 상기 데이터 스트림의 엔트로피 값을 분석하여 상기 엔트로피 값이 기 설정된 문턱값 이상이면 상기 데이터 스트림을 압축 상태로 판별하며,
    상기 1차 인코딩 또는 2차 인코딩 수행 시에는,
    상기 데이터 스트림이 압축 상태이면 상기 1차 인코딩만 진행시키고 미압축 상태이면 상기 2차 인코딩까지 진행시키는 트래픽 최적화 방법.
  12. 청구항 9에 있어서,
    상기 압축 여부를 판별하는 단계는,
    상기 수신된 데이터 스트림의 헤더를 분석하여 상기 압축 여부 및 압축 유형을 판별하며,
    상기 트래픽 최적화 방법은,
    상기 데이터 스트림이 압축 상태이면, 판별된 제1 압축 유형에 따라 상기 데이터 스트림을 압축 해제한 상태에서 상기 1차 인코딩을 수행하는 단계; 및
    상기 1차 인코딩 후 상기 2차 인코딩이 완료된 데이터 스트림의 앞에 상기 제1 압축 유형의 정보를 삽입시키는 단계를 더 포함하는 트래픽 최적화 방법.
  13. 청구항 9에 있어서,
    상기 압축 여부를 판별하는 단계는,
    상기 수신한 데이터 스트림에서 지정된 문자열이 발견되었을 경우 상기 데이터 스트림을 압축 상태로 판별하는 트래픽 최적화 방법.
  14. 청구항 9에 있어서,
    상기 캐시 메모리는,
    기 전송 이력이 있는 세그먼트들 각각에 대한 데이터 및 그에 대응된 해시값을 매칭 저장하며,
    상기 1차 인코딩 수행 시, 상기 분할된 세그먼트에 대해 연산한 해시값이 상기 캐시 메모리에 존재하는 동시에 데이터도 일치하면 해당 세그먼트의 데이터를 상기 해시값으로 대체하고, 상기 캐시 메모리에 미존재하거나 데이터가 불일치하면 해시값 대체 없이 해당 세그먼트의 데이터 및 그에 대응된 해시값을 상기 캐시 메모리에 신규 등록하는 트래픽 최적화 방법.
  15. 청구항 9에 있어서,
    상기 2차 인코딩 수행 시, 상기 1차 인코딩된 데이터 스트림을 대상으로 무손실 압축방법을 적용하여 2차 인코딩하는 트래픽 최적화 방법.
  16. 청구항 9에 있어서,
    상기 설정 규칙은,
    상기 데이터 스트림을 지정 길이의 세그먼트 단위로 분할하는 방식, 상기 데이터 스트림에 대해 지정 길이의 슬라이딩 윈도우를 소정 바이트씩 이동시켜 인접 세그먼트 간 중첩되는 형태로 분할하는 방식, 그리고 설정된 길이의 슬라이딩 윈도우를 이동시키되 라빈핑거프린트 다항식에 기반한 해시값을 기반으로 각 세그먼트를 비균등한 크기로 분할하는 방식 중 적어도 하나를 포함하는 트래픽 최적화 방법.
KR1020190017605A 2018-10-19 2019-02-15 트래픽 최적화 장치 및 그 방법 KR102208364B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20180125352 2018-10-19
KR1020180125352 2018-10-19

Publications (2)

Publication Number Publication Date
KR20200044648A true KR20200044648A (ko) 2020-04-29
KR102208364B1 KR102208364B1 (ko) 2021-01-28

Family

ID=70466783

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190017605A KR102208364B1 (ko) 2018-10-19 2019-02-15 트래픽 최적화 장치 및 그 방법

Country Status (1)

Country Link
KR (1) KR102208364B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112217521A (zh) * 2020-10-13 2021-01-12 杭州天谷信息科技有限公司 一种基于gzip的大文件分布式压缩方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102607050B1 (ko) * 2021-09-28 2023-11-30 충북대학교 산학협력단 압축 패킷의 보안 처리 방법 및 이를 이용하는 보안 지원 장치

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170104509A (ko) * 2014-12-27 2017-09-15 아스카바, 인크. 데이터를 내용 연관 시브에 존재하는 기본 데이터 엘리먼트로부터 파생시키는 것에 의한 무손실 데이터 축소
KR20180067956A (ko) * 2016-12-13 2018-06-21 에스케이텔레콤 주식회사 데이터 압축 장치 및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170104509A (ko) * 2014-12-27 2017-09-15 아스카바, 인크. 데이터를 내용 연관 시브에 존재하는 기본 데이터 엘리먼트로부터 파생시키는 것에 의한 무손실 데이터 축소
KR20180067956A (ko) * 2016-12-13 2018-06-21 에스케이텔레콤 주식회사 데이터 압축 장치 및 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112217521A (zh) * 2020-10-13 2021-01-12 杭州天谷信息科技有限公司 一种基于gzip的大文件分布式压缩方法
CN112217521B (zh) * 2020-10-13 2024-01-09 杭州天谷信息科技有限公司 一种基于gzip的大文件分布式压缩方法

Also Published As

Publication number Publication date
KR102208364B1 (ko) 2021-01-28

Similar Documents

Publication Publication Date Title
US10567458B2 (en) System and method for long range and short range data compression
US10715618B2 (en) Compressibility estimation for lossless data compression
US6121903A (en) On-the-fly data re-compression
US9680500B2 (en) Staged data compression, including block level long range compression, for data streams in a communications system
CA2324608C (en) Adaptive packet compression apparatus and method
US7307552B2 (en) Method and apparatus for efficient hardware based deflate
KR100922674B1 (ko) 네트워크를 통한 객체 갱신 시스템
EP0813167B1 (en) Method and apparatus for font compression and decompression
US7966424B2 (en) Data compression
CN114244373B (zh) Lz系列压缩算法编解码速度优化方法
US10735025B2 (en) Use of data prefixes to increase compression ratios
US9203887B2 (en) Bitstream processing using coalesced buffers and delayed matching and enhanced memory writes
US20090271528A1 (en) Efficient chunking algorithm
JP3634711B2 (ja) 入力データストリームの圧縮方法とその装置
US20050262167A1 (en) Efficient algorithm and protocol for remote differential compression on a local device
US8872677B2 (en) Method and apparatus for compressing data-carrying signals
US6700513B2 (en) Method and system for compressing and decompressing multiple independent blocks
KR102208364B1 (ko) 트래픽 최적화 장치 및 그 방법
US10708194B2 (en) Dynamic history multistream long range compression
CN1426629A (zh) 使用多个编码器的优化无损压缩的方法和装置
US20040164883A1 (en) Data compressing apparatus and data decoding apparatus
EP2779467B1 (en) Staged data compression, including block-level long-range compression, for data streams in a communications system

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right