KR101570892B1 - 로컬 호스팅된 캐시 및 암호 해시 함수를 사용하여 네트워크 트래픽을 감소시키는 방법 및 시스템 - Google Patents

로컬 호스팅된 캐시 및 암호 해시 함수를 사용하여 네트워크 트래픽을 감소시키는 방법 및 시스템 Download PDF

Info

Publication number
KR101570892B1
KR101570892B1 KR1020107027968A KR20107027968A KR101570892B1 KR 101570892 B1 KR101570892 B1 KR 101570892B1 KR 1020107027968 A KR1020107027968 A KR 1020107027968A KR 20107027968 A KR20107027968 A KR 20107027968A KR 101570892 B1 KR101570892 B1 KR 101570892B1
Authority
KR
South Korea
Prior art keywords
data
client
hash
network
server
Prior art date
Application number
KR1020107027968A
Other languages
English (en)
Other versions
KR20110027688A (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 KR20110027688A publication Critical patent/KR20110027688A/ko
Application granted granted Critical
Publication of KR101570892B1 publication Critical patent/KR101570892B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/183Provision of network file services by network file servers, e.g. by using NFS, CIFS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computational Linguistics (AREA)
  • Multimedia (AREA)
  • Computing Systems (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Communication Control (AREA)

Abstract

기술된 방법 및 시스템은, 지연시간을 향상시키고 전체 WAN 트래픽을 감소시키기 위해, 지점 사무소에 있는 클라이언트가 WAN을 통해 응용 프로그램 서버 대신에 로컬 호스팅된 캐시로부터 데이터를 검색할 수 있게 한다. 데이터 센터에 있는 서버는, 호스팅된 캐시 시스템이 사용가능한지 여부에 기초하여, 해시들의 목록 또는 요청된 데이터를 제공하도록 구성되어 있을 수 있다. 클라이언트측에 있는 호스팅된 캐시는 해시들에 기초하여 클라이언트에 데이터를 제공할 수 있다. 해시들은 일반적으로 효율적인 방식으로 데이터를 인덱싱하는 데 사용될 수 있는 데이터의 지문을 제공하기 위해 발생될 수 있다.

Description

로컬 호스팅된 캐시 및 암호 해시 함수를 사용하여 네트워크 트래픽을 감소시키는 방법 및 시스템{METHOD AND SYSTEM OF USING A LOCAL HOSTED CACHE AND CRYPTOGRAPHIC HASH FUNCTIONS TO REDUCE NETWORK TRAFFIC}
본 발명은 일반적으로 컴퓨터 시스템에 관한 것으로서, 보다 상세하게는 네트워크를 통해 요청측 클라이언트에 데이터를 제공하는 응답 시간을 향상시키는 컴퓨팅 시스템에 관한 것이다.
비지니스 환경에 일반적으로 구현되는 데이터 네트워크 구성은 데이터 저장을 데이터 센터에 집중시키는 것 및 이 데이터를 (예를 들어, 데이터 센터에 있는 서버를 통해) WAN(wide area network)을 거쳐 복수의 클라이언트 컴퓨팅 장치에 제공하는 것을 포함한다. 복수의 클라이언트 컴퓨팅 장치는 WAN의 하나 이상의 지점들에 위치할 수 있다. 지점은 WAN에의 적어도 하나의 연결을 갖는 LAN(local area network)을 사용하여 서로 통신 연결되어 있는 복수의 컴퓨팅 장치를 나타낼 수 있다. LAN은 라우터 또는 당업계에 공지된 기타 브리징 장치를 통해 WAN에 연결될 수 있다. 대기업 환경에서, 데이터 센터는 지점(들)으로부터 원격지에 배치될 수 있다. 클라이언트 장치 상에서 실행되는 응용 프로그램은 동작하기 위해 (예를 들어, 데이터 센터에 있는 응용 프로그램 센터를 통해 서비스되는) 데이터 센터로부터의 데이터를 필요로 할 수 있다. WAN 상의 대량의 데이터 트래픽은 일반적으로 WAN을 통한 데이터 요청에 대해 대역폭을 감소시키고 지연시간을 증가시킬 수 있다. 이것은 지점 사무소에 있는 컴퓨팅 장치들에서의 응용 프로그램 응답 시간을 저하시킬 수 있다.
WAN 상의 데이터 트래픽을 감소시키고 대역폭 및 지연시간을 향상시키는 데 도움을 주기 위해, 일부 기업들은 WAN 최적화기 시스템을 구현할 수 있다. 일반적으로, WAN 최적화기 시스템은 WAN 상의 대역폭 소비를 감소시키도록 설계된 하드웨어이다. WAN 최적화기 시스템의 목표는 데이터 트래픽을 전달하는 WAN 대역폭의 양을 감소시키는 것이다. 일반적으로, WAN 최적화기는 데이터를 압축시켜 WAN으로 전송하는 것 및 WAN으로부터 데이터를 검색하는 것을 (특정의 알고리즘을 사용하여) 지능적으로 관리하는 동작을 할 수 있다. WAN 상의 데이터 트래픽을 압축함으로써, 데이터 트래픽이 감소될 수 있고 그에 대응하여 혼잡이 줄어들 수 있다. WAN 상에서 혼잡이 감소됨에 따라, 라우터 지연시간, 지터 및 패킷 손실도 역시 그에 대응하여 줄어들 수 있다.
기존의 WAN 최적화기 시스템이 WAN 대역폭에서의 일반적인 개선점들을 제공하는 반면, 기존의 WAN 최적화기 시스템은 암호화된 데이터를 처리하거나 종단간 보안을 제공하는 데 적합하지 않을 수 있다. 게다가, 기존의 WAN 최적화기 시스템은 데이터 센터 및 각각의 지점 사무소 둘다에서 인터페이스 하드웨어의 동작을 필요로 할 수 있으며, 그로써 유지 비용의 증가를 가져올 수 있다.
<발명의 요약>
본 방법 및 시스템은, 지연시간을 향상시키고 전체 WAN 트래픽을 감소시키기 위해, 지점 사무소에 있는 클라이언트가 WAN을 통해 응용 프로그램 서버 대신에 호스팅된 캐시(hosted cache)로부터 데이터를 검색할 수 있게 한다. 데이터 센터에 있는 서버는, 호스팅된 캐시 시스템이 사용가능한지 여부에 기초하여, 해시들의 목록 또는 요청된 데이터를 제공하도록 구성되어 있을 수 있다. 클라이언트측에 있는 호스팅된 캐시는 해시들에 기초하여 클라이언트에 데이터를 제공할 수 있다. 해시들은 일반적으로 데이터를 인덱싱하는 데 사용될 수 있는 데이터의 지문(fingerprint)을 제공할 수 있다.
도 1은 기술된 실시예들에 따라 동작할 수 있는 컴퓨팅 시스템의 블록도이다.
도 2는 일반 WAN 최적화기 시스템을 나타낸 도면이다.
도 3은 호스팅된 캐시를 사용하는 데이터 검색 프로세스의 시스템 실시예를 나타낸 도면이다.
도 4는 호스팅된 캐시에서 사용하기 위한 레코드 형식을 나타낸 도면이다.
도 5는 복수의 호스팅된 캐시를 구현하는 시스템 실시예를 나타낸 도면이다.
도 6은 분산 캐시(distributed cache)를 사용하는 피어-투-피어 네트워크 실시예를 나타낸 도면이다.
도 7은 호스팅된 캐시용 전용 피어를 사용하는 피어-투-피어 프로세스를 나타낸 도면이다.
도 8은 도 3의 시스템을 사용하는 서버측 프로세스 실시예를 나타낸 도면이다.
도 9는 도 3의 시스템을 사용하는 클라이언트측 프로세스 실시예를 나타낸 도면이다.
도 10은 만기 파라미터를 사용하는 레코드 형식을 나타낸 도면이다.
이하에 수많은 서로 다른 실시예들에 대한 상세한 설명이 기재되어 있지만, 설명의 법적 범위가 이 특허 문서의 끝에 기재된 청구항들의 표현들에 의해 한정된다는 것을 잘 알 것이다. 상세한 설명이 단지 예시적인 것으로 해석되어야 하며, 모든 가능한 실시예들을 기술하는 것이 불가능하지는 않더라도 실용적이지 않기 때문에, 모든 가능한 실시예를 기술하지는 않는다. 여전히 특허청구범위의 범위 내에 속하는 현재의 기술 또는 이 특허의 출원일 이후에 개발되는 기술을 사용하여 수많은 대안의 실시예들이 구현될 수 있다.
또한, 이 특허 문서에서 문장 "본 명세서에서 사용되는 바와 같이, ' '라는 용어가 ...을 의미하는 것으로 정의된다" 또는 이와 유사한 문장을 사용하여 용어가 명확하게 정의되지 않는 한, 그 용어의 보통의 또는 통상의 의미를 넘어 그 용어의 의미를 명시적으로 또는 암시적으로 제한하려는 의도가 없다는 것과 이러한 용어가 (특허청구범위의 표현 이외의) 이 특허 문서의 어느 곳에 기술된 내용에 기초하여 범위가 제한되는 것으로 해석되어서는 안 된다는 것을 잘 알 것이다. 이 특허 문서의 끝에 있는 특허청구범위에 언급된 임의의 용어가, 단지 읽는 사람을 혼동시키지 않게 하고 명확하게 하기 위해, 이 특허 문서에서 하나의 의미로 언급되고 있는 한, 이러한 청구항 용어가 암시적으로 또는 다른 방식으로 그 하나의 의미로 제한되는 것으로 보아서는 안 된다. 마지막으로, 청구항 요소가 어떤 구조를 언급함이 없이 표현 "수단" 및 기능을 언급하는 것으로 정의되지 않는 한, 임의의 청구항 요소의 범위가 미국 특허법 제112조 제6항의 적용에 기초하여 해석되어야 하는 것으로 보아서는 안 된다.
도 1은 본 명세서에서 기술하고 있는 사용자 인터페이스를 디스플레이하고 제공하는 동작을 할 수 있는 적합한 컴퓨팅 시스템 환경(100)의 일례를 도시하고 있다. 컴퓨팅 시스템 환경(100)이 적합한 컴퓨팅 환경의 일례에 불과하며, 청구항들의 방법 및 장치의 용도 또는 기능성의 범위에 관해 어떤 제한을 암시하고자 하는 것이 아님에 주목해야 한다. 컴퓨팅 환경(100)이 예시적인 운영 환경(100)에 도시된 컴포넌트들 중 임의의 하나 또는 그 컴포넌트들의 임의의 조합과 관련하여 어떤 의존성 또는 요구사항을 갖는 것으로 해석되어서도 안 된다.
도 1과 관련하여, 청구된 방법 및 장치의 블록들을 구현하는 예시적인 시스템은 컴퓨터(110) 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 컴포넌트들은 처리 장치 또는 프로세서(120), 시스템 메모리(130), 및 시스템 메모리를 비롯한 각종 시스템 컴포넌트들을 처리 장치(120)에 연결시키는 시스템 버스(121)를 포함하지만 이에 제한되는 것은 아니다.
컴퓨터(110)는 모뎀(172) 또는 기타 네트워크 인터페이스(170)를 거쳐 LAN(local area network)(171) 및/또는 WAN(wide area network)(173)을 통해 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 사용하여 네트워크화된 환경에서 동작할 수 있다.
컴퓨터(110)는 통상적으로 컴퓨터(110)에 의해 액세스 가능한 이용가능한 매체라면 그 어떤 것이든지 될 수 있고, 휘발성 및 비휘발성 매체, 이동식 및 비이동식 매체 둘다를 포함하는 각종 컴퓨터 판독가능 매체를 포함한다. 시스템 메모리(130)는 판독 전용 메모리(ROM)(131) 및 랜덤 액세스 메모리(RAM)(132)와 같은 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. ROM은 기본 입/출력 시스템(BIOS)(133)을 포함할 수 있다. RAM(132)은 통상적으로 운영 체제(134), 응용 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)를 포함하는 데이터 및/또는 프로그램 모듈을 포함한다. 컴퓨터(110)는 또한 하드 디스크 드라이브(141), 자기 디스크(152)에 기록을 하거나 그로부터 판독을 하는 자기 디스크 드라이브(151), 및 광 디스크(156)에 기록을 하거나 그로부터 판독을 하는 광 디스크 드라이브(155)와 같은, 다른 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 하드 디스크 드라이브(141, 151 및 155)는 인터페이스들(140, 150)을 통해 시스템 버스(121)와 인터페이스할 수 있다.
사용자는 키보드(162) 및 통상적으로 마우스, 트랙볼 또는 터치 패드라고 하는 포인팅 장치(161) 등의 입력 장치를 통해 컴퓨터(20)에 명령 및 정보를 입력할 수 있다. 다른 입력 장치(도시 생략)로는 마이크, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 및 기타 입력 장치는 종종 시스템 버스에 결합된 사용자 입력 인터페이스(160)를 통해 처리 장치(120)에 접속되지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus) 등의 다른 인터페이스 및 버스 구조에 의해 접속될 수도 있다. 모니터(191) 또는 다른 유형의 디스플레이 장치도 비디오 인터페이스(190) 등의 인터페이스를 통해 시스템 버스(121)에 접속될 수 있다. 모니터 외에, 컴퓨터는 또한 출력 주변장치 인터페이스(190)를 통해 연결될 수 있는 스피커(197) 및 프린터(196) 등의 기타 주변 출력 장치도 포함할 수 있다.
WAN 최적화기 시스템
도 2는 일반적으로 공지된 바와 같이 WAN 최적화기 시스템(200)을 구현하는 WAN을 나타낸 것이다. WAN 최적화기 시스템은 일반적으로 WAN 연결의 양측에 설치될 수 있다.
WAN 최적화기 시스템은 일반적으로 한 쌍의 컴포넌트 하드웨어 장치, 즉 일반적으로 WAN(203)의 한쪽에 있는 데이터 센터(202)에 구현되는 서버측 컴포넌트(201) 및 지점(206)에 있는 클라이언트측 컴포넌트(204)를 포함한다. 많은 경우들에, WAN 최적화기 컴포넌트 장치[서버(201) 또는 클라이언트 컴포넌트(204)]는 WAN 라우터(208) 후방에 배치될 수 있다(예를 들어, WAN 연결과 반대쪽 포트에서 라우터에 연결됨). 이 장치들(201 및 204)은, WAN(203)을 통한 응용 프로그램 성능이 향상되도록, WAN(203)으로 보내지는 응용 프로그램 트래픽을 조정하는 동작을 할 수 있다. 그 결과 WAN의 속도가 올라가고 응용 프로그램 응답 시간이 더 빨라질 수 있다. 이것은 지점 사무소에 있는 최종 사용자들에게 또한 모바일 작업자(예를 들어, 랩톱 또는 기타 모바일 컴퓨팅 장치를 통해 연결함)에게 중요한 응용 프로그램에 대한 더 높은 액세스 속도를 제공할 수 있다.
지점(206)은 일반적으로 데이터 센터(202)에 데이터를 요청하는 복수의 클라이언트 컴퓨터(211)를 포함할 수 있다. 일부 기업 환경에서, 지점들은 기능(예를 들어, 회계, 조달, 고객 서비스 등)을 분할하도록 구현될 수 있다. 일부 기업 환경에서, 지점(206)은 특정의 지리적 서비스 장소를 제공할 수 있다. 일반적으로, 클라이언트 컴퓨터(211)는 데이터 센터(202)에 있는 하나 이상의 응용 프로그램 서버(215)에 액세스하는 하나 이상의 기업 응용 프로그램을 실행할 수 있다.
응용 프로그램 서버(215)는 응용 프로그램 서버(215)에 의해 실행되어 WAN(203)을 통해 지점 사무소에 있는 클라이언트(211)에 제공되는 응용 프로그램들에게 데이터를 제공하기 위해 데이터베이스(217)(예를 들어, 데이터 센터에 또는 데이터 센터로부터 원격지에 위치함)에 연결될 수 있다. 물론, LAN(210)을 사용하는 지점 구성 대신에, 도 2는 WAN을 통해 서버(215)로부터 트래픽을 수신하기 위해 WAN에 연결된 임의의 클라이언트 장치, 예를 들어, 인터넷을 통해 연결되어 있는 원격 랩톱에 동일하게 적용될 수 있다.
WAN 최적화기 기능
일반적으로, 서버측 WAN 최적화기 장치(201)는 데이터 센터의 서버[예를 들어, 서버(215)]에 의해 발신된 데이터 패킷을 검사 및 인덱싱하고, 검사에 기초하여 데이터 패킷을 압축하며, 데이터 패킷을 WAN(203)을 통해 전송하는 동작을 할 수 있다. 클라이언트측 WAN 최적화기 컴포넌트(204)는 WAN(203)을 통해 서버측 컴포넌트(201)로부터 압축된 데이이터를 수신하고, 데이터 패킷을 압축 해제하며, 데이터를 지점(206)에 있는 요청측 클라이언트 장치(211)에 제공한다.
일부 WAN 최적화기 시스템에서, 서버측 컴포넌트 장치(201)는 데이터의 전송을 (예를 들어, 우선순위에 의해) 스케줄링하기 위해 데이터를 인덱싱할 수 있다. 클라이언트(204)에 있는 WAN 최적화기 컴포넌트 장치는 또한 서버 장치(201)에 의해 수행되는 인덱싱에 기초하여 데이터를 캐싱하는 동작을 할 수 있다. 지점(206)에 있는 클라이언트(211)로부터 클라이언트측 WAN 최적화기 장치(204)에 있는 동일한 데이터에 대한 제2 요청이 수신될 때, 클라이언트측 WAN 최적화기 장치(204)는, WAN(203)을 건너가는 대신에, 단순히 데이터를 그의 캐시로 반환할 수 있다.
WAN 최적화기에서의 문제점들
도 2에 도시된 바와 같이, 기존의 WAN 최적화기 시스템(200)은 일반적으로 데이터 센터(202)와 같은 서버측에 제1 컴포넌트 장치(201)를 설치할 필요가 있고, 지점 사무소(206)와 같은 클라이언트측에 제2 컴포넌트 장치(204)를 설치할 필요가 있으며, 여기서 데이터 센터(202)와 지점 사무소(206)는 WAN(203)을 통해 통신을 한다. 복수의 지점 사무소(206)를 갖는 환경에서, 다수의 클라이언트측 최적화기 장치(204)가 설치될 필요가 있을 수 있다.
다수의 컴포넌트 장치들의 동작은 설치 및 유지보수 비용을 증가시킨다. 상세하게는, WAN 최적화기가 데이터 트래픽을 고도로 상세하게(즉, 높은 입도로) 검사할 필요가 있기 때문에, 최적화기 시스템을 동작시키기 위해 대량의 처리 오버헤드가 야기될 수 있다. 게다가, 기존의 WAN 최적화기의 검사 프로세스가 데이터 부분들의 미세한 수준의 입도를 필요로 하기 때문에(즉, 최적화기가 일반적으로 데이터를 분류하거나 데이터를 다른 방식으로 처리할 수 있도록 데이터가 무엇인지를 이해할 필요가 있기 때문에), [예를 들어, 데이터가 IPSec(IP Security) 프로토콜 또는 SSL(Secured Sockets Layer) 프로토콜과 같은 종단간 암호화 프로토콜을 사용하여 네트워크를 통해 전송될 때] WAN 최적화기는 일반적으로 암호화된 데이터를 처리할 수 없다. 이 경우에, WAN 최적화기는 이 데이터 스트림을 처리할 수 없기 때문에 WAN 트래픽에 아무런 영향도 미치지 않을 수 있다(WAN 최적화기 서버측 컴포넌트가 암호화된 데이터를 이해하지 못할 수 있으며, 따라서 기존의 WAN 최적화기 시스템은 암호화된 데이터를 압축 또는 인덱싱할 수 없다). 게다가, WAN 최적화기가 데이터를 검사하고 이해할 필요가 있기 때문에, 기존의 WAN 최적화기를 사용하여 종단간 보안이 쉽게 제공될 수 없다. 또한, WAN이 공중 트래픽(예를 들어, 인터넷에의 연결)을 포함하는 대부분의 기업 환경에서 보안이 일반적으로 주된 관심사이기 때문에, WAN 최적화기가 보안 트래픽(예를 들어, 암호화된 트래픽)에 유용한 압축 및 지연시간 이점을 제공할 수 없다.
호스팅된 캐시를 사용한 최적화
도 3은 지점에 있는 클라이언트 장치에 의한 데이터 검색을 최적화하기 위해 종단간 보안을 제공하는 컴퓨팅 시스템(300)의 일 실시예를 나타낸 것이다. 물론, LAN을 사용하는 지점 구성 대신에, 도 3은 WAN을 통해 서버로부터 트래픽을 수신하기 위해 WAN에 연결된 임의의 클라이언트 장치(예를 들어, 랩톱 연결)에 동일하게 적용될 수 있다. 유의할 점은, '클라이언트'라는 용어가 서버에 데이터를 요청하는 물리적 컴퓨팅 장치 또는 컴퓨팅 장치 상에서 실행 중인 클라이언트 응용 프로그램을 의미하는 데 사용될 수 있다는 것이다. 다수의 응용 프로그램들이 동일한 컴퓨팅 장치에 의해 실행될 수 있다.
도 3의 시스템의 일반적인 동작에 대해 이제부터 기술할 것이다. 데이터 센터(302)는 응용 프로그램 서버(315)를 통해 지점(306)에 있는 클라이언트(311)에 데이터를 제공한다. 지점(306)은 복수의 클라이언트 컴퓨터(311)가 LAN(local area network)(310)을 통해 연결되어 있는 지리적 장소를 나타낼 수 있다. 도 2와 유사하게, 클라이언트 컴퓨터(311)는 데이터 센터(302)에 저장되어 관리되는 데이터를 요청하고 검색하기 위해 서버(315)와 통신할 수 있다. 클라이언트 컴퓨터(311)는 LAN(310)과 WAN(303) 사이의 연결을 통해 데이터를 검색할 수 있다. WAN에의 연결은 라우터(308)를 통할 수 있다. 이 실시예에서, 호스팅된 캐시(320)는 또한 지점(306)에 있는 LAN(310)에도 연결되어 있다. 호스팅된 캐시(320)는 특정의 컴퓨팅 장치 상에 구현될 수 있거나, 예를 들어, 클라이언트들이 피어-투-피어 방식으로 동작될 때(이하에서 더 기술함), 복수의 컴퓨팅 장치에 구현되는 분산 캐시를 나타낼 수 있다. 호스팅된 캐시(320)는 LAN을 통해 클라이언트에 통신 연결될 수 있다. 일부 실시예들에서, 호스팅된 캐시는 데이터를 요청하는 클라이언트, 예를 들어, 클라이언트들(311) 중 임의의 클라이언트와 동일한 장치 상에 존재할 수 있다.
도 3의 클라이언트들(311)은 데이터에 대한 요청을 서버(315)로 전송하도록 프로그램될 수 있다. 응용 프로그램 서버(315)는 데이터를 요청하는 클라이언트(311)가 호스팅된 캐시(320)를 사용할 수 있는지 여부를 판정하도록 프로그램될 수 있다. 응용 프로그램 서버(315)는 이어서 클라이언트(311)에 의해 요청된 데이터 또는 클라이언트(311)에 의해 요청된 데이터를 구체적으로 식별하는 식별자들의 목록을 제공할 수 있다. 응용 프로그램 서버(315)가 (예를 들어, 알고리즘을 사용하여) 식별자를 발생할 수 있거나, 다른 컴퓨팅 엔티티 또는 응용 프로그램(예를 들어, 데이터베이스 관리 시스템)이 식별자를 발생하고 이들을 응용 프로그램 서버가 검색하도록 어떤 장소(예를 들어, 데이터 센터에 있는 데이터베이스)에 저장할 수 있다. 식별자의 예가 해시 함수에 의해 생성되는 해시이며, 여기서 해시는 요청된 데이터의 지문으로서 역할할 수 있다(이하에서 더 기술함). 서버가 데이터베이스(317)에 연결되어 있는 경우, 해시는 데이터와 함께 데이터베이스(317)에 저장될 수 있거나, 데이터가 클라이언트로 전송하기 위해 검색될 때 서버(315)에 의해 해싱될 수 있다.
일부 클라이언트(311)는 호스팅된 캐시(320)를 사용할 수 있도록 되어 있지만, 일부 클라이언트(예를 들어, 레거시 컴퓨팅 장치 및 시스템)는 사용할 수 없도록 되어 있다. 클라이언트(311)가 호스팅된 캐시(320)를 사용할 수 있도록 되어 있을 때, 클라이언트(311)는 응용 프로그램 서버(315)로부터 요청된 데이터를 수신하거나 응용 프로그램 서버(315)로부터 요청된 데이터에 대응하는 일련의 해시를 수신하도록 프로그램될 수 있다. 클라이언트(311)는 응용 프로그램 서버(315) 대신에 호스팅된 캐시(320)로부터 캐싱된 데이터를 검색하는 데 해시를 사용하도록 구성되어 있을 수 있다. 호스팅된 캐시(320)는 레코드 키(327)로서 역할할 수 있는 대응하는 해시에 의해 인덱싱되어 있는 수신된 데이터(326)를 저장하도록 프로그램될 수 있다. 호스팅된 캐시(320)는 또한 해시 값 또는 키(327)에 대응하는 데이터(326)를 검색하여 반환하도록 프로그램될 수 있다. 호스팅된 캐시(320)는 테이블(325) 또는 기타 프로그램 개체와 같은 임의의 공지된 리스팅 방법을 사용하여 인덱싱된 데이터를 저장할 수 있다.
해시 함수 및 해시 인덱싱
해시 함수는 일반적으로 어떤 종류의 데이터를 수신하고 비교적 작은 값(예를 들어, 작은 정수)을 출력하는 알고리즘 또는 잘 정의된 절차이다. 해시 함수에 의해 반환된 값은 해시 값, 해시 코드, 해시 합, 또는 간단히 해시라고 불리울 수 있다. 게다가, 특정의 해시 함수에 따라, 해시는 데이터 부분(예를 들어, 세그먼트, 패킷, 블록 등)의 통계적으로 고유한 지문을 제공할 수 있다. 때때로, 이러한 해시 함수는 암호 해시 함수(cryptographic hash function)라고 불리울 수 있다. 해시 지문은 해시에 대응하는 데이터에 대해 데이터 무결성 분석을 수행하는 데 사용될 수 있다. 예를 들어, 데이터가 해시에 기초하여 반환될 때, 데이터는 해시를 반환하기 위해 동일한 해시 함수(알고 있는 경우)에 입력될 수 있다. 해시가 일치하는 경우, 수신된 데이터가 해시를 생성하는 데 사용된 동일한 데이터일 가능성이 통계적으로 아주 높을 수 있다.
해시 함수는 데이터베이스에서 항목을 찾는 것, 큰 파일에서 똑같거나 유사한 레코드를 검출하는 것, 데이터 시퀀스에서 유사한 스트레치(stretch)를 찾는 것 등의 테이블 탐색 또는 데이터 비교 작업의 속도를 높이는 데 사용될 수 있다. 상세하게는, 해시 함수가 작은 수 형식(small number format)으로 된 비교적 고유한(예를 들어, 어떤 데이터 범위에 대해 고유한) 인덱스를 제공하기 때문에, 해시 값을 읽고 해시 값에 기초하여 인덱싱하는 데 일반적으로 처리 시간이 덜 걸릴 수 있다.
호스팅된 캐시 동작
본 시스템의 일 실시예에서, 호스팅된 캐시(320)는 해시 값(327)으로 수신된 데이터(326)를 인덱싱하는 데 사용되는 해시 테이블(325)을 포함할 수 있다. 호스팅된 캐시(320)는, 예를 들어, 해시 값으로 데이터가 검색될 수 있는 데이터베이스 테이블 또는 기타 리스팅 함수 또는 레지스트리로서 유지될 수 있다. 해시 값에 기초하여 데이터가 있는지 호스팅된 캐시에 질의하는 데 공지된 임의의 검색 메커니즘(예를 들어, 쿼리 언어 호출)이 사용될 수 있다(예를 들어, SQL).
일 실시예에서, 해시 함수는 공개 및/또는 개인 키 쌍에 기초하는 암호화 알고리즘일 수 있다. 이러한 방식으로, 해시는 암호화 키와 연계되어 있는 데이터 부분의 CUI(cryptographically unique identifier)를 나타낼 수 있다. 공개-비밀 키 쌍 암호화의 구현은 일반적으로 공지되어 있다. 공개-비밀 키 쌍 암호화를 사용하는 일 실시예에서, 클라이언트는 암호화 키를 필요로 하지 않을 수 있다. 예를 들어, 클라이언트가 서버로부터 수신하는 해시 값을 클라이언트가 단지 호스팅된 캐시로 전달할 때, 클라이언트가 암호화 키를 전달할 필요가 없을 수 있다. 다른 예에서, 데이터 무결성이 검사되는 경우, 클라이언트는 서버로부터 반환된 데이터가 해시에 대응하는지를 검증하기 위해 암호화 알고리즘과 함께 암호화 키를 사용할 수 있다. 물론, 암호화 키를 필요로 하지 않는 해시 함수도 역시 데이터 무결성 기능을 검사하는 데 사용될 수 있다.
호스팅된 캐시 인덱싱 방식의 일 실시예는 도 4에 상세히 나타낸 바와 같은 특정의 레코드 형식을 사용할 수 있다. 도 4의 인덱싱 실시예에서, 인덱싱된 데이터 저장소(400)는 레코드 키(403)에 의해 인덱싱된 데이터 부분(402)을 갖는 레코드(401)를 포함할 수 있다. 레코드 키(403)는 레코드의 해시일 수 있다(여기서 해시는 본 명세서에 기술된 시스템에서 사용되는 공통 해시 함수에 대응함). 레코드 키 또는 해시(403)는 CUI(cryptographically unique identifier)일 수 있다. CUI는 2가지 주된 속성을 가질 수 있다. 첫째, CUI는 통계적으로 고유할 수 있다. 공통 데이터베이스 인덱싱 방식과 유사하게, 테이블에서 중복 엔티티 항목을 방지하기 위해 레코드 키도 고유할 필요가 있을 수 있다. 따라서, CUI는 특정의 상황 또는 응용에 고유할 가능성이 높도록 도출되는 것이다. 예를 들어, 상기한 데이터 시스템에서, 어떤 범위의 데이터 값에 대해 암호적으로 고유한 식별자가 동일한 데이터 부분으로부터 도출될 수 있는 가능성이 없다면, CUI는 통계적으로 고유할 수 있다. 둘째, CUI는 특정의 사용자 해시 함수에 대응할 수 있는데, 예를 들어, 공통 해시 함수가 서버, 클라이언트, 및 호스팅된 캐시에 의해 사용된다. 해시가 키 쌍 암호화 시스템인 상황에서, CUI는 해시를 발생하는 데 사용되는 특정의 암호화 알고리즘에 대한 특정의 공개 또는 개인 키에 대응할 수 있다. 예를 들어, CUI는 암호화 알고리즘을 사용하여 공개 키로부터 도출될 수 있다. 일부 실시예들에서, CUI는 이 알고리즘을 사용하여 그의 공개 키와 대응하거나 일치하는지 검증될 수 있다.
도 4의 레코드(401)는 해시 값으로 인덱싱된 데이터를 캐싱하는 데 사용될 수 있다. CUI 레코드 해시 키(403)는 각각의 레코드(401)를 찾아내고 해시 키(403)에 대응하는 데이터 부분(402)을 검색하는 데 사용될 수 있다. 일 실시예에서, 레코드(401)는 로컬 네트워크에 공개되어 있을 수 있는데, 즉 인덱싱된 정보가 (어쩌면 해시 키를 제외하고는) 암호화되어 있지 않을 수 있다. 그러나, 이하에 기술되는 다른 실시예들에서 데이터 부분(402) 또는 레코드(401)를 암호화할 수 있다.
다수의 호스팅된 캐시
도 5는 복수의 호스팅된 캐시(321-322)를 구현하는 시스템 실시예를 나타낸 것이다. 이 실시예에서, 클라이언트(311)는 다수의 최적화 파라미터들에 기초하여 호스팅된 캐시(321-322) 중 특정의 하나와 통신하거나 상호작용할 수 있다. 예를 들어, 기업은 지리적 근접성 또는 네트워크 근접성(예를 들어, 캐시와 클라이언트 간에 통신하는 데 필요한 최소 네트워크 라우팅 연결이 무엇인지)에 기초하여 클라이언트에 대한 호스팅된 캐시를 제공할 수 있다. 게다가, 서브넷 또는 기타 네트워크 분할에 기초하여 다른 호스팅된 캐시가 제공될 수 있다. 일 실시예에서, 다수의 호스팅된 캐시가 중복성 대책으로서 제공될 수 있다. 예를 들어, 호스팅된 캐시의 서브셋(예를 들어, 하나의 호스팅된 캐시)만이 활성으로 지정될 수 있고 클라이언트와의 연결 및 상호작용이 이용될 수 있다. 지정된 호스팅된 캐시(들)에서 고장이 발생하는 경우, 중복 호스팅된 캐시가 활성화될 수 있다. 중복 비활성 호스팅된 캐시(들)는 지정된 활성 호스팅된 캐시(들)과 동일한 정보로 채워지고 업데이트될 수 있다. 예를 들어, 복수의 호스팅된 캐시들에 걸쳐 데이터가 복제될 수 있다.
피어-투-피어 네트워크를 사용한 분산 해시 테이블
일 실시예에서, 클라이언트들은 피어-투-피어 네트워크의 일부일 수 있다. 도 6은 분산 호스팅된 캐시(600)를 구현하는 피어-투-피어 네트워크를 사용하는 실시예를 나타낸 것이다. 분산 호스팅된 캐시는 서버-독립적인 영구적 인덱싱 시스템을 나타낼 수 있다. 피어-투-피어 네트워크(605)를 형성하는 일군의 피어 엔티티(601-604)에 걸쳐 분산 캐시(600)가 유지될 수 있다. 분산 호스팅된 캐시(600) 내의 레코드들은, 예를 들어, 해시 함수를 사용하여 논리적으로 분할되거나 그룹화될 수 있다. 해시 함수는, 검색이 보다 효율적으로 될 수 있도록, 어떤 논리적 순서로 항목들을 그룹화하거나 군집화할 수 있다. 해시 함수는 조직화된 방식으로 레코드들을 한데 모을 수 있으며, 그로써 검색이 보다 효율적으로 될 수 있다. 분산 호스팅된 캐시는 2가지 주된 속성을 가질 수 있다: 1) 노드들(601-604)과 같은 복수의 노드들/클라이언트들/피어들에 걸친 레코드 콘텐츠의 분산, 및 2) 레코드를 게시 및 검색하는 방법을 제공하는 라우팅 메커니즘(도시 생략).
도 6의 실시예에서, 서버는 정보를 요청하는 클라이언트들(601-604) 중 임의의 클라이언트에 데이터의 해시를 제공하도록 상기한 바와 같이 구성될 수 있다. 클라이언트는 이어서 피어-투-피어 네트워크에서 해시에 대응하는 데이터를 포함하는 피어 노드를 찾기 위해 해시를 포함하는 브로드캐스트 요청 메시지를 피어-투-피어 네트워크(605)로 전송할 수 있다. 어떤 피어가 이전에 데이터를 요청하여 저장하고 있는 경우, 그 피어는 요청에 응답하여 데이터를 브로드캐스트 메시지를 전송한 피어에게 제공할 수 있다. 이러한 방식으로, 호스팅된 캐시가 피어-투-피어 네트워크의 복수의 서로 다른 피어들(피어 노드들)에 걸쳐 유지될 수 있다. 따라서, 지점에 있는 클라이언트는 응용 프로그램 서버에 의해 제공되는 해시에 기초하여 요청된 데이터를 반환할 수 있다. 이 실시예에서, 피어-투-피어 네트워크 내의 피어들이 데이터를 캐싱하기 위해 협동할 수 있다. 피어-투-피어 실시예가 이 섹션에서 기술되어 있지만, 유의할 점은 본 방법 및 시스템이 피어-투-피어 네트워크를 수반하지 않는 프로토콜을 비롯한 임의의 클라이언트-서버 프로토콜에서 사용될 수 있다는 것이다.
도 7은 분산 호스팅된 캐시를 사용하지 않는 다른 피어-투-피어 네트워크 실시예를 나타낸 것이다. 각각의 피어가 데이터의 사본 또는 데이터의 일부분을 저장하고 있는 다수의 피어들에 걸쳐 호스팅된 캐시를 구현하는 대신에, 단일 피어(701)가 (수퍼 피어라고 할 수 있는) 유일한 호스팅된 캐시로서 선택되거나 지정될 수 있다. 클라이언트/노드/피어(702-704)는 호스팅된 캐시 서비스 및 정보가 있는지 단일 피어(701)를 조사하도록 프로그램될 수 있다. 그러나, 클라이언트들(702-704) 각각이 캐시를 호스팅할 수 있고 중복 또는 장애 조치를 위해 그렇게 할 수 있다. 이 실시예에서, 단일 피어를 호스팅된 캐시로서 지정하거나 선택하는 데 몇개의 파라미터들이 고려될 수 있다. 예를 들어, 지정이 피어의 작업량, 피어의 처리 용량, 및/또는 피어의 저장 용량에 기초할 수 있다.
도 7의 단일 피어만이 호스팅된 캐시로서 지정되어 있지만, 피어-투-피어 네트워크(705)에서 클라이언트(702-704)로서 역할하는 각각의 피어가 그 자신의 호스팅된 캐시를 유지할 수 있다. 이 구성에서, 클라이언트 피어(예를 들어, 701-704)는 서버에 데이터를 요청하고, 서버로부터 일련의 해시를 수신하며, 그의 로컬 캐시가 데이터를 포함하고 있는지 여부를 먼저 확인할 수 있다. 피어의 로컬 캐시가 데이터를 포함하고 있지 않은 경우, 피어는 지정된 호스팅된 캐시 피어를 검색할 수 있다. 다른 실시예에서, 피어(701)의 고장의 경우에, 피어-투-피어 네트워크 내의 다른 피어들(예를 들어, 702-704)은 이어서 피어 네트워크의 로컬 캐시들에서 데이터를 검색(즉, 분산 호스팅된 캐시 모델)하기 시작하는 분산 호스팅된 캐시 모델로 전환할 수 있다.
호스팅된 캐시는 특정의 클라이언트 구성에 기초하여 다수의 방식으로 구현될 수 있다. 상기한 바와 같이, 호스팅된 캐시가 피어-투-피어 네트워크에 구현될 필요가 없다. 호스팅된 캐시가 운영 체제 컴포넌트로서 또는 일반적으로 컴퓨팅 장치 상에서 실행되는 프로세스로서 구현될 수 있다. 예를 들어, 호스팅된 캐시는 Microsoft Windows 운영 체제 컴포넌트로서 구현될 수 있다.
호스팅된 캐시 서비스는 해시 인덱싱에 기초하여 데이터를 반환하는 중점 기능을 제공한다. 호스팅된 캐시가 일반적으로 지점에서 신뢰할 수 있는 엔티티이기 때문에, 데이터의 암호화가 구현될 필요가 없을 수 있다. 그러나, 일부 실시예들에서, 캐시의 암호화는 특정의 구현에 적절한 경우 임의의 이용가능한 암호화 방식을 사용하여 구현될 수 있다. 예를 들어, 허가된 사용자들만이 호스팅된 캐시에 액세스할 수 있도록(예를 들어, 호스팅된 캐시로부터 읽고 그에 기록할 수 있도록) 호스팅된 캐시에 대해 인증 또는 권한부여 방식이 구현될 수 있다. 유의할 점은, 이러한 보안이 전적으로 지점에서, 예를 들어, LAN 상에서 구현될 수 있다는 것이다.
지연시간을 향상시키는 데이터 전송에 대한 종단간 보안을 제공하기 위해 상기한 시스템을 사용하여 다른 프로세스들이 구현될 수 있다.
도 8은 상기한 시스템을 사용하여 구현될 수 있는 한가지 이러한 프로세스 실시예를 나타낸 것이다. 상세하게는, 응용 프로그램 서버(315)와 같은 서버가 네트워크를 통해 클라이언트로부터 데이터 요청 메시지를 수신할 수 있다(801). 서버는 클라이언트가 호스팅된 캐시를 사용할 수 있도록 되어 있는지 여부를 판정할 수 있다(802). 일 실시예에서, 클라이언트 요청은 클라이언트가 호스팅된 캐시를 사용할 수 있도록 되어 있다는 헤더 또는 기타 표시를 포함할 수 있다. 다른 실시예에서, 서버는 저장소(예컨대, 레지스트리)에서 클라이언트를 탐색함으로써 클라이언트가 호스팅된 캐시를 사용할 수 있는지를 조사하도록 프로그램될 수 있다. 이 실시예에서, 클라이언트는 (예를 들어, 클라이언트로부터의 요청 메시지 내의 식별자를 통해) 클라이언트의 ID를 서버에 알려줄 수 있다. 서버가 클라이언트가 호스팅된 캐시를 사용할 수 없도록 되어 있는 것으로 판정하는 경우, 서버는 요청된 데이터를 제공함으로써 요청을 처리할 수 있다(803). 서버가 클라이언트가 호스팅된 캐시를 사용할 수 있도록 되어 있는 것으로 판정하는 경우, 서버는 데이터 자체 대신에 데이터의 해시를 제공할 수 있다(804). 다른 실시예에서, 서버는 호스팅된 캐시를 사용할 수 있도록 되어 있는 일련의 클라이언트들을 참조할 수 있다.
일부 실시예들에서, 서버는 서버가 클라이언트 요청에 대한 그의 응답을 전송하기 전에 또는 전송할 때 부가의 최적화 기법들을 이용할 수 있다. 예를 들어, 서버는 하나 이상의 파라미터들(예를 들어, 모니터링된/측정된 네트워크 대역폭, 스케줄 등)에 기초하여 복수의 응답들(해시들 및/또는 요청된 데이터)을 집계하여 이들을 전송할 수 있다. 서버는 또한 해시 함수에 기초하여 해시 집합을 정렬시킬 수 있으며, 이 때 해시 함수는 해시 집합에 구성(예를 들어, 차례 또는 순서)를 제공한다. 서버는 또한 해시 집합에 기초하여 데이터 전송에 우선순위를 부여할 수 있다.
일 실시예에서, 서버는 해시를 사용하여 그의 데이터를 인덱싱하도록 구성되어 있을 수 있다. 예를 들어, 서버는 서버가 액세스할 수 있는 데이터 파일에 대해 해시 함수를 사용하여 해시를 발생할 수 있다. 다른 실시예에서, 다른 장치 또는 프로그램이 해시 함수를 사용하여 데이터를 해싱하고 서버 또는 다른 요청측 장치(예를 들어, 클라이언트 또는 호스팅된 캐시)가 해시를 이용할 수 있게 할 수 있다. 해시는 해시를 발생하는 데 사용되는 데이터에 대한 인덱스로서 역할할 수 있다. 게다가, 해시 자체가 데이터 무결성을 검증하는 메커니즘을 제공한다(이하에서 더 기술함). 일 실시예에서, 서버는 요청될 때에만 요청된 데이터에 대해 해시 함수를 실행할 수 있다. 다른 실시예들에서, 해싱이 요청과 독립적으로 수행될 수 있다(예를 들어, 데이터에 대한 어떤 요청도 수신되기 전에 데이터가 해싱될 수 있다).
상태 저장 서버 실시예
상기한 실시예에서, 서버는 클라이언트와의 이전의 트랜잭션(예를 들어, 클라이언트 데이터 요청에 대한 이전의 응답)과 관련하여 상태 비저장일 수 있다. 환언하면, 서버는 임의의 특정의 데이터를 클라이언트에게 제공했다는 표시를 기억하거나 저장할 수 없다. 서버가 상태를 유지하는 실시예에서, 서버는 호스팅된 캐시가 클라이언트에 의해 요청되고 있는 데이터를 이미 저장하고 있을 수 있는지 여부를 판정하도록 구성되어 있을 수 있다. 예를 들어, 서버는 특정의 데이터가 이전에 요청되어 지점에 있는 클라이언트로 전송되었는지 여부를 나타내는 정보를 저장하도록 프로그램될 수 있으며, 이 때 클라이언트는 호스팅된 캐시를 사용할 수 있도록 되어 있는 것으로 알려져 있다. 동일한 데이터에 대한 차후의 요청을 수신할 시에, 서버는 차후의 요청을 하는 클라이언트에게 데이터의 해시(들)만을 제공하도록 프로그램될 수 있다. 호스팅된 캐시가 이전에 요청된 데이터를 캐싱하고 있는 것으로 가정하여 이 동작이 프로그램될 수 있다. 서버가 요청된 일련의 데이터를 이전에 전송한 것을 기억(또는 데이터가 이전에 요청되거나 제공되었다는 것을 나타내는 정보를 저장)하고 있지 않은 경우, 서버는 데이터를 요청측 클라이언트에 제공하도록 프로그램될 수 있다. 이러한 방식으로, 추가적인 지연시간 향상이 실현될 수 있으며, 이 경우 응용 프로그램 서버, 호스팅된 캐시 또는 클라이언트 중 임의의 것들 간의 통신 왕래가 감소되거나 방지될 수 있다. 이 실시예에서, 서버는 클라이언트가 호스팅된 캐시를 사용할 수 있는지 여부를 판정하는 일 없이 동작하도록 프로그램될 수 있다. 대안의 실시예에서, 서버는 여전히 클라이언트가 호스팅된 캐시를 사용할 수 있는지 여부를 확인할 수 있다. 이것은 호스팅된 캐시를 사용할 수 있도록 되어 있지 않을 수 있는 레거시 응용 프로그램 및 장치를 갖는 혼성 네트워크에서 사용될 수 있고 서버가 특정의 클라이언트에만 전송할 것을 필요로 한다(즉, 해시가 없음). 이 경우에, 서버가 요청된 데이터를 지점의 클라이언트로 전송했고 요청된 데이터가 로컬 캐시에 저장될 수 있을지라도, 레거시 장치는 여전히 동작하기 위해 실제 데이터가 반환될 것을 필요로 한다.
도 9는 지점에서 시스템을 사용하는 프로세스를 나타낸 것이다. 데이터를 요청하는 클라이언트는 서버로부터 응답 메시지(들)를 수신할 수 있다(901). 응답은 클라이언트에 의해 요청되는 데이터 또는 실제의 데이터 집합 없이 요청된 데이터에 대응하는 해시 집합을 포함할 수 있다. 블록(902)에서, 클라이언트는 응답이 데이터를 포함하거나 데이터 없이 해시 집합을 포함하는지를 판정하도록 프로그램될 수 있다. 서버로부터의 응답이 요청된 실제의 데이터를 포함하는 것으로 클라이언트가 판정하는 경우, 클라이언트는 데이터(903)를 소비하고 데이터의 사본을 호스팅된 캐시(904)에 저장할 수 있다. 호스팅된 캐시는 해시 값에 의해 인덱싱된 데이터를 저장할 수 있다. 해시 값은 서버에 의해 발생될 수 있고 실제 데이터와 함께 전달될 수 있다(예를 들어, 블록(901)). 대안으로서, 클라이언트는 데이터를 해싱하고 해시를 실제 데이터를 갖는 호스팅된 캐시에 제공할 수 있다. 또 다른 실시예에서, 호스팅된 캐시는 데이터를 해싱할 수 있다. 어느 엔티티가 해싱 함수를 수행하는지에 상관없이, 호스팅된 캐시에 의해 저장된 데이터를 인덱싱하기 위해 호스팅된 캐시에 의해 해시가 사용될 수 있다. 게다가, (2개 이상의 엔티티가 해시 함수를 수행할 때) 엔티티들 중 임의의 엔티티에 의해 사용되는 해시 함수는 모두 동일하다.
클라이언트가 실제의 데이터 집합 없이 해시 집합을 수신하는 경우, 클라이언트는 해시에 기초하여 데이터가 있는지 호스팅된 캐시에 질의할 수 있다(905). 호스팅된 캐시는 해시 집합에 대응하는 데이터를 갖는지 여부를 판정할 수 있다(906). 호스팅된 캐시가 데이터를 포함하는 경우, 클라이언트는 응용 프로그램 서버로부터 수신한 해시에 기초하여 호스팅된 캐시로부터 데이터를 검색할 수 있다(907). 선택적으로, 클라이언트는 또한 해시를 사용하여 호스팅된 캐시에 의해 수신된 데이터에 대해 데이터 무결성 검사를 수행할 수 있다(908). 당업자라면 알 것인 바와 같이, 해시는 해시를 발생하는 데 사용되는 데이터의 고유의 지문을 제공할 수 있다. 따라서, 호스팅된 캐시로부터 클라이언트에 의해 수신되는 데이터의 무결성 및 ID를 검증하는 한 방법은 동일한 해시가 그 데이터로부터 얻어지는지를 알아보기 위해 호스팅된 캐시로부터의 데이터에 대해 동일한 해시 함수(예를 들어, 해시를 제공한 서버와 호스팅된 캐시 사이에 공통인 것으로 알려진 해시 함수)를 실행하는 것이다. 그러한 경우, 데이터의 무결성 및 ID가 검증될 수 있다. 데이터가 검증되어 유효한 것으로 판정되는 경우(909), 클라이언트는 검색된 데이터를 소비할 수 있다(블록 910). 데이터가 검증되지 않고, 따라서 유효하지 않은 경우, 데이터 집합이 서버로부터 검색될 수 있고, 호스팅된 캐시가 서버로부터 검색된 새로운 데이터를 사용하여 업데이트될 수 있다(911).
호스팅된 캐시가 요청된 데이터를 포함하지 않는 경우, 호스팅된 캐시를 데이터 집합으로 채우고(911) 데이터 집합을 클라이언트에 제공(912)하기 위해 몇가지 방법들이 구현될 수 있다. 일 실시예에서, 호스팅된 캐시는 현재 저장하고 있지 않은 클라이언트에 의해 요청된 데이터를 검색하는 기능을 구현할 수 있다. 예를 들어, 호스팅된 캐시는 응용 프로그램 서버에 데이터를 요청하도록 프로그램될 수 있다. 이 경우에, 응용 프로그램 서버는 해시와 함께 또는 해시 없이 데이터를 호스팅된 캐시로 반환할 수 있고, 호스팅된 캐시는 이어서 요청된 데이터를 요청측 클라이언트에게 제공할 수 있다. 호스팅된 캐시는 이어서 서버로부터 수신된 해시와 함께 또는 데이터에 기초하여 발생하는 해시에 기초하여 새로운 데이터를 저장할 수 있다. 호스팅된 캐시 및 서버에 의해 사용되는 해시 함수가 동일한 경우, 이 실시예의 방법 및 시스템은 나중에 검색하기 위해 동일한 해시 인덱스를 클라이언트에게 제공하는 동작을 할 수 있다.
다른 실시예에서, 클라이언트는 호스팅된 캐시에 저장되지 않은 데이터를 응용 프로그램 서버로부터 검색하는 책임을 떠맡을 수 있다. 예를 들어, 호스팅된 캐시가 클라이언트가 전송한 해시에 기초하여 클라이언트에 의해 요청된 데이터를 현재 저장하고 있지 않다는 것을 나타내는 메시지를 클라이언트로 반환하는 경우, 클라이언트는 데이터에 대한 제2 요청을 응용 프로그램 서버로 전송할 수 있다. 이 상황에서, 클라이언트는 호스팅된 캐시가 요청된 데이터를 포함하고 있지 않다는 표시를 제2 요청과 함께 응용 프로그램 서버로 전송할 수 있다. 일 실시예에서, 이것은 클라이언트가 호스팅된 캐시를 사용할 수 없도록 되어 있다는 것을 나타냄으로써 수행될 수 있다. 이 상황에서, 응용 프로그램 서버는 단지 요청된 데이터를 클라이언트에게 제공할 수 있고, 클라이언트는 이어서 데이터를 호스팅된 캐시에 푸시할 수 있다. 데이터는 서버, 클라이언트 또는 호스팅된 캐시에 의해 해싱될 수 있다. 다른 실시예에서, 호스팅된 캐시가 현재 요청된 데이터를 가지고 있지 않을 수 있다는 표시가 별도의 표시로서 전송될 수 있다. 예를 들어, 클라이언트로부터 응용 프로그램 서버로의 제2 요청 내의 헤더는 클라이언트가 호스팅된 캐시를 사용할 수 있도록 되어 있다는 표시와 호스팅된 캐시가 요청된 정보를 포함하고 있지 않다는 표시 둘다를 포함할 수 있다. 이 예에서, 서버는 요청된 데이터는 물론 요청된 데이터의 해시도 반환할 수 있다.
일 실시예에서, 호스팅된 캐시가 초기 클라이언트 요청에 기초하여 처음부터 채워지기를 기다리는 대신에, 호스팅된 캐시가 높은 액세스율을 갖는 것으로 알려진 데이터 집합으로 미리 채워질 수 있다. 이것은 시스템 가동 중지 시간 동안에 스케줄링된 로딩을 통해 행해질 수 있다.
호스팅된 캐시의 데이터 관리는 시간 스탬프에 의해 호스팅된 캐시 내의 데이터를 주기적으로 비움으로써 수행될 수 있다. 예를 들어, 각각의 데이터 세그먼트 또는 블록이 다수의 변수들(생성 일자, 수신 일자 등)에 의해 시간 코딩될 수 있다. 시간 스탬프로부터의 현재의 시간 지속기간이 만료될 때, 데이터 블록이 삭제될 수 있다. 이것은 데이터를 비교적 새로운 것으로 유지하는 메커니즘을 제공한다. 예를 들어, 데이터가 삭제될 때, 그 데이터는 (요구될 때) 응용 프로그램 서버로부터 새로운 버전으로 보다 최근에 다운로드될 것이다. 해싱된 데이터에 관해 주목할 중요한 점은 하나의 파일이 복수의 해시로 인덱싱될 수 있다는 것이다. 게다가, 2개 이상의 파일이 동일한 해시를 포함하는 공통의 데이터 블록을 가질 수 있다. 데이터가 데이터 블록별로 비워질 수 있고, 따라서 데이터 파일이 응용 프로그램 서버로부터 새로 검색될 필요가 있을 수 있는 어떤 삭제된 부분을 포함할 수 있다.
도 10에 나타낸 실시예에서, 만기 파라미터(1001)가 각각의 레코드에 포함될 수 있다. 레코드는 게시자에 의해 명시적으로 삭제될 때까지 또는 만기 파라미터에 기초하여 만료될 때까지 호스팅된 캐시에 존속될 수 있다. 이 만기 파라미터(1001)는 데이터가 유효인 지속기간에 대응할 수 있다. 만기 파라미터(1001)는 레코드에 대한 유효성의 만기를 나타낼 수 있다. 따라서, 만기 파라미터(1001)는 도 9에 나타낸 바와 같은 검색 프로세스에서 사용될 수 있다. 예를 들어, 블록(909)에서, 만기가 만료되었는지 여부를 판정하기 위해 만기 파라미터(1001)에 의해 표시된 만기가 검사될 수 있다. 만기 파라미터(1001)가 만료되는 경우, 레코드가 유효하지 않을 수 있고, 블록(911)은 서버로부터 새로운 데이터를 검색하는 데 사용될 수 있다. 그렇지 않은 경우, 레코드가 유효할 수 있고 클라이언트에 의해 소비될 수 있다(910).
호스팅된 캐시 검색 프로세스
호스팅된 캐시가 검색 프로토콜을 사용하여 구현될 수 있다. 검색 프로토콜은 네트워크 상의 호스팅된 캐시의 존재를 검출하는 기능을 클라이언트에게 제공하는 임의의 적당한 프로토콜일 수 있다. 검색 메커니즘은 명시적이거나 자동적일 수 있다. 예를 들어, 명시적인 검색 프로토콜에서, 클라이언트는 임의의 등록된 호스팅된 캐시(들)에 관한 정보를 제공하는 레지스터로 안내될 수 있다. 대안으로서, 명시적인 검색은 각각의 컴퓨팅 장치를 특정의 호스팅된 캐시로 안내하는 그룹 컴퓨팅 정책 또는 스크립트를 사용하여 구현될 수 있다. 자동 검색 실시예에서, 연결측 클라이언트는 클라이언트가 액세스할 수 있는 네트워크 세그먼트 상의 호스팅된 캐시의 존재에 관한 정보를 푸시받을 수 있다. 유의할 점은, 클라이언트가 서로 근접한 지리적 위치에 있는 복수의 클라이언트 기계들을 포함하는 지점에 연결될 수 있을지라도, 클라이언트 기계들이 도메인 또는 서브넷으로 세그먼트화될 수 있으며 이 때 액세스가 도메인 또는 서브넷 내로 또는 이들 간으로 제한된다는 것이다.
일 실시예에서, 호스팅된 캐시를 사용할 수 있도록 되어 있는 클라이언트는 호스팅된 캐시가 클라이언트의 네트워크 상에서 이용가능한지를 판정하기 위해 미리 정해진 검색 프로토콜을 사용할 수 있다. 환언하면, 클라이언트가 네트워크에 연결될 때 특정의 검색 프로토콜을 사용하여 통신하도록 프로그램될 수 있다. 상기한 바와 같이, 클라이언트는 클라이언트 응용 프로그램 또는 클라이언트 장치를 나타낼 수 있다. 대안의 실시예에서, 클라이언트가 네트워크에 연결될 때 그 자신의 이용가능성 또는 존재를 게시할 책임을 질 수 있다. 검색 프로토콜은 또한 클라이언트의 존재를 게시하는 메커니즘을 제공할 수 있으며, 이 때 클라이언트 및 호스팅된 캐시가 통신 도메인에 기초하여 서로를 인식한다. 예를 들어, 클라이언트는 모바일(예를 들어, 랩톱)이도록 구성될 수 있고, 이 때 클라이언트는 (예를 들어, 도메인 또는 서브넷에 기초하여) 제1 네트워크 또는 제2 네트워크에 연결될 수 있고, 각각의 네트워크가 별도의 호스팅된 캐시를 가질 수 있다. 어느 경우든지, 검색 프로토콜이 클라이언트와 함께 동작하여 클라이언트가 직접 연결되어 있는 네트워크에 호스팅된 캐시를 제공하도록 구성될 수 있다.
최적화 모니터링
기술된 시스템에 추가적인 최적화를 제공하기 위해 호스팅된 캐시의 시스템 및 대응하는 서버를 통한 데이터 트래픽을 모니터링하는 것이 수행될 수 있다. 예를 들어, 모니터링될 수 있는 일부 데이터 전송 파라미터들은 클라이언트로부터의 데이터 요청의 지연시간을 포함한다. 다른 변수는 클라이언트가 호스팅된 캐시에 액세스하는 빈도수 및 WAN 연결을 통한 액세스의 빈도수일 수 있다. 데이터 트래픽 및 분석의 모니터링 및 기록은 네트워크 관리자가 기술된 방법 및 시스템의 동작 파라미터를 조정할 수 있게 할 수 있다. 예를 들어, 모니터링 데이터에 기초하여, 관리자는 사용량이 적은 동안에 어느 데이터가 미리 채워질 수 있는지를 발견할 수 있다.
기존의 WAN 최적화기와의 통합
일 실시예에서, 클라이언트측 WAN 최적화기 장치는 호스팅된 캐시로서 동작하도록 구성될 수 있다. 이 실시예에서, 서버측 WAN 장치가 필요하지 않다. 일 실시예에서, 호스팅된 캐시에 부가하여 WAN 최적화기 장치가 사용될 수 있다. WAN 최적화기가 일반적으로 암호화된 파일을 처리할 수 없기 때문에, 데이터가 전송을 위해 암호화되어 있지 않을 때마다 클라이언트와 서버 간의 일반 데이터 또는 파일 액세스를 위해 WAN 최적화기가 사용될 수 있다. 암호화된 데이터에 대해, 호스팅된 캐시 구현이 사용될 수 있다. 이 구성이 레거시 시스템 또는 장치, 예를 들어, 호스팅된 캐시를 인식하거나 그와 통신하도록 구성되어 있지 않는 장치를 갖는 네트워크에서 행해질 수 있다. 다른 실시예에서, 클라이언트는, 호스팅된 캐시를 사용할 수 없을 때, 기존의 WAN 최적화기 시스템(예를 들어, 서버측 및 클라이언트측 WAN 최적화기 컴포넌트 장치 둘다를 포함하는 시스템)을 사용할 수 있는 반면, 호스팅된 캐시를 사용할 수 있는 클라이언트들은 그렇게 할 수 있다. 서버는 데이터 요청 메시지에 내장된 정보를 통해 데이터에 대한 클라이언트 요청에 어떻게(예를 들어, 기술한 바와 가이 헤드를 통해) 응답할지를 결정할 수 있다.
청구된 방법 및 시스템을 사용하는 이점은 WAN의 서버측 및 클라이언트측 둘다에 2개의 컴포넌트 상자를 포함하고 유지할 필요가 감소될 수 있다는 것이다. 이것은 유지보수 비용을 감소시킨다. 게다가, 암호화된 데이터가 이제 WAN을 통해 전송될 수 있으면서 기존의 WAN 최적화기 시스템에 의해 제공되는 지연시간 개선을 달성 및/또는 초과한다. 기술된 방법 및 시스템의 다른 이점은 인덱싱 및 압축을 제공하기 위해 데이터의 상세한 검사를 수행하는 데 필요한 처리 용량의 감소이다. 환언하면, WAN 최적화기는 더 큰 처리 용량을 필요로 하는 더 미세한 입도로 데이터를 인덱싱한다. 그 대신에, 청구된 방법 및 시스템은 데이터에 기초하여 해시를 발생하며, 이 때 해싱 함수는 일반적으로 효율적이고 빠르며 많은 처리 오버헤드를 필요로 하지 않는다.
기술된 방법 및 시스템의 다른 이점은 일반적으로 WAN을 통해 클라이언트와 서버 사이에 중간 장치를 필요로 하지 않는다는 것이다. 그 대신에, 기술된 방법 및 시스템은 보안된 지점 환경의 영역 내에 포함된 호스팅된 캐시를 사용한다. 캐시가 요청된 데이터로 채워져 있지 않은 상황에 관해 문제가 발생한다. 그러면, 클라이언트와 응용 프로그램 서버 간에 협상된 임의의 방식으로 데이터가 전송될 수 있다. 환언하면, 데이터가 암호화되거나 비암호화될 수 있다. 중간자(man in the middle)를 없애는 것은 WAN을 통해 클라이언트와 서버 사이에 있는 임의의 작업 부분을 제거하는 것을 말한다.
다른 이점은 프로토콜 독립성이다. 기존의 WAN 최적화기가 동작하기 위해 다수의 서로 다른 프로토콜을 사용하도록 프로그램될 필요가 있을 수 있다. 본 출원의 방법 및 시스템은 단지 서버와 클라이언트 사이에서 사용되는 기존의 프로토콜을 통해 해시를 전송한다.

