KR101474233B1 - 분산된 해시 테이블의 콘텐트에 대한 피어-투-피어 트래픽 국부화 - Google Patents

분산된 해시 테이블의 콘텐트에 대한 피어-투-피어 트래픽 국부화 Download PDF

Info

Publication number
KR101474233B1
KR101474233B1 KR1020137007122A KR20137007122A KR101474233B1 KR 101474233 B1 KR101474233 B1 KR 101474233B1 KR 1020137007122 A KR1020137007122 A KR 1020137007122A KR 20137007122 A KR20137007122 A KR 20137007122A KR 101474233 B1 KR101474233 B1 KR 101474233B1
Authority
KR
South Korea
Prior art keywords
content
node
key
peer
message
Prior art date
Application number
KR1020137007122A
Other languages
English (en)
Other versions
KR20130062993A (ko
Inventor
모리츠 슈타이너
마떼오 바르벨로
Original Assignee
알까뗄 루슨트
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 알까뗄 루슨트 filed Critical 알까뗄 루슨트
Publication of KR20130062993A publication Critical patent/KR20130062993A/ko
Application granted granted Critical
Publication of KR101474233B1 publication Critical patent/KR101474233B1/ko

Links

Images

Classifications

    • 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
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • 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/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • 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/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1021Server selection for load balancing based on client or server locations
    • 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/1065Discovery involving distributed pre-established resource-based relationships among peers, e.g. based on distributed hash tables [DHT] 

Abstract

피어-투-피어 네트워크의 콘텐트를 국부화하는 방법이 제공된다. 상기 방법은 제 1 콘텐트를 발표하는 메시지를 수신하는 단계를 포함한다. 상기 메시지에 기초하여 테이블에 <키, 값> 쌍을 저장한다. 상기 키는 콘텐트 정보를 나타내고 상기 값은 노드 정보를 나타낸다. 상기 노드 정보는 상기 콘텐트를 발표하는 노드를 식별하고, 상기 콘텐트 정보는 상기 콘텐트를 식별한다. 복수의 제 1 변화 키들을 상기 테이블에 저장한다. 상기 복수의 제 1 변화 키들 각각은 상기 저장된 제 1 키의 변화이다. 상기 방법은 요청 메시지를 인터셉트하는 단계 및 상기 요청 메시지의 전송자에게 응답을 전송하는 단계를 더 포함한다. 상기 응답 메시지는 노드들의 리스트를 포함하고, 상기 노드들의 리스트는 상기 요청 메시지의 목적지 어드레스에 기초한 키 및 상기 테이블에 기초한다.

Description

분산된 해시 테이블의 콘텐트에 대한 피어-투-피어 트래픽 국부화{PEER-TO-PEER TRAFFIC LOCALIZATION FOR CONTENT IN A DISTRIBUTED HASH TABLE}
실시예들은 피어-투-피어 파일 공유 네트워크들 및 피어-투-피어 트래픽을 국부화(localizing)하는 방법에 관한 것이다.
피어-투-피어 파일 공유 네트워크들의 일부 버전들은 상기 네트워크의 모든 이용가능한 콘텐트를 열거하기 위한 네트워크 소자들의 네트워크 또는 중앙화된(centralized) 컴퓨터에 의존한다. 다른 피어-투-피어 파일 공유 네트워크들은 네트워크 상의 모든 이용가능한 콘텐트를 열거하기 위해 중앙화된 소자들에 의존하지 않는다. 오히려, 디렉토리는 콘텐트 자체가 분산되는 것처럼 분산된다. 모든 참여하는 클라이언트들 상의 상기 디렉토리 데이터베이스를 분산하기 위해 사용된 기술은 때때로 분산된 해시 테이블(DHT: distributed hash table)이라고 한다.
상기 네트워크가 중앙화된 유형의 네트워크이든 또는 DHT를 사용하는 네트워크이든, 피어들은 콘텐트가 공유되는 피어의 위치(locality)에 상관없이 하나의 피어로부터 다른 피어로 콘텐트를 다운로드한다. 그 결과, 피어가 다른 피어들의 컴퓨터에 포함된 파일을 요청하면, 상기 파일을 포함하는 컴퓨터는 상기 파일을 요청하는 피어로부터 멀리 떨어져 위치될 수 있다. 이는 파일 전송 지연뿐만 아니라 상기 피어들 간의 링크가 하나 이상의 인터넷 서비스 제공자들(ISPs: internet service providers)을 통해야 하기 때문에 비용을 증가시킨다. 따라서, 이러한 접속들의 피어-투-피어 유형은 ISP들을 함께 링크하는 수송 링크들 상의 많은 양의 트래픽을 생성하여, 네트워크 오퍼레이터들에게 비용을 증가시킨다.
예를 들어, 인기 있는 콘텐트 파일이 있고 컴퓨터들 상에 이 파일을 갖는 사용자들이 전세계적으로 10,000명이 있다고 가정한다. 10,000명의 사용자들 중 50명은 주어진 ISP "A" 내에 있다고 가정한다. ISP "A" 내의 피어가 상기 인기 있는 파일에 관심이 있고 상기 파일을 다운로드하는 50 개의 랜덤 피어들에 대해 중앙화되거나 DHT 유형의 디렉토리인, 디렉토리를 요청한다고 가정한다. 이러한 예에서, ISP "A" 내의 단일 피어를 찾는 0.5%의 기회가 있다. 상기 파일을 갖는 50 개의 피어들이 요청하는 피어에 랜덤하게 식별되면, 모든 50 개의 피어들이 ISP "A" 내에 있을 기회는 0에 가깝다.
이러한 시나리오에서, 상기 파일을 요청하는 상기 피어와 동일한 ISP 내에 충분한 수의 피어들이 존재하면, 상기 기회들은 피어가 상기 요청하는 피어들의 ISP 외부에 위치된 피어로부터 상기 파일을 수신하는 것을 종료하는 것이다. 이는 ISP들 간의 수송 링크 상의 불필요한 트래픽을 필요로 한다.
도 1은 중앙화된 피어-투-피어 시스템(10)의 개략도를 도시한다. 상기 중앙화된 피어-투-피어 시스템(10)은 피어들 및/또는 노드들(12)이라고 또한 참조되는 컴퓨터들(12) 및 중앙 컴퓨터(14)를 포함한다. 상기 피어들 및/또는 노드들(12)은 접속부들(16)을 통해 상기 중앙 컴퓨터(14)에 접속된다. 상기 접속부들(16)은 무선 접속, 이더넷 접속 또는 임의의 적절한 접속 하드웨어 또는 방법들의 조합과 같은 임의의 적절한 접속부일 수 있다.
상기 피어-투-피어 시스템(10)이 단 4 개의 피어들 및/또는 노드들(12) 및 단일 중앙 컴퓨터(14)를 도시하지만, 피어-투-피어 시스템은 도시된 피어들 및/또는 노드들(12)의 수 및 단일 중앙 컴퓨터(14)의 중앙 네트워크 소자로 제한되지 않는다는 것이 이해된다. 사실, 상기 피어-투-피어 시스템(10)은 훨씬 많은 피어들 및/또는 노드들(12) 및 많은 컴퓨터들, 서버들을 포함할 수 있고 또는 다른 소자들이 도시된 상기 중앙 컴퓨터(14)의 업무를 달성할 수 있다.
도 1에 도시된 바와 같은 중앙화된 피어-투-피어 시스템(10)에서, 피어 및/또는 노드(12)가 콘텐트 또는 파일을 요청할 때, 상기 요청은 상기 접속부(16)를 통해 상기 중앙화된 컴퓨터(14)로 전송된다. 요청들을 전송하는 것은 피어-투-피어 네트워크들에서 공지되어 있다.
상기 중앙화된 컴퓨터(14)는 어느 피어들 및/또는 노드들(12)이 상기 요청된 콘텐트를 갖고 있는지 결정하고 상기 요청된 콘텐트를 갖는 피어들 및/또는 노드들(12)에 관한 정보와 함께 상기 요청에 응답할 수 있다. 상기 중앙화된 컴퓨터(14)는 상기 요청된 콘텐트를 갖는 몇몇 피어들 및/또는 노드들(12)을 식별하고 다수의 식별된 피어들 및/또는 노드들(12)에 관한 정보로 응답할 수 있다. 일단 피어 및/또는 노드(12) 또는 피어들 및/또는 노드들(12)이 식별되면, 상기 요청 피어는 상기 식별된 피어들 중 하나로부터 상기 요청된 파일을 수신할 수 있다.
상기 중앙화된 컴퓨터(14)는 수송 링크들을 통해 송신될 많은 양의 데이터를 저감하기 위해 상기 요청된 콘텐트를 포함할 수 있는 많은 피어들 및/또는 노드들(12) 중에서 어느 피어들 및/또는 노드들(12)이 상기 요청 피어에 대해 식별되어야 하는지를 결정할 수 있다. 이들 결정들은 피어-투-피어 트래픽을 국부화(localize)하기 위해 이뤄질 수 있다. 이 결정은 이하에 더 상세히 설명될 것이다.
예를 들어, 피어-투-피어 네트워크들에 대해 공지된 하나의 파일 공유 시스템은 BITTORRENT로 공지된다. 상기 BITTORRENT 파일 공유 시스템이 피어들을 발견하기 위해 사용하는 메커니즘은 상기 P2P 네트워크의 구조 및 결과적으로 상기 데이터 전파에 영향을 준다. 따라서, 상기 BITTORRENT 파일 공유 시스템의 피어 발견 지식은 트래픽 국부화의 완전한 이해를 위한 기초이다. 상기 BITTORRENT 파일 공유 시스템은 피어들을 발견하고 파일 교환들을 조정하기 위해 트랙커(tracker) 또는 중앙 서버(예를 들어, 중앙화된 컴퓨터(14))를 채용한다. 피어들은 웹으로부터 다운로드하는 토렌트 내의 상기 트랙커의 어드레스를 검색한다. ".torrent"는 상기 파일 교환에 유용한 정보를 포함하는 메타 데이터 파일이다.
처음에, 피어는 상기 파일 또는 상기 파일의 일부를 유지하는 피어들의 리스트를 검색하기 위해 상기 트랙커에 접촉한다. 상기 트랙커는 상기 피어-리스트, 일반적으로 50 개의 피어들에 의해 구성된 활성 피어들의 랜덤 서브세트로 응답한다. 그 후, 피어는 상기 피어가 다운로드하거나 업로드한 바이트들의 용량에 관한 정보를 전송하기 위해 상기 트랙커와 정기적으로 상호작용한다. 응답하여, 상기 트랙커는 상기 피어로 새로운 피어-리스트를 전송한다. 상기 클라이언트와 상기 트랙커 간의 통신 빈도는 상기 트랙커 응답들에 포함된 최소 간격 필드를 통해 상기 트랙커에 의해 조정된다. 일반적으로, 15분으로 설정된다.
상기된 바와 같이, 상기 피어-리스트는 활성 피어들의 랜덤 서브세트이다. 상기 피어-리스트는 네트워크(예를 들어, 인터넷 서비스 제공자(ISP) 네트워크) 내의 피어들의 국부화를 결코 포함하지 않는다. 국부화를 위해 상기 트랙커 또는 중앙 서버(예를 들어, 중앙화된 컴퓨터(14))에 영향을 주기 위한 일부 노력들이 이뤄졌다. 그러나, 이러한 노력들은 본원의 범위 밖이다.
일 실시예는 피어-투-피어 네트워크의 콘텐트를 국부화하는 방법을 포함한다. 상기 방법은 제 1 콘텐트를 발표하는 제 1 메시지를 수신하는 단계를 포함한다. 상기 제 1 메시지에 기초하여 테이블에 제 1 키를 저장한다. 상기 제 1 키는 제 1 노드 정보 및 제 1 콘텐트 정보를 나타낸다. 상기 제 1 노드 정보는 상기 제 1 콘텐트를 발표하는 제 1 노드를 식별하고, 상기 제 1 콘텐트 정보는 상기 제 1 콘텐트를 식별한다. 복수의 제 1 변화 키들을 상기 테이블에 저장한다. 상기 복수의 제 1 변화 키들 각각은 상기 저장된 제 1 키의 변화이다.
다른 실시예가 피어-투-피어 네트워크의 콘텐트를 국부화하는 방법을 포함한다. 상기 방법은 요청 메시지를 인터셉트(intercept)하는 단계를 포함한다. 상기 요청 메시지는 콘텐트에 대한 요청이고, 상기 요청 메시지는 목적지 어드레스를 포함한다. 상기 목적지 어드레스에 기초하여 제 1 키를 결정한다. 상기 제 1 키 및 테이블에 기초하여 노드들의 리스트를 결정한다. 상기 테이블은 복수의 엔트리들을 포함한다. 각각의 엔트리는 키와 변화 키 중 하나를 갖는다. 적어도 하나의 키는 발표 메시지에 기초한다. 상기 키는 노드 정보 및 콘텐트 정보를 나타낸다. 상기 노드 정보는 콘텐트를 발표하는 노드를 식별하고 상기 콘텐트 정보는 상기 콘텐트를 식별하고 각각의 변화 키는 상기 키들 중 하나의 변화이다. 상기 요청 메시지의 발신인에게 응답을 전송한다. 상기 응답 메시지는 상기 노드들의 리스트를 포함한다.
도 1은 중앙화된 성분들을 갖는 피어-투-피어 파일 공유 네트워크의 관련된 기술의 개략도.
도 2는 예시적인 실시예들에 따라 분산된 해시 테이블(DHT)을 활용하는 피어-투-피어 파일 공유 네트워크의 개략도.
도 3은 예시적인 실시예들에 따른 파일 공유 네트워크 및 상기 파일 공유 네트워크와 통신하는 컴퓨터의 다양한 성분들을 도시하는 개략도.
도 4a 내지 도 4f는 예시적인 실시예들에 따른 DHT를 도시한 도면.
도 5는 예시적인 실시예들에 따라 발표하는 피어들에 대한 방법의 흐름도.
도 6은 예시적인 실시예들에 따라 노드 아이덴티티들(sybils)을 저장하는 방법의 흐름도.
도 7은 예시적인 실시예들에 따라 콘텐트를 발표하는 메시지들을 인터셉트하는 방법의 흐름도.
도 8은 예시적인 실시예들에 따라 콘텐트를 요청하는 메시지들을 인터셉트하는 방법의 흐름도.
본 발명은 예시적인 방법으로만 주어져 본 발명을 제한하지 않는, 이하의 상세한 설명과 유사한 참조 번호들이 유사한 소자들을 나타내는, 첨부된 도면들로부터 더 완전히 이해될 것이다.
이들 도면들은 특정한 예시적인 실시예들에서 활용된 방법들, 구조 및/또는 자료들의 일반적인 특징들을 예시하고 이하에 제공된 설명들을 지원하도록 의도된다는 것을 주의해야 한다. 그러나, 이들 도면들은 임의의 주어진 실시예의 정밀한 구조적 또는 성능 특징들을 스케일링하지 않고 정밀하게 반영하지 않고, 예시적인 실시예들에 의해 포함된 값들 또는 특성들의 범위를 규정하거나 제한하는 것으로 해석되지 않아야 한다. 예를 들어, 분자들, 층들, 영역들 및/또는 구조적 소자들의 상대적인 두께들 및 위치는 명확성을 위해 감소되거나 과장될 수 있다. 다양한 도면들에서 유사하거나 동일한 참조 번호들의 사용은 유사하거나 동일한 소자 또는 피처의 존재를 나타내도록 의도된다.
예시적인 실시예들이 다양한 수정들 및 대안적인 형태로 가능한 한편, 그 실시예들이 예로서 도면에 도시되고 본원에서 상세히 설명될 것이다. 그러나, 예시적인 실시예들을 개시된 특정한 형태로 제한할 의도는 없지만, 반대로, 예시적인 실시예들이 청구항들의 범위 내에 있는 모든 수정들, 등가물들, 및 대안들을 커버한다는 것을 이해해야 한다. 유사한 번호들이 도면들의 설명에 걸쳐 유사한 소자들을 참조한다.
예시적인 실시예들을 더 상세히 논의하기 전에, 일부 예시적인 실시예들이 흐름도로 도시된 프로세스들 또는 방법들로 설명된다는 것을 주의한다. 상기 흐름도들이 연속적인 프로세스들로 상기 동작들을 설명하지만, 많은 동작들이 병렬적으로, 동시에 또는 함께 수행될 수 있다. 또한, 동작들의 순서는 재-배열될 수 있다. 상기 프로세스들은 그들의 동작들이 완료될 때 종료되지만, 도면에 포함되지 않는 부가적인 단계들을 또한 포함할 수 있다. 상기 프로세스들은 방법들, 함수들, 절차들, 서브루틴들, 서브프로그램들, 등에 대응할 수 있다.
일부가 흐름도로 예시된, 이하에 논의된 방법들은 하드웨어, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 하드웨어 기술 언어(hardware description language), 또는 이들의 임의의 조합으로 구현될 수 있다. 소프트웨어, 펌웨어, 미들웨어 또는 마이크로코드로 구현될 때, 필요한 업무들을 수행할 상기 프로그램 코드 또는 코드 세그먼트들은 저장 매체와 같은 머신 또는 컴퓨터 판독가능 매체에 저장될 수 있다. 프로세서(들)는 필요한 업무들을 수행할 수 있다.
본원에 개시된 구체적인 구조 및 기능적 상세들은 단순히 본 발명의 예시적인 실시예들을 기술할 목적을 나타낸다. 그러나, 본 발명은 많은 대안적인 형태들로 구현될 수 있고 본원에 언급된 실시예들만으로 제한하는 것으로 해석되지 않아야 한다.
제 1, 제 2 등의 용어들은 본원에서 다양한 소자들을 기술하기 위해 사용될 수 있지만, 이들 소자들은 이들 용어들로 제한되지 않는다는 것이 이해될 것이다. 이들 용어들은 하나의 소자를 다른 소자와 구별하기 위해서만 사용된다. 예를 들어, 예시적인 실시예들의 범위를 벗어나지 않고, 제 1 소자가 제 2 소자로 지칭될 수 있고, 유사하게, 제 2 소자가 제 1 소자로 지칭될 수 있다. 본원에 사용된 바와 같이, 상기 용어 "및/또는"은 하나 이상의 연관된 열거된 아이템들의 임의의 및 모든 조합들을 포함한다.
소자가 다른 소자에 "접속" 또는 "결합"되는 것으로 참조될 때, 상기 다른 소자에 바로 접속 또는 결합되거나 중재 소자들이 존재할 수 있다는 것이 이해될 것이다. 반대로, 소자가 다른 소자에 "바로 접속" 또는 "바로 결합"된 것으로 참조될 때, 중재 소자들은 존재하지 않는다. 소자들 간의 관계를 기술하기 위해 사용된 다른 단어들이 비슷한 방식으로 해석되어야 한다(예를 들어, "간(between)" 대 "직간(directly between)", "인접(adjacent)" 대 "바로 인접(directly adjacent)", 등).
본원에 사용된 전문용어는 특정한 실시예들만을 기술하기 위한 목적이고 예시적인 실시예들을 제한하는 것으로 의도되지 않는다. 본원에 사용된 바와 같이, 단수형들 "a", "an" 및 "the"는 문맥이 분명하게 달리 지시하지 않는 한, 복수형들도 또한 포함하는 것으로 의도된다. 용어들 "구성하다", "구성하는", "포함하다", 및/또는 "포함하는"은 본원에서 사용될 때, 언급된 특징들, 정수들, 단계들, 동작들, 소자들 및/또는 성분들의 존재를 명시하지만, 하나 이상의 다른 특징들, 정수들, 단계들, 동작들, 소자들, 성분들 및/또는 이들의 그룹의 존재 또는 부가를 방지하지 않는다는 것이 또한 이해될 것이다.
일부 대안적인 구현들에서, 알려진 기능들/동작들이 도면들에 도시된 것과 다른 순서로 발생할 수 있다는 것을 주의해야 한다. 예를 들어, 연속하여 도시된 두 도면들이 사실 동시에 실행되거나 때때로 수반된 기능성/동작들에 따라, 역순으로 실행될 수 있다.
달리 규정되지 않는 한, 본원에 사용된 모든 용어들(기술적 및 과학적 용어들을 포함)은 예시적인 실시예들이 속하는 당업자들 중 하나에 의해 일반적으로 이해되는 바와 동일한 의미를 갖는다. 예를 들어, 일반적으로 사용된 사전들에 규정된 용어들이 관련 기술의 문맥적 의미와 일치하는 의미들을 갖는 것으로 해석될 수 있고 본원에 명확하게 규정되지 않는 한 이상화되거나 매우 형식적인 의미로 해석되지 않을 것이라는 것이 또한 이해될 것이다.
예시적인 실시예들의 부분들 및 대응하는 상세한 설명이 소프트웨어의 형태로, 또는 컴퓨터 메모리의 데이터 비트들 상의 동작의 알고리즘 및 심볼 표현으로 제시된다. 이들 설명들 및 표현들은 당업자가 다른 당업자에게 자신들의 작업의 요지를 효과적으로 전달하는 방식들 중 하나이다. 본원에 사용되고, 일반적으로 사용되는 용어로서, 알고리즘은 바람직한 결과를 유도하는 일관된 연속 단계들로 인식된다. 상기 단계들은 물리량들의 물리적 조작들을 필요로 하는 단계들이다. 일반적으로, 반드시 그런 것은 아니지만, 이들 양들은 저장, 전송, 결합, 비교, 및 다르게 조작될 수 있는 광학, 전기, 또는 자기 신호들의 형태를 취한다. 기본적으로 공통 사용을 위해, 비트들, 값들, 소자들, 심볼들, 문자들, 용어들, 숫자들, 등과 같은 이들 신호들을 참조하는 것이 편리한 시간에 입증되었다.
이하의 설명에서, 예시적인 실시예들이 특정한 업무를 수행하거나 특정한 추상적인 데이터 유형들을 구현하는 루틴들, 프로그램들, 객체들, 성분들, 데이터 구조들, 등을 포함하는 프로그램 모듈들 또는 기능적 프로세스로서 구현될 수 있고 기존의 네트워크 소자들의 기존의 하드웨어를 사용하여 구현될 수 있는 액션들 및 동작들의 심볼 표현들(예를 들어, 흐름도의 형태로)을 참조하여 설명될 것이다. 이러한 기존의 하드웨어는 하나 이상의 CPU(Central Processing Unit)들, DSP(digital signal processor)들, ASIC(application-specific-integrated-circuit)들, FPGA(field programmable gate array) 컴퓨터 등을 포함할 수 있다.
그러나, 모든 이들 및 유사한 용어들이 적절한 물리량과 연관되고 단지 편리한 라벨들이 이들 양에 적용된다는 것을 주의해야 한다. 달리 구체적으로 언급되지 않는 한, 또는 논의로부터 명백한 바와 같이, "프로세싱" 또는 "컴퓨팅" 또는 "계산" 또는 "결정" 또는 "디스플레이" 등과 같은 용어들은 상기 컴퓨터 시스템들의 레지스터들 및 메모리들 내에서 물리, 전자량으로서 표현된 데이터를 상기 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 이러한 정보 저장, 송신 또는 디스플레이 디바이스들 내의 물리량으로서 유사하게 표현된 다른 데이터로 조작하고 변환하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 디바이스의 액션 및 프로세스를 참조한다.
상기 예시적인 실시예들의 소프트웨어 구현된 양태들은 또한 통상적으로 일부 형태의 프로그램 저장 매체 상에서 인코딩되거나 일부 유형의 송신 매체로 구현된다는 것을 주의한다. 상기 프로그램 저장 매체는 자기(예를 들어, 플로피 디스크 또는 하드 드라이브) 또는 광학(예를 들어, "CD ROM"(compact disk read only memory))일 수 있고, 판독 전용 또는 랜덤 액세스일 수 있다. 유사하게, 상기 송신 매체는 트위스티드 배선 쌍들, 동축 케이블, 광 섬유, 또는 당업계에 공지된 일부 다른 적절한 송신 매체일 수 있다. 상기 예시적인 실시예들은 임의의 주어진 구현의 이들 양태들로 제한되지 않는다.
상기 용어들 "피어" 및 "노드"는 본원에서 상호교환 가능하게 사용된다. 일반적으로, 피어는 상기 피어-투-피어 네트워크 내의 물리적 하드웨어를 참조한다. 피어는 또한 노드일 수 있다. 그러나, 노드는 또한 예를 들어, 상기 피어-투-피어 네트워크 내의 파일 위치(예를 들어, 테이블의 어드레스 또는 레퍼런스)의 논리적 예를 더 일반적으로 참조할 수 있다.
도 2는 예시적인 실시예에 따른 피어-투-피어 네트워크(18)의 개략도이다. 도 2에 도시된 상기 피어-투-피어 네트워크(18)에서, 중앙 컴퓨터(14)는 존재하지 않는다. 도시되지 않지만, 피어들(40)은 서로 접속부들에 의해 접속된다는 것을 이해해야 한다.
도 2는 피어-투-피어 파일 공유 네트워크(18)를 도시한다. 도 2의 상기 네트워크(18)는 상기 네트워크 콘텐트들을 열거하기 위해 중앙화된 성분들에 의존하지 않고, 오히려 모든 참여 클라이언트들에게 상기 디렉토리 데이터베이스를 분산시키기 위해 분산된 해시 테이블(DHT; 19)을 사용한다. 상기 DHT(19)는 상기 네트워크(18)의 모든 양태들을 함께 접속하는 점선으로 도 2에 도시된다.
상기 파일 공유 네트워크(18)는 제 1 인터넷 서비스 제공자(ISP; 24) 및 제 2 ISP(26)를 포함한다. 상기 ISP(24) 내에 피어들, 노드들 또는 사용자들(40)로 또한 참조될 수 있는 다양한 클라이언트들이 있다. 상기 다양한 클라이언트들, 피어들 또는 사용자들은 상기 참조 번호 뒤에 문자를 첨부함으로써 동일한 ISP 상의 다른 피어들로부터 구분될 것이다.
제 2 ISP(26)가 또한 다양한 피어들(42)을 갖는 것으로 도시된다. 상기 제 1 ISP(24) 및 상기 제 2 ISP(26)는 피어링 링크(28; peering link)를 통해 서로 접속될 수 있다.
일반적인 인터넷(22)이 도 2에 도시된다. ISP(24)는 송신 링크(30)에 의해 상기 일반적인 인터넷(22)에 접속될 수 있다. 송신 링크(30)는 또한 ISP(26)를 상기 일반적인 인터넷(22)으로 접속할 수 있다. 상기 일반적인 인터넷(22)에 위치된 피어들은 참조 번호 44에 의해 식별된다. 피어들(40 및 42)과 같이, 상기 일반적인 인터넷(22) 상의 피어들(44)은 적어도 하나의 ISP와 연관된다. 그러나, 상기 일반적인 인터넷(22) 상의 상기 피어들(44)과 연관된 ISP들은 도시되지 않는다.
상이한 ISP들(24, 26)과 연관된 피어들(40, 42, 44) 간의 파일들을 공유하기 위해 필요한 자원들의 양으로 인해(예를 들어, 피어링 링크들(28) 또는 송신 링크들(30)), 상이한 ISP들 상에 위치된 피어들 간의 파일 공유보다 서로 파일들을 공유하는 특정한 ISP 내에 피어들을 갖는 것이 가능한 한 바람직할 것이다.
화살표(32)는 상기 피어들(40a, 40b, 및 40d)이 서로 파일들을 공유하는 바람직한 파일 공유 방식을 예시한다. 상기 모든 피어들(40a, 40b, 및 40d)은 상기 ISP(24) 상에 위치된다. ISP(24) 내에 위치된 피어(40)가 ISP(24) 상에 또한 위치된 어떠한 피어에 의해서도 포함되지 않은 파일을 요청하는 일부 상황들이 전개될 수 있다. 따라서, 요청된 콘텐트를 획득하기 위해, 상기 피어(40)는 ISP(26) 또는 상기 일반적인 인터넷(22)에 위치된 사용자로부터 콘텐트를 획득해야 한다.
도 3은 다양한 ISP들(24, 26), 일반적인 인터넷(22), 및 네트워크 성분들(또한 컴퓨터들 또는 네트워크 소자들이라고 함)을 도시하는 개략도이다. 상기 네트워크 소자들(45)은 도 2와 관련하여 상기에 도시된 네트워크 전체에 분산될 수 있다. 예를 들어, 중앙화된 컴퓨터(14)를 갖지 않고, 오히려 DHT(19)를 사용하는 파일 공유 네트워크(18)와 같은 피어-투-피어 파일 공유 네트워크들에서 상기 컴퓨터 또는 네트워크 소자들(45)은 상기 파일 공유 네트워크 전체에 분산될 수 있다. 대안적으로, 상기 네트워크 소자들(45)은 접속부들(46)을 통해 상기 다양한 ISP들(24 및 26) 및 일반적인 인터넷(22)에 단순히 접속될 수 있다.
도 3에 도시된 바와 같이, 상기 네트워크 소자들(45)은 접속부들(50)을 통해 데이터베이스(52)에 접속된 하나 이상의 마이크로 프로세서들(48)을 포함할 수 있다. 상기 네트워크 소자들(45)은 또한 접속부들(55)을 통해 다른 데이터베이스(53)에 동작 가능하게 접속될 수 있다. 상기 데이터베이스(53)는 검색가능하고 이하에 상세하게 설명된 바와 같이 어느 ISP가 주어진 피어와 연관되는지와 같은 상기 네트워크 소자들(45)로 정보를 제공할 수 있다.
본 발명의 일부 실시예들에서, 상기 네트워크 소자들(45)은 상기 네트워크에 접속된 이미 존재하는 시스템 성분들일 수 있다. 기존의 네트워크 소자들(45)은 본원에 설명된 기능들을 수행하도록 프로그램될 수 있다. 예를 들어, 기존의 네트워크들은 본원에 설명된 기능을 수행하도록 프로그램된 네트워크 성분들을 포함할 수 있다. 다른 실시예들에서, 상기 네트워크 소자들(45)은 상기 네트워크(기존의 네트워크 성분들이 아니라)에 부가될 수 있고 본원에 설명된 기능들을 수행하도록 구성될 수 있다.
예시적인 실시예들은 두 프로세스들에 따라 동작한다. 제 1 프로세스는 모든 발표 피어 메시지들을 인터셉트하고 상기 DHT(19)를 업데이트하는 단계를 포함한다. 당업자가 알고 있는 바와 같이, 상기 발표 피어 메시지들은 파일 또는 콘텐트 및/또는 상기 파일 또는 콘텐트의 일부를 유지하는 것을 통신하도록 피어에 의해 사용된다. 예를 들어, 피어(40)는 네트워크 소자(45)를 포함할 수 있다. 마이크로프로세서(46)는 상기 피어 메시지들을 인터셉트하도록 구성될 수 있다. 상기 피어 메시지들은 상기 피어가 파일 또는 파일의 일부를 유지하는 상기 분산된 해시 테이블(DHT)에서 공개하는 피어들(예를 들어, 피어(40))로부터의 메시지일 수 있다.
ISP(24) 및 ISP(26)는 종종 서로 통신할 수 있어서, 상기 피어링 링크(28)가 상기 ISP(24)를 다른 ISP와 링크할 수 있는, 일반적인 전송 링크보다 높은 용량을 가질 수 있거나 낮은 비용으로 동작할 수 있다.
공지된 바와 같이, 단일 물리적 엔티티는 많은 별개의 논리적 아이덴티티들로 점-대-점 네트워크에 여러 번 참여할 수 있다. 이들 논리적 아이덴티티들은 sybils라고 한다. 상기 논리적 아이덴티티들은 고유한 식별자를 갖거나 예를 들어, 해시 함수를 이용하여 계산된 키일 수 있다. 상기 해시 함수는 예를 들어, 노드 및/또는 콘텐트와 연관된 정보로 수행될 수 있다. 예시적인 실시예들에서, 노드 또는 피어(예를 들어, 피어(40a))는 고유한 식별자 또는 키를 가질 수 있고 파일 또는 콘텐트가 고유한 식별자 또는 키를 가질 수 있다. 공지된 바와 같이, 인터넷 서비스 제공자(ISP) 스케일과 연관된 클라이언트들 간에 바로 교환된 트래픽을 캡처하는 것은 불가능하지 않다면 일반적으로 실행가능하지 않다. 사실, 데이터 수집은 각 ISP 라우터에서 수십만 개의 필터링 규칙들의 설정을 필요로 할 수 있다. 공지된 바와 같이, ISP 라우터들은 이러한 능력을 갖지 않는다.
따라서, 예시적인 실시예들은 상기 파일 또는 콘텐트의 고유한 식별자 또는 키에 가까운 식별자들 또는 키를 갖는 몇몇 논리적 아이덴티티들을 상기 DHT(19)에 삽입한다. 그 후, 논리적 엔티티들은 상기 발표 피어 메시지들을 인터셉트하도록 사용된다.
제 2 프로세스는 상기 파일 또는 콘텐트를 유지하는 피어들의 리스트를 요청하는 메시지들을 인터셉트하고 로컬 피어-세트들 또는 노드들의 리스트들로 상기 메시지들에 응답하는 단계를 포함할 수 있다. 상기 발표 피어 메시지들에 관하여 상기에 논의된 바와 같이, 상기 논리적 엔티티들은 또한 상기 DHT를 따라 일부 반복하는 검색에서 상기 파일을 유지하는 피어들의 리스트를 요청하는 상기 메시지들을 인터셉트할 수 있다. 상기 DHT들은 이들 콘텐트 요청들에 응답하도록 사용된다. 즉, 이들 프로세스들을 위한 엔진이 각 노드에서 상기 DHT 클라이언트이다.
공지된 바와 같이 DHT(19)는 상기 디렉토리 데이터베이스를 모든 참여하는 클라이언트들 또는 노드들에 분산하도록 사용된다. 공지된 바와 같이, 상기 디렉토리 데이터베이스는 상기 피어-투-피어 네트워크의 모든 피어들(예를 들어, 컴퓨터들 또는 물리적 머신들)의 리스트일 뿐만 아니라 상기 피어들 각각에 위치된 모든 콘텐트(예를 들어, 파일들, 비디오, 오디오 등)이다.
처음에, DHT(19)는 물리적 노드들 또는 피어들에 대한 참조(도 4a 참조) 및/또는 파일들 또는 콘텐트에 대한 참조(도 4b 참조)만을 유지할 수 있다. 상기에 설명된 바와 같이, 이들 참조들은 논리적 아이덴티티들로서 유지된다. 상기 논리적 아이덴티티들은 예를 들어, 해시 함수를 사용하여 계산된 고유한 식별자 또는 키를 가질 수 있다.
상기 파일들 또는 콘텐트는 상기 파일 또는 콘텐트에 대한 참조를 갖는 상기 DHT(19)를 포함하는 노드일 필요는 없는 노드에 저장될 수 있다. 예를 들어, 상기 파일 또는 콘텐트가 저장된 상기 노드는 상기 콘텐트에 대해 해시 함수를 수행할 수 있다. 그 후, 상기 노드는 상기 해시된 콘텐트의 결과에 가까운 논리적 아이덴티티를 갖는 노드를 결정한다. 그 후, 상기 파일 또는 콘텐트가 저장된 상기 노드는 상기 해시된 콘텐트의 결과에 가까운 논리적 아이덴티티를 갖는 노드에 공지의 방법을 사용하여 통지할 수 있다. 그러면 이하에 설명된 방법들은 상기 파일 또는 콘텐트와 연관될 수 있다.
도 4a는 물리적 노드들 또는 피어들에 대한 참조들만을 포함하는 DHT(예를 들어, DHT(19))를 도시한다. 공지된 바와 같이, 각각의 노드 또는 피어는 예를 들어, 발표 메시지 또는 핑 메시지(ping message)의 결과로서 상기 DHT(19)에 부가된다. 예를 들어, 피어-투-피어 네트워크들에 대한 공지된 파일 공유 시스템(BITTORRENT)에서, announce_peer(A) 메시지가 사용되고, 여기서 A는 상기 피어에 관한 일부 정보(예를 들어, 어드레스 및 포트)이다. 상기 BITTORRENT 파일 공유 시스템에서, 상기 네트워크에 참여하기 원하는 피어가 상기 네트워크의 피어들의 서브세트로 상기 announce_peer(A) 메시지를 전송할 것이다.
예를 들어, BITTORRENT 파일 공유 시스템 피어는 3 개의 가장 가까운 피어들을 포함하는 라우팅 테이블을 가질 수 있다. 상기 발표 피어 A는 find_peer(hash(A)) 메시지들을 상기 3 개의 가장 가까운 피어들로 전송할 수 있다. 상기 피어들 각각은 노드 식별자 A에 가까운 피어들을 자신들의 라우팅 테이블들에서 검색(look-up)할 수 있다. 상기 피어들은 상기 검색으로부터 상기 발표 피어 A로 상기 피어들을 리턴(예를 들어, 메시지를 사용하여)한다. 이러한 발표 프로세스는 해시(A)에 가장 가까운 피어들이 발견될 때까지 반복적으로 발생할 수 있다. 일단 해시(A)에 가장 가까운 피어들이 발견되면, 상기 발표 피어 A는 상기 해시(A)에 가장 가까운 피어들로 announce_peer(A) 메시지들을 전송할 수 있다.
상기에 설명된 바와 같이, 수신 피어는 상기 발표 피어를 상기 수신 피어와 연관된 DHT(19)에 부가할 수 있다. 공지된 바와 같이, 상기 수신 피어는 상기 발표 피어에 대한 고유한 식별자 또는 키를 결정하도록 해시 함수를 사용할 수 있다. 예를 들어, 상기 해시 함수는 입력으로서, 상기 발표 피어에 관한 정보를 취할 수 있다. 상기 입력 정보는 예를 들어, 상기 BITTORRENT 파일 공유 시스템 예로부터 "A"(예를 들어, 어드레스 및 포트)일 수 있다. 상기 해시 함수의 출력은 비트 시퀀스일 수 있다. 상기 비트 시퀀스(도 4a에서 hash_0 및 hash_500으로 나타낸)는 n 비트 길이(예를 들어, n = 160)일 수 있다.
이해되는 바와 같이, 상기 해시 함수로부터 2n 개의 별개의 출력들이 있을 수 있다. 따라서, 2n 개의 노드들(논리적 또는 물리적)을 식별하는 상기 DHT(19)에 2n 개의 엔트리들이 존재할 수 있다. 공지된 바와 같이, 제한된 수의 별도의 노드들이 존재하기 때문에, 비교적 큰 수적 차이들을 갖는 각각의 노드 또는 피어로 비트 시퀀스들을 할당하는 해시 함수를 이용함으로써 각 노드를 논리적으로 분리하는 것이 가능하다.
그 후, 상기 수신 피어(예를 들어, 노드(40a))는 상기 발표 피어(예를 들어, 노드(40d))를 <키, 값> 쌍으로 상기 수신 피어들의 DHT(19)에 부가할 수 있고, 상기 키는 상기 해시 함수의 결과이고(상기에 설명됨) 상기 값은 상기 DHT(19)의 엔트리에 대한 일부 정보이다. 예를 들어, 상기 값은 노드 ID(identification) 또는 명칭, 상기 네트워크에 관한 정보 또는 상기 콘텐트에 관한 정보(이하에 더 상세히 설명됨)일 수 있다. 도 4a는 각각 hash_0 및 hash_500에 대한 node_ID = computer_1 및 node_ID = computer_2의 값을 나타낸다.
상기 및 이하에 설명된 바와 같이, 예시적인 실시예들이 상기 <키, 값> 쌍을 저장할 수 있어서 상기 값은 공백(blank)이고 상기 키(예를 들어, 해시된 비트 시퀀스)만 임의의 필수 정보를 포함할 수 있다. 예를 들어, 상기 키(상기 피어에 기초한 해시된 키 또는 이하에 설명된 바와 같은 콘텐트가 되는)는 예를 들어, 데이터베이스(52) 및/또는 데이터베이스(53)에 저장된 다른 테이블에 대한 검색 값으로 사용될 수 있다.
상기 수신 피어는 모든 수신된 발표 메시지들에 대한 정보를 저장하지 않을 것이다. 예를 들어, 공지된 바와 같이, BitTorrent Inc.에 등록된 상기 BITTORRENT TM 파일 공유 시스템은 Kademlia로 당업계에 공지된 DHT(19)를 사용한다. 상기 Kademlia의 해시 함수는 노드들에 대한 식별자들 또는 키들을 출력하여 비트 단위 XOR(exclusive or)가 상기 노드들 간의 논리적 거리를 결정한다. 예를 들어, Kademlia에서, 주어진 2 개의 식별자들 또는 키들, a 및 b(예를 들어, 도 4a로부터 hash_0 및 hash_500), Kademlia는 그들의 비트 단위 XOR로서 그들 사이의 거리를 규정한다. Kademlia 피어는 식별자 또는 키의 0 < i < 160 비트들의 각각에 대한 노드들 또는 상기 피어들의 DHT의 자신으로부터 2^i < d < 2^(i+1)의 XOR 거리를 갖는 피어들만을 저장할 수 있다.
도 4b는 물리적 노드들 또는 피어들에 대한 참조들 및 콘텐트를 식별하는 노드들에 대한 참조들을 모두 포함하는 DHT(예를 들어, DHT(19))를 도시한다. 공지된 바와 같이, 발표 피어(예를 들어, 노드(40d))는 피어 발표들 자체로서 대체로 똑같이 콘텐트를 발표한다. 그러나, 상기 발표는 상기 콘텐트의 일부 표시를 포함할 수도 있다. 예를 들어, 상기로부터 BITTORRENT 파일 공유 시스템 예를 계속하면, 상기 발표 메시지는 상기 부가적인 파라미터 B는 상기 콘텐트의 표시인 announce_peer(A,B)일 수 있다.
공지된 바와 같이, 수신 피어는 상기 설명된 바와 같이 상기 수신 피어가 발표된 피어를 부가하는 것과 대체로 똑같이 상기 발표된 콘텐트를 상기 수신 피어들의 DHT(19)에 부가할 수 있다. 그러나, 상기 수신 피어는 또한 상기 콘텐트에 관한 정보를 저장할 수 있다. 상기 DHT(19)는 콘텐트 자체를 저장하지 않고, 반대로 상기 DHT(19)는 상기 콘텐트를 참조하는데 유용한 일부 정보를 저장한다.
공지된 바와 같이, 상기 해시 함수는 입력으로서, 노드 ID(예를 들어, 노드 어드레스) 또는 상기 콘텐트의 표현을 취할 수 있다. 그 다음, 상기 해시 함수는 예를 들어, 상기 피어들의 어드레스 또는 상기 콘텐트 타이틀에 기초하여 비트 시퀀스를 출력한다. 상기에 설명된 바와 같이, 피어는 Kademlia XOR 거리를 만족하는 피어들로부터 콘텐트의 발표들만을 저장할 수 있다.
상기에 설명된 바와 같이, <키, 값> 쌍은 상기 DHT에 저장될 수 있다. 상기에 설명된 바와 같이, 상기 키는 상기 해시 함수로부터의 비트 시퀀스 출력일 수 있다. 상기 값은 상기 설명된 바와 같을 수 있다; 그러나, 상기 값은 또한 상기 파일 또는 콘텐트에 관한 일부 정보를 포함할 수 있다. 예를 들어, 상기 파일 또는 콘텐트를 호스팅(hosting)하는 피어의 어드레스, 상기 값은 또한 상기 파일의 명칭, 상기 파일을 저장하는 피어 상의 상기 파일의 메모리 위치에 대한 포인터 또는 파일의 유형(예를 들어, 비디오, 오디오, 프로그램)을 포함할 수 있다.
상기 제 1 및 상기 제 2 프로세스들 각각은 도 5 내지 도 8을 참조하여 이하에 더 상세히 설명될 것이다. 도 5는 예시적인 실시예들에 따라 발표 피어들에 대한 방법의 흐름도를 도시한다. 도 6은 예시적인 실시예들에 따라 노드 아이덴티티들(sybils)을 저장하는 방법의 흐름도를 도시한다. 도 7은 예시적인 실시예들에 따라 콘텐트를 발표하는 메시지들을 인터셉트하는 방법의 흐름도를 도시한다. 도 8은 예시적인 실시예들에 따라 콘텐트를 요청하는 메시지들을 인터셉트하는 방법의 흐름도를 도시한다.
도 5와 연관된 방법의 단계들을 설명하면서, 도 2 및 도 3의 네트워크들에 대한 참조가 이루어진다. 또한 도 4a에 도시된 바와 같이 예시적인 분산된 해시 테이블(DHT)에 대한 참조가 이루어진다. 또한, 도 5는 도 4a와 관련하여 상기에 설명된 바와 같이 물리적 피어들을 갖는 DHT를 실장(populate)하는 것을 도시한다.
단계(S505)에서, 물리적 피어들 또는 노드들(예를 들어, 노드들(40a 및 40b))을 발표하는 피어 메시지들이 수신될 수 있다. 예를 들어, 발표 피어 메시지들은 도 4a와 관련하여 상기에 설명된 바와 같이 수신될 수 있다. 당업계에 공지된 바와 같이, 상기에 설명된 바와 같이 발표 피어 메시지들을 수신하는 것에 대안적으로 및/또는 부가적으로, 핑 메시지가 수신될 수 있다. 상기 핑 메시지는 상기 핑 메시지를 개시한 피어 또는 노드의 일부 ID를 포함할 수 있다.
단계(S510)에서, 상기 물리적 피어들 또는 노드들의 ID가 결정된다. 예를 들어, 도 4a와 관련하여 상기에 설명된 바와 같이, 상기 발표 피어 메시지는 상기 피어 또는 노드에 관한 일부 정보를 포함할 수 있다. 이 정보는 예를 들어, 상기 피어 또는 노드와 연관된 어드레스 및/또는 포트일 수 있다. 상기 ID는 또한, 예를 들어, 도 4a와 관련하여 상기에 설명된 바와 같은 노드 식별자 또는 키(예를 들어, 해시된 키)일 수 있다.
단계(S515)에서, 상기 물리적 피어들 또는 노드들의 ID에 기초하여 노드 식별자 또는 키가 결정된다. 예를 들어, 도 4a와 관련하여 상기에 설명된 바와 같이, 상기 해시 함수가 발표 피어 또는 노드에 대한 고유한 식별자 또는 키를 결정하도록 사용될 수 있다. 예를 들어, 상기 해시 함수는 입력으로서, 상기 발표 피어에 관한 정보를 취할 수 있다. 상기 해시 함수의 출력은 비트 시퀀스일 수 있다. 상기 비트 시퀀스(도 4a에서 hash_0 및 hash_500으로 표현됨)는 n 비트(예를 들어, n = 160)일 수 있다.
대안적으로, 단계(S510)에서 상기 ID가 해시된 키이면, 단계(S515)는 상기 노드 식별자 또는 키로서 상기 해시된 키를 사용하도록 결정할 수 있다.
단계(S520)에서, DHT(19)는 상기 노드 식별자 또는 키를 사용하여 상기 물리적 피어들 또는 노드들에 대한 참조와 함께 실장된다. 예를 들어, 도 4a와 관련하여 상기에 설명된 바와 같이, DHT(19)는 <키, 값> 쌍들로 참조되는 피어들 또는 노드들과 함께 실장될 수 있다. 상기 DHT(19) <키, 값> 쌍들은 상기 키가 상기 해시 함수의 결과이고 상기 값이 상기 DHT(19)의 엔트리에 관한 일부 정보이다. 대안적으로, 상기에 설명된 바와 같이, 상기 값은 공백 엔트리일 수 있다. 도 5의 상기 단계들은 피어-투-피어 네트워크(18)의 일생에 걸쳐 반복적으로 수행될 수 있다.
도 6은 예시적인 실시예들에 따라 노드 아이덴티티들(sybils)을 저장하는 방법의 흐름도를 도시한다. 도 6과 연관된 방법의 단계들을 설명하면서, 도 2 및 도 3의 네트워크들이 참조될 것이다. 도 4에 도시된 예시적인 분산된 해시 테이블(DHT)이 또한 참조될 것이다.
단계(S605)에서, 콘텐트를 발표하는 메시지들이 피어 또는 노드(예를 들어, 노드들(40a 또는 40b))에 의해 수신된다. 예를 들어, 도 4b와 관련하여 상기에 설명된 바와 같이, 발표 피어 메시지들이 수신될 수 있다. 상기에 설명된 바와 같이, 상기 발표 피어 메시지는 상기 메시지를 송신하는 상기 피어 또는 노드에 관한 일부 정보 및 발표되는 상기 콘텐트에 관한 일부 정보를 포함할 수 있다.
단계(S610)에서, 상기 노드와 연관된 정보 및/또는 상기 콘텐트를 포함하는 상기 노드의 ID가 결정될 수 있다. 예를 들어, 도 4b와 관련하여 상기에 설명된 바와 같이, 상기 발표 피어 메시지는 상기 피어 또는 노드에 관한 일부 정보를 포함할 수 있다. 이 정보는 예를 들어, 상기 피어 또는 노드와 연관된 어드레스 및/또는 포트일 수 있다.
단계(S615)에서, 상기 콘텐트에 관한 정보가 결정될 수 있다. 예를 들어, 도 4b와 관련하여 상기에 설명된 바와 같이, 상기 발표 피어 메시지는 상기 콘텐트에 관한 일부 정보를 포함할 수 있다.
단계(S620)에서, 상기 노드 정보 및/또는 상기 물리적 피어들 또는 노드들의 ID 및 상기 콘텐트에 기초하여 노드 식별자 또는 키가 결정된다. 예를 들어, 도 4b와 관련하여 상기에 설명된 바와 같이, 상기 해시 함수는 상기 콘텐트의 고유한 식별자 또는 키를 결정하기 위해 사용될 수 있다. 예를 들어, 상기 해시 함수는 입력으로서, 상기 발표 피어(예를 들어, 노드 정보) 또는 상기 콘텐트(예를 들어, 콘텐트 정보)에 관한 정보를 취할 수 있다. 상기 노드 정보는 상기 콘텐트를 발표하는 노드를 식별하고 상기 콘텐트 정보는 상기 콘텐트를 식별한다. 상기 해시 함수의 출력은 비트 시퀀스일 수 있다. 상기 비트 시퀀스(도 4a에서 hash_0 및 hash_500으로 표현됨)는 n 비트일 수 있다(예를 들어, n = 160). 대안적으로, 상기 발표 메시지는 상기 콘텐트를 나타내는 해시된 키를 포함할 수 있고 단계(S620)에서 이러한 해시된 키는 상기 메시지로부터 검색되고 상기 노드 식별자 또는 키로서 사용된다.
단계(S625)에서, DHT(19)는 상기 노드 식별자 또는 키, 상기 콘텐트에 대한 키 및/또는 참조들과 함께 실장될 수 있다. 예를 들어, 도 4b와 관련하여 상기에 설명된 바와 같이, DHT(19)는 <키, 값> 쌍들로 참조되는 상기 콘텐트와 함께 실장될 수 있다. 상기 DHT(19) <키, 값> 쌍들은 상기 키는 상기 해시 함수의 결과이고 상기 값은 상기 DHT(19)의 엔트리에 관한 일부 정보일 수 있다. 대안적으로, 상기에 설명된 바와 같이, 상기 값은 공백 엔트리일 수 있고 상기 키는 다른 테이블 또는 데이터베이스에서 검색키로 사용될 수 있다.
단계(S630)에서, 단계(S620)에서 결정된 상기 노드 식별자들 또는 키들에 기초하여, 논리적 가변 노드 식별자들 및/또는 변화 키들(또한 상기에 설명된 바와 같이 sybils로 알려짐)이 상기 DHT(19)에 저장(예를 들어, 발표)될 수 있다. 예를 들어, 도 4c에서, 상기 논리적 가변 노드 식별자들 및/또는 변화 키들이 hash_547, hash_548, hash_549, hash_551, hash_552 및 hash_553의 해시된 키를 갖고 도시되고 상기 파일 또는 콘텐트는 hash_550의 해시된 키와 같다.
예를 들어, 단계(S625)에서 키는 테이블(예를 들어, DHT(19))에 저장될 수 있고, 상기 키는 상기 발표 메시지에 기초할 수 있다. 상기 키는 콘텐트 정보를 포함할 수 있다. 상기 콘텐트 정보는 상기 콘텐트를 식별할 수 있다. 상기 발표 노드는 또한 견고성(robustness)을 달성하기 위해 상이한 노드들의 상기 콘텐트를 식별하는 상기 키의 k 개(k는 1 이상의 정수 값)의 사본(replica)들을 발표할 수 있다. 이들 k 개의 사본들은 상기 키와 가장 가깝고, 발표할 상기 콘텐트를 식별하는 상기 DHT(19)의 k 개의 노드들에 저장된다.
예를 들어, 단계(S630)에서, 상기 노드는 n 개(n은 2 이상의 정수 값)의 변화 키들을 상기 테이블에 저장할 수 있다. 복수의 변화 키들 각각은 상기 노드가 발표 노드가 아니면, 상기 저장된 키의 변화 또는 상기 k 개의 사본들 중 하나일 수 있다. 즉, 상기 변화 키들은 상기 키의 일부 변화와 함께 상기 발표 메시지에 기초하여 상기 저장된 키(또는 사본)의 sybils일 수 있다. 그러면 상기 키의 변화를 갖는 상기 sybils가 상기 DHT(19)로 들어갈 수 있다.
예를 들어, 마이크로-프로세서(46)는 n 개의 논리적 가변 노드 식별자들 및/또는 변화 키들(예를 들어, 키들)을 DHT(19)에 저장할 수 있다. 파일 또는 콘텐트와 관련하여, 상기 n 개의 논리적 가변 노드 식별자들 및/또는 변화 키들을 상기 DHT(19)에 저장하는 것은 예를 들어, 파일 또는 콘텐트에 대한 노드 ID를 결정하는 것을 수반할 수 있다. 그 후, 상기 논리적 가변 노드 식별자들 및/또는 변화 키들에 노드 ID들을 할당한다. 예를 들어, 마이크로-프로세서(46)는 상기 해시 키(예를 들어, hash_550)를 판독할 수 있고, 상기 논리적 가변 노드 식별자들 및/또는 변화 키들(예를 들어, 키들) 각각을 결정하기 위해 상기 해시 키에 대한 논리적 부가 또는 차감을 수행할 수 있다. 그 후, 상기 n 개의 논리적 가변 노드 식별자들 및/또는 변화 키들은 상기 DHT(19)에 저장될 수 있다.
예를 들어, 상기 n 개의 논리적 가변 노드 식별자들 및/또는 변화 키들 각각은 상기 저장된 파일 또는 콘텐트의 상기 해시 키로부터 시작하는 다음으로 가장 가까운 논리적 식별자 또는 키로부터 논리적으로 한 비트일 수 있다. 도 4c에 도시된 바와 같이, hash_551은 hash_550으로부터 논리적으로 한 비트 떨어져 있을 수 있고, hash_552는 hash_551로부터 논리적으로 한 비트 떨어진, 등일 수 있다. 예시적인 실시예들이 1비트 분리를 설명하지만, 예시적인 실시예들은 이에 제한되지 않는다.
상기 논리적 가변 노드 식별자들 및/또는 변화 키들과 연관된 노드 ID들은 상기 파일 또는 콘텐트(예를 들어, 해시 키 hash_550)와 연관된 상기 노드 ID(예를 들어, 해시 키)와 공동으로 다수의 프리픽스 비트들(prefix bits)을 공유할 수 있다. 예를 들어, 상기 논리적 가변 노드 식별자들 및/또는 변화 키들과 연관된 상기 노드 ID들 또는 키들은 상기 노드 ID와 연관된 비트들의 세트에서 공동인 적어도 p 비트들을 공유할 수 있다. p는 상기 DHT(19)에 참여하는 노드들의 수에 의해 결정될 수 있다. N이 상기 DHT(19)의 노드들의 총 수이면, 적어도 p는 b보다 커야 하고, 2^b=N ; lg2N = b이다.
바람직하게, 상기 DHT(19)는 국부화를 위한 파일 또는 콘텐트로 결정된 상기 DHT(19)의 각각의 파일 또는 콘텐트에 대한 적어도 256 개와 동일한 n 개의 논리적 가변 노드 식별자들 및/또는 변화 키들을 포함할 것이다. 각각은 24 프리픽스 비트들과 동일한 적어도 p를 공동으로 공유하는 노드 ID들을 갖는다.
당업자에게 명백한 바와 같이, 상기 논리적 가변 노드 식별자들 및/또는 변화 키들은 상기 DHT(19)에 나타난 상기 모든 파일들 또는 콘텐트와 관련하여 또는 연관되어 저장될 수 있다. 대안적으로, 상기 DHT(19)에 나타난 상기 파일들 또는 콘텐트의 일부 서브세트는 그들과 연관된 논리적 가변 노드 식별자들 및/또는 변화 키들을 가질 수 있다.
예를 들어, 인기 있는 파일들은 단계(S625)에서 상기 DHT(19)에 저장된 파일들과 연관될 수 있다. 인기 있는 파일은 예를 들어, 빈번하게 액세스되거나 통신된 파일이다. 이는 상기 논리적 가변 노드 식별자들 및/또는 변화 키들에 책임이 있는 머신들(예를 들어, 네트워크 소자(45))에서 매우 높은 로드(load)의 결과로 수 백만 개의 논리적 가변 노드 식별자들 및/또는 변화 키들의 도입을 필요로 하는 것으로 DHT(19)에서 이용 가능한 모든 파일들 또는 콘텐트들을 모니터링하는 것이 어렵다는 것을 증명할 수 있다. 또한, 각 파일을 모니터링하는 것이 불필요하게 주어져 트래픽의 다수뿐만 아니라 국부화될 수 있는 유일한 트래픽이 적은 파일들(예를 들어, 인기 있는 파일들)과 연관될 수 있다.
또한, 상기 논리적 가변 노드 식별자들 및/또는 변화 키들은 피어(예를 들어, 물리적 노드 또는 컴퓨터)를 나타내는 노드와 연관된 노드 식별자들 및/또는 키들보다, 상기 파일 또는 콘텐트를 나타내는 노드의 값이 논리적으로 또는 비트 단위로 더 가까운 비트 시퀀스들을 가질 수 있다. 상기 비트 시퀀스는 콘텐트 정보의 해시 함수에 기초할 수 있고, 상기 비트 시퀀스는 프리픽스를 나타내는 제 1 일련의 비트들 및 콘텐트를 나타내는 제 2 일련의 비트들을 포함할 수 있다. 상기 논리적 가변 노드 식별자들 및/또는 변화 키들은 복수의 제 1 변화 키들 각각을 생성하기 위해 상기 제 1 일련의 비트들의 변화된 서브세트를 포함할 수 있다.
상기 논리적 가변 노드 식별자들 및/또는 변화 키들(예를 들어, 단계(S625)에서 저장된 상기 논리적 가변 노드 식별자들 및/또는 변화 키들)이 저장되는 피어(예를 들어, 노드(40d))가 또한 그들의 존재를 피어들(예를 들어, 노드들(40a 및 40b))에게 통보할 수 있다. 예를 들어, 상기 설명된 바와 같은 BITTORRENT 파일 공유 시스템에서, 피어(예를 들어, 노드(40d))는 상기 피어에 가깝다고 결정된 피어들로 공지의 메시지를 전송할 수 있다. 상기 공지의 메시지는 상기 논리적 가변 노드 식별자들 및/또는 변화 키들 각각을 위한 핑 메시지일 수 있다. 상기 핑 메시지들 각각은 상기 논리적 가변 노드 식별자들 및/또는 변화 키들(예를 들어, 해시 키 또는 비트 시퀀스) 중 하나를 포함할 수 있다. 가까운 피어들은 공지의 방법을 사용하여 결정될 수 있다. 예를 들어, 가까운 피어들은 라우팅 테이블에 저장되거나 다른 메시지 유형을 사용하여 결정될 수 있다.
도 7은 예시적인 실시예들에 따라 콘텐트를 발표하는 메시지들을 인터셉트하는 방법의 흐름도를 도시한다. 도 7과 연관된 방법의 단계들을 설명하면서, 도 2 및 도 3의 네트워크들이 참조될 것이다. 도 4d 내지 도 4f에 도시된 바와 같은 예시적인 분산된 해시 테이블(DHT)이 또한 참조될 것이다.
단계(S705)에서, 콘텐트를 발표하는 메시지들이 인터셉트될 수 있다. 상기 발표 메시지는 상기 메시지를 인터셉트하는 상기 논리적 노드와 연관된 목적지 어드레스를 갖는다. 단계(S705)는 한가지 중요한 차이와 함께 단계(S605)(도 6과 관련하여 상기에 설명된 바와 같은)와 매우 유사하다. 단계(S605)에서 상기 발표 메시지들은 단계(S705)에서 상기 메시지가 논리적 노드에 의해 인터셉트되는 물리적 피어로 지향되었다. 즉, 상기 발표 피어는 그렇지 않으면 수신되지 않았을 메시지를 전송하고 상기 DHT(19)에 존재하지 않는 논리적 노드를 갖는다.
또한, 단계(S605)에서와 같이 수신된 발표 메시지에 대해, 상기 DHT는 상기 콘텐트와 연관된 노드 식별자들 또는 키들과 함께 실장된다(단계(S625)). 반대로, 단계(S710)에서 상기 인터셉트된 메시지에 관한 정보가 저장될 수 있다.
상기 정보는 상기 메시지의 특징 정보로 공지될 수 있고 키와 관련하여 저장될 수 있다. 상기 변화 키들과 연관된 특징 정보의 저장은 상기 변화 키가 기초되는 키와 연관된 상기 발표 메시지와 연관된 특징 정보를 저장하는 것을 포함할 수 있다. 상기 특징 정보는 노드 관련 정보 및 콘텐트 관련 정보를 포함할 수 있다.
상기 노드 관련 정보는 상기 제 2 메시지와 연관된 노드의 인터넷 서비스 제공자, 상기 제 2 메시지와 연관된 상기 노드의 명칭, 상기 제 2 메시지와 연관된 상기 노드의 어드레스, 및 상기 제 2 메시지와 연관된 상기 노드의 포트 중 적어도 하나를 포함할 수 있다. 상기 콘텐트 관련 정보는 상기 콘텐트의 설명, 상기 콘텐트의 유형, 상기 콘텐트의 사이즈, 상기 콘텐트에 대한 포인터 및 상기 제 2 메시지와 연관된 상기 노드와 연관된 저장 위치 중 적어도 하나를 포함할 수 있다.
단계(S705)와 관련하여 상기에 설명된 바와 같이, 상기 노드는 콘텐트 발표 메시지를 인터셉트할 수 있다. 상기 콘텐트 발표 메시지는 특징 정보를 포함할 수 있다. 상기 특징 정보는 데이터베이스에 저장될 수 있다. 예를 들어, 상기 특징 정보는 상기 발표 메시지의 어드레스와 관련된 변화 키와 관련하여, 상기 데이터베이스, 예를 들어, 데이터베이스(52) 또는 데이터베이스(53)에 저장될 수 있다. 상기 인터셉트된 발표 메시지와 연관된 상기 목적지 어드레스가 임의의 저장된 변화 키들과 어떠한 관계도 갖지 않으면, 상기 발표 메시지는 수신된 발표 메시지로 가정될 수 있고 도 4에 관하여 상기에 설명된 메시지에 따라 처리될 수 있다.
상기 정보는 예를 들어, 데이터베이스(52), 데이터베이스(53), 및/또는 상기 피어, 노드 또는 피어-투-피어 네트워크와 연관된 일부 다른 메모리에 저장될 수 있다. 상기 정보는 상기 파일 또는 콘텐트(예를 들어, 상기 노드 식별자 또는 해시키와 관련하여), 상기 메시지를 전송하는 피어, 상기 메시지를 수신하는 피어, 상기 메시지를 전송/발신하는 피어와 연관된 네트워크 및/또는 상기 메시지를 수신하는 피어와 연관된 네트워크와 관련하여 저장될 수 있다. 상기 정보는 상기 파일 또는 콘텐트 및 상기 메시지를 발신하는 피어와 연관된 인터넷 서비스 제공자(ISP)(예를 들어, 상기 콘텐트가 상주하는 로컬 네트워크)와 관련하여 저장될 수 있다. 데이터베이스(53)는 노드 ID들(예를 들어, 상기 노드들 또는 피어들의 어드레스) 및 ISP를 연관시키는 정보를 포함할 수 있다.
상기 설명에 대안적으로 및/또는 부가적으로, 단계(S710)에서 상기 정보는 상기 DHT(19)에 저장될 수 있다. 예를 들어, 상기에 설명된 바와 같이, 상기 DHT(19)의 엔트리들은 <키, 값> 쌍들로 저장될 수 있다. 상기 전술한 정보는 값으로 상기 DHT의 엔트리들로서 저장될 수 있다. 도 4d에 도시된 바와 같이, 수신된 발표는 발표 피어 메시지이다. 상기 발표 피어 메시지와 연관된 목적지는 hash_551과 매칭한다. 따라서, 새로운 값(node_ID = computer_3)이 hash_551에 대한 값 필드에 부가된다.
예를 들어, 도 4d에 도시된 바와 같이, 인터셉트된 발표는 발표 피어 메시지이다. 상기 발표 피어 메시지와 연관된 목적지는 hash_551과 매칭한다. 따라서, 새로운 값(node_ID = computer_3)이 hash_551에 대한 값 필드에 부가될 수 있다.
예를 들어, 도 4e에 도시된 바와 같이, 인터셉트된 발표는 콘텐트 발표 메시지이다. 상기 콘텐트 발표 메시지와 연관된 목적지는 hash_549와 매칭한다. 따라서, 새로운 값(node_ID = computer_3, content = content_2)이 hash_549에 대한 값 필드에 부가될 수 있다.
예를 들어, 도 4f에 도시된 바와 같이, 복수의 수신된 발표들은 복수의 노드들로부터 콘텐트를 발표한다. 상기 콘텐트 발표 메시지들과 연관된 목적지는 hash_549와 매칭한다. 따라서, 복수의 새로운 값들이 hash_549에 대한 값 필드에 부가될 수 있다.
예시적인 실시예들이 기존의 DHT 엔트리에 새로운 값들을 부가하는 것을 예시하지만, 당업자는 복제 키들(예를 들어, 해시 키)을 갖는 새로운 엔트리들을 부가할 수 있다는 것을 이해할 것이다.
도 6 및 도 7에 도시된 프로세스의 완료 시, 상기 피어-투-피어 네트워크는 상기 파일 또는 콘텐트를 유지하는 피어들을 끊임없이 인식할 수 있다. 이러한 전제 하에, 국부화가 수행될 수 있다.
도 8은 국부화된 피어-세트들 또는 노드들의 리스트로 파일들 및/또는 콘텐트에 대한 쿼리(query)들에 대한 응답을 상세히 설명한다. 도 8은 예시적인 실시예들에 따라 콘텐트를 요청하는 메시지들을 인터셉트하는 방법의 흐름도를 도시한다.
도 8과 연관된 방법의 단계들을 설명하면서, 도 2 및 도 3의 네트워크들이 참조될 것이다. 도 4d 내지 도 4f에 도시된 바와 같은 예시적인 분산된 해시 테이블(DHT)이 또한 참조될 것이다.
단계(S805)에서, 콘텐트를 요청하는 메시지가 인터셉트된다. 상기 메시지들은 상기 피어-투-피어 네트워크 내의 피어들로부터 수신될 수 있다. 대안적으로, 메시지는 피어(예를 들어, 피어(40a)) 내부의 메시지일 수 있다. 상기 메시지는 요청된 콘텐트의 표시, 상기 메시지의 전송자를 나타내는 식별자 또는 키(예를 들어, 노드 또는 피어 요청 콘텐트) 및/또는 상기 메시지의 목적지를 나타내는 식별자 또는 키를 포함할 수 있다. 상기 콘텐트를 요청하는 메시지는 목적지 어드레스를 포함할 수 있다.
예를 들어, 상기에 설명된 바와 같이, 피어-투-피어 네트워크들에 대해 잘 알려진 하나의 파일 공유 시스템은 BITTORRENT로 공지되었다. 상기 BITTORRENT 파일 공유 시스템은 상기 전술한 콘텐트 요청을 실행하기 위해 get_peer 객체를 사용한다. 피어는 상기 피어가 이미 알고 있는 노드 ID(예를 들어, 요청하는 피어와 연관된 DHT에 저장된)들을 갖는 k 개의 피어들로 get_peer 메시지들을 전송한다. 상기 k 개의 피어들이 상기 피어-투-피어 네트워크 전체에 광범위하게 분산될 가능성이 다소 있다.
공지된 바와 같이, BITTORRENT 파일 공유 시스템의 피어들은 다른 공지된 피어들의 메시지들로 응답한다. 예를 들어, 상기 응답 피어가 상기 콘텐트를 포함하는 어떠한 피어들도 알지 못하면, 상기 응답 피어는 요청 피어가 다음 반복에서 메시지를 전송할 수 있고, 상기 요청된 파일의 식별자와 더 가까운 식별자들을 갖는 공지된 피어들의 리스트로 응답한다. 공지된 바와 같이, 이러한 반복적인 프로세스는 상기 요청된 콘텐트의 사본 또는 일부를 유지하는 피어들의 리스트로 상기 get_peer 메시지가 응답할 때까지 반복한다. 상기 피어들의 리스트는 예를 들어, 상기 피어의 어드레스 및 상기 콘텐트를 통해 액세스할 포트 번호를 포함할 수 있다.
당업자에게 명백하고, 상기에 논의된 바와 같이, 상기 피어-투-피어 네트워크와 연관된 수 백만 개의 파일들 또는 콘텐트가 있을 수 있다. 또한 DHT(19)에 상기 피어-투-피어 네트워크를 나타내는 수 백만 개의 빈(empty) 엔트리들(또는 비-엔트리들)이 있을 수 있다. 이와 같이, 메시지들은 상기 요청된 콘텐트를 가질 수 있는 상기 피어-투-피어 네트워크 내의 잠재적인 노드 식별자들 또는 키들을 인식하는 모든 피어들에 이르지 못할 수 있다. 따라서, 종래의 피어-투-피어 네트워크들에서, 네트워크 피어들이 상기 콘텐트를 요청하는 메시지들을 수신하지 못하고 따라서 상기 피어-투-피어 네트워크 내의 일부 콘텐트의 존재의 표시를 포함하는 메시지로 응답하지 못할 가능성이 높다.
그러나, 도 6을 참조하여 상기에 설명된 바와 같이, 예시적인 실시예들에서, 상기 DHT(19)는 다수의 논리적 가변 노드 식별자들 및/또는 변화 키들을 포함할 수 있다. 상기 논리적 가변 노드 식별자들 및/또는 변화 키들의 각각은 상기 DHT(19)의 상기 콘텐트 또는 파일과 관련된 정보를 포함할 수 있다. 예를 들어, 도 4f에 도시된 바와 같이, 상기 해시 키 hash_549와 연관된 상기 노드는 컴퓨터들(3 내지 7)이 콘텐트(2)의 적어도 일부를 갖는 것을 나타내는 정보를 포함한다.
이렇게 함으로써, 상기에 설명된 반복적인 프로세스에서, 정보가 상기 요청된 콘텐트에 대한 요청을 수신 또는 인터셉트할 수 있는 상기 요청된 콘텐트의 식별자를 가변함으로써 생성되는 피어 또는 노드(예를 들어, 피어(20a)) 상의 테이블(예를 들어, DHT(19))에 논리적 가변 노드 식별자들 및/또는 변화 키들이 저장될 가능성이 비교적 높다. 예를 들어, 시스템 설계자가 공지의 툴(tool)들을 사용하면 콘텐트에 대한 모든 요청들을 인터셉트하도록 시스템을 현실적으로 설계할 수 있다.
도 8로 돌아가서, 단계(S810)에서 노드 식별자 또는 키가 콘텐트 메시지를 요청하는 콘텐트에 기초하여 결정될 수 있다. 예를 들어, 상기 콘텐트 메시지에 대한 요청은 상기 요청된 콘텐트와 연관된 상기 노드 식별자 또는 키를 포함할 수 있다. 그 경우, 상기 노드는 상기 노드 식별자 또는 키를 결정하도록 상기 요청 메시지를 판독할 수 있다. 대안적으로, 상기 요청된 콘텐트는 상기 노드 식별자 또는 키를 결정하기 위한 상기 해시 함수(상기에 설명된)에 대한 입력으로서 사용될 수 있다.
단계(S815)에서, 상기 요청된 콘텐트가 어디서 발견될 수 있는지를 노드가 아는지 결정된다. 상기 콘텐트를 포함하는 노드들의 리스트가 생성될 수 있다. 이러한 결정은 공지의 방법들을 사용하여 행해질 수 있다. 예를 들어, 상기에 설명된 바와 같이, 키 검색이 DHT(19) 상에서 수행될 수 있다. 수신 피어(예를 들어, 40a)가 도 4f에 도시된 바와 같은 상태의 DHT(19)를 포함한다고 가정한다. 피어(예를 들어, 40d)가 콘텐트(3)를 요청하면, 상기 수신 피어는 상기 DHT의 키 검색을 수행할 수 있다. 상기 수신 피어는 콘텐트(3)에 관한 어떠한 정보도 발견할 수 없다. 따라서, 공지된 바와 같이, 상기 수신 피어는 상기 수신 피어가 알고 있는 피어들의 리스트(예를 들어, 컴퓨터들(1 내지 7))로 응답한다.
한편, 상기 피어가 콘텐트(2)를 요청하면, 상기 수신 피어는 상기 DHT의 키 검색을 다시 수행할 것이다. 이 때, 상기 수신 피어는 상기 콘텐트를 포함하는 피어들(예를 들어, 컴퓨터들(3 내지 7))을 발견한다. 공지된 바와 같이, 종래 기술의 시스템들에서, 상기 수신 피어는 상기 검색의 결과로서 발견된 모든 피어들을 포함하는 메시지로 응답할 수 있다.
또한, 상기에 설명된 바와 같이, 상기 논리적 가변 노드 식별자들 및/또는 변화 키들은 피어(예를 들어, 물리적 노드 또는 컴퓨터)를 나타내는 노드와 연관된 노드 식별자들 및/또는 키들보다 상기 파일 또는 콘텐트를 나타내는 상기 노드의 값이 논리적 또는 비트단위로 더 가까운 비트 시퀀스들을 가질 수 있다. 상기 비트 시퀀스는 상기 노드 정보 및 상기 콘텐트 정보의 해시 함수에 기초할 수 있고, 상기 비트 시퀀스는 프리픽스를 나타내는 제 1 일련의 비트들 및 상기 콘텐트를 나타내는 제 2 일련의 비트들을 포함할 수 있다. 상기 논리적 가변 노드 식별자들 및/또는 변화 키들은 복수의 제 1 변화 키들 각각을 생성하기 위해 상기 제 1 일련의 비트들의 변화된 서브세트를 포함할 수 있다.
상기 노드들의 리스트를 결정하는 것은, 제 1 키의 상기 제 1 일련의 비트들과 매칭하는 상기 제 1 일련의 비트들과 함께 키들 또는 변화 키들을 갖는 상기 DHT(19)의 엔트리들을 결정하고 상기 결정된 엔트리들로부터 상기 노드들의 리스트를 생성하는 단계를 포함하여, 상기 결정된 엔트리들과 연관된 노드들은 상기 요청된 콘텐트를 나타내는 특징 정보를 갖는다.
그러나, 예시적인 실시예들에 따라, 상기 요청 피어들의 네트워크(예를 들어, ISP)와 연관된 로컬 피어들만이 상기 응답에 제공될 수 있다. 따라서, 단계(S820)에서, 상기 요청자와 연관된 ISP가 결정된다. 예를 들어, 마이크로-프로세서(46)는 데이터베이스(53)로부터 검색된 네트워크 정보와 함께 요청 피어와 연관된 어드레스를 비교할 수 있다. 대안적으로 및/또는 부가적으로, 마이크로-프로세서(46)는 상기 DHT(19)로부터 판독된 정보를 사용할 수 있다. 예를 들어, 마이크로-프로세서(46)는 상기 요청 피어와 연관된 값 필드에 저장된 정보를 사용할 수 있다.
단계(S825)에서, 단계(S815)에서 발견된 상기 각각의 노드들과 연관된 ISP가 결정된다. 예를 들어, 마이크로-프로세서(46)는 데이터베이스(53)로부터 검색된 네트워크 정보와 함께 상기 각각의 노드들과 연관된 어드레스를 비교할 수 있다. 대안적으로 및/또는 부가적으로, 마이크로-프로세서(46)는 상기 DHT(19)로부터 판독된 정보를 사용할 수 있다. 예를 들어, 마이크로-프로세서(46)는 상기 각각의 노드들과 연관된 값 필드에 저장된 정보를 사용할 수 있다.
단계(S830)에서, 상기 노드들의 리스트는 단계(S820)에서 결정된 상기 요청자들의 ISP에 기초하여 필터링된다. 상기 필터링된 노드들의 리스트는 상기 요청자와 동일한 ISP와 연관된 노드들만을 포함할 수 있다. 상기 필터링된 노드들의 리스트는 또한 상기 요청자들에 대해 비교적 양호한 품질 및/또는 비교적 저렴한 접속성(예를 들어, 피어링 합의)을 갖는 노드들을 포함할 수 있다. 단계(S835)에서 상기 요청자는 상기 필터링된 노드들의 리스트에 기초하여 피어-세트 또는 노드들의 리스트를 포함하는 메시지로 응답한다.
예를 들어, 단계(S820)에서, 마이크로-프로세서(46)는 상기 요청 노드가 네트워크(24)의 멤버라는 것을 결정할 수 있다. 부가적으로, 단계(S825)에서, 마이크로-프로세서(46)는 컴퓨터들(3, 4 및 7)이 네트워크(24)의 멤버들이라고 결정할 수 있다. 또한, 단계(S825)에서, 마이크로-프로세서(46)는 컴퓨터들(5 및 6)이 네트워크(26)의 멤버들이라고 결정할 수 있다. 예시적인 실시예들에 따라, 단계(S830)의 상기 로컬 피어-세트 또는 노드들의 리스트는 컴퓨터들(3, 4 및 7)을 포함하고 컴퓨터들(5 및 6)은 포함하지 않을 것이다.
상기 필터링된 노드들의 리스트가 문턱값 수보다 작으면, 부가적인 노드들이 상기 노드들의 리스트에 부가될 수 있고, 상기 부가적인 노드들은 상기 노드들의 리스트로부터 필터링된 노드들을 포함할 수 있다.
상기 예시적인 실시예들이 ISP 네트워크들을 참조하지만, 예시적인 실시예들은 이에 제한되지 않는다. 예를 들어, 도 8에서 ISP가 예를 들어, 상기 요청 피어 또는 노드 및 상기 응답의 상기 피어-세트의 노드들 또는 노드들의 리스트와 연관된 임의의 로컬 네트워크로 대체될 수 있다.
콘텐트와 연관된 노드 식별자들 및 키들 및 이들의 논리적 가변 노드 식별자들 및/또는 변화 키들은 수명을 갖는다. 임의의 식별자 또는 키와 연관된 시간의 문턱값 기간이 만료되면, 상기 식별자 또는 키와 연관된 테이블의 엔트리가 삭제될 수 있다. 예를 들어, (예를 들어, 30분 또는 2시간의) 문턱값 기간이 만료된 후, DHT(19)의 키의 엔트리 이후, 상기 엔트리가 삭제될 수 있다.
본 발명의 대안적인 실시예들이 컴퓨터 시스템을 사용하여 컴퓨터 프로그램 제품으로서 구현될 수 있고, 상기 컴퓨터 프로그램 제품은 예를 들어, 디스켓, CD-ROM, ROM, 또는 고정된 디스크와 같은 유형 또는 비-임시 데이터 기록 매체(컴퓨터 판독가능 매체) 상에 저장된 일련의 컴퓨터 명령들, 코드 세그먼트들 또는 프로그램 세그먼트들이거나 컴퓨터 데이터 신호로 구현될 수 있고, 상기 신호는 예를 들어, 마이크로파 또는 적외선과 같은 무선 매체 또는 유형의 매체를 통해 송신된다. 상기 일련의 컴퓨터 명령들, 코드 세그먼트들 또는 프로그램 세그먼트들은 상기 설명된 예시적인 실시예들의 방법들의 기능의 전부 또는 일부를 구성할 수 있고, 또한 임의의 메모리 디바이스, 반도체, 자기, 광학과 같은 휘발성 또는 비-휘발성 또는 다른 메모리 디바이스에 저장될 수 있다.
당업자에게 명백하고, 상기에 논의된 바와 같이, 상기 피어-투-피어 네트워크와 연관된 수 백만 개의 파일들 또는 콘텐트가 있을 수 있다. 또한, 상기 피어-투-피어 네트워크를 나타내는 DHT(19)에 수 백만 개의 빈 엔트리들(또는 비-엔트리들)이 있을 수 있다. 이와 같이, 메시지들이 상기 요청된 콘텐트를 가질 수 있는 상기 피어-투-피어 네트워크 내의 잠재적인 노드 식별자들 또는 키들을 인식하는 모든 피어들에 도달하지 않을 수 있다. 따라서, 종래의 피어-투-피어 네트워크들에서, 네트워크 피어들이 상기 콘텐트를 요청하는 메시지들을 수신할 수 없어서 상기 피어-투-피어 네트워크 내의 일부 콘텐트의 존재의 표시를 포함하는 메시지로 응답할 수 없을 가능성이 높다.
그러나, 도 6 및 도 8을 참조하여 상기에 설명된 바와 같이, 예시적인 실시예들에서, 상기 DHT(19)는 다수의 논리적 가변 노드 식별자들 및/또는 변화 키들을 포함할 수 있다. 각각의 상기 논리적 가변 노드 식별자들 및/또는 변화 키들은 상기 DHT(19)의 상기 파일 또는 콘텐트와 관련된 정보를 포함할 수 있다. 예를 들어, 도 4f에 도시된 바와 같이, 해시 키 hash_549와 연관된 상기 노드는 컴퓨터들(3 내지 7)이 콘텐트(2)의 적어도 일부를 갖는다는 것을 나타내는 정보를 포함한다. 이렇게 함으로써, 상기에 설명된 반복적인 프로세스에서, 상기 요청된 콘텐트와 관련된 정보를 포함하는 피어 또는 노드(예를 들어, 피어(20a))가 상기 콘텐트에 대한 요청을 수신하거나 인터셉트할 가능성이 비교적 높다.
부가적으로, 상기 논리적 가변 노드 식별자들 및/또는 변화 키들과 관련하여 저장된 상기 정보는 상기 DHT(또는 다른 곳)에 저장된 노드 정보와 연관된 네트워크들(예를 들어, ISP들)에 대한 참조를 포함할 수 있다. 따라서, 콘텐트에 대한 요청들에 대한 응답 메시지들이 상기 콘텐트에 대한 요청의 전송자와 동일한 네트워크와 연관된 노드들의 리스트 또는 피어-세트들만을 포함할 수 있다.
예시적인 실시예들이 구체적으로 도시되고 설명되었지만, 당업자는 형태 및 상세에 대한 변화들이 청구항의 정신 및 범위를 벗어나지 않고 행해질 수 있다는 것을 이해할 것이다.
따라서 본 발명이 설명되고, 동일하게 다양한 방법으로 변화할 수 있다는 것이 명백해질 것이다. 이러한 변화들은 본 발명으로부터 벗어나는 것으로 간주되지 않고, 모든 이러한 수정들이 본 발명의 범위에 포함되는 것으로 의도된다.

Claims (10)

  1. 피어-투-피어 네트워크의 노드에서, 제 1 콘텐트를 발표(announcing)하는 제 1 메시지를 수신하는 단계;
    상기 노드에 의해, 상기 제 1 메시지에 기초하여 제 1 키를 테이블에 저장하는 단계로서, 상기 제 1 키는 제 1 노드 정보 및 제 1 콘텐트 정보를 나타내고, 상기 제 1 노드 정보는 상기 제 1 콘텐트를 발표하는 제 1 노드를 식별하고, 상기 제 1 콘텐트 정보는 상기 제 1 콘텐트를 식별하는, 상기 제 1 키 저장 단계;
    상기 노드에 의해, 상기 제 1 메시지의 수신에 응답하여 복수의 제 1 변화 키들을 생성하는 단계로서, 상기 복수의 제 1 변화 키들은 상기 제 1 노드 정보 및 상기 제 1 콘텐트 정보 중 적어도 하나를 변화시켜 생성되는, 상기 복수의 제 1 변화 키들을 생성하는 단계, 및
    상기 노드에 의해, 상기 복수의 제 1 변화 키들을 상기 테이블에 저장하는 단계로서, 상기 복수의 제 1 변화 키들 각각은 상기 저장된 제 1 키의 변화인, 상기 복수의 제 1 변화 키들 저장 단계를 포함하고,
    상기 노드는 요청 메시지의 인터셉트(intercepting)에 응답하여 상기 제 1 키 및 상기 테이블에 기초하여 노드들의 리스트를 발생시키기 위해 저장된 상기 복수의 제 1 변화 키들을 이용하고, 상기 노드들의 리스트는 상기 노드들의 리스트가 상기 요청 메시지의 전송자와 연관된 네트워크와 연관된 노드들만을 포함하도록 필터링되는, 방법.
  2. 제 1 항에 있어서,
    상기 제 1 키 저장 단계는 상기 제 1 콘텐트 정보의 함수에 기초하여 비트 시퀀스를 결정하는 단계를 포함하고, 상기 비트 시퀀스는 키 프리픽스(key prefix)를 나타내는 제 1 일련의 비트들 및 상기 제 1 콘텐트를 나타내는 제 2 일련의 비트들을 포함하고,
    상기 복수의 제 1 변화 키들 저장 단계는 상기 복수의 제 1 변화 키들 각각을 생성하기 위해 상기 제 1 일련의 비트들의 서브세트를 변화하는 단계를 포함하는, 방법.
  3. 제 1 항에 있어서,
    상기 제 1 키 저장 단계는 상기 제 1 키와 관련하여 상기 제 1 메시지의 특징 정보를 저장하는 단계를 더 포함하고,
    상기 복수의 제 1 변화 키들 저장 단계는 상기 복수의 제 1 변화 키들 각각과 관련하여, 상기 제 1 키와 관련하여 저장된 상기 제 1 메시지의 특징 정보를 저장하는 단계를 더 포함하고,
    상기 노드 관련 정보는 상기 제 2 메시지와 연관된 노드의 인터넷 서비스 제공자, 상기 제 2 메시지와 연관된 상기 노드의 명칭, 상기 제 2 메시지와 연관된 상기 노드의 어드레스, 및 상기 제 2 메시지와 연관된 상기 노드의 포트 중 적어도 하나를 포함하고,
    상기 콘텐트 관련 정보는 상기 콘텐트의 설명, 상기 콘텐트의 유형, 상기 콘텐트의 사이즈, 상기 콘텐트에 대한 포인터 및 상기 제 2 메시지와 연관된 상기 노드와 연관된 저장 위치 중 적어도 하나를 포함하는, 방법.
  4. 제 3 항에 있어서,
    상기 노드에 의해, 제 2 콘텐트를 발표하는 제 2 메시지를 인터셉트(intercept)하는 단계로서, 상기 제 2 메시지는 목적지 어드레스를 포함하는, 상기 제 2 메시지 인터셉트 단계; 및
    상기 노드에 의해, 상기 목적지 어드레스에 기초하여 생성된 키의 상기 제 1 일련의 비트들이 상기 복수의 제 1 변화 키들 중 하나의 상기 제 1 일련의 비트들과 매칭하면 상기 복수의 제 1 변화 키들 중 하나와 관련하여 상기 제 2 메시지와 연관된 특징 정보를 저장하는 단계를 더 포함하는, 방법.
  5. 제 4 항에 있어서,
    상기 목적지 어드레스에 기초하여 생성된 상기 키의 제 1 일련의 비트들이 상기 복수의 제 1 변화 키들 중 하나의 상기 제 1 일련의 비트들과 매칭하지 않으면,
    상기 노드에 의해, 상기 제 2 메시지에 기초하여 제 2 키를 테이블에 저장하는 단계로서, 상기 제 2 키는 제 2 노드 정보 및 제 2 콘텐트 정보를 나타내고, 상기 제 2 노드 정보는 상기 제 2 콘텐트를 발표하는 제 2 노드를 식별하고, 상기 제 2 콘텐트 정보는 상기 제 2 콘텐트를 식별하는, 상기 제 2 키 저장 단계; 및
    상기 노드에 의해, 복수의 제 2 변화 키들을 상기 테이블에 저장하는 단계로서, 상기 복수의 제 2 변화 키들 각각은 상기 저장된 제 2 키의 변화인, 상기 복수의 제 2 변화 키들 저장 단계를 더 포함하는, 방법.
  6. 피어-투-피어 네트워크에서 콘텐트를 국부화(localizing)하는 방법에 있어서,
    상기 피어-투-피어 네트워크의 노드에 의해, 요청 메시지를 인터셉트하는 단계로서, 상기 요청 메시지는 콘텐트에 대한 요청이고, 상기 요청 메시지는 목적지 어드레스를 포함하는, 상기 요청 메시지 인터셉트 단계;
    상기 노드에 의해, 상기 목적지 어드레스에 기초하여 제 1 키를 결정하는 단계;
    상기 노드에 의해, 상기 제 1 키 및 테이블에 기초하여 노드들의 리스트를 결정하는 단계로서, 상기 테이블은 복수의 엔트리들을 포함하고, 각각의 엔트리는 키 및 변화 키 중 하나를 갖고, 적어도 하나의 키는 발표 메시지에 기초하고, 상기 키는 콘텐트 정보를 나타내고, 상기 키는 노드 정보를 나타내는 연관된 값을 갖고, 상기 노드 정보는 콘텐트를 발표하는 노드를 식별하고, 상기 콘텐트 정보는 상기 콘텐트를 식별하고 각각의 변화 키는 상기 키들 중 하나의 변화이고, 각각의 변화 키는 상기 노드 정보 및 상기 콘텐트 정보 중 적어도 하나를 변화시켜 발생되고, 상기 노드들의 리스트를 결정하는 단계는 상기 노드들의 리스트가 상기 요청 메시지의 전송자와 연관된 네트워크와 연관된 노드들만을 포함하도록 상기 노드들의 리스트를 필터링하는 것을 포함하는, 상기 노드들의 리스트 결정 단계; 및
    상기 노드에 의해, 상기 요청 메시지의 전송자에게 상기 노드들의 리스트를 포함하는 응답 메시지를 전송하는 단계를 포함하는, 콘텐트 국부화 방법.
  7. 제 6 항에 있어서,
    적어도 하나의 키는 상기 콘텐트 정보의 함수에 기초하여, 프리픽스를 나타내는 제 1 일련의 비트들 및 상기 발표 메시지와 연관된 콘텐트를 나타내는 제 2 일련의 비트들을 포함하는 비트 시퀀스를 포함하고,
    적어도 하나의 변화 키는 상기 적어도 하나의 키의 상기 제 1 일련의 비트들의 변화된 서브세트를 포함하고,
    상기 테이블의 적어도 하나의 엔트리는 노드 관련 정보 및 콘텐트 관련 정보를 포함하는 특징 정보를 더 포함하는, 콘텐트 국부화 방법.
  8. 제 7 항에 있어서,
    상기 노드들의 리스트 결정 단계는,
    상기 테이블의 어느 엔트리들이 상기 제 1 키와 매칭하는 키들 또는 변화 키들을 갖는가를 결정하는 단계; 및
    상기 결정된 엔트리들과 연관된 노드들이 상기 요청된 콘텐트를 나타내는 특징 정보를 갖도록 상기 결정된 엔트리들로부터 상기 노드들의 리스트를 생성하는 단계를 포함하는, 콘텐트 국부화 방법.
  9. 피어-투-피어 네트워크의 노드에 있어서,
    테이블을 저장하도록 구성된 메모리; 및
    제 1 콘텐트를 발표하는 제 1 메시지를 수신하도록 구성된 프로세서로서, 상기 프로세서는 상기 제 1 메시지에 기초하여 제 1 키를 상기 테이블에 저장하도록 구성되고, 상기 제 1 키는 제 1 노드 정보 및 제 1 콘텐트 정보를 나타내고, 상기 제 1 노드 정보는 상기 제 1 콘텐트를 발표하는 제 1 노드를 식별하고, 상기 제 1 콘텐트 정보는 상기 제 1 콘텐트를 식별하고, 상기 프로세서는 상기 테이블에 복수의 제 1 변화 키들을 저장하도록 구성되고, 상기 복수의 제 1 변화 키들 각각은 상기 저장된 제 1 키의 변화이고, 상기 복수의 변화 키들 각각은 상기 제 1 노드 정보 및 상기 제 1 콘텐트 정보 중 적어도 하나를 변화시켜 생성되는, 상기 프로세서를 포함하고,
    상기 프로세서는 요청 메시지의 인터셉트에 응답하여 상기 제 1 키 및 상기 테이블에 기초하여 노드들의 리스트를 발생시키기 위해 저장된 상기 복수의 제 1 변화 키들을 이용하도록 구성되고, 상기 노드들의 리스트는 상기 노드들의 리스트가 상기 요청 메시지의 전송자와 연관된 네트워크와 연관된 노드들만을 포함하도록 필터링되는, 피어-투-피어 네트워크의 노드.
  10. 프로세서에 의해 실행될 때, 상기 프로세서가,
    제 1 콘텐트를 발표하는 제 1 메시지를 수신;
    상기 제 1 메시지에 기초하여 제 1 키를 테이블에 저장 - 상기 제 1 키는 제 1 노드 정보 및 제 1 콘텐트 정보를 나타내고, 상기 제 1 노드 정보는 상기 제 1 콘텐트를 발표하는 제 1 노드를 식별하고, 상기 제 1 콘텐트 정보는 상기 제 1 콘텐트를 식별함 -;
    상기 제 1 메시지의 수신에 응답하여 복수의 제 1 변화 키들을 생성 - 상기 복수의 제 1 변화 키들은 상기 제 1 노드 정보 및 상기 제 1 콘텐트 정보 중 적어도 하나를 변화시켜 생성됨 -;
    상기 복수의 제 1 변화 키들을 상기 테이블에 저장 - 상기 복수의 제 1 변화 키들 각각은 상기 저장된 제 1 키의 변화임 -; 및
    요청 메시지의 인터셉트에 응답하여 상기 제 1 키 및 상기 테이블에 기초하여 노드들의 리스트를 발생 - 상기 노드들의 리스트는 상기 노드들의 리스트가 상기 요청 메시지의 전송자와 연관된 네트워크와 연관된 노드들만을 포함하도록 필터링됨 - 시키도록 구성되는, 프로그램 코드 세그먼트들을 포함하는 비-임시 메모리.
KR1020137007122A 2010-08-25 2011-07-28 분산된 해시 테이블의 콘텐트에 대한 피어-투-피어 트래픽 국부화 KR101474233B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/868,454 US9055082B2 (en) 2010-08-25 2010-08-25 Peer to peer localization for content in a distributed hash table
US12/868,454 2010-08-25
PCT/US2011/045645 WO2012027055A1 (en) 2010-08-25 2011-07-28 Peer-to-peer traffic localization for content in a distributed hash table

Publications (2)

Publication Number Publication Date
KR20130062993A KR20130062993A (ko) 2013-06-13
KR101474233B1 true KR101474233B1 (ko) 2014-12-18

Family

ID=44534650

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137007122A KR101474233B1 (ko) 2010-08-25 2011-07-28 분산된 해시 테이블의 콘텐트에 대한 피어-투-피어 트래픽 국부화

Country Status (6)

Country Link
US (1) US9055082B2 (ko)
EP (1) EP2636205A1 (ko)
JP (1) JP5611468B2 (ko)
KR (1) KR101474233B1 (ko)
CN (1) CN103069781B (ko)
WO (1) WO2012027055A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5772597B2 (ja) * 2009-12-09 2015-09-02 日本電気株式会社 情報共有システム
KR20120058782A (ko) * 2010-11-30 2012-06-08 삼성전자주식회사 컨텐츠 중심 네트워킹 환경에서의 단말, 중간 노드 및 이들의 통신 방법
US9053311B2 (en) * 2011-11-30 2015-06-09 Red Hat, Inc. Secure network system request support via a ping request
WO2015047270A1 (en) * 2013-09-26 2015-04-02 Hewlett-Packard Development Company, L.P. Peer nodes in peer to peer networks
US10541938B1 (en) * 2015-04-06 2020-01-21 EMC IP Holding Company LLC Integration of distributed data processing platform with one or more distinct supporting platforms
CN110945831B (zh) 2018-05-08 2021-04-27 维萨国际服务协会 抗Sybil攻击身份的生成
CN112688870B (zh) * 2020-12-28 2022-11-04 杭州趣链科技有限公司 一种路由方法、路由装置及节点设备
CN112954080B (zh) * 2021-04-13 2022-03-04 苏州知微安全科技有限公司 一种中继路由金字塔数据存储方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080201718A1 (en) 2007-02-16 2008-08-21 Ofir Zohar Method, an apparatus and a system for managing a distributed compression system

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404488A (en) * 1990-09-26 1995-04-04 Lotus Development Corporation Realtime data feed engine for updating an application with the most currently received data from multiple data feeds
US7103772B2 (en) * 2003-05-02 2006-09-05 Giritech A/S Pervasive, user-centric network security enabled by dynamic datagram switch and an on-demand authentication and encryption scheme through mobile intelligent data carriers
US7730207B2 (en) * 2004-03-31 2010-06-01 Microsoft Corporation Routing in peer-to-peer networks
DE112007002682T5 (de) * 2006-11-06 2009-10-15 Dell Marketing USA L.P., Round Rock Ein System und Verfahren zum Verwalten von Daten über mehrere Umgebungen
DE602007010040D1 (de) * 2007-02-22 2010-12-02 Ericsson Telefon Ab L M Overlay-Netzwerk mit einheitlicher und fehlertoleranter verteilter Hash-Tabelle (DHT)
DE102007033812B4 (de) * 2007-07-19 2009-07-30 Voice.Trust Mobile Commerce IP S.á.r.l. Verfahren und Anordnung zur Authentifizierung eines Nutzers von Einrichtungen, eines Dienstes, einer Datenbasis oder eines Datennetzes
CN100502339C (zh) 2007-08-31 2009-06-17 华为技术有限公司 对等网络自治的方法、节点装置和系统
US20090252071A1 (en) * 2008-04-02 2009-10-08 Nokia Corporation Method and deevice for network messaging
JP5084694B2 (ja) * 2008-10-24 2012-11-28 Kddi株式会社 オーバレイネットワークにおける遅延時間推定方法、ピアノード及びプログラム
US8584228B1 (en) * 2009-12-29 2013-11-12 Amazon Technologies, Inc. Packet authentication and encryption in virtual networks

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080201718A1 (en) 2007-02-16 2008-08-21 Ofir Zohar Method, an apparatus and a system for managing a distributed compression system

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Andrew Lowenstern, and Arvid Norberg, "DHT Protocol", draft of BitTorrent.org(2008.02.29.)

Also Published As

Publication number Publication date
JP2013543667A (ja) 2013-12-05
CN103069781A (zh) 2013-04-24
JP5611468B2 (ja) 2014-10-22
WO2012027055A1 (en) 2012-03-01
CN103069781B (zh) 2016-03-09
EP2636205A1 (en) 2013-09-11
US20120054322A1 (en) 2012-03-01
KR20130062993A (ko) 2013-06-13
US9055082B2 (en) 2015-06-09

Similar Documents

Publication Publication Date Title
KR101474233B1 (ko) 분산된 해시 테이블의 콘텐트에 대한 피어-투-피어 트래픽 국부화
US8909747B2 (en) Method and apparatus for localization in peer-to-peer systems
JP5551270B2 (ja) ピアツーピアネットワークを分解して、分解されたピアツーピアネットワークを使用するための方法および装置
US20120185595A1 (en) Traffic Localization Mechanism For Distributed Hash Table Based Peer-To-Peer Networks
US8949329B2 (en) Content popularity extraction in distributed hash table based peer-to-peer networks
JP5666719B2 (ja) ピアツーピア・ネットワークにおける検索
US8244867B2 (en) System and method for the location of caches
KR101343310B1 (ko) 피어 투 피어 트래픽의 국소화
Shen et al. A proximity-aware interest-clustered P2P file sharing system
US8626854B2 (en) Traffic localization in peer-to-peer networks
US20070299820A1 (en) CRID-based metadata management architecture and service for p2p networks
EP2433412A1 (en) Limiting storage messages in peer to peer network
Hecht et al. B-tracker: Improving load balancing and efficiency in distributed p2p trackers
Reynolds et al. Peer-to-peer keyword search: A retrospective
Cowan S4h: A Peer-to-Peer Search Engine with Explicit Trust
US9191438B2 (en) Methods and apparatus for identifying peers on a peer-to-peer network
Ferreira et al. Partial Swarm Merger: Increasing BitTorrent content availability
Kim et al. Novel File Search Protocol Using Super-peer based DHT Structure
Nandan et al. On index load balancing in scalable P2P media distribution
Ahmed et al. Naming
Kim et al. Scalable ultrapeer-based DHT protocol for file sharing
Ports Arpeggio: metadata indexing in a structured peer-to-peer network
Marin Introduction to Peer to Peer systems
Shannon Peer-to-Peer Systems
Tseng Availability in BitTorrent Systems

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20171220

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee