[go: up one dir, main page]

WO2016168909A1 - Communicating in a peer-to-peer network - Google Patents

Communicating in a peer-to-peer network Download PDF

Info

Publication number
WO2016168909A1
WO2016168909A1 PCT/CA2016/000104 CA2016000104W WO2016168909A1 WO 2016168909 A1 WO2016168909 A1 WO 2016168909A1 CA 2016000104 W CA2016000104 W CA 2016000104W WO 2016168909 A1 WO2016168909 A1 WO 2016168909A1
Authority
WO
WIPO (PCT)
Prior art keywords
peer
nodes
connectivity information
subset
node
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.)
Ceased
Application number
PCT/CA2016/000104
Other languages
French (fr)
Inventor
Jakob PETSOVITS
Lin Yang
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.)
Topology Lp
Original Assignee
Topology Lp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Topology Lp filed Critical Topology Lp
Publication of WO2016168909A1 publication Critical patent/WO2016168909A1/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/12Arrangements for remote connection or disconnection of substations or of equipment thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1044Group management mechanisms 
    • H04L67/1053Group management mechanisms  with pre-configuration of logical or physical connections with a determined number of other peers

Definitions

  • This specification relates to communicating in a peer-to-peer network.
  • Peer-to-peer networks typically include multiple peer devices that communicate with each other in a computing environment.
  • Peer-to-peer networks have been used, for example, for file sharing applications and instant messaging applications.
  • Peers may be both suppliers and consumers of resources in the network architecture.
  • FIG. 1 is a block diagram showing an example peer-to-peer network.
  • FIGS. 2A, 2B, 2C and 2D are flow diagrams showing an example process for communicating in a peer-to-peer network.
  • FIG. 2A shows an example discovery sub- process
  • FIG. 2B shows an example maintenance sub-process
  • FIG. 2C shows an example signaling sub-process
  • FIG. 2D shows an example syncing sub-process.
  • a secure, peer-to-peer platform is used for sharing and synchronizing data between a user's devices and one or more other's devices (e.g. friends' devices).
  • the peer-to-peer platform can be implemented, for example, as a network of computing devices that communicate without using servers.
  • the peer-to-peer network is used for conducting voice calls, video calls, or other types of sessions between nodes in the peer-to-peer network.
  • the peer-to-peer network is used for syncing data among a user's devices, sharing data among devices of different users, and performing other types of data- syncing and data-sharing between nodes in the peer-to-peer network.
  • FIG. 1 is a block diagram showing an example peer-to-peer network 100.
  • the example peer-to-peer network 100 includes a first node 110, a second node 120, and a third node 130 that communicate with each other.
  • a peer-to-peer network may include a different number of nodes (e.g., tens, hundreds, thousands, etc.) than are shown in the example in FIG. 1.
  • a peer-to-peer network may include additional or different features, and the components in a peer-to-peer network may be configured to operate as shown or in another manner.
  • a distributed database e.g., a distributed hash table 140 or another type of distributed database
  • the distributed database can be sotred in a distributed format, across the local memories of some or all of the nodes in the peer-to-peer network 100 (e.g., the nodes 110, 120, 130 shown in FIG. 1 and potentially other nodes in the wide area network 103 or another network).
  • each node has a communication interface, a data processing apparatus, and memory.
  • the communication interface allows communication with other nodes over a communication link, such as, for example, the communication links 160, 161.
  • Each node can be configured to maintain at least some connectivity information of the distributed database in its memory and to access connectivity information from the other nodes. For example, to access connectivity information from other nodes, a node may send a request for connectivity information over the communication links 160, 161 and receive a response from another node that stores the requested connectivity information.
  • the nodes are configured to communicate in the peer-to-peer network 100 by performing one or more of the processes or operations shown in FIGS. 2A-2D, or by performing other types of processes and operations.
  • the nodes 110, 120, 130 operate within two distinct network environments. As shown, the first node 110 and the second node 120 operate in a local network 102, and the third node 130 operates in a remote network 104.
  • the nodes 110, 120, 130 have access to the Internet or another wide area network 103.
  • Each of the example networks shown in FIG. 1 may include clients and servers.
  • the nodes 110, 120 may operate as clients in the local network 102
  • the third node 130 may operate as a client in the remote network 104.
  • the servers for the local network 102, the wide area network 103, and the remote network 104 are not shown in FIG. 1.
  • client and server may arise, for example, by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
  • a server transmits data to a client device, and data generated at the client device can be received from the client device at the server.
  • a network such as the local network 102, wide area network 103, and remote network 104, can include any topology and any hardware to effectuate communications between devices.
  • a network can include, for example, routers, switches, hubs, gateways, etc. for routing communications. Communications along a network can use a protocol, such as the Transmission Control Protocol and Internet Protocol
  • a network can include server applications that form a client-server relationship with one or more client applications on devices, such as the first node 110, second node 120, and third node 130.
  • a network can include one or more subnetworks and can interface with another network. Connections between devices or hardware in a network can include wired connections, wireless connections, or a combination thereof.
  • the nodes 110, 120, 130 each have
  • the nodes 110, 120, 130 can each be implemented in various systems or devices, such as, for example, laptops, desktops, workstations, smartphones, tablets, personal digital assistants, and other types of computer systems.
  • the memory of the example nodes 110, 120, 130 can include any form of tangible, non-transitory memory, such as random access memory (RAM), erasable programmable read-only memory (EPROM), electrically EPROM (EEPROM), flash memory, a magnetic disk, a hard disk, or another type of storage medium.
  • the memory can store instructions (e.g., computer code, a computer program, etc.) associated with an operating system, computer applications, and other resources.
  • the memory stores computer-readable instructions for a computer program (e.g., software application, script, program, function, executable, or other modules) that is interpreted or executed by the respective data processing apparatus of the example nodes 110, 120, 130.
  • the computer-readable instructions can be configured to perform one or more of the operations shown in any of FIGS. 2A-2D.
  • a computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, object, or other unit suitable for use in a computing
  • a computer program may, but need not, correspond to a file in a file system.
  • a program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub-programs, or portions of code).
  • the memories of the nodes 110, 120, 130 can also store application data and data objects that can be interpreted by one or more applications or virtual machines running on the respective node.
  • the example nodes 110, 120, 130 can be
  • preprogrammed or they can be programmed (and reprogrammed), by loading a program from another source (e.g., from a DVD-ROM, from a removable memory device, from a remote server, from a data network or in another manner).
  • another source e.g., from a DVD-ROM, from a removable memory device, from a remote server, from a data network or in another manner.
  • the data processing apparatus of the example nodes 110, 120, 130 can execute instructions, for example, to generate output data based on data inputs.
  • the data processing apparatus can run computer programs by executing or interpreting the software, scripts, programs, functions, executables, or other modules stored in the respective memory of nodes.
  • the data processing apparatus may perform one or more of the operations shown in any of FIGS. 2A-2D.
  • a data processing apparatus may include various kinds of apparatus, devices, and machines for processing data, including by way of example, a programmable processor, a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), special purpose logic circuitry, or multiple ones, or combinations, of the foregoing.
  • the data processing apparatus can also include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or a combination of one or more of them.
  • the data processing apparatus and execution environment can realize various computing model infrastructures, such as web services, distributed computing and grid computing infrastructures.
  • the data processing apparatus includes multiple processor devices such as, for example, one or more main processors and one or more co-processors.
  • the data processing apparatus may include a main processor that can delegate certain computational tasks to a co-processor, which may be configured to perform the computational tasks more efficiently than the main processor or in parallel with other computational tasks performed by other processor devices.
  • processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computing device.
  • the data processing apparatus coordinates or controls operation of other components of the example nodes 110, 120, 130, such as, for example, user interfaces, communication interfaces, peripheral devices and possibly other components.
  • one or more interfaces can be used to communicate with other nodes or devices in the peer-to-peer network 100 (e.g., through local network 102, the wide area network 103, and remote network 104], to communicate with peripheral devices that may be connected to the system or device, or the like.
  • an interface includes a wireless
  • the interface includes a wired communication interface (e.g., USB, Ethernet] that can be connected to one or more input/output devices, such as, for example, a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, for example, through a network adapter.
  • wireless communication e.g., Bluetooth, Wi-Fi, Near Field Communication [NFC], GSM voice calls, SMS, EMS, or MMS messaging, wireless standards (e.g., CDMA, TDMA, PDC, WCDMA, CDMA2000, GPRS) among others.
  • wireless standards e.g., CDMA, TDMA, PDC, WCDMA, CDMA2000, GPRS
  • the interface includes a wired communication interface (e.g., USB, Ethernet] that can be connected to one or more input/output devices, such as, for example, a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, for example, through a network adapt
  • each of the systems or devices of the example nodes 110, 120, 130 may have a display device, e.g., an LCD (liquid crystal display] screen for displaying information to the user and a keyboard and a pointing device, e.g., touch screen, stylus, mouse, etc. by which the user can provide input to the node.
  • a display device e.g., an LCD (liquid crystal display] screen for displaying information to the user
  • a keyboard and a pointing device e.g., touch screen, stylus, mouse, etc. by which the user can provide input to the node.
  • Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input.
  • the first node 110, second node 120, and third node 130 may communicate with each other through peer-to-peer connections without the use of servers, in particular, without the use of servers that operate the local network 102, servers that operate the remote network 104, servers that operate the wide area network 103, or other servers.
  • the nodes 110, 120, 130 may send network packets that are addressed directly to the other nodes in the peer-to-peer network 100.
  • the network packets may be communicated through routers and other networking hardware systems, without addressing the network packets to a server or to any other specific endpoint, other than the respective nodes to which the network packets are addressed.
  • the nodes 110, 120, 130 are on an Internet Protocol (IP) network, they have respective IP addresses; when a node communicates with another node in the peer-to-peer network 100, the node sends IP packets addressed to the other node's IP address, rather than sending network packets addressed to a server's IP address expecting the server to relay the packets.
  • IP Internet Protocol
  • the peer-to-peer network 100 defines multiple distinct types of communication channels for communication between nodes. For example, the peer-to-peer network 100 may differentiate between communication channels used for signaling and "upgraded" channels used for other types of
  • Each type of channel may be configured or optimized for a certain type of communication or application. For instance, signaling channels may optimized for reliability, to reliably exchange data between peers but not necessarily in the most direct, efficient, or fast way; whereas “upgraded" channels may be optimized for something other than reliability depending on the context, such as, for example, high bandwidth, low latency, etc.
  • the first node 110 can communicate with the second node 120 over a local peer-to-peer (“P2P") communication link 160, and the first node 110 can communicate with the third node 130 over a remote P2P communication link 161.
  • P2P communication links 160 and 161 allow the first node 110 to communicate with the second node 120 and the third node 130 over a network (e.g., local network 102, the wide area network 103, and remote network 104) without sending data through, or otherwise using, Internet servers, local network servers, or other types of servers.
  • the nodes may have additional or different communication links or connections.
  • the communication links to the first node 110, second node 120, and third node 130 shown in FIG. 1 can define communication links to other nodes in the peer-to-peer network 100, which may include both local connections and connections across the Internet.
  • the peer-to-peer network 100 may include additional or different communication links.
  • Each of the example nodes 110, 120, 130 shown in FIG. 1 includes one or more agents, one or more stores, and one or more connections to one or more other nodes.
  • the nodes may include additional or different features.
  • the first node 110 includes a first agent 111.
  • the second node 120 includes a second agent 121.
  • the third node 130 includes a third agent 131.
  • the example agents 111, 121, 131 on the nodes 110, 120, 130, respectively, shown in FIG. 1 can include computer-readable instructions stored in memory that when executed by the data processing apparatus of the respective node 110, 120, 130 perform operations as described below, such as, for example, the operations shown in FIGS. 2A-2D.
  • the example agents 111, 121, 131 on the nodes 110, 120, 130, respectively, can further access data stored in memory of the respective node 110, 120, 130 or another node, which may include connectivity information for other nodes.
  • the agents 111, 121, 131 on the nodes 110, 120, 130, respectively, can provide services, such as, for example, connecting to the peer-to-peer network 100 and discovering other nodes in the peer-to-peer network 100.
  • the agents 111, 121, 131 on the nodes 110, 120, 130, respectively, may maintain in memory and access a local store of discovered peers (e.g., a routing table) that forms at least a part of a distributed database, which in this example is a distributed hash table (DHT) 140.
  • the local store of discovered peers may include connectivity information for communicating between nodes.
  • Each of the example agents 111, 121, 131 may be a topology service agent.
  • the nodes may include additional or different agents.
  • the stores on the first node 110, second node 120, and third node 130 shown in FIG. 1 each contain related data and have visibility information that determines which other nodes the data will be shared with in the peer-to-peer network 100.
  • the stores contain data stored in the memory of the respective example nodes 110, 120, 130.
  • the data in the stores may be stored in a data structure, such as a file, a table, an array, etc.
  • the first node 110 has a first store 112, a second store 114, a third store 116, and a fourth store 118.
  • the stores 112, 114, 116, and 118 have visibility levels, such as "Untrusted Shareable,” “Trusted Shareable,” “Self Sharable,” and "Device Local,” respectively.
  • the Untrusted Shareable store (e.g., the first store 112) contains information 113 that can be shared with trusted or untrusted nodes, such as, for example, a public identity;
  • the Trusted Shareable store (e.g., the second store 114) contains information 115 that can be shared only with trusted nodes, such as, for example, a calendar of weekly poker games;
  • the Self Sharable store (e.g., the third store 116) contains information 117 that can be shared only with a user's own trusted nodes, such as, for example, private photos;
  • the Device Local store (e.g., the fourth store 118) contains information 119 that relates to the local device, such as, for example, network details.
  • the other nodes in the peer-to-peer network 100 may include the same, additional or different types of stores and visibility levels for their respective stores.
  • the second node 120 has a first store 122 (e.g. Untrusted Shareable store), a second store 124 (e.g. Trusted Shareable store), a third store 126 (e.g., Self Shareable store), and a fourth store 128 (e.g., Device Local store).
  • the third node 130 has a first store 132 (e.g. Untrusted Shareable store), a second store 134 (e.g. Trusted Shareable store), a third store 136 (e.g., Self Shareable store), and a fourth store 138 (e.g., Device Local store).
  • nodes in the peer-to-peer network 100 can self-organize into the DHT 140 that spans the Internet or another wide access network (or is otherwise broadly accessible) and is used to discover remote nodes.
  • the example DHT 140 includes the local store of discovered peers (e.g., routing tables) of the various nodes in the peer-to-peer network 100, such as the local store of discovered peers stored by the agents 111, 121, 131. Additional nodes with local stores of discovered peers that form the example DHT 140 may be included in the example peer-to-peer network 100.
  • the local store of discovered peers can have logical connections to form the DHT 140, such as logical connection 151 to the agent 111 of the first node 110, logical connection 152 to the agent 121 of the second node 120, logical connection 153 to the agent 131 of the third node 130, and the like.
  • the DHT 140 (or another type of distributed database) is implemented on a set of dedicated nodes that are not otherwise part of the peer-to-peer network 100.
  • the dedicated nodes may be used only for lookups of other nodes' connectivity information stored in the DHT.
  • one or more of the nodes that implements the DHT 140 are used for lookups and for other types of operations and communications in the peer-to-peer network 100.
  • multiple nodes on the same local network can discover each other and communicate directly, without communicating through the Internet.
  • Nodes on different networks e.g., the first node 110 and the third node 130
  • the example peer-to-peer network 100 may include features and advantages that improve operation and communication among the nodes. For instance, peers can generally communicate with a user identity associated with connectivity information for several devices owned by the user. As another example, in some instances, mechanisms for discovering peers without servers (“Local and Remote Discovery”) are separate from the mechanism to send data among peers (“Signaling”), which is again separate from upgraded channels providing, e.g., voice, video, and efficient firewall- traversing data communication.
  • the example peer-to-peer network 100 can use identity, discovery, signaling, and other protocols.
  • each user on the peer- to-peer network 100 can have a user identity.
  • the use identity can be or include a public/private key pair (e.g., ed25519 public/private key pair, etc.) or another type of identifier.
  • An "Identity Store” component can include a number of data stores that are synchronized to peers. Each store can have a visibility level that indicates who it will be shared with (e.g., device-local, all devices of the user, friends, public, etc.).
  • information about each device owned by a user is stored in a data store.
  • Each device can be identified by a string or another identifier (e.g., a cryptographic identity).
  • the example peer-to-peer network 100 can use a distributed database (e.g., the DHT 140 or another widely-available distributed database) to store connectivity information for a user.
  • a distributed database e.g., the DHT 140 or another widely-available distributed database
  • the connectivity information can be implemented as a set of DNS records.
  • the BitTorrent Mainline DHT is an example of a distributed database that is widely-available on the Internet.
  • the DHT 140 is used for retrieving data, and the Mainline DHT can be replaced with an alternative DHT or other distributed database.
  • the DHT 140 is maintained by at least a subset of the nodes in the peer-to-peer network 100.
  • the third node 130 may store a portion of the DHT 140 in its local memory while other nodes (not shown) also store at least portions of the DHT 140.
  • the third node 130 can send to one of the other nodes that maintain the DHT 140 a request identifying a user identity associated with nodes 110, 120.
  • the first and second nodes 110, 120 may belong to a single user for which the third node 130 does not have connectivity information.
  • the third node 130 receives (e.g., from one of the other nodes that maintain the DHT 140) connectivity information for the first and second nodes 110, 120, and the third node 130 uses the received connectivity information to establish communication with the first node 110 or the second node 120 over the communication link 161.
  • the example peer-to-peer network 100 uses signaling connections. For instance, after a node obtains connectivity information from the distributed database, a signaling server may connect to some peers as "directly" as possible. This connection can be cryptographically verified and secure. This signaling connection can be used, for example, to synchronize data stores, bootstrap voice, video, and efficient data communication channels (e.g., using WebRTC), and for other operations.
  • signaling connections For instance, after a node obtains connectivity information from the distributed database, a signaling server may connect to some peers as "directly" as possible. This connection can be cryptographically verified and secure. This signaling connection can be used, for example, to synchronize data stores, bootstrap voice, video, and efficient data communication channels (e.g., using WebRTC), and for other operations.
  • groups are implemented as a parallel concept to users.
  • the distributed database can store membership information for the users in a group.
  • the distributed database can directly store connectivity information for devices of users in a group. With this, devices in the peer-to-peer network 100 could access a data store shared amongst a group without specifically knowing the full membership of the group.
  • FIGS. 2A-2D are flow diagrams showing an example process for
  • the flow diagram 200A in FIG. 2A shows an example discovery sub-process 202; the flow diagram 200B in FIG. 2B shows an example maintenance sub-process 204; the flow diagram 200C in FIG. 2C shows an example signaling sub-process 206; and the flow diagram 200D in FIG. 2D shows an example syncing sub-process 208.
  • the example operations and sub-processes shown in FIGS. 2A-2D can be executed, for example, in the peer-to-peer network 100 shown in FIG. 1 or in another type of peer-to-peer network.
  • a peer-to-peer network may perform additional or different operations or sub-processes, and the operations and sub- processes shown in FIGS. 2A-2D can be performed in the order shown or in another order.
  • FIGS. 2A-2D The example operations shown in FIGS. 2A-2D are performed by devices belonging to four users: a device 210 of a first user ("Alice"), two devices 221, 222 of a second user (“Bob”] 220, a device 230 of a third user (“Carol”) and a device 240 of a fourth user ("Dan”).
  • the second user 220 has two devices on the peer-to-peer network, and the first, third and fourth users each have a single device on the peer-to- peer network.
  • the second user's first device 221 is an Apple iPhone (of the type available from Apple, Inc.
  • a peer-to-peer network may include additional users, and each user may have additional or different types of devices on the network (e.g., smartphones, laptops, smart watches, installed smart devices, desktop computers, tablets, etc.). Further, the operations performed in FIGS. 2A-2D may be performed with another number of devices or users.
  • the connectivity information can indicate a subset of the nodes associated with a single user identity, such as the first device 221 and the second device 222 that are associated with the second user 220.
  • the connectivity information is stored in a distributed database, such as, for example, a distributed hash table (DHT) 250, that is accessible to the nodes.
  • DHT distributed hash table
  • the connectivity information can be used to provide communication between nodes associated with distinct user identities or to provide communication between nodes associated with the same user identity. Additional details are described below with respect to FIGS. 2A-2D.
  • the example devices 210, 221, 222, 230, 240 shown in FIGS. 2A-2D may be the same as or similar to one or more of the example nodes 110, 120, 130 shown in FIG. 1.
  • the devices each include a memory, a data processing apparatus, and an interface.
  • the devices shown in FIGS. 2A-2D may include one or more agents, one or more stores, and one or more connections to other nodes, etc. In some cases, the operations shown in FIGS. 2A-2D are performed by agents operating on the respective devices.
  • the first user wants to find the second user (“Bob"), for example, to send him data.
  • neither the first device 221 nor the second device 222 is on the same local network as the first user's device 210.
  • the first user's device 210 does not contain connectivity information of the second user 220 in its local store of discovered peers, the first user's device 210 sends a message to other nodes known by the first user's device 210; another node in the peer-to-peer network receives the message and uses the DHT 250 to find nodes that know the location of the first device 221 or the second device 222 (or both).
  • FIG. 1 the first user's device 210 does not contain connectivity information of the second user 220 in its local store of discovered peers
  • the connectivity information stored in the DHT 250 directs the first user's device 210 to the third user's device 230 and the fourth user's device 240, which have information about the locations of the second user's devices (the first device 221 and the second device 222].
  • FIG. 2A Operations of the example discovery sub-process 202 are shown in FIG. 2A.
  • the first user's device 210 looks up the second user 220 in its local store of discovered peers on the first user's device 210, and the lookup fails.
  • the first user's device 210 requests a public key of the second user 220 from the DHT 250.
  • the DHT 250 directs the request to the third user's device 230.
  • the third user's device 230 sends the first user's device 210 connectivity information (e.g., a list of host/port NDS records) for the first device 221 and the second device 222.
  • the DHT 250 also directs the request to the fourth user's device 240.
  • the fourth user's device 240 sends the first user's device 210 connectivity information (e.g., a list of host/port DNS records] for the first device 221 and the second device 222.
  • the response from the fourth user's device 240 is too slow because the first user's device 210 already received the information from the third user's device 230.
  • the slow response of the fourth user's device 240 is potentially discarded or perhaps merged with the list sent by the third user's device 230.
  • the peer-to-peer network includes a set of DHT nodes (which may include dedicated DHT nodes) that form the DHT 250.
  • the first user's device 210 may look up the second user's (Bob's) connectivity information in the DHT 250 by asking any of the DHT nodes (e.g., in some cases, a randomly-selected DHT node) to lookup Bob's public key. If the DHT node contacted by the first user's device 210 has information stored under Bob's key, it returns the information to the first user's device 210.
  • the DHT node contacted by the first user's device 210 does not have information stored under Bob's key, it tells the first user's device 210 to ask another DHT node that might have the requested information. The process can be iterated, for example, until either the first user's device 210 gets the requested information (Bob's public key) or there are no remaining DHT nodes that are likely to have the requested information.
  • a DHT node instructs the first user's device 210 to ask the third user's device 230 and the fourth user's device 240 because the DHT node does not have the requested information but knows of the third and fourth user's devices 230, 240.
  • both the third and fourth user's devices 230, 240 have the requested information, so they both provide the list of host/port DNS records for Bob's devices.
  • the respective devices periodically store their location info in the DHT 250, e.g., in one or more local stores of discovered peers of one or more nodes in the peer-to-peer network.
  • the location information for the second user's devices 221, 222 becomes stored in the local stores of discovered peers in the third user's device 230 and the fourth user's device 240.
  • the devices also periodically tell their local network about their identity and location. In this case, the second user's devices 221, 222 are on the same local network.
  • the second user's first device 221 updates its location data with its current connectivity information (e.g., host/port information) through the DHT 250.
  • the DHT 250 directs the connectivity information of the second user's first device 221 to be stored in the local store of discovered peers of the third user's device 230.
  • the DHT 250 directs the connectivity information of the second user's first device 221 to be stored in the local store of discovered peers of the fourth user's device 240.
  • the second user's second device 222 updates its location data with its current connectivity information (e.g., host/port) through the DHT 250.
  • the DHT 250 directs the connectivity information of the second device 222 to be stored in the local store of discovered peers of the third user's device 230.
  • the DHT 250 directs the connectivity information of the second device 222 to be stored in the local store of discovered peers of the fourth user's device 240.
  • the second user's devices 221, 222 communicate with each other using local UDP multicasts with the connectivity information (e.g., host/port) of the second user's devices 221, 222.
  • the second user's devices 221, 222 each store connectivity information in the DHT 250 by asking a DHT node (e.g., a randomly- selected DHT node) for a location to store the connectivity information (at 267 and 270). Either the DHT node considers itself responsible for the connectivity information and stores locally, or the DHT node supplies a list of other DHT nodes to try. The second user's devices 221, 222 then ask the other DHT nodes and may repeat until finding enough DHT nodes to store the connectivity information, or until running out of DHT nodes to ask.
  • a DHT node e.g., a randomly- selected DHT node
  • the second user's devices 221, 222 then ask the other DHT nodes and may repeat until finding enough DHT nodes to store the connectivity information, or until running out of DHT nodes to ask.
  • the first user's device 210 has location information for the second user's devices 221, 222, and the first user's device 210 tries to connect to either of the second user's devices 221, 222.
  • the first user's device 210 makes parallel tries to both of the second user's devices 221, 222 because the devices 221, 222 both had location info stored in the DHT 250.
  • the first user's device 210 successfully connects to the second user's first device 221, and establishes a signaling connection.
  • the first user's device 210 asks the second user's first device 221 for the data stored in one of the stores (e.g., "Store #1") on the second user's first device 221.
  • the second user's first device 221 verifies that first user is allowed to see the data (e.g., perhaps the first user is a friend of the second user, and Store #1 contains data shared with trusted friends].
  • the second user's first device 221 sends the contents of the store to the first user's device 210. In some cases, the second user's first device 221 sends only updates, for instance, if the first user's device 210 already has some of the contents of Store #1. In some instances, the first user's device 210 is not allowed to see the requested data, and the request fails.
  • FIG. 2C Operations of the example signaling sub-process 206 are shown in FIG. 2C.
  • the first user's device 210 attempts to setup a signaling connection with the second user's second device 222 but cannot establish connectivity.
  • the first user's device 210 sets up a signaling connection with the second user's first device 221.
  • a P2P signaling connection is established between the first user's device 210 and the second user's first device 221.
  • the first user's device 210 requests the contents of Store #1 on the first device 221.
  • the second user's first device 221 determines that first user is allowed to see the contents of Store #1.
  • the second user's first device 221 sends the first user's device 210 data from Store #1.
  • the communication illustrated in FIG. 2C may be performed according to a protocol, such as TCP/IP, and the communications may be routed using, e.g., gateways, routers, switches, hubs, etc.
  • devices are synced over the peer- to-peer network.
  • the second user 220 stores new information in Store #1 on the second user's second device 222. Because the second user's devices 221, 222 are connected and belong to the same user, and the data is not designated as local to the second device 222. In this example, the data is sent to the first device 221.
  • the second user's first device 221 Because the second user's first device 221 has a signaling connection to the first user's device 210 and because Store #1 of the second user's first device 221 is shared with the first user, the second user's first device 221 also sends the new update to the first user's device 210.
  • FIG. 2D Operations of the example sync sub-process 208 are shown in FIG. 2D.
  • a new profile picture is added by the second user 220 to the second user's second device 222.
  • the second user's second device 222 updates the profile picture data in Store #1 of the second user's second device 222.
  • the second user's second device 222 sends the new data for Store #1 to the second user's first device 221.
  • the second user's first device 221 informs the first user's device 210 that the second user's first device 221 has the new data in Store #1.
  • the communication illustrated in FIG. 2D may be performed according to a protocol, such as TCP/IP, and the communications may be routed using, e.g., gateways, routers, switches, hubs, etc. without using a server.
  • a peer-to-peer network uses a distributed database, such as a distributed hash table, to store and maintain connectivity information of nodes of the peer-to-peer network.
  • the connectivity information can be used to establish communications between various nodes.
  • At least a portion of a distributed database that contains connectivity information for a plurality of nodes in a peer-to-peer network is stored in a local memory of a first node in the peer-to-peer network.
  • the distributed database is maintained by a first subset of the plurality of nodes.
  • the request identifies a user identity associated with a second subset of the plurality of nodes in the peer-to-peer network.
  • the first node receives a response to the request from a remote node in the first subset.
  • the response includes connectivity information for the second subset of the plurality of nodes.
  • the information for the second subset is used by the first node to establish communication with at least one of the nodes in the second subset.
  • the communication is established and conducted, for example, over a communication link coupled to the communication interface of the first node.
  • the distributed database can be a distributed hash table.
  • the first node stores the connectivity information for the second subset in the local memory of the first node. After using the connectivity information for the second subset to establish communication with a particular node in the second subset, the first node can communicate with the particular node independent of servers.
  • the first node can include an agent, a store and connections.
  • the store can define distinct visibility levels for respective data sets in the store.
  • connectivity information is defined for connections between nodes in a peer-to-peer network.
  • the connectivity information indicates a subset of the nodes associated with a single user identity.
  • Connectivity information for the connections is stored in a distributed database that is accessible to the nodes.
  • the connectivity information is used to provide communication over a communication link between nodes associated with distinct user identities.
  • the connectivity information for connections between the nodes can be updated in the distributed database.
  • the connectivity information can be used to synchronize data across the subset of the nodes associated with the single user identity.
  • the connectivity information can be used to synchronize data across nodes associated with distinct user identities.
  • the connectivity information can be used to provide voice calls or video calls over the communication link between the nodes.
  • the connectivity information can be used to provide communication over the communication link between the nodes independent of servers.
  • Each node can include an agent, a store and connections, and the distributed database can include a distributed hash table.
  • the store for each node can define distinct visibility levels for respective data sets in the store.
  • the connectivity information for each node can include at least one peer-to-peer connection with a node in a local network and at least one peer-to- peer connections with a node in a remote network.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

In some aspects, a peer-to-peer network includes connectivity information for nodes of the peer-to-peer network. The connectivity information can be stored, for example, in a distributed database that is accessible to the nodes. The connectivity information can be used to provide communication between nodes.

Description

Communicating in a Peer-to-peer Network
CROSS-REFERENCE TO RELATED APPLICATIONS
[1] This application claims the benefit of U.S. Provisional Application
No. 62/150,129, filed April 20, 2015, which is incorporated herein by reference.
BACKGROUND
[2] This specification relates to communicating in a peer-to-peer network.
[3] Peer-to-peer networks typically include multiple peer devices that communicate with each other in a computing environment. Peer-to-peer networks have been used, for example, for file sharing applications and instant messaging applications. Peers may be both suppliers and consumers of resources in the network architecture.
DESCRIPTION OF DRAWINGS
[4] FIG. 1 is a block diagram showing an example peer-to-peer network.
[5] FIGS. 2A, 2B, 2C and 2D are flow diagrams showing an example process for communicating in a peer-to-peer network. FIG. 2A shows an example discovery sub- process; FIG. 2B shows an example maintenance sub-process; FIG. 2C shows an example signaling sub-process; FIG. 2D shows an example syncing sub-process.
[6] Like reference symbols in the various drawings indicate like elements.
DETAILED DESCRIPTION
[7] In some aspects of what is described here, a secure, peer-to-peer platform is used for sharing and synchronizing data between a user's devices and one or more other's devices (e.g. friends' devices). The peer-to-peer platform can be implemented, for example, as a network of computing devices that communicate without using servers. In some cases, the peer-to-peer network is used for conducting voice calls, video calls, or other types of sessions between nodes in the peer-to-peer network. In some cases, the peer-to-peer network is used for syncing data among a user's devices, sharing data among devices of different users, and performing other types of data- syncing and data-sharing between nodes in the peer-to-peer network.
[8] FIG. 1 is a block diagram showing an example peer-to-peer network 100. The example peer-to-peer network 100 includes a first node 110, a second node 120, and a third node 130 that communicate with each other. A peer-to-peer network may include a different number of nodes (e.g., tens, hundreds, thousands, etc.) than are shown in the example in FIG. 1. Further, a peer-to-peer network may include additional or different features, and the components in a peer-to-peer network may be configured to operate as shown or in another manner.
[9] In the example peer-to-peer network 100 shown in FIG. 1, the nodes 110, 120,
130 are communicatively coupled to communication links 160 and 161, and the nodes can communicate with each other (e.g., to conduct voice calls, video calls, share files, or communication in another manner) without operation of a server. A distributed database (e.g., a distributed hash table 140 or another type of distributed database) that stores connectivity information is accessible to the nodes. For example, the distributed database can be sotred in a distributed format, across the local memories of some or all of the nodes in the peer-to-peer network 100 (e.g., the nodes 110, 120, 130 shown in FIG. 1 and potentially other nodes in the wide area network 103 or another network).
[10] In the example shown in FIG. 1, each node has a communication interface, a data processing apparatus, and memory. The communication interface allows communication with other nodes over a communication link, such as, for example, the communication links 160, 161. Each node can be configured to maintain at least some connectivity information of the distributed database in its memory and to access connectivity information from the other nodes. For example, to access connectivity information from other nodes, a node may send a request for connectivity information over the communication links 160, 161 and receive a response from another node that stores the requested connectivity information. In some instances, the nodes are configured to communicate in the peer-to-peer network 100 by performing one or more of the processes or operations shown in FIGS. 2A-2D, or by performing other types of processes and operations.
[11] In the example shown in FIG. 1, the nodes 110, 120, 130 operate within two distinct network environments. As shown, the first node 110 and the second node 120 operate in a local network 102, and the third node 130 operates in a remote network 104. The nodes 110, 120, 130 have access to the Internet or another wide area network 103. Each of the example networks shown in FIG. 1 (the local network 102, the wide area network 103, and the remote network 104) may include clients and servers. For example, the nodes 110, 120 may operate as clients in the local network 102, and the third node 130 may operate as a client in the remote network 104. The servers for the local network 102, the wide area network 103, and the remote network 104 are not shown in FIG. 1. The relationship of client and server may arise, for example, by virtue of computer programs running on the respective computers and having a client-server relationship to each other. In some implementations, a server transmits data to a client device, and data generated at the client device can be received from the client device at the server.
[12] A network, such as the local network 102, wide area network 103, and remote network 104, can include any topology and any hardware to effectuate communications between devices. A network can include, for example, routers, switches, hubs, gateways, etc. for routing communications. Communications along a network can use a protocol, such as the Transmission Control Protocol and Internet Protocol
(TCP/IP), the User Datagram Protocol and IP (UDP/IP), or another protocol or combination of protocols. Additionally, a network can include server applications that form a client-server relationship with one or more client applications on devices, such as the first node 110, second node 120, and third node 130. A network can include one or more subnetworks and can interface with another network. Connections between devices or hardware in a network can include wired connections, wireless connections, or a combination thereof.
[13] In the example shown in FIG. 1, the nodes 110, 120, 130 each have
computational resources (e.g., hardware, software, firmware] that can be used to communicate with other nodes and execute protocols in the peer-to-peer network 100. In some cases, the nodes 110, 120, 130 can each be implemented in various systems or devices, such as, for example, laptops, desktops, workstations, smartphones, tablets, personal digital assistants, and other types of computer systems.
[14] The memory of the example nodes 110, 120, 130 can include any form of tangible, non-transitory memory, such as random access memory (RAM), erasable programmable read-only memory (EPROM), electrically EPROM (EEPROM), flash memory, a magnetic disk, a hard disk, or another type of storage medium. The memory can store instructions (e.g., computer code, a computer program, etc.) associated with an operating system, computer applications, and other resources. In some cases, the memory stores computer-readable instructions for a computer program (e.g., software application, script, program, function, executable, or other modules) that is interpreted or executed by the respective data processing apparatus of the example nodes 110, 120, 130. For example, the computer-readable instructions can be configured to perform one or more of the operations shown in any of FIGS. 2A-2D.
[15] A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, object, or other unit suitable for use in a computing
environment. A computer program may, but need not, correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub-programs, or portions of code).
[16] The memories of the nodes 110, 120, 130 can also store application data and data objects that can be interpreted by one or more applications or virtual machines running on the respective node. The example nodes 110, 120, 130 can be
preprogrammed, or they can be programmed (and reprogrammed), by loading a program from another source (e.g., from a DVD-ROM, from a removable memory device, from a remote server, from a data network or in another manner).
[17] The data processing apparatus of the example nodes 110, 120, 130 can execute instructions, for example, to generate output data based on data inputs. For example, the data processing apparatus can run computer programs by executing or interpreting the software, scripts, programs, functions, executables, or other modules stored in the respective memory of nodes. In some instances, the data processing apparatus may perform one or more of the operations shown in any of FIGS. 2A-2D.
[18] A data processing apparatus may include various kinds of apparatus, devices, and machines for processing data, including by way of example, a programmable processor, a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), special purpose logic circuitry, or multiple ones, or combinations, of the foregoing. The data processing apparatus can also include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or a combination of one or more of them. The data processing apparatus and execution environment can realize various computing model infrastructures, such as web services, distributed computing and grid computing infrastructures. In some cases, the data processing apparatus includes multiple processor devices such as, for example, one or more main processors and one or more co-processors. For instance, the data processing apparatus may include a main processor that can delegate certain computational tasks to a co-processor, which may be configured to perform the computational tasks more efficiently than the main processor or in parallel with other computational tasks performed by other processor devices. Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computing device. In some instances, the data processing apparatus coordinates or controls operation of other components of the example nodes 110, 120, 130, such as, for example, user interfaces, communication interfaces, peripheral devices and possibly other components.
[19] In each of the example nodes 110, 120, 130 shown in FIG. 1, one or more interfaces can be used to communicate with other nodes or devices in the peer-to-peer network 100 (e.g., through local network 102, the wide area network 103, and remote network 104], to communicate with peripheral devices that may be connected to the system or device, or the like. In some cases, an interface includes a wireless
communication interface that provides wireless communication under various protocols, such as, for example, Bluetooth, Wi-Fi, Near Field Communication [NFC], GSM voice calls, SMS, EMS, or MMS messaging, wireless standards (e.g., CDMA, TDMA, PDC, WCDMA, CDMA2000, GPRS) among others. Such communication may occur, for example, through a radio-frequency transceiver or another type of component. In some cases, the interface includes a wired communication interface (e.g., USB, Ethernet] that can be connected to one or more input/output devices, such as, for example, a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, for example, through a network adapter.
[20] To provide for interaction with a user, each of the systems or devices of the example nodes 110, 120, 130 may have a display device, e.g., an LCD (liquid crystal display] screen for displaying information to the user and a keyboard and a pointing device, e.g., touch screen, stylus, mouse, etc. by which the user can provide input to the node. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input.
[21] In the example shown in FIG. 1, the first node 110, second node 120, and third node 130 may communicate with each other through peer-to-peer connections without the use of servers, in particular, without the use of servers that operate the local network 102, servers that operate the remote network 104, servers that operate the wide area network 103, or other servers. For example, the nodes 110, 120, 130 may send network packets that are addressed directly to the other nodes in the peer-to-peer network 100. The network packets may be communicated through routers and other networking hardware systems, without addressing the network packets to a server or to any other specific endpoint, other than the respective nodes to which the network packets are addressed. For example, if the nodes 110, 120, 130 are on an Internet Protocol (IP) network, they have respective IP addresses; when a node communicates with another node in the peer-to-peer network 100, the node sends IP packets addressed to the other node's IP address, rather than sending network packets addressed to a server's IP address expecting the server to relay the packets.
[22] In some implementations, the peer-to-peer network 100 defines multiple distinct types of communication channels for communication between nodes. For example, the peer-to-peer network 100 may differentiate between communication channels used for signaling and "upgraded" channels used for other types of
communication. Each type of channel may be configured or optimized for a certain type of communication or application. For instance, signaling channels may optimized for reliability, to reliably exchange data between peers but not necessarily in the most direct, efficient, or fast way; whereas "upgraded" channels may be optimized for something other than reliability depending on the context, such as, for example, high bandwidth, low latency, etc.
[23] As shown, the first node 110 can communicate with the second node 120 over a local peer-to-peer ("P2P") communication link 160, and the first node 110 can communicate with the third node 130 over a remote P2P communication link 161. These example P2P communication links 160 and 161 allow the first node 110 to communicate with the second node 120 and the third node 130 over a network (e.g., local network 102, the wide area network 103, and remote network 104) without sending data through, or otherwise using, Internet servers, local network servers, or other types of servers. The nodes may have additional or different communication links or connections. The communication links to the first node 110, second node 120, and third node 130 shown in FIG. 1 can define communication links to other nodes in the peer-to-peer network 100, which may include both local connections and connections across the Internet. The peer-to-peer network 100 may include additional or different communication links.
[24] Each of the example nodes 110, 120, 130 shown in FIG. 1 includes one or more agents, one or more stores, and one or more connections to one or more other nodes. The nodes may include additional or different features. The first node 110 includes a first agent 111. The second node 120 includes a second agent 121. The third node 130 includes a third agent 131. The example agents 111, 121, 131 on the nodes 110, 120, 130, respectively, shown in FIG. 1 can include computer-readable instructions stored in memory that when executed by the data processing apparatus of the respective node 110, 120, 130 perform operations as described below, such as, for example, the operations shown in FIGS. 2A-2D. The example agents 111, 121, 131 on the nodes 110, 120, 130, respectively, can further access data stored in memory of the respective node 110, 120, 130 or another node, which may include connectivity information for other nodes. The agents 111, 121, 131 on the nodes 110, 120, 130, respectively, can provide services, such as, for example, connecting to the peer-to-peer network 100 and discovering other nodes in the peer-to-peer network 100. The agents 111, 121, 131 on the nodes 110, 120, 130, respectively, may maintain in memory and access a local store of discovered peers (e.g., a routing table) that forms at least a part of a distributed database, which in this example is a distributed hash table (DHT) 140. The local store of discovered peers may include connectivity information for communicating between nodes. Each of the example agents 111, 121, 131 may be a topology service agent. The nodes may include additional or different agents.
[25] The stores on the first node 110, second node 120, and third node 130 shown in FIG. 1 each contain related data and have visibility information that determines which other nodes the data will be shared with in the peer-to-peer network 100. The stores contain data stored in the memory of the respective example nodes 110, 120, 130. The data in the stores may be stored in a data structure, such as a file, a table, an array, etc. As shown, the first node 110 has a first store 112, a second store 114, a third store 116, and a fourth store 118. The stores 112, 114, 116, and 118 have visibility levels, such as "Untrusted Shareable," "Trusted Shareable," "Self Sharable," and "Device Local," respectively. In this example, the Untrusted Shareable store (e.g., the first store 112) contains information 113 that can be shared with trusted or untrusted nodes, such as, for example, a public identity; the Trusted Shareable store (e.g., the second store 114) contains information 115 that can be shared only with trusted nodes, such as, for example, a calendar of weekly poker games; the Self Sharable store (e.g., the third store 116) contains information 117 that can be shared only with a user's own trusted nodes, such as, for example, private photos; and the Device Local store (e.g., the fourth store 118) contains information 119 that relates to the local device, such as, for example, network details. The other nodes (e.g., second node 120 and third node 130) in the peer-to-peer network 100 may include the same, additional or different types of stores and visibility levels for their respective stores. The second node 120 has a first store 122 (e.g. Untrusted Shareable store), a second store 124 (e.g. Trusted Shareable store), a third store 126 (e.g., Self Shareable store), and a fourth store 128 (e.g., Device Local store). The third node 130 has a first store 132 (e.g. Untrusted Shareable store), a second store 134 (e.g. Trusted Shareable store), a third store 136 (e.g., Self Shareable store), and a fourth store 138 (e.g., Device Local store).
[26] In the example shown in FIG. 1, nodes in the peer-to-peer network 100 can self-organize into the DHT 140 that spans the Internet or another wide access network (or is otherwise broadly accessible) and is used to discover remote nodes. The example DHT 140 includes the local store of discovered peers (e.g., routing tables) of the various nodes in the peer-to-peer network 100, such as the local store of discovered peers stored by the agents 111, 121, 131. Additional nodes with local stores of discovered peers that form the example DHT 140 may be included in the example peer-to-peer network 100. The local store of discovered peers can have logical connections to form the DHT 140, such as logical connection 151 to the agent 111 of the first node 110, logical connection 152 to the agent 121 of the second node 120, logical connection 153 to the agent 131 of the third node 130, and the like. In some implementations, the DHT 140 (or another type of distributed database) is implemented on a set of dedicated nodes that are not otherwise part of the peer-to-peer network 100. For instance, the dedicated nodes may be used only for lookups of other nodes' connectivity information stored in the DHT. In some implementations, one or more of the nodes that implements the DHT 140 (or another type of distributed database) are used for lookups and for other types of operations and communications in the peer-to-peer network 100.
[27] In the example peer-to-peer network 100, multiple nodes on the same local network (e.g., the first node 110 and the second node 120) can discover each other and communicate directly, without communicating through the Internet. Nodes on different networks (e.g., the first node 110 and the third node 130) can discover each other in the DHT 140 and communicate in a peer-to-peer manner across the Internet, without accessing or utilizing servers.
[28] The example peer-to-peer network 100 may include features and advantages that improve operation and communication among the nodes. For instance, peers can generally communicate with a user identity associated with connectivity information for several devices owned by the user. As another example, in some instances, mechanisms for discovering peers without servers ("Local and Remote Discovery") are separate from the mechanism to send data among peers ("Signaling"), which is again separate from upgraded channels providing, e.g., voice, video, and efficient firewall- traversing data communication.
[29] In some aspects of operation, the example peer-to-peer network 100 can use identity, discovery, signaling, and other protocols. For instance, each user on the peer- to-peer network 100 can have a user identity. The use identity can be or include a public/private key pair (e.g., ed25519 public/private key pair, etc.) or another type of identifier. An "Identity Store" component can include a number of data stores that are synchronized to peers. Each store can have a visibility level that indicates who it will be shared with (e.g., device-local, all devices of the user, friends, public, etc.). In some cases, information about each device owned by a user is stored in a data store. Each device can be identified by a string or another identifier (e.g., a cryptographic identity).
[30] In some implementations, for discovery, the example peer-to-peer network 100 can use a distributed database (e.g., the DHT 140 or another widely-available distributed database) to store connectivity information for a user. By looking up a user's identity, another user can obtain information of potentially several ways to connect to several of the user's devices. Which devices and which connectivity methods are available can be determined by the user, who may put the connectivity information into the distributed database periodically. In some instances, the connectivity information can be implemented as a set of DNS records. The BitTorrent Mainline DHT is an example of a distributed database that is widely-available on the Internet. In the example shown, the DHT 140 is used for retrieving data, and the Mainline DHT can be replaced with an alternative DHT or other distributed database.
[31] In an example aspect of operation, the DHT 140 is maintained by at least a subset of the nodes in the peer-to-peer network 100. For example, the third node 130 may store a portion of the DHT 140 in its local memory while other nodes (not shown) also store at least portions of the DHT 140. The third node 130 can send to one of the other nodes that maintain the DHT 140 a request identifying a user identity associated with nodes 110, 120. For instance, the first and second nodes 110, 120 may belong to a single user for which the third node 130 does not have connectivity information. In response to the request, the third node 130 receives (e.g., from one of the other nodes that maintain the DHT 140) connectivity information for the first and second nodes 110, 120, and the third node 130 uses the received connectivity information to establish communication with the first node 110 or the second node 120 over the communication link 161.
[32] In some implementations, the example peer-to-peer network 100 uses signaling connections. For instance, after a node obtains connectivity information from the distributed database, a signaling server may connect to some peers as "directly" as possible. This connection can be cryptographically verified and secure. This signaling connection can be used, for example, to synchronize data stores, bootstrap voice, video, and efficient data communication channels (e.g., using WebRTC), and for other operations.
[33] In some implementations of the example peer-to-peer network 100, groups are implemented as a parallel concept to users. In such cases, just as the distributed database stores connectivity information for a user's devices, the distributed database can store membership information for the users in a group. In some instances, the distributed database can directly store connectivity information for devices of users in a group. With this, devices in the peer-to-peer network 100 could access a data store shared amongst a group without specifically knowing the full membership of the group.
[34] FIGS. 2A-2D are flow diagrams showing an example process for
communicating in a peer-to-peer network. The flow diagram 200A in FIG. 2A shows an example discovery sub-process 202; the flow diagram 200B in FIG. 2B shows an example maintenance sub-process 204; the flow diagram 200C in FIG. 2C shows an example signaling sub-process 206; and the flow diagram 200D in FIG. 2D shows an example syncing sub-process 208. The example operations and sub-processes shown in FIGS. 2A-2D can be executed, for example, in the peer-to-peer network 100 shown in FIG. 1 or in another type of peer-to-peer network. A peer-to-peer network may perform additional or different operations or sub-processes, and the operations and sub- processes shown in FIGS. 2A-2D can be performed in the order shown or in another order.
[35] The example operations shown in FIGS. 2A-2D are performed by devices belonging to four users: a device 210 of a first user ("Alice"), two devices 221, 222 of a second user ("Bob"] 220, a device 230 of a third user ("Carol") and a device 240 of a fourth user ("Dan"). As shown, the second user 220 has two devices on the peer-to-peer network, and the first, third and fourth users each have a single device on the peer-to- peer network. In the example shown, the second user's first device 221 is an Apple iPhone (of the type available from Apple, Inc. of Cupertino, California), and the second user's second device 222 is an Apple MacBook (of the type available from Apple, Inc. of Cupertino, California); other types of devices may be used. A peer-to-peer network may include additional users, and each user may have additional or different types of devices on the network (e.g., smartphones, laptops, smart watches, installed smart devices, desktop computers, tablets, etc.). Further, the operations performed in FIGS. 2A-2D may be performed with another number of devices or users.
[36] As shown in FIG. 2 A, connectivity information for establishing
communication between nodes in the peer-to-peer network are defined. For instance, connections are defined for the first user's device 210, the second user's devices 221, 222, the third user's device 230, the fourth user's device 240. The connectivity information can indicate a subset of the nodes associated with a single user identity, such as the first device 221 and the second device 222 that are associated with the second user 220. The connectivity information is stored in a distributed database, such as, for example, a distributed hash table (DHT) 250, that is accessible to the nodes. The connectivity information can be used to provide communication between nodes associated with distinct user identities or to provide communication between nodes associated with the same user identity. Additional details are described below with respect to FIGS. 2A-2D.
[37] The example devices 210, 221, 222, 230, 240 shown in FIGS. 2A-2D may be the same as or similar to one or more of the example nodes 110, 120, 130 shown in FIG. 1. For instance, the devices each include a memory, a data processing apparatus, and an interface. The devices shown in FIGS. 2A-2D may include one or more agents, one or more stores, and one or more connections to other nodes, etc. In some cases, the operations shown in FIGS. 2A-2D are performed by agents operating on the respective devices.
[38] In the example scenario shown in FIG. 2A, the first user ("Alice") wants to find the second user ("Bob"), for example, to send him data. In this example, neither the first device 221 nor the second device 222 is on the same local network as the first user's device 210. When the first user's device 210 does not contain connectivity information of the second user 220 in its local store of discovered peers, the first user's device 210 sends a message to other nodes known by the first user's device 210; another node in the peer-to-peer network receives the message and uses the DHT 250 to find nodes that know the location of the first device 221 or the second device 222 (or both). As shown in FIG. 2A, the connectivity information stored in the DHT 250 directs the first user's device 210 to the third user's device 230 and the fourth user's device 240, which have information about the locations of the second user's devices (the first device 221 and the second device 222].
[39] Operations of the example discovery sub-process 202 are shown in FIG. 2A. At 261, the first user's device 210 looks up the second user 220 in its local store of discovered peers on the first user's device 210, and the lookup fails. At 262, the first user's device 210 requests a public key of the second user 220 from the DHT 250. At 263, the DHT 250 directs the request to the third user's device 230. At 264, the third user's device 230 sends the first user's device 210 connectivity information (e.g., a list of host/port NDS records) for the first device 221 and the second device 222. At 265, the DHT 250 also directs the request to the fourth user's device 240. At 266, the fourth user's device 240 sends the first user's device 210 connectivity information (e.g., a list of host/port DNS records] for the first device 221 and the second device 222. In this case, the response from the fourth user's device 240 is too slow because the first user's device 210 already received the information from the third user's device 230. In some cases, the slow response of the fourth user's device 240 is potentially discarded or perhaps merged with the list sent by the third user's device 230.
[40] In some implementations, the peer-to-peer network includes a set of DHT nodes (which may include dedicated DHT nodes) that form the DHT 250. The first user's device 210 may look up the second user's (Bob's) connectivity information in the DHT 250 by asking any of the DHT nodes (e.g., in some cases, a randomly-selected DHT node) to lookup Bob's public key. If the DHT node contacted by the first user's device 210 has information stored under Bob's key, it returns the information to the first user's device 210. If the DHT node contacted by the first user's device 210 does not have information stored under Bob's key, it tells the first user's device 210 to ask another DHT node that might have the requested information. The process can be iterated, for example, until either the first user's device 210 gets the requested information (Bob's public key) or there are no remaining DHT nodes that are likely to have the requested information. In the example shown in FIG. 2A, a DHT node instructs the first user's device 210 to ask the third user's device 230 and the fourth user's device 240 because the DHT node does not have the requested information but knows of the third and fourth user's devices 230, 240. In the example shown, both the third and fourth user's devices 230, 240 have the requested information, so they both provide the list of host/port DNS records for Bob's devices.
[41] In the example scenario shown in FIG. 2B, periodic maintenance is performed in the peer-to-peer network. In some instances, for the DHT 250 to have up-to-date and available data on locations of devices, the respective devices periodically store their location info in the DHT 250, e.g., in one or more local stores of discovered peers of one or more nodes in the peer-to-peer network. In the example shown in FIG. 2B, the location information for the second user's devices 221, 222 becomes stored in the local stores of discovered peers in the third user's device 230 and the fourth user's device 240. The devices also periodically tell their local network about their identity and location. In this case, the second user's devices 221, 222 are on the same local network.
[42] Operations of the example maintenance sub-process 204 are shown in FIG. 2B. At 267, the second user's first device 221 updates its location data with its current connectivity information (e.g., host/port information) through the DHT 250. At 268, the DHT 250 directs the connectivity information of the second user's first device 221 to be stored in the local store of discovered peers of the third user's device 230. At 269, the DHT 250 directs the connectivity information of the second user's first device 221 to be stored in the local store of discovered peers of the fourth user's device 240. At 270, the second user's second device 222 updates its location data with its current connectivity information (e.g., host/port) through the DHT 250. At 271, the DHT 250 directs the connectivity information of the second device 222 to be stored in the local store of discovered peers of the third user's device 230. At 272, the DHT 250 directs the connectivity information of the second device 222 to be stored in the local store of discovered peers of the fourth user's device 240. At 273, the second user's devices 221, 222 communicate with each other using local UDP multicasts with the connectivity information (e.g., host/port) of the second user's devices 221, 222.
[43] In the example shown in FIG. 2B, the second user's devices 221, 222 each store connectivity information in the DHT 250 by asking a DHT node (e.g., a randomly- selected DHT node) for a location to store the connectivity information (at 267 and 270). Either the DHT node considers itself responsible for the connectivity information and stores locally, or the DHT node supplies a list of other DHT nodes to try. The second user's devices 221, 222 then ask the other DHT nodes and may repeat until finding enough DHT nodes to store the connectivity information, or until running out of DHT nodes to ask.
[44] In the example scenario shown in FIG. 2C, devices in the peer-to-peer network perform signaling. In the example shown, the first user's device 210 has location information for the second user's devices 221, 222, and the first user's device 210 tries to connect to either of the second user's devices 221, 222. In this case, the first user's device 210 makes parallel tries to both of the second user's devices 221, 222 because the devices 221, 222 both had location info stored in the DHT 250. The first user's device 210 successfully connects to the second user's first device 221, and establishes a signaling connection. The first user's device 210 asks the second user's first device 221 for the data stored in one of the stores (e.g., "Store #1") on the second user's first device 221. The second user's first device 221 verifies that first user is allowed to see the data (e.g., perhaps the first user is a friend of the second user, and Store #1 contains data shared with trusted friends]. The second user's first device 221 sends the contents of the store to the first user's device 210. In some cases, the second user's first device 221 sends only updates, for instance, if the first user's device 210 already has some of the contents of Store #1. In some instances, the first user's device 210 is not allowed to see the requested data, and the request fails.
[45] Operations of the example signaling sub-process 206 are shown in FIG. 2C. At 274, the first user's device 210 attempts to setup a signaling connection with the second user's second device 222 but cannot establish connectivity. At 275, the first user's device 210 sets up a signaling connection with the second user's first device 221. At 276, a P2P signaling connection is established between the first user's device 210 and the second user's first device 221. At 277, the first user's device 210 requests the contents of Store #1 on the first device 221. At 278, the second user's first device 221 determines that first user is allowed to see the contents of Store #1. At 279, the second user's first device 221 sends the first user's device 210 data from Store #1. The communication illustrated in FIG. 2C may be performed according to a protocol, such as TCP/IP, and the communications may be routed using, e.g., gateways, routers, switches, hubs, etc.
without using a server.
[46] In the example scenario shown in FIG. 2D, devices are synced over the peer- to-peer network. In the example shown, the second user 220 stores new information in Store #1 on the second user's second device 222. Because the second user's devices 221, 222 are connected and belong to the same user, and the data is not designated as local to the second device 222. In this example, the data is sent to the first device 221.
Because the second user's first device 221 has a signaling connection to the first user's device 210 and because Store #1 of the second user's first device 221 is shared with the first user, the second user's first device 221 also sends the new update to the first user's device 210.
[47] Operations of the example sync sub-process 208 are shown in FIG. 2D. At 280, a new profile picture is added by the second user 220 to the second user's second device 222. At 281, the second user's second device 222 updates the profile picture data in Store #1 of the second user's second device 222. At 282, the second user's second device 222 sends the new data for Store #1 to the second user's first device 221. At 283, the second user's first device 221 informs the first user's device 210 that the second user's first device 221 has the new data in Store #1. The communication illustrated in FIG. 2D may be performed according to a protocol, such as TCP/IP, and the communications may be routed using, e.g., gateways, routers, switches, hubs, etc. without using a server.
[48] In a general aspect, peer-to-peer networks have been described. In some examples, a peer-to-peer network uses a distributed database, such as a distributed hash table, to store and maintain connectivity information of nodes of the peer-to-peer network. The connectivity information can be used to establish communications between various nodes.
[49] In a first example, at least a portion of a distributed database that contains connectivity information for a plurality of nodes in a peer-to-peer network is stored in a local memory of a first node in the peer-to-peer network. The distributed database is maintained by a first subset of the plurality of nodes. A request is sent from a
communication interface of the first node to at least one of the other nodes in the first subset. The request identifies a user identity associated with a second subset of the plurality of nodes in the peer-to-peer network. The first node receives a response to the request from a remote node in the first subset. The response includes connectivity information for the second subset of the plurality of nodes. The connectivity
information for the second subset is used by the first node to establish communication with at least one of the nodes in the second subset. The communication is established and conducted, for example, over a communication link coupled to the communication interface of the first node.
[50] Implementation of the first example may, in some cases include one or more of the following features. The distributed database can be a distributed hash table. The first node stores the connectivity information for the second subset in the local memory of the first node. After using the connectivity information for the second subset to establish communication with a particular node in the second subset, the first node can communicate with the particular node independent of servers. The first node can include an agent, a store and connections. The store can define distinct visibility levels for respective data sets in the store.
[51] In a second example, connectivity information is defined for connections between nodes in a peer-to-peer network. The connectivity information indicates a subset of the nodes associated with a single user identity. Connectivity information for the connections is stored in a distributed database that is accessible to the nodes. The connectivity information is used to provide communication over a communication link between nodes associated with distinct user identities.
[52] Implementation of the second example may, in some cases include one or more of the following features. The connectivity information for connections between the nodes can be updated in the distributed database. The connectivity information can be used to synchronize data across the subset of the nodes associated with the single user identity. The connectivity information can be used to synchronize data across nodes associated with distinct user identities. The connectivity information can be used to provide voice calls or video calls over the communication link between the nodes. The connectivity information can be used to provide communication over the communication link between the nodes independent of servers. Each node can include an agent, a store and connections, and the distributed database can include a distributed hash table. The store for each node can define distinct visibility levels for respective data sets in the store. The connectivity information for each node can include at least one peer-to-peer connection with a node in a local network and at least one peer-to- peer connections with a node in a remote network. [53] While this specification contains many details, these should not be construed as limitations on the scope of what may be claimed, but rather as descriptions of features specific to particular examples. Certain features that are described in this specification in the context of separate implementations can also be combined.
Conversely, various features that are described in the context of a single
implementation can also be implemented in multiple embodiments separately or in any suitable sub-combination. Further, although a number of examples have been described, it will be understood that various modifications can be made. Accordingly, other embodiments are within the scope of the following claims.

Claims

1. A peer-to-peer network communication method comprising:
storing, in a local memory of a first node in a peer-to-peer network, connectivity information for one or more of a plurality of nodes in the peer-to-peer network, a first subset of the plurality of nodes maintaining a distributed database comprising connectivity information for the plurality of nodes;
sending, from a communication interface of the first node to at least one of the nodes in the first subset, a request identifying a user identity associated with a second subset of the plurality of nodes in the peer-to-peer network;
receiving, at the first node, a response to the request from a remote node in the first subset, the response comprising connectivity information for the second subset of the plurality of nodes; and
using the connectivity information for the second subset to establish
communication with at least one of the nodes in the second subset over a
communication link coupled to the communication interface.
2. The peer-to-peer network communication method of claim 1, wherein the distributed database comprises a distributed hash table.
3. The peer-to-peer network communication method of claim 1, comprising storing the connectivity information for the second subset in the local memory.
4. The peer-to-peer network communication method of claim 1, comprising, after using the connectivity information for the second subset to establish communication with a particular node in the second subset, communicating with the particular node in the second subset independent of servers.
5. The peer-to-peer network communication method of claim 1, wherein the first node includes an agent, a store and connections.
6. The peer-to-peer network communication method of claim 5, wherein the store defines distinct visibility levels for respective data sets in the store.
7. A computing system comprising:
a communication interface;
a local memory; and
a data processing apparatus configured to: store, in the local memory, connectivity information for one or more of a plurality of nodes in a peer-to-peer network, a first subset of the nodes maintaining a distributed database comprising connectivity information for the plurality of nodes;
send, from the communication interface to at least one of the nodes in the first subset, a request identifying a user identity associated with a second subset of the nodes in the peer-to-peer network;
receive, from a remote node in the first subset, connectivity information for the second subset of the nodes; and
use the connectivity information for the second subset to establish communication with at least one of the nodes in the second subset over a
communication link coupled to the communication interface.
8. The computing system of claim 7, wherein the data processing apparatus is further configured to sync, with the remote node, data stored in the local memory.
9. The computing system of claim 7, wherein the distributed database comprises a distributed hash table.
10. The computing system of claim 7, wherein the data processing apparatus is further configured to, after establishing communication with a particular node in the second subset, communicate with the particular node in the second subset independent of servers.
11. A method comprising:
defining, by operation of one or more processors, connectivity information for connections between nodes in a peer-to-peer network, the connectivity information indicating a subset of the nodes associated with a single user identity;
storing connectivity information for the connections in a distributed database that is accessible to the nodes; and
using the connectivity information to provide, by operation one or more processors and a communication interface, communication over a communication link between nodes associated with distinct user identities.
12. The method of claim 11, comprising updating the connectivity information for connections between the nodes.
13. The method of claim 11, comprising using the connectivity information to synchronize data across the subset of the nodes associated with the single user identity.
14. The method of claim 11, comprising using the connectivity information to synchronize data across nodes associated with distinct user identities.
15. The method of claim 11, comprising using the connectivity information to provide voice calls over the communication link between the nodes.
16. The method of claim 11, comprising using the connectivity information to provide video calls over the communication link between the nodes.
17. The method of claim 11, comprising using the connectivity information to provide communication over the communication link between the nodes independent of servers.
18. The method of claim 11, wherein each node includes an agent, a store and connections, and the distributed database comprises a distributed hash table.
19. The method of claim 18, wherein the store for each node defines distinct visibility levels for respective data sets in the store.
20. The method of claim 18, wherein the connectivity information for each node includes connectivity information for at least one peer-to-peer connection with a node in a local network and connectivity information at least one peer-to-peer connection with a node in a remote network.
PCT/CA2016/000104 2015-04-20 2016-04-06 Communicating in a peer-to-peer network Ceased WO2016168909A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201562150129P 2015-04-20 2015-04-20
US62/150,129 2015-04-20

Publications (1)

Publication Number Publication Date
WO2016168909A1 true WO2016168909A1 (en) 2016-10-27

Family

ID=57142804

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CA2016/000104 Ceased WO2016168909A1 (en) 2015-04-20 2016-04-06 Communicating in a peer-to-peer network

Country Status (1)

Country Link
WO (1) WO2016168909A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113114670A (en) * 2021-04-09 2021-07-13 杭州复杂美科技有限公司 Multi-protocol connection method, equipment and storage medium of block chain network

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1229443A2 (en) * 2001-01-22 2002-08-07 Sun Microsystems, Inc. Advertisements for peer-to-peer computing resources
WO2007031981A2 (en) * 2005-09-15 2007-03-22 One-Fone Ltd. Incorporating a mobile device into a peer-to-peer network
WO2008065533A2 (en) * 2006-11-27 2008-06-05 Skype Limited Communication system
EP1954003A1 (en) * 2007-01-30 2008-08-06 NTT DoCoMo, Inc. Forward feedback protocol

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1229443A2 (en) * 2001-01-22 2002-08-07 Sun Microsystems, Inc. Advertisements for peer-to-peer computing resources
WO2007031981A2 (en) * 2005-09-15 2007-03-22 One-Fone Ltd. Incorporating a mobile device into a peer-to-peer network
WO2008065533A2 (en) * 2006-11-27 2008-06-05 Skype Limited Communication system
EP1954003A1 (en) * 2007-01-30 2008-08-06 NTT DoCoMo, Inc. Forward feedback protocol

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113114670A (en) * 2021-04-09 2021-07-13 杭州复杂美科技有限公司 Multi-protocol connection method, equipment and storage medium of block chain network

Similar Documents

Publication Publication Date Title
JP7426636B2 (en) Method and system for distributed edge cloud computing
CN107667517B (en) An implanted proxy within the first service container for enabling a reverse proxy on the second container
US10547710B2 (en) Device gateway
EP2466847B1 (en) Custodian routing with network address translation in content-centric networks
US10693983B2 (en) Method for monitoring a status in form of presence and/or absence of a network entity
US20160352588A1 (en) Scalable proxy clusters
US9723069B1 (en) Redistributing a connection
CN101714996B (en) Authentication system and method based on peer-to-peer computing network
US11032362B2 (en) System operating using OPC UA, communication method using OPC UA, and load balancer
US10797993B2 (en) Overlay network identity-based relay
JP2016526217A (en) Method, system and computer readable medium for performing advanced service routing
KR20170046617A (en) Sip-based custodian routing in content-centric networks
CN106797384B (en) Routing requests to the same endpoint in a cluster in different protocols
Benomar et al. A Stack4Things-based web of things architecture
Paik et al. Scalable signaling protocol for Web real-time communication based on a distributed hash table
Vashishth et al. Addressing challenges in browser based p2p content sharing framework using webrtc
US8873428B1 (en) Peer-to-peer based group configuration for interconnected devices
CN107454210B (en) Communication method and system
WO2016168909A1 (en) Communicating in a peer-to-peer network
CN105099746A (en) SHELL execution method and SHELL execution device
US9178947B2 (en) Method, system and apparatus for configuring a device for interaction with a server
Cho P2p-based mobile social networks
CN105516121B (en) The method and system that AC is communicated with AP in WLAN
Grubitzsch et al. Hosting and discovery of distributed mobile services in an XMPP cloud
Wolinsky et al. On the design and implementation of structured P2P VPNs

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16782406

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

32PN Ep: public notification in the ep bulletin as address of the adressee cannot be established

Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 112(1) EPC (EPO FORM 1205N DATED 04/01/2018)

122 Ep: pct application non-entry in european phase

Ref document number: 16782406

Country of ref document: EP

Kind code of ref document: A1