Claims (23)

  1. 제1 네트워크의 대역폭 이용을 감소시키는 방법으로서,
    상기 제1 네트워크를 통해 클라이언트로부터의 제1 요청 메시지를 서버로 전송하는 단계 - 상기 제1 요청 메시지는 (i) 상기 클라이언트가 호스팅된 캐시를 이용할 수 있다는 표시와 (ii) 복수의 데이터 부분들에 대응하는 복수의 해시들에 대한 요청을 포함하고, 상기 복수의 해시들 중 각각의 해시는 (i) 상기 복수의 데이터 부분들 중 일부에 대응하는 인덱스로서 사용할 수 있고, (ii) 상기 대응 데이터 부분에 대한 데이터 무결성을 검사하는 데 사용할 수 있음 -,
    상기 제1 네트워크를 통해 상기 클라이언트에 의해 상기 복수의 데이터 부분들 없이 상기 복수의 해시들을 수신하는 단계 - 상기 복수의 해시들은 상기 복수의 데이터 부분들 중 제1 데이터 부분에 대응하는 제1 해시와 상기 복수의 데이터 부분들 중 제2 데이터 부분에 대응하는 제2 해시를 포함함 -,
    상기 복수의 해시들에 기초하여 적어도 상기 제1 데이터 부분 및 상기 제2 데이터 부분이 상기 호스팅된 캐시에 있는지를 제2 네트워크를 통해 상기 클라이언트에 의해 질의하는 단계 - 상기 제2 네트워크는 상기 제1 네트워크에 독립적인 상기 호스팅된 캐시와 상기 클라이언트를 통신가능하게 접속하도록 구성됨 -,
    상기 호스팅된 캐시로부터 상기 클라이언트에 의해 상기 제1 데이터 부분 및 상기 제2 데이터 부분을 수신하는 단계,
    상기 수신된 제1 데이터 부분 및 상기 수신된 제2 데이터 부분 각각에 대해 해시 함수를 실행시키는 단계,
    상기 해시 함수의 결과들을 상기 제1 해시 및 상기 제2 해시와 비교하여 상기 제1 데이터 부분 및 상기 제2 데이터 부분이 유효한지 여부를 판정하는 단계,
    상기 제1 데이터 부분 및 상기 제2 데이터 부분 양자가 유효한 경우, 상기 클라이언트에 의해 상기 제1 데이터 부분 및 상기 제2 데이터 부분을 소비하는 단계, 및
    상기 제1 데이터 부분이 유효하지 않은 경우, 상기 제1 네트워크를 통해 상기 서버로부터 새로운 제1 데이터 부분을 상기 클라이언트에 의해 검색하고, 상기 새로운 제1 데이터 부분을 상기 제2 네트워크를 통해 상기 호스팅된 캐시로 제공하는 단계
    를 포함하는 제1 네트워크의 대역폭 이용 감소 방법.
  2. 제1항에 있어서,
    상기 제1 네트워크는 SSL(secured sockets layer) 프로토콜 또는 IPSec(IP Security) 프로토콜 중 하나를 실행하는 종단간 보안 네트워크(end-to-end secured network)인
    제1 네트워크의 대역폭 이용 감소 방법.
  3. 삭제
  4. 삭제
  5. 제1항에 있어서,
    상기 호스팅된 캐시가 상기 제1 데이터 부분을 포함하고 있지 않다는 표시를 수신하는 것에 응답하여, 상기 클라이언트에 의해 상기 서버로 제2 요청을 전송하는 단계 - 상기 제2 요청은 상기 제1 데이터 부분에 대한 요청을 포함함 -
    를 더 포함하는 제1 네트워크의 대역폭 이용 감소 방법.
  6. 삭제
  7. 제1항에 있어서,
    상기 호스팅된 캐시는 상기 제2 네트워크를 통해 연결된 복수의 클라이언트들에 걸쳐 저장된 분산 해시 테이블인
    제1 네트워크의 대역폭 이용 감소 방법.
  8. 제1항에 있어서,
    암호화 알고리즘에 기초하여 상기 복수의 해시들을 생성하는 단계 - 상기 복수의 해시들은 상기 호스팅된 캐시에 의해 캐싱된 상기 복수의 데이터 부분들 각각에 대해 통계적으로 고유하도록 생성됨 -
    를 더 포함하는 제1 네트워크의 대역폭 이용 감소 방법.
  9. 삭제
  10. 네트워크의 대역폭 이용을 감소시키는 방법으로서,
    상기 네트워크를 통해 클라이언트로부터의 제1 요청 메시지를 서버에서 수신하는 단계 - 상기 제1 요청 메시지는 (i) 상기 클라이언트가 제1 해시 함수를 이용하여 산출된 해시들에 기초하여 데이터를 인덱싱하도록 구성된 호스팅된 캐시를 사용할 수 있다는 표시와 (ii) 상기 서버에 저장된 데이터 집합의 표시를 포함함 -,
    상기 서버에 저장된 상기 데이터 집합에 대해 상기 제1 해시 함수를 사용하여 해시 집합을 생성하는 단계 - 상기 해시 집합은 제1 파일에 대응하는 제1 복수의 해시들을 포함하고, 상기 제1 파일은 제1 복수의 데이터 부분들을 포함하며, 상기 제1 복수의 해시들 각각은 상기 제1 복수의 데이터 부분들 중 대응하는 데이터 부분을 갖고, 상기 해시 집합의 각각의 해시는 상기 데이터 집합의 각각의 데이터 부분의 통계적으로 고유한 지문(fingerprint)을 나타냄 -,
    상기 클라이언트가 상기 호스팅된 캐시를 사용할 수 있다는 것을 상기 서버에서 판정하는 단계,
    상기 데이터 집합 없이 상기 해시 집합을 상기 네트워크를 통해 상기 클라이언트로 상기 서버에 의해 전송하는 단계,
    상기 네트워크를 통해 상기 클라이언트로부터 제2 요청 메시지를 상기 서버에 의해 수신하는 단계 - 상기 제2 요청 메시지는 (i) 상기 클라이언트가 상기 호스팅된 캐시를 사용할 수 없다는 표시와 (ii) 상기 서버에 저장된 상기 데이터 집합의 상기 표시를 포함함 -, 및
    상기 클라이언트로 상기 데이터 집합을 제공하는 단계
    를 포함하는 네트워크의 대역폭 이용 감소 방법.
  11. 제10항에 있어서,
    상기 데이터 집합에 대한 상기 해시 집합을 산출하는 데 사용되는 제1 해시 함수에 대응하는 제2 해시 함수를 상기 클라이언트에게 제공하는 단계
    를 더 포함하는 네트워크의 대역폭 이용 감소 방법.
  12. 제10항에 있어서,
    상기 서버에서 제2 요청 메시지를 수신하는 단계 - 상기 제2 요청 메시지는 상기 서버에 저장된 상기 제1 복수의 데이터 부분들 중 적어도 일부에 대한 상기 호스팅된 캐시로부터의 요청을 포함함 -
    를 더 포함하는 네트워크의 대역폭 이용 감소 방법.
  13. 삭제
  14. 제10항에 있어서,
    상기 클라이언트가 상기 호스팅된 캐시를 사용할 수 있다는 것을 판정하는 단계는, 상기 클라이언트가 상기 호스팅된 캐시를 사용할 수 있다는 상기 제1 요청 메시지 내의 상기 표시에 기초하여 상기 클라이언트가 상기 호스팅된 캐시를 사용할 수 있다는 것을 판정하는 단계를 포함하는
    네트워크의 대역폭 이용 감소 방법.
  15. WAN(wide area network)에서의 지연시간을 감소시키는 컴퓨팅 시스템으로서,
    해시 값에 의해 인덱싱되는 데이터를 저장하도록 구성된 호스팅된 캐시, 및
    클라이언트와 서버를 통신가능하게 연결시키는 제1 네트워크 - 상기 서버는 (i) 데이터 집합과 (ii) 상기 클라이언트로부터의 제1 요청에 응답하여 상기 클라이언트로 상기 데이터 집합에 대응하는 해시 집합 중 적어도 하나를 전송하도록 구성되고, 상기 해시 집합은 상기 데이터 집합의 제1 데이터 부분에 대응하는 제1 해시와 상기 데이터 집합의 제2 데이터 부분에 대응하는 제2 해시를 포함하며, 상기 클라이언트로부터의 상기 제1 요청은 상기 클라이언트가 상기 호스팅된 캐시를 이용하도록 구성된다는 것을 나타내고, 상기 클라이언트는 (i) 상기 서버로부터 상기 해시 집합을 수신하고 (ii) 상기 수신된 해시 집합에 기초하여 상기 데이터 집합이 상기 호스팅된 캐시에 있는지를 제2 네트워크를 통해 질의하도록 구성되며, 상기 제2 네트워크는 상기 제1 네트워크에 독립적이면서 상기 클라이언트를 상기 호스팅된 캐시에 통신가능하게 연결시키고, 상기 제2 네트워크는 상기 클라이언트 및 상기 호스팅된 캐시 사이에서 상기 제1 네트워크를 사용하지 않고 통신을 제공하도록 구성됨 -
    를 포함하되,
    상기 클라이언트는
    상기 호스팅된 캐시로부터 상기 제1 데이터 부분과 상기 제2 데이터 부분을 포함하는 상기 데이터 집합을 수신하고,
    상기 수신된 제1 데이터 부분과 상기 수신된 제2 데이터 부분 각각에 대해 해시 함수를 실행하고,
    상기 해시 함수의 결과들을 상기 제1 해시 및 상기 제2 해시와 비교하여 상기 제1 데이터 부분과 상기 제2 데이터 부분 각각이 유효한지 여부를 판정하고,
    상기 제1 데이터 부분 및 상기 제2 데이터 부분 양자가 유효한 경우, 상기 데이터 집합을 소비하고,
    상기 제1 데이터 부분이 유효하지 않은 경우, 상기 제1 네트워크를 통해 상기 서버로부터 새로운 제1 데이터 부분을 검색하고 상기 새로운 제1 데이터 부분을 상기 제2 네트워크를 통해 상기 호스팅된 캐시로 제공하도록 더 구성되는
    컴퓨팅 시스템.
  16. 제15항에 있어서,
    상기 클라이언트는 상기 데이터 집합을 수신하고 상기 호스팅된 캐시로 상기 데이터 집합의 사본을 해시 값들에 의해 저장하도록 더 구성되는
    컴퓨팅 시스템.
  17. 제15항에 있어서,
    상기 호스팅된 캐시는 상기 호스팅된 캐시가 요청된 데이터 집합을 포함하고 있지 않은 경우 상기 서버로 데이터 집합에 대한 요청을 전송하도록 더 구성되는
    컴퓨팅 시스템
  18. 제15항에 있어서,
    상기 클라이언트는 상기 호스팅된 캐시가 요청된 데이터를 포함하고 있지 않은 경우 상기 서버로 상기 데이터 집합에 대한 제2 요청을 전송하도록 더 구성되는
    컴퓨팅 시스템.
  19. 삭제
  20. 제15항에 있어서,
    상기 서버는
    상기 클라이언트로 전송되었던 데이터 집합을 추적하고,
    상기 클라이언트로부터의 상기 데이터 집합에 대한 추가적인 요청에 응답하여, 상기 데이터 집합을 전송하는 대신에 상기 데이터 집합에 대응하는 상기 해시 집합을 상기 클라이언트로 전송하도록 더 구성되는
    컴퓨팅 시스템.
  21. 제1항에 있어서,
    상기 제1 네트워크를 통해 상기 서버로부터 새로운 제1 데이터 부분을 상기 클라이언트에 의해 검색하는 것은 상기 클라이언트가 상기 호스팅된 캐시를 사용할 수 없다는 것을 상기 서버에 알려주는 것을 포함하는
    제1 네트워크의 대역폭 이용 감소 방법.
  22. 제15항에 있어서,
    상기 클라이언트는 상기 제1 데이터 부분이 유효하지 않은 경우 상기 클라이언트가 상기 호스팅된 캐시를 사용할 수 없다는 것을 상기 서버에 알려주도록 더 구성되는
    컴퓨팅 시스템.
  23. 제15항에 있어서,
    상기 제1 네트워크는 IPSec(IP Security) 프로토콜을 실행하는 종단간 보안 네트워크(end-to-end secured network)인
    컴퓨팅 시스템.
KR1020107027968A 2008-06-19 2009-04-21 로컬 호스팅된 캐시 및 암호 해시 함수를 사용하여 네트워크 트래픽을 감소시키는 방법 및 시스템 KR101570892B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/141,950 2008-06-19
US12/141,950 US9747340B2 (en) 2008-06-19 2008-06-19 Method and system of using a local hosted cache and cryptographic hash functions to reduce network traffic

Publications (2)

Publication Number Publication Date
KR20110027688A KR20110027688A (ko) 2011-03-16
KR101570892B1 true KR101570892B1 (ko) 2015-11-20

Family

ID=41432266

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107027968A KR101570892B1 (ko) 2008-06-19 2009-04-21 로컬 호스팅된 캐시 및 암호 해시 함수를 사용하여 네트워크 트래픽을 감소시키는 방법 및 시스템

Country Status (8)

Country Link
US (2) US9747340B2 (ko)
EP (1) EP2308216A4 (ko)
JP (1) JP5480893B2 (ko)
KR (1) KR101570892B1 (ko)
CN (2) CN102067557B (ko)
BR (1) BRPI0912888B1 (ko)
RU (1) RU2475988C2 (ko)
WO (1) WO2009154869A2 (ko)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100036804A1 (en) * 2008-08-05 2010-02-11 International Business Machines Corporation Maintained and Reusable I/O Value Caches
US20100036805A1 (en) * 2008-08-05 2010-02-11 International Business Machines Corporation System Maintainable and Reusable I/O Value Caches
US20120102134A1 (en) 2010-10-21 2012-04-26 International Business Machines Corporation Cache sharing among branch proxy servers via a master proxy server at a data center
US9078128B2 (en) * 2011-06-03 2015-07-07 Apple Inc. System and method for secure identity service
US9098378B2 (en) 2012-01-31 2015-08-04 International Business Machines Corporation Computing reusable image components to minimize network bandwidth usage
US20130201519A1 (en) * 2012-02-03 2013-08-08 Apple Inc. Bridging Non-Network Interfaces and Network Interfaces
US8805797B2 (en) * 2012-02-22 2014-08-12 International Business Machines Corporation Optimizing wide area network (WAN) traffic by providing home site deduplication information to a cache site
US10198462B2 (en) * 2012-04-05 2019-02-05 Microsoft Technology Licensing, Llc Cache management
US8880638B2 (en) * 2012-06-18 2014-11-04 International Business Machines Corporation Distributed image cache for servicing virtual resource requests in the cloud
US9300748B2 (en) 2013-01-16 2016-03-29 Cisco Technology, Inc. Method for optimizing WAN traffic with efficient indexing scheme
US9509736B2 (en) 2013-01-16 2016-11-29 Cisco Technology, Inc. Method for optimizing WAN traffic
US9306997B2 (en) * 2013-01-16 2016-04-05 Cisco Technology, Inc. Method for optimizing WAN traffic with deduplicated storage
CN105103486B (zh) * 2013-01-19 2018-06-12 特龙德尔公司 数控制造系统中的安全流化方法及安全数控制造系统
CN103116627B (zh) * 2013-01-31 2016-05-18 汉柏科技有限公司 一种高并发soa技术访问数据库的方法和系统
US10474652B2 (en) * 2013-03-14 2019-11-12 Inpixon Optimizing wide data-type storage and analysis of data in a column store database
US9497132B2 (en) 2013-04-23 2016-11-15 Telefonaktiebolaget Lm Ericsson (Publ) Method and system of implementing conversation-sensitive collection for a link aggregation group
US9553798B2 (en) 2013-04-23 2017-01-24 Telefonaktiebolaget L M Ericsson (Publ) Method and system of updating conversation allocation in link aggregation
US9497074B2 (en) 2013-04-23 2016-11-15 Telefonaktiebolaget L M Ericsson (Publ) Packet data unit (PDU) structure for supporting distributed relay control protocol (DRCP)
CN103281398B (zh) * 2013-06-14 2017-04-12 清华大学 数据中心网络泛在缓存方法
CN106462707B (zh) * 2014-04-28 2019-06-14 英特尔公司 安全引导计算设备
US9813290B2 (en) 2014-08-29 2017-11-07 Telefonaktiebolaget Lm Ericsson (Publ) Method and system for supporting distributed relay control protocol (DRCP) operations upon misconfiguration
US10277616B2 (en) 2014-09-25 2019-04-30 Vigilant Ip Holdings Llc Secure digital traffic analysis
US10021181B2 (en) * 2014-12-22 2018-07-10 Dropbox, Inc. System and method for discovering a LAN synchronization candidate for a synchronized content management system
US10891264B2 (en) * 2015-04-30 2021-01-12 Vmware, Inc. Distributed, scalable key-value store
CN105068762B (zh) * 2015-08-06 2018-05-18 北京奇艺世纪科技有限公司 一种数据读取方法及装置
US10382552B2 (en) * 2016-12-12 2019-08-13 Verizon Patent And Licensing Inc. User device ad-hoc distributed caching of content
US10708382B2 (en) * 2018-11-08 2020-07-07 Citrix Systems, Inc. Systems and methods for latency masking via prefix caching
FR3092923B1 (fr) * 2019-02-19 2021-05-21 Sangle Ferriere Bruno Méthode cryptographique de vérification des données
FR3093574B1 (fr) * 2019-03-04 2021-10-01 Amadeus Traitement de données distribuées
CN116719582B (zh) * 2023-08-07 2023-11-03 北京市大数据中心 一种高并发系统的前端限流方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7092997B1 (en) 2001-08-06 2006-08-15 Digital River, Inc. Template identification with differential caching
US20080082648A1 (en) 2006-09-29 2008-04-03 Microsoft Corporation Secure peer-to-peer cache sharing

