[go: up one dir, main page]

CN1894928B - Multiple peer-to-peer relay network - Google Patents

Multiple peer-to-peer relay network Download PDF

Info

Publication number
CN1894928B
CN1894928B CN2004800372333A CN200480037233A CN1894928B CN 1894928 B CN1894928 B CN 1894928B CN 2004800372333 A CN2004800372333 A CN 2004800372333A CN 200480037233 A CN200480037233 A CN 200480037233A CN 1894928 B CN1894928 B CN 1894928B
Authority
CN
China
Prior art keywords
peer
relay network
network
peers
message
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
CN2004800372333A
Other languages
Chinese (zh)
Other versions
CN1894928A (en
Inventor
G·范达塔
A·麦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Interactive Entertainment America LLC
Original Assignee
Sony Computer Entertainment America LLC
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
Priority claimed from US10/701,302 external-priority patent/US8010633B2/en
Application filed by Sony Computer Entertainment America LLC filed Critical Sony Computer Entertainment America LLC
Publication of CN1894928A publication Critical patent/CN1894928A/en
Application granted granted Critical
Publication of CN1894928B publication Critical patent/CN1894928B/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

Methods and apparatus for implementing peer-to-peer relay. In one implementation, a network environment supporting multiple peer-to-peer relay networks includes: a first peer-to-peer relay network including N1 peer systems; and a second peer-to-peer relay network including N2 peer systems; wherein each peer system in said first peer-to-peer relay network is connected to a number of other peer systems in said first peer-to-peer relay network that is less than or equal to a first connection limit, said first connection limit is greater than or equal to 2, said first connection limit is less than or equal to N1-2, each peer system in said first peer-to-peer relay network is configured to relay data to peer systems connected to that peer system according to a first set of one or more relay rules, each peer system in said second peer-to-peer relay network is connected to a number of other peer systems in said second peer-to-peer relay network that is less than or equal to a second connection limit, said second connection limit is greater than or equal to 2, said second connection limit is less than or equal to N2-2, each peer system in said second peer-to-peer relay network is configured to relay data to peer systems connected to that peer system according to a second set of one or more relay rules, and at least one peer system in said first peer-to-peer relay network is also in said second peer-to-peer relay network.

Description

多个对等中继网络Multiple peer-to-peer relay networks

本申请要求于2003年10月提出的美国临时申请60/513098(“对等中继网络”)的权益,该申请的公开内容通过引用结合于本文中。This application claims the benefit of US Provisional Application 60/513098 ("Peer-to-Peer Relay Network"), filed October 2003, the disclosure of which is incorporated herein by reference.

背景background

在典型的客户服务器网络中,网络中的每个客户建立到中央服务器的连接。客户向服务器请求服务和数据。为与另一客户进行通信,客户将请求发送到服务器。一般情况下,客户彼此之间不建立直接连接。在具有N个客户的客户服务器网络中,每个客户具有1个到服务器的连接,并且服务器具有N个到每个客户的相应连接。例如,如图31A所示,在具有6个客户的客户服务器网络中,每个客户具有1个到服务器的连接,并且服务器具有6个到客户的相应连接。In a typical client server network, each client on the network establishes a connection to a central server. Clients request services and data from servers. To communicate with another client, a client sends a request to a server. Typically, clients do not establish direct connections with each other. In a client server network with N clients, each client has 1 connection to the server, and the server has N corresponding connections to each client. For example, as shown in Figure 31A, in a client server network with 6 clients, each client has 1 connection to the server, and the server has 6 corresponding connections to the clients.

在典型的对等网络(或“P2P网络”)中,对等网络中每个成员(或对等体)建立到每个其它成员的连接。通过使用这些直接的对等连接,成员将数据直接发送到其它成员和直接向其它成员请求数据,而不是使用集中式服务器(例如,与成员通过服务器交互的典型客户服务器网络相比)。一般情况下,网络中的每个成员在网络中具有类似的责任,并且成员通常被认为是平等的(作为网络成员)。在具有N个对等体的对等网络中,每个对等体具有N-1个到其它对等体的连接。例如,如图31B所示,在具有6个对等体的对等网络中,每个对等体具有5个到其它对等体的连接。In a typical peer-to-peer network (or "P2P network"), each member (or peer) in the peer-to-peer network establishes a connection to every other member. By using these direct peer-to-peer connections, members send data directly to other members and request data directly from other members, rather than using a centralized server (compared to, for example, a typical client-server network where members interact through a server). In general, each member of a network has similar responsibilities within the network, and members are generally considered equal (as network members). In a peer-to-peer network with N peers, each peer has N-1 connections to other peers. For example, as shown in Figure 3 IB, in a peer-to-peer network with 6 peers, each peer has 5 connections to other peers.

在一些对等网络中,服务器还由成员用于一些集中式服务,如地址发现(例如,用于为构建对等网络建立连接)。In some peer-to-peer networks, servers are also used by members for some centralized services, such as address discovery (for example, to establish connections for building peer-to-peer networks).

概述overview

本发明提供用于实施对等中继的方法和设备。在一个实施中,支持多个对等中继网络的网络环境包括:包括N1个对等系统的第一对等中继网络;以及包括N2个对等系统的第二对等中继网络;其中,所述第一对等中继网络中的每个对等系统连接至所述第一对等中继网络中小于或等于第一连接限制的多个其它对等系统,所述第一连接限制大于或等于2,所述第一连接限制小于或等于N1-2,所述第一对等中继网络中的每个对等系统配置为根据由一个或更多个中继规则组成的第一集合,将数据中继到连接至该对等系统的对等系统,所述第二对等中继网络中的每个对等系统连接至所述第二对等中继网络中小于或等于第二连接限制的多个其它对等系统,所述第二连接限制大于或等于2,所述第二连接限制小于或等于N2-2,所述第二对等中继网络中的每个对等系统配置为根据由一个或更多个中继规则组成的第二集合,将数据中继到连接至该对等系统的对等系统,以及所述第一对等中继网络中至少一个对等系统也在所述第二对等中继网络中。The present invention provides methods and apparatus for implementing peer-to-peer relaying. In one implementation, the network environment supporting multiple peer-to-peer relay networks includes: a first peer-to-peer relay network including N1 peer-to-peer systems; and a second peer-to-peer relay network including N2 peer-to-peer systems; wherein , each peer system in the first peer-to-peer relay network is connected to a number of other peer systems in the first peer-to-peer relay network that are less than or equal to a first connection limit, the first connection limit is greater than or equal to 2, the first connection limit is less than or equal to N1-2, and each peer system in the first peer-to-peer relay network is configured to set, relaying data to peer systems connected to the peer system, each peer system in the second peer-to-peer relay network connected to less than or equal to the second peer-to-peer relay network A plurality of other peer-to-peer systems of two connection limits, said second connection limit being greater than or equal to 2, said second connection limit being less than or equal to N2-2, each peer in said second peer-to-peer relay network The system is configured to relay data to peer systems connected to the peer system and at least one peer in said first peer-to-peer relay network according to a second set of one or more relay rules. The system is also in the second peer-to-peer relay network.

在一个实施中,一种在对等中继网络中中继数据的方法包括:在中继对等系统从对等中继网络中连接至所述中继对等系统的发送对等系统接收数据;选择对应于已接收数据的对等中继网络,其中,选定的对等中继网络具有由一个或更多个中继规则组成的对应集合;应用所述由一个或更多个中继规则组成的集合以选择由所述由一个或更多个中继规则组成的集合指示的、要中继所述数据到的零或更多个对等系统;以及将所述数据中继到通过应用所述由一个或更多个中继规则组成的集合而选择的任何对等系统。In one implementation, a method of relaying data in a peer-to-peer relay network includes receiving, at a relay peer system, data from a sending peer system connected to the relay peer system in the peer-to-peer relay network ; Select a peer-to-peer relay network corresponding to the received data, wherein the selected peer-to-peer relay network has a corresponding set of one or more relay rules; apply the one or more relay rules a set of rules to select zero or more peer systems to which to relay the data indicated by the set of one or more relay rules; and relay the data to the Any peer system selected by applying said set of one or more relay rules.

在一个实施中,一种在对等中继网络中的对等系统包括:用于在中继对等系统从对等中继网络中连接至所述中继对等系统的发送对等系统接收数据的工具;用于选择对应于已接收数据的对等中继网络的工具,其中,选定的对等中继网络具有由一个或更多个中继规则组成的对应集合;用于应用所述由一个或更多个中继规则组成的集合以选择由所述由一个或更多个中继规则组成的集合指示的、要中继所述数据到的零或更多个对等系统的工具;以及用于将所述数据中继到通过应用所述由一个或更多个中继规则组成的集合而选择的任何对等系统的工具。In one implementation, a peer-to-peer system in a peer-to-peer relay network includes: for receiving at the relay peer system from a sending peer system connected to the relay peer system in the peer-to-peer relay network data; a tool for selecting a peer-to-peer relay network corresponding to received data, wherein the selected peer-to-peer relay network has a corresponding set of one or more relay rules; for applying the the set of one or more relay rules to select zero or more peer systems to which to relay the data indicated by the set of one or more relay rules a tool; and a tool for relaying said data to any peer system selected by applying said set of one or more relay rules.

附图简述Brief description of the drawings

图1示出对等中继网络的一个实施的示图。Figure 1 shows a diagram of one implementation of a peer-to-peer relay network.

图2示出消息的一个实施的方框图。Figure 2 shows a block diagram of one implementation of the message.

图3示出在对等中继网络中中继消息的对等体的一个实施的流程图。Figure 3 shows a flow diagram of one implementation of peers relaying messages in a peer-to-peer relay network.

图4示出根据中继规则组成的集合、在对等中继网络中中继消息的对等体的一个实施的流程图。4 shows a flow diagram of one implementation of peers relaying messages in a peer-to-peer relay network according to a set of relay rules.

图5示出建立对等中继网络的一个实施的流程图。Figure 5 shows a flowchart of one implementation of establishing a peer-to-peer relay network.

图6示出将对等体连接至对等中继网络的一个实施的流程图。Figure 6 shows a flow diagram of one implementation of connecting peers to a peer-to-peer relay network.

图7示出选择用于加入对等中继网络的对等体的一个实施的流程图。Figure 7 shows a flow diagram of one implementation of selecting peers for joining a peer-to-peer relay network.

图8示出强制对等体为对等中继网络中新对等体提供连接的一个实施的流程图。Figure 8 shows a flow diagram of one implementation of forcing peers to provide connectivity for new peers in a peer-to-peer relay network.

图9示出在对等中继网络中断开连接的一个实施的流程图。Figure 9 shows a flowchart of one implementation of disconnecting in a peer-to-peer relay network.

图10示出维护对等中继网络的一个实施的流程图。Figure 10 shows a flow diagram of one implementation of maintaining a peer-to-peer relay network.

图11-18示出构建、调整和维护网格的一个实施例子。Figures 11-18 illustrate an example implementation for building, tuning and maintaining a grid.

图19示出在对等中继网络中构建冗余列表的一个实施的流程图。Figure 19 shows a flowchart of one implementation of building a redundancy list in a peer-to-peer relay network.

图20示出在对等中继网络中为要断开连接的对等体更新冗余列表的一个实施的流程图。Figure 20 shows a flowchart of one implementation of updating a redundancy list for a peer to be disconnected in a peer-to-peer relay network.

图21示出中继来自属于多个网格的对等系统的消息的一个实施的流程图。Figure 21 shows a flowchart of one implementation for relaying messages from peer-to-peer systems belonging to multiple grids.

图22示出在支持观众和参与者的网格中中继消息的一个实施的流程图。Figure 22 shows a flow diagram of one implementation for relaying messages in a grid that supports viewers and participants.

图23示出检测网格中的岛的一个实施的流程图。Figure 23 shows a flowchart of one implementation for detecting islands in a grid.

图24示出在对等中继网络中删除岛的一个实施的流程图。Figure 24 shows a flowchart of one implementation for deleting islands in a peer-to-peer relay network.

图25和图26示出检测岛和连接岛的例子。25 and 26 show examples of detection islands and connection islands.

图27示出在对等中继网络中检测欺诈违规的一个实施的流程图。Figure 27 shows a flowchart of one implementation of detecting fraudulent violations in a peer-to-peer relay network.

图28示出在对等中继网络中检测安全违规的一个实施的流程图。Figure 28 shows a flowchart of one implementation for detecting security violations in a peer-to-peer relay network.

图29和图30分别示出服务器和对等系统的一个实施的方框图。Figures 29 and 30 show block diagrams of one implementation of the server and peer-to-peer systems, respectively.

图31A和图31B示出典型的客户服务器与对等体系结构。Figures 31A and 31B illustrate typical client server and peer-to-peer architectures.

详细说明Detailed description

本发明提供用于实施对等中继的方法和设备。在一个实施中,连接多个计算机系统以形成对等网络。每个计算机系统连接至多达预定数量的其它计算机系统。为进行通信,计算机系统将消息发送到每个已连接系统。当计算机系统收到来自另一计算机系统的消息时,接收计算机系统根据用于该对等中继网络的中继规程或规则将消息发送或中继到其它计算机系统。根据中继规则,消息在整个网络传播到达所有成员计算机系统。The present invention provides methods and apparatus for implementing peer-to-peer relaying. In one implementation, multiple computer systems are connected to form a peer-to-peer network. Each computer system is connected to up to a predetermined number of other computer systems. To communicate, computer systems send messages to each connected system. When a computer system receives a message from another computer system, the receiving computer system sends or relays the message to the other computer system according to the relay protocol or rules for the peer-to-peer relay network. Messages propagate throughout the network to all member computer systems according to relay rules.

图1示出对等中继网络100的一个实施的示图。对等中继网络还可称为“网格”。在图1中,连接一组10个对等系统105A...J(还称为“对等体”)以形成对等中继网络。每个对等系统105是启用网络的游戏控制台,如由Sony Computer Entertainment Inc.提供的具有网络适配器的PlayStation 2TM游戏控制台。对等系统105直接(例如,有线或无线连接)或间接(例如,通过内联网或诸如因特网的公共IP网络)连接。在一个实施中,对等系统105连接时使用UDP或TCP连接。对等系统105交换数据以支持网络环境或活动,如聊天环境或在线游戏。FIG. 1 shows a diagram of one implementation of a peer-to-peer relay network 100 . A peer-to-peer relay network may also be referred to as a "mesh." In FIG. 1, a set of ten peer systems 105A...J (also referred to as "peers") are connected to form a peer-to-peer relay network. Each peer system 105 is a network-enabled game console, such as the PlayStation 2 (TM) game console with network adapter provided by Sony Computer Entertainment Inc. Peer-to-peer systems 105 are connected directly (eg, via a wired or wireless connection) or indirectly (eg, via an intranet or a public IP network such as the Internet). In one implementation, the peer-to-peer system 105 connects using a UDP or TCP connection. Peer-to-peer systems 105 exchange data to support a network environment or activity, such as a chat environment or an online game.

每个对等体105还具有到中央服务器110的连接,如通过因特网的UDP或TCP连接(图1中未示出到服务器110的连接)。服务器110是为已连接对等系统105提供集中式服务的服务器计算机系统。在一个实施中,服务器提供对等系统的地址目录,并跟踪对系统系统之间的连接。其它服务器服务的例子包括但不限于:验证、玩家匹配和跟踪对等系统地址。如下所述,在一些实施中,服务器可支持多个独立或相关的对等中继网络。在一个实施中,服务器支持多个环境或界,将客户分割或分组到环境中并适当地过滤数据。在一个实施中,服务器包括在以下同时待审且共同转让的美国专利申请中描述的服务器的一个或更多个方面:___提出的美国专利申请10/___(“配置切换:网络通信体系结构之间的动态改变(Configuration Switching:Dynamically Changing Between Network Communication Architectures)”)和___提出的美国专利申请10/___(“多用户应用编程接口(Multi-UserApplication Programming Interface)”),这些申请的公开内容通过引用结合于本文中。在另一实施中,对等体不使用集中式服务器(例如,通过直接通信构建网格及中继数据)。Each peer 105 also has a connection to a central server 110, such as a UDP or TCP connection over the Internet (the connection to the server 110 is not shown in Figure 1). Server 110 is a server computer system that provides centralized services for connected peer systems 105 . In one implementation, the server provides an address directory of peer systems and tracks connections between peer systems. Examples of other server services include, but are not limited to: verification, player matching, and tracking of peer system addresses. As described below, in some implementations, a server may support multiple independent or related peer-to-peer relay networks. In one implementation, the server supports multiple environments or worlds, partitioning or grouping clients into environments and filtering data appropriately. In one implementation, the server includes one or more aspects of the server described in the following co-pending and commonly assigned U.S. patent application: U.S. Patent Application 10/___ filed by ___ (“Configuration Switching: Network Communication Architecture Between Dynamically Changing (Configuration Switching: Dynamically Changing Between Network Communication Architectures)") and US Patent Application 10/___ ("Multi-User Application Programming Interface (Multi-User Application Programming Interface)") filed by ___, these applications The disclosure is incorporated herein by reference. In another implementation, the peers do not use a centralized server (eg, build the grid and relay data by direct communication).

网络100具有连接限制3。连接限制由服务器设置,并限定允许每个对等体105在网格中具有的连接的最大数量。在另一实施中,一个对等体(例如,建立网格的对等体)设置连接限制,或者多个对等体协商连接限制。在图1中,连接限制为3,并且每个对等体105具有3个连接。对等系统A-J各具有3个到其它对等体(对等系统105A还称为对等系统A或对等体A)的连接。网络100是3连接的对等中继网络,因此,每个对等体105具有3个到其它对等体的连接。Network 100 has connection limit 3. The connection limit is set by the server and defines the maximum number of connections each peer 105 is allowed to have in the mesh. In another implementation, one peer (eg, the meshing peer) sets the connection limit, or multiple peers negotiate the connection limit. In Figure 1, the connection limit is 3, and each peer 105 has 3 connections. Peer systems A-J each have 3 connections to other peers (peer system 105A is also referred to as peer system A or peer A). Network 100 is a 3-connection peer-to-peer relay network, so each peer 105 has 3 connections to other peers.

这些对等体105通过在整个网络100广播消息而进行通信。这些对等体105通过根据网络100的中继规则将已接收消息中继到已连接对等体105而传播消息。在此实施中,中继规则规定对等体105将消息中继到连接至对等体105的每个对等体105,但两种情况除外:(i)对等体105不中继该对等体105已经中继的消息,以及(ii)对等体105不将消息中继回这样的对等体105,即该中继对等体105从其收到了该消息。在一个实施中,对等体105还不将消息中继到这样的对等体105,该中继对等体105已经从其收到该消息(例如,当中继对等体105在中继对等体105中继该消息前从多个对等体105收到该消息时)。在其它实施中,可使用不同或附加的规则。中继规则(和其它规则)由服务器建立,或预设在对等系统(或其系统软件)中。在另一实施中,可动态修改规则,如通过在整个网格传播具有规则更新的消息。These peers 105 communicate by broadcasting messages throughout the network 100 . These peers 105 propagate messages by relaying received messages to connected peers 105 according to the relay rules of the network 100 . In this implementation, the relay rules state that peer 105 relays messages to every peer 105 connected to peer 105, with two exceptions: (i) peer 105 does not relay the pair A peer 105 has relayed the message, and (ii) the peer 105 does not relay the message back to the peer 105 from which the relaying peer 105 received the message. In one implementation, the peer 105 also does not relay the message to a peer 105 from which the relaying peer 105 has received the message (e.g., when the relaying peer 105 is on the relaying peer When the message is received from multiple peers 105 before the peer 105 relays the message). In other implementations, different or additional rules may be used. Relay rules (and other rules) are established by the server, or preset in the peer-to-peer system (or its system software). In another implementation, rules can be modified dynamically, such as by propagating messages with rule updates throughout the grid.

在网络100的一个应用中,这些对等体105在玩网络游戏。在游戏的过程中,对等体105生成反映由该对等体105引起的动作或事件的更新消息。例如,在玩家的计算机系统(例如,对等体A)上执行游戏软件期间,计算机系统生成要由其它玩家的计算机系统使用的、表示游戏中动作的更新数据,如移动或射击(例如,更新玩家的位置)。为使更新生效,每个对等体105需要从更新对等体105收到更新。这些对等体105在整个网络100中继更新消息以将消息传播到每个对等体105。In one application of the network 100, the peers 105 are playing a network game. During the course of the game, a peer 105 generates update messages reflecting actions or events caused by the peer 105 . For example, during execution of game software on a player's computer system (e.g., peer A), the computer system generates update data representing in-game actions, such as moves or shots (e.g., update player's position). For the update to take effect, each peer 105 needs to receive an update from the updating peer 105 . These peers 105 relay the update message throughout the network 100 to propagate the message to each peer 105 .

在一个例子中,对等体A具有要发送到其它对等体的更新。对等体A构建更新消息,更新消息包括更新数据、标识对等体A是更新源的标识符及区分此消息与由对等体A发出的其它消息的顺序标识符,并提供相对顺序。对等体A将消息发送到其连接的对等体:B、C、D。对等体B将从对等体A接收的消息发送到对等体D和E。对等体B不将消息发送到对等体A,这是因为对等体B从对等体A接收了该消息。类似地,对等体C将来自对等体A的消息发送到对等体G和H,并且对等体D将来自对等体A的消息发送到对等体B和G。当对等体B从对等体D收到消息时,由于对等体B识别出这是相同的消息(通过使用消息的标识符),因此,对等体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。到此时为止,所有对等体发送或中继了一次消息。由于这些对等体将不会再一次中继相同的消息,此消息的传播结束。In one example, peer A has updates to send to other peers. Peer A constructs an update message, which includes update data, an identifier identifying peer A as an update source, and a sequence identifier to distinguish this message from other messages sent by peer A, and provide a relative sequence. Peer A sends a message to its connected peers: B, C, D. Peer B sends the message received from peer A to peers D and E. Peer B does not send the message to peer A because peer B received the message from peer A. Similarly, peer C sends a message from peer A to peers G and H, and peer D sends a message from peer A to peers B and G. When peer B receives a message from peer D, since peer B recognizes that it is the same message (by using the message's identifier), peer B no longer relays the message. Similarly, peer D does not relay messages received from peer B. Assuming that the connections between peers are essentially the same in terms of the amount of time it takes to transmit messages between peers, then in the next set of hops, peer E transmits a message from peer B to peer F and I, peer G relays a message from peer C to peers D and F (depending on which message arrives at peer C first, or relays a message from peer D to peer peers C and F), and peer H relays messages from peer C to peers I and J. At this point, each peer has received the update message from peer A. However, peers F, I and J have just received the message, so these peers will relay the message. Peer F relays messages from peer E to peers G and J (or relays messages from peer G to peers E and J, whichever comes first), for Peer I relays messages from peer E to peers H and J (or from peer H to peers E and J, whichever comes first), and to peers Peer J relays the message from peer H to peers F and I. Up to this point, all peers have sent or relayed the message once. Since these peers will not relay the same message again, the propagation of this message ends.

这样,消息在整个对等网络100传播。更新信息在参与游戏的对等系统105之间的这种传播支持游戏和游戏环境。这些对等系统105可在整个网络100分发数据而不使用集中式服务器110进行分发。另外,每个对等体105不直接连接至其它对等体105,从而节省了资源。因此,网格100限制每个对等体的网络带宽要求(由于它只需要与有限数量的其它客户进行通信),同时允许来自任何单个客户的数据快速传播到网格中的其它对等体(例如,通过使用UDP套接字)。In this way, the message is propagated throughout the peer-to-peer network 100 . This dissemination of update information among peer systems 105 participating in the game supports the game and the game environment. These peer-to-peer systems 105 can distribute data throughout the network 100 without using a centralized server 110 for distribution. Additionally, each peer 105 is not directly connected to other peers 105, thereby saving resources. Thus, grid 100 limits each peer's network bandwidth requirements (since it only needs to communicate with a limited number of other clients), while allowing data from any single client to propagate quickly to other peers in the grid ( For example, by using UDP sockets).

在其它实施中,对等中继网络包括更多或更少的对等系统,并且网络具有不同的连接限制。视对等体数量、连接限制和用于建立连接的规则而定,并非所有对等体可使其所有连接被占满,并且因此可能有一个(或更多个)具有可用连接的对等体。In other implementations, the peer-to-peer relay network includes more or fewer peer systems, and the network has different connection limits. Depending on the number of peers, the connection limit, and the rules used to establish connections, not all peers can have all their connections filled, and therefore there may be one (or more) peers with available connections .

在另一实施中,连接限制可以不同。在一个实施中,连接限制对每个对等系统是特定的,一些、全部或没有对等体具有不同的连接限制。每个对等体设置其连接限制,或者由服务器指定连接限制。在一个例子中,对等体X和Y各具有连接限制5,并且对等体Z具有连接限制4,以及剩余的对等体各具有连接限制3。在另一实施中,连接限制是动态的。这种情况下,服务器调整对等体的连接限制,如基于网络性能调整(例如,当网络通信量低时,连接限制低)。在另一实施中,一个或更多个对等系统分别动态调整其相应的连接限制。或者,服务器为特定对等系统动态调整连接限制(例如,调整一些但并非全部)。In another implementation, the connection limit can be different. In one implementation, the connection limit is specific to each peer system, with some, all or none of the peers having different connection limits. Each peer sets its connection limit, or the server specifies the connection limit. In one example, peers X and Y each have a connection limit of 5, and peer Z has a connection limit of 4, and the remaining peers each have a connection limit of 3. In another implementation, the connection limit is dynamic. In this case, the server adjusts the peer's connection limit, such as based on network performance (eg, when network traffic is low, the connection limit is low). In another implementation, one or more peer systems each dynamically adjust their respective connection limits. Alternatively, the server dynamically adjusts the connection limit for specific peer systems (eg, some but not all).

图2示出消息205的一个实施的方框图。消息205由对等系统构建以发送到对等中继网络中的其它对等体。例如,参照图1,当对等体A具有要发送到其它对等体的更新消息时,对等体A构建诸如消息205的消息。消息205包括:寻址数据210、起源标识符215、顺序值220和有效负荷数据230。寻址数据210包括网络寻址信息以将消息205从该对等体发送到另一对等体。在一个实施中,寻址数据210包括发送对等体的IP地址和预期接收对等体的IP地址。起源标识符215标识构建消息205的对等体。此标识符215向整个对等中继网络的对等体指示通过网络传播的消息的起源。通过使用起源标识符215,接收消息205的对等体可确定消息205始于网络中的哪个对等体。顺序值220标识特定的消息205,并提供相对顺序信息。通过使用顺序值220,接收消息205的对等体可确定是否已经接收某个特殊消息,并可确定从由起源标识符215指示的对等体发送的消息的次序或顺序。数据230是消息205的有效负荷数据。对于更新消息(例如,在游戏中),有效负荷数据230是要由接收对等体使用的更新数据。在替代实施中,可使用不同类型的消息,并且可使用与图2所示消息不同格式的消息(例如,包括不同或附加的信息)。例如,消息可包括文件或文件的一部分或数据帧,如向网格成员公布的游戏数据帧或音频文件帧或其部分。接收对等体可使用每个消息中包括的顺序值重建整个文件。在另一例子中,消息包括附加的标识信息,如指示消息所属网格的标识符,以由属于多个网格的对等体进行中继。FIG. 2 shows a block diagram of one implementation of message 205 . Message 205 is constructed by the peer-to-peer system to send to other peers in the peer-to-peer relay network. For example, referring to FIG. 1 , peer A constructs a message such as message 205 when peer A has an update message to send to other peers. Message 205 includes: addressing data 210 , origin identifier 215 , sequence value 220 and payload data 230 . Addressing data 210 includes network addressing information to send message 205 from the peer to another peer. In one implementation, addressing data 210 includes the IP address of the sending peer and the IP address of the intended receiving peer. Origin identifier 215 identifies the peer that constructed message 205 . This identifier 215 indicates to peers throughout the peer-to-peer relay network the origin of messages propagating through the network. By using origin identifier 215, a peer receiving message 205 can determine from which peer in the network message 205 originated. An order value 220 identifies a particular message 205 and provides relative order information. Using order value 220 , a peer receiving message 205 can determine whether a particular message has been received, and can determine the order or sequence of messages sent from the peer indicated by origin identifier 215 . Data 230 is the payload data of message 205 . For update messages (eg, in a game), payload data 230 is the update data to be used by the receiving peer. In alternative implementations, different types of messages may be used, and messages may be formatted differently (eg, include different or additional information) than the messages shown in FIG. 2 . For example, a message may include a file or a portion of a file or a frame of data, such as a frame of game data or an audio file frame or portion thereof published to grid members. The receiving peer can reconstruct the entire file using the sequential values included in each message. In another example, the message includes additional identification information, such as an identifier indicating the grid to which the message belongs, for relaying by peers belonging to multiple grids.

图3示出在对等中继网络中中继消息的对等体的一个实施的流程图300。最初,对等体连接至对等中继网络中的一个或更多个其它对等系统。FIG. 3 shows a flowchart 300 of one implementation of peers relaying messages in a peer-to-peer relay network. Initially, peers connect to one or more other peer systems in the peer-to-peer relay network.

对等体通过对等体与发送对等体之间的连接从发送对等体接收消息,方框305。消息包括起源标识符、顺序值和有效负荷数据(例如,更新数据),与图2所示消息相同。The peer receives a message from the sending peer over the connection between the peer and the sending peer, block 305 . The message includes an origin identifier, sequence value, and payload data (eg, update data), the same as the message shown in FIG. 2 .

对等体选择要中继已接收消息到的连接,方框310。对等体根据用于对等中继网络的中继规则,从对等体的可用连接中选择连接。在应用中继规则后,对等体可能选择了对等体的连接中的一些、未选择对等体的连接或选择了对等体的连接中的全部。The peer selects a connection to relay the received message to, block 310 . A peer selects a connection from the peer's available connections according to the relay rules used for the peer-to-peer relay network. After applying the relay rules, the peer may select some of the peer's connections, none of the peer's connections, or all of the peer's connections.

对等体将消息中继到每个选定的连接,方框315。对等体为每个选定的连接构建消息。对于要发送的每个消息,对等体使用已接收消息,但在适当时更新寻址信息(例如,将发送方改为对等体,并且将接收方改为用于连接的接收对等体)。相应地,有效负荷数据保持不变。在另一实施中,对等体还可将数据添加到消息或者改变消息中的数据。对等体将构建的消息发送到适当的接收方。The peer relays the message to each selected connection, block 315 . Peers build messages for each selected connection. For each message to send, the peer uses the received message, but updates the addressing information as appropriate (e.g. changing the sender to the peer and the receiver to the receiving peer for the connection ). Accordingly, the payload data remains unchanged. In another implementation, peers may also add data to the message or change data in the message. The peer sends the constructed message to the appropriate recipient.

图4示出根据中继规则组成的集合在对等中继网络中中继消息的对等体的一个实施的流程图400。图4中使用的中继规则是一个中继规则集合的例子。其它实施可使用不同或附加的中继规则。最初,中继对等体连接至对等中继网络中的N个其它对等系统。例如,在图1所示的网络中,对等体D连接至3个其它对等体(并且因此在这种情况下N=3)。图4用于中继消息的中继规则为:FIG. 4 illustrates a flowchart 400 of one implementation of peers relaying messages in a peer-to-peer relay network according to a set of relay rules. The relay rules used in Figure 4 are an example of a set of relay rules. Other implementations may use different or additional relay rules. Initially, a relay peer is connected to N other peer systems in the peer-to-peer relay network. For example, in the network shown in Figure 1, peer D is connected to 3 other peers (and thus N=3 in this case). The relay rules for relaying messages in Figure 4 are:

1.不中继消息两次1. Do not relay messages twice

2.不将消息中继回发送方2. Do not relay the message back to the sender

3.不将消息中继到起源对等体3. Do not relay the message to the originating peer

4.在应用规则1和2后将消息中继到可用连接上的对等体4. After applying rules 1 and 2, relay messages to peers on available connections

中继对等体接收消息,方框405。中继对等体确定中继对等体是否已经接收此消息,方框410。中继对等体将消息的标识数据与由中继对等体存储的已经收到的消息的数据进行比较。在一个实施中,每个对等体维护由已接收消息的起源标识符和顺序值组成的已接收消息表。中继对等体从已接收消息中检索起源标识符和顺序值,并将此信息与中继对等体的已接收消息表中存储的数据进行比较。如果中继对等体确定中继对等体以前接收了此已接收消息(例如,对等体在存储已接收消息的起源标识符和顺序值的已接收消息表中找到条目),则中继对等体不中继已接收消息。在另一实施中,中继对等体检查以确定中继对等体是否以前中继了已接收消息。The relay peer receives the message, block 405. The relaying peer determines whether the message has been received by the relaying peer, block 410 . The relaying peer compares the message's identification data with data stored by the relaying peer for already received messages. In one implementation, each peer maintains a table of received messages consisting of origin identifiers and sequence values of received messages. The relaying peer retrieves the origin identifier and sequence value from the received message and compares this information with data stored in the relaying peer's received messages table. If the relaying peer determines that the relaying peer has previously received this received message (e.g., the peer finds an entry in the received message table that stores the origin identifier and sequence value of the received message), then the relaying peer Peers do not relay received messages. In another implementation, the relaying peer checks to determine if the relaying peer has previously relayed the received message.

如果中继对等体确定中继对等体以前未接收此消息,则中继对等体记录已接收该消息,方框412。在一个实施中,中继对等体将关于已接收消息的起源标识符和顺序值的条目添加到中继对等体的已接收消息表。如果该表已经具有关于此起源标识符和顺序值的条目,则中继对等体不改变表。If the relaying peer determines that the relaying peer has not previously received the message, the relaying peer records that the message was received, block 412 . In one implementation, the relaying peer adds an entry for the received message's origin identifier and sequence value to the relaying peer's received message table. If the table already has an entry for this origin identifier and sequence value, the relaying peer does not alter the table.

在记录已接收该消息后,中继对等体设置计数器,方框415。中继对等体使用计数器来逐步遍历(step through)中继对等体的每个可用连接。在一个实施中,中继对等体将整数计数器i设为1。After recording that the message has been received, the relaying peer sets a counter, block 415 . The relaying peer uses the counter to step through each available connection to the relaying peer. In one implementation, the relaying peer sets the integer counter i to one.

中继对等体确定中继对等体是否从连接至由计数器所示连接的对等体接收了消息,方框420。已接收消息包括指示已接收消息的发送方的寻址信息。计数器指示连接,并因此指示已连接对等体及该对等体的寻址信息。例如,图1中的对等体D具有3个连接,并且对等体D为每个连接指定了数字:对等体A连接至连接1,对等体B连接至连接2,以及对等体G连接至连接3。因此,当计数器i为1时,对等体D通过将已接收消息的寻址信息(发送方)与由对等体D存储的对等体A的寻址信息进行比较,检查已接收消息是否由对等体A发送。如果已接收消息是由连接至由计数器所示连接的对等体发送到中继对等体,则中继对等体不将消息中继到该对等体。The relaying peer determines whether the relaying peer has received a message from a peer connected to the connection indicated by the counter, block 420 . The received message includes addressing information indicating the sender of the received message. The counter indicates the connection and thus the connected peer and the addressing information of the peer. For example, peer D in Figure 1 has 3 connections, and peer D assigns numbers to each connection: peer A connects to connection 1, peer B connects to connection 2, and peer G connects to connection 3. Therefore, when the counter i is 1, peer D checks whether the received message is Sent by peer A. If the received message was sent to the relaying peer by a peer connected to the connection indicated by the counter, the relaying peer does not relay the message to this peer.

如果已接收消息不是由连接至由计数器所示连接的对等体发送到中继对等体,则中继对等体确定连接至由计数器所示连接的对等体是否为已接收消息的起源对等系统,方框422。已接收消息包括指示作为已接收消息的起源的对等体(最初生成消息的数据的对等体,再调用图2的起源标识符215)的信息。如果连接至由计数器所示连接的对等体是已接收消息的起源对等系统,则中继对等体不将消息中继到该对等体。If the received message is not sent to the relaying peer by the peer connected to the connection indicated by the counter, the relaying peer determines whether the peer connected to the connection indicated by the counter is the origin of the received message peer-to-peer system, block 422. The received message includes information indicating the peer that was the origin of the received message (the peer that originally generated the data of the message, calling again the origin identifier 215 of FIG. 2 ). If the peer connected to the connection indicated by the counter is the originating peer of the received message, the relaying peer does not relay the message to that peer.

如果已接收消息不是由连接至由计数器所示连接的对等体发送到中继对等体,并且连接至由计数器所示连接的对等体不是已接收消息的起源对等系统,则中继对等体将消息中继到该连接的对等体,方框425。中继对等体为所示连接构建消息。中继对等体复制已接收消息并在适当时更新寻址信息(例如,将发送方改为中继对等体,并且将接收方改为连接至所示连接的已连接对等体)。相应地,有效负荷数据保持不变。中继对等体将构建的消息通过所示连接发送到已连接对等体。If the received message is not sent to the relaying peer by the peer connected to the connection indicated by the counter, and the peer connected to the connection indicated by the counter is not the originating peer system of the received message, then the relay The peer relays the message to the connected peer, block 425 . The relay peer builds the message for the connection shown. The relaying peer copies the received message and updates the addressing information as appropriate (eg, changing the sender to the relaying peer and changing the receiver to the connected peer connected to the indicated connection). Accordingly, the payload data remains unchanged. The relaying peer sends the constructed message to the connected peer over the indicated connection.

中继对等体确定是否已检查所有连接,方框430。中继对等体将计数器与在对等中继网络中由中继对等体建立的连接的数量进行比较。例如,中继对等体将计数器i与N(由中继对等体保持的连接的数量)的值进行比较。如果中继对等体检查了所有连接,则中继对等体完成此已接收消息的中继。The relaying peer determines whether all connections have been checked, block 430 . The relaying peer compares the counter with the number of connections established by the relaying peer in the peer-to-peer relaying network. For example, the relay peer compares a counter i with the value of N (the number of connections maintained by the relay peer). If the relaying peer has checked all connections, the relaying peer completes the relaying of this received message.

如果中继对等体未检查所有连接,则中继对等体增大计数器,方框435。例如,中继对等体将计数器i设为i+1。在增大计数器后,中继对等体确定中继对等体是否从连接至由增大的计数器所示连接的对等体接收了已接收消息,从而返回方框420。If the relaying peer has not checked all connections, the relaying peer increments a counter, block 435 . For example, the relaying peer sets the counter i to i+1. After incrementing the counter, the relaying peer determines whether the relaying peer has received a received message from the peer connected to the connection indicated by the incremented counter, returning to block 420 .

如上所述,在其它实施中,还可使用不同的、附加的或更少的中继规则。在一个实施中,中继对等体确实将消息中继回发送方(例如,因此发送方可确认中继对等体未改变数据)。在另一实施中,中继对等体不将消息中继到指示为消息的起源的对等体(例如,如消息的起源标识符所示)。在另一实施中,中继对等体不会再一次将相同的消息中继到相同的已连接对等体。在另一实施中,中继对等体选择由可用连接组成的子集中继消息,如选择具有最低和最高响应时间的对等体。在另一实施中,每个对等体根据消息中存储的跳跃计数来将消息中继到所有对等体的已连接对等体,以便将只中继消息一定次数。在另一实施中,对等体将相同的消息中继有限的次数(不止一次)。As noted above, in other implementations, different, additional, or fewer relay rules may also be used. In one implementation, the relaying peer does relay the message back to the sender (eg, so the sender can confirm that the relaying peer did not change the data). In another implementation, the relaying peer does not relay the message to the peer indicated as the origin of the message (eg, as indicated by the message's origin identifier). In another implementation, the relaying peer does not relay the same message to the same connected peer again. In another implementation, the relaying peer selects a subset of available connections to relay messages, such as selecting peers with the lowest and highest response times. In another implementation, each peer relays the message to all peers' connected peers according to the hop count stored in the message, so that the message will only be relayed a certain number of times. In another implementation, peers relay the same message a limited number of times (more than once).

图5示出建立对等中继网络的一个实施的流程图500。最初,部署对等系统和服务器,如图1中的对等体A和服务器110。对等系统开通到服务器的连接,方框505。对等系统连接至服务器以建立对等中继网络(或网格),并且可称为“建立对等体”。至服务器的连接可以是直接或间接的网络连接。在一个实施中,对等体被指定到一小部分空间或由服务器维护的多个界或环境之一或者加入并在由一小部分空间或服务器维护的多个界或环境之一中注册。服务器在允许对等体进一步交互前验证对等体。对等系统将创建网格请求提交到服务器,方框510。创建网格请求指示对等体的标识信息及对等体请求服务器建立新对等中继网络。在一个实施中,请求还包括对等体请求服务器应用(例如,加入网格的限制)的条件。在另一实施中,请求指示在网格中使用的连接限制和规则集合(例如,中继规则和连接规则)。服务器注册新网格,方框515。服务器维护跟踪已建立网格的数据表或列表。服务器为新网格创建新表,并将请求对等体添加到表中。服务器向对等体发送已建立网格的确认,方框520。确认包括对等体接入网格所需的任何标识或接入信息。在一个实施中,确认包括用于网格的连接限制和规则(例如,中继规则)。FIG. 5 shows a flowchart 500 of one implementation of establishing a peer-to-peer relay network. Initially, peer-to-peer systems and servers are deployed, such as peer A and server 110 in FIG. 1 . The peer-to-peer system opens a connection to the server, block 505. Peer-to-peer systems connect to servers to establish a peer-to-peer relay network (or grid), and may be referred to as "peering". The connection to the server can be a direct or indirect network connection. In one implementation, a peer is assigned to or joins and registers in one of several worlds or environments maintained by a small space or server. The server authenticates the peer before allowing the peer to interact further. The peer system submits a create grid request to the server, block 510 . The create mesh request indicates the identification information of the peer and the peer requests the server to establish a new peer-to-peer relay network. In one implementation, the request also includes conditions that the peer requests the server to apply (eg, restrictions on joining the grid). In another implementation, the request indicates the set of connection restrictions and rules (eg, relay rules and connection rules) used in the grid. The server registers the new grid, block 515. The server maintains a data table or list that keeps track of the established grids. The server creates a new table for the new grid and adds the requesting peer to the table. The server sends confirmation to the peer that the grid has been established, block 520 . The acknowledgment includes any identification or access information required for the peer to access the mesh. In one implementation, validation includes connection restrictions and rules (eg, relay rules) for the grid.

图6示出将对等体连接至对等中继网络的一个实施的流程图600。最初,对等中继网络已由对等体和服务器建立,如图1中的对等体A和服务器110。FIG. 6 shows a flowchart 600 of one implementation of connecting peers to a peer-to-peer relay network. Initially, a peer-to-peer relay network has been established by peers and servers, such as peer A and server 110 in FIG. 1 .

对等系统连接至服务器,方框505。对等系统连接至服务器以加入对等中继网络(或网格),并且可称为“新对等体”或“加入对等体”。至服务器的连接可以是直接或间接的网络连接。在一个实施中,对等体被指定到一小部分空间或由服务器维护的多个界或环境之一或者加入并在一小部分空间或由服务器维护的多个界或环境之一中注册。服务器在允许对等体进一步交互前验证对等体。The peer system connects to the server, block 505. Peer systems connect to a server to join a peer-to-peer relay network (or grid), and may be referred to as "new peers" or "joining peers." The connection to the server can be a direct or indirect network connection. In one implementation, a peer is assigned to or joins and registers in a fraction of a space or one of a number of worlds or environments maintained by a server. The server authenticates the peer before allowing the peer to interact further.

对等体从服务器的可用网格中选择网格,方框610。在一个实施中,对等体请求可用网格列表并从该列表中选择。在另一实施中,服务器在对等体连接至服务器时自动提供可用网格列表。在一个实施中,服务器提供对等体已在其中注册的界的可用网格列表。服务器还可提供附加的信息以帮助选择(例如,哪些对等体已经是每个网格的成员)。对等体将网格选择提交到服务器。The peer selects a grid from available grids at the server, block 610 . In one implementation, a peer requests a list of available grids and selects from the list. In another implementation, the server automatically provides a list of available grids when a peer connects to the server. In one implementation, the server provides a list of available grids for the world in which the peer is registered. The server may also provide additional information to aid selection (eg, which peers are already members of each grid). Peers submit grid selections to the server.

服务器发送已经加入选定的网格的对等体的地址,方框615。地址指示如何与网格成员进行通信(例如,IP地址)。地址用于与网格成员建立对等连接,而不是通过服务器的连接。如果选定的网格限制了接入并且不允许新对等体加入选定的网格,则服务器不将地址提供到对等体,并愿意让对等体选择不同的网格。在一个实施中,服务器将选定的网格的连接限制的规则与地址一起提供到新对等体。The server sends the addresses of peers that have joined the selected grid, block 615 . The address indicates how to communicate with the grid member (eg, IP address). Addresses are used to establish peer-to-peer connections with mesh members, not connections through servers. If the selected grid restricts access and does not allow new peers to join the selected grid, the server does not offer the address to the peer and is willing to let the peer choose a different grid. In one implementation, the server provides the selected mesh's connection-limiting rules along with the address to the new peer.

新对等体将加入消息发送到每个网格成员,方框620。加入消息指示新对等体的地址及该对等体对于该网格而言是新的。在另一实施中,新对等体发送指示对等体的地址和对等体可用的连接的数量的连接可用消息(如下所述,类似于当对等体失去连接时)。在另一实施中,新对等体将加入消息发送到一个网格成员,并且该网格成员开始通过网格中继加入消息。The new peer sends a join message to each grid member, block 620 . The join message indicates the address of the new peer and that the peer is new to the grid. In another implementation, the new peer sends a connection available message indicating the address of the peer and the number of connections available to the peer (similar to when a peer loses connection, as described below). In another implementation, the new peer sends a join message to one mesh member, and the mesh member begins relaying the join message through the mesh.

网格成员接收加入消息,并且每个成员将加入响应发送回新对等体,方框625。加入响应指示响应对等体是否具有可用连接。肯定响应指示响应对等体具有可用连接。否定响应指示响应对等体没有可用连接。响应对等体记录加入消息中新对等体的地址,并使用该地址发送加入响应。新对等体接收加入响应。The grid members receive the join message, and each member sends a join response back to the new peer, block 625 . A join response indicates whether the responding peer has an available connection. A positive response indicates that the responding peer has an available connection. A negative response indicates that the responding peer has no connections available. The responding peer records the address of the new peer in the join message and uses that address to send the join response. The new peer receives the join response.

新对等体选择要连接至网格成员中的哪些,方框630。新对等体使用连接规则集合来为连接选择对等体。例如,在一个实施中,新对等体按新对等体接收肯定响应的顺序,从发送肯定响应的对等体中选择多达网格的连接限制的多个对等体(例如,对于连接限制3,新对等体选择对应于接收的前三个肯定响应的对等体)。不同的实施可使用不同的连接规则集合。新对等体存储每个选定的对等体的响应时间。在另一实施中,新对等体存储所有响应(肯定和否定)的响应时间。The new peer selects which of the mesh members to connect to, block 630 . The new peer uses the set of connection rules to select a peer for the connection. For example, in one implementation, the new peer selects a number of peers up to the mesh's connection limit from the peers that sent positive responses in the order that the new peers received positive responses (e.g., for the connection Restriction 3, the new peer selects the peer corresponding to the first three positive responses received). Different implementations may use different sets of connection rules. The new peer stores the response time of each selected peer. In another implementation, the new peer stores the response times of all responses (both positive and negative).

在为连接选择对等体后,新对等体开通至选定的对等体的连接,方框635。新对等体将连接请求发送到每个选定的对等体,并且选定的对等体确认请求,从而开通连接(除非对于选定的对等体连接已变得不可用)。对等体之间的连接可以是直接或间接的(例如,跨网络,如因特网)。在一个实施中,当对等体开通连接时,每个对等体将连接通知服务器。After selecting a peer for the connection, the new peer opens a connection to the selected peer, block 635 . The new peer sends a connection request to each of the selected peers, and the selected peers acknowledge the request, thereby opening the connection (unless the connection has become unavailable for the selected peers). Connections between peers can be direct or indirect (eg, across a network such as the Internet). In one implementation, when a peer opens a connection, each peer notifies the server of the connection.

在另一实施中,服务器通过强制一个或更多个连接来帮助加入网格。服务器可使一个对等体关闭连接,并开通至另一所指示的对等体的连接。服务器还可使对等体关闭一个或更多个其连接。In another implementation, the server facilitates joining the grid by forcing one or more connections. The server can cause one peer to close the connection and open a connection to another indicated peer. The server may also cause the peer to close one or more of its connections.

图7示出诸如图6的方框630中选择加入对等中继网络的对等体的一个实施的流程图700。最初,新对等体已选择网格,并发出加入消息到该网格的成员对等体。新对等体已接收从成员对等体返回的加入响应。FIG. 7 illustrates a flowchart 700 of one implementation of selecting a peer to join a peer-to-peer relay network, such as in block 630 of FIG. 6 . Initially, the new peer has chosen the grid and sends a join message to the peers that are members of that grid. The new peer has received the join response returned from the member peer.

新对等体选择对应于第一已接收肯定响应的对等体,方框705。此肯定响应在其它响应之前接收,并表示最快的可用连接。新对等体选择对应于最后已接收肯定响应的对等体,方框710。此肯定响应在其它响应之后接收,并表示最慢的可用连接。为确定哪个响应是最后的,新对等体等待直至所有响应已接收,或者等待规定的时期,然后宣布该期间内最后收到的为最后。新对等体随机从剩余肯定响应中选择对等体,直至新对等体已选择等于连接限制的多个对等体,方框715。这些选择支持通过网格的快速和慢速连接的平均分发。The new peer selects the peer corresponding to the first positive response received, block 705 . This positive response is received before other responses and indicates the fastest available connection. A new peer selection corresponds to the peer that last received a positive response, block 710 . This positive response is received after the other responses and represents the slowest connection available. To determine which response is last, the new peer waits until all responses have been received, or waits for a specified period, and then declares the last received within that period to be last. The new peer randomly selects a peer from the remaining positive responses until the new peer has selected a number of peers equal to the connection limit, block 715 . These choices support an even distribution of fast and slow connections across the mesh.

如上所述,在各种实施中,可使用不同或附加的连接规则。在一个实施中,新对等体选择第一肯定响应和最后肯定响应的对等体,然后以响应时间的递增次序(在第一后)选择对应于肯定响应的对等体。在另一实施中,新对等体在响应到达时选择对等体(例如,为最后已接收肯定响应保留一个空间),而不是等待开始选择对等体。在另一实施中,新对等体使用响应时间阈值选择对等体(例如,不选择具有超过某一限制的响应时间的对等体)。在另一实施中,新对等体基于对等体的特征(使用在加入响应中提供的信息)选择对等体,如存储容量、处理速度、接入级别或可用功能。As noted above, in various implementations, different or additional connection rules may be used. In one implementation, the new peer selects the first and last positive response peers, and then selects the peers corresponding to positive responses in increasing order of response time (after first). In another implementation, new peers elect peers when responses arrive (eg, to reserve a space for the last positive response received), rather than waiting to begin peer election. In another implementation, new peers use a response time threshold to select peers (eg, peers with response times exceeding a certain limit are not selected). In another implementation, the new peer selects a peer based on the peer's characteristics (using information provided in the join response), such as storage capacity, processing speed, access level, or available functionality.

在一个实施中,对等系统根据用于选择连接的选择过程将那些连接分类。例如,对等体存储指示哪个开通连接对应于接收的具有最低响应时间的加入响应和哪个开通连接对应于接收的具有最高响应时间的加入响应的信息。在为对等体断开连接和新对等体加入网格调整连接时,对等体可调整存储的连接分类。In one implementation, the peer-to-peer system classifies those connections according to a selection process used to select those connections. For example, the peer stores information indicating which open connection corresponds to the received join response with the lowest response time and which open connection corresponds to the received join response with the highest response time. As connections are adjusted for peer disconnects and new peers joining the mesh, peers may adjust the stored connection classifications.

在另一实施中,新对等体使用服务器帮助开通连接。在一个实施中,服务器提供具有可用连接的网格成员列表及那些成员对等体的地址。新对等体将加入消息直接发送到所指示的网格成员。In another implementation, the new peer uses the server to help open the connection. In one implementation, the server provides a list of grid members with available connections and the addresses of those member peers. The new peer sends a join message directly to the indicated mesh member.

如果肯定响应比连接限制更少,则新对等体将具有剩余可用连接。在一个实施中,新对等体可强制另一对等体关闭已建立连接并开通与新对等体的连接。If the positive response is less than the connection limit, the new peer will have connections remaining available. In one implementation, the new peer can force the other peer to close the established connection and open a connection with the new peer.

图8示出强制对等体为对等中继网络中新对等体提供连接的一个实施的流程图800。最初,新对等体已选择网格,并发出加入消息到该网格的成员对等体。新对等体已接收从成员对等体返回的加入响应。然而,在为所有肯定响应选择对等体后,新对等体仍具有可用连接。FIG. 8 shows a flowchart 800 of one implementation of forcing peers to provide connectivity for new peers in a peer-to-peer relay network. Initially, the new peer has chosen the grid and sends a join message to the peers that are members of that grid. The new peer has received the join response returned from the member peer. However, after a peer is selected for all positive responses, the new peer still has an available connection.

新对等体选择对应于否定响应的对等体,方框805。新对等体使用用于肯定响应的相同连接规则选择否定响应(例如,根据图7的规则先接收的否定响应)。或者,新对等体使用不同的强制连接规则集合。新对等体不选择新对等体已经连接至的对等体。The new peer selects the peer corresponding to the negative response, block 805 . The new peer selects a negative response using the same connection rules used for positive responses (eg, the negative response received first according to the rules of Figure 7). Alternatively, the new peer uses a different set of mandatory connection rules. The new peer does not choose a peer to which the new peer is already connected.

新对等体将强制连接请求发送到选定的对等体,方框810。强制连接请求指示新对等体具有至少一个可用连接(或具体的数量),并且指示接收对等体要开通与新对等体的连接。The new peer sends a mandatory connection request to the selected peer, block 810 . A mandatory connection request indicates that the new peer has at least one connection (or a specific number) available, and indicates that the receiving peer is to open a connection with the new peer.

新对等体接收强制连接请求,并选择要关闭的连接,方框815。相反接收对等体使用连接规则选择要关闭的连接。对于基于响应时间的连接规则,接收对等体使用存储的加入响应(和如下所述的连接可用响应)的响应时间。在一个实施中,要在随机选定的对等体之间进行选择,接收对等体选择最后选定的对等体,或者再一次随机选择对等体。在另一实施中,接收对等体使用不同的强制断开连接规则集合。The new peer receives the forced connection request and selects a connection to close, block 815 . Instead the receiving peer uses connection rules to choose which connections to close. For connection rules based on response time, the receiving peer uses the stored response time of the Join response (and the Connection Available response described below). In one implementation, to choose between randomly selected peers, the receiving peer selects the last selected peer, or again randomly selects a peer. In another implementation, the receiving peer uses a different set of enforced disconnection rules.

接收对等体关闭选定的连接,方框820。接收对等体将关闭消息发送到连接至选定的连接的对等体,并且这两个对等体关闭该连接。连接至选定的连接的对等体现在具有可用连接,因而如下所述发出连接可用消息到网格。The receiving peer closes the selected connection, block 820 . The receiving peer sends a close message to peers connected to the selected connection, and both peers close the connection. Peers connected to the selected connection now have a connection available and thus issue a connection available message to the grid as described below.

接收对等体将确认发送到新对等体,并且这两个对等体开通新连接,方框825。新对等体现在少了一个可用连接。如果新对等体具有更多可用连接,则新对等体重复该过程,返回方框805以选择另一否定响应。The receiving peer sends an acknowledgment to the new peer, and the two peers open a new connection, block 825 . The new peer now has one less available connection. If the new peer has more available connections, the new peer repeats the process, returning to block 805 to select another negative response.

在另一实施中,新对等体不强制另一对等体开通连接,除非新对等体具有至少两个可用连接。或者,可使用不同的阈值(例如,3)。在另一实施中,当新对等体未具有至少某一数量的连接(连接基数)时,新对等体发送强制连接消息。In another implementation, the new peer does not force the other peer to open a connection unless the new peer has at least two connections available. Alternatively, a different threshold (eg, 3) can be used. In another implementation, the new peer sends a force connection message when the new peer does not have at least a certain number of connections (connection cardinality).

在另一实施中,强制连接消息的接收对等体可选择拒绝(例如,视网络负荷平衡而定)。被拒绝时,新对等体选择将新强制连接消息发送到另一对等体。In another implementation, the recipient peer of the force connect message may choose to decline (eg, subject to network load balancing). When rejected, the new peer chooses to send a new force-connect message to the other peer.

在另一实施中,如果新对等体具有两个或更多可用连接,并且发送强制连接消息,则新对等体在消息中包括指示新对等体具有两个可用连接的信息。当接收对等体已选择要关闭的连接时,接收对等体向选定的连接的已连接对等体(远程对等体)指示新对等体有另一可用连接(并且在适当时包括新对等体的地址)。在接收对等体已关闭与远程对等体的连接后,远程对等体将连接可用消息直接发送到新对等体(除非新对等体已经连接至该远程对等体)。新对等体开通与(由新对等体选择的)接收对等体的新连接及与(由接收对等体选择的)远程对等体的另一新连接。这样,新对等体可以快速建立两个连接。如果新对等体仍具有另外两个可用连接,则新对等体可再次将指示两个可用连接的强制连接消息发送到另一选定的接收对等体。In another implementation, if the new peer has two or more available connections, and sends a force connection message, the new peer includes information in the message indicating that the new peer has two available connections. When the receiving peer has selected a connection to close, the receiving peer indicates to the connected peer of the selected connection (the remote peer) that another connection is available for the new peer (and includes address of the new peer). After the receiving peer has closed the connection to the remote peer, the remote peer sends a connection available message directly to the new peer (unless the new peer is already connected to the remote peer). The new peer opens a new connection with the receiving peer (selected by the new peer) and another new connection with the remote peer (selected by the receiving peer). This way, the new peer can quickly establish two connections. If the new peer still has two other available connections, the new peer may again send a force connection message indicating the two available connections to another selected receiving peer.

当对等系统断开与另一对等系统的连接时,这些对等体中的每个然后具有可用连接。如果这些对等体之一(或两者)仍在网格中(即,未与网格断开连接),则对等体将连接可用消息发送到对等体的剩余已连接对等体以通过网格中继到网格中的所有其它对等体。Each of these peers then has a connection available when a peer system disconnects from another peer system. If one (or both) of these peers is still in the mesh (i.e., not disconnected from the mesh), the peer sends a connection available message to the peer's remaining connected peers to Relays through the mesh to all other peers in the mesh.

图9示出在对等中继网络中断开连接的一个实施的流程图900。最初,对等系统(断开连接的对等体)连接至对等中继网络中的至少两个其它对等系统。FIG. 9 shows a flowchart 900 of one implementation of disconnecting in a peer-to-peer relay network. Initially, a peer system (a disconnected peer) is connected to at least two other peer systems in a peer-to-peer relay network.

断开连接的对等体变得与断开连接的对等体最初连接至的对等体之一断开连接,方框905。断开连接可因为任何端自愿断开连接或连接本身中的故障(例如,对等体之间的部分路径失效)而发生。例如,当对等体确定已连接对等体处于无响应状态(如下所述),或者当对等体被强制开通与新对等体的连接(如上所述)时,自愿断开连接可发生。在一个实施中,服务器可使对等体关闭一个或更多个连接,导致对应的断开连接。The disconnected peer becomes disconnected from one of the peers to which the disconnected peer was originally connected, block 905 . Disconnection can occur due to voluntary disconnection by either end or a failure in the connection itself (eg, failure of part of the path between peers). Voluntary disconnection can occur, for example, when a peer determines that a connected peer is in an unresponsive state (as described below), or when a peer is forced to open a connection with a new peer (as described above) . In one implementation, the server may cause the peer to close one or more connections, resulting in a corresponding disconnect.

断开连接的对等体将连接可用消息发送到连接至断开连接的对等体的剩余对等体,方框910。连接可用消息指示断开连接的对等体现在具有可用连接。在另一实施中,连接可用消息指示对等体具有的可用连接的数量。The disconnected peer sends a connection available message to remaining peers connected to the disconnected peer, block 910 . A connection available message indicates that a disconnected peer now has a connection available. In another implementation, the connection available message indicates the number of available connections that the peer has.

连接至断开连接的对等体的对等体中继连接可用消息,方框915。在网格中的对等体将连接可用响应发送回断开连接的成员,方框920。连接可用响应指示响应对等体是否具有可用连接。肯定响应指示响应对等体具有可用连接。否定响应指示响应对等体没有可用连接。响应对等体记录加入消息中新对等体的地址,并使用该地址发送加入响应。或者,响应对等体将响应通过网格发回以中继到断开连接的对等体。断开连接的对等体接收连接可用响应。The peer connected to the disconnected peer relays the connection available message, block 915 . The peer in the mesh sends a connection available response back to the disconnected member, block 920 . A connection available response indicates whether the responding peer has a connection available. A positive response indicates that the responding peer has an available connection. A negative response indicates that the responding peer has no connections available. The responding peer records the address of the new peer in the join message and uses that address to send the join response. Alternatively, the responding peer sends the response back through the mesh to relay to the disconnected peer. A disconnected peer receives a connection available response.

断开连接的对等体选择要连接至的网格成员之一,方框925。断开连接的对等体使用连接规则来为连接选择对等体,但断开连接的对等体不选择断开连接的对等体已经连接至的对等体。例如,在一个实施中,断开连接的对等体使用连接可用响应的响应时间和存储的仍连接至断开连接的对等体的对等体的响应时间,以选择要替代失去的连接的对等体。不同的实施可使用不同的连接规则集合。断开连接的对等体存储选定的对等体的响应时间。在另一实施中,断开连接的对等体存储所有响应(肯定和否定)的响应时间。在一个实施中,断开连接的对等体不选择这样的对等体,断开连接的对等体在一定的时期内已断开与其的连接。The disconnected peer selects one of the mesh members to connect to, block 925 . A disconnected peer uses connection rules to choose a peer for a connection, but a disconnected peer does not choose a peer to which the disconnected peer is already connected. For example, in one implementation, the disconnected peer uses the response time of the connection-available response and the stored response times of peers still connected to the disconnected peer to select a connection to replace the lost connection. peers. Different implementations may use different sets of connection rules. The disconnected peer stores the response time of the selected peer. In another implementation, the disconnected peer stores the response times of all responses (both positive and negative). In one implementation, a disconnected peer does not select a peer from which the disconnected peer has disconnected within a certain period of time.

在为连接选择对等体后,断开连接的对等体开通至选定的对等体的连接,方框930。断开连接的对等体将连接请求发送到选定的对等体,并且选定的对等体确认请求,从而开通连接(除非对于选定的对等体该连接已变得不可用)。对等体之间的连接可以是直接或间接的(例如,跨网络,如因特网)。在一个实施中,已连接对等体将更新发送到服务器,从而确认连接。After selecting a peer for the connection, the disconnected peer opens a connection to the selected peer, block 930 . The disconnected peer sends a connection request to the selected peer, and the selected peer acknowledges the request, thereby opening the connection (unless the connection has become unavailable to the selected peer). Connections between peers can be direct or indirect (eg, across a network such as the Internet). In one implementation, the connected peers send an update to the server, confirming the connection.

类似于参照图8加入网格的上述实施,在一个实施中,如果断开连接的对等体在尝试使用连接可用消息开通连接后仍具有可用连接(例如,因为所有连接可用响应均为否定的),则断开连接的对等体可如上所述发出强制连接消息。Similar to the implementation described above with reference to Figure 8 joining the mesh, in one implementation, if a disconnected peer still has an available connection after attempting to open a connection using a connection available message (e.g., because all connection available responses were negative ), then the disconnected peer can issue a force connect message as described above.

在另一实施中,断开连接的对等体使用服务器帮助开通新连接。在一个实施中,服务器提供具可用连接的网格成员列表及那些成员对等体的地址。断开连接的对等体将连接可用消息直接发送到所指示的网格成员。In another implementation, a disconnected peer uses a server to help open a new connection. In one implementation, the server provides a list of mesh members with available connections and the addresses of those member peers. A disconnected peer sends a connection available message directly to the indicated mesh member.

网格中的对等系统通过定期相互轮询而维护网格。在一个实施中,已连接对等体定期彼此发送消息以确认连接和已连接对等体仍在运行。Peer systems in the grid maintain the grid by periodically polling each other. In one implementation, connected peers periodically send messages to each other to confirm the connection and that the connected peers are still up and running.

图10示出维护对等中继网络的一个实施的流程图1000。最初,多个对等系统在网格中连接。Figure 10 shows a flowchart 1000 of one implementation of maintaining a peer-to-peer relay network. Initially, multiple peer systems are connected in a grid.

对等体将维护消息发送到连接至该对等体的每个对等体,方框1005。维护消息是要求接收方提供收到维护消息确认的请求。在一个实施中,对等体将Ping消息发送到每个已连接对等体。对等体评估接收的维护消息的响应,方框1010。对等体确定响应是否满意。在一个实施中,如果未从已连接对等体收到响应,则对等体确定该对等体的连接已失效(由于连接的原因或由于已连接对等体的原因)。如果在时间限制截止前未收到响应,则对等体确定该对等体的连接已失效。对等体关闭它确定已失效的任何连接的连接,方框1015。对等体将关闭连接请求发送到在失效连接上的已连接对等体。当对等体收到确认时,对等体关闭连接。如果对等体无法与在失效连接上的已连接对等体进行通信,或者未在时间限制内收到确认,则对等体在无确认情况下关闭连接。在另一实施中,对等体等待关闭连接,直至连接已被指明为失效一段时间或失效多次。在一个实施中,对等体将更新发送到服务器,从而确认任何关闭的连接。The peer sends a maintenance message to each peer connected to the peer, block 1005 . A maintenance message is a request for the receiver to provide confirmation of receipt of the maintenance message. In one implementation, the peers send Ping messages to each connected peer. The peer evaluates the received response to the maintenance message, block 1010 . The peer determines whether the response is satisfactory. In one implementation, if no response is received from the connected peer, the peer determines that the peer's connection has failed (either due to the connection or due to the connected peer). If no response is received before the time limit expires, the peer determines that the peer's connection has expired. The peer closes the connection, block 1015, of any connection it determines has failed. The peer sends a close connection request to the connected peer on the dead connection. When the peer receives the acknowledgment, the peer closes the connection. If a peer cannot communicate with a connected peer on a stale connection, or does not receive an acknowledgment within the time limit, the peer closes the connection without acknowledgment. In another implementation, the peers wait to close the connection until the connection has been indicated as dead for a period of time or multiple times. In one implementation, the peer sends an update to the server, acknowledging any closed connections.

如果对等体已关闭任何连接,则对等体自愿与一个或更多个对等体断开连接并发出适当的连接可用消息(例如,如上参照图9所述)。If a peer has closed any connections, the peer voluntarily disconnects from one or more peers and issues an appropriate connection available message (eg, as described above with reference to Figure 9).

在另一实施中,对等体使用服务器评估失效的连接。例如,当对等体确定连接已失效时,对等体发送请求到服务器以寻求帮助。服务器将消息发送到在失效连接另一端的对等体,以确认是该对等体有故障还是连接失效。服务器然后通知对等体以帮助开通新连接或者在适当时调整网络。In another implementation, the peer evaluates the failed connection using the server. For example, when a peer determines that the connection has failed, the peer sends a request to the server for assistance. The server sends a message to the peer at the other end of the failed connection to confirm whether the peer is down or the connection is down. The server then notifies the peers to help open new connections or adjust the network as appropriate.

图11-18示出构建、调整和维护网格的一个实施的例子。Figures 11-18 illustrate an example of one implementation for building, tuning and maintaining a grid.

在图11中,对等系统1105A(对等体A)使用服务器1110已建立对等中继网络(网格)1100(对等体A与服务器1110之间的连接未示出)。此网格的连接限制为3,因此,对等体A具有3个可用连接。在图12中,第二对等系统1105B(对等体B)已加入网格1100。当对等体B加入时,对等体B将加入消息发送到对等体A,并且对等体A将肯定加入响应发送到对等体B。对等体A和对等体B开通连接。In FIG. 11, a peer-to-peer system 1105A (peer A) has established a peer-to-peer relay network (mesh) 1100 using a server 1110 (the connection between peer A and server 1110 is not shown). The connection limit for this mesh is 3, therefore, peer A has 3 available connections. In FIG. 12 , a second peer system 1105B (peer B) has joined the grid 1100 . When peer B joins, peer B sends a join message to peer A, and peer A sends a positive join response to peer B. Peer A and Peer B open a connection.

在图13中,另外两个对等系统1105C和1105D(对等体C和对等体D)已经加入网格1100。这四个网格成员对等体A-D中的每个已建立3个与网格1100中的其它对等体的连接。新对等系统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具有两个已建立连接,并只有一个可用连接,因此,对等体E不强制开通另一连接。In FIG. 13 , two other peer systems 1105C and 1105D (Peer C and Peer D) have joined the grid 1100 . Each of the four mesh member peers AD has established 3 connections with other peers in the mesh 1100 . A new peer system 1105E (Peer E) joins the grid. However, when peer E sends join messages to other peers, since each peer AD already has the maximum number of connections allowed by the connection limit of grid 1100, all join responses are negative. In Figure 14, peer E has forcefully opened the connection. Peer E chooses peer B from the negative responses (e.g., because peer E received a response from peer B first), and sends a force connect message to peer B. Peer B chooses peer D to close the connection, and closes the connection with peer D. Peer B confirms the connection with peer E, and peers B and E open a new connection. When peer B closes the connection to peer D, peer D has a connection available. Peer D sends a connection available message to peers A and C, and these peers relay the message throughout mesh 1100 . Peers A, B and C do not have an available connection, so a negative response is sent to peer D. Peer E has two available connections and sends a positive response to peer D. Peer D opens a connection with peer E. Peer E still has an available connection and therefore issues a connection available message. However, all responses were negative. Peer E has two established connections and only one connection available, so peer E does not force another connection to be opened.

在图15中,对等体A断开与网格1100的连接。对等体A连接至对等体B、C和D中的每个。当对等体A断开连接时,对等体B、C和D各具有可用连接。对等体B、C和D发出连接可用消息,并且对等体B、C、D和E各发送肯定响应。在评估连接可用响应的响应并消除已经存在的连接的对等体后,如图16所示,对等体B-E建立连接。对等体B-E中的每个现在具有3个连接。In FIG. 15 , peer A disconnects from grid 1100 . Peer A is connected to each of peers B, C and D. When peer A disconnects, peers B, C and D each have available connections. Peers B, C, and D send a connection available message, and peers B, C, D, and E each send a positive response. After evaluating the response to the connection available response and eliminating the already existing connected peers, as shown in Figure 16, peers B-E establish a connection. Each of peers B-E now has 3 connections.

在图17中,3个新对等系统1105F、1105G和1105H(对等体F、G和H)已加入网格1100并建立连接。作为维护网格的常规活动的一部分,对等体B-H各发送Ping消息到其已连接对等体。例如,对等体B定期Ping对等体D、E和G。对等体D未就对等体B的Ping消息向对等体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可能强制连接)。对等体D从对等体B和G收到肯定响应。对等体B刚由于失效连接而断开与对等体D的连接,因此对等体D将不为新连接选择对等体B(或者对等体B会拒绝新连接请求)。对等体D选择对等体G并开通到对等体G的连接。In Figure 17, 3 new peer systems 1105F , 1105G , and 1105H (peers F, G, and H) have joined mesh 1100 and established a connection. As part of the regular activity of maintaining the grid, peers BH each send Ping messages to their connected peers. For example, peer B pings peers D, E, and G periodically. Peer D does not provide a satisfactory response to Peer B to Peer B's Ping message (eg, the response from Peer D is too slow, or does not reach Peer B). In Figure 18, peer B has closed the connection with peer D. When peer B closes the connection, peer B and peer D have connections available. Peers B and D send out connection available messages to relay through mesh 1100 . Peer B receives positive responses from peers G and D. Peer B is already connected to peer G, so peer G will not be selected for a new connection. Peer B has just disconnected from peer D due to a dead connection, so peer D will not be selected for a new connection. Peer B has not opened a new connection (Peer B has two open connections and only one available connection, so, peer B does not try to force a connection, but in another implementation, peer B may force a connection) . Peer D receives positive responses from peers B and G. Peer B has just disconnected from peer D due to a dead connection, so peer D will not choose peer B for a new connection (or peer B will reject the new connection request). Peer D selects peer G and opens a connection to peer G.

在图11-18所示的例子中,网格1100的对等体开通和关闭连接以构建和调整网格而不依赖服务器1110管理连接(但服务器1110确实帮助为新对等体提供网格的当前成员对等体的地址)。In the example shown in Figures 11-18, the peers of grid 1100 open and close connections to build and tune the grid without relying on server 1110 to manage connections (though server 1110 does help provide new peers with the grid's address of the current member peer).

冗余列表redundant list

在一个实施中,网格中的对等体通过避免发送基于网格中的当前路径确定为冗余的消息而减少冗余消息业务。In one implementation, peers in the mesh reduce redundant message traffic by avoiding sending messages that are determined to be redundant based on the current path in the mesh.

在此实施中,对等中继网络中的每个对等体存储冗余列表。对等体的冗余列表指示该对等体将不把源于指定的对等体的消息发送到的其它对等体。相应地,冗余列表中的每个条目指示起源对等体和(连接至中继对等体的)目的对等体。当对等体收到指示在该对等体的冗余列表中的始发对等体的消息时,该对等体将不把该消息中继到由冗余列表中对应条目所指示的已连接对等体。在另一实施中,对等体可打开和关闭冗余列表功能(例如,在服务器请求时,如在确定已出现安全问题后)。In this implementation, each peer in the peer-to-peer relay network stores a redundancy list. A peer's redundancy list indicates other peers to which the peer will not send messages originating from the specified peer. Accordingly, each entry in the redundancy list indicates an origin peer and a destination peer (connected to the relay peer). When a peer receives a message indicating an originating peer that is in the peer's redundancy list, the peer will not relay the message to the peer(s) already indicated by the corresponding entry in the redundancy list. Connect peers. In another implementation, the peer can toggle the redundancy list functionality on and off (eg, at the server's request, such as after determining that a security issue has arisen).

图19示出在对等中继网络中构建冗余列表的一个实施的流程图1900。最初,连接多个对等系统以形成对等中继网络。接收对等体连接到至少两个其它对等体。FIG. 19 shows a flowchart 1900 of one implementation of building a redundancy list in a peer-to-peer relay network. Initially, multiple peer systems are connected to form a peer-to-peer relay network. A receiving peer is connected to at least two other peers.

接收对等体从已连接对等体接收冗余消息,方框1905。冗余消息是冗余的,这是因为接收对等体已经接收相同的消息。接收对等体使用已接收消息中的信息,将冗余消息标识为相同。如上所述,在一些实施中,每个对等体维护已接收消息的列表以避免中继相同的消息两次。接收对等体还可使用此列表识别出冗余消息。The receiving peer receives redundant messages from connected peers, block 1905 . Redundant messages are redundant because the receiving peer has already received the same message. The receiving peer uses the information in the received message to identify redundant messages as identical. As noted above, in some implementations, each peer maintains a list of received messages to avoid relaying the same message twice. The receiving peer can also use this list to identify redundant messages.

接收对等体构建冗余更新消息,方框1910。接收对等体在冗余更新消息中包括标识消息的起源的信息和标识接收对等体的信息。例如,接收对等体从冗余消息中检索起源标识符(例如,再调用图2中所示的消息)并存储在冗余更新消息中的起源标识符。The receiving peer constructs a redundancy update message, block 1910 . The receiving peer includes in the redundancy update message information identifying the origin of the message and information identifying the receiving peer. For example, the receiving peer retrieves the origin identifier from the redundant message (eg, recalling the message shown in Figure 2) and stores the origin identifier in the redundant update message.

接收对等体将冗余更新消息发送到冗余消息的发送方,方框1915。冗余消息在其地址信息中包括冗余消息的发送方的地址信息。The receiving peer sends a redundancy update message to the sender of the redundancy message, block 1915 . The redundant message includes address information of the sender of the redundant message in its address information.

冗余消息的发送方接收冗余更新消息,并更新发送方的冗余列表,方框1920。发送方从冗余更新消息中检索标识冗余消息的起源和冗余消息的接收方(接收对等体)的信息。发送方将指示发送方不应将始发于所指示的起源的消息发送到接收对等体的条目添加到发送方的冗余列表。The sender of the redundancy message receives the redundancy update message and updates the sender's redundancy list, block 1920 . The sender retrieves from the redundancy update message information identifying the origin of the redundant message and the recipient (receiving peer) of the redundant message. The sender will add to the sender's redundancy list an entry indicating that the sender should not send messages originating from the indicated origin to the receiving peer.

例如,参照图1中所示的网格100,对等体B从对等体A、D和E中的每个接收始发于对等体C的消息。假设对等体B先从对等体A接收始发于对等体C的消息,则从对等体D和E接收的始发于对等体C的消息为冗余消息。对等体B构建指示对等体C为起源并且指示对等体B为接收方的冗余更新消息以发送到对等体D和E。对等体B将冗余更新消息发送到对等体D。对等体D更新其冗余列表以指示对等体D不将始发于对等体C的消息中继到对等体B。对等体E从对等体B接收类似的冗余更新消息,并且也以类似的方式更新其冗余列表。For example, referring to grid 100 shown in FIG. 1, peer B receives a message originating from peer C from each of peers A, D, and E. As shown in FIG. Assuming that peer B first receives a message originating from peer C from peer A, the messages originating from peer C received from peers D and E are redundant messages. Peer B constructs a redundancy update message to send to peers D and E indicating peer C as origin and peer B as recipient. Peer B sends a redundancy update message to peer D. Peer D updates its redundancy list to instruct peer D not to relay messages originating from peer C to peer B. Peer E receives similar redundancy update messages from peer B and also updates its redundancy list in a similar manner.

在对等体连接至网格和与网格断开连接时,客户之间的路径会改变,因此冗余列表会变得不准确。相应地,当对等体与网格断开连接时,剩余的对等体更新冗余列表。As peers connect to and disconnect from the grid, the paths between clients change, so the redundancy list becomes inaccurate. Accordingly, when a peer is disconnected from the grid, the remaining peers update the redundancy list.

图20示出在对等中继网络中为要断开连接的对等体更新冗余列表的一个实施的流程图2000。最初,连接多个对等系统以形成对等中继网络。要断开连接的对等体连接到至少两个其它对等体。FIG. 20 shows a flowchart 2000 of one implementation for updating a redundancy list for a peer to be disconnected in a peer-to-peer relay network. Initially, multiple peer systems are connected to form a peer-to-peer relay network. A peer to be disconnected is connected to at least two other peers.

要断开连接的对等体与网格断开连接,方框2005。以前连接至要断开连接的对等体的对等体现在是断开连接的对等体。每个断开连接的对等体遵循下面的相同过程。The peer to be disconnected is disconnected from the grid, block 2005 . Peers that were previously connected to the peer being disconnected are now disconnected peers. Each disconnected peer follows the same process below.

断开连接的对等体构建清除冗余消息,方框2010。清除冗余消息指示标识断开连接的对等体的信息。断开连接的对等体将清除冗余消息发送到仍连接至断开连接的对等体的对等体,方框2015。从断开连接的对等体接收清除冗余消息的对等体更新其冗余列表,方框2020。接收清除冗余消息的对等体在对等体的冗余列表中删除一些条目,这些条目影响将消息中继到由清除冗余消息所指示的断开连接的对等体。The disconnected peer constructs a clear redundant message, block 2010 . Clear redundant messages indicate information identifying disconnected peers. The disconnected peer sends a clear redundancy message to peers still connected to the disconnected peer, block 2015 . The peer receiving the clear redundancy message from the disconnected peer updates its redundancy list, block 2020 . A peer receiving a clear redundancy message deletes entries in the peer's redundancy list that affect relaying of messages to disconnected peers indicated by the clear redundancy message.

返回上面参照图1和图19所述的例子,对等体D在其冗余列表中具有指示对等体D不应将始发于对等体C的消息中继到对等体B的条目。如果对等体A与网格断开连接,则对等体B识别出对等体A的断开连接并构建清除冗余消息。对等体B将清除冗余消息发送到对等体D和E。对等体D从对等体B接收清除冗余消息,并清除对等体D的冗余列表中指示对等体D不应将始发于对等体C的消息中继到对等体B的条目。相应地,下次对等体D收到始发于对等体C的消息时,对等体D将重新把消息中继到对等体B。对等体E以类似的方式更新其冗余列表。Returning to the example described above with reference to Figures 1 and 19, peer D has an entry in its redundancy list indicating that peer D should not relay messages originating from peer C to peer B . If Peer A disconnects from the mesh, Peer B recognizes Peer A's disconnect and constructs a Clear Redundancy message. Peer B sends a clear redundancy message to peers D and E. Peer D receives the clear redundancy message from peer B and clears peer D's redundancy list indicating that peer D should not relay messages originating from peer C to peer B entry. Accordingly, the next time peer D receives a message originating from peer C, peer D will relay the message to peer B again. Peer E updates its redundancy list in a similar manner.

多个网格multiple grids

在一个实施中,对等系统可属于多个对等中继网络。每个网格可以是相关或独立的。根据每个网格建立的连接可以是独立的。相应地,在一个网格中,对等体可连接至一个对等体,而在另一网格中这两个对等体不连接(即使这两个对等体均在两个网格中)。在一个实施中,如果在两个网格中两个对等体被连接,则这两个对等体使用单个连接。消息包括指示消息所属网格的信息。对等体根据对应于所指示的网格为消息而建立的连接中继已接收消息。In one implementation, a peer-to-peer system may belong to multiple peer-to-peer relay networks. Each grid can be related or independent. Connections established from each mesh can be independent. Accordingly, in one mesh, peers can be connected to one peer, while in another mesh the two peers are not connected (even if both peers are in both meshes ). In one implementation, if two peers are connected in both meshes, the two peers use a single connection. A message includes information indicating the grid to which the message belongs. The peers relay the received message according to the connection established for the message corresponding to the indicated mesh.

在一个实施中,对等中继网络的成员可在对等中继网络内创建子网络。这种情况下,子网络的每个成员也是大网格的成员。例如,对等中继网络包括作为对等系统的游戏中的所有玩家,并且每队(包括总玩家的子集)具有对等系统的子网络(例如,用于游戏中的专用通信)。这样,对等体可建立多信道环境以根据需要分发和接收数据。In one implementation, members of a peer-to-peer relay network may create subnetworks within the peer-to-peer relay network. In this case, each member of the subnetwork is also a member of the larger grid. For example, a peer-to-peer relay network includes all players in the game as a peer-to-peer system, and each team (including a subset of the total players) has a sub-network of the peer-to-peer system (eg, for private communication within the game). In this way, peers can establish a multi-channel environment to distribute and receive data as needed.

在另一实施中,对等中继网络是独立的,但共享一个或更多个成员对等系统。例如,一组对等体可建立网格以支持大厅或聊天环境,并且包括第一组中至少一个对等体的另一组对等体可建立网格以支持某个特殊游戏。在另一例子中,一组对等体形成团队(组织)的网格,并且其中的一些对等体加入或创建其它网格以玩游戏。In another implementation, the peer-to-peer relay networks are independent, but share one or more member peer-to-peer systems. For example, one set of peers may set up a grid to support a lobby or chat environment, and another set of peers including at least one peer from the first set may set up a grid to support a particular game. In another example, a group of peers form a team (organization) grid, and some of them join or create other grids to play games.

例如,在线环境中,环境中的所有对等体连接至单个主网格。主网格用于一般公告和一般服务。对等体创建、加入和离开附加的更小网格以访问在线服务,如聊天室或游戏。在建立更小的网格前,对等体可使用主网格进行通信,如当新对等体要加入网格时(而不是使用服务器)。由于所有控制消息可通过主网格广播,因此,每个对等体可独立维护可用网格列表和每个网格中的活动对等体列表。在一个实施中,对等体不使用集中式服务器。For example, in an online environment, all peers in the environment are connected to a single master grid. The main grid is used for general announcements and general services. Peers create, join and leave additional smaller meshes to access online services such as chat rooms or games. Peers can use the main grid to communicate, such as when a new peer wants to join the grid (instead of using a server), until a smaller grid is established. Since all control messages can be broadcast over the main grid, each peer can independently maintain a list of available grids and a list of active peers in each grid. In one implementation, the peers do not use a centralized server.

图21示出中继来自属于多个网格的对等系统的消息的一个实施的流程图2100。最初,连接多个对等系统以形成两个对等中继网络。中继对等体是两个网格的成员,并且具有每个网格相应的连接和中继规则。Figure 21 shows a flowchart 2100 of one implementation for relaying messages from peer systems belonging to multiple grids. Initially, multiple peer systems are connected to form two peer-to-peer relay networks. A relay peer is a member of both meshes and has corresponding connection and relay rules for each mesh.

中继对等体接收消息,方框2105。消息包括指示消息所属网格的网格标识符。The relay peer receives the message, block 2105. The message includes a grid identifier indicating the grid to which the message belongs.

中继对等体选择由已接收消息指示的网格,方框2110。每个网格具有相应的连接集合和相应的中继规则集合。通过选择网格,中继对等体选择要使用的连接集合和要用于中继已接收消息的中继规则集合。The relaying peer selects the mesh indicated by the received message, block 2110. Each mesh has a corresponding set of connections and a corresponding set of relay rules. By selecting the mesh, the relaying peer selects the set of connections to use and the set of relaying rules to use for relaying received messages.

中继对等体根据选定的网格和对应的中继规则选择连接,方框2115。通过使用选定的网格的中继规则,中继对等体选择任何适当的连接用于中继已接收消息。The relaying peer selects a connection according to the selected grid and corresponding relaying rules, block 2115. Using the relaying rules of the selected grid, the relaying peer selects any appropriate connection for relaying the received message.

中继对等体将已接收消息发送到选定的对等体,方框2120。在中继消息前,中继对等体为每个选定的对等体调整已接收消息,如通过更新已接收消息的地址信息以指示已接收消息要从中继对等体中继到选定的对等体。The relaying peer sends the received message to the selected peer, block 2120. Before relaying the message, the relaying peer adjusts the received message for each selected peer, such as by updating the address information of the received message to indicate that the received message is to be relayed from the relaying peer to the selected peer. peers.

观众audience

在一个实施中,网格中的对等体被分类为参与者或观众。参与者对等体生成要在整个网格中继的新消息。观众对等体不生成新消息,并且充当网格中的通过节点(pass-through node)。参与者和观众均根据网格的中继规则将消息中继到其连接的对等体。在一些应用中,对于每个参与者可能有许多观众。在一个具有多个参与者的实施中,每个参与者具有到至少另一参与者的连接。In one implementation, peers in the grid are classified as participants or spectators. Participant peers generate new messages to be relayed throughout the mesh. Spectator peers do not generate new messages and act as pass-through nodes in the mesh. Both participants and spectators relay messages to their connected peers according to the mesh's relay rules. In some applications, there may be many viewers for each participant. In one implementation with multiple participants, each participant has a connection to at least one other participant.

在一个例子中,一组参与者玩在线游戏,而观众观看(观察数据而不改变游戏数据)。观众的数量可能很大(例如,数千)。其它例子包括表演(例如,音乐)、演讲和教学。在一些应用中,由于对等体通过中继数据处理分发,因此,服务器上用于分发的负荷不会始终随着观众数量的增加而增加。In one example, a group of participants plays an online game while spectators watch (observe data without changing game data). The number of viewers may be large (eg, thousands). Other examples include performance (eg, music), lectures, and teaching. In some applications, the load on the server for distribution does not always increase with the number of viewers, since the peers handle the distribution by relaying data.

在一个实施中,当对等体加入网格时,对等体作为参与者或作为观众加入网格。如果对等体作为观众加入网格,则对等体无权创建新消息,也无权将新消息发送到网格中以在整个网格中继。如果观众生成新消息并将新消息发送到连接至观众的对等体,则从观众接收新消息的对等体将不转发或中继已接收消息。在一个实施中,一些或全部观众可形成作为参与者的另一相关网格(例如,讨论第一网格中在观看的游戏)。In one implementation, when a peer joins the grid, the peer joins the grid either as a participant or as a spectator. If a peer joins the mesh as a spectator, the peer has no right to create new messages, nor to send new messages into the mesh to be relayed throughout the mesh. If a viewer generates a new message and sends the new message to a peer connected to the viewer, the peer receiving the new message from the viewer will not forward or relay the received message. In one implementation, some or all of the viewers may form another related grid as participants (eg, discussing a game being viewed in a first grid).

图22示出在支持观众和参与者的网格中中继消息的一个实施的流程图2200。最初,连接多个对等系统以形成支持参与者和观众的对等中继网络。每个对等系统存储作为参与者的对等体列表。在一个实施中,参与者对等体定期广播指示哪些对等体是参与者的消息。在另一实施中,服务器帮助标识参与者。Figure 22 shows a flowchart 2200 of one implementation for relaying messages in a grid that supports viewers and participants. Initially, multiple peer-to-peer systems are connected to form a peer-to-peer relay network that supports participants and spectators. Each peer system stores a list of peers that are participants. In one implementation, participant peers periodically broadcast messages indicating which peers are participants. In another implementation, the server helps identify participants.

中继对等体接收消息,方框2205。消息包括指示创建消息的对等体的起源标识符。The relay peer receives the message, block 2205. The message includes an origin identifier indicating the peer that created the message.

中继对等体确认已接收消息的起源是参与者对等体,方框2210。中继对等体存储参与者对等体列表。中继对等体将标识为已接收消息的起源的对等体与参与者对等体列表进行比较。如果已接收消息的起源对等体不是参与者(即,是观众),则中继对等体不中继已接收消息。The relay peer confirms that the origin of the received message is the participant peer, block 2210. Relay peers store a list of participant peers. The relay peer compares the peer identified as the origin of the received message to the list of participant peers. If the originating peer of the received message is not a participant (ie, is a viewer), the relaying peer does not relay the received message.

如果已接收消息的起源对等体是参与者,则中继对等体根据网栈的中继规则选择连接,方框2215。通过使用中继规则,中继对等体选择任何适当的连接用于中继已接收消息。If the originating peer of the received message is a participant, the relaying peer selects a connection according to the relaying rules of the network stack, block 2215 . Using the relay rules, the relaying peer chooses any suitable connection for relaying the received message.

中继对等体将已接收消息发送到选定的对等体,方框2220。在中继消息前,中继对等体为每个选定的对等体调整已接收消息,如通过更新已接收消息的地址信息以指示要从中继对等体中继已接收消息到选定的对等体。The relaying peer sends the received message to the selected peer, block 2220. Before relaying the message, the relaying peer adjusts the received message for each selected peer, such as by updating the address information of the received message to indicate that the received message is to be relayed from the relaying peer to the selected peer. peers.

在另一实施中,观众与参与者不在同一网格中。观众形成链接至参与者网格的平行观众网格。观众从参与者接收数据,并在观众网格中中继数据。网格之间的链路可由服务器或网关提供,或者通过来自每个网格的选定的对等体之间的连接提供。In another implementation, the audience is not in the same grid as the participants. The audience forms a parallel audience grid linked to the participant grid. Spectators receive data from participants and relay data in the spectator grid. Links between meshes may be provided by servers or gateways, or through connections between selected peers from each mesh.

在另一实施中,观众可以是条件观众。条件观众可请求权限以生成要在整个网格中继的数据。如果观众得到权限,则观众可发送网格中的对等体将中继的消息(例如,消息包括授权标志)。权限可由服务器、由作为调停者的选定的对等体或由(一个或更多个)参与者授予。例如,在教学环境中,参与者是讲师,而观众可请求提问的权限,提出的问题将被中继到所有对等体。In another implementation, the viewer may be a conditional viewer. Conditional viewers can request permission to generate data to be relayed throughout the grid. If the viewer is authorized, the viewer can send a message (eg, the message includes an authorization token) that the peers in the grid will relay. Permissions may be granted by the server, by selected peers acting as mediators, or by the participant(s). For example, in a teaching environment, the participant is the lecturer, and the audience can request permission to ask questions, which will be relayed to all peers.

岛恢复island recovery

在一个实施中,对等中继网络中的服务器和对等体支持调整网格中的连接以避免岛的形成或者从岛的形成中恢复。网格中由对等体组成的孤立的组称为岛。当多个对等体基本上同时断开连接时,网格中可形成岛。在上述断开连接的过程中,剩余对等体发送指示可用连接的消息,然而,在出现多个并发断开连接的情况下,剩余对等体可能在网格中形成孤立的组。一个岛中的对等体无法将消息发送到另一岛中的对等体,这是因为岛之间不存在对等连接。服务器检测到岛的形成,并与对等体交互以删除岛。In one implementation, servers and peers in the peer-to-peer relay network support adjusting connections in the mesh to avoid or recover from island formation. Isolated groups of peers in a mesh are called islands. Islands may form in the mesh when multiple peers disconnect at substantially the same time. During the disconnection process described above, the remaining peers send messages indicating available connections, however, in the event of multiple concurrent disconnections, the remaining peers may form isolated groups in the mesh. A peer on one island cannot send a message to a peer on another island because there is no peer-to-peer connection between the islands. The server detects island formation and interacts with peers to remove islands.

图23示出检测网格中岛的一个实施的流程图2300。最初,连接多个对等系统以形成对等中继网络或网格。当对等体开通和关闭连接或者变得断开连接时,对等体将改变的连接通知网格的服务器。这样,服务器跟踪网格中的所有连接。服务器还维护网格中对等体的有序列表。FIG. 23 shows a flowchart 2300 of one implementation for detecting islands in a grid. Initially, multiple peer systems are connected to form a peer-to-peer relay network or mesh. As peers open and close connections or become disconnected, the peers notify the grid's servers of the changed connections. This way, the server keeps track of all connections in the grid. The server also maintains an ordered list of peers in the grid.

服务器设置岛计数器,方框2305。岛计数器表示岛的数量。在一个实施中,服务器将计数器i设为1。The server sets the island counter, block 2305. The island counter indicates the number of islands. In one implementation, the server sets the counter i to one.

服务器选择起始对等体,方框2310。当岛计数器为1时,服务器选择对等体的有序列表中第一对等体为起始对等体。当岛计数器大于1时,服务器选择最近找到的未标记的对等体为起始对等体(如下所述)。The server selects a starting peer, block 2310. When the island counter is 1, the server selects the first peer in the ordered list of peers as the initial peer. When the island counter is greater than 1, the server selects the most recently found unmarked peer as the starting peer (described below).

服务器将连接至起始对等体的每个对等体标记为与起始对等体属于同一岛,方框2315。服务器标记直接连接至起始对等体和通过其它对等体间接连接至起始对等体的对等体(例如,从起始对等体前进到已连接对等体,再到连接至那些连接对等体的对等体并以此类推)。服务器以岛计数器的当前值标记对等体以指示对等体所属的岛。The server marks each peer connected to the originating peer as belonging to the same island as the originating peer, block 2315 . The server marks peers connected directly to the originating peer and indirectly connected to the originating peer through other peers (e.g., progressing from the originating peer to connected peers to those connected to peers of connected peers and so on). The server marks the peer with the current value of the island counter to indicate which island the peer belongs to.

在标记连接至起始对等体的所有对等体后,服务器确定网格中是否有未标记的对等体,方框2320。在一个实施中,服务器前进遍历对等体的有序列表,搜索未标记的对等体。After marking all peers connected to the originating peer, the server determines whether there are unmarked peers in the grid, block 2320 . In one implementation, the server proceeds through the ordered list of peers, searching for unmarked peers.

如果服务器找到未标记的对等体,则服务器增大岛计数器,方框2325。服务器增大岛计数器以指示已检测到附加的岛。在增大岛计数器后,服务器返回方框2310并将找到的未标记的对等体用作起始对等体。If the server finds an unmarked peer, the server increments the island counter, block 2325. The server increments the island counter to indicate that additional islands have been detected. After incrementing the island counter, the server returns to block 2310 and uses the found unmarked peer as the starting peer.

如果服务器未找到未标记的对等体,则服务器确定检测到的岛的数量,方框2330。服务器已就每个检测到的岛增大岛计数器,因此,岛计数器表示检测到的岛的数量。如果岛计数器等于1,则找到的是单个岛,因此,网格未被分成多个岛。如果岛计数器大于1,则找到的是多个岛,并且网格被分成多个岛。If the server finds no unmarked peers, the server determines the number of detected islands, block 2330. The server has incremented the island counter for each detected island, so the island counter represents the number of detected islands. If the island counter is equal to 1, then a single island was found and, therefore, the grid was not divided into multiple islands. If the island counter is greater than 1, multiple islands were found and the grid is divided into multiple islands.

图24示出在对等中继网络中删除岛的一个实施的流程图2400。最初,多个对等系统在对等中继网络或网格中连接。网格已被分成两个对等体岛,其中一个岛中的对等体没有到另一岛中的对等体的连接路径。服务器检测到这两个岛,如通过使用图23所示的过程。Figure 24 shows a flowchart 2400 of one implementation for deleting an island in a peer-to-peer relay network. Initially, multiple peer systems are connected in a peer-to-peer relay network or mesh. The mesh has been split into two peer islands, where peers in one island have no connection path to peers in the other island. The server detects these two islands, as by using the process shown in FIG. 23 .

服务器从每个岛选择对等体,方框2405。服务器可以以各种方式选择第一岛对等体和第二岛对等体。在一个实施中,服务器选择具有可用连接的对等体。在另一实施中,服务器随机从岛选择对等体。The server selects peers from each island, block 2405. The server may select the first island peer and the second island peer in various ways. In one implementation, the server selects a peer with an available connection. In another implementation, the server randomly selects peers from the island.

如果第一岛对等体不具有可用连接,则服务器将关闭连接消息发送到第一岛对等体以关闭连接,方框2410。第一岛对等体从服务器接收消息,并以与如上所述当接收强制连接消息时对等体选择要关闭的连接相同的方式选择要关闭的连接。第一岛对等体关闭连接,因此具有可用连接。If the first island peer does not have an available connection, the server sends a close connection message to the first island peer to close the connection, block 2410 . The first island peer receives the message from the server and selects the connection to close in the same way that the peer selects the connection to close when receiving the force connection message as described above. The first island peer closes the connection, so has a connection available.

服务器将启动强制连接消息发送到第一岛对等体,方框2415。启动强制连接消息包括第二岛对等体的地址。第一岛对等体从服务器接收消息,并将强制连接消息发送到第二岛对等体。The server sends a start force connection message to the first island peer, block 2415. The Start Forced Connection message includes the address of the second island peer. The first island peer receives the message from the server and sends a force connect message to the second island peer.

第二岛对等体从第一岛对等体接收强制连接消息、选择要关闭的连接并关闭选定的连接,方框2420。第二岛对等体以与如上所述相同的方式为强制连接消息的接收方选择要关闭的连接。如果第二岛对等体在关闭连接前具有可用连接,则第二岛对等体不关闭其任何连接。The second island peer receives the force connection message from the first island peer, selects the connection to close, and closes the selected connection, block 2420 . The second island peer selects the connection to close for the recipient of the force connection message in the same manner as described above. If the second island peer has an available connection before closing the connection, the second island peer does not close any of its connections.

第一岛对等体将开通连接请求发送到第二岛对等体,并且这两个对等体开通连接,方框2425。一旦开通连接,这两个岛便已连接,从而形成单个岛。对等体将更新发送到服务器,从而确认连接。如果如上所述检测到仍有附加的岛,则服务器返回方框2405以连接剩余岛中的另外两个岛。The first island peer sends an open connection request to the second island peer, and the two peers open the connection, block 2425 . Once the connection is made, the two islands are connected to form a single island. The peer confirms the connection by sending an update to the server. If it is detected as described above that there are still additional islands, the server returns to block 2405 to connect the other two of the remaining islands.

图25和图26示出检测岛和连接岛的例子。在图25中,类似于图11中网格1100的网格2500由于对等体C、G和F的同时断开连接而分成两个岛。第一岛包括对等体A、B、D和E。第二岛包括对等体H、I和J。在图26中,服务器已使对等体D开通与对等体I的连接,从而连接这两个岛。25 and 26 show examples of detection islands and connection islands. In FIG. 25 , grid 2500 , similar to grid 1100 in FIG. 11 , is split into two islands due to the simultaneous disconnection of peers C, G, and F. The first island includes peers A, B, D and E. The second island includes peers H, I and J. In Figure 26, the server has caused peer D to open a connection to peer I, thereby connecting the two islands.

安全Safety

在一个实施中,对等中继网络支持欺诈违规或安全违规或两者的检测和恢复。欺诈违规涉及操控数据来改变在线活动处理的结果,如影响游戏的进行。安全违规涉及未授权数据或不当使用数据来损害网格或导致网格故障。In one implementation, the peer-to-peer relay network supports detection and recovery of fraud violations or security violations or both. Fraud violations involve the manipulation of data to alter the outcome of the processing of online activities, such as affecting the playing of a game. A security breach involves unauthorized data or improper use of data to compromise the grid or cause the grid to fail.

图27示出在对等中继网络中检测欺诈违规的一个实施的流程图2700。最初,连接多个对等系统以形成对等中继网络或网格。Figure 27 shows a flowchart 2700 of one implementation for detecting fraudulent violations in a peer-to-peer relay network. Initially, multiple peer systems are connected to form a peer-to-peer relay network or mesh.

对等体从其连接的每个对等体接收消息,方框2705。如上所述,网格中的对等体在整个网格中继消息。对等体将通过其与其它对等体的每个连接接收相同的消息(相同的内容数据,但地址信息可能不同)。例如,如果对等体具有3个开通连接,则该对等体从三个相应的对等体接收相同的消息三次。对等体使用消息中指示起源和顺序值的信息,如图2的消息205中所示的起源标识符215和顺序值220,将消息标识为相同的消息。来自不同对等体的相同消息将具有相同的起源和顺序信息。The peer receives messages from each peer it is connected to, block 2705. As mentioned above, peers in the mesh relay messages throughout the mesh. A peer will receive the same message (same content data, but possibly different address information) over each of its connections with other peers. For example, if a peer has 3 open connections, the peer receives the same message three times from three corresponding peers. The peers identify the messages as the same message using information in the message indicating the origin and order value, such as origin identifier 215 and order value 220 as shown in message 205 of FIG. 2 . The same message from different peers will have the same origin and order information.

对等体将从每个已连接对等体接收的消息进行比较,方框2710。对等体比较消息的数据部分,如图2的消息205中所示的数据230。对等体确定对于任何已接收消息,消息的数据部分是否不同。在一个实施中,如果从一个已连接对等体接收的消息的数据部分不同于从其它已连接对等体接收的相同消息的数据部分,则对等体确定发生了欺诈违规。对等体还确定发送具有不同数据的消息的一个对等体对欺诈违规负责。或者,对等体使用不同的技术检测欺诈违规或标识对欺诈违规负责的对等体。适当时,对等体不中继具有不同数据部分的消息。The peers compare the messages received from each connected peer, block 2710. The peers compare the data portions of the messages, such as data 230 shown in message 205 of FIG. 2 . The peer determines whether the data portion of the message is different for any received message. In one implementation, a peer determines that a fraud violation has occurred if the data portion of a message received from one connected peer differs from the data portion of the same message received from other connected peers. The peers also determine that the one peer that sent the message with different data is responsible for the fraud violation. Alternatively, peers use different techniques to detect fraudulent violations or identify peers responsible for fraudulent violations. When appropriate, peers do not relay messages with different data parts.

如果发生了欺诈违规,则对等体发送欺诈提示,方框2715。欺诈提示指示发生了欺诈违规和对欺诈违规负责的对等体。对等体将欺诈提示发送到已连接对等体以在整个网格中继提示。在另一实施中,对等体将欺诈提示发送到服务器以进行适当的处理。If a fraud violation occurred, the peer sends a fraud alert, block 2715. A fraud alert indicates that a fraud violation occurred and the peer responsible for the fraud violation. Peers send fraud alerts to connected peers to relay alerts throughout the mesh. In another implementation, the peer sends the fraud alert to the server for appropriate handling.

当对等体收到欺诈提示时,对等体采取措施以从违规中恢复,方框2720。对等体采取措施以防止欺诈对等体继续影响网格活动。在一个实施中,对等体忽略来自欺诈对等体的消息。在另一实施中,对等体强制欺诈对等体与网格断开连接。对等体还采取措施来修补包括不同数据的消息的影响,如通过发出具有如由其它消息中用于标识欺诈消息的数据所示的正确数据的替换消息。或者,对等体之一估计正确数据,并在整个网络中继正确数据。在另一实施中,对等体对欺诈提示的响应是通知服务器。这种情况下,服务器解决欺诈违规,如通过断开对欺诈违规负责的对等体的连接。When a peer receives a fraud alert, the peer takes steps to recover from the violation, block 2720. Peers take steps to prevent rogue peers from continuing to affect grid activity. In one implementation, peers ignore messages from rogue peers. In another implementation, the peer forces the rogue peer to disconnect from the grid. Peers also take steps to remediate the effects of messages including different data, such as by sending out replacement messages with correct data as indicated by the data used in other messages to identify fraudulent messages. Alternatively, one of the peers estimates the correct data and relays the correct data throughout the network. In another implementation, the peer responds to the fraud alert by notifying the server. In this case, the server resolves the fraud violation, such as by disconnecting the peer responsible for the fraud violation.

在另一实施中,当对等体发送消息时,接收方将消息中继回发送对等体。发送对等体保存已发送消息的副本。当发送对等体接收从接收方返回的消息时,发送对等体将已发送消息的数据与已接收消息的数据进行比较。对等体通过查找差异而检测欺诈违规。对等体确定接收方修改了消息并发出欺诈提示。在一个实施中,直到报告了多个违规才对欺诈对等体进行恢复或修补措施(例如,由服务器跟踪)。在另一实施中,为欺诈进行的此回送检查是用于检测欺诈的第一层,一旦标识了可能的问题后,然后是更复杂的过程。In another implementation, when a peer sends a message, the recipient relays the message back to the sending peer. The sending peer keeps a copy of the sent message. When the sending peer receives a message back from the receiver, the sending peer compares the data of the sent message with the data of the received message. Peers detect fraudulent violations by looking for differences. The peer determines that the recipient modified the message and issues a fraud alert. In one implementation, recovery or remedial action (eg, tracked by the server) is not taken against the rogue peer until multiple violations are reported. In another implementation, this loopback check for fraud is the first layer for detecting fraud, followed by a more complex process once a possible problem is identified.

在另一实施中,对等体通过将已接收消息中的数据与由对等体生成的预测数据集进行比较来检测欺诈违规。如果对等体确定已接收消息中的数据与由对等体生成的数据不同,则对等体确定已接收消息的发送方对欺诈违规负责,并发出提示。In another implementation, the peer detects fraudulent violations by comparing data in received messages with a set of predicted data generated by the peer. If the peer determines that the data in the received message differs from the data generated by the peer, the peer determines that the sender of the received message is responsible for the fraud violation and issues an alert.

在图1所示网格100中检测欺诈违规的例子中,对等体B从对等体A、D和E中的每个接收相同的消息。对等体B通过比较起源标识符和顺序值,将消息标识为相同的。如果对等体B检测到来自对等体A的消息具有不同的数据部分,则对等体B发出将对等体A标识为欺诈的欺诈提示。对等体B将欺诈提示发送到对等体D和E(及任选地到对等体A)。对等体中继欺诈提示,直至所有对等体已接收提示。作为对提示的响应,对等体将忽略来自对等体A的所有进一步的消息。因此,对等体B、C和D将不再中继来自对等体A的消息。In the example of detecting a fraudulent violation in grid 100 shown in FIG. 1, peer B receives the same message from each of peers A, D, and E. Peer B identifies the messages as identical by comparing the origin identifier with the sequence value. If peer B detects that a message from peer A has a different data part, peer B issues a fraud alert identifying peer A as fraudulent. Peer B sends a fraud alert to peers D and E (and optionally to peer A). Peers relay the fraud alert until all peers have received the alert. In response to the prompt, the peer will ignore all further messages from peer A. Therefore, peers B, C and D will no longer relay messages from peer A.

图28示出在对等中继网络中检测安全违规的一个实施的流程图2800。最初,连接多个对等系统以形成对等中继网络或网格。Figure 28 shows a flowchart 2800 of one implementation for detecting security violations in a peer-to-peer relay network. Initially, multiple peer systems are connected to form a peer-to-peer relay network or mesh.

对等体从其已连接对等体之一接收消息,方框2805。对等体分析消息并检测安全违规,方框2810。对等体通过识别出消息无效或包括无效数据来确定消息是安全违规。在另一实施中,对等体通过分析消息如何被发送到该对等体来确定消息是安全违规。例如,如果消息被作为相同消息的大量重复之一发送到对等体(例如,如在服务拒绝攻击中),则对等体识别出消息是安全违规。在一个实施中,消息被作为一系列分组发送,并且对等体在低于完整消息的级别、如在分组级别检测到安全违规。对等体还确定具有安全违规的消息发送方对安全违规负责。或者,对等体使用不同的技术来检测安全违规或标识对欺诈违规负责的对等体。对等体不中继具有安全违规的消息或数据。The peer receives a message from one of its connected peers, block 2805. The peers analyze the message and detect security violations, block 2810. The peer determines that the message is a security violation by identifying that the message is invalid or includes invalid data. In another implementation, a peer determines that a message is a security violation by analyzing how the message was sent to the peer. For example, if a message is sent to a peer as one of a large number of repetitions of the same message (eg, as in a denial of service attack), the peer recognizes the message as a security violation. In one implementation, the message is sent as a series of packets, and the peer detects a security violation at a level below the full message, such as at the packet level. The peer also determines that the sender of the message with the security violation is responsible for the security violation. Alternatively, peers use different techniques to detect security breaches or identify peers responsible for fraudulent breaches. Peers do not relay messages or data with security violations.

如果发生了安全违规,则对等体发送安全提示,方框2815。安全提示指示发生了安全违规和对安全违规负责的对等体。对等体将安全提示发送到已连接对等体以在整个网格中继提示。在另一实施中,对等体将安全提示发送到服务器以进行适当的处理。If a security violation has occurred, the peer sends a security alert, block 2815. A security alert indicates that a security violation occurred and the peer responsible for the security violation. Peers send security hints to connected peers to relay hints throughout the mesh. In another implementation, the peer sends the security reminder to the server for appropriate handling.

当对等体接收安全提示时,对等体采取适当的措施以从违规中恢复,方框2820。对等体采取措施以防止违反网格安全的对等体继续影响或损害网格。在一个实施中,对等体忽略来自对安全违规负责的对等体的消息。在另一实施中,对等体强制对安全违规负责的对等体断开与网格的连接。对等体还采取适当的措施以修补由安全违规造成的任何损害。在另一实施中,对等体对安全提示的响应是通知服务器。这种情况下,服务器解决安全违规,如通过断开对安全违规负责的对等体的连接,并采取措施来修补对网格造成的任何损害。When the peer receives the security prompt, the peer takes appropriate action to recover from the violation, block 2820 . Peers take steps to prevent a peer violating grid security from continuing to affect or compromise the grid. In one implementation, peers ignore messages from peers responsible for the security violation. In another implementation, the peer forces the peer responsible for the security violation to disconnect from the grid. The peers also take appropriate steps to repair any damage caused by the security breach. In another implementation, the peer responds to the security prompt by notifying the server. In this case, the server resolves the security violation, such as by disconnecting the peer responsible for the security violation, and takes steps to repair any damage caused to the grid.

图29和图30分别示出服务器2905和对等系统3005的一个实施的方框图。在其它实施中,服务器或对等体包括比图29和图30中所示更少的组件,或者包括不同或附加的组件。Figures 29 and 30 show block diagrams of one implementation of the server 2905 and the peer-to-peer system 3005, respectively. In other implementations, the server or peer includes fewer components than shown in FIGS. 29 and 30 , or includes different or additional components.

服务器2905如上所述操作并包括提供上述功能的组件,包括用于建立网格2910、添加对等体2915、连接对等体2920、断开对等体连接2925、维护网格2930、存储和生成网格数据(例如,连接、成员、连接限制)和规则(例如,中继规则、连接规则)2935、管理多个界2940、通过冗余列表进行管理和帮助2940、管理多个网格2950、管理网格中的观众和参与者2955、处理岛检测和恢复2960、管理和解决欺诈与安全违规2965及服务器的中心服务2970(例如,网络通信和寻址、玩家匹配、聊天功能、数据备份等)的组件。The server 2905 operates as described above and includes components that provide the functionality described above, including for building the grid 2910, adding peers 2915, connecting peers 2920, disconnecting peers 2925, maintaining the grid 2930, storing and generating Grid data (e.g. connections, members, connection limits) and rules (e.g. relay rules, connection rules) 2935, manage multiple realms 2940, manage and help with redundancy lists 2940, manage multiple grids 2950, Manage spectators and participants in the grid 2955, handle island detection and recovery 2960, manage and resolve fraud and security breaches 2965, and server's central services 2970 (e.g., network communication and addressing, player matchmaking, chat functionality, data backup, etc. )s component.

对等系统3005如上所述操作并包括提供如上所述功能的组件,包括用于建立网格3010、加入网格3015、连接对等体3020、断开对等体连接3025、维护网格3030、存储和生成网格数据(例如,连接、成员、连接限制)和规则(例如,中继规则、连接规则)3035、构建、更新和使用冗余列表3040、在多个网格3045中操作、通过和作为网格中的观众和参与者进行操作3050、处理岛检测和恢复3055、管理、检测和解决欺诈和安全违规3060及对等系统服务3065(例如,网络通信和寻址、玩家匹配、聊天功能、数据备份等)的组件。The peer-to-peer system 3005 operates as described above and includes components that provide the functionality described above, including for establishing a grid 3010, joining a grid 3015, connecting a peer 3020, disconnecting a peer 3025, maintaining the grid 3030, Store and generate grid data (e.g., connections, members, connection limits) and rules (e.g., relay rules, join rules) 3035, build, update and use redundancy lists 3040, operate in multiple grids 3045, pass and operate as spectators and participants in the grid 3050, handle island detection and recovery 3055, manage, detect and resolve fraud and security breaches 3060, and peer-to-peer system services 3065 (e.g., network communication and addressing, player matching, chat functions, data backup, etc.).

对等中继网络的各种实施提供所需的益处。网格在多个网络应用中很有用,包括庞大的多玩家计算机在线游戏。在线游戏应用只是具有一个共同点的更大网络应用组的一个例子:共享和维护一个公共数据集。当数据集在一个对等体上更新时,信息被发送到其它对等体组并在整个网格中继,因此,每个对等体将具有更新的数据集。中继网格允许具有有限网络带宽的已连接对等体在它们之间交换数据,而无需通过中央服务器(来分发数据)。此网络可用于交换游戏数据、其它游戏相关信息、媒体文件、流传送音频或流传送视频。Various implementations of peer-to-peer relay networks provide desired benefits. Grids are useful in several network applications, including massively multiplayer computer online games. An online gaming application is just one example of a larger group of web applications that have one thing in common: sharing and maintaining a common data set. When a dataset is updated on one peer, the information is sent to other groups of peers and relayed throughout the mesh, so each peer will have the updated dataset. A relay mesh allows connected peers with limited network bandwidth to exchange data between them without going through a central server. This network can be used to exchange game data, other game related information, media files, streaming audio or streaming video.

例如,在一个实施中,对等体使用网格进行文件发布。网格中的对等体通过将文件发送到连接至公布者的对等体公布文件(作为一个消息或分成多个消息),并且网格的成员对等体在整个网格将文件中继到所有成员。这样,网格的所有成员可接收公布的文件而不使用服务器并不使用从公布对等体到每个对等体的直接连接。在各种实施中,可公布任何类型的文件。文件可以是数据、媒体或可执行软件应用。通过网格公布的文件例子包括但不限于:流传送介质(例如,音频和/或视频)、媒体文件、来自游戏或其它应用的重放数据、地图、公告、消息、应用数据和模块(例如,地图、模板、结构、声音)。For example, in one implementation, peers use a grid for file distribution. Peers in the grid publish the file (either as one message or split into multiple messages) by sending the file to peers connected to the publisher, and member peers throughout the grid relay the file to all members. In this way, all members of the grid can receive published files without using a server and without using a direct connection from the publishing peer to each peer. In various implementations, any type of file may be published. Files can be data, media, or executable software applications. Examples of files published through the grid include, but are not limited to: streaming media (e.g., audio and/or video), media files, replay data from games or other applications, maps, announcements, messages, application data, and modules (e.g. , maps, templates, structures, sounds).

本发明的各种实施以电子硬件、计算机软件或这些技术的组合实现。大多数实施包括由可编程计算机执行的一个或更多个计算机程序。例如,在一个实施中,每个对等系统和服务器包括一台或更多台执行用于实施对等中继网络功能的软件的计算机。通常,每台计算机包括一个或更多个处理器、一个或更多个数据存储组件(例如,易失性或非易失性存储器模块和永久性光学和磁性存储装置,如硬盘和软盘驱动器、CD-ROM驱动器和磁带驱动器)、一个或更多个输入装置(例如,鼠标和键盘)及一个或更多个输出装置(例如,显示控制台和打印机)。Various implementations of the invention are realized in electronic hardware, computer software, or a combination of these technologies. Most implementations include one or more computer programs executed by programmable computers. For example, in one implementation, each peer-to-peer system and server includes one or more computers executing software for implementing the functionality of the peer-to-peer relay network. Typically, each computer includes one or more processors, one or more data storage components (e.g., volatile or nonvolatile memory modules, and permanent optical and magnetic storage devices such as hard and floppy disk drives, CD-ROM drive and tape drive), one or more input devices (such as a mouse and keyboard), and one or more output devices (such as a display console and a printer).

计算机程序包括通常存储在永久性存储介质并然后在运行时复制到存储器中的可执行代码。处理器通过以规定次序从存储器取出程序指令而执行代码。当执行程序代码时,计算机从输入和/或存储装置接收数据、对数据执行操作并然后将结果数据提供到输出和/或存储装置。A computer program consists of executable code which is usually stored on a permanent storage medium and then copied into memory at runtime. The processor executes code by fetching program instructions from memory in a prescribed order. When executing program code, a computer receives data from input and/or storage devices, performs operations on the data and then provides the resulting data to output and/or storage devices.

描述了本发明的各种说明性实施。然而,本领域的技术人员将明白,附加的实施也是可能的并在本发明的范围内。例如,虽然上述说明描述在支持游戏应用的上下文中论述的对等中继网络的若干实施,但其它应用也是可能的,如文件共享或其它数据分发应用。Various illustrative implementations of the invention are described. However, those skilled in the art will appreciate that additional implementations are possible and within the scope of the invention. For example, while the above description describes several implementations of peer-to-peer relay networks discussed in the context of supporting gaming applications, other applications are possible, such as file sharing or other data distribution applications.

因此,本发明并不只限于上述那些实施。Therefore, the present invention is not limited to those implementations described above.

Claims (18)

1. support a plurality of peer-to-peer relay network of networks for one kind, comprising:
Main peer-to-peer relay network; Said main peer-to-peer relay network comprises all peer systems in said a plurality of peer-to-peer relay network; Said main peer-to-peer relay network has sub-network in said main peer-to-peer relay network; Wherein, each peer system of sub-network also is the member of said main peer-to-peer relay network;
The first peer-to-peer relay network that comprises a plurality of first peer systems, said a plurality of first peer systems are first sub-networks of said main peer-to-peer relay network, and the said first peer-to-peer relay network comprises the first particular peer system and the second particular peer system; And
The second peer-to-peer relay network that comprises a plurality of second peer systems, said a plurality of second peer systems are second sub-networks of said main peer-to-peer relay network, and the said second peer-to-peer relay network comprises said first particular peer system and the said second particular peer system,
Wherein, In the said first peer-to-peer relay network, the said first particular peer system has to the connection of the said second particular peer system, and in the said second peer-to-peer relay network; The connection that the said first particular peer system does not arrive the said second particular peer system
Wherein, the message that the peer-to-peer from the said first peer-to-peer relay network is addressed to another peer-to-peer in the said first peer-to-peer relay network is the private communication that only is relayed to the peer-to-peer in the said first peer-to-peer relay network, and
Wherein, be relayed to all peer-to-peers in the said main peer-to-peer relay network setting up the message that the peer-to-peer from the said first peer-to-peer relay network before said first sub-network is addressed to the peer-to-peer in the said main peer-to-peer relay network.
2. a plurality of peer-to-peer relay network of networks of support as claimed in claim 1 also comprise:
Be connected to the server of each peer system.
3. a plurality of peer-to-peer relay network of networks of support as claimed in claim 1, wherein:
Peer system in the said first peer-to-peer relay network is represented the player in the game on line.
4. a plurality of peer-to-peer relay network of networks of support as claimed in claim 3, wherein:
Peer system in the said first peer-to-peer relay network is illustrated in the player of same team in the said game on line.
5. a plurality of peer-to-peer relay network of networks of support as claimed in claim 1, wherein:
The data of relaying are network service datas in the said first peer-to-peer relay network.
6. a plurality of peer-to-peer relay network of networks of support as claimed in claim 1, wherein:
The data of relaying are the data that are used for online environment in the said first peer-to-peer relay network.
7. a plurality of peer-to-peer relay network of networks of support as claimed in claim 6, wherein:
The data of relaying are the data that are used for the hall environment in the said first peer-to-peer relay network.
8. a plurality of peer-to-peer relay network of networks of support as claimed in claim 7, wherein:
The data of relaying are the data that are used for environment chatroom, said hall in the said first peer-to-peer relay network.
9. a plurality of peer-to-peer relay network of networks of support as claimed in claim 6, wherein:
The data of relaying are the data that are used for game on line in the said first peer-to-peer relay network.
10. a plurality of peer-to-peer relay network of networks of support as claimed in claim 1 also comprise:
Another peer-to-peer relay network that comprises a plurality of peer systems;
Wherein, each peer system in said another peer-to-peer relay network is connected to a plurality of other peer systems that are less than or equal to the 3rd connection restriction in said another peer-to-peer relay network,
And
Wherein, in said another peer-to-peer relay network at least one peer system also in the said first peer-to-peer relay network.
11. a plurality of peer-to-peer relay network of networks of support as claimed in claim 10, wherein:
All peer systems in said another peer-to-peer relay network are not all in the said first peer-to-peer relay network.
12. a plurality of peer-to-peer relay network of networks of support as claimed in claim 1, wherein:
At least one peer system is the game console of launching network.
13. a plurality of peer-to-peer relay network of networks of support as claimed in claim 1, wherein:
At least two peer systems connect through the internet.
14. the method for a relay data in the peer-to-peer relay network comprises:
Foundation comprises the main peer-to-peer relay network of all peer systems in the said peer-to-peer relay network; Said main peer-to-peer relay network has sub-network in said main peer-to-peer relay network; Wherein, each peer system of sub-network also is the member of said main peer-to-peer relay network;
Foundation comprises the first peer-to-peer relay network of a plurality of first peer systems, and said a plurality of first peer systems are first sub-networks of said main peer-to-peer relay network, and the said first peer-to-peer relay network comprises the first particular peer system and the second particular peer system;
Foundation comprises the second peer-to-peer relay network of a plurality of second peer systems; Said a plurality of second peer system is second sub-network of said main peer-to-peer relay network; The said second peer-to-peer relay network comprises said first particular peer system and the said second particular peer system
Wherein, In the said first peer-to-peer relay network, the said first particular peer system has to the connection of the said second particular peer system, and in the said second peer-to-peer relay network; The connection that the said first particular peer system does not arrive the said second particular peer system
Wherein, the message that the peer-to-peer from the said first peer-to-peer relay network is addressed to another peer-to-peer in the said first peer-to-peer relay network is the private communication that only is relayed to the peer-to-peer in the said first peer-to-peer relay network, and
Wherein, be relayed to all peer-to-peers in the said main peer-to-peer relay network setting up the message that the peer-to-peer from the said first peer-to-peer relay network before said first sub-network is addressed to the peer-to-peer in the said main peer-to-peer relay network.
15. method as claimed in claim 14, wherein:
For each the peer-to-peer relay network under the said peer system, the corresponding corresponding set that connects restriction and form of said peer system storage by one or more relaying rule,
The maximum quantity of other peer system that connection restriction qualification permission peer system is connected in this peer-to-peer relay network, and
How the set regulation peer system of being made up of one or more relaying rule is relayed to other peer system that is connected to this peer system in this peer-to-peer relay network with data.
16. the peer system in the peer-to-peer relay network comprises:
Be used for setting up the parts of the main peer-to-peer relay network of all peer systems that comprise said peer-to-peer relay network; Said main peer-to-peer relay network has sub-network in said main peer-to-peer relay network; Wherein, each peer system of sub-network also is the member of said main peer-to-peer relay network;
Be used to set up the parts of the first peer-to-peer relay network that comprises a plurality of first peer systems; Said a plurality of first peer system is first sub-network of said main peer-to-peer relay network, and the said first peer-to-peer relay network comprises the first particular peer system and the second particular peer system; And
Be used to set up the parts of the second peer-to-peer relay network that comprises a plurality of second peer systems; Said a plurality of second peer system is second sub-network of said main peer-to-peer relay network; The said second peer-to-peer relay network comprises said first particular peer system and the said second particular peer system
Wherein, In the said first peer-to-peer relay network, the said first particular peer system has to the connection of the said second particular peer system, and in the said second peer-to-peer relay network; The connection that the said first particular peer system does not arrive the said second particular peer system
Wherein, the message that the peer-to-peer from the said first peer-to-peer relay network is addressed to another peer-to-peer in the said first peer-to-peer relay network is the private communication that only is relayed to the peer-to-peer in the said first peer-to-peer relay network, and
Wherein, be relayed to all peer-to-peers in the said main peer-to-peer relay network setting up the message that the peer-to-peer from the said first peer-to-peer relay network before said first sub-network is addressed to the peer-to-peer in the said main peer-to-peer relay network.
17. peer system as claimed in claim 16, wherein:
Said peer system in two or more peer-to-peer relay networks, and
For each the peer-to-peer relay network under the said peer system, said peer system has by one or more corresponding set that connects to form to other peer system.
18. peer system as claimed in claim 16, wherein:
For each the peer-to-peer relay network under the said peer system, the corresponding corresponding set that connects restriction and form of said peer system storage by one or more relaying rule,
The maximum quantity of other peer system that connection restriction qualification permission peer system is connected in this peer-to-peer relay network, and
How the set regulation peer system of being made up of one or more relaying rule is relayed to other peer system that is connected to this peer system in this peer-to-peer relay network with data.
CN2004800372333A 2003-10-20 2004-07-15 Multiple peer-to-peer relay network Expired - Fee Related CN1894928B (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US51309803P 2003-10-20 2003-10-20
US60/513,098 2003-10-20
US10/701,302 US8010633B2 (en) 2003-10-20 2003-11-03 Multiple peer-to-peer relay networks
US10/701,302 2003-11-03
PCT/US2004/022815 WO2005046169A1 (en) 2003-10-20 2004-07-15 Multiple peer-to-peer relay networks

Publications (2)

Publication Number Publication Date
CN1894928A CN1894928A (en) 2007-01-10
CN1894928B true CN1894928B (en) 2012-11-07

Family

ID=37598305

Family Applications (3)

Application Number Title Priority Date Filing Date
CN2004800372333A Expired - Fee Related CN1894928B (en) 2003-10-20 2004-07-15 Multiple peer-to-peer relay network
CN 200480037246 Pending CN1894929A (en) 2003-10-20 2004-07-15 Spectators in a peer-to peer relay network
CN2004800372136A Expired - Fee Related CN1894927B (en) 2003-10-20 2004-07-15 peer-to-peer relay network

Family Applications After (2)

Application Number Title Priority Date Filing Date
CN 200480037246 Pending CN1894929A (en) 2003-10-20 2004-07-15 Spectators in a peer-to peer relay network
CN2004800372136A Expired - Fee Related CN1894927B (en) 2003-10-20 2004-07-15 peer-to-peer relay network

Country Status (1)

Country Link
CN (3) CN1894928B (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101442482B (en) * 2007-11-13 2011-02-16 北京大学 Method and system for building distributed computing network based on feedback propagation
CN101640602B (en) * 2008-07-31 2012-07-25 Tcl集团股份有限公司 Management method for network television
CN105356982B (en) * 2015-12-08 2018-08-31 上海赛治信息技术有限公司 Node dual-port based on Fibre Channel frame field receives redundancy approach

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6487600B1 (en) * 1998-09-12 2002-11-26 Thomas W. Lynch System and method for supporting multimedia communications upon a dynamically configured member network
US20020184310A1 (en) * 2001-01-22 2002-12-05 Traversat Bernard A. Providing peer groups in a peer-to-peer environment

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6810528B1 (en) * 1999-12-03 2004-10-26 Sony Computer Entertainment America Inc. System and method for providing an on-line gaming experience through a CATV broadband network

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6487600B1 (en) * 1998-09-12 2002-11-26 Thomas W. Lynch System and method for supporting multimedia communications upon a dynamically configured member network
US20020184310A1 (en) * 2001-01-22 2002-12-05 Traversat Bernard A. Providing peer groups in a peer-to-peer environment

Also Published As

Publication number Publication date
CN1894928A (en) 2007-01-10
CN1894927A (en) 2007-01-10
CN1894927B (en) 2012-03-21
CN1894929A (en) 2007-01-10

Similar Documents

Publication Publication Date Title
US8396984B2 (en) Peer-to-peer relay network with decentralized control
US7392422B2 (en) Violations in a peer-to-peer relay network
US7685301B2 (en) Redundancy lists in a peer-to-peer relay network
US7596633B2 (en) Island recovery in a peer-to-peer relay network
US7610402B2 (en) Spectators in a peer-to-peer relay network
EP1690399B1 (en) Multiple peer-to-peer relay networks
CN1894928B (en) Multiple peer-to-peer relay network

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20121107