Reliable peer-to-peer connections
First Claim
1. A peer computing system, comprising:
- a plurality of peer nodes operable to couple to a network, wherein each of the plurality of peer nodes comprises one or more network interfaces, wherein each network interface is configured to communicate over the network in accordance with at least one of one or more network transport protocols;
wherein the plurality of peer nodes is configured to implement a peer-to-peer environment on the network according to a peer-to-peer platform comprising one or more peer-to-peer platform protocols for enabling the plurality of peer nodes to discover each other, communicate with each other, and share content in the peer-to-peer environment, wherein to discover comprises obtaining an address for each discovered peer node;
wherein one of the plurality of peer nodes is configured to;
establish a communications channel between a network interface of the peer node and a network interface of another of the plurality of peer nodes, wherein establishing the communications channel comprises instantiating a pipe of a particular one of a plurality of pipe types between the peer node and the other peer node, wherein the particular one of the plurality of pipe types is reliable such that the pipe is a reliable pipe on which delivery of messages sent from an output endpoint to each of one or more input endpoints connected to the communications channel in accordance with a pipe binding protocol is guaranteed, distinct from a network transport protocol used for the communications channel;
transmit messages to the other peer node over the reliable pipe;
receive acknowledgement that one or more of the transmitted messages have been received by the other peer node; and
retransmit messages not acknowledged as received by the other peer node to the other peer node on the reliable pipe;
wherein said establishing, said transmitting, said receiving, and said retransmitting are performed according to at least one of the one or more peer-to-peer platform protocols to guarantee delivery of the messages on the reliable pipe, and whereinsaid peer-to-peer platform protocols are distinct from the at least one of one or more network transport protocols.
2 Assignments
0 Petitions
Accused Products
Abstract
Embodiments of a system and method for establishing reliable connections between peers in a peer-to-peer networking environment. In one embodiment, a reliable communications channel may use transmit and receive windows, acknowledgement of received messages, and retransmission of messages not received to provide reliable delivery of messages between peers in the peer-to-peer environment. In one embodiment, each message may include a sequence number configured for use in maintaining ordering of received messages on a receiving peer. A communications channel may make multiple hops on a network, and different hops in the connection may use different underlying network protocols. Communications channels may also pass through one or more firewalls and/or one or more gateways on the network. A communications channel may also pass through one or more router (relay) peers on the network. The peers may adjust the sizes of the transmit and receive window based upon reliability of the connection.
120 Citations
64 Claims
-
1. A peer computing system, comprising:
-
a plurality of peer nodes operable to couple to a network, wherein each of the plurality of peer nodes comprises one or more network interfaces, wherein each network interface is configured to communicate over the network in accordance with at least one of one or more network transport protocols; wherein the plurality of peer nodes is configured to implement a peer-to-peer environment on the network according to a peer-to-peer platform comprising one or more peer-to-peer platform protocols for enabling the plurality of peer nodes to discover each other, communicate with each other, and share content in the peer-to-peer environment, wherein to discover comprises obtaining an address for each discovered peer node; wherein one of the plurality of peer nodes is configured to; establish a communications channel between a network interface of the peer node and a network interface of another of the plurality of peer nodes, wherein establishing the communications channel comprises instantiating a pipe of a particular one of a plurality of pipe types between the peer node and the other peer node, wherein the particular one of the plurality of pipe types is reliable such that the pipe is a reliable pipe on which delivery of messages sent from an output endpoint to each of one or more input endpoints connected to the communications channel in accordance with a pipe binding protocol is guaranteed, distinct from a network transport protocol used for the communications channel; transmit messages to the other peer node over the reliable pipe; receive acknowledgement that one or more of the transmitted messages have been received by the other peer node; and retransmit messages not acknowledged as received by the other peer node to the other peer node on the reliable pipe; wherein said establishing, said transmitting, said receiving, and said retransmitting are performed according to at least one of the one or more peer-to-peer platform protocols to guarantee delivery of the messages on the reliable pipe, and wherein said peer-to-peer platform protocols are distinct from the at least one of one or more network transport protocols. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
-
-
25. A method for providing reliable connections between peer nodes coupled to a peer-to-peer network, the method comprising:
-
a plurality of peer nodes coupled to the network implementing a peer-to-peer environment on the network according to a peer-to-peer platform comprising one or more peer-to-peer platform protocols for enabling the plurality of peer nodes to discover each other, communicate with each other, and share content in the peer-to-peer environment, wherein to discover comprises obtaining an address for each discovered peer node;
establishing a communications channel between a network interface of one of the plurality of peer nodes and a network interface of another of the plurality of peer nodes, whereinestablishing the communications channel comprises instantiating a pipe of a particular one of a plurality of pipe types between the peer node and the other peer node, wherein the particular one of the plurality of pipe types is reliable such that the pipe is a reliable pipe on which delivery of messages sent from an output endpoint to each of one or more input endpoints connected to the communications channel in accordance with a pipe binding protocol is guaranteed, distinct from a network transport protocol used for the communications channel; the peer node transmitting messages to the other peer node over the reliable pipe; the peer node receiving acknowledgement that one or more of the transmitted messages have been received by the other peer node; and the peer node retransmitting messages not acknowledged as received by the other peer node to the other peer node on the reliable pipe; wherein said establishing, said transmitting, said receiving, and said retransmitting are performed according to at least one of the one or more peer-to-peer platform protocols to guarantee delivery of the messages on the reliable pipe, and wherein the at least one of the one or more peer-to- peer platform protocols is distinct from any underlying network transport protocols. - View Dependent Claims (26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44)
-
-
45. A non-transitory computer-readable storage medium, comprising software instructions executable on a peer node to implement:
-
the peer node establishing a communications channel between a network interface of the peer nodes and a network interface of another peer node of a plurality of peer nodes, wherein the plurality of peer nodes is coupled to a network implementing a peer-to-peer environment on the network according to a peer-to-peer platform comprising one or more peer-to-peer platform protocols for enabling the plurality of peer nodes to discover each other, communicate with each other, and share content in the peer-to-peer environment, wherein to discover comprises obtaining an address for each discovered peer node, wherein establishing the communications channel comprises instantiating a pipe of a particular one of a plurality of pipe types between the peer node and the other peer node, wherein the particular one of the plurality of pipe types is reliable such that the pipe is a reliable pipe on which delivery of messages sent from an output endpoint to each of one or more input endpoints connected to the communications channel in accordance with a pipe binding protocol is guaranteed, distinct from a network transport protocol used for the communications channel; the peer node transmitting messages to the other peer node over the reliable pipe; the peer node receiving acknowledgement that one or more of the transmitted messages have been received by the other peer node; and the peer node retransmitting messages not acknowledged as received by the other peer node to the other peer node on the reliable pipe; wherein said establishing, said transmitting, said receiving, and said retransmitting are performed according to at least one of the one or more peer-to-peer platform protocols to guarantee delivery of the messages on the reliable pipe, and wherein the at least one of the one or more peer-to-peer platform protocols is distinct from any underlying network transport protocols. - View Dependent Claims (46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64)
-
Specification