Family Cites Families (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5452447A (en) 1992-12-21 1995-09-19 Sun Microsystems, Inc. Method and apparatus for a caching file server
US5572221A (en) * 1994-10-26 1996-11-05 Telefonaktiebolaget Lm Ericsson Method and apparatus for detecting and predicting motion of mobile terminals
EP0826181A4 (en) * 1995-04-11 2005-02-09 Kinetech Inc IDENTIFYING DATA IN A DATA PROCESSING SYSTEM
US5860153A (en) * 1995-11-22 1999-01-12 Sun Microsystems, Inc. Memory efficient directory coherency maintenance
WO1999003047A1 (en) 1997-07-11 1999-01-21 Earle Machardy Content hosting environment system and cache mechanism
US6014667A (en) * 1997-10-01 2000-01-11 Novell, Inc. System and method for caching identification and location information in a computer network
US6185598B1 (en) * 1998-02-10 2001-02-06 Digital Island, Inc. Optimized network resource location
US6377991B1 (en) * 1998-05-29 2002-04-23 Microsoft Corporation Method, computer program product, and system for migrating URLs within a dynamically changing distributed cache of URLs
US6311216B1 (en) * 1998-05-29 2001-10-30 Microsoft Corporation Method, computer program product, and system for client-side deterministic routing and URL lookup into a distributed cache of URLS
US6661904B1 (en) 1998-07-15 2003-12-09 Personalogo Method and system for automated electronic conveyance of hidden data
US6757705B1 (en) 1998-08-14 2004-06-29 Microsoft Corporation Method and system for client-side caching
GB2342195A (en) 1998-09-30 2000-04-05 Xerox Corp Secure token-based document server
EP0993163A1 (en) 1998-10-05 2000-04-12 Backweb Technologies Ltd. Distributed client-based data caching system and method
US6405219B2 (en) 1999-06-22 2002-06-11 F5 Networks, Inc. Method and system for automatically updating the version of a set of files stored on content servers
EP1154356A1 (en) * 2000-05-09 2001-11-14 Alcatel Caching of files during loading from a distributed file system
US6766313B1 (en) 2000-07-12 2004-07-20 Microsoft Corporation System and method for caching and retrieving information
US7484002B2 (en) 2000-08-18 2009-01-27 Akamai Technologies, Inc. Content delivery and global traffic management network system
US6959320B2 (en) 2000-11-06 2005-10-25 Endeavors Technology, Inc. Client-side performance optimization system for streamed applications
US7062567B2 (en) 2000-11-06 2006-06-13 Endeavors Technology, Inc. Intelligent network streaming and execution system for conventionally coded applications
US7188145B2 (en) 2001-01-12 2007-03-06 Epicrealm Licensing Llc Method and system for dynamic distributed data caching
AU2002232464A1 (en) * 2001-02-09 2002-08-28 Microsoft Corporation Distribution of binary executables and content from peer locations/machines
US8156223B2 (en) * 2001-03-20 2012-04-10 Microsoft Corporation Distribution of binary executables and content from peer locations/machines
US6912591B2 (en) * 2001-05-02 2005-06-28 Science Application International Corporation System and method for patch enabled data transmissions
TW579463B (en) 2001-06-30 2004-03-11 Ibm System and method for a caching mechanism for a central synchronization server
JP2003153229A (ja) 2001-11-15 2003-05-23 Mitsubishi Electric Corp データ通信装置及びデータ通信方法
US7392348B2 (en) * 2003-08-06 2008-06-24 International Business Machines Corporation Method for validating remotely cached dynamic content web pages
US6781963B2 (en) 2002-02-14 2004-08-24 Qualcomm Inc Method and an apparatus for terminating a user from a group call in a group communication network
JP4366040B2 (ja) 2002-03-07 2009-11-18 インターナショナル・ビジネス・マシーンズ・コーポレーション ネットワークサービスシステム、サーバ及びプログラム
JP2003271442A (ja) 2002-03-14 2003-09-26 Ntt Comware Corp キャッシュサーバおよびそのキャッシュアウト方法並びにプログラム
US7461262B1 (en) 2002-03-19 2008-12-02 Cisco Technology, Inc. Methods and apparatus for providing security in a caching device
CA2379082A1 (en) * 2002-03-27 2003-09-27 Ibm Canada Limited-Ibm Canada Limitee Secure cache of web session information using web browser cookies
US6996584B2 (en) 2002-05-14 2006-02-07 Pervasive Software, Inc. System and method of maintaining functional client side data cache coherence
US7171439B2 (en) 2002-06-14 2007-01-30 Integrated Device Technology, Inc. Use of hashed content addressable memory (CAM) to accelerate content-aware searches
US7836295B2 (en) 2002-07-29 2010-11-16 International Business Machines Corporation Method and apparatus for improving the resilience of content distribution networks to distributed denial of service attacks
JP2004126639A (ja) * 2002-09-30 2004-04-22 Toshiba Corp データ管理システム、データ管理方法及びプログラム
JP2004185263A (ja) 2002-12-03 2004-07-02 Oki Electric Ind Co Ltd 分散協調型コンテンツ配信システム
GB0303192D0 (en) * 2003-02-12 2003-03-19 Saviso Group Ltd Methods and apparatus for traffic management in peer-to-peer networks
US7441011B2 (en) 2003-10-23 2008-10-21 Microsoft Corporation Truth on client persistent caching
US20080281950A1 (en) 2004-03-08 2008-11-13 First Oversi Ltd Method and Device for Peer to Peer File Sharing
US7788713B2 (en) * 2004-06-23 2010-08-31 Intel Corporation Method, apparatus and system for virtualized peer-to-peer proxy services
US7437364B1 (en) * 2004-06-30 2008-10-14 Google Inc. System and method of accessing a document efficiently through multi-tier web caching
CN101147379B (zh) * 2005-01-24 2011-05-25 茨特里克斯系统公司 在网络中对动态产生的对象执行缓存的系统和方法
US7640363B2 (en) 2005-02-16 2009-12-29 Microsoft Corporation Applications for remote differential compression
JP4515319B2 (ja) 2005-04-27 2010-07-28 株式会社日立製作所 コンピュータシステム
JP2007066161A (ja) 2005-09-01 2007-03-15 Hitachi Ltd キャッシュシステム
CN101009516B (zh) * 2006-01-26 2011-05-04 华为技术有限公司 一种进行数据同步的方法、系统及装置
US7634479B2 (en) * 2006-12-29 2009-12-15 Trend Micro Incorporated Pre-populating local URL rating cache
US7757002B2 (en) * 2007-03-23 2010-07-13 Sophos Plc Method and systems for analyzing network content in a pre-fetching web proxy
US8234327B2 (en) 2007-03-30 2012-07-31 Netapp, Inc. System and method for bandwidth optimization in a network storage environment
US20090307302A1 (en) * 2008-06-06 2009-12-10 Snap-On Incorporated System and Method for Providing Data from a Server to a Client

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7092997B1 (en) 2001-08-06 2006-08-15 Digital River, Inc. Template identification with differential caching
US20080082648A1 (en) 2006-09-29 2008-04-03 Microsoft Corporation Secure peer-to-peer cache sharing

Also Published As

Publication number Publication date
JP2011525278A (ja) 2011-09-15
RU2010151959A (ru) 2012-06-27
US20090319473A1 (en) 2009-12-24
WO2009154869A3 (en) 2010-03-18
EP2308216A2 (en) 2011-04-13
US9747340B2 (en) 2017-08-29
EP2308216A4 (en) 2016-03-30
BRPI0912888B1 (pt) 2021-03-09
US20180004748A1 (en) 2018-01-04
CN104615666A (zh) 2015-05-13
KR20110027688A (ko) 2011-03-16
WO2009154869A2 (en) 2009-12-23
RU2475988C2 (ru) 2013-02-20
CN104615666B (zh) 2018-06-05
CN102067557A (zh) 2011-05-18
JP5480893B2 (ja) 2014-04-23
CN102067557B (zh) 2015-02-11
BRPI0912888A2 (pt) 2015-10-20

Similar Documents

Publication Publication Date Title
KR101570892B1 (ko) 로컬 호스팅된 캐시 및 암호 해시 함수를 사용하여 네트워크 트래픽을 감소시키는 방법 및 시스템
US20220100883A1 (en) Passive distribution of encryption keys for distributed data stores
US7174360B2 (en) Method for forming virtual network storage
US8019882B2 (en) Content identification for peer-to-peer content retrieval
US9355103B2 (en) System and method for bandwidth optimization in a network storage environment
US10223506B2 (en) Self-destructing files in an object storage system
US10061852B1 (en) Transparent proxy tunnel caching for database access
US8824686B1 (en) Cluster key synchronization
KR101150146B1 (ko) 클라이언트가 서버와 상호작용하는 컴퓨터 구현 방법, 서버가 클라이언트와 상호작용하는 컴퓨터 구현 방법, 오브젝트를 공유하는 분산 파일 시스템 및 컴퓨터 판독가능 기록 매체
JP5526137B2 (ja) 選択的データ転送ストレージ
JP5140765B2 (ja) データ転送記憶における測定
JP2004246632A (ja) データ分配サーバ、プログラム及びネットワークシステム
US8761727B2 (en) Method and apparatus for pre-caching in a telecommunication system
US10708379B1 (en) Dynamic proxy for databases
US9390101B1 (en) Social deduplication using trust networks
US8611542B1 (en) Peer to peer key synchronization
US20150106468A1 (en) Storage system and data access method
US6973536B1 (en) Self-adaptive hybrid cache
Dhaya et al. Cloud computing security protocol analysis with parity-based distributed file system
JP4017065B2 (ja) キャッシュ制御方法およびキャッシュシステム
US20110282923A1 (en) File management system, method, and recording medium of program
WO2020153053A1 (ja) データベース管理サービス提供システム
JP5071990B2 (ja) データベース装置、データベースシステム、キャッシュメンテナンス方法およびそのプログラム
Akintoye et al. A Survey on Storage Techniques in Cloud Computing

Legal Events

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

Payment date: 20181018

Year of fee payment: 4