KR101322947B1 - Distributed caching of files in a network - Google Patents
Distributed caching of files in a network Download PDFInfo
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1061—Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
- H04L67/1068—Discovery involving direct consultation or announcement among potential requesting and potential source peers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1061—Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
- H04L67/1072—Discovery involving ranked list compilation of candidate peers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99939—Privileged 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
네트워크 컴퓨팅은 컴퓨터가 서버들로부터 소프트웨어 및 파일 컨텐트를 요청하고 수신하여 컴퓨터에 설치 및/또는 저장할 수 있도록 한다. 파일 컨텐트는, 예를 들어, 텍스트 파일, 비디오 파일, 데이터 파일, 이미지 파일 등을 포함할 수 있다. 소프트웨어는 시스템 소프트웨어 업데이트, 애플리케이션 소프트웨어 업데이트, 및 데이터 파일 업데이트를 포함하는 여러 목적을 위해 요청되고 다운로드될 수 있다. 예를 들어, 컴퓨터 시스템에 대한 공격을 막거나 제거하도록 운영 체제를 업데이트하기 위해 보안 패치가 다운로드될 수 있다. 또한, 컴퓨터에 새로운 애플리케이션을 설치하기 위해 소프트웨어가 다운로드될 수 있다. 한 예시적인 시스템에서, 소프트웨어는 후선(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
도 1은 또한 피어 그룹(112)이 중앙 파일 서버(114)에 연결되었음을 도시한 다. 중앙 파일 서버(114)로의 연결이 단일 연결로 도시되었지만, 대안적인 실시예에서, 컴퓨터(102-110) 각각이 중앙 파일 서버(114)에 대한 액세스를 가지거나, 다른 구성으로 다양한 연결들이 사용될 수 있다. 예를 들어, 피어 그룹은 기업 엔터프라이즈의 지점에서 형성될 수 있으며, 여기서 지점은 엔터프라이즈 허브에 있는 중앙 파일 서버(114)와 연결된다. 다양한 다른 상호 연결들 또한 구현될 수 있다.1 also shows that
도시된 예에서, 파일 서버는 파일(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.
앞서 언급된 것과 같이, 도 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
피어 그룹(112) 내의 컴퓨터 시스템이 파일(116)을 수신하면, 컴퓨터 시스템은 파일이 정확한 파일이며 손상되지 않았음을 확인해야한다. 파일이 정확한 파일이며 손상되지 않았음을 결정하는 것은, 예를 들어, 파일 이름, 파일 크기, 해시 값 등을 비교함으로써 이루어질 수 있다. 예를 들어, 컴퓨터 시스템은 파일 이름, 파일 크기, 및 파일의 해시 값에 관한 정보를 수신할 수 있다. 해시 값은, 어떤 다른 데이터가 같은 해시 값을 생성할 가능성이 극히 드문 방식으로 값을 생성하기 위해서, 파일 내의 데이터를 이용하여 계산된 값들이다. 컴퓨터 시스템은 파일 이름, 파일 크기 및/또는 해시 값을 비교함으로써 정확한 파일이 수신되고 있다고 결정할 수 있다. 또한, 해시 값은 파일이 손상되거나, 악성으로 변경되지 않았음을 보장하기 위해 사용될 수 있다.When the computer system in
정확한 파일이 사용가능하지 않거나, 파일이 손상되었거나, 파일이 악성으로 변경되었음을 컴퓨터 시스템이 검출하면, 컴퓨터 시스템은 중앙 파일 서버(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
특히, 한 실시예에서, 피어 그룹은 상술된 것과 같이 유지되며 각 컴퓨터 시스템에 대해 특정(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
도 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
피어 목록을 구축하는 한 방법(202)은 통신 유도 요청(solicitation request)을 송신하고 컴퓨터들로부터 응답을 수신하는 것을 포함한다. 응답하는 잠재적 피어들의 수를 제한하기 위해, 통신 유도 요청은 예를 들어, 단일 서브넷에 대해 응답을 받기 위해 서브넷 브로드캐스트 또는 멀티캐스트일 수 있다. 하지만, 단일 서브넷의 컴퓨터들만 응답하더라도, 응답의 수가 여전히 과도할 수 있다. 따라서, 응답의 수를 더욱 제한하기 위해, 통신 유도 요청을 송신하는 컴퓨터 시스템은 요구되는 피어의 수에 대한 지시를 통신 유도 요청 내에 포함시킬 수 있다. 잠재적 피어들은 무작위의 짧은 간격(random short interval) 후에 멀티캐스트를 사용하여 응답하고 다른 컴퓨터들의 멀티캐스트 응답을 듣도록 구성될 수 있다. 다 른 잠재적 피어들로부터의 응답의 수가 요구되는 피어의 수에 대한 지시에 이미 도달했음이 검출되면 잠재적 피어는 응답하지 않는다. 다시 말해, 요구되는 수의 피어들이 이미 응답한 경우 잠재적 피어는 응답하지 않는다.One
무작위의 짧은 간격을 생성하기 위해 여러 방법들이 사용될 수 있다. 예를 들어, 가장 간단한 실시예에서, 통신 유도 요청에 응답하기 전에 얼마의 시간을 대기해야 할지를 결정하기 위해서, 균등한 무작위 분포(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
대안적인 실시예에서, 잠재적 피어는, 예를 들어, 멀티캐스트를 통해 네트워크에 추가되었을 때와 같이, 네트워크에 추가되었을 때 알릴(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
특히, 컴퓨터 시스템이 새로운 서브넷으로 이동하지만, 새로운 피어 그룹을 형성하지 않는 상황이 있을 수 있다. 예를 들어, 랩톱 컴퓨터가 인터넷 카페로 이동하면, 랩톱 컴퓨터는 아마도 새로운 피어 그룹을 형성하지 않는다. 사용가능한 피어들과의 통신은 이것 및 다른 상황들에서 너무 위험(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
피어가 피어 서버로서 동작하기로 결정하면, 피어 서버는 다시 컴퓨터 시스템으로 메시지를 송신하며, 이는 컴퓨터 시스템에 의해 수신(단계 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
이제 도 3을 참조하면, 잠재적 피어 서버의 관점에서 파일을 캐싱 및 공유하기 위한 방법(300)을 보여주는 실시예가 도시된다. 도 3에 도시된 방법은 네트워크의 컴퓨터 시스템에서 실행될 수 있으며, 여기서 네트워크는 네트워크로 연결된 하나 이상의 컴퓨터를 포함한다.Referring now to FIG. 3, an embodiment is shown that illustrates a
방법(300)은 컴퓨터 시스템이 피어로서 사용가능하다는 메시지를 송신하는 동작(단계 302)을 포함한다. 컴퓨터 시스템이 피어로서 사용가능하다는 메시지를 송신하는 것(단계 302)은, 컴퓨터 시스템이 공유할 파일을 가지고 있을 때, 서브넷 상의 멀티캐스트를 이용하여 수행될 수 있다. 대안적인 실시예에서, 컴퓨터 시스템이 피어로서 사용가능하다는 메시지를 송신하는 것은, 피어 컴퓨터를 찾는 시스템으로부터 통신 유도 요청을 수신한 것에 대한 응답으로, 멀티캐스트 또는 유니캐 스트를 이용하여 수행될 수 있다. 컴퓨터 시스템이 피어로서 사용가능하다는 메시지를 송신하는 것(단계 302)이 통신 유도 요청을 수신한 것에 대한 응답으로 수행될 때, 컴퓨터 시스템은 도 2의 기술과 함께 상술된 절차를 사용하여 무작위 지연(random delay)을 이용하여 응답할 수 있다.The
방법(300)은 또한, 컴퓨터 시스템이 파일 또는 파일의 부분을 가지고 있는지 발견하기 위한 요청을 수신하는 동작을 포함한다(단계 304). 수신된 메시지는 자신의 피어 목록에 컴퓨터 시스템을 포함하는 시스템으로부터의 유니캐스트 요청일 수 있다. 대안적인 실시예에서, 요청은 상술된 것과 같이 중복된 유니캐스트일 수 있다. 파일에 대한 보안이 요구되지 않을 때 멀티캐스트 요청 또한 사용될 수 있다.The
방법(300)은 또한, 컴퓨터 시스템이 파일 또는 파일의 부분을 가지고 있다는 메시지를 송신하는 동작을 포함한다(단계 304). 컴퓨터 시스템이 파일 또는 파일의 부분을 가지고 있다는 메시지를 송신하는 것(단계 304)은 동적 옵트-인/옵트-아웃 규칙에 기초하여 수행된다. 예를 들어 한 실시예에서, 정책 규칙은 컴퓨터 시스템의 처리 능력을 고려할 수 있다. 강력한 데스크톱 또는 서버 클래스 컴퓨터는 다른 덜 강력한 시스템들보다 많은 피어들에게 피어로서 동작할 수 있도록 해주는 정책 규칙을 가질 수 있다. 다른 규칙들은 사용가능한 기계 리소스의 양과 관련될 수 있다. 예를 들어, 정책 규칙은 10% 이상의 컴퓨터 시스템 리소스가 사용될 때, 피어 서버로서 동작하는 컴퓨터 시스템의 능력을 제한할 수 있다. 시스템 리소스는 시스템의 CPU 로드 및 디스크 입/출력 로드 중 더 큰 것의 측정값일 수 있다. 랩톱 컴퓨터와 관련된 대안적인 실시예에서, 랩톱 컴퓨터는, 랩톱 컴퓨터 시스템(106)의 동작 상태에 기초하여, 랩톱 컴퓨터 시스템(106)이 피어 서버로서 동작하는 피어의 수를 조정하는 정책을 참조할 수 있다. 예를 들어, 랩톱 컴퓨터 시스템(106)이 도킹 스테이션과 연결되면, 랩톱 컴퓨터는 도킹 스테이션과 연결되지 않았을 때보다 더 많은 피어들을 상대하도록 구성될 수 있다. 더 나아가, 랩톱 컴퓨터 시스템(106)이 유선 연결을 통해 연결되었을 때, 랩톱 컴퓨터 시스템(106)은 무선 방식으로 피어 컴퓨터들과 연결되었을 때보다 더 많은 피어들을 상대할 수 있다. 또한 다른 예에서, 랩톱 컴퓨터 시스템(106)과 연결되도록 허락되는 피어의 수는 배터리 레벨과 관련된 정책에 의해 정의될 수 있다. 예를 들어, 랩톱이 배터리로 실행되고 있고 전력이 50% 보다 적을 때, 랩톱 컴퓨터 시스템(106)은 더 이상의 피어 컴퓨터 연결을 허락하지 않는 정책을 따를 수 있다.The
방법(300)은 또한, 파일을 다운로드하기 위한 요청을 수신하는 동작을 포함한다(단계 308). 더 나아가, 방법(300)은 요청하는 시스템으로 파일을 송신하는 동작을 포함한다(단계 310). 이것은 네트워크의 다른 시스템들에게 피어 서버로 동작하는 컴퓨터 시스템에 의해 수행될 수 있다.The
이제 도 4를 참조하면, 다양한 메시징 포맷을 포함하는, 파일을 캐싱 및 공유하기 위한 방법(400)을 나타내는 실시예가 도시된다. 도 4에 도시된 방법은 네트워크로 연결된 하나 이상의 컴퓨터를 포함하는 네트워크의 컴퓨터 시스템에서 실행될 수 있다.Referring now to FIG. 4, an embodiment is shown that illustrates a
방법은 컴퓨터 시스템이 잠재적 피어를 발견하기 위해 서브넷의 컴퓨터 시스 템들에게 브로드캐스트 신호를 송신하는 동작을 포함한다(단계 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)
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)
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)
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)
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 |
-
2005
- 2005-08-30 US US11/215,621 patent/US7512943B2/en not_active Expired - Fee Related
-
2006
- 2006-08-03 WO PCT/US2006/030445 patent/WO2007027361A2/en active Application Filing
- 2006-08-03 RU RU2008107742/08A patent/RU2413981C2/en not_active IP Right Cessation
- 2006-08-03 EP EP06800759.0A patent/EP1922615B1/en not_active Not-in-force
- 2006-08-03 BR BRPI0614925-1A patent/BRPI0614925B1/en not_active IP Right Cessation
- 2006-08-03 KR KR1020087003133A patent/KR101322947B1/en active IP Right Grant
- 2006-08-03 MX MX2008002505A patent/MX2008002505A/en active IP Right Grant
- 2006-08-03 CA CA002616916A patent/CA2616916A1/en not_active Withdrawn
- 2006-08-03 CN CN200680031311.8A patent/CN101253488B/en not_active Expired - Fee Related
- 2006-08-03 JP JP2008529046A patent/JP4943437B2/en not_active Expired - Fee Related
-
2008
- 2008-01-16 NO NO20080273A patent/NO20080273L/en unknown
Patent Citations (4)
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 |