KR100956481B1 - 피어투피어 중계 네트워크 - Google Patents

피어투피어 중계 네트워크 Download PDF

Info

Publication number
KR100956481B1
KR100956481B1 KR1020087025828A KR20087025828A KR100956481B1 KR 100956481 B1 KR100956481 B1 KR 100956481B1 KR 1020087025828 A KR1020087025828 A KR 1020087025828A KR 20087025828 A KR20087025828 A KR 20087025828A KR 100956481 B1 KR100956481 B1 KR 100956481B1
Authority
KR
South Korea
Prior art keywords
peer
connection
peer system
message
relay
Prior art date
Application number
KR1020087025828A
Other languages
English (en)
Other versions
KR20080107472A (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 KR20080107472A publication Critical patent/KR20080107472A/ko
Application granted granted Critical
Publication of KR100956481B1 publication Critical patent/KR100956481B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/42Centralised routing
    • 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/1044Group management mechanisms 
    • H04L67/1046Joining mechanisms
    • 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/1044Group management mechanisms 
    • H04L67/1048Departure or maintenance mechanisms
    • 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/1044Group management mechanisms 
    • H04L67/1053Group management mechanisms  with pre-configuration of logical or physical connections with a determined number of other peers
    • H04L67/1055Group management mechanisms  with pre-configuration of logical or physical connections with a determined number of other peers involving connection limits
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/40Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterised by details of platform network
    • A63F2300/408Peer to peer connection
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/57Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of game services offered to the player
    • A63F2300/572Communication between players during game play of non game information, e.g. e-mail, chat, file transfer, streaming of audio and streaming of video
    • 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/1087Peer-to-peer [P2P] networks using cross-functional networking aspects
    • H04L67/1091Interfacing with client-server systems or between P2P systems

Abstract

본원 발명은 피어투피어 중계를 실행하기 위한 방법과 장치에 관한 것이다. 본 발명의 실시예에 따르면, 피어투피어 중계 네트워크는 N개의 피어 시스템을 구비하고 있으며, 각각의 피어 시스템은 연결 한계보다 같거나 작은 수의 피어 시스템에 연결되어 있으며, 상기 연결 한계는 2보다 같거나 크고, 상기 연결 한계는 N-2보다 같거나 작으며, 각각의 피어 시스템은 피어 시스템에 하나 이상의 중계 방식의 세트에 따라 데이터를 중계하도록 설정되어 있다.
피어투피어 중계 네트워크, 서버, 피어 시스템, 연결 한계, 중계 방식

Description

피어투피어 중계 네트워크{PEER-TO-PEER RELAY NETWORK}
전형적인 클라이언트(client) 서버 네트워크에서, 네트워크에 있는 각각의 클라이언트들은 중앙 서버에 연결된다. 클라이언트는 서버로부터 서비스와 데이터를 요청한다. 다른 클라이언트와 통신하기 위해 클라이언트는 서버에 요청을 한다. 전형적으로, 클라이언트는 다른 클라이언트에 직접 연결을 하지 않는다. N개의 클라이언트를 구비하고 있는 클라이언트 서버 네트워크에서, 각각의 클라이언트는 서버와 1개의 연결을 구비하고 있으며, 서버는 각각의 클라이언트에 대해 각각 N개의 연결을 구비하고 있다. 예를 들어, 도 31a에 도시된 바와 같이 6개의 클라이언트를 구비하고 있는 하나의 클라이언트 서버 네트워크에서 각각의 클라이언트는 서버에 1개의 연결을 구비하고 있으며, 서버는 클라이언트에 대해 각각 6개의 연결을 구비하고 있다.
전형적인 피어투피어(peer-to-peer) 네트워크(또는 "P2P 네트워크")에서, 피어투피어 네트워크에 있는 각각의 멤버(또는 피어)는 각각의 다른 멤버와 연결을 한다. 이런 직접적인 피어투피어 연결을 사용하여, 멤버는 다른 멤버에 중앙 집중화된 서버를 사용하기보다는 직접적으로 데이터를 보내고 데이터를 요청한다(예컨 대, 멤버가 서버를 통하여 상호작용을 하는 전형적인 클라이언트 서버 네트워크와 비교하였을 때). 전형적으로, 네트워크에 있는 각각의 멤버들은 네트워크 안에서 유사한 책임을 가지며, 멤버들은 (네트워크 멤버로서) 동등한 것으로 간주된다. N개의 피어를 구비하고 있는 피어투피어 네트워크에서 각각의 피어들은 다른 피어들에 대하여 N-1개의 연결을 구비하고 있다. 예를 들어, 도 31b에 도시된 바와 같이 6개의 피어를 구비한 피어투피어 네트워크에서 각각의 피어는 다른 피어에 대해 5개의 연결을 구비하고 있다.
어떤 피어투피어 네트워크에서, 서버는 주소 발견과 같은 어떤 중앙 집중화된 서비스를 위한 멤버들에 의해 사용된다(예컨대, 피어투피어 네트워크 형성을 위한 연결을 위하여).
본원발명의 목적은 피어투피어 중계를 효과적으로 실행하기 위한 방법과 장치를 제공하는 것이다.
본원 발명은 피어투피어 중계를 실행하기 위한 방법과 장치에 관한 것이다. 본 발명의 실시예에 따르면, 피어투피어(peer-to-peer) 중계 네트워크는, N개의 피어 시스템을 구비하고 있으며, 각각의 피어 시스템은 연결 한계보다 같거나 작은 수의 피어 시스템에 연결되어 있으며, 상기 연결 한계는 2보다 같거나 크고, 상기 연결 한계는 N-2보다 같거나 작으며, 각각의 피어 시스템은 피어 시스템에 하나 이상의 중계 방식의 세트에 따라 데이터를 중계하도록 설정되는 것을 특징으로 한다.
본 발명의 실시예에 따르면, 피어투피어 중계 네트워크용 서버는, 피어투피어 중계 네트워크를 구성하는 수단; 피어투피어 중계 네트워크에 피어 시스템을 부가하는 수단; 피어투피어 중계 네트워크를 지속하는 수단; 및 피어투피어 중계 네트워크 내의 연결을 추적하는 수단;을 포함하는 것을 특징으로 한다.
본 발명의 실시예에 따르면, 피어투피어 중계 네트워크용 피어 시스템은, 피어투피어 중계 네트워크 내의 피어 시스템에 연결된 어떤 다른 피어 시스템으로 데이터를 중계하는 수단; 피어투피어 중계 네트워크를 구성하는 수단; 피어투피어 중계 네트워크를 참가하는 수단; 피어투피어 중계 네트워크 내의 또 다른 피어 시스템에 연결하는 수단; 피어투피어 중계 네트워크를 지속하는 수단; 및 피어투피어 중계 네트워크 내의 상기 피어 시스템에 연결된 또 다른 피어 시스템으로부터 단절하는 수단;을 포함하는 것을 특징으로 한다.
본 발명의 실시예에 따르면, 피어투피어 중계 네트워크에서 데이터를 중계하는 방법은, 피어투피어 중계 네트워크에서 중계 피어 시스템에 연결된 전송 피어 시스템으로부터 중계 피어 시스템에 데이터를 수신하는 단계; 하나 이상의 중계 방식의 세트에 의해 표시된 0 이상의 피어 시스템을 선택하기 위한 상기 하나 이상의 중계 방식의 세트를 상기 데이터를 중계하는 피어 시스템에 적용하는 단계; 및 상기 데이터를 상기 하나 이상의 중계 방식의 세트를 적용하여 선택된 어떤 피어 시스템에 중계하는 단계;를 포함하는 것을 특징으로 한다.
본 발명의 실시예에 따르면, 피어투피어 중계 네트워크에 피어 시스템을 부가하는 방법은, 서버 및 참가 피어 시스템 사이의 연결을 개시하는 단계; 하나 이상의 구성된 피어투피어 중계 네트워크를 나타내는 상기 참가 피어 시스템에 격자 정보를 제공하는 단계; 하나 이상의 멤버 피어 시스템을 갖는 선택된 피어투피어 중계 네트워크를 나타내는 상기 참가 피어 시스템으로부터 격자 선택을 수신하는 단계; 상기 참가 피어 시스템에 하나 이상의 상기 멤버 피어 시스템 각각의 네트워크 주소를 제공하는 단계; 및 상기 참가 피어 시스템이 상기 멤버 피어 시스템에 연결되는 것을 나타내는 상기 참가 피어 시스템으로부터 연결 업데이트를 수신하는 단계;를 포함하고, 각각의 멤버 피어 시스템은 연결 한계보다 같거나 작은 수의 멤버 피어 시스템에 연결되어 있으며, 각각의 멤버 피어 시스템은 그 멤버 피어 시스템에 연결되어 있는 멤버 피어 시스템에 데이터를 중계하는 것에 대한 하나 이상의 중계 방식의 세트를 저장하는 것을 특징으로 한다.
본 발명의 실시예에 따르면, 피어투피어 중계 네트워크를 참가하는 방법은, 피어투피어 중계 네트워크 내에서 참가 피어 시스템으로부터 하나 이상의 멤버 피어 시스템 각각으로 참가 메시지를 전송하는 단계; 하나 이상의 멤버 피어 시스템 중 적어도 어느 하나로부터 참가 응답을 수신하는 단계; 하나 이상의 연결 방식의 세트에 따라서 연결 한계까지 하나 이상의 멤버 피어 시스템을 선택하는 단계; 및 각각 선택된 멤버 피어 시스템과의 연결을 개시하는 단계;를 포함하며, 상기 참가 응답은 긍정적이거나 부정적이어서, 긍정적인 참가 응답은 상기 전송 멤버 피어 시스템이 이용 가능한 연결을 갖는 것을 나타내고, 부정적인 참가 응답은 상기 전송 멤버 피어 시스템이 이용 가능한 연결을 갖지 않는 것을 나타내고, 각각의 멤버 피어 시스템은 상기 연결 한계보다 같거나 작은 수의 멤버 피어 시스템에 연결되고, 각각의 멤버 피어 시스템은 그 멤버 피어 시스템에 연결된 멤버 피어 시스템으로 데이터를 중계하는 것에 대한 하나 이상의 중계 방식의 세트를 저장하는 것을 특징으로 한다.
본 발명의 실시예에 따르면, 피어투피어 중계 네트워크를 구성하는 방법은, 서버 및 멤버 피어 시스템 중 어느 하나인 구성하는 피어 시스템 사이의 연결을 개시하는 단계; 상기 구성하는 피어 시스템으로부터 상기 서버로 피어투피어 중계 네트워크를 생성하도록 요청을 전송하는 단계; 및 상기 서버로부터 상기 구성하는 피어 시스템에 생성 확인을 수신하는 단계;를 포함하며, 상기 구성하는 피어 시스템은 상기 구성하는 피어 시스템이 연결하도록 허용되는 수의 피어 시스템을 정의하 는 연결 한계를 저장하고, 상기 구성하는 피어 시스템은 상기 구성하는 피어 시스템에 연결된 피어 시스템으로 데이터를 중계하는 것에 대한 하나 이상의 중계 방식의 세트를 저장하는 것을 특징으로 한다.
본 발명의 실시예에 따르면, 피어투피어 중계 네트워크 내의 피어 시스템을 연결하는 방법은, 연결되지 않은 피어 시스템이 연결 한계보다 작은 수의 멤버 시스템에의 다수의 개시 연결을 갖는 경우, 피어투피어 중계 네트워크 내에서 상기 연결되지 않은 피어 시스템으로부터 하나 이상의 멤버 피어 시스템으로 연결 가능 메시지를 전송하는 단계; 하나 이상의 상기 멤버 피어 시스템 중 적어도 어느 하나로부터 연결 가능 응답을 수신하는 단계; 하나 이상의 연결 방식의 세트에 따라서 상기 멤버 피어 시스템을 선택하는 단계; 및 선택된 상기 멤버 피어 시스템과의 연결을 개시하는 단계를 포함하며, 각각의 상기 연결 가능 응답은 긍정적이거나 부정적이어서, 긍정적인 연결 응답은 전송하는 상기 멤버 피어 시스템이 이용 가능한 연결을 갖는 것을 나타내고, 부정적인 상기 연결 응답은 전송하는 상기 멤버 피어 시스템이 이용 가능한 연결을 갖지 않는 것을 나타내고, 각각의 상기 멤버 피어 시스템은 상기 연결 한계보다 같거나 작은 수의 상기 멤버 피어 시스템에 연결되고, 각각의 상기 멤버 피어 시스템은 그 상기 멤버 피어 시스템에 연결된 멤버 피어 시스템으로 데이터를 중계하는 것에 대한 하나 이상의 중계 방식의 세트를 저장하는 것을 특징으로 한다.
본 발명의 실시예에 따르면, 피어투피어 중계 네트워크를 지속하는 방법은, 피어투피어 중계 네트워크 내에서 상기 피어 시스템으로부터 상기 피어 시스템에 연결된 하나 이상의 연결된 상기 피어 시스템 각각으로 유지 메시지를 전송하는 단계; 하나 이상의 연결된 상기 피어 시스템으로부터 수신된 어떤 응답을 평가하는 단계; 및 그 연결된 상기 피어 시스템으로부터의 상기 응답이 수용되지 않는 경우, 상기 피어 시스템 및 연결된 상기 피어 시스템 사이의 연결을 끊는 단계;를 포함하며, 각각의 상기 피어 시스템은 연결 한계보다 같거나 작은 수의 상기 피어 시스템에 연결되고, 각각의 상기 피어 시스템은 그 상기 피어 시스템에 연결된 피어 시스템으로 데이터를 중계하는 것에 대한 하나 이상의 중계 방식의 세트를 저장하는 것을 특징으로 한다.
피어투피어 중계 네트워크의 다양한 실시예는 바람직한 이익을 준다. 격자는 온라인 대용량 다중 플레이어 컴퓨터 게임을 포함한 다양한 네트워크 응용에서 사용될 수 있다. 온라인 게임 응용은 단지 하나의 공통적인 데이터 세트를 공유하고 유지한다는 하나의 공통점을 가지고 있는 네트워크 응용 그룹의 한 예이다. 데이터 세트가 하나의 피어에서 업데이트 될 때 정보는 다른 피어 그룹에 전송되고 격자 전체에 중계되며 따라서 각각의 피어는 업데이트 데이터 세트를 구비한다. 중계 격자는 제한된 네트워크 대역폭을 가지고 연결된 피어들이 그들 사이에서 데이터를 중앙 서버(데이터 분배를 위한)를 통하지 않고 교환하도록 허락한다. 이 네트워크는 다른 게임과 관련된 정보, 미디어(media) 파일, 스트리밍 오디오(streaming audio), 스트리밍 비디오(streaming video)인 게임 데이터를 교환하는데 사용될 수 있다.
본원 발명은 피어투피어 중계를 실행하기 위한 방법과 장치에 관한 것이다. 본 발명의 실시예에서, 복수개의 컴퓨터 시스템은 피어투피어 네트워크를 형성하며 연결되어 있다. 각각의 컴퓨터 시스템은 미리 결정된 다른 컴퓨터 시스템의 숫자까지 연결되어 있다. 통신하기 위해서, 컴퓨터 시스템은 연결된 시스템 각각에 메세지를 전송한다. 컴퓨터 시스템이 다른 컴퓨터 시스템으로부터 메세지를 수신할 때, 수신하는 컴퓨터 시스템은 그 피어투피어 중계 네트워크에 적용되는 중계 절차나 방식에 따라 다른 컴퓨터 시스템에 메세지를 전송하거나 중계한다. 중계 방식에 따라, 메세지는 네트워크를 통하여 모든 컴퓨터 시스템 멤버에게 전파된다.
도 1은 본 발명의 실시예에 따른 피어투피어 중계 네트워크를 보여준다. 피어투피어 중계 네트워크는 또한 "격자(grid)"라고 불린다. 도 1에 도시된 바와 같이, 10개의 피어 시스템 그룹(105A...J)(또한 "피어(peer)"라고 불린다)은 피어투피어 중계 네트워크를 형성하며 연결되어 있다. 각각의 피어 시스템(105)은 소니 컴퓨터 엔터테인먼트사에서 제조한 플레이 스테이션 2TM 같은 네트워크 어댑터를 가지고 있는 게임 콘솔(console)이 가능한 네트워크이다. 피어 시스템(105)은 직접적으로(예를 들어, 유선이나 무선 연결) 또는 간접적으로(예를 들어, 인트라넷이나 인터넷과 같은 공개적인 IP 네트워크를 통하여) 연결되어 있다. 본 발명의 실시예에 의하며, 피어 시스템(105)은 UDP 또는 TCP를 사용하여 연결되어 있다. 피어 시 스템(105)은 채팅 환경이나 온라인 게임 같은 네트워크 환경이나 활동을 지지하기 위해 데이터를 교환한다.
각각의 피어(105)는 또한 중앙 서버(110)와 인터넷을 통해 UDP 또는 TCP 연결과 같은 연결을 구비한다(서버(110)에 대한 연결은 도 1에는 도시되어 있지 않다). 서버(110)는 중앙 집중화된 서비스를 연결된 피어 시스템(105)에 제공하는 서버 컴퓨터 시스템이다. 본 발명의 실시예에서, 서버는 피어 시스템의 주소 디렉토리를 제공하고, 피어 시스템이 연결되어 있는 곳을 추적한다. 다른 서버 서비스의 예는 인증, 플레이어 매칭(matching), 피어 시스템 주소 추적을 포함하지만, 그것에 제한되지는 않는다. 다음에 기재되어 있는 것과 같이, 몇 가지 실시예에서 서버는 다중의 독립적이거나 관계되어 있는 피어투피어 중계 네트워크를 제공할 수 있다. 본 발명의 실시예에서, 서버는 클라이언트를 환경으로 나누거나 그룹화하는 것과 데이터를 적절하게 여과하는 다중 환경 또는 다중 세계를 제공한다. 본 발명의 실시예에서, 서버는 공동 진행중인 _월 _일자로 제출된 미국 특허 출원 번호 10/_ ("스위칭 설정 : 역동적으로 네트워크 통신 구조 사이에서 교환하기)와 _월 _일자로 제출된 미국 특허 출원 번호 10/_ ("멀티 유저 응용 프로그래밍 인터페이스")를 조합한 공개 정보에 기재되어 있는 서버의 하나 이상의 측면을 포함하고 있다.
네트워크(100)는 연결 한계가 3이다. 연결 한계는 서버에 의해 정해지고, 격자 안에서 허용되는 각각 피어(105) 연결의 최대 숫자로 정의된다. 본원 발명의 다른 실시예에 의하면, 하나의 피어(예를 들어, 격자를 형성하는 피어) 세트 또는 다중 피어가 연결 한계를 결정한다. 도 1에서, 연결 한계는 3이고 각각의 피어(105) 는 3개의 연결을 구비한다. 피어 시스템 A-J 각각은 다른 피어들에 대하여 3개의 연결을 구비한다(피어 시스템(105)A는 또한 피어 시스템 A 또는 피어 A라고 불린다). 네트워크(100)는 3-연결 피어투피어 중계 네트워크이고 따라서 각각의 피어(105)는 다른 피어에 대해 3개의 연결을 구비한다.
피어들(105)은 네트워크(100)를 통한 방송 메세지에 의해 통신한다. 피어들(105)은 네트워크(100)의 중계 방식에 따라 연결된 피어에 수신된 메세지를 중계하는 것에 의해 메세지를 전파한다. 본 발명의 실시예에서, 중계 방식은 피어(105)가 피어(105)에 연결된 각각의 피어들(105)에게 (ⅰ) 피어(105)는 피어(105)가 이미 중계한 메세지는 중계하지 않는다는 것과 (ⅱ) 피어(105)는 메세지를 수신한 중계 피어에 메세지를 되돌려주는 중계를 하지 않는다는 2가지 예외를 가지고 메세지를 중계하는 것으로 정의된다. 본 발명의 실시예에서, 피어(105)는 또한 이미 수신된 메세지를 가지고 있는 중계 피어(105)에게 메세지를 중계하지 않는다(예를 들어, 중계 피어(105)가 이미 메세지를 중계하기 전에 다중 피어(105)로부터 메세지를 수신했을 때). 본 발명의 다른 실시예에서, 다른 방식 또는 추가적인 방식이 사용될 수 있다. 중계 방식(그리고 다른 방식)은 서버에 의해 형성되거나 피어 시스템(또는 그것의 시스템 소프트웨어)에서 미리 형성된다. 본 발명의 다른 실시예에서, 방식은 격자를 통하여 업데이트 하는 방식으로 전파된 메세지에 의한 것과 같이 역동적으로 변경될 수 있다.
네트워크(100)의 하나의 적용에서, 피어들(105)은 네트워크 게임을 한다. 게임 과정에서, 피어(105)는 피어(105)에 의해 야기되는 사건이나 행동을 고려한 업데이트 메세지를 생성한다. 예를 들어, 플레이어의 컴퓨터 시스템(예컨대, 피어 A)에서 게임 소프트웨어를 실행하는 동안에, 컴퓨터 시스템은 움직이거나 쏘는 것(예를 들어, 플레이어의 위치 업데이트)과 같은 게임에서 행동을 나타내는 다른 플레이어의 컴퓨터 시스템에 의해 사용되도록 업데이트 데이터를 생성한다. 효과적인 업데이트를 위해 각각의 피어(105)는 업데이트 피어(105)로부터 업데이트를 수신하는 것을 요구한다. 피어(105)는 네트워크(100)를 통하여 메세지를 전파하기 위해 업데이트 메세지를 각각의 피어(105)에 중계한다.
일례로서, 피어 A는 다른 피어들에게 전송하기 위한 업데이트를 구비한다. 피어 A는 업데이트 데이터, 피어 A가 업데이트의 출처라는 것을 나타내는 식별자 및 피어 A에 의해 발송된 다른 것과 이 메세지를 구별하는 순서 식별자(sequence identifier)를 포함하는 업데이트 메세지를 형성하고 상대적인 순서를 제공한다. 피어 A는 그에 연결되어 있는 피어들 B, C, D에 메세지를 전송한다. 피어 B는 피어 A로부터 수신된 메세지를 피어 D와 E에 전송한다. 피어 B는 피어 A로부터 메세지를 수신하였으므로 피어 A에 메세지를 전송하지 않는다. 유사하게, 피어 C는 피어 A로부터 메세지를 피어 G와 H에 전송하고, 피어 D는 피어 A로부터 메세지를 피어 B와 G에 전송한다. 피어 B가 피어 D로부터 메세지를 수신할 때, 피어 B는 (메세지 식별자를 사용하여) 이것이 동일한 메세지라는 것을 인식하므로 다시 메세지를 중계하지 않는다. 유사하게, 피어 D는 피어 B로부터 수신한 메세지를 중계하지 않는다. 피어들 사이의 연결은 피어들 사이에 메세지를 전송하는 시간의 합계라는 관점에서 보면 실질적으로 같다라고 가정하면, 다음 중계의 세트에서, 피어 E는 피어 B로부터 메세지를 피어 F와 I에 중계하고, 피어 G는 피어 C로부터 메세지를 피어 D와 F에 중계하고(또는 처음에 피어 C에 도착한 메세지가 어디서 왔는지에 따라 피어 D로부터 메세지를 피어 C와 F에 중계한다), 피어 H는 피어 C로부터 메세지를 피어 I와 J에 중계한다. 이때, 모든 피어는 피어 A로부터 업데이트 메세지를 수신한다. 그러나, 피어 F, I 및 J는 단지 메세지를 수신하고, 그래서 이 피어들은 메세지를 전송하게 된다. 피어 F는 피어 E로부터 피어 G와 J(또는 처음에 어디에서 왔는지에 따라 피어 G로부터 피어 E와 J)에 메세지를 중계하고, 피어 I는 피어 E로부터 피어 H와 J(또는 처음에 어디에서 왔는지에 따라 피어 H로부터 피어 E와 J)에 메세지를 중계하고, 피어 J는 피어 H로부터 피어 F와 I에 메세지를 중계한다. 이때까지, 모든 피어들은 한번은 메세지를 보내거나 중계하게 된다. 피어들이 동일한 메세지를 다시 중계하지 않으므로, 이 메세지의 전파는 끝나게 된다.
이러한 방식에서, 메세지는 피어투피어 네트워크(100)을 통하여 전파된다. 게임에서 참가하는 피어 시스템(105)들 사이에서의 업데이트 정보의 전파는 게임과 게임 환경을 제공한다. 피어 시스템(105)은 분배를 위한 중앙 집중화된 서버(110)를 사용하지 않고 네트워크(100)을 통하여 데이터를 분배할 수 있다. 게다가, 각각의 피어(105)는 자원을 아끼기 위해 다른 모든 피어(105)에 직접적으로 연결되지 않는다. 그 결과 격자(100)는 각각의 피어의 네트워크 대역폭(bandwidth) 요건을 제한(제한된 숫자의 다른 클라이언트들과 통신하는 것이 요구되기 때문에)하는 반면에 어떤 하나의 클라이언트로부터 데이터를 격자안에 있는 다른 모든 피어에게 빠르게 퍼트리는 것(예를 들어 UDP 소켓을 사용하여)이 허락된다.
본 발명의 다른 실시예에서, 피어투피어 중계 네트워크는 몇 개의 피어 시스템을 포함하고, 네트워크는 다른 연결 한계를 갖는다. 피어의 숫자, 연결 한계 및 연결을 형성하는 방식에 따라, 모든 피어들이 그들의 최대 연결을 구비하고 있는 것은 아니고 따라서 이용할 수 있는 연결을 가지고 있는 피어가 하나(또는 그 이상) 존재할 수 있다.
본 발명의 다른 실시예에서, 연결 한계는 변할 수 있다. 일례로, 연결 한계는 다른 연결 한계를 갖는 일부, 전부 또는 전무의 각각 피어 시스템마다 특정의 값을 갖는다. 각각의 피어는 자신의 연결 한계를 설정하거나 서버에 의해 연결 한계를 할당 받는다. 예를 들어, 피어 X와 Y는 각각 연결 한계가 5이고, 피어 Z는 연결 한계가 4이고, 남아있는 피어들은 각각 연결 한계가 3이다. 다른 실시예에서, 연결 한계는 역동적이다. 이런 경우, 서버는 이를테면 네트워크 수행에 근거하여 피어들의 연결 한계를 조정한다(예를 들어, 네트워크 트래픽(traffic)이 낮을 때, 연결 한계는 낮다). 다른 실시예에서, 하나 이상의 피어 시스템 각각은 그들 각각의 연결 한계를 역동적으로 조정한다. 선택적으로, 서버는 특정 피어 시스템의 연결 한계를 역동적으로 조정한다(예를 들어, 전부가 아닌 경우를 제외하고 일부에 대한 조정).
도 2는 본 발명의 실시예에 따른 메세지(205)의 블록 다이아그램(block diagram)이다. 메세지(205)는 피어투피어 중계 네트워크에서 다른 피어에 전송되는 피어 시스템에 의해 만들어진다. 예를 들어, 도 1에서 언급했듯이, 피어 A가 다른 피어들에게 전송하기 위한 업데이트 메세지를 가지고 있을 때, 피어 A는 메세지 205 같은 메세지를 만든다. 메세지(205)는 주소 데이터(210), 원천 식별자(215), 순서값(220) 및 페이로드(payload) 데이터를 포함한다. 주소 데이터(210)는 피어에서 다른 피어로 메세지(205)를 전송하기 위한 네트워크 주소 정보를 포함한다. 본 발명의 실시예에서, 주소 데이터(210)은 전송 피어를 위한 IP 주소와 수신 피어를 위한 IP 주소를 포함한다. 원천 식별자(215)는 메세지(205)를 만드는 피어를 식별한다. 이 식별자(215)는 네트워크를 통하여 전파된 메세지의 원천을 피어투피어 중계 네트워크를 통하여 피어들에게 나타낸다. 원천 식별자(215)를 사용하여, 메세지(205)를 수신한 피어는 네트워크에서 어떤 피어로부터 메세지(205)가 생겼는지 결정할 수 있다. 순서값(220)은 특정 메세지(205)를 식별하고, 상대적인 순서 정보를 제공한다. 순서값(220)을 사용하여, 메세지(205)를 받은 피어는 특정 메세지가 이미 수신되었는지 결정할 수 있고, 원천 식별자(215)에 의해 표시된 피어로부터 전송된 메세지의 서열 또는 순서를 결정할 수 있다. 데이터(230)는 메세지(205)를 위한 페이로드 데이터이다. 업데이트 메세지(예를 들어, 게임에서)를 위하여, 페이로드 데이터(230)는 수신하는 피어에 의해 사용되는 업데이트 데이터이다. 선택적인 실시예에서, 메세지의 다른 형태가 사용될 수 있고, 도 2에 도시된 것과 다른 형식을 가진 메세지가 사용될 수 있다(예를 들어, 다른 정보 또는 부가적인 정보를 포함하는). 예를 들어, 메세지는 파일 또는 파일의 일부 또는 게임 데이터의 구조와 같은 데이터의 구조 또는 격자의 멤버들에게 알려져 있는 오디오 파일의 일부 또는 구조를 포함할 수 있다. 수신 피어는 각각의 메세지에 포함되어 있는 순서값 을 사용하여 파일 전부를 재구성할 수 있다. 다른 예에서, 메세지는 다중 격자에 속하는 피어들에 의해 중계되는 메세지가 어느 격자에 속하는지를 표시하는 식별자와 같은 부가적인 식별 정보를 포함한다.
도 3은 본 발명의 실시예에 따른 피어투피어 중계 네트워크의 흐름도(300)를 나타낸다. 처음에, 피어는 피어투피어 중계 네트워크에서 하나 이상의 다른 피어 시스템에 연결된다.
피어는 그 피어와 전송 피어 사이의 연결을 통하여 전송 피어로부터 메세지를 수신한다(블록 305). 도 2에 도시된 것과 같은 메세지에서, 메세지는 원천 식별자, 순서값, 페이로드 데이터(예를 들어, 업데이트 데이터)를 포함한다.
피어는 수신된 메세지를 중계하기 위한 연결을 선택한다(블록 310). 피어는 피어투피어 중계 네트워크를 위한 중계 방식에 의하여 피어의 이용 가능한 연결로부터 연결을 선택한다. 중계 방식을 적용한 후에, 피어는 피어의 연결 일부, 전무 또는 전부를 선택할 수 있다.
피어는 선택된 연결 각각에 메세지를 중계한다(블록 315). 피어는 각각의 선택된 연결을 위하여 메세지를 만든다. 각각의 메세지 전송을 위하여, 피어는 수신된 메세지를 사용하지만 적절하게 주소 정보를 업데이트한다(예를 들어, 연결을 위하여 전송자를 피어로, 수신자를 수신 피어로 바꾸기). 따라서, 페이로드 데이터는 똑같이 남는다. 본 발명의 다른 실시예에서, 피어는 메세지에 데이터를 부가하거나 메세지의 데이터를 바꿀 수 있다. 피어는 만들어진 데이터를 적절한 수신자에게 보낸다.
도 4는 본 발명의 실시예에 따른 피어투피어 중계 네트워크에서 중계 방식의 세트에 따라 피어가 메세지를 중계하는 것을 나타내는 흐름도이다. 도 4에 사용된 중계 방식은 중계 방식이 세트의 한 예이다. 다르거나 부가적인 중계 방식을 사용한 다른 실시예도 가능하다. 처음에, 중계 피어는 피어투피어 중계 네트워크에서 N개의 다른 피어 시스템에 연결되어 있다. 예를 들어, 도 1에 도시되어 있는 네트워크에서, 피어 D는 3개의 다른 피어에 연결되어 있다(따라서, 이 경우 N=3이다). 메세지 중계를 위한 도 4에 있는 중계 방식은 다음과 같다.
1. 메세지를 2번 중계하지 말아라.
2. 전송자에게 다시 되돌려 주는 중계를 하지 말아라.
3. 원천 피어에게 메세지를 중계하지 말아라.
4. 방식 1과 2를 적용한 후에 연결 이용 가능한 피어에게 메세지를 중 계 해라.
중계 피어는 메세지를 수신한다(블록 405). 중계 피어는 중계 피어가 이미 이 메세지를 받았는지를 결정한다(블록 410). 중계 피어는 식별 데이터와 이미 메세지를 수신한 중계 피어에 의해 저장된 데이터를 비교한다. 본 발명의 실시예에서, 각각의 피어는 원천 식별자와 순서값의 수신된 메세지 테이블을 가지고 있다. 중계 피어는 원천 식별자와 수신된 메세지로부터의 순서값을 검색하고, 이 정보와 중계 피어의 수신된 메세지 테이블에 저장된 데이터를 비교한다. 만약 중계 피어가 이 수신된 메세지를 이전에 수신했었다고 결정한다면(예를 들어, 피어는 수신된 메세지의 원천 식별자와 순서값을 저장하는 수신된 메세지 테이블의 엔트리(entry)를 찾는다), 중계 피어는 수신된 메세지를 중계하지 않는다. 본 발명의 다른 실시예에서, 중계 피어는 중계 피어가 수신된 메세지를 이전에 수신했었는지를 결정하기 위해서 확인한다.
만약 중계 피어가 이 메세지를 이전에 수신하지 않았다고 결정한다면, 중계 피어는 메세지가 수신되었다는 것을 기록한다(블록 412). 본 발명의 실시예에서, 중계 피어는 수신된 메세지의 원천 식별자와 순서값을 위한 중계 피어의 수신된 메세지 테이블에 엔트리를 부가한다. 만약 테이블이 이미 이 원천 식별자와 순서값에 대한 엔트리를 가지고 있다면, 중계 피어는 테이블을 바꾸지 않는다.
메세지가 수신되었다는 것을 기록한 후에, 중계 피어는 카운터(counter)를 설치한다(블록 415). 중계 피어는 중계 피어의 이용 가능한 연결 각각을 통하여 단계로 나누는데 카운터를 사용한다. 본 발명의 실시예에서, 중계 피어는 카운터의 정수 i를 1로 설정한다.
중계 피어는 중계 피어가 카운터에 의해 표시되는 연결에 연결되어 있는 피어로부터 메세지를 수신한 것인지를 결정한다(블록 420). 수신된 메세지는 수신된 메세지의 전송자를 표시하는 주소 정보를 포함한다. 카운터는 연결을 표시하고, 연결된 피어와 그 피어의 주소 정보를 표시한다. 예를 들어, 도 1에 도시되어 있는 피어 D는 3개의 연결을 구비하고 있고, 피어 D는 각각의 연결에 번호를 할당한다. 피어 A는 연결 1에 연결되어있고, 피어 B는 연결 2에 연결되어 있고, 피어 G는 연결 3에 연결되어 있다. 그래서 카운터 i가 1일때, 피어 D는 피어 D에 의해 피어 A에 저장된 주소 정보와 수신된 메세지에 대한 주소 정보 (전송자)를 비교하여 수신 된 메세지가 피어 A에 의해 전송되었는지를 알아보기 위해 검사한다. 만약 수신된 메세지가 카운터에 의해 표시되는 연결에 연결된 피어에 의해 중계 피어에 전송된다면, 중계 피어는 그 피어에게 메세지를 중계하지 않는다.
만약 수신된 메세지가 카운터에 의해 표시되는 연결에 연결된 피어에 의해 중계 피어에 전송되지 않는다면, 중계 피어는 카운터에 의해 표시되는 연결에 연결된 피어가 수신된 메세지에 대한 원천 피어 시스템인지를 결정한다(블록 422). 수신된 메세지는 수신된 메세지의 원천인 피어를 나타내는 정보를 포함한다(최초에 메세지의 데이터를 생성하는 피어는 도 2에 도시된 원천 식별자(215)를 재호출한다). 만약 카운터에 의해 표시되는 연결에 연결한 피어가 수신된 메세지의 원천 피어 시스템이라면, 중계 피어는 그 피어에게 메세지를 중계하지 않는다.
만약 수신된 메세지가 카운터에 의해 표시되는 연결에 연결된 피어에 의해 중계 피어에 전송되지 않고 카운터에 의해 표시되는 연결에 연결된 피어가 수신된 메세지에 대하여 원천 피어 시스템이 아니라면, 중계 피어는 연결된 피어에 메세지를 중계한다(블록 425). 중계 피어는 표시된 연결에 대한 메세지를 형성한다. 중계 피어는 수신된 메세지를 복사하고 주소 정보를 적절하게 업데이트 한다(예를 들어, 중계 피어가 되는 전송자와 표시된 연결과 연결되어 있는 피어와 연결되는 수신자를 변경). 따라서, 페이로드 데이터는 똑같이 남는다. 중계 피어는 형성된 메세지를 표시된 연결을 통하여 연결된 피어에 전송한다.
중계 피어는 모든 연결이 검사되었는지를 결정한다(블록 430). 중계 피어는 카운터와 피어투피어 중계 네트워크에서 중계 피어에 의해 형성되는 연결의 수를 비교한다. 예를 들어, 중계 피어는 카운터 i와 N값(중계 피어에 의해 형성된 연결의 수)을 비교한다. 만약 중계 피어가 모든 연결을 검사하면, 중계 피어는 수신된 메세지에 대한 중계를 끝낸다.
만약 중계 피어가 모든 연결을 검사하지 못하면, 중계 피어는 카운터를 증가시킨다(블록 435). 예를 들어, 중계 피어는 카운터 i를 i+1로 설정한다. 카운터가 증가된 후에, 블록 420으로 돌아가서 중계 피어는 중계 피어가 메세지를 카운터 증가에 의해 표시된 연결에 연결되어 있는 피어로부터 수신하였는지를 결정한다.
상기한 바와 같이, 본 발명의 다른 실시예에서, 다르고, 부가적이거나 소수인 중계 방식이 또한 사용될 수 있다. 본 발명의 실시예에서, 중계 피어는 전송자에게 다시 메세지를 전송할 수 있다(따라서 전송자는 중계 피어가 데이터를 변경하지 않은 것을 확인할 수 있다). 본 발명의 다른 실시예에서, 중계 피어는 메세지의 원천으로 표시되는 피어(예를 들어, 메세지의 원천 식별자에 의해 표시되는)에 메세지를 중계하지 않는다. 본 발명의 다른 실시예에서, 중계 피어는 같은 연결된 피어에 같은 메세지를 다시 중계하지 않는다. 본 발명의 다른 실시예에서, 중계 피어는 최저와 최고의 응답 시간을 가지는 피어를 선택하는 것과 같은 메세지 중계를 위한 이용 가능한 연결의 서브셋(subset)을 선택한다. 본 발명의 다른 실시예에서, 각각의 피어는 그 메세지에 저장된 홉(hop) 카운트를 제시하는 그 피어에 연결된 모든 피어들에게 메세지를 전송하고 그래서 메세지는 단지 특정 횟수(한번 이상)로 중계될 것이다.
본 발명의 다른 실시예에서, 피어는 제한된 횟수로(한번 이상) 같은 메세지 를 중계한다.
도 5는 본 발명의 실시예에 따른 피어투피어 중계 네트워크를 구성하는 흐름도(500)를 나타내고 있다. 처음에, 피어 시스템과 서버는 도 1에 도시된 피어 A와 서버(110)과 같이 배치된다. 피어 시스템은 서버와 연결을 개시한다(블록 505). 피어 시스템은 피어투피어 중계 네트워크(또는 격자)를 형성하며 서버에 연결하고 "형성 피어(establishing peer)"로 정의할 수 있다. 서버에 연결은 직접적 또는 간접적인 네트워크 연결이 될 수 있다. 본 발명의 실시예에서, 피어는 공간의 서브섹션(subsection) 또는 서버에 의해 유지되는 다중 세계 중의 하나 또는 환경에서 할당되거나 참가하고 등록한다. 서버는 피어가 더 상호작용하는 것을 허락하기 전에 피어를 인증한다. 피어 시스템은 격자 생성 요청을 서버에 제출한다(블록 510). 격자 생성 요청은 피어의 식별 정보를 표시하고 피어는 서버에 새로운 피어투피어 중계 네트워크를 형성하도록 요청한다. 본 발명의 실시예에서, 요청은 또한 피어가 서버에 적용하도록 요청하는 조건을 포함한다(예를 들어, 격자에 참가하는 것의 제한). 본 발명의 다른 실시예에서, 요청은 연결 한계와 격자에서 사용되는 방식의 세트(예를 들어, 중계 방식과 연결 방식)를 나타낸다. 서버는 새로운 격자를 등록한다(블록 515). 서버는 형성된 격자를 탐지하는 데이터의 목록 또는 테이블을 포함한다. 서버는 새로운 격자에 대한 새로운 테이블을 생성하고 테이블에 요청하는 피어를 부가한다. 서버는 격자가 형성된 피어에 확인을 전송한다(블록 520). 확인은 어떤 식별 또는 피어가 격자에 접근하는데 필요한 접근 정보를 포함한다. 본 발명의 실시예에서, 확인은 연결 한계와 격자에 대한 방식(예를 들어, 중계 방식)을 포함한다.
도 6은 본 발명의 실시예에 따른 피어투피어 중계 네트워크를 연결하는 흐름도(600)를 나타낸다. 처음에, 피어투피어 중계 네트워크는 도 1에 도시된 피어 A와 서버(110) 같은 피어와 서버에 의해 형성된다.
피어 시스템은 서버에 연결된다(블록 605). 피어 시스템은 피어투피어 중계 네트워크(또는 격자)에 참가하기 위한 서버에 연결하고, "새로운 피어" 또는 "참가 피어"로 정의할 수 있다. 서버에 연결은 직접적 또는 간접적인 네트워크 연결이 될 수 있다. 본 발명의 실시예에서, 피어는 할당되거나 참가하고 공간의 서브섹션(subsection) 또는 다중 세계의 하나 또는 서버에 의해 유지되는 환경에 등록한다. 서버는 피어가 더 상호작용하는 것을 허락하기 전에 피어를 인증한다.
피어는 서버의 이용 가능한 격자로부터 격자를 선택한다(블록 610). 본 발명의 실시예에서, 피어는 이용 가능한 격자의 목록을 요청하고 그 목록으로부터 선택을 한다. 본 발명의 다른 실시예에서, 서버는 피어가 서버에 접속할 때 자동적으로 이용 가능한 격자의 목록을 제공한다. 본 발명의 실시예에서, 서버는 피어가 등록된 세계에서 이용 가능한 격자의 목록을 제공한다. 서버는 또한 선택을 돕기 위한 부가적인 정보를 제공한다(예를 들어, 피어가 이미 각 격자의 멤버인지). 피어는 서버에 격자 선택을 제공한다.
서버는 이미 선택된 격자에 참가하는 피어의 주소를 전송한다(블록 615). 주소는 격자 멤버들이 어떻게 통신하는지를 나타낸다(예를 들어, IP 주소). 주소는 서버를 통한 연결이 아니라 격자 멤버들과 피어의 연결을 형성하기 위한 것이다. 만약 선택된 격자가 접근을 제한하고 새로운 피어가 선택된 격자에 참가하는 것이 허락되지 않는다면, 서버는 피어에게 주소를 제공하지 않으며 피어가 다른 격자를 선택하도록 한다. 본 발명의 실시예에서, 서버는 연결 한계와 그 주소를 가지고 선택한 격자에 대한 방식을 새로운 피어에게 제공한다.
새로운 피어는 격자 멤버 각각에 참가 메세지를 전송한다(블록 620). 참가 메세지는 새로운 피어의 주소와 그 피어가 격자에 대해 새로운 것임을 나타낸다. 본 발명이 다른 실시예에서, 새로운 피어는 피어의 주소를 나타내는 메세지에 이용가능한 연결과 피어가 이용 가능한 연결의 수를 전송한다(아래에 기술할, 피어가 연결이 끊길 때와 유사하다). 본 발명의 실시예에서, 새로운 피어는 참가 메세지를 하나의 격자 멤버에 전송하고 그 격자 멤버는 격자를 통하여 참가 메세지를 중계하기 시작한다.
격자 멤버는 참가 메세지를 수신하고 새로운 피어에 대해 참가 응답을 다시 전송한다(블록 625). 참가 응답은 응답하는 피어가 이용 가능한 연결을 구비하고 있는지 아닌지를 나타낸다. 긍정적인 응답은 응답하는 피어가 이용 가능한 연결을 구비하고 있음을 나타낸다. 부정적인 응답은 응답하는 피어가 이용 가능한 연결을 구비하고 있지 않음을 나타낸다. 응답하는 피어는 참가 메세지로부터 새로운 피어의 주소를 기록하고 그 주소를 참가 응답에 전송하는데 사용한다. 새로운 피어는 참가 응답을 받는다.
새로운 피어는 어떤 격자 멤버를 어디에 연결해야 하는가를 선택한다(블록 630). 새로운 피어는 연결을 위한 피어 선택을 위해서 연결 방식의 세트를 사용한 다. 예를 들어, 본 발명의 실시예에서, 새로운 피어는 긍정적인 응답을 전송하는 피어로부터 새로운 피어에 의해 긍정적인 응답을 수신한 순서에 따라 격자에 대한 연결 한계까지 피어의 숫자를 선택한다(예를 들어, 연결 한계가 3인 경우, 새로운 피어는 수신한 처음 3개의 긍정적인 응답에 따라 피어를 선택한다). 다른 실시예는 다른 연결 방식을 사용할 수 있다. 새로운 피어는 선택된 각각의 피어에 대한 응답 시간을 저장한다. 본 발명의 다른 실시예에서는, 새로운 피어는 모든 응답(긍적적이든 부정적이든)에 대한 응답 시간을 저장한다.
연결을 위한 피어를 선택한 후에, 새로운 피어는 선택된 피어에 대한 연결을 개시한다(블록 635). 새로운 피어는 선택된 피어 각각에 대해 연결 요청을 전송하고 선택된 피어는 연결을 개시한 요청을 확인한다(연결이 선택된 피어에 대해 이용 할 수 없게 되지 않는 한). 피어들 사이의 연결은 직접적 또는 간접적(예를 들어, 인터넷과 같은 네트워크를 통하여)으로 할 수 있다. 본 발명의 실시예에서, 피어들이 연결을 개시할 때, 각각의 피어는 연결을 위한 서버에 정보를 준다.
본 발명의 다른 실시예에서, 서버는 하나 이상의 연결을 시킴으로써 격자가 참여하도록 촉진한다. 서버는 하나의 피어가 연결을 끊거나 표시된 다른 피어에 대해 연결을 개시하도록 한다. 서버는 또한 하나 이상의 피어의 연결을 끊도록 할 수 있다.
도 7은 도 6의 블록 630과 같은 본 발명의 실시예에 따른 피어투피어 중계 네트워크에 참여하는 피어를 선택하는 것의 흐름도(700)를 도시하고 있다. 우선, 새로운 피어는 격자를 선택하고 그 격자의 멤버 피어에 참가 메세지를 전송한다. 새로운 피어는 멤버 피어로부터 참가 응답을 다시 수신한다.
새로운 피어는 최초 수신된 긍정적인 응답에 따라 피어를 선택한다(블록 705). 이 긍정적인 응답은 다른 것들보다 이전에 수신되고 가장 빠른 이용 가능한 연결을 나타낸다. 새로운 피어는 최후에 수신된 긍정적인 응답에 따라 피어를 선택한다(블록 710). 이 긍정적인 응답은 다른 것들보다 이후에 수신되고 가장 느린 이용 가능한 연결을 나타낸다. 어떤 응답이 가장 늦은 것인지를 결정하기 위해, 새로운 피어는 모든 응답이 수신되기를 기다리거나 정해진 시간을 기다리며 그 후 그 시간 안에서 가장 늦게 수신된 것을 최후라고 선언한다. 새로운 피어는 남아있는 긍정적인 응답으로부터 연결 한계와 같은 수의 피어를 선택할 때까지 무작위로 피어를 선택한다(블록 715). 이러한 선택은 격자를 통해 빠르고 느린 연결을 공평하게 분배하도록 해준다.
상기한 바와 같이, 다양한 실시예에서, 다르거나 부가적인 연결 방식은 사용될 수 있다. 본 발명의 실시예에서, 새로운 피어는 처음과 마지막 긍정적인 응답으로 피어를 선택하고 그 다음에 응답 시간의 증가하는 순서(처음 이후에)에 따른 긍정적인 응답에 의해 피어를 선택한다. 본 발명의 다른 실시예에서, 새로운 피어는 피어 선택을 기다리기보다는 응답의 도착에 따라 피어를 선택한다(예를 들어, 마지막에 수신한 긍정적인 응답을 위한 공간의 확보). 본 발명의 다른 실시예에서, 새로운 피어는 응답 시간의 경계를 사용하여 피어를 선택한다(예를 들어, 어떤 제한 이상의 응답 시간에서는 피어를 선택하지 않는다). 본 발명의 다른 실시예에서는, 새로운 피어는 저장 능력, 진행 속도, 접근 레벨 또는 이용 가능한 기능과 같은 피 어들의 특성에 근거하여 피어를 선택한다(참가 응답에 의해 제공된 정보를 사용하여).
본 발명의 다른 실시예에서, 피어 시스템은 이러한 연결을 선택하는데 사용되는 선택 단계에 따라 연결을 분류한다. 예를 들어, 피어는 가장 낮은 응답 시간으로 수신된 참가 응답에 따른 연결 개시와 가장 높은 응답 시간으로 수신된 참가 응답에 따른 연결 개시를 나타내는 정보를 저장한다. 연결은 피어의 단절과 격자에 참여하는 새로운 피어에 의해 조정되므로, 피어는 저장된 연결의 분류를 조정할 수 있다.
본 발명의 다른 실시예에서, 새로운 피어는 서버를 사용하여 연결의 개시를 도와준다. 본 발명의 실시예에서, 서버는 이용 가능한 연결을 가지고 있는 격자 멤버의 목록과 이 멤버 피어의 주소를 제공한다. 새로운 피어는 참가 메세지를 표시된 격자 멤버에 직접적으로 전송한다.
만약 연결 한계보다 작은 긍정적인 응답이 있다면, 새로운 피어는 이용 가능한 연결을 남겨둔 채로 있을 것이다. 본 발명의 실시예에서, 새로운 피어는 다른 피어가 형성된 연결을 끊거나 새로운 피어에 대해 연결을 개시하도록 할 수 있다.
도 8은 본 발명의 실시예에 따른 피어투피어 중계 네트워크에서 피어가 새로운 피어에게 연결하도록 하는 것을 나타낸 흐름도(800)이다. 우선, 새로운 피어는 격자를 선택하고 그 격자의 멤버 피어에게 참가 메세지를 전송한다. 새로운 피어는 멤버 피어로부터 참가 응답을 수신한다. 그러나, 모든 긍정적인 응답에 대한 피어를 선택한 후에, 새로운 피어는 여전히 이용 가능한 연결을 구비한다.
새로운 피어는 부정적인 응답에 따라 피어를 선택한다(블록 805). 새로운 피어는 긍정적인 응답에 대한 연결 방식과 같은 방식을 사용하여 부정적인 응답을 선택한다(예를 들어, 도 7로의 방식에 의해 처음 수신한 부정적인 응답). 택일적으로, 새로운 피어는 강제 연결 방식의 다른 세트를 사용한다. 새로운 피어는 새로운 피어에 이미 연결된 피어는 선택하지 않는다.
새로운 피어는 선택된 피어에 강제 연결 요청을 전송한다(블록 810). 강제 연결 요청은 새로운 피어가 이용 가능한 연결을 적어도 하나(특히 몇 개) 가지고 있는지를 나타내며, 수신 피어가 새로운 피어에 대해 연결을 개시한다는 것을 나타낸다.
새로운 피어는 강제 연결 요청을 수신하고 끊을 연결을 선택한다(블록 815). 수신 피어는 반대의 연결 방식을 사용하여 단선할 연결을 선택한다. 응답 시간에 근거한 연결 방식에 따라, 수신 피어는 참가 응답으로부터 저장된 응답 시간을 사용한다(그리고 아래 기술한 바와 같이, 이용 가능한 응답에 연결). 본 발명의 실시예에서, 무작위적으로 선택된 피어들 사이에서의 선택하기 위해, 수신 피어는 선택된 최후의 피어를 선택하거나 또는 다시 무작위적으로 피어를 선택한다. 본 발명의 다른 실시예에서, 수신 피어는 다른 강제 연결 방식의 세트를 사용한다.
수신 피어는 선택된 연결을 단절한다(블록 820). 수신 피어는 선택된 연결에 연결되어 있는 피어와 연결을 단절한 2개의 피어에 단절 메세지를 송신한다. 선택된 연결에 연결되어 있는 피어는 이제 이용 가능한 연결을 구비하고, 아래 기술한 바와 같이 연결 이용 가능한 메세지를 격자에 송신한다.
수신 피어는 새로운 피어에 대해 확인을 전송하고, 두 개의 피어는 새로운 연결을 개시한다(블록 825). 새로운 피어는 이제 하나의 더 작은 이용 가능한 연결을 구비한다. 만약 새로운 피어가 더 많은 이용 가능한 연결을 구비한다면, 새로운 피어는 진행과 다른 부정적인 응답을 선택하여 블록 805에 되돌리는 것을 반복한다.
본 발명의 다른 실시예에서, 새로운 피어는 새로운 피어가 적어도 2개의 이용 가능한 연결을 구비하지 않는 한 다른 피어가 연결을 개시하도록 하지는 않는다. 선택적으로, 다른 경계가 사용될 수 있다(예를 들어 3). 본 발명의 다른 실시예에서, 새로운 피어는 새로운 피어가 최소한의 어떤 수의 연결(연결 플로어(floor))을 구비하지 못하고 있는 때 강제 연결 메세지를 전송한다.
본 발명이 다른 실시예에서, 강제 연결에 대한 수신 피어는 감쇠의 선택을 구비하고 있다(예를 들어, 네트워크의 부하 균형에 따라). 만약 감쇠한다면, 새로운 피어는 새로운 강제 연결 메세지를 전송하는 다른 피어를 선택한다.
본 발명이 다른 실시예에서, 만약 새로운 피어가 2개 이상의 이용 가능한 연결을 구비하고 있고 강제 연결 메세지를 전송한다면, 새로운 피어는 새로운 피어가 2개의 이용 가능한 연결을 구비하고 있다는 것을 나타내는 메세지에 대한 정보를 포함한다. 수신 메세지가 단절을 위한 선택된 메세지를 구비하고 있을 때, 수신 피어는 선택된 연결(원거리 피어)에 연결된 피어에 새로운 피어가 다른 이용 가능한 연경을 구비하고 있다는 것을 나타낸다(그리고 적절하다면 새로운 피어의 주소를 포함한다). 수신 피어가 원거리 피어와 단절된 연결을 구비한 후에, 원거리 피어는 새로운 피어에 연결 가능한 메세지를 직접적으로 전송한다(새로운 미어가 이미 원거리 피어와 연결되어 있지 않는 한). 새로운 피어는 수신 피어(새로운 피어에 의해 선택된)와 새로운 연결을 개시하고 원거리 피어(수신 피어에 의해 선택된)와 다른 새로운 연결을 개시한다. 이러한 방식으로, 새로운 피어는 빠르게 두 개의 연결을 형성할 수 있다. 만약 새로운 피어가 여전히 다른 두 개의 이용 가능한 연결을 가지고 있다면, 새로운 피어는 다른 선택된 수신 피어에 2개의 이용 가능한 연결을 표시하는 강제 연결 메세지를 다시 전송할 수 있다.
피어 시스템이 다른 피어 시스템과 단절할 때, 그때에 피어의 각각은 이용 가능한 연결을 구비한다. 만약 이러한 피어들의 하나(또는 한 쌍)가 여전히 격자 안에 존재한다면(예를 들어, 격자로부터 단절된 것이 아니라), 피어는 연결 이용 가능한 메세지를 격자를 통하여 격자안의 다른 모든 피어에게 중계하기 위한 피어의 남아있는 연결된 피어에게 전송한다.
도 9는 본 발명의 실시예에 따른 피어투피어 중계 네트워크에서 단절의 흐름도(900)이다. 우선, 피어 시스템(단절된 피어)은 피어투피어 중계 네트워크에서 적어도 2개의 다른 피어 시스템에 연결된다.
단절된 피어는 피어들 중 하나에서 단절된 피어에 처음으로 연결된 것까지 단절시킨다(블록 905). 단절은 어느 한쪽 끝의 자발적인 단절 또는 연결 그 자체의 실패(예를 들어, 피어들 사이에서 경로의 일부가 실패한다) 때문에 발생할 수 있다. 예를 들어, 자발적인 단절은 피어가 연결된 피어가 무응답성이라고(아래에 기술하듯이) 결정할 때 또는 피어가 새로운 피어와 연결을 개시(아래에 기술하듯이) 하도록 될 때 발생할 수 있다. 본 발명의 실시예에서, 서버는 피어가 단절에 응답한 결과로서 하나 이상의 연결을 단절하도록 할 수 있다.
단절된 피어는 단절된 피어에 연결된 채로 남아있는 피어에 연결 이용 가능한 메세지를 전송한다(블록 910). 연결 이용 가능한 메세지는 단절된 피어가 이제 이용 가능한 메세지를 구비하고 있음을 나타낸다. 본 발명의 다른 실시예에서, 연결 이용 가능한 메세지는 피어가 이용 가능한 연결의 수를 나타낸다.
단절된 피어에 연결된 피어들은 연결 이용 가능한 메세지를 중계한다(블록 915). 격자 안에 있는 피어들은 연결 이용 가능한 응답을 단절된 멤버에 되돌리는 전송을 한다(블록 920). 연결 이용 가능한 응답은 응답하는 피어가 어떤 이용 가능한 연결을 구비했는지 아닌지를 표시한다. 긍정적인 응답은 응답하는 피어가 이용 가능한 연결을 구비했다는 것은 나타낸다. 부정적인 응답은 응답하는 피어가 이용 가능한 연결을 구비하지 못했다는 것을 나타낸다. 응답하는 피어들은 참가 메세지로부터 새로운 피어의 주소를 기록하고 그 주소를 참가 응답을 전송하는데 사용한다. 선택적으로, 응답하는 피어는 중계되는 격자를 통하여 응답을 단절된 피어에 되돌리는 전송을 한다. 단절된 피어는 연결 가능한 응답을 수신한다.
단절된 피어는 연결하기 위해서 격자 멤버 중 하나를 선택한다(블록 925). 단절된 피어는 연결하기 위한 피어를 연결 방식을 사용하여 선택하지만, 단절된 피어는 단절된 피어에 이미 연결되어 있는 피어를 선택하지 않는다. 예를 들어, 본 발명의 실시예에서, 단절된 피어는 상실한 연결을 대체하기 위한 피어를 선택하기 위해 연결 이용 가능한 응답의 응답 시간과 단절된 피어에 여전히 연결되어 있는 피어의 저장된 응답 시간을 사용한다. 다른 실시예에서는 다른 연결 방식의 세트를 이용할 수 있다. 단절된 피어는 선택된 피어에 대한 응답 시간을 저장한다. 본 발명의 다른 실시예에서, 단절된 피어는 모든 응답(긍정적인 것과 부정적인 것)에 대한 응답 시간을 저장한다. 본 발명의 실시예에서, 단절된 피어는 단절된 피어로부터 일정 시간 동안에서 단절되어 있던 피어를 선택하지 않는다.
연결을 위한 피어를 선택한 이후에, 단절된 피어는 선택된 피어에 대한 연결을 개시한다(블록 930). 단절된 피어는 연결 요청을 선택된 피어에 전송하고 선택된 피어는 연결을 개시하면서 요청을 확인한다(연결이 선택된 피어에 대해 이용 가능하지 않게 되지 않는 한). 피어들 사이의 연결은 직접적 또는 간접적으로 될 수 있다(예를 들어 인터넷과 같은 네트워크를 통하여). 본 발명의 실시예에서, 연결된 피어들은 연결을 확인하는 서버에 업데이트를 전송한다.
도 8에 언급한 격자에 참여하는 것에 대한 실시예와 유사하게, 본 발명의 실시예에서, 만약 단절된 피어가 연결 이용 가능한 메세지를 사용하여 연결을 개시하라고 시도한 후에 여전히 이용 가능한 연결을 구비하고 있다면(예를 들어, 모든 연결 이용 가능한 응답이 부정적이기 때문에), 단절된 피어는 상기한 바와 같이 강제 연결 메세지를 전송할 수 있다.
본 발명의 다른 실시예에서, 단절된 피어는 서버가 새로운 연결을 개시하는 것을 돕도록 사용한다. 본 발명의 실시예에서, 서버는 격자 멤버의 목록에 이용 가능한 연결과 이러한 멤버 피어의 주소를 제공한다. 단절된 피어는 연결 가능한 메세지를 표시된 격자 멤버에 직접적으로 전송한다.
격자 안에 있는 피어 시스템은 서로 정기적인 폴링(polling)에 의해 격자를 유지한다. 본 발명의 실시예에서, 연결된 피어는 연결을 확인하기 위해 각각의 다른 메세지를 주기적으로 전송하고 연결된 피어는 여전히 작동한다.
도 10은 본 발명의 실시예에 따른 피어투피어 중계 네트워크를 유지하는 것을 나타내는 흐름도(1000)이다. 우선, 다중 피어 시스템은 격자에서 연결되어 있다.
피어는 그 피어에 연결되어 있는 피어들의 각각에 대해 유지 메시지를 전송한다(블록 1005). 유지 메세지는 수신자가 유지 메세지를 수신한 것에 대한 확인을 제공하도록 하는 요청이다. 본 발명의 실시예에서, 피어는 연결된 피어 각각에 핑(ping) 메세지(또는 핑)을 전송한다. 피어는 유지 메세지에 수신된 응답을 평가한다(블록 1010). 피어는 응답이 만족스러운지 아닌지를 결정한다. 본 발명의 실시예에서, 만약 응답이 연결된 피어로부터 수신되지 않는다면, 피어는 피어에 대한 연결이 실패했다고 결정한다(연결 또는 연결된 피어 어느 한쪽 때문에). 만약 연결 한계가 끝나기 전에 응답이 수신되지 않는다면, 피어는 피어에 대한 연결이 실패했다고 결정한다. 피어는 실패했다고 결정한 어떤 연결에 대해서도 연결을 끊는다(블록 1015). 피어는 실패한 연결에 연결된 피어에 대해 단절 요청을 송신한다. 피어가 확인을 수신할 때, 피어는 연결을 끊는다. 만약 피어가 실패한 연결에 연결된 피어와 통신할 수 없거나 또는 시간 한계 내에서 확인을 수신할 수 없다면, 피어는 확인 없이 연결을 끊는다. 본 발명의 다른 실시예에서, 피어는 연결이 시간의 기간에 대한 실패 또는 실패의 숫자로서 기록될 때까지 연결을 끊기를 기다린다. 본 발 명의 실시예에서, 피어는 어떤 단절을 확인하는 서버에 업데이트를 전송한다.
만약 피어가 어떤 연결을 끊는다면, 피어는 자발적으로 하나 이상의 피어로부터 단절하고 적절한 연결 이용 가능한 메세지를 전송한다(예를 들어 도 9에 언급한 바와 같이 기재된).
본 발명의 다른 실시예에서, 피어는 서버를 실패한 연결을 측정하도록 사용한다. 예를 들어, 피어가 연결이 실패했다고 결정할 때, 피어는 도와주기 위한 서버에 요청을 전송한다. 서버는 피어가 실패했거나 연결 실패를 구비하고 있는지를 확인하기 위해서 실패한 연결의 다른 끝에 있는 피어에 메세지를 전송한다. 서버는 그 다음에 새로운 연결을 개시하거나 적절하게 네트워크를 조정하도록 하기 위해 피어에게 정보를 준다.
도 11 내지 도 18은 본 발명의 실시예에 따른 격자를 형성하고, 조정하고, 유지하는 예를 도시하고 있다.
도 11에서, 피어 시스템(1105A)은 서버(1100)를 사용하여 피어투피어 중계 네트워크(격자)(1100)를 형성한다(피어 A 사이의 연결과 서버(1100)는 도시되지 않았다). 이 격자에서 연결 한계는 3이고, 그래서 피어 A는 3개의 이용 가능한 연결을 구비한다. 도 12에서, 두번째 피어 시스템(1105B)은 격자(1100)에 참가한다. 피어 B가 참가할 때, 피어 B는 참가 메세지를 피어 A에 전송하고 피어 A는 긍정적인 참가 응답을 피어 B에 전송한다. 피어 A와 피어 B는 연결을 개시한다.
도 13에서, 2개의 피어 시스템 1105C와 1105D(피어 C와 피어 D)는 이미 격자(1100)에 참가하고 있다. 4개의 격자 멤버 피어 A-D 각각은 격자(1100) 안에 있는 다른 피어들에 대해 3개의 연결을 형성한다. 새로운 피어 시스템(1105E)(피어 E)은 격자에 참가한다. 그러나, 피어 E가 다른 피어들에 대해 참가 메시지를 전송할 때, 피어 A-D 각각이 격자(1100)에서 연결 한계에 의해 허용되는 최대 연결의 수를 구비하고 있으므로 모든 참가 응답은 부정적이다. 도 14에서, 피어 E는 연결이 개시되도록 한다. 피어 E는 부정적인 응답들 사이에서 피어 B를 선택하고(예를 들어, 피어 E가 피어 B의 응답을 처음으로 수신하므로), 강제 연결 메세지를 피어 B에 전송한다. 피어 B는 연결을 끊기 위해 피어 D를 선택하고 피어 D와의 연결을 끊는다. 피어 B는 피어 E와의 연결을 확인하고 피어 B와 피어 E는 새로운 연결을 개시한다. 피어 B가 피어 D와 연결을 끊을 때, 피어 D는 이용 가능한 연결을 구비한다. 피어 D는 피어 A와 C에 연결 이용 가능한 메세지를 전송하고 그 피어들은 격자(1100)를 통하여 메세지를 중계한다. 피어 A, B 및 C는 이용 가능한 연결을 구비하지 않으며 그래서 피어 D에 부정적인 응답을 전송한다. 피어 E는 두개의 이용 가능한 연결을 구비하고 긍정적인 응답을 피어 D에 전송한다. 피어 D는 피어 E와의 연결을 개시한다. 피어 E는 여전히 이용 가능한 연결을 구비하고 있고, 그래서 연결 이용 가능한 메세지를 전송한다. 그러나 모든 응답은 부정적이다. 피어 E는 2개의 형성된 연결을 구비하고 있으며 단지 하나의 이용 가능한 연결을 구비하고 있고, 따라서 피어 E는 다른 연결이 개시되도록 하지 않는다.
도 15에서, 피어 A는 격자(1100)로부터 단절된다. 피어 A는 피어 B, C 및 D에 각각 연결된다. 피어 A가 단절될 때, 피어 B, C 및 D 각각은 이용 가능한 연결을 구비한다. 피어 B, C 및 D는 연결 이용 가능한 메세지를 전송하고 피어 B, C, D 및 E 각각은 긍정적인 응답을 전송한다. 연결 이용 가능한 응답에 대한 응답을 측정하고 이미 연결이 존재하는 피어를 제거한 후에, 피어 B-E는 도 16에 도시된 바와 같이 연결을 형성한다. 피어 B-E 각각은 3개의 연결을 구비한다.
도 17에서, 3개의 새로운 피어 시스템 1105F, 1105G 및 1105H(피어 F, G 및 H)는 격자(1100)에 참가하고 연결을 형성한다. 격자를 유지하기 위한 일정한 활동의 일부로써, 피어 B-H 각각은 핑 메세지를 그들의 연결된 피어에 전송한다. 예를 들어, 피어 B는 피어 D, E 및 G를 일정한 기초에 따라 핑(ping)한다. 피어 D는 피어 B의 핑 메세지에 대하여 만족할 만한 응답을 피어 B에 제공하지 않는다(예를 들어, 피어 D로부터의 응답이 너무 느리거나 피어 B에 수신되지 않는다). 도 18에서, 피어 B는 피어 D와의 연결을 끊는다. 피어 B가 연결을 끊을 때, 피어 B와 피어 D는 이용 가능한 연결을 구비한다. 피어 B와 피어 D는 연결 이용 가능한 메세지를 격자(1100)를 통하여 중계받기 위해 전송한다. 피어 B는 피어 G와 피어 D로부터 긍정적인 응답을 수신한다. 피어 B는 이미 피어 G와 연결되어 있고 그래서 새로운 연결을 위해 피어 G를 선택하지 않는다. 피어 B는 단지 실패한 연결을 위하여 피어 D로부터 단절하고 그래서 새로운 연결을 위해 피어 D를 선택하지 않는다. 피어 B는 새로운 연결을 개시하지 않는다(피어 B는 두개의 개시된 연결과 단지 이용 가능한 연 결을 구비하고 있고, 따라서 피어 B는 다른 실시예에서 피어 B가 그러했음에 불구하고 피어 B는 연결을 시도하지 않는다). 피어 D는 피어 B와 G로부터 긍정적인 응답을 수신한다. 피어 B는 실패한 연결을 위하여 피어 D로부터 단절하고 그래서 피어 D는 새로운 연결을 위해서 피어 B를 선택하지 않는다(또는 피어 B는 새로운 연결 요청을 거절한 것이다). 피어 D는 피어 G를 선택하고 피어 G와 연결을 개시한다.
도 11 내지 18에 도시된 실시예에서, 격자(1100)의 피어들은 연결을 하기 위한 서버(1110)에서의 중계 없이 격자를 형성하고 조정하기 위해 연결을 개시하고 끊는다(비록 서버(1110)가 새로운 피어에 격자의 현재 멤버의 주소를 공급하는 것을 돕는다 할지라도).
잉여 목록(Redundancy Lists)
본 발명의 실시예에서, 격자 안에 있는 피어들은 격자 안의 현재 경로에 기초하여 잉여를 결정하는 메세지를 전송하는 것을 피함으로써 잉여 메세지의 트래픽(traffic)을 감소시킨다.
본 발명의 실시예에서, 피어투피어 중계 네트워크에 각각의 피어는 잉여 목록을 저장한다. 피어의 잉여 목록은 설계된 피어로부터 기원한 메세지를 전송하지 않는 다른 피어들을 나타낸다. 따라서, 잉여 목록에 있는 각각의 엔트리는 원천 피어와 목적지(destination) 피어(중계 피어에 연결되어 있는)를 나타낸다. 피어가 피어의 잉여 목록에서 원천이 되는 피어를 나타내는 메세지를 수신할 때, 피어는 잉여 목록에서 대응하는 엔트리에 의해 표시되는 연결된 피어에 그 메세지를 중계하지 않는다. 본 발명의 실시예에서, 피어들은 잉여 목록의 기능성을 끄고 켤 수 있다(예를 들어, 보안 문제를 결정한 후에 발생하는 것과 같은 서버의 요청에서).
도 19는 본 발명의 실시예에 따른 피어투피어 중계 네트워크에서 잉여 목록을 형성하는 흐름도(1900)를 나타낸다. 우선, 다중 피어 시스템은 피어투피어 중계 네트워크를 형성하며 연결된다. 수신 피어는 적어도 2개의 다른 피어와 연결된다.
수신 피어는 연결된 피어로부터 잉여 메세지를 수신한다(블록 1905). 잉여 메세지는 수신 피어가 이미 같은 메세지를 수신하였으므로 잉여가 된다. 수신 피어는 잉여 메세지를 수신된 메세지에서 동일한 사용된 정보로서 식별한다. 상기한 바와 같이, 어떤 실시예에서, 각각의 피어는 동일한 메세지를 두번 중계하는 것을 피하기 위해 수신된 메세지 목록을 간직한다. 수신 피어는 또한 이 목록을 잉여 메세지를 인식하기 위해 사용한다.
수신 피어는 잉여 업데이트 메세지를 형성한다(블록 1910). 수신 피어는 잉여 업데이트 메세지 안에 메세지의 원천을 식별하는 정보와 수신 피어를 식별하는 정보를 포함한다. 예를 들어, 수신 피어는 잉여 메세지로부터 원천 식별자를 검색하고(도 2에 도시된 메세지를 재호출한다), 원천 식별자를 잉여 업데이트 메세지에 저장한다.
수신 피어는 잉여 업데이트 메세지를 잉여 메세지의 전송자에 송신한다(블록 1915). 잉여 메세지는 자신의 주소 정보 안에 잉여 메세지 전송자의 주소 정보를 포함한다.
잉여 메세지의 전송자는 잉여 업데이트 메세지를 수신하고 전송자에 대한 잉여 목록을 업데이트 한다(블록 1920). 전송자는 잉여 메세지의 원천과 잉여 메세지의 수신자(수신 피어)를 식별하는 잉여 업데이트 메세지로부터 정보를 검색한다. 전송자는 엔트리에 전송자가 표시된 원천으로부터 기원한 메세지를 수신 피어에 전송하지 않았음을 나타내는 전송자의 잉여 목록을 부가한다.
예를 들어, 도 1에 도시된 격자(100)에서 언급한 대로, 피어 B는 피어 C로부터 기원된 메세지를 피어 A, D 및 E로부터 수신한다. 피어 B가 피어 C로부터 기원된 메세지를 처음에 피어 A로부터 수신했다고 가정하면, 피어 C로부터 기원 되어 피어 D와 E로부터 수신한 메세지는 잉여 메세지가 된다. 피어 B는 피어 C를 원천으로 나타내고 피어 B를 수신자로 나타내는 피어 D와 피어 E에 전송하기 위한 잉여 업데이트 메세지를 형성한다. 피어 B는 피어 D에 잉여 업데이트 메세지를 전송한다. 피어 D는 피어 D는 피어 C로부터 기원된 메세지를 피어 B에 전송하지 않는다는 것을 나타내기 위한 자신의 잉여 목록을 업데이트 한다. 피어 E는 유사한 잉여 업데이트 메세지를 피어 B로부터 수신하고 유사한 방식으로 자신의 잉여 목록을 업데이트 한다.
피어들이 격자로부터 및 격자에 연결을 하고 단절을 하기 때문에, 클라이언트 사이의 경로가 바뀌고 그래서 잉여 목록은 부정확하게 될 수 있다. 따라서, 피어가 격자로부터 단절될 때, 남아있는 피어들은 잉여 목록을 업데이트한다.
도 20은 본 발명의 실시예에 따른 피어투피어 중계 네트워크에서 단절하는 피어에 대한 잉여 목록을 업데이트 하는 것을 나타내는 흐름도(2000)이다. 우선, 다중 피어 시스템은 피어투피어 중계 네트워크를 형성하며 연결된다. 단절된 피어는 최소한 다른 2개의 피어에 연결된다.
단절하는 피어는 격자로부터 단절된다(블록 2005). 이전에 단절하는 피어에 연결되어 있던 피어들은 이제 단절된 피어들이다. 단절된 피어들 각각은 아래와 동일한 과정을 따른다.
단절된 피어들은 깨끗한 잉여 메세지를 형성한다(블록 2010). 깨끗한 잉여 메세지는 단절된 피어를 식별하는 정보를 나타낸다. 단절된 피어는 깨끗한 잉여 메세지를 단절된 피어에 여전히 연결되어 있는 피어들에게 전송한다(블록 2015). 단절된 피어로부터 깨끗한 잉여 메세지를 수신하는 피어는 자신의 잉여 목록을 업데이트 한다(블록 2020). 깨끗한 잉여 메세지를 수신하는 피어는 깨끗한 잉여 메세지에 의해 표시되는 단절된 피어에 메세지를 중계하는 것에 영향을 미치는 피어의 잉여 목록에 있는 엔트리를 제거한다.
도 1과 도 19에 기술된 예로 돌아가서, 피어 D는 자신의 잉여 목록 안에 피어 D가 피어 C로부터 기원한 메세지를 피어 B에 중계하지 않아야 한다는 것을 나타내는 엔트리를 구비한다. 만약 피어 A가 격자로부터 단절한다면, 피어 B는 피어 A의 단절을 인식하고 깨끗한 잉여 메세지를 형성한다. 피어 B는 깨끗한 잉여 메세지를 피어 D와 E에 전송한다. 피어 D는 피어 B로부터 깨끗한 잉여 메세지를 수신하고 피어 D의 잉여 목록에 있는 피어 D가 피어 C로부터 기원한 메세지를 피어 B에 중계하지 않아야 한다는 것을 나타내는 엔트리를 깨끗하게 한다. 따라서, 다음번에 피어 D가 피어 C로부터 기원된 메세지를 수신할 때, 피어 D는 다시 한번 피어 B에 메 세지를 중계하게 된다. 피어 E는 유사하게 자신의 잉여 목록을 업데이트 한다.
다중 격자(Multiple Grids)
본 발명의 실시예에서, 피어 시스템은 다중 피어투피어 중계 네트워크에 속할 수 있다. 각각의 격자는 연관되어 있거나 독립적이다. 각각의 격자에 따라 형성된 연결은 독립적이 될 수 있다. 따라서, 피어는 하나의 격자 안에 있는 하나의 피어에 연결될 수 있으나 다른 격자 안에 있는 것은 안된다(비록 두개의 피어가 양 격자에 모두 존재한다 할지라도). 본 발명의 실시예에서, 만약 2개의 피어가 2개의 격자안에서 연결되어 있다면, 피어들은 하나의 연결을 사용한다. 메세지는 메세지가 속하는 격자가 어느 것인지를 나타내는 정보를 포함한다. 피어는 그 메세지가 나타내는 격자에 대응하여 형성된 연결에 따라 수신된 메세지를 전송한다.
본 발명의 실시예에서, 피어투피어 중계 네트워크의 멤버는 피어투피어 중계 네트워크에서 서브 네트워크(sub-networks)를 만들 수 있다. 이 경우, 하부 네트워크의 멤버 각각은 또한 더 큰 격자의 멤버이다. 예를 들어, 피어투피어 중계 네트워크는 게임에서 모든 플레이어(player)들을 피어 시스템으로 포함하고 각 팀(전체 플레이어의 서브세트(sub-sets)을 포함하여)은 피어 시스템의 하부 네트워크를 구비한다(예를 들어, 게임에서 사적인 통신). 이러한 방식으로, 피어들은 바람직하게 데이터를 분배하고 수신하는 다채널 환경을 형성할 수 있다.
본 발명의 다른 실시예에서, 피어투피어 중계 네트워크들은 독립적이지만 하나 이상의 피어 시스템 멤버를 공유한다. 예를 들어, 하나의 피어 그룹은 로비 또 는 채팅 환경을 제공하는 격자를 형성하고, 처음 피어 그룹 피어를 적어도 하나 이상 포함하고 있는 다른 피어 그룹은 특별한 게임을 제공하는 격자를 형성한다. 다른 예에서, 하나의 피어 그룹은 클랜(clan)(단체)을 위한 격자를 형성하고 이 피어의 일부는 게임을 하기 위한 다른 격자를 형성하거나 참가한다.
예를 들어, 온라인 환경에서, 그 환경 안에 있는 모든 피어들은 하나의 메인 격자에 연결되어 있다. 메인 격자는 일반적인 공고와 일반적인 서비스를 위한 것이다. 피어들은 채팅방 또는 게임과 같은 온라인 서비스에 접근하기 위한 부가적인 더 작은 격자를 만들고, 참가하고, 떠난다. 피어들은 또한 새로운 피어가 격자에 참가하기를 원하는 때(서버를 사용하기 보다는)와 같이 더 작은 격자가 형성되기 전에 메인 격자를 통신하기 위해 사용할 수 있다. 모든 통제 메세지가 메인 격자를 통하여 방송될 수 있기 때문에, 모든 피어는 이용 가능한 격자의 목록과 각 격자안에서 활동적인 피어의 목록을 독립적으로 지니고 있다. 본 발명의 실시예에서, 피어들은 중앙 집중화된 서버를 사용하지 않는다.
도 21은 본 발명의 실시예에 따른 다중 격자에 속하는 피어 시스템으로부터 메세지를 중계하는 것을 나타내는 흐름도(2100)이다. 우선, 다중 피어 시스템은 2개의 피어투피어 중계 네트워크를 형성하며 연결되어 있다. 중계 피어는 양 격자의 멤버이고, 각 격자에 대해 각각의 연결과 중계 방식을 구비하고 있다.
중계 피어는 메세지를 수신한다(블록 2105). 메세지는 그 메세지가 속하는 격자가 어떤 것인지를 나타내는 격자 식별자를 포함한다.
중계 피어는 수신된 메세지에 의해 표시되는 격자를 선택한다(블록 2110). 각 격자는 각각의 연결 세트와 각각의 중계 방식 세트를 구비한다. 격자를 선택하는 것에 의해, 중계 피어는 수신된 메세지를 중계하는데 사용하기 위한 연결 세트와 중계 방식의 세트를 선택한다.
중계 피어는 선택된 격자와 대응하는 중계 방식에 따라 연결을 선택한다(블록 2115). 선택된 격자에 대한 중계 방식을 사용하여, 중계 피어는 수신된 메세지를 전송하기 위한 어떤 적절한 연결을 선택한다.
중계 피어는 수신된 메세지를 선택된 피어에 전송한다(블록 2120). 메세지를 중계하기 전에, 마치 수신된 메세지가 중계 피어로부터 선택된 메세지에 중계되었다는 것을 수신된 메세지가 나타내도록 주소 정보를 업데이트 하는 것과 같이 중계 피어는 수신된 메시지를 각각의 선택된 피어에 맞게 조정한다.
방관자(Spectators)
본 발명의 실시예에서, 격자 안의 피어들은 참가자(participants) 또는 방관자로 분류된다. 참가자 피어는 격자를 통하여 중계되는 새로운 메세지를 생성한다. 방관자 피어는 새로운 메세지를 생성하지 않고 격자의 패스-쓰루 노드(path-through node)처럼 행동한다. 참가자와 방관자 모두 그들의 연결된 피어들에게 격자의 중계 방식에 따라 메세지를 중계한다. 어떤 응용에서는, 각각의 참가자에 대해여 많은 방관자가 있을 수 있다. 다중 참가자를 구비하고 있는 실시예에서는, 각각의 참가자는 다른 참가자에 대하여 적어도 하나의 연결을 구비하고 있다.
한 예에서, 참가자 그룹은 방관자가 지켜보는 동안(게임 데이터를 바꾸지 않 으면서 데이터를 관망) 온라인 게임을 한다. 방관자의 수는 매우 클 수 있다(예를 들어, 수천). 다른 예들은 공연(예를 들어 음악), 연설, 교습을 포함한다. 어떤 응용에서는, 피어들이 중계되는 데이터에 의한 분배를 다루기 때문에, 분배에 대한 서버의 부하는 항상 방관자의 수가 증가하는 만큼 증가하는 것은 아니다.
본 발명의 실시예에서, 피어가 격자에 참가할 때, 피어는 참가자 또는 방관자로서 격자에 참가한다. 만약 피어가 방관자로서 격자에 참가한다면, 피어는 격자를 통하여 중계되는 새로운 메세지를 만들고 새로운 메세지를 격자에 전송하는 것을 허가받지 못한다. 만약 방관자가 새로운 메세지를 만들고 새로운 메세지를 방관자에 연결되어 있는 피어에 전송한다면, 방관자로부터 새로운 메세지를 수신하는 피어는 수신된 메세지를 전송하거나 중계하지 않는다. 본 발명의 실시예에서, 일부 또는 모든 방관자는 참가자로서 다른 관련된 격자를 형성할 수 있다(예를 들어, 처음의 격자에서 지켜보던 게임에 대한 토의를 위해).
도 22는 본 발명의 실시예에 따른 방관자와 참가자를 제공하는 격자에서 메세지를 중계하는 것을 나타내는 흐름도(2200)이다. 처음에, 다중 피어 시스템은 참가자와 방관자를 제공하는 피어투피어 중계 네트워크를 형성하며 연결되어 있다. 각각의 피어 시스템은 참가자인 피어들의 목록을 저장한다. 본 발명의 실시예에서, 참가자 피어는 정기적으로 어떤 피어가 참가자인지를 나타내는 메세지를 방송한다. 본 발명의 다른 실시예에서, 서버는 참가자를 식별하도록 한다.
중계 피어는 메세지를 수신한다(블록 2205). 메세지는 메세지를 만드는 피어는 나타내는 원천 식별자를 포함한다.
중계 피어는 수신된 메세지의 원천이 참가자 피어라는 것을 확인한다(블록 2210). 중계 피어는 참가자 피어의 목록을 저장한다. 중계 피어는 수신된 메세지의 원천으로 식별된 피어를 참가자 피어의 목록과 비교한다. 만약 수신된 메세지의 원천 피어가 참가자가 아니라면(즉, 방관자), 중계 피어는 수신된 메세지를 전송하지 않는다.
만약 수신된 메세지에 대한 원천 피어가 참가자라면, 중계 피어는 격자의 중계 방식에 따라 연결을 선택한다(블록 2215). 중계 방식을 사용하여, 중계 피어는 수신된 메세지를 중계하는 어떤 적절한 연결을 선택한다.
중계 피어는 수신된 메세지를 선택된 피어에 전송한다(블록 2220). 메세지를 중계하기 전에, 마치 수신된 메세지가 중계 피어로부터 선택된 메세지에 중계되었다는 것을 수신된 메세지가 나타내도록 주소 정보를 업데이트 하는 것과 같이 중계 피어는 수신된 메시지를 각각의 선택된 피어에 맞게 조정한다.
본 발명의 실시예에서, 방관자는 동일한 격자 내에서 참가자로서 존재하지 않는다. 방관자들은 참가자 격자에 연결된 병렬의 방관자 격자를 형성한다. 방관자는 참가자로부터 데이터를 수신하고 방관자 격자에서 데이터를 중계한다. 격자들 사이의 연결(들)은 서버 또는 게이트웨이(gateway) 또는 각 격자로부터 선택된 피어들 사이의 연결에 의해 제공될 수 있다.
본 발명의 다른 실시예에서, 방관자는 조건부 방관자가 될 수 있다. 조건부 방관자는 격자를 통하여 중계되는 데이터를 생성하기 위한 허가를 요청할 수 있다. 만약 방관자가 허가를 받는다면, 방관자는 격자 안에 있는 피어가 중계하는 메세 지(예를 들어, 인증 플래그(flag)를 포함하는 메세지)를 전송할 수 있다. 허가는 서버 또는 중재자로서 선택된 피어 또는 (하나 이상의) 참가자에 의해 승인된다. 예를 들어, 교습 환경에서, 참가자는 강사이고 방관자는 모든 피어에게 중계되는 질문을 하는 것을 허가해 줄 것을 요청할 수 있다.
고립 복구(Island Recovery)
본 발명의 실시예에서, 피어투피어 중계 네트워크에 있는 서버와 피어들은 격자 안에서 고립의 형성을 피하거나 복구하기 위한 연결을 조정하는 것을 제공한다. 격자 안에서 고립된 피어 그룹은 고립(island)이라고 정의한다. 고립은 격자 안에서 다중 피어들이 실질적으로 동시에 단절될 때 발생할 수 있다. 상기한 단절 과정에서, 남아 있는 피어들은 이용 가능한 연결을 나타내는 메세지를 전송하지만, 다중의 동시 발생의 단절로 남아 있는 피어들은 격자 안에서 고립된 그룹을 형성할 수 있다. 고립 사이에는 피어투피어 연결이 없으므로, 하나의 고립에 있는 피어들은 다른 고립에 있는 피어들에게 메세지를 전송할 수 없다. 서버는 고립의 형성을 검색하고 고립을 제거하기 위해 피어들과 상호 작용을 한다.
도 23은 본 발명의 실시예에 따른 격자에서 고립을 검색하는 것을 나타내는 흐름도(2300)이다. 우선, 다중 피어 시스템은 피어투피어 중계 네트워크나 격자를 형성하며 연결되어 있다. 피어들이 연결을 개시하거나 끊을 때, 또는 단절이 될 때, 피어들은 변화된 연결을 서버에 알려준다. 이러한 방식으로, 서버는 격자 안의 모든 연결을 추적한다. 서버는 또한 격자 안의 피어들의 정돈된 목록을 지니고 있 다.
서버는 고립 카운터를 설치한다(블록 2305). 고립 카운터는 고립의 수를 나타낸다. 본 발명의 실시예에서, 서버는 카운터 i를 1로 설정한다.
서버는 시작 피어를 선택한다(블록 2310). 고립 카운터가 1일 때, 서버는 피어들의 정돈된 목록에서 첫번째 피어를 시작 피어로 선택한다. 고립 카운터가 1보다 커졌을 때, 서버는 시작 피어로서 가장 최근에 발견된 표시되지 않은 피어를 선택한다(아래 기술된 바와 같이).
서버는 시작 피어에 연결된 각각의 피어를 시작 피어와 같은 고립에 속하는 것으로 표시한다(블록 2315). 서버는 시작 피어에 직접적으로 연결되어 있는 피어와 시작 피어에 다른 피어들(예를 들어, 시작 피어로부터 연결된 피어까지의 진행, 이러한 연결된 피어에 연결되어 있는 피어, 등등)을 통하여 간접적으로 연결되어 있는 피어를 표시한다. 서버는 피어에 피어가 속하는 고립을 나타내기 위한 고립 카운터의 현재 값을 표시한다.
시작 피어에 연결되어 있는 모든 피어들을 표시한 후에, 서버는 격자 안에 v시되지 않은 피어가 남아 있는지를 결정한다(블록 2320). 본 발명의 실시예에서, 서버는 피어의 정돈된 목록을 통하여 표시되지 않은 피어를 찾는 것을 진행한다.
만약 서버가 표시되지 않은 피어를 찾는다면, 서버는 고립 카운터를 증가시킨다(블록 2325). 서버는 부가적인 고립이 발견되었다는 것을 나타내기 위해 고립 카운터를 증가시킨다. 고립 카운터를 증가시킨 이후에, 서버는 블록 2310으로 되돌아와서 발견된 표시되지 않은 피어를 시작 피어로써 사용한다.
만약 서버가 표시되지 않은 피어를 발견하지 않는다면, 서버는 발견된 고립의 수를 결정한다(블록 2330). 서버는 발견된 고립 각각에 대해 고립 카운터를 증가시키고, 그래서 고립 카운터는 발견된 고립의 수를 나타낸다. 만약 고립 카운터가 1이라면, 하나의 고립이 발견되었고 그래서 격자는 다중 고립으로 나누어지지 않는다. 만약 고립 카운터가 1보다 크다면, 다중 고립은 발견되고 격자는 고립들로 나누어진다.
도 24는 본 발명의 실시예에 따른 피어투피어 중계 네트워크에서 고립을 제거하는 것을 나타낸 흐름도(2400)를 도시하고 있다. 우선, 다중 피어 시스템은 피어투피어 중계 네트워크 또는 격자에 연결되어 있다. 격자는 2개의 피어 고립으로 나누어지는데, 하나의 고립 안에 있는 피어는 다른 고립 안에 피어들에 대해 연결 경로를 가지지 않는다. 서버는 예컨대 도 23에 도시된 과정을 이용하여 2개의 고립을 발견한다.
서버는 각 고립으로부터 피어를 선택한다(블록 2405). 서버는 첫번째 고립된 피어와 두번째 고립된 피어를 이전의 방식으로 선택할 수 있다. 본 발명의 실시예에서, 서버는 이용 가능한 연결을 구비한 피어를 선택한다. 다른 실시예에서, 서버는 고립으로부터 피어를 무작위적으로 선택한다.
만약 첫번째 고립 피어가 이용 가능한 연결을 구비하고 있지 않다면, 서버는 연결을 끊기 위해 첫번째 고립 피어에 단절 메세지를 전송한다(블록 2410). 첫번째 고립 피어는 서버로부터 메세지를 수신하고, 상기한 바와 같이 피어가 강제 연결 메세지를 수신했을 때 끊기 위한 연결을 선택하는 것과 같은 방식으로 끊기 위한 연결을 선택한다. 첫번째 고립 피어는 연결을 끊고 이용 가능한 연결을 구비한다.
서버는 시작된 강제 연결 메세지를 첫번째 고립 피어에 전송한다(블록 2415). 시작된 강제 연결 메세지는 두번째 고립 피어의 주소를 포함한다. 첫번째 고립 피어는 서버로부터 메세지를 수신하고 강제 연결 메세지를 두번째 고립 피어에 전송한다.
두번째 고립 피어는 강제 연결 메세지를 첫번째 고립 피어로부터 수신하고 끊을 연결을 선택하고, 선택된 연결을 끊는다(블록 2420). 강제 연결 메세지의 수신자에서 기술한 것과 같은 방식으로 두번째 고립 피어는 끊을 연결을 선택한다. 만약 두번째 고립 피어가 연결을 끊기 전에 이용 가능한 연결을 구비하고 있다면, 두번째 고립 피어는 자신의 어떤 연결도 끊지 않는다.
첫번째 고립 피어는 연결 개시 요청을 두번째 고립 피어에 전송하고 두번째 고립 피어는 연결을 개시한다(블록 2425). 일단 연결이 개시되면, 고립들은 단독의 고립을 형성하며 참가하게 된다. 피어들은 연결을 형성하는 서버에 업데이트를 전송한다. 만약 부가적인 고립이 남아 있다면, 상기한 바와 같이 검색에 의해, 서버는 남아 있는 고립들의 2 이상의 연결을 위해 블록 2405로 되돌아간다.
도 25와 26은 본 발명의 실시예에 따른 고립에 참가하고 고립을 검색하는 예를 나타내고 있다. 도 25에서, 도 11에서 격자(1100)와 유사한 격자(2500)는 피어 C, G 및 F의 동시의 단절로부터 2개의 고립으로 나누어진다. 첫번째 고립은 피어 A, B, D 및 E를 포함한다. 두번째 고립은 피어 H, I 및 J를 포함한다. 도 26에서, 서버는 피어 D가 2개의 고립에 참가하고 있는 피어 I와 연결을 개시하도록 한다.
보안(Security)
본 발명의 실시예에서, 피어투피어 중계 네트워크는 치팅 바이얼레이션(cheating violation) 또는 보안 바이얼레이션 또는 그 둘에 대한 검색과 복구를 제공한다. 치팅 바이얼레이션은 게임 과정에 영향을 주기 위한 것과 같은 온라인 활동 과정에서의 결과를 바꾸기 위한 데이터의 조작을 포함한다. 보안 바이얼레이션은 허가 받지 않은 데이터 또는 격자에 손상을 주는 데이터의 부적절한 사용 또는 격자가 실패하도록 야기하는 것을 포함한다.
도 27은 본 발명의 실시예에 따른 피어투피어 중계 네트워크에서 치팅 바이얼레이션을 찾아내는 흐름도(2700)를 나타낸다. 우선, 다중 피어 시스템은 피어투피어 중계 네트워크 또는 격자를 형성하며 연결되어 있다.
피어는 자신에 연결된 피어 각각으로부터 메세지를 수신한다(블록 2705). 상기한 바와 같이, 격자 안의 피어들은 격자를 통하여 메세지를 중계한다. 피어는 동일한 메세지(비록 주소 정보가 다를 지라도, 동일한 내용 데이터)를 다른 피어들과의 연결 각각을 통하여 수신한다. 예를 들어, 만약 피어가 3개의 연결을 개시한다면, 피어는 각각의 3개의 피어로부터 동일한 메세지를 3번 수신한다. 피어는 메세지를 예컨대 도 2의 메세지(205)에 도시된 원천 식별자(215)와 순서값(220)와 같은 메세지에서 원천과 순서값을 나타내는 정보를 사용하는 동일한 메세지로 식별한다. 다른 피어로부터 나온 동일한 메세지는 같은 원천과 순서 정보를 구비할 것이다.
피어는 연결된 피어들 각각으로부터 수신된 메세지를 비교한다(블록 2710). 피어는 예컨대 도 2의 메세지(205)에 도시된 데이터와 같은 메세지의 데이터 일부를 비교한다. 피어는 메세지의 데이터 일부가 수신된 메세지의 일부와 다른지를 결정한다. 본 발명의 실시예에서, 만약 하나의 연결된 피어로부터 수신된 메세지의 데이터 일부가 다른 연결된 피어로부터 수신된 동일한 메세지의 데이터 일부와 다르다면, 피어는 치팅 바이얼레이션이 발생했다고 결정한다. 피어는 또한 다른 데이터를 가진 메세지를 전송한 하나의 피어가 치팅 바이얼레이션에 책임이 있다고 결정한다. 선택적으로, 피어는 치팅 바이얼레이션을 검색하거나 치팅 바이얼레이션에 책임이 있는 피어를 식별하기 위해 다른 기술을 사용한다. 적절하다면, 피어는 다른 데이터 일부를 구비한 메세지를 중계하지 않는다.
만약 치팅 바이얼레이션이 발생한다면, 피어는 치팅 경고를 전송한다(블록 2715). 치팅 경고는 치팅 바이얼레이션이 발생했다는 것과 어떤 피어가 치팅 바이얼레이션에 책임이 있는지를 나타낸다. 피어는 격자 전체에 경고를 중계하기 위해 연결된 피어에 치팅 경고를 전송한다. 다른 실시예에서, 피어는 치팅 경고를 적절하게 처리하기 위해 서버에 전송한다.
피어들이 치팅 경고를 수신할 때, 피어는 바이얼레이션에 대항하여 회복하기 위한 조치를 취한다(블록 2720). 피어들은 치팅 피어가 격자 활동에 계속 영향을 미치는 것을 막기 위한 조치를 취한다. 본 발명의 실시예에서, 피어는 치팅 피어로부터 온 메세지를 무시한다. 본 발명의 다른 실시예에서, 피어들은 치팅 피어가 격자로부터 단절되도록 한다. 피어는 또한 다른 데이터를 포함하고 있는 메세지의 영 향을 고치기 위한 조치를 취한다(예컨대, 치팅 메세지를 식별하는데 사용되는 다른 메세지의 데이터에 의해 보여지는 올바른 데이터를 가진 대체 메세지에 의해). 선택적으로, 피어들 중 하나는 올바른 데이터를 판단하고 올바를 데이터를 격자 전체에 중계한다. 다른 실시예에서, 피어들은 서버에 알려줌으로써 치팅 경고에 응답한다. 이 경우, 서버는 치팅 바이얼레이션의 주소를 지정한다(예컨대, 치팅 바이얼레이션에 책임이 있는 피어를 단절하는 것에 의해).
다른 실시예에서, 피어가 메세지를 전송할 때, 수신자는 전송하는 피어에 메세지를 되돌리는 중계를 한다. 전송하는 피어는 전송된 메세지의 복사본을 가지고 있다. 전송하는 피어가 수신자로부터 메세지를 되돌려 받을 때, 전송하는 피어는 전송된 메세지의 데이터를 수신된 메세지의 데이터와 비교한다. 피어는 차이점을 발견하는 것에 의해 치팅 바이얼레이션을 검색한다. 피어는 수신자가 메세지를 변형하였는지를 결정하고 치팅 경고를 전송한다. 본 발명의 실시예에서, 치팅 메세지에 대한 복구나 수리의 조치는 다중 바이얼레에션이 보고(예를 들어, 서버에 의한 추적에 의해)될 때까지 취해지지 않는다. 다른 실시예에서, 치팅에 대한 이러한 전송-반송 검사는 잠재적인 문제가 식별되는 좀 더 복잡한 과정이 따르는 치팅 검색의 첫번째 단계이다.
본 발명의 다른 실시예에서, 피어는 수신된 메세지의 데이터와 피어에 의해 생성되는 예견되는 데이터 세트와의 비교에 의해 치팅 바이얼레이션을 검색한다. 만약 피어가 수신된 메세지에 있는 데이터가 피어에 의해 생성된 것과 다르다고 결정한다면, 피어는 수신된 메세지의 전송자가 치팅 바이얼레이션에 책임이 있다고 결정하고 경고를 한다.
도 1에 도시된 격자(100)에서 치팅 바이얼레이션을 검색하는 예를 보면, 피어 B는 피어 A, D 및 E로부터 동일한 메세지를 수신한다. 피어 B는 원천 식별자와 순서값을 비교함으로써 메세지가 동일한 것으로 식별한다. 만약 피어 B가 피어 A로부터 온 메세지가 다른 데이터 일부를 구비하고 있다고 결정한다면, 피어 B는 피어 A를 치팅으로 식별하는 경고를 한다. 피어 B는 치팅 경고를 피어 D와 E(그리고 선택적으로 피어 A)에 전송한다. 피어들은 모든 피어가 경고를 수신할 때까지 치팅 경고를 중계한다. 경고에 응답하여, 피어들은 피어 A로부터 올 앞으로의 모든 메세지를 무시할 것이다. 그 결과, 피어 B, C 및 D는 더 이상 피어 A로부터 온 메세지를 중계하지 않을 것이다.
도 28은 본 발명의 실시예에 따른 피어투피어 중계 네트워크에 보안 바이얼레이션을 검색하는 흐름도(2800)를 나타낸다. 우선, 다중 피어 시스템은 피어투피어 중계 네트워크 또는 격자를 형성하며 연결되어 있다.
피어는 자신에 연결된 피어들 중 하나로부터 메세지를 수신한다(블록 2805). 피어는 메세지를 분석하고 보안 바이얼레이션을 검색한다(블록 2810). 피어는 메세지가 유효하기 않거나 유효하지 않은 데이터를 포함하고 있다는 것을 인식하는 것에 의해 메세지가 보안 바이얼레이션이라고 결정한다. 다른 실시예에서, 피어는 메세지가 피어에 어떻게 전송되었는지를 분석하여 메세지가 보안 바이얼레이션이라고 결정한다. 예를 들어, 만약 동일한 메세지가 다수 반복하여 전송되었다면(예를 들어, 서비스 공격의 부정으로), 피어는 그 메세지가 보안 바이얼레이션이라고 인식 한다. 본 발명의 실시예에서, 메세지는 연속적인 패킷(packets)으로 전송되고 피어는 패킷 수준과 같은 완전한 메세지보다 낮은 수준에서 보안 바이얼레이션을 검색한다. 피어는 또한 보안 바이얼레이션 메세지의 전송자가 보안 바이얼레이션에 책임이 있다고 결정한다. 선택적으로, 피어는 다른 기술을 사용하여 보안 바이얼레이션을 검색하거나 치팅 바이얼레이션에 책임이 있는 피어를 식별한다. 피어는 보안 바이얼레이션을 구비한 메세지나 데이터를 중계하지 않는다.
만약 보안 바이얼레이션이 발생한다면, 피어는 보안 경고를 전송한다(블록 2815). 보안 경고는 보안 바이얼레이션이 발생했다는 것과 어떤 피어가 보안 바이얼레이션에 책임이 있는지를 나타낸다. 피어는 격자 전체에 경고를 중계하기 위한 연결된 피어에 보안 경고를 전송한다. 다른 실시예에서, 피어는 보안 경고를 적절하게 처리하기 위해 서버에 전송한다.
피어들이 보안 경고를 수신할 때, 피어들은 바이얼레이션에 대항하여 회복하기 위한 조치를 취한다(블록 2820). 피어들은 격자의 보안을 위반하는 피어들이 계속하여 격자에 영향을 미치거나 손상을 주는 것을 막기 위한 조치를 취한다. 본 발명의 실시예에서, 피어들은 보안 바이얼레이션에 책임이 있는 피어로부터 온 메세지를 무시한다. 다른 실시예에서, 피어들은 보안 바이얼레이션에 책임이 있는 피어가 격자로부터 단절되도록 한다. 피어들은 또한 보안 바이얼레이션에 의한 손상을 치료하기 위한 적절한 조치를 취한다. 다른 실시예에서, 피어들은 서버에 알려줌으로써 보안 바이얼레이션에 응답한다. 이 경우, 서버는 보안 바이얼레이션의 주소를 지정한다(예컨대, 보안 바이얼레이션에 책임이 있는 피어를 단절하는 것과 격자 에 생긴 손상을 치료하는 조치에 의해)
도 29와 30은 본 발명의 실시예에 따른 서버(2905)와 피어 시스템(3005)의 블록 다이아그램을 나타낸다. 다른 실시예에서, 서버 또는 피어는 도 29와 30에 도시된 것보다 더 적은 구성 성분을 포함하거나 다르거나 부가적인 구성 성분을 포함한다.
서버(2905)는 상기한 바와 같이 작동하고, 상기한 바와 같이 격자(2910)를 형성하는 구성 성분을 포함하며, 피어(2915)를 더하고, 피어(2920)을 연결하고, 피어(2925)를 단절하고, 격자(2930)를 유지하고, 격자 데이터(예를 들어, 연결, 멤버, 연결 한계)와 방식(예를 들어, 중계 방식, 연결 방식)을 저장하고 생성하며, 다중 세계(2940)를 처리하며, 잉여 목록(2940)을 처리하고 도와주며, 다중 격자(2950)를 처리하고, 격자(2955)의 방관자와 참가자를 처리하고, 고립 검색과 복구(2960)를 처리하며, 치팅과 보안 바이얼레이션(2965)을 처리하고 주소를 지정하는 기능성을 제공하기 위한 구성 성분과 서버의 중앙 서비스(2970)(예를 들어, 네트워크 통신과 주소 지정, 플레이어 매칭, 채팅 기능, 데이터 백업(backup))를 포함한다.
피어 시스템(3005)은 상기한 바와 같이 작동하고, 상기한 바와 같이 격자(3010)를 형성하는 구성 성분을 포함하며, 격자(3015)에 참가하고, 피어(3020)을 연결하고, 피어(3025)를 단절하고, 격자(3030)를 유지하고, 격자 데이터(예를 들어, 연결, 멤버, 연결 한계)와 방식(예를 들어, 중계 방식, 연결 방식)(3035)을 저 장하고 생성하며, 잉여 목록(3040)을 형성하고, 업데이트하고, 사용하며, 다중 격자(3045)을 작동하고, 격자(3050)의 방관자와 참가자를 작동하고, 고립 검색과 복구(3055)를 처리하며, 치팅과 보안 바이얼레이션(3060)을 처리하고 주소를 지정하는 기능성을 제공하기 위한 구성 성분과 피어 시스템 서비스(3065)(예를 들어, 네트워크 통신과 주소 지정, 플레이어 매칭, 채팅 기능, 데이터 백업(backup) 등)를 포함한다.
*피어투피어 중계 네트워크의 다양한 실시예는 바람직한 이익을 준다. 격자는 온라인 대용량 다중 플레이어 컴퓨터 게임을 포함한 다양한 네트워크 응용에서 사용될 수 있다. 온라인 게임 응용은 단지 하나의 공통적인 데이터 세트를 공유하고 유지한다는 하나의 공통점을 가지고 있는 네트워크 응용 그룹의 한 예이다. 데이터 세트가 하나의 피어에서 업데이트 될 때 정보는 다른 피어 그룹에 전송되고 격자 전체에 중계되며 따라서 각각의 피어는 업데이트 데이터 세트를 구비한다. 중계 격자는 제한된 네트워크 대역폭을 가지고 연결된 피어들이 그들 사이에서 데이터를 중앙 서버(데이터 분배를 위한)를 통하지 않고 교환하도록 허락한다. 이 네트워크는 다른 게임과 관련된 정보, 미디어(media) 파일, 스트리밍 오디오(streaming audio), 스트리밍 비디오(streaming video)인 게임 데이터를 교환하는데 사용될 수 있다.
예를 들어, 본 발명의 실시예에서, 피어들은 격자를 파일 형성을 위해 사용 한다. 격자에 있는 피어는 형성자에 연결되어 있는 피어들에게 파일을 전송함으로써 파일(하나의 메세지 또는 다중 메세지로 나누어진)을 형성하고 격자의 멤버 피어들은 모든 멤버에 대하여 격자 전체를 통하여 파일을 중계한다. 이러한 방식으로 격자의 모든 멤버는 서버와 모든 피어에 대해 형성된 것으로부터 직접적인 연결 없이 형성된 파일을 수신할 수 있다. 다양한 실시예에서, 어떤 형태의 파일이든 형성될 수 있다. 파일은 데이터, 미디어, 또는 실행할 수 있는 소프트웨어 응용이 될 수 있다. 격자를 통하여 형성된 파일의 예는 스트리밍 미디어(예를 들어, 오디오 및/또는 비디오), 미디어 파일, 게임의 리플레이(replay) 데이터 또는 지도, 발표, 메세지, 응용 데이터 모듈(modules)(예를 들어, 지도, 템플릿(template), 내용, 소리) 등의 다른 응용을 포함하지만 그에 한정되는 것은 아니다.
발명의 다양한 실시예는 전기적인 하드웨어, 컴퓨터 소프트웨어 또는 이러한 기술들의 결합에서 실현된다. 대부분의 실시예는 프로그램할 수 있는 컴퓨터에 의해 실현되는 하나 이상의 컴퓨터 프로그램을 포함한다. 예를 들어, 본 발명의 실시예에서, 각 피어 시스템과 서버는 피어투피어 중계 네트워크 기능성을 실현하는 하나 이상의 컴퓨터 실행 가능한 소프트웨어를 포함한다. 일반적으로, 각 컴퓨터는 하나 이상의 과정, 하나 이상의 데이터 저장 성분(예를 들어, 휘발성 또는 비휘발성 메모리 모듈과 하드와 플로피 디스크 드라이버, CD-ROM 드라이버 및 자기 테이프 드라이버와 같은 불변의 광학과 자기 저장 장치), 하나 이상의 입력 장치(예를 들어, 마우스와 키보드) 및 하나 이상의 출력 장치(예를 들어, 디스플레이 콘솔과 프린터)를 포함한다.
컴퓨터 프로그램은 일반적으로 영구적인 저장 매체에 저장되는 실행 가능한 코드를 포함하고 실행시에 메모리로 복사한다. 처리 장치는 명령받은 순서에 따라 메모리로부터 프로그램 지시를 검색하는 것에 의해 코드를 실행한다. 프로그램 코드를 실행할 때, 컴퓨터는 데이터를 데이터의 작동을 수행하는 입력 및/또는 저장 장치로부터 수신하고, 그 다음 결과 데이터를 출력 및/또는 저장 장치에 전달한다.
본원 발명의 다양한 실시예를 기술하였다. 그러나 그 기술 분야에서 통상의 지식을 가진 자는 본원 발명의 범위 내에서 추가적인 실시예가 가능하다는 것을 알 수 있다. 예를 들어, 위에서는 게임 응용을 제공하는 환경에서 논의된 피어투피어 중계 네트워크의 몇 가지 실시예를 기술하였으나, 파일 공유 또는 다른 데이터 보급 응용과 같은 다른 실시예도 가능하다.
따라서, 본원 발명은 상기한 실시예에 한정되는 것은 아니다.
도 1은 본 발명의 실시예에 따른 대표적인 피어투피어 중계 네트워크를 보여준다.
도 2는 본 발명의 실시예에 따른 메세지의 블록 다이아그램(block diagram)이다.
도 3은 본 발명의 실시예에 따른 피어투피어 중계 네트워크에서 피어가 메세지를 중계하는 것을 나타내는 흐름도(flowchart)이다.
도 4는 본 발명의 실시예에 따른 피어투피어 중계 네트워크에서 중계 방식의 세트에 따라 피어가 메세지를 중계하는 것을 나타내는 흐름도이다.
도 5는 본 발명의 실시예에 따른 피어투피어 중계 네트워크를 구성하는 것을 나타내는 흐름도이다.
도 6은 본 발명의 실시예에 따른 피어투피어 중계 네트워크를 연결하는 것을 나타내는 흐름도이다.
도 7은 본 발명의 실시예에 따른 피어투피어 중계 네트워크에 참여하는 피어를 선택하는 것을 나타내는 흐름도이다.
도 8은 본 발명의 실시예에 따른 피어투피어 중계 네트워크에서 피어가 새로운 피어에게 연결하도록 하는 것을 나타내는 흐름도이다.
도 9는 본 발명의 실시예에 따른 피어투피어 중계 네트워크에서 단절하는 것을 나타내는 흐름도이다.
도 10은 본 발명의 실시예에 따른 피어투피어 중계 네트워크를 지속하는 것 을 나타내는 흐름도이다.
도 11 내지 도 18은 본 발명의 실시예에 따른 격자(grid)를 형성하고, 조정하고, 지속하는 것을 도시하고 있다.
도 19는 본 발명의 실시예에 따른 피어투피어 중계 네트워크에서 잉여 목록을 만드는 것을 나타내는 흐름도이다.
도 20은 본 발명의 실시예에 따른 피어투피어 중계 네트워크에서 단절하는 피어를 위한 잉여 목록을 업데이트 하는 것을 나타내는 흐름도이다.
도 21은 본 발명의 실시예에 따른 다중 격자에 속하는 피어 시스템으로부터 메세지를 중계하는 것을 나타내는 흐름도이다.
도 22는 본 발명의 실시예에 따른 방관자와 참가자를 제공하는 격자에서 메세지를 중계하는 것을 나타내는 흐름도이다.
도 23은 본 발명의 실시예에 따른 격자에서 고립을 검색하는 것을 나타내는 흐름도이다.
도 24는 본 발명의 실시예에 따른 피어투피어 중계 네트워크에서 고립을 제거하는 것을 나타내는 흐름도이다.
도 25과 도 26은 본 발명의 실시예에 따른 고립에 참가하고 고립을 검색하는 것을 나타내는 흐름도이다.
도 27은 본 발명의 실시예에 따른 피어투피어 중계 네트워크에서 치팅(cheating) 바이얼레이션을 찾아내는 것을 나타내는 흐름도이다.
도 28은 본 발명의 실시예에 따른 피어투피어 중계 네트워크에서 보안 바이 얼레이션을 찾아내는 것을 나타내는 흐름도이다.
도 29와 도 30은 각각 본 발명의 실시예에 따른 서버와 피어 시스템의 블록 다이아그램이다.
도 31a와 도 31b는 전형적인 피어투피어의 구조와 클라이언트 서버를 나타내고 있다.

Claims (38)

  1. 피어투피어 중계 네트워크에서 데이터를 중계하는 방법에 있어서,
    피어투피어 중계 네트워크에서 중계 피어 시스템에 연결된 전송 피어 시스템으로부터 중계 피어 시스템에 데이터를 수신하는 단계;
    하나 이상의 중계 방식으로 이루어지는 중계 방식의 세트에 의해 정해지고 상기 데이터를 중계하는 0 이상의 피어 시스템을 선택하기 위하여, 상기 중계 방식의 세트를 적용하는 단계; 및
    상기 데이터를 상기 중계 방식의 세트를 적용하여 선택된 어떤 피어 시스템에 중계하는 단계를 포함하는 것을 특징으로 하는 피어투피어 중계 네트워크에서 데이터를 중계하는 방법.
  2. 제 1항에 있어서,
    하나 이상의 중계 방식으로 이루어지는 상기 중계 방식의 세트는, 상기 중계 피어 시스템이 상기 전송 피어 시스템으로부터 수신된 동일한 데이터를 상기 전송 피어 시스템으로 중계하지 않는 것을 나타내는 것을 특징으로 하는 방법.
  3. 제 1항에 있어서,
    하나 이상의 중계 방식으로 이루어지는 상기 중계 방식의 세트는, 상기 중계 피어 시스템이 동일한 피어 시스템에 동일한 데이터를 2번 중계하지 않는 것을 나타내는 것을 특징으로 하는 방법.
  4. 제 1항에 있어서,
    하나 이상의 중계 방식으로 이루어지는 상기 중계 방식의 세트는, 상기 중계 피어 시스템이 수신된 상기 데이터를 식별하는 정보에 따라서 상기 데이터의 원천으로서 나타나는 상기 피어 시스템에 상기 데이터를 중계하지 않는 것을 나타내는 것을 특징으로 하는 방법.
  5. 제 1항에 있어서,
    수신된 상기 데이터를 식별하는 정보를 저장하는 단계;를 더 포함하는 것을 특징으로 하는 방법.
  6. 제 1항에 있어서,
    수신된 상기 데이터가 상기 중계 피어 시스템에 의해 미리 수신되었는지의 여부를 결정하기 위해서 수신된 상기 데이터를 식별하는 정보를 상기 중계 피어 시스템에 의해 저장된 정보와 비교하는 단계;를 더 포함하는 것을 특징으로 하는 방법.
  7. 제 1항에 있어서,
    수신된 상기 데이터는 네트워크 환경에 대한 업데이트 데이터인 것을 특징으 로 하는 방법.
  8. 제 1항에 있어서,
    수신된 상기 데이터는 온라인 게임에 대한 업데이트 데이터인 것을 특징으로 하는 방법.
  9. 제 1항에 있어서,
    적어도 하나의 피어 시스템은 네트워크 가능한 게임 콘솔인 것을 특징으로 하는 방법.
  10. 제 1항에 있어서,
    적어도 2개의 피어 시스템은 인터넷을 통하여 연결되는 것을 특징으로 하는 방법.
  11. 피어투피어 중계 네트워크에 피어 시스템을 추가하는 방법에 있어서,
    서버 및 참가 피어 시스템 사이의 연결을 개시하는 단계;
    하나 이상의 확립된 피어투피어 중계 네트워크를 나타내는 격자 정보를 상기 참가 피어 시스템에 제공하는 단계;
    하나 이상의 멤버 피어 시스템을 갖는 선택된 피어투피어 중계 네트워크를 나타내는 격자 선택을 상기 참가 피어 시스템으로부터 수신하는 단계;
    상기 참가 피어 시스템에 하나 이상의 상기 멤버 피어 시스템 각각의 네트워크 주소를 제공하는 단계; 및
    상기 참가 피어 시스템이 상기 멤버 피어 시스템에 연결되는 것을 나타내는 연결 업데이트를 상기 참가 피어 시스템으로부터 수신하는 단계를 포함하고,
    각각의 멤버 피어 시스템은 연결 한계보다 같거나 작은 수의 다른 멤버 피어 시스템에 연결되어 있으며,
    각각의 멤버 피어 시스템은 그 멤버 피어 시스템에 연결되어 있는 다른 멤버 피어 시스템에 데이터를 중계하기 위한 하나 이상의 중계 방식으로 이루어지는 중계 방식의 세트를 저장하는 것을 특징으로 하는 피어투피어 중계 네트워크에 피어 시스템을 추가하는 방법.
  12. 제 11항에 있어서,
    상기 서버, 및 상기 멤버 피어 시스템 중 하나인 형성 피어 시스템 사이의 연결을 개시하는 단계;
    상기 형성 피어 시스템으로부터 상기 피어투피어 중계 네트워크를 생성하도록 요청을 수신하는 단계;
    저장 장치 내에 상기 피어투피어 중계 네트워크를 등록하는 단계; 및
    상기 형성 피어 시스템에 생성 확인을 전송하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  13. 피어투피어 중계 네트워크에 참가하는 방법에 있어서,
    참가 피어 시스템으로부터 피어투피어 중계 네트워크 내의 하나 이상의 멤버 피어 시스템 각각으로 참가 메시지를 전송하는 단계;
    하나 이상의 멤버 피어 시스템 중 적어도 어느 하나로부터 참가 응답을 수신하는 단계;
    하나 이상의 연결 방식으로 이루어지는 연결 방식의 세트에 따라서 하나 이상의 멤버 피어 시스템을 연결 한계까지 선택하는 단계; 및
    각각의 선택된 멤버 피어 시스템과의 연결을 개시하는 단계를 포함하며,
    상기 참가 응답은 긍정적이거나 부정적이어서, 긍정적인 참가 응답은 상기 참가 응답을 전송한 멤버 피어 시스템이 이용 가능한 연결을 갖는 것을 나타내고, 부정적인 참가 응답은 상기 참가 응답을 전송한 멤버 피어 시스템이 이용 가능한 연결을 갖지 않는 것을 나타내고,
    각각의 멤버 피어 시스템은 상기 연결 한계보다 같거나 작은 수의 다른 멤버 피어 시스템에 연결되고,
    각각의 멤버 피어 시스템은 그 멤버 피어 시스템에 연결된 다른 멤버 피어 시스템으로 데이터를 중계하기 위한 하나 이상의 중계 방식으로 이루어지는 중계 방식의 세트를 저장하는 것을 특징으로 하는 피어투피어 중계 네트워크에 참가하는 방법.
  14. 제 13항에 있어서,
    멤버 피어 시스템이 다른 멤버 피어 시스템과 개시한 연결의 수가 연결 한계보다 작은 경우, 상기 멤버 피어 시스템은 이용 가능한 연결을 갖고 있는 것을 특징으로 하는 방법.
  15. 제 13항에 있어서,
    하나 이상의 멤버 피어 시스템을 선택하는 단계는,
    각각의 수신된 참가 응답에 대한 응답 시간을 저장하는 단계를 포함하는 것을 특징으로 하는 방법.
  16. 제 13항에 있어서,
    하나 이상의 멤버 피어 시스템을 선택하는 단계는,
    상기 참가 피어 시스템에 의해 최초로 상기 긍정적인 참가 응답이 수신된 멤버 피어 시스템을 선택하는 단계와,
    시간 한계 내에서 상기 참가 피어 시스템에 의해 마지막으로 상기 긍정적인 참가 응답이 수신된 멤버 피어 시스템을 선택하는 단계를 포함하는 것을 특징으로 하는 방법.
  17. 제 16항에 있어서,
    하나 이상의 멤버 피어 시스템을 선택하는 단계는,
    상기 긍정적인 참가 응답이 수신되었으나 선택되지 않은 나머지 멤버 피어 시스템 중에서, 상기 연결 한계까지 추가의 멤버 피어 시스템을 실질적으로 임의로 선택하는 단계를 포함하는 것을 특징으로 하는 방법.
  18. 제 16항에 있어서,
    하나 이상의 상기 멤버 피어 시스템을 선택하는 단계는,
    상기 긍정적인 참가 응답이 수신되었으나 선택되지 않은 나머지 멤버 피어 시스템 중에서, 상기 긍정적인 참가 응답이 수신되는 순으로, 상기 연결 한계까지 추가의 멤버 피어 시스템을 선택하는 단계를 포함하는 것을 특징으로 하는 방법.
  19. 제 13항에 있어서,
    하나 이상의 멤버 피어 시스템을 선택하는 단계는,
    상기 부정적인 참가 응답이 수신된 멤버 피어 시스템을 강제 연결 피어 시스템으로 선택하는 단계;
    상기 강제 연결 피어 시스템으로, 상기 강제 연결 피어 시스템이 상기 강제 연결 피어 시스템의 개시된 연결 중의 어느 하나를 끊는 것을 요청하는 강제 연결 요청을 전송하는 단계; 및
    상기 강제 연결 피어 시스템으로부터 강제 연결 확인을 수신하는 단계를 포함하는 것을 특징으로 하는 방법.
  20. 제 19항에 있어서,
    상기 강제 연결 피어 시스템을 선택하는 단계는,
    상기 부정적인 참가 응답을 전송한 상기 멤버 피어 시스템에 하나 이상의 연결 방식으로 이루어지는 상기 연결 방식의 세트를 적용하는 단계를 포함하는 것을 특징으로 하는 방법.
  21. 제 13항에 있어서,
    서버 및 상기 참가 피어 시스템 사이의 연결을 개시하는 단계;
    하나 이상의 확립된 피어투피어 중계 네트워크를 나타내는 격자 정보를 상기 참가 피어 시스템에서 수신하는 단계;
    하나 이상의 멤버 피어 시스템을 갖는 선택된 상기 피어투피어 중계 네트워크를 나타내는 격자 선택을 상기 참가 피어 시스템으로부터 상기 서버로 전송하는 단계;
    상기 참가 피어 시스템에 상기 하나 이상의 멤버 피어 시스템 각각의 네트워크 주소를 수신하는 단계; 및
    상기 참가 피어 시스템이 연결되어 있는 멤버 피어 시스템을 나타내는 연결 업데이트를 상기 참가 피어 시스템으로부터 전송하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  22. 피어투피어 중계 네트워크를 확립하는 방법에 있어서,
    서버, 및 멤버 피어 시스템 중 어느 하나인 형성 피어 시스템 사이의 연결을 개시하는 단계;
    상기 형성 피어 시스템으로부터 상기 서버로 상기 피어투피어 중계 네트워크를 생성하도록 하는 요청을 전송하는 단계; 및
    상기 형성 피어 시스템에서 생성 확인을 상기 서버로부터 수신하는 단계를 포함하며,
    상기 형성 피어 시스템은 상기 형성 피어 시스템이 연결하도록 허용되는 다른 피어 시스템의 수를 정의하는 연결 한계를 저장하고,
    상기 형성 피어 시스템은 상기 형성 피어 시스템에 연결된 다른 피어 시스템으로 데이터를 중계하기 위한 하나 이상의 중계 방식으로 이루어지는 중계 방식의 세트를 저장하는 것을 특징으로 하는 피어투피어 중계 네트워크를 확립하는 방법.
  23. 피어투피어 중계 네트워크 내의 피어 시스템을 연결하는 방법에 있어서,
    연결되지 않은 피어 시스템이 멤버 시스템과 개시한 연결의 수가 연결 한계보다 작은 경우, 상기 연결되지 않은 피어 시스템으로부터 피어투피어 중계 네트워크 내의 하나 이상의 멤버 피어 시스템으로 연결 가능 메시지를 전송하는 단계;
    상기 하나 이상의 멤버 피어 시스템 중 적어도 어느 하나로부터 연결 가능 응답을 수신하는 단계;
    하나 이상의 연결 방식으로 이루어지는 연결 방식의 세트에 따라서 멤버 피어 시스템을 선택하는 단계; 및
    선택된 상기 멤버 피어 시스템과의 연결을 개시하는 단계를 포함하며,
    각각의 상기 연결 가능 응답은 긍정적이거나 부정적이어서, 긍정적인 연결 응답은 전송하는 상기 멤버 피어 시스템이 이용 가능한 연결을 갖는 것을 나타내고, 부정적인 상기 연결 응답은 전송하는 상기 멤버 피어 시스템이 이용 가능한 연결을 갖지 않는 것을 나타내고,
    각각의 상기 멤버 피어 시스템은 상기 연결 한계보다 같거나 작은 수의 다른 멤버 피어 시스템에 연결되고,
    각각의 상기 멤버 피어 시스템은 그 멤버 피어 시스템에 연결된 다른 멤버 피어 시스템으로 데이터를 중계하기 위한 하나 이상의 중계 방식으로 이루어지는 중계 방식의 세트를 저장하는 것을 특징으로 하는 피어투피어 중계 네트워크 내의 피어 시스템을 연결하는 방법.
  24. 제 23항에 있어서,
    연결되지 않은 상기 피어 시스템에 의해 연결을 끊는 단계;를 더 포함하는 것을 특징으로 하는 방법.
  25. 제 23항에 있어서,
    멤버 피어 시스템이 다른 멤버 피어 시스템과 개시한 연결의 수가 연결 한계보다 작은 경우, 상기 멤버 피어 시스템은 이용 가능한 연결을 갖고 있는 것을 특징으로 하는 방법.
  26. 제 23항에 있어서,
    멤버 피어 시스템을 선택하는 단계는,
    각각의 수신된 연결 가능 응답에 대한 응답 시간을 저장하는 단계를 포함하는 것을 특징으로 하는 방법.
  27. 제 23항에 있어서,
    멤버 피어 시스템을 선택하는 단계는,
    연결되지 않은 상기 피어 시스템에 의해 최초로 상기 긍정적인 연결 가능 응답이 수신된 멤버 피어 시스템을 선택하는 단계를 포함하는 것을 특징으로 하는 방법.
  28. 제 23항에 있어서,
    멤버 피어 시스템을 선택하는 단계는,
    연결되지 않은 시간 기간 내에 상기 연결되지 않은 피어 시스템이 연결되지 않은 멤버 피어 시스템을 선택하지 않는 단계를 포함하는 것을 특징으로 하는 방법.
  29. 제 23항에 있어서,
    멤버 피어 시스템을 선택하는 단계는,
    상기 부정적인 연결 가능 응답이 수신된 멤버 피어 시스템을 강제 연결 피어 시스템으로 선택하는 단계;
    상기 강제 연결 피어 시스템으로, 상기 강제 연결 피어 시스템이 상기 강제 연결 피어 시스템의 개시된 연결 중의 어느 하나를 끊는 것을 요청하는 강제 연결 요청을 전송하는 단계; 및
    상기 강제 연결 피어 시스템으로부터 강제 연결 확인을 수신하는 단계를 포함하는 것을 특징으로 하는 방법.
  30. 제 29항에 있어서,
    상기 강제 연결 피어 시스템을 선택하는 단계는,
    상기 부정적인 연결 가능 응답을 전송한 상기 멤버 피어 시스템에 하나 이상의 연결 방식으로 이루어지는 상기 연결 방식의 세트를 적용하는 단계를 포함하는 것을 특징으로 하는 방법.
  31. 제 23항에 있어서,
    상기 연결되지 않은 피어 시스템과 상기 선택된 멤버 피어 시스템 사이에서 연결이 개시되었다는 것을 나타내는 업데이트를 서버에 전송하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  32. 피어투피어 중계 네트워크를 지속하는 방법에 있어서,
    피어투피어 중계 네트워크 내에서 피어 시스템으로부터 상기 피어 시스템에 연결된 하나 이상의 연결된 피어 시스템 각각으로 유지 메시지를 전송하는 단계;
    상기 하나 이상의 연결된 피어 시스템으로부터 수신된 어떤 응답을 평가하는 단계; 및
    그 연결된 상기 피어 시스템으로부터의 상기 응답이 수용되지 않는 경우, 상기 피어 시스템 및 연결된 상기 피어 시스템 사이의 연결을 끊는 단계를 포함하며,
    각각의 피어 시스템은 연결 한계보다 같거나 작은 수의 다른 피어 시스템에 연결되고,
    각각의 피어 시스템은 그 피어 시스템에 연결된 다른 피어 시스템으로 데이터를 중계하기 위한 하나 이상의 중계 방식으로 이루어지는 중계 방식의 세트를 저장하는 것을 특징으로 하는 피어투피어 중계 네트워크를 지속하는 방법.
  33. 제 32항에 있어서,
    상기 유지 메시지는 핑(ping) 메시지인 것을 특징으로 하는 방법.
  34. 제 32항에 있어서,
    연결된 피어 시스템으로부터의 응답은, 상기 응답이 시간 한계 내에서 상기 피어 시스템에 의해 수신되지 않은 경우, 수용되지 않는 것을 특징으로 하는 방법.
  35. 제 32항에 있어서,
    상기 응답은, 상기 응답이 수신되지 않은 경우, 수용되지 않는 것을 특징으로 하는 방법.
  36. 제 32항에 있어서,
    연결된 피어 시스템으로부터의 응답은, 상기 피어 시스템이 시간 한계 내에서 연결된 피어 시스템으로부터 여러 번 응답을 수신하지 않은 경우, 수용되지 않는 것을 특징으로 하는 방법.
  37. 제 32항에 있어서,
    연결된 피어 시스템으로부터의 응답이 수용되지 않은 경우, 상기 피어 시스템 및 연결된 피어 시스템 사이의 연결에 대한 연결 상태 요청을 서버로 전송하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  38. 제 32항에 있어서,
    상기 피어 시스템에 의해 끊긴 각각의 연결에 대해 연결이 끊긴 것을 나타내는 업데이트를 서버로 전송하는 단계를 더 포함하는 것을 특징으로 하는 방법.
KR1020087025828A 2003-10-20 2004-07-15 피어투피어 중계 네트워크 KR100956481B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US51309803P 2003-10-20 2003-10-20
US60/513,098 2003-10-20
US10/700,798 2003-11-03
US10/700,798 US7627678B2 (en) 2003-10-20 2003-11-03 Connecting a peer in a peer-to-peer relay network

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020067007619A Division KR20060094964A (ko) 2003-10-20 2004-07-15 피어투피어 중계 네트워크

Publications (2)

Publication Number Publication Date
KR20080107472A KR20080107472A (ko) 2008-12-10
KR100956481B1 true KR100956481B1 (ko) 2010-05-07

Family

ID=34526807

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020087025828A KR100956481B1 (ko) 2003-10-20 2004-07-15 피어투피어 중계 네트워크
KR1020067007619A KR20060094964A (ko) 2003-10-20 2004-07-15 피어투피어 중계 네트워크

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020067007619A KR20060094964A (ko) 2003-10-20 2004-07-15 피어투피어 중계 네트워크

Country Status (6)

Country Link
US (3) US7627678B2 (ko)
EP (4) EP1692839B1 (ko)
JP (1) JP4374022B2 (ko)
KR (2) KR100956481B1 (ko)
TW (1) TWI268061B (ko)
WO (1) WO2005046168A1 (ko)

Families Citing this family (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8458754B2 (en) 2001-01-22 2013-06-04 Sony Computer Entertainment Inc. Method and system for providing instant start multimedia content
US8224985B2 (en) * 2005-10-04 2012-07-17 Sony Computer Entertainment Inc. Peer-to-peer communication traversing symmetric network address translators
US8060626B2 (en) * 2008-09-22 2011-11-15 Sony Computer Entertainment America Llc. Method for host selection based on discovered NAT type
US7392422B2 (en) 2003-10-20 2008-06-24 Sony Computer Entertainment America Inc., Violations in a peer-to-peer relay network
EP1542409B1 (en) * 2003-12-10 2009-04-15 Sony Deutschland GmbH Protocol for multi-hop ad-hoc networks
US7761569B2 (en) 2004-01-23 2010-07-20 Tiversa, Inc. Method for monitoring and providing information over a peer to peer network
US8639819B2 (en) 2004-02-05 2014-01-28 Nokia Corporation Ad-hoc connection between electronic devices
US7869798B2 (en) * 2004-10-13 2011-01-11 At&T Intellectual Property I, L.P. Methods, systems, and computer-readable media for redirecting telephone calls from a wireless device in a telecommunications network
US7558862B1 (en) * 2004-12-09 2009-07-07 LogMeln, Inc. Method and apparatus for remotely controlling a computer with peer-to-peer command and data transfer
US8837528B2 (en) 2005-02-25 2014-09-16 Sony Computer Entertainment America Llc Data distribution by proxy
US7899170B2 (en) * 2005-04-28 2011-03-01 Apple Inc. Multi-participant conference setup
US7864209B2 (en) * 2005-04-28 2011-01-04 Apple Inc. Audio processing in a multi-participant conference
US7949117B2 (en) * 2005-04-28 2011-05-24 Apple Inc. Heterogeneous video conferencing
US8861701B2 (en) * 2005-04-28 2014-10-14 Apple Inc. Multi-participant conference adjustments
US7817180B2 (en) * 2005-04-28 2010-10-19 Apple Inc. Video processing in a multi-participant video conference
US7692682B2 (en) * 2005-04-28 2010-04-06 Apple Inc. Video encoding in a video conference
US7490140B2 (en) * 2005-05-12 2009-02-10 International Business Machines Corporation Peer data transfer orchestration
US7631352B1 (en) 2005-06-15 2009-12-08 Daniel John Nelson Link2File automated computer location and linking system
JP4668013B2 (ja) * 2005-08-30 2011-04-13 パナソニック株式会社 コンテンツ配信方法、コンテンツ配信サーバ、通信端末装置及びコンテンツ配信システム
US7480656B2 (en) 2006-03-20 2009-01-20 Sony Computer Entertainment America Inc. Active validation of network devices
US8622837B2 (en) 2006-03-20 2014-01-07 Sony Computer Entertainment America Llc Managing game metrics and authorizations
US7753795B2 (en) * 2006-03-20 2010-07-13 Sony Computer Entertainment America Llc Maintaining community integrity
US8771061B2 (en) 2006-03-20 2014-07-08 Sony Computer Entertainment America Llc Invalidating network devices with illicit peripherals
US7908389B2 (en) * 2006-06-20 2011-03-15 Patentvc Ltd. Methods and systems for retrieving fragments from peer clients and servers
US20080059631A1 (en) * 2006-07-07 2008-03-06 Voddler, Inc. Push-Pull Based Content Delivery System
EP1926276B1 (en) * 2006-11-23 2008-12-03 NTT DoCoMo Inc. Load balancing in a peer-to-peer system
TW200826571A (en) * 2006-12-08 2008-06-16 Univ Nat Chiao Tung Identification and management system and method applicable to a point-to-point gateway
US7720974B2 (en) * 2007-05-25 2010-05-18 Microsoft Corporation Global routable and grid identification for audio provider in media session
US7995478B2 (en) 2007-05-30 2011-08-09 Sony Computer Entertainment Inc. Network communication with path MTU size discovery
US20090077254A1 (en) * 2007-09-13 2009-03-19 Thomas Darcie System and method for streamed-media distribution using a multicast, peer-to- peer network
US9483405B2 (en) 2007-09-20 2016-11-01 Sony Interactive Entertainment Inc. Simplified run-time program translation for emulating complex processor pipelines
US8015311B2 (en) * 2007-09-21 2011-09-06 Polytechnic Institute Of New York University Reducing or minimizing delays in peer-to-peer communications such as peer-to-peer video streaming
US7908393B2 (en) 2007-12-04 2011-03-15 Sony Computer Entertainment Inc. Network bandwidth detection, distribution and traffic prioritization
CN101965716A (zh) * 2008-01-10 2011-02-02 惠普开发有限公司 多路对等媒体流传送
US7856506B2 (en) 2008-03-05 2010-12-21 Sony Computer Entertainment Inc. Traversal of symmetric network address translator for multiple simultaneous connections
US20090327244A1 (en) * 2008-06-24 2009-12-31 Dharmarus Rizal Method, process, apparatus and system for peer-to-peer media sharing, transmissions and distributions
EP2294795B1 (en) * 2008-07-02 2013-12-11 Thomson Licensing Device and method for disseminating content data between peers in a p2p mode, by using a bipartite peer overlay
US8108537B2 (en) * 2008-07-24 2012-01-31 International Business Machines Corporation Method and system for improving content diversification in data driven P2P streaming using source push
JP5369587B2 (ja) * 2008-09-30 2013-12-18 富士通株式会社 情報処理装置、情報処理システム、方法、およびプログラム
US9477672B2 (en) 2009-12-02 2016-10-25 Gartner, Inc. Implicit profile for use with recommendation engine and/or question router
US8918391B2 (en) * 2009-12-02 2014-12-23 Gartner, Inc. Interactive peer directory with question router
US8244674B2 (en) * 2008-12-10 2012-08-14 Gartner, Inc. Interactive peer directory
TWI384812B (zh) * 2008-12-31 2013-02-01 Ind Tech Res Inst 運用暫存管理與資料傳輸負載平衡之點對點代理服務裝置與方法
KR101562974B1 (ko) 2009-09-07 2015-10-30 삼성전자 주식회사 스트리밍 서비스의 지연 감소를 위한 단말기, 시드 서버 및 트랙커 서버
CN102064992B (zh) * 2009-11-13 2012-11-28 中兴通讯股份有限公司 一种中继节点、中继节点的分布式网络及其组网方法
US8126987B2 (en) 2009-11-16 2012-02-28 Sony Computer Entertainment Inc. Mediation of content-related services
JP5423345B2 (ja) * 2009-11-20 2014-02-19 ソニー株式会社 番組情報配信装置、番組情報配信方法、プログラム及び番組情報配信システム
US8495153B1 (en) * 2009-12-14 2013-07-23 Emc Corporation Distribution of messages in nodes connected by a grid architecture
US10911515B2 (en) 2012-05-24 2021-02-02 Deka Products Limited Partnership System, method, and apparatus for electronic patient care
US20110313789A1 (en) 2010-01-22 2011-12-22 Deka Products Limited Partnership Electronic patient monitoring system
US11244745B2 (en) 2010-01-22 2022-02-08 Deka Products Limited Partnership Computer-implemented method, system, and apparatus for electronic patient care
US11881307B2 (en) 2012-05-24 2024-01-23 Deka Products Limited Partnership System, method, and apparatus for electronic patient care
US11164672B2 (en) 2010-01-22 2021-11-02 Deka Products Limited Partnership System and apparatus for electronic patient care
US10453157B2 (en) 2010-01-22 2019-10-22 Deka Products Limited Partnership System, method, and apparatus for electronic patient care
US11210611B2 (en) 2011-12-21 2021-12-28 Deka Products Limited Partnership System, method, and apparatus for electronic patient care
US20110191311A1 (en) * 2010-02-03 2011-08-04 Gartner, Inc. Bi-model recommendation engine for recommending items and peers
US10102278B2 (en) 2010-02-03 2018-10-16 Gartner, Inc. Methods and systems for modifying a user profile for a recommendation algorithm and making recommendations based on user interactions with items
US8661034B2 (en) 2010-02-03 2014-02-25 Gartner, Inc. Bimodal recommendation engine for recommending items and peers
US8433755B2 (en) 2010-04-07 2013-04-30 Apple Inc. Dynamic designation of a central distributor in a multi-participant conference
US8433759B2 (en) 2010-05-24 2013-04-30 Sony Computer Entertainment America Llc Direction-conscious information sharing
US8711736B2 (en) 2010-09-16 2014-04-29 Apple Inc. Audio processing in a multi-participant conference
US9636589B2 (en) 2010-11-02 2017-05-02 Sony Interactive Entertainment America Llc Detecting lag switch cheating in game
CN103262473A (zh) 2010-12-13 2013-08-21 摩托罗拉移动有限责任公司 在通用即插即用环境中在远程访问客户端之间共享媒体
US9094263B2 (en) 2011-02-28 2015-07-28 Bittorrent, Inc. Peer-to-peer live streaming
US9571571B2 (en) * 2011-02-28 2017-02-14 Bittorrent, Inc. Peer-to-peer live streaming
US10785630B2 (en) 2012-12-10 2020-09-22 Nokia Technologies Oy Method and apparatus for low energy discovery
WO2014124544A1 (en) * 2013-02-17 2014-08-21 Frost Technologies Inc. Method and system for interactive online audience participation in multicast gaming
US10600011B2 (en) 2013-03-05 2020-03-24 Gartner, Inc. Methods and systems for improving engagement with a recommendation engine that recommends items, peers, and services
JP6336732B2 (ja) * 2013-10-02 2018-06-06 任天堂株式会社 通信システム、通信機器、プログラム及び通信方法
KR101585138B1 (ko) 2014-06-24 2016-01-13 주식회사 아이티엑스시큐리티 P2p 중계 데몬을 이용한 보안 기기 연결 시스템 및 방법
US10581796B2 (en) * 2016-04-13 2020-03-03 Airwatch Llc Configuring network connections for computing devices
FR3061391B1 (fr) * 2016-12-27 2019-05-31 Worldline Reseau informatique de noeuds communiquant entre eux par messages en pair a pair et procede d'interconnexion entre noeuds associe
US10778781B2 (en) * 2017-05-10 2020-09-15 Microsoft Technology Licensing, Llc Contention management in communication networks
US11206519B2 (en) 2017-08-18 2021-12-21 Lg Electronics Inc. Method and apparatus for relay terminal transmitting and receiving signal in D2D wireless communication system
US10637920B2 (en) * 2017-08-18 2020-04-28 Digital 14 Llc System, method, and computer program product for peer-to-peer event ordering using a two part event identifier
US11725625B2 (en) 2018-07-31 2023-08-15 Alliance For Sustainable Energy, Llc Distributed reinforcement learning and consensus control of energy systems
EP3726810B1 (en) * 2019-04-16 2023-12-06 ABB Schweiz AG System and method for interoperable communication of automation system components
WO2022182813A1 (en) * 2021-02-24 2022-09-01 Shazzle, Llc Decentralized network access systems and methods

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002011366A2 (en) 2000-07-31 2002-02-07 The Boeing Company Broadcasting network

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4843568A (en) * 1986-04-11 1989-06-27 Krueger Myron W Real time perception of and response to the actions of an unencumbered participant/user
US4787051A (en) * 1986-05-16 1988-11-22 Tektronix, Inc. Inertial mouse system
US5701427A (en) * 1989-09-19 1997-12-23 Digital Equipment Corp. Information transfer arrangement for distributed computer system
US5128671A (en) * 1990-04-12 1992-07-07 Ltv Aerospace And Defense Company Control device having multiple degrees of freedom
GB2272310A (en) * 1992-11-07 1994-05-11 Ibm Method of operating a computer in a network.
US5624316A (en) * 1994-06-06 1997-04-29 Catapult Entertainment Inc. Video game enhancer with intergral modem and smart card interface
US5528265A (en) * 1994-07-18 1996-06-18 Harrison; Simon J. Orientation-operated cursor control device
SE504846C2 (sv) * 1994-09-28 1997-05-12 Jan G Faeger Styrutrustning med ett rörligt styrorgan
US6069896A (en) * 1996-10-15 2000-05-30 Motorola, Inc. Capability addressable network and method therefor
DE69620265T2 (de) * 1996-11-05 2002-11-21 Cyberlife Technology Ltd Prozesssteuervorrichtung
EP0913965A1 (en) 1997-11-03 1999-05-06 Canon Kabushiki Kaisha Reduction of the message traffic in a distributed network
US6269099B1 (en) * 1998-07-01 2001-07-31 3Com Corporation Protocol and method for peer network device discovery
US6438603B1 (en) * 1999-04-30 2002-08-20 Microsoft Corporation Methods and protocol for simultaneous tuning of reliable and non-reliable channels of a single network communication link
US6375572B1 (en) * 1999-10-04 2002-04-23 Nintendo Co., Ltd. Portable game apparatus with acceleration sensor and information storage medium storing a game progam
US6434543B1 (en) * 1999-11-01 2002-08-13 Sun Microsystems, Inc. System and method for reliable caching of database connections in a distributed application
EP1107508A1 (en) 1999-12-06 2001-06-13 Telefonaktiebolaget Lm Ericsson System, method and computer program product for sending broadcast messages
CA2400587A1 (en) * 2000-02-17 2001-09-07 Acclaim Entertainment, Inc. Multi-player computer game system and method
US20020119821A1 (en) * 2000-05-12 2002-08-29 Sanjoy Sen System and method for joining a broadband multi-user communication session
US7103002B2 (en) * 2000-07-12 2006-09-05 Telefonktiebolaget Lm Ericsson (Publ) Communication management in networks having split control planes and user planes
US6701344B1 (en) * 2000-07-31 2004-03-02 The Boeing Company Distributed game environment
US7403980B2 (en) * 2000-11-08 2008-07-22 Sri International Methods and apparatus for scalable, distributed management of virtual private networks
US7594030B2 (en) * 2000-11-22 2009-09-22 Microsoft Corporation Locator and tracking service for peer to peer resources
GB0028474D0 (en) * 2000-11-22 2001-01-10 Raekanet Ltd Improved computer network architecture and associated method and system
US20020107786A1 (en) * 2000-11-28 2002-08-08 Truexchange, Inc. Peer-to-peer application for online goods trading
US20020073204A1 (en) * 2000-12-07 2002-06-13 Rabindranath Dutta Method and system for exchange of node characteristics for DATA sharing in peer-to-peer DATA networks
US20020085097A1 (en) * 2000-12-22 2002-07-04 Colmenarez Antonio J. Computer vision-based wireless pointing system
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
US20030115251A1 (en) 2001-02-23 2003-06-19 Fredrickson Jason A. Peer data protocol
US7272636B2 (en) * 2001-04-24 2007-09-18 Sun Microsystems, Inc. Peer group name server
US7177950B2 (en) * 2001-04-26 2007-02-13 Microsoft Corporation Synchronization and recovery of peers in a peer to peer environment
US7493363B2 (en) * 2001-09-19 2009-02-17 Microsoft Corporation Peer-to-peer group management and method for maintaining peer-to-peer graphs
US6839541B2 (en) * 2001-12-04 2005-01-04 Illinois Institute Of Technology Technique for establishing a virtual backbone in an ad hoc wireless network
US7162480B2 (en) * 2001-12-26 2007-01-09 Sbc Technology Resources, Inc. Usage-based adaptable taxonomy
US7130921B2 (en) * 2002-03-15 2006-10-31 International Business Machines Corporation Centrally enhanced peer-to-peer resource sharing method and apparatus
US7174382B2 (en) * 2002-04-09 2007-02-06 Hewlett-Packard Development Company, L.P. Interest-based connections in peer-to-peer networks
US7263070B1 (en) * 2002-11-05 2007-08-28 Sprint Spectrum L.P. Method and system for automating node configuration to facilitate peer-to-peer communication
US20040103179A1 (en) * 2002-11-26 2004-05-27 Alcatel Canada Inc. Topology management of dual ring network
US7734154B2 (en) * 2003-02-14 2010-06-08 Lg Electronics Inc. Recording medium having data structure for managing reproduction duration of still pictures recorded thereon and recording and reproducing methods and apparatuses
US20040212589A1 (en) * 2003-04-24 2004-10-28 Hall Deirdre M. System and method for fusing and displaying multiple degree of freedom positional input data from multiple input sources
US20050007964A1 (en) * 2003-07-01 2005-01-13 Vincent Falco Peer-to-peer network heartbeat server and associated methods
US20050063409A1 (en) * 2003-09-18 2005-03-24 Nokia Corporation Method and apparatus for managing multicast delivery to mobile devices involving a plurality of different networks
US20050080858A1 (en) * 2003-10-10 2005-04-14 Microsoft Corporation System and method for searching a peer-to-peer network

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002011366A2 (en) 2000-07-31 2002-02-07 The Boeing Company Broadcasting network

Also Published As

Publication number Publication date
EP2843901B1 (en) 2018-10-10
US20080046555A1 (en) 2008-02-21
US8396984B2 (en) 2013-03-12
WO2005046168A1 (en) 2005-05-19
EP2843901A1 (en) 2015-03-04
EP2843903A1 (en) 2015-03-04
JP2007509569A (ja) 2007-04-12
TW200515744A (en) 2005-05-01
KR20080107472A (ko) 2008-12-10
EP1692839B1 (en) 2015-05-13
EP2843903B1 (en) 2018-10-17
EP1692839A1 (en) 2006-08-23
JP4374022B2 (ja) 2009-12-02
EP2843902B1 (en) 2018-10-31
US20080046554A1 (en) 2008-02-21
US20050086288A1 (en) 2005-04-21
KR20060094964A (ko) 2006-08-30
TWI268061B (en) 2006-12-01
US7792968B2 (en) 2010-09-07
EP2843902A1 (en) 2015-03-04
US7627678B2 (en) 2009-12-01
EP2843901B8 (en) 2018-12-19

Similar Documents

Publication Publication Date Title
KR100956481B1 (ko) 피어투피어 중계 네트워크
KR101162381B1 (ko) 피어투피어 중계 네트워크에서 방관자
US7610505B2 (en) Violations in a peer-to-peer relay network
US7685301B2 (en) Redundancy lists in a peer-to-peer relay network
KR100992347B1 (ko) 다중 피어투피어 중계 네트워크
US7596633B2 (en) Island recovery in a peer-to-peer relay network

Legal Events

Date Code Title Description
A107 Divisional application of patent
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: 20130410

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140409

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160412

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170414

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180413

Year of fee payment: 9