KR101322947B1 - Distributed caching of files in a network - Google Patents

Distributed caching of files in a network Download PDF

Info

Publication number
KR101322947B1
KR101322947B1 KR1020087003133A KR20087003133A KR101322947B1 KR 101322947 B1 KR101322947 B1 KR 101322947B1 KR 1020087003133 A KR1020087003133 A KR 1020087003133A KR 20087003133 A KR20087003133 A KR 20087003133A KR 101322947 B1 KR101322947 B1 KR 101322947B1
Authority
KR
South Korea
Prior art keywords
file
peer
computer
potential
computer system
Prior art date
Application number
KR1020087003133A
Other languages
Korean (ko)
Other versions
KR20080047353A (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 마이크로소프트 코포레이션
Publication of KR20080047353A publication Critical patent/KR20080047353A/en
Application granted granted Critical
Publication of KR101322947B1 publication Critical patent/KR101322947B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • H04L67/1068Discovery involving direct consultation or announcement among potential requesting and potential source peers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • H04L67/1072Discovery involving ranked list compilation of candidate peers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99939Privileged access

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

파일의 분산 캐싱 및 다운로드에 관한 것이다. 네트워크로 연결된 하나 이상의 컴퓨터들 중에서 잠재적 피어 서버들의 목록을 포함하는 피어 목록을 구축하는 것을 포함하는 방법이 설명된다. 피어 목록은 미리 결정된 수 이하의 잠재적 피어 서버들만을 포함한다. 피어 목록의 잠재적 피어 서버들은 파일 또는 파일의 부분에 대해 쿼리된다. 다운로드 가능한 파일 또는 파일의 부분을 피어 서버가 가지고 있음을 나타내는 메시지가 피어 목록의 피어 서버로부터 수신된다. 컴퓨터 시스템은 그 피어 서버로부터 파일 또는 파일의 부분을 다운로드한다.Distributed caching and download of files. A method is described that includes constructing a peer list that includes a list of potential peer servers among one or more computers connected in a network. The peer list contains only potential peer servers up to a predetermined number. Potential peer servers in the peer list are queried for a file or part of a file. A message is received from the peer server in the peer list indicating that the peer server has a downloadable file or part of the file. The computer system downloads the file or part of the file from its peer server.

캐싱, 파일 공유, 네트워크, 피어 서버 Caching, file sharing, network, peer server

Description

네트워크에서의 파일의 분산 캐싱{DISTRIBUTED CACHING OF FILES IN A NETWORK}Distributed caching of files on a network {DISTRIBUTED CACHING OF FILES IN A NETWORK}

네트워크 컴퓨팅은 컴퓨터가 서버들로부터 소프트웨어 및 파일 컨텐트를 요청하고 수신하여 컴퓨터에 설치 및/또는 저장할 수 있도록 한다. 파일 컨텐트는, 예를 들어, 텍스트 파일, 비디오 파일, 데이터 파일, 이미지 파일 등을 포함할 수 있다. 소프트웨어는 시스템 소프트웨어 업데이트, 애플리케이션 소프트웨어 업데이트, 및 데이터 파일 업데이트를 포함하는 여러 목적을 위해 요청되고 다운로드될 수 있다. 예를 들어, 컴퓨터 시스템에 대한 공격을 막거나 제거하도록 운영 체제를 업데이트하기 위해 보안 패치가 다운로드될 수 있다. 또한, 컴퓨터에 새로운 애플리케이션을 설치하기 위해 소프트웨어가 다운로드될 수 있다. 한 예시적인 시스템에서, 소프트웨어는 후선(background)에서 다운로드되어, 컴퓨터 및 컴퓨터 사용자가 다른 태스크를 수행하는 동안 소프트웨어가 다운로드될 수 있다. 이 기능을 가진 한 예시적인 서비스가 BITS(Background Intelligent Service)이다.Network computing allows a computer to request and receive software and file content from servers to be installed and / or stored on the computer. The file content may include, for example, a text file, a video file, a data file, an image file, and the like. The software may be requested and downloaded for various purposes, including system software updates, application software updates, and data file updates. For example, a security patch can be downloaded to update the operating system to prevent or remove an attack on a computer system. In addition, software can be downloaded to install new applications on the computer. In one example system, the software may be downloaded in the background so that the software may be downloaded while the computer and computer user perform other tasks. One example service with this feature is Background Intelligent Service (BITS).

종종, 소프트웨어가 게시되어 서버로부터의 다운로드가 가능할 때, 이 소프트웨어를 동시에 또는 매우 짧은 시간 내에 획득하고자 하는 다수의 컴퓨터들이 네트워크에 존재한다. 예를 들어, 소프트웨어가 보안 패치일 경우, 컴퓨터 또는 네트워크에 대한 악성 공격을 막기 위해서 이 소프트웨어를 가능한 한 짧은 시간 내 에 가능한 많은 컴퓨터들에게 전달하고자 하는 요구가 있다. 소프트웨어가 기업 캠퍼스(corporate campus) 내의 시스템 광역 배포(system wide distribution)를 위한 새로운 애플리케이션일 경우, 짧은 시간 내에 소프트웨어 시스템을 배포하고자 하는 요구가 있을 수 있다. 소프트웨어가 매우 기대되는 릴리스인 경우, 이 소프트웨어를 처음으로 사용하는 사람들 중 하나가 되기 위해 다수의 사용자들이 소프트웨어를 다운로드하고자 할 수 있다. 소프트웨어를 대규모로 배포하는 것은 다량의 서버 및 네트워크 용량을 필요로 할 수 있다. 다수의 지점(branch office)이 기업 본점의 엔터프라이즈 허브(enterprise hub)와 연결된 네트워크 환경에서 특히 이러한 대규모 다운로드가 어려울 수 있다. 이 예에서, 소프트웨어가 엔터프라이즈 허브로부터 배포될 때, 엔터프라이즈 허브의 서버가 지점의 여러 또는 모든 컴퓨터에 소프트웨어를 제공하기에 충분한 기능을 가지고 있을 때에도, 엔터프라이즈 허브와 지점 간의 네트워크 연결은 특정 시간에 업데이트될 수 있는 컴퓨터의 수를 제한할 수 있다.Often, when software is published and available for download from a server, there are a number of computers in the network that want to acquire the software simultaneously or in a very short time. For example, if the software is a security patch, there is a desire to deliver the software to as many computers as possible in the shortest possible time to prevent malicious attacks on the computer or network. If the software is a new application for system wide distribution within a corporate campus, there may be a need to deploy the software system in a short time. If the software is a very anticipated release, many users may want to download the software to be one of the first users of the software. Large-scale deployment of software can require large amounts of server and network capacity. Such large downloads can be difficult, especially in a network environment where many branch offices are connected to the enterprise hub of the corporate headquarters. In this example, when the software is deployed from an enterprise hub, the network connection between the enterprise hub and the branch office may be updated at a particular time, even when the servers in the enterprise hub have enough functionality to provide software to many or all computers in the branch office. You can limit the number of computers you can.

대규모 다운로드의 작업 부하(workload)를 분산하기 위해 사용된 여러 방법들이 있다. 예를 들어, 기업 환경에서, 새로운 소프트웨어를 배포하는 것은 주어진 시간에 네트워크 상의 제한된 수의 컴퓨터들에게만 소프트웨어를 배포함으로써 이루어질 수 있다. 대안적으로, 네트워크의 컴퓨터들의 부분집합에 소프트웨어를 배포하기 위해서 네트워크 내에 캐싱 프록시가 놓일 수 있다. 이러한 해결책들은 둘 다 구현을 위해 세심한 계획이 필요하다. 이에 더해, 캐싱 프록시의 경우에, 추가적인 컴퓨터 하드웨어가 네트워크에 추가되어 네트워크의 비용을 증가시킨다. There are several methods used to distribute the workload of large downloads. For example, in an enterprise environment, distributing new software can be accomplished by distributing the software only to a limited number of computers on the network at a given time. Alternatively, a caching proxy can be placed in the network to distribute software to a subset of computers in the network. Both of these solutions require careful planning for implementation. In addition, in the case of a caching proxy, additional computer hardware is added to the network, increasing the cost of the network.

배경기술에서 다양한 논점들이 확인되었지만, 아래에 청구되는 본 발명은 반드시 어떤 또는 모든 확인된 논점을 다루지는 않는다. 이 배경기술은 단순히 여기에 설명되는 실시예들이 실행될 수 있는 한 예시적인 환경에 대한 배경을 제공하기 위한 것이다.While various issues have been identified in the background, the invention as claimed below does not necessarily cover any or all of the identified issues. This background is merely provided to provide a background for an exemplary environment in which the embodiments described herein may be practiced.

<발명의 개요>SUMMARY OF THE INVENTION [

여기에 설명된 한 실시예는 파일을 캐싱 및 공유하기 위한 방법을 포함한다. 이 방법은 예를 들어, 네트워크로 연결된 하나 이상의 컴퓨터를 포함하는 컴퓨터 네트워크의 컴퓨터 시스템에서 실행될 수 있다. 이 방법은 네트워크로 연결된 하나 이상의 컴퓨터들 중에서 잠재적인 피어 서버들의 목록을 포함하는 피어 목록을 구축하는 것을 포함한다. 피어 목록은 미리 결정된 수(predetermined number) 이하의 잠재적 피어 서버들만을 포함한다. 피어 목록의 잠재적 피어 서버들은 파일 또는 파일의 부분에 대해 쿼리된다. 다운로드 가능한 파일 또는 파일의 부분을 피어 서버가 가지고 있음을 나타내는 메시지가 피어 목록의 한 피어 서버로부터 수신된다. 컴퓨터 시스템이 그 피어 서버로부터 파일 또는 파일의 부분을 다운로드한다.One embodiment described herein includes a method for caching and sharing files. This method may be implemented, for example, in a computer system of a computer network including one or more computers connected by a network. The method includes building a list of peers that includes a list of potential peer servers among one or more networked computers. The peer list includes only potential peer servers up to a predetermined number. Potential peer servers in the peer list are queried for a file or part of a file. A message is received from one peer server in the peer list indicating that the peer server has a downloadable file or part of a file. The computer system downloads the file or part of the file from that peer server.

여기에 설명된 또 다른 실시예가 파일을 캐싱 및 공유하기 위한 방법을 포함한다. 이 방법은 예를 들어, 네트워크로 연결된 하나 이상의 컴퓨터를 포함하는 컴퓨터 네트워크의 컴퓨터 시스템에서 실행될 수 있다. 이 방법은 컴퓨터 시스템이 피어로서 사용가능하다는 메시지를 송신하는 것을 포함한다. 컴퓨터 시스템은 컴퓨터 시스템이 파일 또는 파일의 부분을 가지고 있는지를 알아내기 위한 요청을 수신한다. 컴퓨터 시스템은 컴퓨터 시스템이 파일 또는 파일의 부분을 가지고 있다는 메시지를 송신한다. 컴퓨터 시스템이 파일 또는 파일의 부분을 가지고 있다는 메시지를 송신하는 것은 동적 옵트-인(opt-in)/옵트-아웃(opt-out) 규칙에 기초하여 수행된다. 컴퓨터 시스템은 파일을 다운로드하기 위한 요청을 수신한다. 컴퓨터 시스템은 요청하는 시스템으로 파일을 송신한다.Another embodiment described herein includes a method for caching and sharing files. This method may be implemented, for example, in a computer system of a computer network including one or more computers connected by a network. The method includes sending a message that the computer system is available as a peer. The computer system receives a request to find out if the computer system has a file or part of a file. The computer system sends a message that the computer system has a file or part of a file. Sending a message that a computer system has a file or part of a file is performed based on dynamic opt-in / opt-out rules. The computer system receives a request to download a file. The computer system sends the file to the requesting system.

여기에 설명된 또 다른 실시예가 파일을 캐싱 및 공유하기 위한 방법을 포함한다. 이 방법은 예를 들어, 네트워크로 연결된 하나 이상의 컴퓨터를 포함하는 컴퓨터 네트워크의 컴퓨터 시스템에서 실행될 수 있다. 컴퓨터 시스템이 잠재적인 피어를 발견하기 위해 서브넷 상의 컴퓨터 시스템들에게 브로드캐스트 신호를 송신한다. 컴퓨터 시스템은 서브넷의 컴퓨터 시스템 중 하나로부터 유니캐스트, 또는 대안적으로 멀티캐스트 신호를 수신한다. 컴퓨터 시스템은 서브넷의 컴퓨터 시스템 중 상기 하나를 피어 목록에 추가한다. 피어 목록은 미리 결정된 수 이하의 피어들만을 포함한다. 컴퓨터 시스템은 컴퓨터 시스템 중 상기 하나가 다운로드할 수 있는 파일 또는 파일의 부분을 가지고 있는지 알아내기 위해 서브넷의 컴퓨터 시스템 중 상기 하나에 유니캐스트 신호를 송신한다. 컴퓨터 시스템은 서브넷의 컴퓨터 시스템 중 상기 하나가 다운로드될 수 있는 파일 또는 파일의 부분을 가지고 있음을 나타내는 유니캐스트 신호를 컴퓨터 시스템 중 상기 하나로부터 수신한다. 컴퓨터 시스템은 서브넷의 컴퓨터 시스템 중 상기 하나로부터 파일 또는 파일의 부분을 다운로드한다.Another embodiment described herein includes a method for caching and sharing files. This method may be implemented, for example, in a computer system of a computer network including one or more computers connected by a network. The computer system sends a broadcast signal to the computer systems on the subnet to discover potential peers. The computer system receives a unicast, or alternatively multicast signal from one of the computer systems in the subnet. The computer system adds the one of the computer systems in the subnet to the peer list. The peer list includes only peers up to a predetermined number. The computer system sends a unicast signal to the one of the computer systems in the subnet to determine if the one of the computer systems has a file or portion of a file that can be downloaded. The computer system receives a unicast signal from the one of the computer systems indicating that one of the computer systems in the subnet has a file or portion of a file that can be downloaded. The computer system downloads a file or portion of a file from said one of the computer systems in the subnet.

이 발명의 개요는 아래의 실시예에서 더 상세히 설명되는 개념들의 선택을 간략한 형태로 소개하기 위해 제공된 것이다. 이 발명의 개요는 청구된 본 발명의 주요 특징 또는 본질적 특징들을 식별하기 위한 것이 아니며, 또한 청구된 본 발명의 범위를 결정하는 보조로 사용되도록 의도된 것이 아니다.This Summary of the Invention is provided to introduce a selection of concepts in a simplified form that are described in more detail in the Examples below. This Summary of the Invention is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.

위에서 언급된 수단 및 기타 특징들을 얻을 수 있도록, 첨부된 도면에 도시된 특정한 실시예를 참조하여 더 구체적인 설명이 제시될 것이다. 이 도면은 단지 전형적인 실시예를 도시하며 따라서 범위를 제한하는 것으로 고려되어서는 안된다는 것을 이해해야 하며, 실시예들은 첨부된 도면의 사용을 통해 추가적인 특수성 및 세부 사항들로 묘사되고 설명될 것이다.In order to obtain the above-mentioned means and other features, more detailed description will be given with reference to the specific embodiment shown in the accompanying drawings. It is to be understood that the drawings only illustrate exemplary embodiments and therefore should not be considered as limiting the scope, which embodiments will be depicted and described with additional specificities and details through the use of the accompanying drawings.

도 1은 예시적인 네트워크의 블록도이다.1 is a block diagram of an example network.

도 2는 클라이언트 관점에서 파일을 캐싱 및 공유하기 위한 방법을 설명하는 흐름도를 도시한다.2 shows a flow diagram illustrating a method for caching and sharing files from a client perspective.

도 3은 피어 서버 관점에서 파일을 캐싱 및 공유하기 위한 방법을 설명하는 흐름도를 도시한다.3 shows a flow diagram illustrating a method for caching and sharing files from a peer server perspective.

여기에 설명된 한 실시예는 중앙화된(centralized) 파일 서버로부터 벗어나서 파일 배포를 가능하게 하는 향상된 파일 배포 시스템을 포함한다. 이 예에서, 파일 분산 및 캐싱은 네트워크의 가장자리(edge)로 옮겨진다. 이것은 중앙화된 파일 서버들에 대한 로드를 감소시키고, 몇몇 중앙화된 네트워크 연결들에 네트워크 트래픽이 집중되는 것과 반대로, 네트워크 트래픽을 네트워크 전체에 걸쳐 분산하 도록 돕는다. 구체적으로, 한 실시예에서 컴퓨터들은 피어 투 피어 시스템을 이용하여 파일을 캐싱하고 공유한다. 컴퓨터 시스템은 먼저, 네트워크로 연결된 하나 이상의 컴퓨터들 중에서 잠재적 피어 서버들의 목록을 포함하는 피어 목록을 구축한다. 이 실시예에서, 피어 목록은 미리 결정된 수 이하의 피어들로 제한된다. 다음, 시스템은 피어 목록의 피어들을 인증(authenticate)할 수 있다. 다음, 시스템은 컴퓨터 시스템이 필요로 하는 파일 또는 파일의 부분을 포함하는 피어를 찾기 위해 피어 목록의 피어들을 쿼리할 수 있다. 피어 목록의 한 피어가 사용가능한 파일 또는 파일의 부분을 가지고 있다고 응답하면, 이를 나타내는 피어로부터 파일 또는 파일의 부분을 다운로드할 수 있다. 파일 또는 파일의 부분을 가지고 있다고 응답하는 피어가 없으면, 파일을 요청하는 시스템은 중앙 파일 서버로부터 파일을 다운로드하고, 다운로드할 수 있는 파일 또는 파일의 부분을 자신이 가지고 있음을 다른 컴퓨터 시스템들에게 나타낼 수 있다. 다운로드할 수 있는 파일 또는 파일의 부분을 가지고 있음을 나타낸 것에 대한 응답으로, 다른 컴퓨터 시스템들은 자신의 잠재적 피어 서버들의 목록을 포함하는 피어 목록에 이 컴퓨터 시스템을 추가할 수 있으며, 이는 아래에 더 상세히 설명된다. 특히, 다른 피어 시스템들은, 파일 또는 파일의 부분을 포함하는 피어를 찾기 위한 쿼리에 대한 응답으로, 쿼리하는 컴퓨터 시스템을 자신의 피어 목록에 추가할 수 있다.One embodiment described herein includes an improved file distribution system that enables file distribution away from a centralized file server. In this example, file distribution and caching are moved to the edge of the network. This reduces the load on centralized file servers and helps distribute network traffic across the network, as opposed to concentrating network traffic on some centralized network connections. Specifically, in one embodiment computers use a peer to peer system to cache and share files. The computer system first builds a peer list that includes a list of potential peer servers among one or more computers connected to the network. In this embodiment, the peer list is limited to up to a predetermined number of peers. The system can then authenticate the peers in the peer list. The system can then query the peers in the peer list to find a peer that contains the file or portion of the file that the computer system needs. If a peer in the peer list responds that it has a file or part of a file available, it can download the file or part of the file from the peer that represents it. If no peer responds that it has a file or part of a file, the system requesting the file downloads the file from the central file server and indicates to other computer systems that it has the file or part of the file that it can download. Can be. In response to indicating that the file or portion of a file is available for download, other computer systems may add this computer system to a list of peers that includes a list of their potential peer servers, which is described in more detail below. It is explained. In particular, other peer systems may add the querying computer system to their peer list in response to a query to find a peer that includes a file or part of a file.

한 예시적인 실시예에서, 컴퓨터 시스템은 중앙 엔터프라이즈 서버 또는 허브에 의해 상호 연결되지 않은 컴퓨터들로부터 피어 그룹을 생성할 수 있다. 케이블 모뎀 연결, 및 이와 유사한 것 등과 같은 값비싼 연결을 통한 피어 연결을 제거 하기 위해, 예를 들어, 피어 그룹은 엔터프라이즈 네트워크의 지점, 공통 허브 또는 라우터의 컴퓨터들에서 형성될 수 있다. 이러한 방식으로, 파일이 캐싱 및 다운로드될 수 있는 피어 그룹들에게로 파일을 배포하는 데 더 적은 양의 네트워크 트래픽 및 서버 리소스가 필요하다. 이 방식으로, 소프트웨어 및 업데이트를 배포하기 위해 필요한 프로세싱 및 네트워크 기능들은 네트워크의 중앙화된 위치에서 네트워크의 가장자리로 이동되며, 따라서 컴퓨팅 및 네트워크 요구 사항들이 더 고르게 분배된다.In one illustrative embodiment, a computer system may create a peer group from computers that are not interconnected by a central enterprise server or hub. To eliminate peer connections through expensive connections, such as cable modem connections, and the like, for example, a peer group may be formed at computers in a branch, common hub or router of an enterprise network. In this way, less network traffic and server resources are required to distribute the file to peer groups where the file can be cached and downloaded. In this way, the processing and network functions needed to distribute software and updates are moved from the centralized location of the network to the edge of the network, thus distributing computing and network requirements more evenly.

이제 도 1을 참조하면, 예시적인 토폴로지(100)가 도시된다. 토폴로지(100)는 다수의 컴퓨터 시스템(102, 104, 106, 108, 110)을 포함한다. 컴퓨터 시스템들(102-110)은 다수의 상호 연결 수단 중 임의의 것을 통해 상호 연결될 수 있다. 예를 들어, 컴퓨터 시스템(102-110)은 IEEE 802.3을 따르는 이더넷 네트워크, IEEE 802.11을 따르는 것들과 같은 무선 이더넷 연결, 블루투스 무선 네트워크, 다이얼 업(dial up) 네트워킹 연결, 케이블 모뎀 연결 등과 같은 네트워크 연결을 통해 상호 연결될 수 있다. 도시된 실시예에서, 컴퓨터 시스템(102-110)은 상호 연결되어 피어 그룹(112)을 형성한다. 이 예에서, 피어 그룹(112)은, 랩톱 컴퓨터 시스템(106)과 같은 컴퓨터 시스템을 위한 잠재적인 피어 서버들의 한 그룹이다. 한 실시예에서, 각 컴퓨터 시스템은, 컴퓨터 시스템이 파일을 다운로드할 수 있는 잠재적인 피어 서버들의 목록을 포함하는 피어 목록을 유지한다. 피어 그룹의 형성은 아래에서 더 상세히 논의될 것이다.Referring now to FIG. 1, an exemplary topology 100 is shown. Topology 100 includes a number of computer systems 102, 104, 106, 108, 110. Computer systems 102-110 may be interconnected through any of a number of interconnecting means. For example, the computer system 102-110 may be an Ethernet network that conforms to IEEE 802.3, a wireless Ethernet connection such as those that conform to IEEE 802.11, a Bluetooth wireless network, a dial up networking connection, a cable modem connection, or the like. Can be interconnected through. In the illustrated embodiment, computer systems 102-110 are interconnected to form peer group 112. In this example, peer group 112 is a group of potential peer servers for a computer system, such as laptop computer system 106. In one embodiment, each computer system maintains a peer list that includes a list of potential peer servers from which the computer system can download files. The formation of peer groups will be discussed in more detail below.

도 1은 또한 피어 그룹(112)이 중앙 파일 서버(114)에 연결되었음을 도시한 다. 중앙 파일 서버(114)로의 연결이 단일 연결로 도시되었지만, 대안적인 실시예에서, 컴퓨터(102-110) 각각이 중앙 파일 서버(114)에 대한 액세스를 가지거나, 다른 구성으로 다양한 연결들이 사용될 수 있다. 예를 들어, 피어 그룹은 기업 엔터프라이즈의 지점에서 형성될 수 있으며, 여기서 지점은 엔터프라이즈 허브에 있는 중앙 파일 서버(114)와 연결된다. 다양한 다른 상호 연결들 또한 구현될 수 있다.1 also shows that peer group 112 is connected to central file server 114. Although the connection to the central file server 114 is shown as a single connection, in alternative embodiments, each of the computers 102-110 may have access to the central file server 114, or various connections may be used in other configurations. have. For example, a peer group may be formed at a branch in an enterprise enterprise, where the branch is connected to a central file server 114 in an enterprise hub. Various other interconnects may also be implemented.

도시된 예에서, 파일 서버는 파일(116) 또는 파일의 부분을 저장할 수 있다. 파일(116)은, 예를 들어, 소프트웨어 업데이트, 운영 체제를 위한 보안 패치, 애플리케이션, 데이터 파일, 또는 기타 소프트웨어일 수 있다. 파일(116)은 컴퓨터 시스템(108)과 같은 컴퓨터들 중 하나에 의해 다운로드되거나 컴퓨터들 중 하나로 푸시될 수 있다. 다음, 컴퓨터 시스템(108)은 파일(116)의 캐싱된 카피(cached copy)를 가진 잠재적 피어 서버로 동작할 수 있다. 그러면 다른 컴퓨터 시스템(102, 104, 106, 110)들은 잠재적 피어 서버 시스템(108)으로부터 파일(116)을 요청할 수 있다. 이러한 방식으로, 몇몇 실시예에서, 파일 서버와 피어 그룹(112) 사이의 연결(118) 상의 네트워크 트래픽이 감소될 수 있다. 또한, 중앙 파일 서버(114)에 의한 프로세싱이 감소될 수 있다.In the example shown, the file server may store file 116 or a portion of a file. File 116 may be, for example, a software update, a security patch for an operating system, an application, a data file, or other software. File 116 may be downloaded or pushed to one of the computers, such as computer system 108. Computer system 108 may then act as a potential peer server with a cached copy of file 116. Other computer systems 102, 104, 106, and 110 can then request file 116 from potential peer server system 108. In this way, in some embodiments, network traffic on the connection 118 between the file server and the peer group 112 may be reduced. In addition, processing by the central file server 114 may be reduced.

앞서 언급된 것과 같이, 도 1은 컴퓨터 시스템들 중 하나가 랩톱 컴퓨터 시스템(106)이고, 랩톱 컴퓨터 시스템(106)에 의해 유지되는 잠재적 피어 서버들의 목록 내에 피어 그룹(112)이 있음을 도시한다. 랩톱 컴퓨터 및 핸드-헬드 장치, PDA, 휴대 전화 등과 같은 기타 휴대용 컴퓨터들은, 본래의 성질에 따라 휴대가능하며, 따라서 네트워크의 물리적 및 논리적으로 다른 부분들에 위치할 수 있다. 랩톱 컴퓨터(106)는, 예를 들어, 랩톱 컴퓨터(106)가 피어 그룹(112)으로부터 파일을 다운로드하기에 실용적이지 않은 위치로 논리적 또는 물리적으로 이동될 수 있다. 예를 들어, 랩톱 컴퓨터(106)는 피어 그룹(112)이 아닌 다른 서브넷으로 논리적으로 이동될 수 있다. 대안적으로, 랩톱 컴퓨터(106)는, 랩톱 컴퓨터(106)가 피어 그룹(112)의 다른 구성원들과 통신하도록 하는 데 과도한 양의 네트워크 트래픽을 필요로 하는 위치로 물리적으로 이동될 수 있다. 도 1에 도시된 실시예에서, 랩톱 컴퓨터(106)는 도 1에 도시된 피어 그룹(120)과 같은 또 다른 피어 그룹을 생성한다. 랩톱(106)은 제1 피어 그룹(112) 및 제2 피어 그룹(120)에 대한 정보를 유지하여, 제1 피어 그룹(112) 또는 제2 피어 그룹(120) 또는 랩톱(106)의 피어 목록에 있는 다른 임의의 피어 그룹과 연결되면 랩톱(106)이 파일을 수신할 수 있다. As mentioned above, FIG. 1 shows that one of the computer systems is a laptop computer system 106 and that the peer group 112 is in the list of potential peer servers maintained by the laptop computer system 106. Other portable computers, such as laptop computers and hand-held devices, PDAs, cell phones, and the like, are portable according to their inherent nature and can therefore be located in physically and logically different parts of the network. The laptop computer 106 may, for example, be moved logically or physically to a location where the laptop computer 106 is not practical for downloading files from the peer group 112. For example, laptop computer 106 may be logically moved to a subnet other than peer group 112. Alternatively, laptop computer 106 may be physically moved to a location that requires excessive amounts of network traffic to allow laptop computer 106 to communicate with other members of peer group 112. In the embodiment shown in FIG. 1, laptop computer 106 creates another peer group, such as peer group 120 shown in FIG. 1. The laptop 106 maintains information about the first peer group 112 and the second peer group 120, such that the peer list of the first peer group 112 or the second peer group 120 or the laptop 106 is listed. The laptop 106 can receive the file when it is connected to any other peer group in.

피어 그룹(112) 내의 컴퓨터 시스템이 파일(116)을 수신하면, 컴퓨터 시스템은 파일이 정확한 파일이며 손상되지 않았음을 확인해야한다. 파일이 정확한 파일이며 손상되지 않았음을 결정하는 것은, 예를 들어, 파일 이름, 파일 크기, 해시 값 등을 비교함으로써 이루어질 수 있다. 예를 들어, 컴퓨터 시스템은 파일 이름, 파일 크기, 및 파일의 해시 값에 관한 정보를 수신할 수 있다. 해시 값은, 어떤 다른 데이터가 같은 해시 값을 생성할 가능성이 극히 드문 방식으로 값을 생성하기 위해서, 파일 내의 데이터를 이용하여 계산된 값들이다. 컴퓨터 시스템은 파일 이름, 파일 크기 및/또는 해시 값을 비교함으로써 정확한 파일이 수신되고 있다고 결정할 수 있다. 또한, 해시 값은 파일이 손상되거나, 악성으로 변경되지 않았음을 보장하기 위해 사용될 수 있다.When the computer system in peer group 112 receives the file 116, the computer system must confirm that the file is the correct file and is not corrupted. Determining that a file is an exact file and not corrupting may be done, for example, by comparing the file name, file size, hash value, and the like. For example, the computer system can receive information regarding the file name, file size, and hash value of the file. Hash values are values that are calculated using data in a file in order to generate a value in an extremely unlikely manner that any other data will produce the same hash value. The computer system can determine that the correct file is being received by comparing the file name, file size and / or hash value. The hash value can also be used to ensure that the file has not been corrupted or altered to malicious.

정확한 파일이 사용가능하지 않거나, 파일이 손상되었거나, 파일이 악성으로 변경되었음을 컴퓨터 시스템이 검출하면, 컴퓨터 시스템은 중앙 파일 서버(114)로부터 직접 파일(116)을 요청할 수 있다. 다음, 중앙 파일 서버(114)로부터 파일(116)을 직접 요청하는 컴퓨터 시스템은 자신을 파일(116)을 포함하는 잠재적 저장 시스템으로 알릴 수 있다.If the computer system detects that the correct file is not available, the file is corrupted, or the file has been changed to malicious, the computer system can request the file 116 directly from the central file server 114. Next, the computer system requesting the file 116 directly from the central file server 114 may advertise itself to the potential storage system containing the file 116.

특히, 한 실시예에서, 피어 그룹은 상술된 것과 같이 유지되며 각 컴퓨터 시스템에 대해 특정(specific)하다. 따라서, 피어 그룹 관리는 중앙 제어가 없이 시스템을 사용하여 중앙 위치로부터 이동된다. 이것은 전체 네트워크에 대해서 단일 지점 실패(single point failure) 지점을 제거한다. 다시 말해, 하나의 피어 목록 또는 피어 목록을 가진 하나의 시스템의 손실은 전체 시스템으로 하여금 파일 분산 및 캐싱을 할 수 없도록 하지 않으며, 전체 시스템이 사용 불가능하게 되는 것은 피어 그룹을 관리하는 데 하나의 중앙화된 서버가 사용될 때 발생한다. In particular, in one embodiment, the peer group remains as described above and is specific to each computer system. Thus, peer group management is moved from a central location using the system without centralized control. This eliminates single point failure points for the entire network. In other words, the loss of one system with one peer list or one peer list does not prevent the entire system from distributing and caching files, and disabling the entire system is one central to managing peer groups. Occurs when a scheduled server is used.

이제 도 2를 참조하면, 파일을 캐싱 및 공유하기 위한 방법(200)이 도시된다. 방법은 네트워크로 연결된 하나 이상의 컴퓨터를 포함하는 컴퓨터 네트워크의 컴퓨터 시스템에서 수행될 수 있다.Referring now to FIG. 2, a method 200 for caching and sharing files is shown. The method may be performed on a computer system of a computer network including one or more computers connected by a network.

도 2는 피어 목록을 구축하는 동작을 도시한다(단계 202). 피어 목록은 도 1에 도시된 컴퓨터 시스템(102-110)들과 같은, 네트워크로 연결된 컴퓨터의 그룹 중에서 잠재적인 피어 서버들의 목록을 포함한다. 피어 목록은 미리 결정된 수 이하의 잠재적 피어 서버들만을 포함할 수 있다. 예를 들어, 피어 목록은 100개 이하의 잠재적 피어 서버들만 피어 목록에 포함되도록 설계될 수 있다. 또한, 피어 그룹 내의 컴퓨터 시스템(102-110)들은 네트워킹 관점에서 가까워야할 필요가 있다. 예를 들어, 피어 그룹(112)의 컴퓨터 시스템(102-110)은 엔터프라이즈 네트워크의 동일한 지점에 위치할 것이 요구될 수 있다. 대안적인 실시예에서, 피어 그룹(112)의 컴퓨터 시스템(102-110)이 공통 허브, 라우터, 또는 스위치에 위치할 것이 요구될 수 있다. 몇몇 대안적인 실시예에서, 어떤 피어도 케이블 모뎀들 간의 연결 또는 고(high) 트래픽 연결과 같은 고가(expensive)의 연결을 통해 상호 연결되지 않도록 요구될 수 있다. 또한, 다른 논리적으로 가까운 구성들이 구현될 수 있다. 예를 들어, 한 실시예에서, 컴퓨터 시스템은 컴퓨터들이 가까운 정도(nearness)를 결정하기 위해 타이밍 방법(timing method)을 이용할 수 있다. 피어 목록을 구축하기 위해(202) 단독으로 또는 공동으로 사용될 수 있는 여러 방법들이 있다. 이 방법들의 예는 아래에 설명될 것이다.2 illustrates the operation of building a peer list (step 202). The peer list includes a list of potential peer servers among a group of networked computers, such as the computer systems 102-110 shown in FIG. The peer list may include only potential peer servers up to a predetermined number. For example, the peer list may be designed such that only 100 or fewer potential peer servers are included in the peer list. In addition, computer systems 102-110 within a peer group need to be close in terms of networking. For example, computer systems 102-110 of peer group 112 may be required to be located at the same point in the enterprise network. In alternative embodiments, computer systems 102-110 of peer group 112 may be required to be located in a common hub, router, or switch. In some alternative embodiments, no peers may be required to be interconnected via expensive connections, such as connections between cable modems or high traffic connections. In addition, other logically close configurations may be implemented. For example, in one embodiment, a computer system may use a timing method to determine the nearness of computers. There are several ways that can be used alone or in combination to build a peer list (202). Examples of these methods will be described below.

피어 목록을 구축하는 한 방법(202)은 통신 유도 요청(solicitation request)을 송신하고 컴퓨터들로부터 응답을 수신하는 것을 포함한다. 응답하는 잠재적 피어들의 수를 제한하기 위해, 통신 유도 요청은 예를 들어, 단일 서브넷에 대해 응답을 받기 위해 서브넷 브로드캐스트 또는 멀티캐스트일 수 있다. 하지만, 단일 서브넷의 컴퓨터들만 응답하더라도, 응답의 수가 여전히 과도할 수 있다. 따라서, 응답의 수를 더욱 제한하기 위해, 통신 유도 요청을 송신하는 컴퓨터 시스템은 요구되는 피어의 수에 대한 지시를 통신 유도 요청 내에 포함시킬 수 있다. 잠재적 피어들은 무작위의 짧은 간격(random short interval) 후에 멀티캐스트를 사용하여 응답하고 다른 컴퓨터들의 멀티캐스트 응답을 듣도록 구성될 수 있다. 다 른 잠재적 피어들로부터의 응답의 수가 요구되는 피어의 수에 대한 지시에 이미 도달했음이 검출되면 잠재적 피어는 응답하지 않는다. 다시 말해, 요구되는 수의 피어들이 이미 응답한 경우 잠재적 피어는 응답하지 않는다.One method 202 of building a peer list includes sending a solicitation request and receiving a response from the computers. In order to limit the number of potential peers responding, a communication induction request may be, for example, subnet broadcast or multicast to receive a response for a single subnet. However, even if only computers in a single subnet respond, the number of responses may still be excessive. Thus, to further limit the number of responses, the computer system sending the communication induction request may include in the communication induction request an indication of the number of peers required. Potential peers may be configured to respond using multicast after a random short interval and to hear multicast responses from other computers. If it is detected that the number of responses from other potential peers has already reached the indication of the required number of peers, the potential peer does not respond. In other words, if the required number of peers have already responded, the potential peer does not.

무작위의 짧은 간격을 생성하기 위해 여러 방법들이 사용될 수 있다. 예를 들어, 가장 간단한 실시예에서, 통신 유도 요청에 응답하기 전에 얼마의 시간을 대기해야 할지를 결정하기 위해서, 균등한 무작위 분포(uniform random distribution)가 각 잠재적 피어에 의해 사용될 수 있다. 대안적인 방법은 초기에 더 적은 수의 잠재적 피어가 응답하고 지연이 길어질수록 더 많은 수의 잠재적 피어가 응답하는 비선형 분포를 포함한다. 예를 들어, 비선형 지연(non-linear delay)을 통합하는 한 방법은 0 내지 1 사이의 난수(random number)를 생성하는 것을 포함할 수 있다. 그러면 지연은 다음의 식에 의해 정의될 수 있다.Several methods can be used to generate random short intervals. For example, in the simplest embodiment, a uniform random distribution may be used by each potential peer to determine how long to wait before responding to a communication induction request. An alternative method involves a non-linear distribution in which initially fewer potential peers respond and the longer the delay, the more potential peers respond. For example, one method of incorporating non-linear delay may include generating a random number between zero and one. The delay can then be defined by the equation

DELAY = MAX_DELAY*Log(C*X+1)/Log(C+1)DELAY = MAX_DELAY * Log (C * X + 1) / Log (C + 1)

DELAY는 응답하기 전의 지연이고, MAX_DELAY는 응답을 수신하는 데 주어진 시간의 최대 양(amount), X는 난수, 및 C는 256과 같은 임의의 수이다. 다른 비선형 무작위 지연(non-linear random delay)들 또한 사용될 수 있다.DELAY is the delay before responding, MAX_DELAY is the maximum amount of time given to receive the response, X is a random number, and C is any number such as 256. Other non-linear random delays can also be used.

다른 예에서, 시스템은 지연 없이 응답할 수 있고, 컴퓨터 시스템은 피어 목록을 채울 정도로 충분한 피어들이 있을 때까지 피어 목록에 피어를 추가할 수 있다. 이 예에서, 가장 빨리 응답하는 피어는 통신 유도 요청을 송신하는 컴퓨터 시스템과 논리적으로 가장 가까운 것들일 수 있다. 이 예에서, 컴퓨터 시스템은 잠재적 피어들이 얼마나 빨리 응답하는지를 보기 위해 시간을 잴 수 있다. 가장 빨 리 응답하는 잠재적 피어들만이 피어 목록에 추가된다. 따라서, 컴퓨터 시스템은 논리적으로 가장 가깝거나 가장 빨리 응답할 수 있는 피어들을 받아들임으로써, 피어 그룹에 가장 적합한 피어들을 선택할 수 있다.In another example, the system can respond without delay and the computer system can add a peer to the peer list until there are enough peers to populate the peer list. In this example, the fastest responding peers may be those that are logically closest to the computer system sending the communication induction request. In this example, the computer system may take time to see how quickly potential peers respond. Only potential peers that respond the fastest are added to the peer list. Thus, a computer system can select peers that are most suitable for a peer group by accepting peers that can logically respond closest or fastest.

통신 유도 요청은 또한 트러스트 그룹(trust group)과 같은 그룹을 포함할 수 있다. 잠재적 피어들은 다른 트러스트 그룹과 관련된 요청들을 무시한다. 트러스트 그룹이 통신 유도 요청에 사용될 때에도, 여전히 아래에 상세히 설명되는 것과 같이 피어를 인증해야할 필요가 있을 수 있다. 트러스트 그룹은 동일한 서브넷 내의 다른 트러스트 그룹들로부터의 응답을 추려내어, 서브넷 내의 중복된 통신 유도 요청이 서로 저촉하지 않게 하는 방법으로서 사용된다. 한 실시예에서, 통신 유도 요청은 컴퓨터 시스템에 의해 요구되는 컨텐트의 식별정보(identification)를 포함할 수 있다. 아래에 설명되는 것과 같이, 잠재적 피어들은 자신이 그 식별정보의 컨텐트를 가지고 있고 다른 옵트-인 제약 조건(constraint)을 만족하면 응답한다. 이것은 하나의 컨텐트 요청이 모든 잠재적 호스트에 도달하기 때문에 컨텐트 검색을 더 효과적으로 만든다. 이 실시예는 덜 개인적(private)일 수 있는데, 이는 인증되지 않은 호스트들이 어느 컨텐트가 요청되는지를 볼 수 있기 때문이다. 이 실시예에서 프라이버시(privacy)를 향상시키기 위해 URL의 일방향 해시, 또는 컨텐트 해시를 요청하는 것이 사용될 수 있다.The request to direct communication may also include a group such as a trust group. Potential peers ignore requests associated with other trust groups. Even when a trust group is used for a request to induce communication, it may still be necessary to authenticate the peer as described in detail below. Trust groups are used as a way to sift responses from other trust groups in the same subnet so that duplicate communication induction requests in the subnet do not interfere with each other. In one embodiment, the communication derivation request may include an identification of the content required by the computer system. As described below, potential peers respond if they have the content of that identification and meet other opt-in constraints. This makes content retrieval more efficient because one content request reaches all potential hosts. This embodiment may be less private because unauthorized hosts may see which content is requested. In this embodiment, requesting a one-way hash of a URL, or a content hash, can be used to enhance privacy.

다른 실시예에서, 피어 목록을 구축하는 것은 컴퓨터 시스템이 잠재적 피어로부터 멀티캐스트 패킷과 함께 자기-알림(self-announcement)을 수신하는 것을 포함할 수 있다. 자기-알림은 잠재적 피어들이 네트워크의 컴퓨터들에게 제공될 수 있는 파일 또는 파일의 부분들을 갖고 있다는 표시를 포함한다. 이러한 알림이 수신되면, 컴퓨터 시스템은 잠재적 피어를 자신의 피어 목록에 추가할 수 있다. 자기-알림은 한 대안적인 실시예에서 규칙적으로 이루어질 수 있다. 한 예에서, 알림은 시간당 한번, 또는 하루에 여러 번 이루어질 수 있다.In another embodiment, building the peer list may include the computer system receiving a self-announcement with a multicast packet from a potential peer. Self-notification includes an indication that potential peers have a file or portions of files that can be provided to computers in a network. When such a notification is received, the computer system can add the potential peer to its peer list. Self-notification may be made regularly in one alternative embodiment. In one example, the notification may be made once per hour or multiple times per day.

컴퓨터 시스템들은 공유할 파일을 가지고 있을 때, 그리고 하드웨어 특성, 현재의 프로세싱 로드, 또는 다른 특성들이, 컴퓨터 시스템으로 하여금 피어 서버로서 동작할 수 있도록 할 때 자기-알림을 할 수 있다. 알리는 컴퓨터 시스템들은 중앙 파일 서버(114) 또는 피어 그룹(112) 내의 다른 피어로부터 파일(116)을 수신할 수 있다. 컴퓨터 시스템은 자기-알림을 하지 않을 특정 파일들을 가지고 있을 수 있다. 이것은 컴퓨터 시스템으로 하여금 특정 파일을 보호할 수 있도록 한다.Computer systems may self-notify when they have files to share, and when hardware characteristics, current processing load, or other characteristics allow the computer system to act as a peer server. Informing computer systems may receive file 116 from a central file server 114 or other peer in peer group 112. The computer system may have certain files that will not self-notify. This allows the computer system to protect certain files.

대안적인 실시예에서, 잠재적 피어는, 예를 들어, 멀티캐스트를 통해 네트워크에 추가되었을 때와 같이, 네트워크에 추가되었을 때 알릴(announce) 수 있다. 다음, 피어 목록에 피어가 필요하면, 컴퓨터는 이 새로운 컴퓨터를 자신의 피어 목록에 추가할 수 있다. 이와 유사하게, 컴퓨터 시스템은 다른 유형의 멀티캐스트 알림 및 응답을 수신할 때 피어를 피어 목록에 추가할 수 있다. 예를 들어, 상술된 무작위 시간 지연 응답 실시예와 관련된 응답을 듣는 컴퓨터 시스템은 본래의 통신 유도에 응답하는 임의의 컴퓨터 시스템들을 자신의 피어 목록에 추가할 수 있다. 마찬가지로, 피어 목록의 잠재적 피어로서 사용가능한 컴퓨터들을 결정하는 데 있어 거의 모든 임의의 응답 또는 알림이 사용될 수 있다. In alternative embodiments, potential peers may announce when added to a network, such as when added to a network via multicast, for example. Next, if a peer is needed in the peer list, the computer can add this new computer to its peer list. Similarly, a computer system can add a peer to the peer list when receiving other types of multicast notifications and responses. For example, a computer system that listens for a response associated with the random time delay response embodiment described above may add to its peer list any computer systems that respond to inducing the original communication. Likewise, almost any response or notification can be used to determine which computers are available as potential peers in the peer list.

피어 목록의 컴퓨터들은 검증되었거나 검증되지 않은 것일 수 있다. 검증된 컴퓨터 시스템은 아래에 약술된(outlined) 것과 같이 인증을 통과한 것들이다. 피어 목록의 피어는 피어 목록에 추가되고 난 후 즉시 검증될 필요가 없고, 오히려, 파일 또는 파일의 부분에 대해 피어 목록의 피어들을 쿼리하는 것과 근접한 시간에 검증될 수 있으며(단계 206), 이는 아래에 더 상세히 논의된다. 하지만, 피어 목록의 피어가 검증되고 나면, 컴퓨터 시스템과 피어는 키(key)를 공유하여 이어지는 파일 쿼리들에 대해 검증이 수행될 필요가 없도록 한다.The computers in the peer list may or may not be verified. Validated computer systems are those that have been certified as outlined below. Peers in the peer list do not need to be validated immediately after being added to the peer list, but rather can be validated in close proximity to querying peers in the peer list for a file or part of a file (step 206), which is shown below. In more detail. However, once a peer in the peer list has been verified, the computer system and the peer share a key so that the verification does not need to be performed on subsequent file queries.

피어 목록을 구축하는 프로세스의 일부는, 오래된(outdated) 항목을 제거하거나, 더 이상 유효하지 않은 항목들을 제거하기 위해 피어 목록을 업데이트하는 것을 포함할 수 있다. 예를 들어, 항목들이 미리 정해진 기간 동안 피어 목록에 존재한 후에 컴퓨터 시스템은 항목들을 피어 목록으로부터 제거할 수 있다. 이것은 오래된 항목들이 제한된 수명(lifespan)을 갖도록 보장한다. 다른 대안적인 실시예에서, 피어가 네트워크를 떠날 때, 피어에 의해 송신된 멀티캐스트에 대한 응답으로 피어 항목들이 제거될 수 있다. 예를 들어, 피어가 네트워크를 떠날 준비를 할 때 "바이(Bye)" 멀티캐스트 일방향 메시지는 최선 노력 알림(best effort notification)으로써 다른 피어들에게 송신된다. "바이" 메시지가 컴퓨터 시스템에 의해 검출되면, "바이" 메시지를 송신하는 피어가 피어 목록으로부터 제거될 수 있다. "바이" 메시지는 덜 바람직할 수 있는데, 이는 악성 컴퓨터가 "바이" 요청을 사용하여 다른 컴퓨터들이 피어 목록으로부터 제거되도록 하고, 따라서 더 많은 컴퓨터들로 하여금 중앙 파일 서버에 요청을 하도록 만들 수 있기 때문이다. 다른 예에서, 파일에 대해 피어를 쿼리하는 시도가 이루어졌을 때, 피어가 더 이상 네트 워크에 없음을 나타내는 에러가 수신되면 피어가 피어 목록으로부터 제거될 수 있다. 한 실시예에서, 피어 목록의 서로 다른 피어들로의 다수의 쿼리가 에러 메시지를 가져오면 컴퓨터 시스템은 피어 목록 전체의 모든 항목을 폐기할 수 있다. 이것은 컴퓨터 시스템이 액세스하고자 하는 네트워크의 부분이 더 이상 사용가능하지 않다는 표시일 수 있다. 다른 실시예에서, 피어가 검증되지 못하면 피어 목록으로부터 제거될 수 있다. 이것은 아래에 더 상세히 설명될 것이지만, 간단히 말하자면, 피어가 검증되지 못하면, 이것은 피어가 신뢰될 수 없다는 표시이다. 이와 유사하게, 피어로부터 수신된 파일들이 해시 비교와 같은 특정 보안 검사를 통과하지 못하면 피어는 피어 목록으로부터 제거될 수 있다. 이것 또한 아래에 더 상세히 논의될 것이다.Part of the process of building a peer list may include removing an outdated item or updating the peer list to remove items that are no longer valid. For example, the computer system may remove items from the peer list after they have been in the peer list for a predetermined period of time. This ensures that old items have a limited lifespan. In another alternative embodiment, peer items may be removed in response to the multicast sent by the peer when the peer leaves the network. For example, when a peer prepares to leave the network, a "Bye" multicast one-way message is sent to other peers as best effort notification. If a "by" message is detected by the computer system, the peer sending the "by" message may be removed from the peer list. A "by" message may be less desirable because a malicious computer can use a "by" request to cause other computers to be removed from the peer list, thus allowing more computers to make requests to the central file server. to be. In another example, when an attempt is made to query a peer for a file, the peer may be removed from the peer list if an error is received indicating that the peer is no longer on the network. In one embodiment, if multiple queries to different peers of the peer list result in an error message, the computer system may discard all items of the entire peer list. This may be an indication that the portion of the network that the computer system is trying to access is no longer available. In another embodiment, if a peer is not verified, it may be removed from the peer list. This will be explained in more detail below, but in short, if the peer is not verified, this is an indication that the peer cannot be trusted. Similarly, if a file received from a peer does not pass certain security checks, such as hash comparison, the peer can be removed from the peer list. This will also be discussed in more detail below.

충분한 수의 피어들이 피어 목록으로부터 제거되면, 상술된 피어 목록을 구축하기 위한 단계들이 반복될 수 있다. 특히, 상술된 단계들은 단독으로 또는 함께 사용될 수 있다.If a sufficient number of peers are removed from the peer list, the steps for building the peer list described above can be repeated. In particular, the steps described above can be used alone or together.

컴퓨터 시스템은 하나 이상의 피어 목록을 유지할 수 있다. 예를 들어, 도 1에서, 랩톱 컴퓨터 시스템(106)의 예가 도시된다. 설명된 것과 같이, 랩톱 컴퓨터 시스템(106)은 물리적 및/또는 논리적으로 재배치(relocate)될 수 있다. 한 실시예에서, 랩톱 컴퓨터(106)는 논리적으로 재배치되어 제1 피어 그룹(112)과는 다른 서브넷에 존재할 수 있다. 랩톱 컴퓨터 시스템(106)은 자신이 새로운 서브넷으로 이동하였음을 검출할 수 있고, 새로운 서브넷으로 이동하였음을 검출한 것에 대한 응답으로, 랩톱 컴퓨터 시스템(106)은 새로운 서브넷에 대한 새로운 피어 목록 을 구축하기 위해서, 피어 목록을 구축하기 위한 상술된 단계들을 수행할 수 있다. 랩톱 컴퓨터 시스템(106)이 규칙적으로 특정 서브넷들의 구성원이면, 랩톱 컴퓨터 시스템(106)은 서브넷들과 연결할 때마다 피어 목록을 구축하는 단계들을 수행해야할 필요를 피하기 위해서 이 서브넷들에 대한 피어 목록을 유지할 수 있다. 컴퓨터 시스템이 유지하는 서로 다른 피어 목록들의 수는 정적으로 정의된(statically defined) 수일 수 있고, 또는 대안적으로 그 수는 사용자 또는 네트워크 관리자가 구성할 수 있는(configurable) 수일 수 있다.The computer system may maintain one or more peer lists. For example, in FIG. 1, an example of a laptop computer system 106 is shown. As described, laptop computer system 106 may be physically and / or logically relocated. In one embodiment, laptop computer 106 may be logically relocated and exist in a different subnet than first peer group 112. The laptop computer system 106 may detect that it has moved to a new subnet, and in response to detecting that the laptop computer system has moved to a new subnet, the laptop computer system 106 may construct a new peer list for the new subnet. To do this, the above-described steps for building a peer list can be performed. If the laptop computer system 106 is regularly a member of certain subnets, the laptop computer system 106 maintains a peer list for these subnets to avoid having to perform the steps of building a peer list each time it associates with the subnets. Can be. The number of different peer lists maintained by the computer system may be a statically defined number, or alternatively the number may be a configurable number by a user or a network administrator.

특히, 컴퓨터 시스템이 새로운 서브넷으로 이동하지만, 새로운 피어 그룹을 형성하지 않는 상황이 있을 수 있다. 예를 들어, 랩톱 컴퓨터가 인터넷 카페로 이동하면, 랩톱 컴퓨터는 아마도 새로운 피어 그룹을 형성하지 않는다. 사용가능한 피어들과의 통신은 이것 및 다른 상황들에서 너무 위험(risky)할 수 있다.In particular, there may be a situation where a computer system moves to a new subnet but does not form a new peer group. For example, if a laptop computer moves to an internet cafe, the laptop computer probably does not form a new peer group. Communication with available peers can be too risky in this and other situations.

컴퓨터 시스템은 또한 처음 네트워크에 추가될 때 피어 목록을 구축하도록 구성될 수 있다. 이것은 임의의 새로운 컴퓨터 시스템에 의해 이루어질 수 있으며, 랩톱 시스템에 제한되는 것이 아니다.The computer system can also be configured to build a peer list when first added to the network. This can be done by any new computer system, but is not limited to laptop systems.

다시 도 2를 참조하면, 피어 목록의 컴퓨터를 인증하는 동작(단계 204)이 도시된다. 인증은 피어가 신뢰된 기계임을 검증하는 것을 포함한다. 한 실시예에서, 컴퓨터 시스템은 피어가 특정 보안 그룹의 구성원임을 검증할 수 있다. 검증은, 예를 들어, 프로토콜을 사용하여, 컴퓨터 시스템과 피어 모두 상호-인증(mutual-authentication)을 수행하도록 할 수 있다. 이러한 방식으로, 컴퓨터 시스템 및 피어 둘 다의 ID를 검증함으로써, 컴퓨터 시스템 또는 피어 목록의 피어 가 같은 보안 그룹에 있다고 믿도록 서로를 "속이는(spoofing)" 것을 막는다. 이 상호 인증을 위한 한 프로토콜이 커베로스(Kerberos)일 수 있다. 피어가 검증에 실패하면, 피어는 피어 목록으로부터 제거될 수 있다.Referring again to FIG. 2, an operation (step 204) of authenticating a computer in the peer list is shown. Authentication involves verifying that the peer is a trusted machine. In one embodiment, the computer system may verify that the peer is a member of a particular security group. Validation may, for example, use a protocol to allow both computer systems and peers to perform mutual-authentication. In this way, by verifying the identity of both the computer system and peer, it prevents "spoofing" each other to believe that peers in the computer system or peer list are in the same security group. One protocol for this mutual authentication may be Kerberos. If the peer fails verification, the peer can be removed from the peer list.

피어가 검증되고 나면, 컴퓨터 시스템과 피어는 키를 공유함으로써, 이어지는 쿼리들에 앞서, 이어지는 검증들이 수행될 필요가 없도록 한다. 키는 트러스트 검증을 효과적으로 만들기 위해 만료 기간을 가질 수 있다. 이러한 만료 기간은 예를 들어, 하루일 수 있다.Once the peer has been verified, the computer system and the peer share the key so that subsequent verifications do not have to be performed before subsequent queries. The key may have an expiration period to make trust verification effective. This expiration period can be, for example, one day.

피어가 검증되고 난 후, 도 2는 파일 또는 파일의 부분에 대해 피어 목록의 피어들을 쿼리하는 동작(단계 204)을 도시한다. 피어 목록의 피어를 쿼리하는 것은, 한 예시적인 실시예에서, 피어들 중 하나가 컴퓨터 시스템이 찾고 있는 파일 또는 파일의 부분을 가지고 있다고 응답할 때까지, 피어 목록의 각 피어들에게 유니캐스트 메시지를 송신하는 것을 포함한다. 여기에 사용된바, 유니케스트는 특정 컴퓨터로의 네트워크 쿼리임을 주의해야 한다. 여기에 설명된 유니캐스트는 반드시 데이터그램 프로토콜의 사용을 요구하지 않으며, TCP 및 기타 프로토콜과 같은 다른 프로토콜을 사용할 수 있다. 한 대안적인 실시예에서, 컴퓨터 시스템은 중복(overlapping)된 유니캐스트 메시지의 집합을 송신할 수 있다. 예를 들어, 컴퓨터 시스템은 이전에 유니캐스트 메시지를 보낸 피어들로부터 응답을 수신하기 전에 피어 목록의 피어들에게 유니캐스트 메시지를 송신할 수 있다.After the peer is verified, FIG. 2 illustrates an operation (step 204) of querying peers in the peer list for a file or portion of a file. Querying a peer in the peer list may, in one example embodiment, send a unicast message to each peer in the peer list until one of the peers responds that it has the file or part of the file it is looking for. It includes sending. As used here, note that unicast is a network query to a specific computer. Unicast described here does not necessarily require the use of a datagram protocol, but may use other protocols such as TCP and other protocols. In an alternative embodiment, the computer system may transmit a set of overlapping unicast messages. For example, the computer system may send a unicast message to peers in the peer list before receiving a response from peers that previously sent the unicast message.

쿼리하는 단계에서 송신한 메시지는 컴퓨터 시스템이 필요로 하는 파일을 식별하기 위한 다양한 매개변수를 포함할 수 있다. 예를 들어, 메시지는 파일 이름, 파일 크기, 파일 생성 날짜, 및/또는 파일의 해시 중 하나 이상을 포함할 수 있다. 구체적으로, 파일의 해시를 사용함으로써, 시스템은 정확한 파일이 사용가능함을 검출할 수 있다. 해시를 사용하여, 컴퓨터 시스템은 사용가능한 파일이 업데이트된 파일인지, 다른 파일의 중복 이름인지 등을 검출할 수 있다.The message sent in the querying step may include various parameters for identifying the file needed by the computer system. For example, the message may include one or more of a file name, file size, file creation date, and / or hash of the file. Specifically, by using a hash of the file, the system can detect that the correct file is available. Using the hash, the computer system can detect whether the available file is an updated file, a duplicate name of another file, and the like.

컴퓨터 시스템이 파일 또는 파일의 부분에 대해 피어 목록의 피어들을 쿼리한 후(단계 206), 도 2에 도시된 방법은, 다운로드 가능한 파일 또는 파일의 부분을 피어 서버가 가지고 있다는 메시지를 피어 목록의 피어로부터 수신하는 동작(단계 208)을 도시한다.After the computer system queries the peers of the peer list for a file or portion of a file (step 206), the method shown in FIG. 2 may inform the peer list that the peer server has a downloadable file or portion of a file. The operation of receiving from is shown (step 208).

피어가 피어 서버로서 동작할지 결정할 때, 피어는 다양한 정책 규칙(policy rule)을 참조할 수 있다. 추가적으로, 피어가 사용가능한 파일을 가지고 있을 때에도, 그 피어는 정책 규칙에 따라 피어 서버로서 동작하지 않기로 선택할 수 있다. 이러한 정책 규칙은 컴퓨터 시스템의 처리 능력(processing power)을 고려할 수 있다. 예를 들어, 강력한(powerful) 데스크톱 또는 서버 클래스 컴퓨터는 더 많은 피어들, 예를 들어, 랩톱 컴퓨터 시스템(106)과 같은 랩톱 컴퓨터에 대해 피어 서버로서 동작하도록 허락하는 정책 규칙을 포함할 수 있다. 다른 규칙들은 사용가능한 기계 리소스의 양과 관련될 수 있다. 예를 들어, 정책 규칙은 컴퓨터 시스템 리소스의 10% 이상이 사용될 때, 컴퓨터 시스템의 피어 서버로서 동작하는 능력을 제한할 수 있다. 시스템 리소스는 시스템의 CPU 로드 및 디스크 입/출력 로드 중 더 큰 것의 측정값일 수 있다. 또한, 랩톱 컴퓨터는, 랩톱 컴퓨터 시스템(106)의 동작 상태에 기초하여, 랩톱 컴퓨터 시스템(106)이 피어 서버로서 동작 하는 피어의 수를 조정하는 정책을 참조할 수 있다. 예를 들어, 랩톱 컴퓨터 시스템(106)이 도킹 스테이션과 연결되면, 랩톱 컴퓨터는 도킹 스테이션과 연결되지 않았을 때보다 더 많은 피어들을 상대하도록 구성될 수 있다. 더 나아가, 랩톱 컴퓨터 시스템(106)이 유선 연결을 통해 연결되었을 때, 랩톱 컴퓨터 시스템(106)은 무선 방식으로 피어 컴퓨터들과 연결되었을 때보다 더 많은 피어들을 상대할 수 있다. 또한 다른 예에서, 랩톱 컴퓨터 시스템(106)과 연결되도록 허락되는 피어의 수는 배터리 레벨과 관련된 정책에 의해 정의될 수 있다. 예를 들어, 랩톱이 배터리로 실행되고 있고 전력이 50% 보다 적을 때, 랩톱 컴퓨터 시스템(106)은 더 이상의 피어 컴퓨터 연결을 허락하지 않는 정책을 따를 수 있다.When deciding whether a peer will act as a peer server, the peer may refer to various policy rules. Additionally, even when a peer has an available file, that peer may choose not to act as a peer server according to policy rules. Such policy rules may take into account the processing power of a computer system. For example, a powerful desktop or server class computer may include policy rules that allow it to act as a peer server for more peers, eg, a laptop computer such as laptop computer system 106. Other rules may relate to the amount of available machine resources. For example, policy rules may limit the ability to act as a peer server of a computer system when more than 10% of the computer system resources are used. System resources may be a measure of the greater of the system's CPU load and disk input / output load. The laptop computer may also refer to a policy that adjusts the number of peers for which the laptop computer system 106 acts as a peer server, based on the operating state of the laptop computer system 106. For example, if laptop computer system 106 is connected with a docking station, the laptop computer may be configured to face more peers than when not connected with the docking station. Furthermore, when laptop computer system 106 is connected via a wired connection, laptop computer system 106 may encounter more peers than when connected with peer computers in a wireless manner. Also in another example, the number of peers allowed to connect with laptop computer system 106 may be defined by a policy related to battery level. For example, when the laptop is running on battery and the power is less than 50%, the laptop computer system 106 may follow a policy of disallowing further peer computer connections.

피어가 피어 서버로서 동작하기로 결정하면, 피어 서버는 다시 컴퓨터 시스템으로 메시지를 송신하며, 이는 컴퓨터 시스템에 의해 수신(단계 208)된다.If the peer decides to act as a peer server, the peer server sends a message back to the computer system, which is received by the computer system (step 208).

컴퓨터 시스템이 피어 목록의 잠재적 피어 서버로부터, 다운로드 가능한 파일 또는 파일의 부분을 잠재적 피어 서버가 가지고 있음을 나타내는 메시지를 수신한 후, 컴퓨터 시스템은 파일 또는 파일의 부분을 다운로드(단계 210)한다. 다운로드는 임의의 적절한 방식으로 이루어질 수 있다. 특히, 여기에 암시된 바와 같이, 컴퓨터 시스템은 전체 파일이 아닌 파일의 부분을 다운로드할 수 있다. 파일의 다른 부분들은 다른 피어 서버로부터 획득될 수 있다. 몇몇 환경에서, 이것은 대용량 파일이 다운로드되는 속도를 증가시킬 수 있다.After the computer system receives a message from a potential peer server in the peer list that indicates that the potential peer server has a downloadable file or portion of a file, the computer system downloads (step 210) the file or portion of the file. The download can be in any suitable manner. In particular, as implied herein, a computer system may download a portion of a file rather than an entire file. Different parts of the file may be obtained from other peer servers. In some circumstances, this may increase the speed at which large files are downloaded.

한 실시예에서, 방법(200)은 파일 또는 파일의 부분을 검증하는 것(단계 212)을 더 포함한다. 검증은 파일이 정확한 파일이고, 파일이 악성으로 변경되지 않았고/거나 파일이 손상되지 않았음을 확인한다. 이것은, 예를 들어, 파일 또는 파일의 부분의 해시를 계산함으로써 이루어질 수 있다. 계산된 해시 값이 기대되는 해시 값에 부합하지 않으면, 컴퓨터 시스템은 파일 또는 파일의 부분을 폐기한다. 추가적으로, 컴퓨터 시스템은 파일을 제공한 피어 서버를, 피어 서버가 용의자(suspect)라는 것을 나타내는 격리 목록(quarantine list)에 놓을 수 있다. 대안적인 실시예에서, 피어 서버는 피어 목록 전체로부터 제거될 수 있다. 다음, 컴퓨터 시스템은 파일을 피어 목록의 다른 피어 또는 중앙 파일 서버로부터 가져오기 위한 시도를 할 수 있다. 컴퓨터 시스템은 또한 파일에 문제가 있음을 파일을 제공한 피어 서버에 알릴 수 있다. 이것은 피어 서버가 파일을 폐기하도록 한다. 다른 컴퓨터 시스템들 또한 파일의 의심되는 성질에 대해 통지될 수 있다.In one embodiment, the method 200 further includes verifying the file or portion of the file (step 212). Validation confirms that the file is the correct file, the file has not been changed to malicious and / or the file is not corrupted. This can be done, for example, by calculating a hash of a file or part of a file. If the calculated hash value does not match the expected hash value, the computer system discards the file or part of the file. In addition, the computer system may place the peer server that provided the file in a quarantine list indicating that the peer server is a suspect. In alternative embodiments, the peer server may be removed from the entire peer list. The computer system can then attempt to get the file from another peer in the peer list or from a central file server. The computer system can also inform the peer server that provided the file that there is a problem with the file. This allows the peer server to discard the file. Other computer systems may also be informed about the suspected nature of the file.

이제 도 3을 참조하면, 잠재적 피어 서버의 관점에서 파일을 캐싱 및 공유하기 위한 방법(300)을 보여주는 실시예가 도시된다. 도 3에 도시된 방법은 네트워크의 컴퓨터 시스템에서 실행될 수 있으며, 여기서 네트워크는 네트워크로 연결된 하나 이상의 컴퓨터를 포함한다.Referring now to FIG. 3, an embodiment is shown that illustrates a method 300 for caching and sharing files in terms of potential peer servers. The method shown in FIG. 3 may be implemented in a computer system of a network, where the network includes one or more computers connected by a network.

방법(300)은 컴퓨터 시스템이 피어로서 사용가능하다는 메시지를 송신하는 동작(단계 302)을 포함한다. 컴퓨터 시스템이 피어로서 사용가능하다는 메시지를 송신하는 것(단계 302)은, 컴퓨터 시스템이 공유할 파일을 가지고 있을 때, 서브넷 상의 멀티캐스트를 이용하여 수행될 수 있다. 대안적인 실시예에서, 컴퓨터 시스템이 피어로서 사용가능하다는 메시지를 송신하는 것은, 피어 컴퓨터를 찾는 시스템으로부터 통신 유도 요청을 수신한 것에 대한 응답으로, 멀티캐스트 또는 유니캐 스트를 이용하여 수행될 수 있다. 컴퓨터 시스템이 피어로서 사용가능하다는 메시지를 송신하는 것(단계 302)이 통신 유도 요청을 수신한 것에 대한 응답으로 수행될 때, 컴퓨터 시스템은 도 2의 기술과 함께 상술된 절차를 사용하여 무작위 지연(random delay)을 이용하여 응답할 수 있다.The method 300 includes transmitting a message that a computer system is available as a peer (step 302). Sending a message that the computer system is available as a peer (step 302) may be performed using multicast on the subnet when the computer system has a file to share. In an alternate embodiment, sending a message that the computer system is available as a peer may be performed using multicast or unicast in response to receiving a request to direct communication from a system seeking a peer computer. . When sending a message that the computer system is available as a peer (step 302) is performed in response to receiving a communication induction request, the computer system uses the procedure described above in conjunction with the technique of FIG. random delay) to respond.

방법(300)은 또한, 컴퓨터 시스템이 파일 또는 파일의 부분을 가지고 있는지 발견하기 위한 요청을 수신하는 동작을 포함한다(단계 304). 수신된 메시지는 자신의 피어 목록에 컴퓨터 시스템을 포함하는 시스템으로부터의 유니캐스트 요청일 수 있다. 대안적인 실시예에서, 요청은 상술된 것과 같이 중복된 유니캐스트일 수 있다. 파일에 대한 보안이 요구되지 않을 때 멀티캐스트 요청 또한 사용될 수 있다.The method 300 also includes receiving a request to discover if the computer system has a file or a portion of a file (step 304). The received message may be a unicast request from a system that includes a computer system in its peer list. In alternative embodiments, the request may be a duplicate unicast as described above. Multicast requests can also be used when no security is required for the file.

방법(300)은 또한, 컴퓨터 시스템이 파일 또는 파일의 부분을 가지고 있다는 메시지를 송신하는 동작을 포함한다(단계 304). 컴퓨터 시스템이 파일 또는 파일의 부분을 가지고 있다는 메시지를 송신하는 것(단계 304)은 동적 옵트-인/옵트-아웃 규칙에 기초하여 수행된다. 예를 들어 한 실시예에서, 정책 규칙은 컴퓨터 시스템의 처리 능력을 고려할 수 있다. 강력한 데스크톱 또는 서버 클래스 컴퓨터는 다른 덜 강력한 시스템들보다 많은 피어들에게 피어로서 동작할 수 있도록 해주는 정책 규칙을 가질 수 있다. 다른 규칙들은 사용가능한 기계 리소스의 양과 관련될 수 있다. 예를 들어, 정책 규칙은 10% 이상의 컴퓨터 시스템 리소스가 사용될 때, 피어 서버로서 동작하는 컴퓨터 시스템의 능력을 제한할 수 있다. 시스템 리소스는 시스템의 CPU 로드 및 디스크 입/출력 로드 중 더 큰 것의 측정값일 수 있다. 랩톱 컴퓨터와 관련된 대안적인 실시예에서, 랩톱 컴퓨터는, 랩톱 컴퓨터 시스템(106)의 동작 상태에 기초하여, 랩톱 컴퓨터 시스템(106)이 피어 서버로서 동작하는 피어의 수를 조정하는 정책을 참조할 수 있다. 예를 들어, 랩톱 컴퓨터 시스템(106)이 도킹 스테이션과 연결되면, 랩톱 컴퓨터는 도킹 스테이션과 연결되지 않았을 때보다 더 많은 피어들을 상대하도록 구성될 수 있다. 더 나아가, 랩톱 컴퓨터 시스템(106)이 유선 연결을 통해 연결되었을 때, 랩톱 컴퓨터 시스템(106)은 무선 방식으로 피어 컴퓨터들과 연결되었을 때보다 더 많은 피어들을 상대할 수 있다. 또한 다른 예에서, 랩톱 컴퓨터 시스템(106)과 연결되도록 허락되는 피어의 수는 배터리 레벨과 관련된 정책에 의해 정의될 수 있다. 예를 들어, 랩톱이 배터리로 실행되고 있고 전력이 50% 보다 적을 때, 랩톱 컴퓨터 시스템(106)은 더 이상의 피어 컴퓨터 연결을 허락하지 않는 정책을 따를 수 있다.The method 300 also includes transmitting a message that the computer system has a file or a portion of a file (step 304). Sending a message that the computer system has a file or part of a file (step 304) is performed based on dynamic opt-in / opt-out rules. For example, in one embodiment, policy rules may take into account the processing power of a computer system. Powerful desktop or server class computers can have policy rules that allow them to act as peers to more peers than other less powerful systems. Other rules may relate to the amount of available machine resources. For example, policy rules may limit the ability of a computer system to act as a peer server when more than 10% of computer system resources are used. System resources may be a measure of the greater of the system's CPU load and disk input / output load. In an alternative embodiment associated with a laptop computer, the laptop computer may refer to a policy that adjusts the number of peers for which the laptop computer system 106 acts as a peer server based on the operating state of the laptop computer system 106. have. For example, if laptop computer system 106 is connected with a docking station, the laptop computer may be configured to face more peers than when not connected with the docking station. Furthermore, when laptop computer system 106 is connected via a wired connection, laptop computer system 106 may encounter more peers than when connected with peer computers in a wireless manner. Also in another example, the number of peers allowed to connect with laptop computer system 106 may be defined by a policy related to battery level. For example, when the laptop is running on battery and the power is less than 50%, the laptop computer system 106 may follow a policy of disallowing further peer computer connections.

방법(300)은 또한, 파일을 다운로드하기 위한 요청을 수신하는 동작을 포함한다(단계 308). 더 나아가, 방법(300)은 요청하는 시스템으로 파일을 송신하는 동작을 포함한다(단계 310). 이것은 네트워크의 다른 시스템들에게 피어 서버로 동작하는 컴퓨터 시스템에 의해 수행될 수 있다.The method 300 also includes receiving a request to download a file (step 308). Further, the method 300 includes transmitting a file to the requesting system (step 310). This may be performed by a computer system acting as a peer server to other systems in the network.

이제 도 4를 참조하면, 다양한 메시징 포맷을 포함하는, 파일을 캐싱 및 공유하기 위한 방법(400)을 나타내는 실시예가 도시된다. 도 4에 도시된 방법은 네트워크로 연결된 하나 이상의 컴퓨터를 포함하는 네트워크의 컴퓨터 시스템에서 실행될 수 있다.Referring now to FIG. 4, an embodiment is shown that illustrates a method 400 for caching and sharing files, including various messaging formats. The method shown in FIG. 4 may be implemented in a computer system of a network including one or more computers connected by a network.

방법은 컴퓨터 시스템이 잠재적 피어를 발견하기 위해 서브넷의 컴퓨터 시스 템들에게 브로드캐스트 신호를 송신하는 동작을 포함한다(단계 402). 브로드캐스트 신호는 미리 결정된 수의 응답에 대한 요구를 나타낼 수 있다. 대안적인 실시예에서, 브로드캐스트는 다양한 매개변수를 포함하여 컴퓨터 시스템이 브로드캐스트 신호에 대한 임의의 응답을 산정하도록 할 수 있다. 예를 들어, 매개변수들은 응답의 타이밍(timing), 응답하는 시스템의 하드웨어 특성의 평가 등을 허락할 수 있다.The method includes the computer system sending a broadcast signal to computer systems in the subnet to find a potential peer (step 402). The broadcast signal may indicate a request for a predetermined number of responses. In alternative embodiments, the broadcast may include various parameters to allow the computer system to calculate any response to the broadcast signal. For example, the parameters may allow for timing of the response, evaluation of the hardware characteristics of the responding system, and the like.

다음, 컴퓨터 시스템은 서브넷의 컴퓨터 중 하나로부터 신호를 수신한다(단계 404). 신호는 제공될 수 있는 파일의 목록, 신호를 송신하는 시스템의 특성 등을 포함할 수 있다. 신호는 멀티캐스트 신호, 또는 몇몇 경우에서, 유니캐스트 신호일 수 있다.The computer system then receives a signal from one of the computers in the subnet (step 404). The signal may include a list of files that may be provided, characteristics of the system transmitting the signal, and the like. The signal may be a multicast signal, or in some cases a unicast signal.

컴퓨터 시스템은 서브넷의 컴퓨터 중 상기 하나를 피어 목록에 추가한다(단계 406). 피어 목록은 미리 결정된 수 이하의 피어들만을 포함한다. 예를 들어, 피어 목록은 100개 이하의 피어만을 포함할 수 있다. 이것은 다운로드하기 위한 파일 또는 파일의 부분을 찾는 데 필요한 프로세싱의 양 및 네트워크 사용량을 컴퓨터 시스템이 제한할 수 있도록 한다.The computer system adds the one of the computers in the subnet to the peer list (step 406). The peer list includes only peers up to a predetermined number. For example, a peer list may contain only 100 peers or less. This allows the computer system to limit the amount of processing and network usage required to find a file or portion of a file for download.

컴퓨터 시스템은 컴퓨터 시스템 중 하나가 다운로드 가능한 파일 또는 파일의 부분을 갖고 있는지 발견하기 위해, 서브넷의 컴퓨터 시스템 중 하나에 유니캐스트 신호를 송신한다(단계 408). 컴퓨터 시스템은 다른 컴퓨터 시스템들에 대해서도 이 과정을 반복하여 파일 또는 파일의 부분이 위치한 곳을 찾을 수 있다. 특히, 유니캐스트 신호들은 중복되어, 동일한 컴퓨터 시스템으로부터 동시에 유니캐 스트가 발생할 수 있다.The computer system sends a unicast signal to one of the computer systems in the subnet to discover if one of the computer systems has a downloadable file or a portion of the file (step 408). The computer system can repeat this process for other computer systems to find where the file or part of the file is located. In particular, unicast signals may overlap, resulting in simultaneous unicast from the same computer system.

컴퓨터 시스템은 서브넷의 컴퓨터 시스템 중 하나로부터, 서브넷의 컴퓨터 시스템 중 하나가 다운로드 가능한 파일 또는 파일의 부분을 가지고 있음을 나타내는 유니캐스트 신호를 수신한다(단계 410).The computer system receives a unicast signal from one of the computer systems in the subnet, indicating that one of the computer systems in the subnet has a downloadable file or portion of a file (step 410).

다음, 컴퓨터 시스템은 서브넷의 컴퓨터 시스템 중 하나로부터 파일 또는 파일의 부분을 다운로드할 수 있다(단계 412).The computer system can then download the file or portion of the file from one of the computer systems in the subnet (step 412).

당업자들은 본 발명이 개인용 컴퓨터, 핸드-헬드 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 또는 프로그램가능한 가전 제품, 네트워크 PC, 미니 컴퓨터, 메인프레임 컴퓨터 등을 포함하는 다양한 유형의 컴퓨터 시스템 구성을 통해 네트워크 컴퓨팅 환경에서 실행될 수 있음을 이해할 것이다. 본 발명은 또한 (배선 연결(hardwired link), 무선 연결, 또는 배선 및 무선연결의 조합에 의해) 통신 네트워크를 통해 연결되어 있는 로컬 및 원격 처리 장치들에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서 실행될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 장치 둘 다에 위치할 수 있다.Those skilled in the art will appreciate that the present invention provides a network computing environment through various types of computer system configurations, including personal computers, hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, mini computers, mainframe computers, and the like. It will be appreciated that it can be run from. The invention may also be practiced in distributed computing environments where tasks are performed by local and remote processing devices that are linked through a communications network (by hardwired link, wireless connection, or a combination of wiring and wireless connections). have. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.

본 발명의 범위 내에 있는 실시예들은 또한, 컴퓨터 실행가능 명령어들을 지니거나 저장하기 위한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 임의의 사용가능한 매체일 수 있다. 예로서, 이러한 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 기타 광학 디스크 저장소, 자기 디스크 저장소 또는 기타 자기 저장 장치, 또는 필요한 프로그램 코드 수단을 컴퓨터 실행가능 명령어 또는 데이터 구조의 형태로 지 니거나 저장하는 데 사용될 수 있고, 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 기타 임의의 매체들을 포함하지만, 이에 제한되지는 않는다. 네트워크 또는 다른 통신 연결(배선, 무선, 또는 배선 또는 무선의 조합)을 통해 정보가 컴퓨터에 전송될 때, 컴퓨터는 적절하게 이 연결을 컴퓨터 판독가능 매체로 본다. 따라서, 모든 이러한 연결은 적절하게 컴퓨터 판독가능 매체라 불린다. 상기의 조합 또한 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다. 컴퓨터 실행가능 명령어는, 예를 들어, 범용 컴퓨터, 특수 목적 컴퓨터, 또는 특수 목적 프로세싱 장치로 하여금 특정 기능 또는 기능들의 그룹을 수행하도록 하는 명령어 및 데이터를 포함한다.Embodiments within the scope of the present invention also include a computer readable medium for carrying or storing computer executable instructions. Computer readable media can be any available media that can be accessed by a general purpose or special purpose computer. By way of example, such computer-readable media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage device, or necessary program code means in the form of computer executable instructions or data structures. Including, but not limited to, any other media that may be used to store or store, and accessible by a general purpose or special purpose computer. When information is transmitted to a computer via a network or other communication connection (wired, wireless, or a combination of wires or wireless), the computer properly views this connection as a computer readable medium. Thus, all such connections are suitably referred to as computer readable media. Combinations of the above should also be included within the scope of computer-readable media. Computer-executable instructions include, for example, instructions and data that cause a general purpose computer, special purpose computer, or special purpose processing device to perform a particular function or group of functions.

본 발명이 구조적 특징 및/또는 방법론적 동작들에 있어 구체적인 언어로 설명되었지만, 첨부된 청구의 범위에 정의된 본 발명이 반드시 상술된 특정한 특징 또는 동작들에 제한되는 것이 아님을 이해해야 한다. 오히려, 상술된 특정한 특징 및 동작들은 청구의 범위를 구현하기 위한 예시적인 형태로서 개시된 것이다.Although the invention has been described in specific language in terms of structural features and / or methodological acts, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms for implementing the claims.

본 발명은 본 발명의 정신 또는 본질적 특성들을 벗어나지 않고 다른 특정 형태들에 구현될 수 있다. 설명된 실시예들은 모든 관점에서 단지 예시적이고 제한적이지 않은 것으로 고려되어야 한다. 따라서, 본 발명의 범위는 앞선 설명보다는 첨부된 청구의 범위에 의해 나타난다. 청구항의 등가(equivalency)의 의미 및 범위 내의 모든 변경들은 청구의 범위 내에 포함되어야 한다.The invention can be embodied in other specific forms without departing from the spirit or essential characteristics of the invention. The described embodiments are to be considered in all respects only as illustrative and not restrictive. Accordingly, the scope of the invention is indicated by the appended claims rather than the foregoing description. All changes that come within the meaning and range of equivalency of the claims are to be embraced within their scope.

Claims (20)

네트워크로 연결된 하나 이상의 컴퓨터를 포함하는 컴퓨터 네트워크 내의 컴퓨터 시스템에서 파일을 캐싱 및 공유하기 위한 방법으로서,A method for caching and sharing files in a computer system in a computer network including one or more computers connected over a network, the method comprising: 상기 네트워크로 연결된 하나 이상의 컴퓨터 중에서 잠재적 피어 서버(potential peer servers)의 목록을 포함하는 피어 목록을 구축하는 단계- 상기 피어 목록은 미리 결정된 개수(predetermined number) 이하의 잠재적 피어 서버를 포함함-와,Constructing a peer list comprising a list of potential peer servers among the one or more computers connected to the network, the peer list comprising a potential peer server of less than a predetermined number; 파일 또는 파일의 일부에 대해 상기 피어 목록의 잠재적 피어 서버에 쿼리(query)하는 단계와,Querying a potential peer server in the peer list for a file or part of a file, 상기 피어 목록의 잠재적 피어 서버로부터, 상기 잠재적 피어 서버가 다운로드 가능한 파일 또는 파일의 일부를 가지고 있다는 메시지를 수신하는 단계와,Receiving a message from a potential peer server in the peer list that the potential peer server has a downloadable file or a portion of a file; 상기 잠재적 피어 서버로부터 상기 파일 또는 파일의 일부를 다운로드하는 단계를 포함하되,Downloading the file or portion of a file from the potential peer server, 상기 피어 목록을 구축하는 단계는,The step of building the peer list, (a) 요구되는 잠재적 피어 서버의 개수에 대한 표시(indication)를 포함하는 의뢰 요구(solicitation request)를 하나 이상의 컴퓨터에 송신하는 단계와,(a) sending a solicitation request to one or more computers including an indication of the number of potential peer servers required; (b) 상기 컴퓨터로부터 메시지 응답을 수신하는 단계- 상기 컴퓨터는 다른 컴퓨터로부터의 멀티캐스트 응답을 들으면서(listening) 무작위의 시간 간격(random interval of time)을 대기하고, 상기 컴퓨터는 상기 다른 컴퓨터로부터의 응답을 검출하여 상기 다른 컴퓨터로부터의 응답의 개수를 판정하며, 상기 컴퓨터는 상기 다른 컴퓨터로부터, 요구되는 잠재적 피어 서버의 개수에 대응하는 응답의 개수를 검출하지 못한 경우에만 응답을 송신하고, 상기 컴퓨터는 상기 다른 컴퓨터로부터, 요구되는 잠재적 피어 서버의 개수에 표시된 응답의 개수를 검출한 경우에는 응답을 송신하지 않음 -와,(b) receiving a message response from the computer, the computer waiting for a random interval of time listening to a multicast response from another computer, and the computer waiting from the other computer. Detects a response to determine the number of responses from the other computer, the computer sends a response only if the computer does not detect a number of responses corresponding to the required number of potential peer servers, and the computer Does not send a response from the other computer if it detects the number of responses indicated in the number of potential peer servers required -and, (c) 상기 컴퓨터로부터 수신된 메시지 응답에 기초하여, 응답을 전송한 컴퓨터를 상기 미리 결정된 개수까지 상기 피어 목록에 상기 잠재적 피어 서버로서 추가하는 단계- 상기 잠재적 피어 서버는 상기 컴퓨터 시스템에 대한 상기 잠재적 피어 서버의 논리적 근접성(logical closeness)에 따라 상기 피어 목록에 추가됨 -와,(c) based on the message response received from the computer, adding, as the potential peer server to the peer list, the computer that sent the response up to the predetermined number, wherein the potential peer server is the potential for the computer system. Added to the peer list according to the logical closeness of the peer server; (d) 상기 피어 목록으로부터 잠재적 피어 서버를 제거하는 단계와,(d) removing a potential peer server from the peer list; (e) 상기 피어 목록으로부터 미리 결정된 개수의 잠재적 피어 서버가 제거된 경우, 단계(a) 내지 단계(c)를 반복하는 단계를 포함하는(e) repeating steps (a) to (c) if a predetermined number of potential peer servers have been removed from the peer list. 파일 캐싱 및 공유 방법.File caching and sharing methods. 제1항에 있어서,The method of claim 1, 무작위의 시간 간격을 대기하는 상기 컴퓨터는, 응답 전에 대기하는 시간의 양을 결정하기 위해 DELAY=MAX_DELAY*Log(c*X+1)/Log(C+1)로 계산되는 대수적 무작위 지연(logarithmic random delay)을 사용하되, DELAY는 응답 전 지연이고, MAX_DELAY는 응답을 수신하는데 주어진 최대 시간의 양이며, X는 난수이고, C는 임의의 수인The computer waiting for a random time interval is a logarithmic random, calculated as DELAY = MAX_DELAY * Log (c * X + 1) / Log (C + 1) to determine the amount of time to wait before a response. delay), where DELAY is the delay before the response, MAX_DELAY is the maximum amount of time given to receive the response, X is a random number, and C is any number 파일 캐싱 및 공유 방법.File caching and sharing methods. 제1항에 있어서,The method of claim 1, 상기 송신하는 단계 및 수신하는 단계는 동일한 제 1 서브넷 상의 컴퓨터로 이루어지는 The transmitting and receiving steps consist of a computer on the same first subnet. 파일 캐싱 및 공유 방법.File caching and sharing methods. 제3항에 있어서,The method of claim 3, 상기 제 1 서브넷과의 접속을 해제하고, 제 2 서브넷과의 접속을 수립하며, 의뢰 요구를 송신함으로써 제2 피어 목록을 구축하는 단계와, Releasing a connection with the first subnet, establishing a connection with a second subnet, and sending a request request to establish a second peer list; 상기 제2 서브넷의 컴퓨터로부터 응답을 수신하는 단계Receiving a response from a computer on the second subnet 를 더 포함하는 파일 캐싱 및 공유 방법.File caching and sharing method further comprising. 제1항에 있어서,The method of claim 1, 상기 피어 목록을 구축하는 단계는,The step of building the peer list, 상기 컴퓨터로부터 멀티캐스트 패킷과 함께 자기-알림(self-announcement)을 수신하는 단계 - 상기 자기-알림은 상기 컴퓨터가 상기 네트워크의 다른 컴퓨터에게 제공될 수 있는 파일을 가지고 있다는 표시를 포함함 - 와,Receiving a self-announcement with a multicast packet from the computer, the self-announcement comprising an indication that the computer has a file that can be provided to other computers in the network; and 상기 컴퓨터를 상기 피어 목록에 추가하는 단계Adding the computer to the peer list 를 포함하는 파일 캐싱 및 공유 방법. File caching and sharing method that includes. 제1항에 있어서,The method of claim 1, 상기 의뢰 요구는 트러스트 그룹(trust group)의 식별을 포함하는 The request for request includes the identification of a trust group. 파일 캐싱 및 공유 방법.File caching and sharing methods. 제1항에 있어서,The method of claim 1, 상기 파일 또는 파일의 일부가 손상되어 있음을 판정하고, 상기 파일 또는 파일의 일부가 손상되어 있음을 판정한 것에 대한 응답으로 상기 파일 또는 파일의 일부를 중앙 서버로부터 다운로드하는 단계를 더 포함하는 Determining that the file or part of the file is damaged and downloading the file or part of the file from a central server in response to determining that the file or part of the file is damaged. 파일 캐싱 및 공유 방법.File caching and sharing methods. 제7항에 있어서,The method of claim 7, wherein 상기 파일 또는 파일의 일부가 손상되어 있음을 판정하는 단계는 해시 값을 참조하는 단계를 포함하는 Determining that the file or part of the file is corrupt includes referencing a hash value 파일 캐싱 및 공유 방법.File caching and sharing methods. 제1항에 있어서,The method of claim 1, 상기 파일 또는 파일의 일부가 상기 피어 목록의 어떠한 컴퓨터로부터도 제공될 수 없음을 판정하고, 상기 파일 또는 파일의 일부가 상기 피어 목록의 어떠한 컴퓨터로부터도 제공될 수 없음을 판정한 것에 대한 응답으로, 상기 파일 또는 파일의 일부를 중앙 서버로부터 다운로드하는 단계를 더 포함하는 In response to determining that the file or part of the file cannot be provided from any computer in the peer list, and in response to determining that the file or part of the file cannot be provided from any computer in the peer list, Downloading the file or portion of a file from a central server further; 파일 캐싱 및 공유 방법.File caching and sharing methods. 제1항에 있어서,The method of claim 1, 파일 또는 파일의 일부에 대해 상기 피어 목록의 컴퓨터에 쿼리하기 전에 상기 피어 목록의 컴퓨터를 인증하는 단계를 더 포함하는 Authenticating a computer in the peer list before querying a computer in the peer list for a file or portion of a file; 파일 캐싱 및 공유 방법.File caching and sharing methods. 네트워크로 연결된 하나 이상의 컴퓨터를 포함하는 컴퓨터 네트워크 내의 제1 컴퓨터 시스템에서 파일을 캐싱 및 공유하기 위한 방법으로서, A method for caching and sharing files in a first computer system in a computer network including one or more computers connected over a network, the method comprising: 의뢰 요구(solicitation request)를 수신하는 단계- 상기 의뢰 요구는 하나 이상의 잠재적 피어로 전송되고 요구되는 잠재적 피어의 개수에 대한 표시(indication)를 포함함 -와,Receiving a solicitation request, the solicitation request including an indication of the number of potential peers being sent and requested to one or more potential peers; and 다른 잠재적 피어로부터의 멀티캐스트 응답을 들으면서 무작위의 시간 간격을 대기하고, 상기 다른 잠재적 피어로부터의 응답을 검출하여 상기 다른 잠재적 피어로부터의 응답의 개수를 판정하며, 요구되는 잠재적 피어의 개수에 대응하는 응답의 개수가 검출되지 않은 경우에만 상기 의뢰 요구에 대해 응답을 송신하고, 요구되는 잠재적 피어의 개수에 표시된 만큼 다른 잠재적 피어로부터의 응답의 개수가 검출된 경우에는 응답을 송신하지 않는 단계와,Waiting for a random time interval while listening to multicast responses from other potential peers, detecting responses from the other potential peers to determine the number of responses from the other potential peers, and corresponding to the number of potential peers required Transmitting a response only to the request request if the number of responses is not detected, and not transmitting a response from the other potential peers as indicated in the number of potential peers required; 상기 무작위의 시간 간격이 지난 후에 상기 요구되는 잠재적 피어의 개수에 대응하는 응답의 개수가 검출되지 않았음을 검출하고, 그 결과로서, 상기 제1 컴퓨터 시스템이 잠재적 피어로서 이용가능하다는 메시지를 상기 제1 컴퓨터 시스템과 동일한 서브넷 상의 하나 이상의 컴퓨터 시스템에 전송하는 단계와,After the random time interval has passed, the number of responses corresponding to the required number of potential peers has not been detected and, as a result, the message indicating that the first computer system is available as a potential peer is received. 1 transmitting to one or more computer systems on the same subnet as the computer system, 상기 제1 컴퓨터 시스템이 잠재적 피어로서 이용가능하다는 메시지를 상기 제1 컴퓨터 시스템과 동일한 서브넷 상의 하나 이상의 컴퓨터 시스템에 전송한 것의 결과로서, 상기 제1 컴퓨터 시스템이 파일 또는 파일의 일부를 가지고 있는지를 알아내기 위한 요청을 요청 시스템으로부터 수신하는 단계와,As a result of sending a message to the one or more computer systems on the same subnet as the first computer system that the first computer system is available as a potential peer, whether the first computer system has a file or part of a file Receiving a request from a requesting system for making a bet, 상기 제1 컴퓨터 시스템이 파일 또는 파일의 일부를 가지고 있는지를 알아내기 위한 요청에 대한 응답으로, 상기 제1 컴퓨터 시스템이 파일 또는 파일의 일부를 가지고 있다는 메시지를 상기 요청 시스템에 전송하는 단계와,In response to the request to find out whether the first computer system has a file or part of a file, sending a message to the requesting system that the first computer system has a file or part of a file; 상기 제1 컴퓨터 시스템이 파일 또는 파일의 일부를 가지고 있다는 메시지를 전송한 것의 결과로서, 상기 파일을 다운로드하기 위한 요청을 상기 요청 시스템으로부터 수신하는 단계와,Receiving a request from the requesting system to download the file as a result of sending a message that the first computer system has a file or part of a file; 상기 파일을 다운로드하기 위한 요청을 수신하는 것에 대한 응답으로, 상기 파일을 상기 요청 시스템으로 전송하는 단계를 포함하는In response to receiving the request to download the file, transmitting the file to the requesting system. 파일 캐싱 및 공유 방법.File caching and sharing methods. 네트워크로 연결된 하나 이상의 컴퓨터를 포함하는 컴퓨터 네트워크 내의 컴퓨터 시스템에서 파일을 캐싱 및 공유하기 위한 방법으로서, A method for caching and sharing files in a computer system in a computer network including one or more computers connected over a network, the method comprising: (a) 잠재적 피어를 발견하기 위해 서브넷의 컴퓨터 시스템에게 브로드캐스트 신호를 송신하는 단계- 상기 브로드캐스트 신호는 요구되는 잠재적 피어의 개수에 대한 표시를 포함함 -와,(a) transmitting a broadcast signal to a computer system on the subnet to find a potential peer, the broadcast signal including an indication of the number of potential peers required; (b) 상기 서브넷의 컴퓨터 시스템 중 하나로부터 응답 신호를 수신하는 단계- 상기 컴퓨터 시스템 중 하나는 다른 컴퓨터 시스템으로부터의 멀티캐스트 응답을 들으면서 무작위의 시간 간격을 대기하고, 상기 컴퓨터 시스템 중 하나는 상기 다른 컴퓨터 시스템으로부터의 응답을 검출하여 다른 컴퓨터 시스템으로부터의 응답의 개수를 판정하며, 상기 컴퓨터 시스템 중 하나는 상기 요구되는 잠재적 피어의 개수에 대응하는 다른 컴퓨터 시스템으로부터의 응답의 개수를 검출하지 않은 경우에만 상기 응답 신호를 송신하고, 다른 컴퓨터 시스템으로부터 상기 요구되는 잠재적 피어의 개수에 표시된 응답의 개수를 검출한 경우에는 응답 신호를 송신하지 않음 -와,(b) receiving a response signal from one of the computer systems in the subnet, wherein one of the computer systems waits a random time interval while listening to a multicast response from another computer system, and one of the computer systems Detects responses from computer systems to determine the number of responses from other computer systems, and one of the computer systems only detects the number of responses from other computer systems corresponding to the required number of potential peers. Transmit the response signal and do not transmit the response signal if it detects the number of responses indicated in the required number of potential peers from another computer system; (c) 상기 컴퓨터 시스템 중 하나의 논리적 근접성에 기초하여 상기 서브넷의 컴퓨터 시스템 중 상기 하나를 피어 목록에 선택적으로 추가하는 단계 -상기 피어 목록은 미리 결정된 개수 이하의 잠재적 피어를 포함함- 와,(c) optionally adding the one of the computer systems of the subnet to a peer list based on a logical proximity of one of the computer systems, the peer list comprising up to a predetermined number of potential peers; and (d) 상기 피어 목록으로부터 잠재적 피어를 제거하는 단계와,(d) removing potential peers from the peer list; (e) 미리 결정된 개수의 잠재적 피어가 상기 피어 목록으로부터 제거된 경우 상기 서브넷의 컴퓨터 시스템을 상기 피어 목록에 선택적으로 추가하는 단계와,(e) optionally adding a computer system of the subnet to the peer list when a predetermined number of potential peers have been removed from the peer list; 상기 컴퓨터 시스템 중 상기 하나가 다운로드 가능한 파일 또는 파일의 일부를 가지고 있는지 알아내기 위해 상기 서브넷의 컴퓨터 시스템 중 상기 하나에 유니캐스트 신호를 송신하는 단계와,Transmitting a unicast signal to the one of the computer systems of the subnet to determine if the one of the computer systems has a downloadable file or a portion of the file; 상기 서브넷의 컴퓨터 시스템 중 상기 하나로부터, 상기 서브넷의 컴퓨터 시스템 중 상기 하나가 다운로드 가능한 상기 파일 또는 파일의 일부를 가지고 있음을 나타내는 유니캐스트 신호를 수신하는 단계와,Receiving from the one of the computer systems of the subnet a unicast signal indicating that the one of the computer systems of the subnet has the downloadable file or a portion of the file; 상기 서브넷의 컴퓨터 시스템 중 상기 하나로부터 상기 파일 또는 파일의 일부를 다운로드하는 단계Downloading the file or portion of a file from the one of the computer systems in the subnet 를 포함하는 파일 캐싱 및 공유 방법.File caching and sharing method that includes. 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete
KR1020087003133A 2005-08-30 2006-08-03 Distributed caching of files in a network KR101322947B1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/215,621 US7512943B2 (en) 2005-08-30 2005-08-30 Distributed caching of files in a network
US11/215,621 2005-08-30
PCT/US2006/030445 WO2007027361A2 (en) 2005-08-30 2006-08-03 Distributed caching of files in a network

Publications (2)

Publication Number Publication Date
KR20080047353A KR20080047353A (en) 2008-05-28
KR101322947B1 true KR101322947B1 (en) 2013-10-29

Family

ID=37805841

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087003133A KR101322947B1 (en) 2005-08-30 2006-08-03 Distributed caching of files in a network

Country Status (11)

Country Link
US (1) US7512943B2 (en)
EP (1) EP1922615B1 (en)
JP (1) JP4943437B2 (en)
KR (1) KR101322947B1 (en)
CN (1) CN101253488B (en)
BR (1) BRPI0614925B1 (en)
CA (1) CA2616916A1 (en)
MX (1) MX2008002505A (en)
NO (1) NO20080273L (en)
RU (1) RU2413981C2 (en)
WO (1) WO2007027361A2 (en)

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007122609A (en) * 2005-10-31 2007-05-17 Ricoh Co Ltd Structured document, content delivery server device and content delivery system
US7761503B2 (en) * 2006-01-06 2010-07-20 Microsoft Corporation Peer distribution point feature for system management server
GB0600348D0 (en) * 2006-01-10 2006-02-15 Ibm Updating of data processing and communication devices
US20070245323A1 (en) * 2006-04-13 2007-10-18 Apple Computer, Inc. Sharing compiled versions of files
US9020964B1 (en) 2006-04-20 2015-04-28 Pinehill Technology, Llc Generation of fingerprints for multimedia content based on vectors and histograms
US7840540B2 (en) 2006-04-20 2010-11-23 Datascout, Inc. Surrogate hashing
US7991206B1 (en) 2007-07-02 2011-08-02 Datascout, Inc. Surrogate heuristic identification
US8463000B1 (en) 2007-07-02 2013-06-11 Pinehill Technology, Llc Content identification based on a search of a fingerprint database
US7801868B1 (en) * 2006-04-20 2010-09-21 Datascout, Inc. Surrogate hashing
US7774385B1 (en) 2007-07-02 2010-08-10 Datascout, Inc. Techniques for providing a surrogate heuristic identification interface
US8156132B1 (en) 2007-07-02 2012-04-10 Pinehill Technology, Llc Systems for comparing image fingerprints
US8549022B1 (en) 2007-07-02 2013-10-01 Datascout, Inc. Fingerprint generation of multimedia content based on a trigger point with the multimedia content
US7814070B1 (en) * 2006-04-20 2010-10-12 Datascout, Inc. Surrogate hashing
WO2008033424A2 (en) * 2006-09-12 2008-03-20 Foleeo, Inc. Hive-based peer-to-peer network
US7953083B1 (en) 2006-12-12 2011-05-31 Qurio Holdings, Inc. Multicast query propagation scheme for a peer-to-peer (P2P) network
US8996484B2 (en) * 2007-02-13 2015-03-31 Red Hat, Inc. Recursive lock-and-propagate operation
US8316364B2 (en) * 2007-02-28 2012-11-20 Red Hat, Inc. Peer-to-peer software update distribution network
KR101409991B1 (en) 2007-04-16 2014-06-20 삼성전자주식회사 Method and apparatus for data transfer in peer-to-peer network
US8201164B2 (en) * 2007-07-20 2012-06-12 Microsoft Corporation Dynamically regulating content downloads
JP5007624B2 (en) * 2007-08-10 2012-08-22 ブラザー工業株式会社 Content distributed storage system, content data acquisition method, node device, and node processing program
US8281298B2 (en) 2007-08-27 2012-10-02 International Business Machines Corporation Evaluating computer driver update compliance
GB2452325A (en) * 2007-08-31 2009-03-04 Sony Corp Method and system for distributing software to a portable device using software on a pre-recorded medium.
US8886803B1 (en) 2007-09-20 2014-11-11 Qurio Holdings, Inc. Dynamic query response in a distributed network
WO2009095461A1 (en) * 2008-01-30 2009-08-06 International Business Machines Corporation Method and system of updating a plurality of computers
US7636759B1 (en) * 2008-09-29 2009-12-22 Gene Fein Rotating encryption in data forwarding storage
US9203928B2 (en) 2008-03-20 2015-12-01 Callahan Cellular L.L.C. Data storage and retrieval
US7636761B1 (en) * 2008-09-29 2009-12-22 Gene Fein Measurement in data forwarding storage
US7599997B1 (en) 2008-08-01 2009-10-06 Gene Fein Multi-homed data forwarding storage
US8458285B2 (en) 2008-03-20 2013-06-04 Post Dahl Co. Limited Liability Company Redundant data forwarding storage
US20090252071A1 (en) * 2008-04-02 2009-10-08 Nokia Corporation Method and deevice for network messaging
US8386585B2 (en) * 2008-04-25 2013-02-26 Tajitshu Transfer Limited Liability Company Real-time communications over data forwarding framework
US8452844B2 (en) * 2008-05-07 2013-05-28 Tajitshu Transfer Limited Liability Company Deletion in data file forwarding framework
US9848314B2 (en) * 2008-05-19 2017-12-19 Qualcomm Incorporated Managing discovery in a wireless peer-to-peer network
US9198017B2 (en) * 2008-05-19 2015-11-24 Qualcomm Incorporated Infrastructure assisted discovery in a wireless peer-to-peer network
US9237086B2 (en) * 2008-05-30 2016-01-12 Genband Us Llc Methods and apparatus for network traffic distribution based on random number values
US8769277B2 (en) * 2008-06-23 2014-07-01 Microsoft Corporation Content retrieval
US8370446B2 (en) 2008-07-10 2013-02-05 Tajitshu Transfer Limited Liability Company Advertisement forwarding storage and retrieval network
US8599678B2 (en) 2008-07-10 2013-12-03 Tajitshu Transfer Limited Liability Company Media delivery in data forwarding storage network
US7685248B1 (en) * 2008-09-29 2010-03-23 Gene Fein User interface in data forwarding network
US8478823B2 (en) 2008-09-29 2013-07-02 Tajitshu Transfer Limited Liability Company Selective data forwarding storage
US8352635B2 (en) * 2008-09-29 2013-01-08 Tajitshu Transfer Limited Liability Company Geolocation assisted data forwarding storage
US7961741B2 (en) * 2008-10-23 2011-06-14 Silver Spring Networks, Inc. Rapid dissemination of bulk information to widely dispersed network nodes
EP2234375A1 (en) * 2009-03-24 2010-09-29 Thomson Licensing device and method for controlling dissemination of content data between peers in a P2P mode, by using a two-level randomized peer overlay and a dynamic unchoke mechanism
CN101764824B (en) * 2010-01-28 2012-08-22 深圳市龙视传媒有限公司 Distributed cache control method, device and system
JP2012088955A (en) * 2010-10-20 2012-05-10 Nec Corp Data replication system, data replication server, data replication method, and data replication program
US8681758B2 (en) 2010-12-14 2014-03-25 Symbol Technologies, Inc. Video caching in a wireless communication network
EP2477377A1 (en) * 2011-01-14 2012-07-18 Alcatel Lucent Peer node and method for improved peer node selection
US9094263B2 (en) * 2011-02-28 2015-07-28 Bittorrent, Inc. Peer-to-peer live streaming
CN102752335B (en) * 2011-04-22 2017-08-08 中兴通讯股份有限公司 Peer-to-peer overlay network interior joint overload information subscribing method and system
US20130007218A1 (en) * 2011-06-28 2013-01-03 Cisco Technology, Inc. Network Assisted Tracker for Better P2P Traffic Management
US20130073671A1 (en) * 2011-09-15 2013-03-21 Vinayak Nagpal Offloading traffic to device-to-device communications
US20130156030A1 (en) * 2011-12-16 2013-06-20 Jeremy Johnson Rapid dissemination of information to widely dispersed network nodes via patch
US9432452B2 (en) 2012-09-10 2016-08-30 Joosy, Inc. Systems and methods for dynamic networked peer-to-peer content distribution
JP5971065B2 (en) * 2012-09-28 2016-08-17 富士通株式会社 COMMUNICATION METHOD, RADIO TERMINAL, AND COMMUNICATION SYSTEM
JP5487273B1 (en) * 2012-10-26 2014-05-07 日本電信電話株式会社 Information transmission device and program thereof
CN104202362B (en) * 2014-08-14 2017-11-03 上海帝联信息科技股份有限公司 SiteServer LBS and its content distribution method and device, load equalizer
US10462249B2 (en) * 2014-08-25 2019-10-29 Super Micro Computer, Inc. Globally distributed virtual cache for worldwide real-time data access
CN104461940A (en) * 2014-12-17 2015-03-25 南京莱斯信息技术股份有限公司 Efficient caching and delayed writing method for network virtual disk client side
US10491512B2 (en) * 2015-05-20 2019-11-26 Qualcomm Incorporated Supporting packet query-response transactions at lower layer
US10693720B2 (en) * 2017-04-10 2020-06-23 Cisco Technology, Inc. Distribution of updates in an IoT network
US11553014B2 (en) * 2017-07-04 2023-01-10 Vmware, Inc. Downloading of server-based content through peer-to-peer networks
CN113660168B (en) * 2021-10-19 2021-12-31 上海柯林布瑞信息技术有限公司 Multi-center research data processing method and device and server

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010027479A1 (en) 1998-10-05 2001-10-04 Backweb Technologies, Ltd. Distributed client-based data caching system
JP2002318720A (en) 2001-04-19 2002-10-31 Oki Electric Ind Co Ltd Contents delivery management system
US20030233455A1 (en) 2002-06-14 2003-12-18 Mike Leber Distributed file sharing system
JP2005094773A (en) 2003-09-15 2005-04-07 Microsoft Corp Computerized system including participation locality-aware overlay module, and method implemented by computer

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6128295A (en) * 1997-07-11 2000-10-03 Telefonaktiebolaget Lm Ericsson Buffering of point-to-point and/or point-to-multipoint ATM cells
US20020062336A1 (en) * 2000-11-22 2002-05-23 Dan Teodosiu Resource coherency among resources cached in a peer to peer environment
US7035911B2 (en) * 2001-01-12 2006-04-25 Epicrealm, Licensing Llc Method and system for community data caching
AU2002234258A1 (en) * 2001-01-22 2002-07-30 Sun Microsystems, Inc. Peer-to-peer network computing platform
US7197565B2 (en) * 2001-01-22 2007-03-27 Sun Microsystems, Inc. System and method of using a pipe advertisement for a peer-to-peer network entity in peer-to-peer presence detection
EP1364278A4 (en) * 2001-01-25 2009-01-07 Content Directions Inc Apparatus, method and system for tracking information access
US6983326B1 (en) * 2001-04-06 2006-01-03 Networks Associates Technology, Inc. System and method for distributed function discovery in a peer-to-peer network environment
US20030009570A1 (en) * 2001-07-03 2003-01-09 International Business Machines Corporation Method and apparatus for segmented peer-to-peer computing
US7003514B2 (en) * 2001-09-13 2006-02-21 International Business Machines Corporation Method and apparatus for restricting a fan-out search in a peer-to-peer network based on accessibility of nodes
JP3997774B2 (en) * 2001-12-11 2007-10-24 ソニー株式会社 Data processing system, data processing method, information processing apparatus, and computer program
US7117264B2 (en) 2002-01-10 2006-10-03 International Business Machines Corporation Method and system for peer to peer communication in a network environment
US7574488B2 (en) * 2002-05-31 2009-08-11 Hitachi, Ltd. Method and apparatus for peer-to-peer file sharing
JP2004127168A (en) * 2002-10-07 2004-04-22 Sony Corp Device and method for processing communication and computer program
EP1429513A1 (en) * 2002-12-09 2004-06-16 Koninklijke Philips Electronics N.V. Method and apparatus for searching data in a peer to peer network
US20050076092A1 (en) * 2003-10-02 2005-04-07 Sony Corporation And Sony Electronics Inc. User shared virtual channel via media storage
US7660889B2 (en) * 2003-11-18 2010-02-09 Cisco Technology, Inc. Initialization and acquisition of peers in a peers' list in a peer-to-peer network
US8239446B2 (en) * 2003-11-19 2012-08-07 Sony Computer Entertainment America Llc Content distribution architecture
US7627644B2 (en) * 2003-11-28 2009-12-01 Canon Kabushiki Kaisha Recipient-centred proactive caching in a peer-to-peer system
US7342900B2 (en) * 2004-05-19 2008-03-11 Hewlett-Packard Development Company, L.P. Apparatus and method for estimating device availability
US20060212542A1 (en) * 2005-03-15 2006-09-21 1000 Oaks Hu Lian Technology Development Co., Ltd. Method and computer-readable medium for file downloading in a peer-to-peer network

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010027479A1 (en) 1998-10-05 2001-10-04 Backweb Technologies, Ltd. Distributed client-based data caching system
JP2002318720A (en) 2001-04-19 2002-10-31 Oki Electric Ind Co Ltd Contents delivery management system
US20030233455A1 (en) 2002-06-14 2003-12-18 Mike Leber Distributed file sharing system
JP2005094773A (en) 2003-09-15 2005-04-07 Microsoft Corp Computerized system including participation locality-aware overlay module, and method implemented by computer

Also Published As

Publication number Publication date
RU2413981C2 (en) 2011-03-10
BRPI0614925B1 (en) 2018-04-24
MX2008002505A (en) 2008-04-07
KR20080047353A (en) 2008-05-28
BRPI0614925A2 (en) 2011-04-19
CN101253488B (en) 2010-06-02
CA2616916A1 (en) 2007-03-08
US7512943B2 (en) 2009-03-31
EP1922615A2 (en) 2008-05-21
WO2007027361A3 (en) 2008-01-24
JP2009506455A (en) 2009-02-12
US20070050761A1 (en) 2007-03-01
RU2008107742A (en) 2009-09-10
CN101253488A (en) 2008-08-27
EP1922615B1 (en) 2016-06-15
WO2007027361A2 (en) 2007-03-08
JP4943437B2 (en) 2012-05-30
NO20080273L (en) 2008-03-31
EP1922615A4 (en) 2009-09-02

Similar Documents

Publication Publication Date Title
KR101322947B1 (en) Distributed caching of files in a network
US10958725B2 (en) Systems and methods for distributing partial data to subnetworks
US10193907B2 (en) Intrusion detection to prevent impersonation attacks in computer networks
KR20020079425A (en) System and method for secure and verified sharing of resources in a peer-to-peer network environment
KR20020079426A (en) System and method to verify trusted status of peer in a peer-to-peer network environment
US10440038B2 (en) Configuration management for network activity detectors
Kurokawa et al. Study on the distributed data sharing mechanism with a mutual authentication and meta database technology
US12015666B2 (en) Systems and methods for distributing partial data to subnetworks
AU2023203129B2 (en) Systems and methods for distributing partial data to subnetworks
KR100945016B1 (en) System and method for file distribution using messenger
Rahman et al. iDispatcher: A unified platform for secure planet-scale information dissemination
Ali et al. Peer To Peer Confidentiality in Social Applications
Agbariah Policy exchange and management for Policy Compliance and Change Detection System in managed service in data networks
Daniel et al. Exploring the design space of privacy-enhanced content discovery for bitswap
Cowan S4h: A Peer-to-Peer Search Engine with Explicit Trust
EP3235268A1 (en) Method, network node and terminal device in a communication network
Xin et al. Automatic patching based on social computing in P2P network
Kumar Bluetooth quality issues, threats and security tips
Gajalakshmi et al. Globally trusted model for assisting peers using greedy forwarding technique
del Campo et al. ARES project CONSOLIDER-INGENIO 2011 CSD2007-00004 Workpackage 2-Task 4 (WP2. T4) Development of a middleware for service discovery over ubiquitous networks

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: 20160921

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170919

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180918

Year of fee payment: 6